Quellcode durchsuchen

The `splitStrings` option now affects template literal strings

sanex3339 vor 5 Jahren
Ursprung
Commit
8a0b182161

+ 5 - 0
CHANGELOG.md

@@ -1,5 +1,10 @@
 Change Log
 
+v0.19.1
+---
+* The `splitStrings` option now affects template literal strings
+
+
 v0.19.0
 ---
 * **New option:** `splitStrings` splits literal strings into chunks with length of `splitStringsChunkLength` option value

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
dist/index.browser.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
dist/index.cli.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
dist/index.js


+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "javascript-obfuscator",
-  "version": "0.19.0",
+  "version": "0.19.1",
   "description": "JavaScript obfuscator",
   "keywords": [
     "obfuscator",

+ 1 - 1
src/node-transformers/converting-transformers/TemplateLiteralTransformer.ts

@@ -56,7 +56,7 @@ export class TemplateLiteralTransformer extends AbstractNodeTransformer {
         switch (transformationStage) {
             case TransformationStage.Converting:
                 return {
-                    leave: (node: ESTree.Node, parentNode: ESTree.Node | null) => {
+                    enter: (node: ESTree.Node, parentNode: ESTree.Node | null) => {
                         if (parentNode && TemplateLiteralTransformer.isValidTemplateLiteralNode(node, parentNode)) {
                             return this.transformNode(node, parentNode);
                         }

+ 37 - 2
test/functional-tests/node-transformers/converting-transformers/split-string-transformer/SplitStringTransformer.spec.ts

@@ -94,7 +94,42 @@ describe('SplitStringTransformer', () => {
         });
     });
 
-    describe('Variant #6: object key string literal', () => {
+    describe('Variant #6: unicode escape sequence', () => {
+        it('should convert strings to unicode escape sequence view', () => {
+            const code: string = readFileAsString(__dirname + '/fixtures/simple-input.js');
+
+            obfuscatedCode = JavaScriptObfuscator.obfuscate(
+                code,
+                {
+                    ...NO_ADDITIONAL_NODES_PRESET,
+                    splitStrings: true,
+                    splitStringsChunkLength: 2,
+                    unicodeEscapeSequence: true
+                }
+            ).getObfuscatedCode();
+
+            assert.match(obfuscatedCode,  /^var *test *= *'\\x61\\x62' *\+ *'\\x63\\x64' *\+ *'\\x65\\x66' *\+ *'\\x67';$/);
+        });
+    });
+
+    describe('Variant #7: template literal string', () => {
+        it('should apply string splitting on template literal strings', () => {
+            const code: string = readFileAsString(__dirname + '/fixtures/template-literal-string.js');
+
+            obfuscatedCode = JavaScriptObfuscator.obfuscate(
+                code,
+                {
+                    ...NO_ADDITIONAL_NODES_PRESET,
+                    splitStrings: true,
+                    splitStringsChunkLength: 2
+                }
+            ).getObfuscatedCode();
+
+            assert.match(obfuscatedCode,  /^var *test *= *'ab' *\+ *'cd' *\+ *'ef' *\+ *'g';$/);
+        });
+    });
+
+    describe('Variant #8: object key string literal', () => {
         it('should keep original string literal', () => {
             const code: string = readFileAsString(__dirname + '/fixtures/object-key-string-literal.js');
 
@@ -111,7 +146,7 @@ describe('SplitStringTransformer', () => {
         });
     });
 
-    describe('Variant #7: object computed key string literal', () => {
+    describe('Variant #9: object computed key string literal', () => {
         it('should transform string literal to binary expression', () => {
             const code: string = readFileAsString(__dirname + '/fixtures/object-computed-key-string-literal.js');
 

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

@@ -0,0 +1 @@
+var test = `abcdefg`;

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.