index.js 1.2 KB

123456789101112131415161718192021222324252627282930
  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. disableConsoleOutput: true,
  25. rotateUnicodeArray: true
  26. };
  27. JavaScriptObfuscator.escodegenParams = {
  28. verbatim: 'x-verbatim-property'
  29. };
  30. module.exports = JavaScriptObfuscator;