From 47d863f97aa698756c841f67d3323cca2e57520f Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Mon, 30 May 2016 17:00:07 +0300 Subject: [PATCH] added TNodeObfuscator type --- src/NodeUtils.ts | 10 +++++----- src/Obfuscator.ts | 11 ++++++----- .../ConsoleOutputDisableExpressionNode.ts | 4 ++-- .../DebugProtectionFunctionCallNode.ts | 4 ++-- .../DebugProtectionFunctionIntervalNode.ts | 4 ++-- .../DebugProtectionFunctionNode.ts | 4 ++-- .../unicode-array-nodes/UnicodeArrayCallsWrapper.ts | 4 ++-- .../unicode-array-nodes/UnicodeArrayNode.ts | 4 ++-- .../UnicodeArrayRotateFunctionNode.ts | 4 ++-- .../{BlockScopeNode.d.ts => TBlockScopeNode.d.ts} | 2 +- src/types/TNodeObfuscator.d.ts | 5 +++++ 11 files changed, 31 insertions(+), 25 deletions(-) rename src/types/{BlockScopeNode.d.ts => TBlockScopeNode.d.ts} (75%) create mode 100644 src/types/TNodeObfuscator.d.ts diff --git a/src/NodeUtils.ts b/src/NodeUtils.ts index 89f9d815..b7d29d33 100644 --- a/src/NodeUtils.ts +++ b/src/NodeUtils.ts @@ -9,7 +9,7 @@ import { IPropertyNode } from "./interfaces/nodes/IPropertyNode"; import { INode } from './interfaces/nodes/INode'; import { IVariableDeclaratorNode } from "./interfaces/nodes/IVariableDeclaratorNode"; -import { BlockScopeNode } from "./types/BlockScopeNode"; +import { TBlockScopeNode } from "./types/TBlockScopeNode"; import { NodeType } from "./enums/NodeType"; @@ -69,13 +69,13 @@ export class NodeUtils { * @param depth * @returns {INode} */ - public static getBlockScopeOfNode (node: INode, depth: number = 0): BlockScopeNode { + public static getBlockScopeOfNode (node: INode, depth: number = 0): TBlockScopeNode { if (!node.parentNode) { throw new ReferenceError('`parentNode` property of given node is `undefined`'); } if (node.parentNode.type === NodeType.Program) { - return node.parentNode; + return node.parentNode; } if (!Utils.arrayContains(NodeUtils.scopeNodes, node.parentNode.type)) { @@ -90,7 +90,7 @@ export class NodeUtils { return NodeUtils.getBlockScopeOfNode(node.parentNode); } - return node; // blocks statement of scopeNodes + return node; // blocks statement of scopeNodes } /** @@ -142,7 +142,7 @@ export class NodeUtils { * @param node * @returns {boolean} */ - public static isNodeHasBlockScope (node: INode): node is BlockScopeNode { + public static isNodeHasBlockScope (node: INode): node is TBlockScopeNode { return node.hasOwnProperty('body'); } diff --git a/src/Obfuscator.ts b/src/Obfuscator.ts index 673b15bc..90d8963a 100644 --- a/src/Obfuscator.ts +++ b/src/Obfuscator.ts @@ -1,11 +1,12 @@ import * as estraverse from 'estraverse'; import { ICustomNode } from './interfaces/ICustomNode'; -import { INodeObfuscator } from './interfaces/INodeObfuscator'; import { INodesGroup } from './interfaces/INodesGroup'; import { INode } from './interfaces/nodes/INode'; import { IOptions } from "./interfaces/IOptions"; +import { TNodeObfuscator } from "./types/TNodeObfuscator"; + import { AppendState } from './enums/AppendState'; import { NodeType } from './enums/NodeType'; @@ -29,9 +30,9 @@ export class Obfuscator { private nodes: Map = new Map (); /** - * @type {Map} + * @type {Map} */ - private nodeObfuscators: Map = new Map ([ + private nodeObfuscators: Map = new Map ([ [NodeType.ArrowFunctionExpression, [FunctionObfuscator]], [NodeType.ClassDeclaration, [FunctionDeclarationObfuscator]], [NodeType.CatchClause, [CatchClauseObfuscator]], @@ -123,8 +124,8 @@ export class Obfuscator { return; } - this.nodeObfuscators.get(node.type).forEach((obfuscator: Function) => { - new ( obfuscator(this.nodes, this.options)).obfuscateNode(node, parentNode); + this.nodeObfuscators.get(node.type).forEach((obfuscator: TNodeObfuscator) => { + new obfuscator(this.nodes, this.options).obfuscateNode(node, parentNode); }); } diff --git a/src/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.ts b/src/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.ts index 0c6268b9..ea139c6f 100644 --- a/src/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.ts +++ b/src/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.ts @@ -1,6 +1,6 @@ import * as esprima from 'esprima'; -import { BlockScopeNode } from "../../types/BlockScopeNode"; +import { TBlockScopeNode } from "../../types/TBlockScopeNode"; import { Node } from '../Node'; import { NodeUtils } from "../../NodeUtils"; @@ -15,7 +15,7 @@ export class ConsoleOutputDisableExpressionNode extends Node { /** * @param blockScopeNode */ - public appendNode (blockScopeNode: BlockScopeNode): void { + public appendNode (blockScopeNode: TBlockScopeNode): void { NodeUtils.prependNode(blockScopeNode.body, this.getNode()); } diff --git a/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionCallNode.ts b/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionCallNode.ts index e3e13851..605b48ef 100644 --- a/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionCallNode.ts +++ b/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionCallNode.ts @@ -1,4 +1,4 @@ -import { BlockScopeNode } from "../../types/BlockScopeNode"; +import { TBlockScopeNode } from "../../types/TBlockScopeNode"; import { NodeType } from "../../enums/NodeType"; @@ -25,7 +25,7 @@ export class DebugProtectionFunctionCallNode extends Node { /** * @param blockScopeNode */ - public appendNode (blockScopeNode: BlockScopeNode): void { + public appendNode (blockScopeNode: TBlockScopeNode): void { NodeUtils.appendNode(blockScopeNode.body, this.getNode()); } diff --git a/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionIntervalNode.ts b/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionIntervalNode.ts index 589c3392..c713bddb 100644 --- a/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionIntervalNode.ts +++ b/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionIntervalNode.ts @@ -1,4 +1,4 @@ -import { BlockScopeNode } from "../../types/BlockScopeNode"; +import { TBlockScopeNode } from "../../types/TBlockScopeNode"; import { NodeType } from '../../enums/NodeType'; @@ -25,7 +25,7 @@ export class DebugProtectionFunctionIntervalNode extends Node { /** * @param blockScopeNode */ - public appendNode (blockScopeNode: BlockScopeNode): void { + public appendNode (blockScopeNode: TBlockScopeNode): void { NodeUtils.appendNode(blockScopeNode.body, this.getNode()); } diff --git a/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionNode.ts b/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionNode.ts index 0cb3436e..09062715 100644 --- a/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionNode.ts +++ b/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionNode.ts @@ -1,6 +1,6 @@ import * as esprima from 'esprima'; -import { BlockScopeNode } from "../../types/BlockScopeNode"; +import { TBlockScopeNode } from "../../types/TBlockScopeNode"; import { Node } from '../Node'; import { NodeUtils } from '../../NodeUtils'; @@ -28,7 +28,7 @@ export class DebugProtectionFunctionNode extends Node { /** * @param blockScopeNode */ - public appendNode (blockScopeNode: BlockScopeNode): void { + public appendNode (blockScopeNode: TBlockScopeNode): void { let programBodyLength: number = blockScopeNode.body.length, randomIndex: number = Utils.getRandomInteger(0, programBodyLength); diff --git a/src/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapper.ts b/src/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapper.ts index aa7c9ba1..3fc9fca6 100644 --- a/src/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapper.ts +++ b/src/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapper.ts @@ -2,7 +2,7 @@ import * as esprima from 'esprima'; import { INode } from "../../interfaces/nodes/INode"; -import { BlockScopeNode } from "../../types/BlockScopeNode"; +import { TBlockScopeNode } from "../../types/TBlockScopeNode"; import { AppendState } from "../../enums/AppendState"; @@ -53,7 +53,7 @@ export class UnicodeArrayCallsWrapper extends Node { /** * @param blockScopeNode */ - public appendNode (blockScopeNode: BlockScopeNode): void { + public appendNode (blockScopeNode: TBlockScopeNode): void { NodeUtils.insertNodeAtIndex(blockScopeNode.body, this.getNode(), 1); } diff --git a/src/custom-nodes/unicode-array-nodes/UnicodeArrayNode.ts b/src/custom-nodes/unicode-array-nodes/UnicodeArrayNode.ts index 1a0e469f..a5bfb9d3 100644 --- a/src/custom-nodes/unicode-array-nodes/UnicodeArrayNode.ts +++ b/src/custom-nodes/unicode-array-nodes/UnicodeArrayNode.ts @@ -2,7 +2,7 @@ import * as escodegen from 'escodegen'; import { INode } from '../../interfaces/nodes/INode'; -import { BlockScopeNode } from "../../types/BlockScopeNode"; +import { TBlockScopeNode } from "../../types/TBlockScopeNode"; import { AppendState } from '../../enums/AppendState'; import { NodeType } from "../../enums/NodeType"; @@ -53,7 +53,7 @@ export class UnicodeArrayNode extends Node { /** * @param blockScopeNode */ - public appendNode (blockScopeNode: BlockScopeNode): void { + public appendNode (blockScopeNode: TBlockScopeNode): void { NodeUtils.prependNode(blockScopeNode.body, this.getNode()); } diff --git a/src/custom-nodes/unicode-array-nodes/UnicodeArrayRotateFunctionNode.ts b/src/custom-nodes/unicode-array-nodes/UnicodeArrayRotateFunctionNode.ts index 1237287a..822bdb75 100644 --- a/src/custom-nodes/unicode-array-nodes/UnicodeArrayRotateFunctionNode.ts +++ b/src/custom-nodes/unicode-array-nodes/UnicodeArrayRotateFunctionNode.ts @@ -2,7 +2,7 @@ import * as esprima from 'esprima'; import { INode } from "../../interfaces/nodes/INode"; -import { BlockScopeNode } from "../../types/BlockScopeNode"; +import { TBlockScopeNode } from "../../types/TBlockScopeNode"; import { AppendState } from "../../enums/AppendState"; @@ -53,7 +53,7 @@ export class UnicodeArrayRotateFunctionNode extends Node { /** * @param blockScopeNode */ - public appendNode (blockScopeNode: BlockScopeNode): void { + public appendNode (blockScopeNode: TBlockScopeNode): void { NodeUtils.insertNodeAtIndex(blockScopeNode.body, this.getNode(), 1); } diff --git a/src/types/BlockScopeNode.d.ts b/src/types/TBlockScopeNode.d.ts similarity index 75% rename from src/types/BlockScopeNode.d.ts rename to src/types/TBlockScopeNode.d.ts index b463d6a2..6723bc78 100644 --- a/src/types/BlockScopeNode.d.ts +++ b/src/types/TBlockScopeNode.d.ts @@ -3,4 +3,4 @@ import { ICatchClauseNode } from "../interfaces/nodes/ICatchClauseNode"; import { IFunctionNode } from "../interfaces/nodes/IFunctionNode"; import { IProgramNode } from "../interfaces/nodes/IProgramNode"; -export type BlockScopeNode = IBlockStatementNode|ICatchClauseNode|IFunctionNode|IProgramNode; \ No newline at end of file +export type TBlockScopeNode = IBlockStatementNode|ICatchClauseNode|IFunctionNode|IProgramNode; \ No newline at end of file diff --git a/src/types/TNodeObfuscator.d.ts b/src/types/TNodeObfuscator.d.ts new file mode 100644 index 00000000..92462034 --- /dev/null +++ b/src/types/TNodeObfuscator.d.ts @@ -0,0 +1,5 @@ +import { ICustomNode } from "../interfaces/ICustomNode"; +import { INodeObfuscator } from "../interfaces/INodeObfuscator"; +import { IOptions } from "../interfaces/IOptions"; + +export type TNodeObfuscator = (new (nodes: Map , options: IOptions) => INodeObfuscator); \ No newline at end of file