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());
Expected Behavior
The normal ouput of this program is:
{firstname: "John", lastname: "Smith", age: 40, country: "USA"}
Current Behavior
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)
Steps to Reproduce (for bugs)
- create a file with the above code in a npm project
- run the code
- bug occurs
Your Environment
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
Stack trace
See 'Current Behavior' section
Minimal working example that will help to reproduce issue
See code sample at top of bug report
Other notes
array spread operator like [...arr1, ...arr2] does not create this problem, only {...obj1, ...obj2} does.
Expected Behavior
The normal ouput of this program is:
Current Behavior
The current behavior is:
Steps to Reproduce (for bugs)
Your Environment
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 undefinedStack trace
See 'Current Behavior' section
Minimal working example that will help to reproduce issue
See code sample at top of bug report
Other notes
array spread operator like [...arr1, ...arr2] does not create this problem, only {...obj1, ...obj2} does.