दस्तावेज़ीकरण
/

रनटाइम संगतता

रनटाइम संगतता

वास्तविक रनटाइम के लिए target चुनें। Browser और Node बिल्ड में अलग सुरक्षा हो सकती है; Browser target, Node का विकल्प नहीं है। वातावरण घोषणाएँ, डोमेन सीमाएँ और रनटाइम टूल भी कॉन्फ़िगरेशन से मेल खाने चाहिए।

target

  • browser - Chrome, Firefox, Safari, Edge.
  • browser-no-eval - browser जैसा ही, लेकिन आउटपुट eval() का उपयोग नहीं करता। इसे तब चुनें जब टारगेट पेज की Content Security Policy eval/unsafe-eval को मना करती हो।
  • node - Node.js एनवायरनमेंट। ब्राउज़र-विशिष्ट विकल्प बंद रहते हैं (उन्हें window/document चाहिए और Node में वे बेअसर होंगे या एरर देंगे)। vmSelfDefending के कुछ बचाव जो सिर्फ़ ब्राउज़र वाली API पर निर्भर हैं - हेडलेस-ब्राउज़र डिटेक्शन, iframe-आधारित क्लीन-रेल्म रिकवरी, एंटी-इंस्पेक्टर/DOM जाँच - इस टारगेट के लिए नहीं जोड़े जाते।
  • service-worker - Service Worker संदर्भ। न window, न document, और self ग्लोबल अलग होता है।
  • userscript - यूज़रस्क्रिप्ट मैनेजर सैंडबॉक्स (जैसे Tampermonkey)। vmSelfDefending के बचाव उसी हिसाब से समायोजित होते हैं। इसके लिए ऑब्फ़स्केटर v6.9.0+ चाहिए।
  • bytenode - उस कोड के लिए जिसे bytenode से .jsc में कंपाइल किया जाएगा। इसके लिए ऑब्फ़स्केटर v6.13.0+ चाहिए।

JavaScript

ऑब्फ़स्केशन से फ़ंक्शन नाम और स्रोत पाठ बदल सकते हैं। .name या .toString() को स्थिर ऐप डेटा न मानें; स्पष्ट पहचानकर्ता उपयोग करें। सेटिंग्स के अनुसार सार्वजनिक ग्लोबल नाम दिखाई दे सकते हैं।

strictMode

strictMode: null और strictMode: false भी स्पष्ट निर्देशों, ES मॉड्यूल और क्लास मेथड को strict पहचानते हैं। strictMode: true पूरे इनपुट को strict मानता है। अंतिम रनटाइम से मिलान करें; ऑब्फ़स्केशन के बाद बंडलर द्वारा strict mode जोड़ने से व्यवहार बदल सकता है।

CLI / API

अंतिम ऑब्फ़स्केशन से पहले TypeScript या JSX संकलित करें और ऐप बंडल करें। VM चयन टिप्पणियाँ उस चरण तक रखें। Self Defending आउटपुट को बाद में मिनिफ़ाई, फ़ॉर्मैट या संशोधित न करें। VM और HTML ऑब्फ़स्केशन में सोर्स मैप उपलब्ध नहीं हैं। एजेंट, ऑटोमेशन या डीबगर का उपयोग करने वाले कार्यात्मक परीक्षणों के लिए टेस्टिंग और CI देखें।