"use strict";
const esprima = require('esprima');
const escodegen = require('escodegen');
const Obfuscator_1 = require("./Obfuscator");
const Options_1 = require("./Options");
class JavaScriptObfuscator {
static obfuscate(sourceCode, customOptions) {
let astTree = esprima.parse(sourceCode), options = new Options_1.Options(customOptions), obfuscator = new Obfuscator_1.Obfuscator(options);
astTree = obfuscator.obfuscateNode(astTree);
return JavaScriptObfuscator.generateCode(astTree, options);
}
static generateCode(astTree, options) {
let escodegenParams = Object.assign({}, JavaScriptObfuscator.escodegenParams);
escodegenParams.format = {
compact: options.get('compact')
};
return escodegen.generate(astTree, escodegenParams);
}
}
JavaScriptObfuscator.escodegenParams = {
verbatim: 'x-verbatim-property'
};
exports.JavaScriptObfuscator = JavaScriptObfuscator;
//# sourceMappingURL=JavaScriptObfuscator.js.map |