Repository navigation
AssignmentRestProperty does not work without AssignmentPropertyList #607
Copy link
Copy link
Closed
Labels
Description
I've created an issue as a bug as partial ECMAScript 2019 support is declared on web site.
Expected Behavior
const { ...fields } = req.body; should be obfuscated
Current Behavior
For now seems like many features of ECMAScript 2018 is supported except at least one when AssignmentRestProperty alone is used at the LeftHandSideExpression of destructuring assignment.
Example:
const { ...fields } = req.body;
Runing javascript-obfuscator against that string gives:
[javascript-obfuscator-cli] Error in file: playground/test.js...
Although it works well when AssignmentPropertyList is present before the rest.
This string will not cause an error:
const { foo, ...fields } = req.body;
Steps to Reproduce
- create test.js file with a content from example below
- run javascript-obfuscator against it
javascript-obfuscator ./test.js --output ./ - experience an error
Your Environment
- Obfuscator version used: 0.28.1
- Node version used: 12.13.1
Stack trace
/Users/lonedone/.nvm/versions/node/v12.13.1/lib/node_modules/javascript-obfuscator/node_modules/escodegen/escodegen.js:2226
if (property.value.type !== Syntax.Identifier) {
^
TypeError: Cannot read property 'type' of undefined
at CodeGenerator.ObjectPattern (/Users/lonedone/.nvm/versions/node/v12.13.1/lib/node_modules/javascript-obfuscator/node_modules/escodegen/escodegen.js:2226:36)
at CodeGenerator.generateExpression (/Users/lonedone/.nvm/versions/node/v12.13.1/lib/node_modules/javascript-obfuscator/node_modules/escodegen/escodegen.js:2469:28)
at CodeGenerator.VariableDeclarator (/Users/lonedone/.nvm/versions/node/v12.13.1/lib/node_modules/javascript-obfuscator/node_modules/escodegen/escodegen.js:1438:26)
at CodeGenerator.generateStatement (/Users/lonedone/.nvm/versions/node/v12.13.1/lib/node_modules/javascript-obfuscator/node_modules/escodegen/escodegen.js:2482:33)
at block (/Users/lonedone/.nvm/versions/node/v12.13.1/lib/node_modules/javascript-obfuscator/node_modules/escodegen/escodegen.js:1465:38)
at CodeGenerator.VariableDeclaration (/Users/lonedone/.nvm/versions/node/v12.13.1/lib/node_modules/javascript-obfuscator/node_modules/escodegen/escodegen.js:1483:17)
at CodeGenerator.generateStatement (/Users/lonedone/.nvm/versions/node/v12.13.1/lib/node_modules/javascript-obfuscator/node_modules/escodegen/escodegen.js:2482:33)
at /Users/lonedone/.nvm/versions/node/v12.13.1/lib/node_modules/javascript-obfuscator/node_modules/escodegen/escodegen.js:1075:51
at withIndent (/Users/lonedone/.nvm/versions/node/v12.13.1/lib/node_modules/javascript-obfuscator/node_modules/escodegen/escodegen.js:576:9)
at CodeGenerator.BlockStatement (/Users/lonedone/.nvm/versions/node/v12.13.1/lib/node_modules/javascript-obfuscator/node_modules/escodegen/escodegen.js:1025:13)
Minimal working example that will help to reproduce issue
const req = {
foo: 'foo_str',
bar: 'bar_str',
};
const { ...fields } = req;
console.log(fields);
Reactions are currently unavailable
Activity
sanex3339 commentedon May 21, 2020
This is a bug in
escodegenIf you changes it to
it will work
sanex3339 commentedon May 30, 2020
I created PR with fix some time ago. Please ping this PR
estools/escodegen#408
lonedone commentedon May 30, 2020
thx, just mailed maintainer.
sanex3339 commentedon Jun 4, 2020
Expect the release in an hour or so.
Fixed error during code generation for `ObjectPattern` with single `R…
sanex3339 commentedon Jun 4, 2020
Fixed and released as
0.28.5