index.js 1.1 KB

1234567891011121314151617181920212223242526272829
  1. "use strict";
  2. const esprima = require('esprima');
  3. const escodegen = require('escodegen');
  4. const Obfuscator_1 = require('./src/Obfuscator');
  5. class JavaScriptObfuscator {
  6. static obfuscate(sourceCode, customOptions) {
  7. let astTree = esprima.parse(sourceCode), options = Object.assign(JavaScriptObfuscator.defaultOptions, customOptions), obfuscator = new Obfuscator_1.Obfuscator(options);
  8. obfuscator.obfuscateNode(astTree);
  9. return JavaScriptObfuscator.generateCode(astTree, options);
  10. }
  11. static generateCode(astTree, options) {
  12. let escodegenParams = Object.assign({}, JavaScriptObfuscator.escodegenParams);
  13. if (options.hasOwnProperty('compact')) {
  14. escodegenParams.format = {};
  15. escodegenParams.format.compact = options.compact;
  16. }
  17. return escodegen.generate(astTree, escodegenParams);
  18. }
  19. }
  20. JavaScriptObfuscator.defaultOptions = {
  21. compact: true,
  22. debugProtection: false,
  23. debugProtectionInterval: false,
  24. rotateUnicodeArray: true
  25. };
  26. JavaScriptObfuscator.escodegenParams = {
  27. verbatim: 'x-verbatim-property'
  28. };
  29. exports.JavaScriptObfuscator = JavaScriptObfuscator;