Jelajahi Sumber

Fixed issue #437
Some nodes can have no values

5 tahun lalu
induk
melakukan
26cc3a4d63

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


+ 2 - 1
src/node-transformers/converting-transformers/properties-extractors/AbstractPropertiesExtractor.ts

@@ -83,7 +83,8 @@ export abstract class AbstractPropertiesExtractor implements IPropertiesExtracto
      * @returns {propertyValueNode is Pattern}
      */
     protected static isProhibitedPattern (node: ESTree.Node): node is ESTree.Pattern {
-        return NodeGuards.isObjectPatternNode(node)
+        return !node
+            || NodeGuards.isObjectPatternNode(node)
             || NodeGuards.isArrayPatternNode(node)
             || NodeGuards.isAssignmentPatternNode(node)
             || NodeGuards.isRestElementNode(node);

+ 10 - 0
test/functional-tests/issues/fixtures/issue437.js

@@ -0,0 +1,10 @@
+var obj1={
+    firstname:'John',
+    lastname:'Smith'
+};
+var obj2={
+    age:40,
+    country:'USA'
+}
+var user={...obj1, ...obj2}
+console.log(user);

+ 29 - 0
test/functional-tests/issues/issue437.spec.ts

@@ -0,0 +1,29 @@
+import { assert } from 'chai';
+import { NO_ADDITIONAL_NODES_PRESET } from '../../../src/options/presets/NoCustomNodes';
+import { readFileAsString } from '../../helpers/readFileAsString';
+import { JavaScriptObfuscator } from '../../../src/JavaScriptObfuscatorFacade';
+
+//
+// https://github.com/javascript-obfuscator/javascript-obfuscator/issues/437
+//
+describe('Issue #437', () => {
+
+    describe('Fixture code should not break on obfuscating', () => {
+        let doObfuscate: Function;
+
+        before(() => {
+            const code: string = readFileAsString(__dirname + '/fixtures/issue437.js');
+            doObfuscate = () => JavaScriptObfuscator.obfuscate(
+                code,
+                {
+                    ...NO_ADDITIONAL_NODES_PRESET,
+                    transformObjectKeys: true
+                }
+            ).getObfuscatedCode();
+        });
+
+        it('does not break on obfuscating', () => {
+            assert.doesNotThrow(doObfuscate);
+        });
+    });
+});

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