var JavaScriptObfuscator = require('javascript-obfuscator');
var obfuscationResult = JavaScriptObfuscator.obfuscate(
`
var obj1={
firstname:'John',
lastname:'Smith'
};
var obj2={
age:40,
country:'USA'
}
var user={...obj1, ...obj2}
console.log(user);
`,
{
transformObjectKeys: true,
}
);
console.log(obfuscationResult.getObfuscatedCode());
The normal ouput of this program is:
{firstname: "John", lastname: "Smith", age: 40, country: "USA"}
The current behavior is:
/Users/vincent/dev/packager/node_modules/javascript-obfuscator/dist/webpack:/JavaScriptObfuscator/src/node/NodeGuards.ts:270
return node.type === NodeType.ObjectPattern;
^
TypeError: Cannot read property 'type' of undefined
at Function.type (/Users/vincent/dev/packager/node_modules/javascript-obfuscator/dist/webpack:/JavaScriptObfuscator/src/node/NodeGuards.ts:270:21)
at Function.isObjectPatternNode (/Users/vincent/dev/packager/node_modules/javascript-obfuscator/dist/webpack:/JavaScriptObfuscator/src/node-transformers/converting-transformers/properties-extractors/AbstractPropertiesExtractor.ts:86:27)
at t.isProhibitedPattern (/Users/vincent/dev/packager/node_modules/javascript-obfuscator/dist/webpack:/JavaScriptObfuscator/src/node-transformers/converting-transformers/properties-extractors/AbstractPropertiesExtractor.ts:120:45)
at t.extractPropertiesToExpressionStatements (/Users/vincent/dev/packager/node_modules/javascript-obfuscator/dist/webpack:/JavaScriptObfuscator/src/node-transformers/converting-transformers/properties-extractors/AbstractPropertiesExtractor.ts:187:14)
at transformObjectExpressionNode (/Users/vincent/dev/packager/node_modules/javascript-obfuscator/dist/webpack:/JavaScriptObfuscator/src/node-transformers/converting-transformers/properties-extractors/VariableDeclaratorPropertiesExtractor.ts:42:21)
at t.extract (/Users/vincent/dev/packager/node_modules/javascript-obfuscator/dist/webpack:/JavaScriptObfuscator/src/node-transformers/converting-transformers/ObjectExpressionKeysTransformer.ts:104:36)
at transformNode (/Users/vincent/dev/packager/node_modules/javascript-obfuscator/dist/webpack:/JavaScriptObfuscator/src/node-transformers/converting-transformers/ObjectExpressionKeysTransformer.ts:67:33)
at Controller.visitorFunction (/Users/vincent/dev/packager/node_modules/javascript-obfuscator/dist/webpack:/JavaScriptObfuscator/src/node-transformers/TransformersRunner.ts:111:55)
at Controller.__execute (/Users/vincent/dev/packager/node_modules/estraverse/estraverse.js:397:31)
at Controller.replace (/Users/vincent/dev/packager/node_modules/estraverse/estraverse.js:637:27)
No related to environment, even on https://obfuscator.io/ it happens as well, the website does not obfuscate the code and displays TypeError: Cannot read property 'type' of undefined
See 'Current Behavior' section
See code sample at top of bug report
array spread operator like [...arr1, ...arr2] does not create this problem, only {...obj1, ...obj2} does.
Can you check this problem on version 0.18.1 ?
Can you check this problem on version 0.18.1 ?
same error
The bug is fixed by PR above.
Thank you! I will look into this tomorrow. Expect release with fix tomorrow.
0.18.4 version released.
@zamotkin thank you for the fixes
Most helpful comment
The bug is fixed by PR above.