diff --git a/dist/src/NodeUtils.js b/dist/src/NodeUtils.js index 05a21b8e..0e2f8ff5 100644 --- a/dist/src/NodeUtils.js +++ b/dist/src/NodeUtils.js @@ -79,14 +79,16 @@ class NodeUtils { return node.type === NodeType_1.NodeType.VariableDeclarator; } static parentize(node) { + let isRootNode = true; estraverse.replace(node, { enter: (node, parentNode) => { Object.defineProperty(node, 'parentNode', { configurable: true, enumerable: true, - value: parentNode || node, + value: isRootNode ? NodeUtils.getProgramNode([node]) : parentNode || node, writable: true }); + isRootNode = false; } }); } diff --git a/dist/src/Obfuscator.js b/dist/src/Obfuscator.js index 5c16fbb9..289a02fe 100644 --- a/dist/src/Obfuscator.js +++ b/dist/src/Obfuscator.js @@ -54,14 +54,14 @@ class Obfuscator { afterObfuscation(astTree) { this.nodes.forEach((node) => { if (node.getAppendState() === AppendState_1.AppendState.AfterObfuscation) { - node.appendNode(NodeUtils_1.NodeUtils.getBlockScopeOfNode(astTree)); + node.appendNode(astTree); } }); } beforeObfuscation(astTree) { this.nodes.forEach((node) => { if (node.getAppendState() === AppendState_1.AppendState.BeforeObfuscation) { - node.appendNode(NodeUtils_1.NodeUtils.getBlockScopeOfNode(astTree)); + node.appendNode(astTree); } }); } diff --git a/src/NodeUtils.ts b/src/NodeUtils.ts index ee26f789..402ebc72 100644 --- a/src/NodeUtils.ts +++ b/src/NodeUtils.ts @@ -188,14 +188,18 @@ export class NodeUtils { * @param node */ public static parentize (node: INode): void { + let isRootNode: boolean = true; + estraverse.replace(node, { enter: (node: INode, parentNode: INode): any => { Object.defineProperty(node, 'parentNode', { configurable: true, enumerable: true, - value: parentNode || node, + value: isRootNode ? NodeUtils.getProgramNode([node]) : parentNode || node, writable: true }); + + isRootNode = false; } }); } diff --git a/src/Obfuscator.ts b/src/Obfuscator.ts index 09bf8c65..473f1a9b 100644 --- a/src/Obfuscator.ts +++ b/src/Obfuscator.ts @@ -101,7 +101,7 @@ export class Obfuscator { private afterObfuscation (astTree: INode): void { this.nodes.forEach((node: ICustomNode) => { if (node.getAppendState() === AppendState.AfterObfuscation) { - node.appendNode(NodeUtils.getBlockScopeOfNode(astTree)); + node.appendNode(astTree); } }); } @@ -112,7 +112,7 @@ export class Obfuscator { private beforeObfuscation (astTree: INode): void { this.nodes.forEach((node: ICustomNode) => { if (node.getAppendState() === AppendState.BeforeObfuscation) { - node.appendNode(NodeUtils.getBlockScopeOfNode(astTree)); + node.appendNode(astTree); } }); };