This commit is contained in:
sanex3339
2016-05-12 20:36:07 +03:00
parent 677c4b5a7e
commit dfa76badb5
4 changed files with 39 additions and 6 deletions
+3 -3
View File
@@ -2,14 +2,14 @@
const Obfuscator_1 = require('./src/Obfuscator');
let escodegen = require('escodegen'), esprima = require('esprima');
class JavaScriptObfuscator {
static obfuscate(sourceCode, options) {
static obfuscate(sourceCode, options = {}) {
let astTree = esprima.parse(sourceCode), obfuscator = new Obfuscator_1.Obfuscator(options);
obfuscator.obfuscateNode(astTree);
return JavaScriptObfuscator.generateCode(astTree, options);
}
static generateCode(astTree, options) {
static generateCode(astTree, options = {}) {
let escodegenParams = Object.assign({}, JavaScriptObfuscator.escodegenParams);
if (options.compact !== undefined) {
if (options.hasOwnProperty('compact')) {
escodegenParams.format.compact = options.compact;
}
return escodegen.generate(astTree, escodegenParams);
+3 -3
View File
@@ -22,7 +22,7 @@ export class JavaScriptObfuscator {
* @param sourceCode
* @param options
*/
public static obfuscate (sourceCode: string, options: any): string {
public static obfuscate (sourceCode: string, options: any = {}): string {
let astTree: any = esprima.parse(sourceCode),
obfuscator: Obfuscator = new Obfuscator(options);
@@ -35,10 +35,10 @@ export class JavaScriptObfuscator {
* @param astTree
* @param options
*/
private static generateCode (astTree: any, options: any): string {
private static generateCode (astTree: any, options: any = {}): string {
let escodegenParams: any = Object.assign({}, JavaScriptObfuscator.escodegenParams);
if (options.compact !== undefined) {
if (options.hasOwnProperty('compact')) {
escodegenParams.format.compact = options.compact;
}
+14
View File
@@ -1,4 +1,5 @@
"use strict";
let estraverse = require('estraverse');
class NodeUtils {
static getNodeScope(node, deep = 0) {
let scopeNodes = [
@@ -16,6 +17,19 @@ class NodeUtils {
if (deep > 0) {
return NodeUtils.getNodeScope(node.parentNode, --deep);
}
if (node.type !== 'BlockStatement') {
let blockStatementNode;
estraverse.traverse(node, {
enter: function (node, parent) {
switch (node.type) {
case 'BlockStatement':
blockStatementNode = node;
this['break']();
}
}
});
return blockStatementNode;
}
return node;
}
static getParentNodeWithType(node, types, limitNodeTypes = [], deep = 0) {
+19
View File
@@ -1,3 +1,5 @@
let estraverse = require('estraverse');
export class NodeUtils {
/**
* @param node
@@ -23,6 +25,23 @@ export class NodeUtils {
return NodeUtils.getNodeScope(node.parentNode, --deep);
}
if (node.type !== 'BlockStatement') {
let blockStatementNode: any;
estraverse.traverse(node, {
enter: function (node, parent) {
switch (node.type) {
case 'BlockStatement':
blockStatementNode = node;
this['break']();
}
}
});
return blockStatementNode;
}
return node; // BlockStatement of scopeNodes
}