Browse Source

Identifier replacer refactoring

sanex3339 8 years ago
parent
commit
00e23737df
2 changed files with 15 additions and 16 deletions
  1. 3 2
      dist/index.js
  2. 12 14
      src/node-obfuscators/NodeObfuscator.ts

+ 3 - 2
dist/index.js

@@ -536,12 +536,13 @@ var NodeObfuscator = function () {
     }, {
         key: "replaceIdentifiersWithRandomNames",
         value: function replaceIdentifiersWithRandomNames(node, parentNode, namesMap) {
+            var obfuscatedIdentifierName = namesMap.get(node.name);
             var parentNodeIsPropertyNode = Nodes_1.Nodes.isPropertyNode(parentNode) && parentNode.key === node;
             var parentNodeIsMemberExpressionNode = Nodes_1.Nodes.isMemberExpressionNode(parentNode) && parentNode.computed === false && parentNode.property === node;
-            if (parentNodeIsPropertyNode || parentNodeIsMemberExpressionNode || !namesMap.has(node.name)) {
+            if (parentNodeIsPropertyNode || parentNodeIsMemberExpressionNode || !obfuscatedIdentifierName) {
                 return node.name;
             }
-            return namesMap.get(node.name);
+            return obfuscatedIdentifierName;
         }
     }, {
         key: "replaceLiteralBooleanWithJSFuck",

+ 12 - 14
src/node-obfuscators/NodeObfuscator.ts

@@ -72,26 +72,24 @@ export abstract class NodeObfuscator implements INodeObfuscator {
      * @param namesMap
      * @returns {string}
      */
-    protected replaceIdentifiersWithRandomNames (node: IIdentifierNode, parentNode: INode, namesMap: Map <string, string>): string {
-        const parentNodeIsPropertyNode: boolean = (
-            Nodes.isPropertyNode(parentNode) &&
-            parentNode.key === node
-        );
+    protected replaceIdentifiersWithRandomNames (
+        node: IIdentifierNode,
+        parentNode: INode,
+        namesMap: Map <string, string>
+    ): string {
+        const obfuscatedIdentifierName: string|undefined = namesMap.get(node.name);
+        const parentNodeIsPropertyNode: boolean = Nodes.isPropertyNode(parentNode) && parentNode.key === node;
         const parentNodeIsMemberExpressionNode: boolean = (
             Nodes.isMemberExpressionNode(parentNode) &&
             parentNode.computed === false &&
             parentNode.property === node
         );
 
-        if (
-            parentNodeIsPropertyNode ||
-            parentNodeIsMemberExpressionNode ||
-            !namesMap.has(node.name)
-        ) {
+        if (parentNodeIsPropertyNode || parentNodeIsMemberExpressionNode || !obfuscatedIdentifierName) {
             return node.name;
         }
 
-        return <string>namesMap.get(node.name);
+        return obfuscatedIdentifierName;
     }
 
     /**
@@ -121,7 +119,7 @@ export abstract class NodeObfuscator implements INodeObfuscator {
      * @returns {string}
      */
     protected replaceLiteralValueWithUnicodeValue (nodeValue: string): string {
-        let replaceWithUnicodeArrayFlag: boolean = Math.random() <= this.options.unicodeArrayThreshold;
+        const replaceWithUnicodeArrayFlag: boolean = Math.random() <= this.options.unicodeArrayThreshold;
 
         if (this.options.encodeUnicodeLiterals && replaceWithUnicodeArrayFlag) {
             nodeValue = Utils.btoa(nodeValue);
@@ -141,7 +139,7 @@ export abstract class NodeObfuscator implements INodeObfuscator {
      * @returns {string}
      */
     protected replaceLiteralValueWithUnicodeArrayCall (value: string): string {
-        let unicodeArrayNode: TUnicodeArrayNode = <TUnicodeArrayNode>this.nodes.get('unicodeArrayNode');
+        const unicodeArrayNode: TUnicodeArrayNode = <TUnicodeArrayNode>this.nodes.get('unicodeArrayNode');
 
         if (!unicodeArrayNode) {
             throw new ReferenceError('`unicodeArrayNode` node is not found in Map with custom nodes.');
@@ -162,7 +160,7 @@ export abstract class NodeObfuscator implements INodeObfuscator {
         hexadecimalIndex = this.replaceLiteralNumberWithHexadecimalValue(indexOfValue);
 
         if (this.options.wrapUnicodeArrayCalls) {
-            let unicodeArrayCallsWrapper: TUnicodeArrayCallsWrapper = <TUnicodeArrayCallsWrapper>this.nodes.get('unicodeArrayCallsWrapper');
+            const unicodeArrayCallsWrapper: TUnicodeArrayCallsWrapper = <TUnicodeArrayCallsWrapper>this.nodes.get('unicodeArrayCallsWrapper');
 
             if (!unicodeArrayCallsWrapper) {
                 throw new ReferenceError('`unicodeArrayCallsWrapper` node is not found in Map with custom nodes.');