This commit is contained in:
sanex3339
2016-06-10 21:50:42 +03:00
parent 3a28dabb70
commit a32b8cd668
10 changed files with 81 additions and 160 deletions
+4 -1
View File
@@ -1,9 +1,12 @@
"use strict";
import kernel from "./Kernel";
import * as esprima from 'esprima';
import * as escodegen from 'escodegen';
import { INode } from './interfaces/nodes/INode';
import { IObfuscator } from "./interfaces/IObfuscator";
import { IOptions } from './interfaces/IOptions';
import { DEFAULT_PRESET } from './preset-options/DefaultPreset';
@@ -26,7 +29,7 @@ export class JavaScriptObfuscator {
public static obfuscate (sourceCode: string, customOptions?: IOptions): string {
let astTree: INode = esprima.parse(sourceCode),
options: IOptions = OptionsNormalizer.normalize(Object.assign({}, DEFAULT_PRESET, customOptions)),
obfuscator: Obfuscator = new Obfuscator(options);
obfuscator: Obfuscator = kernel.get<IObfuscator>('IObfuscator');
astTree = obfuscator.obfuscateNode(astTree);
+11
View File
@@ -0,0 +1,11 @@
import { IKernel } from "inversify";
import { IObfuscator } from "./interfaces/IObfuscator";
import { Kernel } from "inversify";
import { Obfuscator } from "./Obfuscator";
let kernel: IKernel = new Kernel();
kernel.bind<IObfuscator>('IObfuscator').to(Obfuscator);
export default kernel;
+7 -3
View File
@@ -1,8 +1,11 @@
import { injectable } from "inversify";
import * as estraverse from 'estraverse';
import { ICustomNode } from './interfaces/ICustomNode';
import { INodesGroup } from './interfaces/INodesGroup';
import { INode } from './interfaces/nodes/INode';
import { IObfuscator } from "./interfaces/IObfuscator";
import { IOptions } from "./interfaces/IOptions";
import { TNodeObfuscator } from "./types/TNodeObfuscator";
@@ -24,7 +27,8 @@ import { SelfDefendingNodesGroup } from "./node-groups/SelfDefendingNodesGroup";
import { UnicodeArrayNodesGroup } from './node-groups/UnicodeArrayNodesGroup';
import { VariableDeclarationObfuscator } from './node-obfuscators/VariableDeclarationObfuscator';
export class Obfuscator {
@injectable()
export class Obfuscator implements IObfuscator {
/**
* @type {Map<string, Node>}
*/
@@ -81,14 +85,14 @@ export class Obfuscator {
* @param nodeName
* @param node
*/
public setNode (nodeName: string, node: ICustomNode): void {
private setNode (nodeName: string, node: ICustomNode): void {
this.nodes.set(nodeName, node);
}
/**
* @param nodesGroup
*/
public setNodesGroup (nodesGroup: INodesGroup): void {
private setNodesGroup (nodesGroup: INodesGroup): void {
let nodes: Map <string, ICustomNode> = nodesGroup.getNodes();
nodes.forEach((node: ICustomNode, key: string) => {
+5
View File
@@ -0,0 +1,5 @@
import { INode } from "./nodes/INode";
export interface IObfuscator {
obfuscateNode (node: INode): INode;
}