Files
javascript-obfuscator-javas…/index.ts
T

58 lines
1.5 KiB
TypeScript

"use strict";
import * as esprima from 'esprima';
import * as escodegen from 'escodegen';
import { IProgramNode } from './src/interfaces/nodes/IProgramNode';
import { Obfuscator } from './src/Obfuscator';
export class JavaScriptObfuscator {
/**
* @type any
*/
private static defaultOptions: any = {
compact: true,
debugProtection: false,
debugProtectionInterval: false,
disableConsoleOutput: true,
rotateUnicodeArray: true
};
/**
* @type any
*/
private static escodegenParams: any = {
verbatim: 'x-verbatim-property'
};
/**
* @param sourceCode
* @param customOptions
*/
public static obfuscate (sourceCode: string, customOptions: any): string {
let astTree: IProgramNode = esprima.parse(sourceCode),
options: any = Object.assign(JavaScriptObfuscator.defaultOptions, customOptions),
obfuscator: Obfuscator = new Obfuscator(options);
obfuscator.obfuscateNode(astTree);
return JavaScriptObfuscator.generateCode(astTree, options);
}
/**
* @param astTree
* @param options
*/
private static generateCode (astTree: IProgramNode, options: any): string {
let escodegenParams: any = Object.assign({}, JavaScriptObfuscator.escodegenParams);
if (options.hasOwnProperty('compact')) {
escodegenParams.format = {};
escodegenParams.format.compact = options.compact;
}
return escodegen.generate(astTree, escodegenParams);
}
}