From af7e8e14ef88aab16ce9d24eebb06f6417c2d537 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Mon, 30 May 2016 13:02:43 +0300 Subject: [PATCH 1/5] dev --- dist/tests/dev-test.js | 4 +--- tests/dev-test.ts | 5 ++--- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/dist/tests/dev-test.js b/dist/tests/dev-test.js index c4a6ecb1..4cab2bc9 100644 --- a/dist/tests/dev-test.js +++ b/dist/tests/dev-test.js @@ -1,6 +1,4 @@ -"use strict"; -const JavaScriptObfuscator = require("../index"); -let obfuscatedCode = JavaScriptObfuscator.obfuscate(` +let JavaScriptObfuscator = require('../index'), obfuscatedCode = JavaScriptObfuscator.obfuscate(` (function(){ var result = 1, term1 = 0, diff --git a/tests/dev-test.ts b/tests/dev-test.ts index 4352d5c4..5cded573 100644 --- a/tests/dev-test.ts +++ b/tests/dev-test.ts @@ -1,6 +1,5 @@ -import * as JavaScriptObfuscator from "../index"; - -let obfuscatedCode: string = (JavaScriptObfuscator).obfuscate( +let JavaScriptObfuscator = require('../index'), + obfuscatedCode: string = JavaScriptObfuscator.obfuscate( ` (function(){ var result = 1, From ebbabb024e6d95de7982fb54e71a72dfa1126be3 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Mon, 30 May 2016 13:30:08 +0300 Subject: [PATCH 2/5] dev --- src/interfaces/IOptions.d.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/interfaces/IOptions.d.ts b/src/interfaces/IOptions.d.ts index c28444fa..0cf38876 100644 --- a/src/interfaces/IOptions.d.ts +++ b/src/interfaces/IOptions.d.ts @@ -5,5 +5,4 @@ export interface IOptions { disableConsoleOutput?: boolean; rotateUnicodeArray?: boolean; wrapUnicodeArrayCalls?: boolean; - [id: string]: any; } From 47d863f97aa698756c841f67d3323cca2e57520f Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Mon, 30 May 2016 17:00:07 +0300 Subject: [PATCH 3/5] 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 From c20239be58d78ac4841b5e00482ae8b0ab2a9f9c Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Mon, 30 May 2016 17:19:47 +0300 Subject: [PATCH 4/5] added const --- dist/src/Utils.js | 9 +++++++-- src/Utils.ts | 14 ++++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/dist/src/Utils.js b/dist/src/Utils.js index 8b09d938..bdaab6d9 100644 --- a/dist/src/Utils.js +++ b/dist/src/Utils.js @@ -21,7 +21,11 @@ class Utils { return newArray; } static decToHex(dec) { - return (dec + Math.pow(16, 6)).toString(16).substr(-6).replace(Utils.hexRepetitiveZerosRegExp, ''); + const decToHexSliceValue = -6, exponent = 6, radix = 16; + return (dec + Math.pow(radix, exponent)) + .toString(radix) + .substr(decToHexSliceValue) + .replace(Utils.hexRepetitiveZerosRegExp, ''); } static getRandomInteger(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; @@ -37,8 +41,9 @@ class Utils { return obj; } static stringToUnicode(string) { + const radix = 16, unicodeSliceValue = -4; return `'${string.replace(/[\s\S]/g, (escape) => { - return `\\u${('0000' + escape.charCodeAt(0).toString(16)).slice(-4)}`; + return `\\u${('0000' + escape.charCodeAt(0).toString(radix)).slice(unicodeSliceValue)}`; })}'`; } } diff --git a/src/Utils.ts b/src/Utils.ts index 0a934f36..ad3a5b89 100644 --- a/src/Utils.ts +++ b/src/Utils.ts @@ -45,7 +45,14 @@ export class Utils { * @returns {string} */ public static decToHex(dec: number): string { - return (dec + Math.pow(16, 6)).toString(16).substr(-6).replace(Utils.hexRepetitiveZerosRegExp, ''); + const decToHexSliceValue: number = -6, + exponent: number = 6, + radix: number = 16; + + return (dec + Math.pow(radix, exponent)) + .toString(radix) + .substr(decToHexSliceValue) + .replace(Utils.hexRepetitiveZerosRegExp, ''); } /** @@ -90,8 +97,11 @@ export class Utils { * @returns {string} */ public static stringToUnicode (string: string): string { + const radix: number = 16, + unicodeSliceValue: number = -4; + return `'${string.replace(/[\s\S]/g, (escape: string): string => { - return `\\u${('0000' + escape.charCodeAt(0).toString(16)).slice(-4)}`; + return `\\u${('0000' + escape.charCodeAt(0).toString(radix)).slice(unicodeSliceValue)}`; })}'`; } } From c23e70de32407f029583cfcc40bf7dd1c8b29864 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Mon, 30 May 2016 17:45:12 +0300 Subject: [PATCH 5/5] refactoring --- src/Utils.ts | 8 ++++---- .../ConsoleOutputDisableExpressionNode.ts | 6 ++++-- .../DebugProtectionFunctionCallNode.ts | 6 ++++-- .../DebugProtectionFunctionIntervalNode.ts | 6 ++++-- .../debug-protection-nodes/DebugProtectionFunctionNode.ts | 6 ++++-- .../unicode-array-nodes/UnicodeArrayCallsWrapper.ts | 4 ++-- src/custom-nodes/unicode-array-nodes/UnicodeArrayNode.ts | 7 ++++--- .../unicode-array-nodes/UnicodeArrayRotateFunctionNode.ts | 4 ++-- src/interfaces/nodes/IExpressionStatementNode.d.ts | 5 +++++ 9 files changed, 33 insertions(+), 19 deletions(-) create mode 100644 src/interfaces/nodes/IExpressionStatementNode.d.ts diff --git a/src/Utils.ts b/src/Utils.ts index ad3a5b89..95f008a2 100644 --- a/src/Utils.ts +++ b/src/Utils.ts @@ -17,15 +17,15 @@ export class Utils { * @param array * @param times * @param reverse - * @returns any[] + * @returns {T[]} */ - public static arrayRotate (array: any[], times: number, reverse: boolean = false): any[] { + public static arrayRotate (array: T[], times: number, reverse: boolean = false): T[] { if (times < 0) { return; } - let newArray: any[] = array, - temp: any; + let newArray: T[] = array, + temp: T; while (times--) { if (!reverse) { diff --git a/src/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.ts b/src/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.ts index ea139c6f..c704c5f1 100644 --- a/src/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.ts +++ b/src/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.ts @@ -1,5 +1,7 @@ import * as esprima from 'esprima'; +import { INode } from "../../interfaces/nodes/INode"; + import { TBlockScopeNode } from "../../types/TBlockScopeNode"; import { Node } from '../Node'; @@ -33,9 +35,9 @@ export class ConsoleOutputDisableExpressionNode extends Node { * _console * })(); * - * @returns any + * @returns {INode} */ - protected getNodeStructure (): any { + protected getNodeStructure (): INode { return NodeUtils.getBlockScopeNodeByIndex( esprima.parse(` (function () { diff --git a/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionCallNode.ts b/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionCallNode.ts index 605b48ef..f14d02f7 100644 --- a/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionCallNode.ts +++ b/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionCallNode.ts @@ -1,3 +1,5 @@ +import { IExpressionStatementNode } from "../../interfaces/nodes/IExpressionStatementNode"; + import { TBlockScopeNode } from "../../types/TBlockScopeNode"; import { NodeType } from "../../enums/NodeType"; @@ -30,9 +32,9 @@ export class DebugProtectionFunctionCallNode extends Node { } /** - * @returns any + * @returns {IExpressionStatementNode} */ - protected getNodeStructure (): any { + protected getNodeStructure (): IExpressionStatementNode { return { 'type': NodeType.ExpressionStatement, 'expression': { diff --git a/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionIntervalNode.ts b/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionIntervalNode.ts index c713bddb..173ff8b3 100644 --- a/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionIntervalNode.ts +++ b/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionIntervalNode.ts @@ -1,3 +1,5 @@ +import { IExpressionStatementNode } from "../../interfaces/nodes/IExpressionStatementNode"; + import { TBlockScopeNode } from "../../types/TBlockScopeNode"; import { NodeType } from '../../enums/NodeType'; @@ -30,9 +32,9 @@ export class DebugProtectionFunctionIntervalNode extends Node { } /** - * @returns any + * @returns {IExpressionStatementNode} */ - protected getNodeStructure (): any { + protected getNodeStructure (): IExpressionStatementNode { return { 'type': NodeType.ExpressionStatement, 'expression': { diff --git a/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionNode.ts b/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionNode.ts index 09062715..d95dcbd0 100644 --- a/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionNode.ts +++ b/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionNode.ts @@ -1,5 +1,7 @@ import * as esprima from 'esprima'; +import { INode } from "../../interfaces/nodes/INode"; + import { TBlockScopeNode } from "../../types/TBlockScopeNode"; import { Node } from '../Node'; @@ -45,9 +47,9 @@ export class DebugProtectionFunctionNode extends Node { /** * Found this trick in JScrambler * - * @returns any + * @returns {INode} */ - protected getNodeStructure (): any { + protected getNodeStructure (): INode { return NodeUtils.getBlockScopeNodeByIndex( esprima.parse(` var ${this.debugProtectionFunctionName} = function () { diff --git a/src/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapper.ts b/src/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapper.ts index 3fc9fca6..08b84b47 100644 --- a/src/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapper.ts +++ b/src/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapper.ts @@ -76,9 +76,9 @@ export class UnicodeArrayCallsWrapper extends Node { } /** - * @returns any + * @returns {INode} */ - protected getNodeStructure (): any { + protected getNodeStructure (): INode { let keyName: string = Utils.getRandomVariableName(), node: INode = esprima.parse(` var ${this.unicodeArrayCallsWrapperName} = function (${keyName}) { diff --git a/src/custom-nodes/unicode-array-nodes/UnicodeArrayNode.ts b/src/custom-nodes/unicode-array-nodes/UnicodeArrayNode.ts index a5bfb9d3..655c6f40 100644 --- a/src/custom-nodes/unicode-array-nodes/UnicodeArrayNode.ts +++ b/src/custom-nodes/unicode-array-nodes/UnicodeArrayNode.ts @@ -10,6 +10,7 @@ import { NodeType } from "../../enums/NodeType"; import { Node } from '../Node'; import { NodeUtils } from "../../NodeUtils"; import { Utils } from '../../Utils'; +import {IVariableDeclarationNode} from "../../interfaces/nodes/IVariableDeclarationNode"; export class UnicodeArrayNode extends Node { /** @@ -79,7 +80,7 @@ export class UnicodeArrayNode extends Node { return; } - Utils.arrayRotate(this.unicodeArray, this.unicodeArrayRotateValue); + Utils.arrayRotate (this.unicodeArray, this.unicodeArrayRotateValue); this.updateNode(); @@ -87,9 +88,9 @@ export class UnicodeArrayNode extends Node { } /** - * @returns any + * @returns {INode} */ - protected getNodeStructure (): any { + protected getNodeStructure (): IVariableDeclarationNode { return { 'type': NodeType.VariableDeclaration, 'declarations': [ diff --git a/src/custom-nodes/unicode-array-nodes/UnicodeArrayRotateFunctionNode.ts b/src/custom-nodes/unicode-array-nodes/UnicodeArrayRotateFunctionNode.ts index 822bdb75..5be83b3d 100644 --- a/src/custom-nodes/unicode-array-nodes/UnicodeArrayRotateFunctionNode.ts +++ b/src/custom-nodes/unicode-array-nodes/UnicodeArrayRotateFunctionNode.ts @@ -69,9 +69,9 @@ export class UnicodeArrayRotateFunctionNode extends Node { } /** - * @returns any + * @returns {INode} */ - protected getNodeStructure (): any { + protected getNodeStructure (): INode { let arrayName: string = Utils.getRandomVariableName(), timesName: string = Utils.getRandomVariableName(), tempArrayName: string = Utils.getRandomVariableName(), diff --git a/src/interfaces/nodes/IExpressionStatementNode.d.ts b/src/interfaces/nodes/IExpressionStatementNode.d.ts new file mode 100644 index 00000000..7774ac1d --- /dev/null +++ b/src/interfaces/nodes/IExpressionStatementNode.d.ts @@ -0,0 +1,5 @@ +import { INode } from "./INode"; + +export interface IExpressionStatementNode extends INode { + expression: any; +}