Jelajahi Sumber

Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/288

sanex3339 6 tahun lalu
induk
melakukan
a2a0c9e4d2

+ 4 - 0
CHANGELOG.md

@@ -1,5 +1,9 @@
 Change Log
 ===
+v0.18.0
+---
+* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/288
+
 v0.17.0
 ---
 * **Browser version**: Added browser version dist

File diff ditekan karena terlalu besar
+ 0 - 0
dist/index.browser.js


File diff ditekan karena terlalu besar
+ 0 - 0
dist/index.cli.js


File diff ditekan karena terlalu besar
+ 0 - 0
dist/index.js


+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "javascript-obfuscator",
-  "version": "0.17.0",
+  "version": "0.18.0-dev.1",
   "description": "JavaScript obfuscator",
   "keywords": [
     "obfuscator",

+ 9 - 2
src/node-transformers/converting-transformers/TemplateLiteralTransformer.ts

@@ -12,6 +12,7 @@ import { TransformationStage } from '../../enums/node-transformers/Transformatio
 import { AbstractNodeTransformer } from '../AbstractNodeTransformer';
 import { NodeFactory } from '../../node/NodeFactory';
 import { NodeGuards } from '../../node/NodeGuards';
+import { NodeUtils } from '../../node/NodeUtils';
 
 /**
  * Transform ES2015 template literals to ES5
@@ -102,6 +103,8 @@ export class TemplateLiteralTransformer extends AbstractNodeTransformer {
             nodes.unshift(NodeFactory.literalNode(''));
         }
 
+        let transformedNode: ESTree.Node;
+
         if (nodes.length > 1) {
             let root: ESTree.BinaryExpression = NodeFactory.binaryExpressionNode(
                 '+',
@@ -113,9 +116,13 @@ export class TemplateLiteralTransformer extends AbstractNodeTransformer {
                 root = NodeFactory.binaryExpressionNode('+', root, node);
             });
 
-            return root;
+            transformedNode = root;
+        } else {
+            transformedNode = nodes[0];
         }
 
-        return nodes[0];
+        NodeUtils.parentizeAst(transformedNode);
+
+        return transformedNode;
     }
 }

+ 15 - 0
test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/TemplateLiteralTransformer.spec.ts

@@ -156,4 +156,19 @@ describe('TemplateLiteralTransformer', () => {
             );
         });
     });
+
+    describe('Variant #7: template literal parentize', () => {
+        it('should parentize transformed template literal node', () => {
+            const code: string = readFileAsString(__dirname + '/fixtures/template-literal-parentize.js');
+            const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate(
+                code,
+                {
+                    ...NO_ADDITIONAL_NODES_PRESET,
+                    unicodeEscapeSequence: false
+                }
+            );
+
+            assert.match(obfuscationResult.getObfuscatedCode(),  /^\[]\['map']\(\(\) *=> *'foo'\);$/);
+        });
+    });
 });

+ 1 - 0
test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/fixtures/template-literal-parentize.js

@@ -0,0 +1 @@
+[].map(() => `foo`);

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini