js-confuser
js-confuser copied to clipboard
Delete operation fails
Describe the bug:
Deleting a property does not succeed in removing a property
Config and Small code sample
Config:
{
target: 'browser',
calculator: false,
compact: true,
hexadecimalNumbers: true,
controlFlowFlattening: 0.05,
deadCode: 0.01,
dispatcher: 0.1,
duplicateLiteralsRemoval: true,
identifierGenerator: "randomized",
minify: true,
movedDeclarations: true,
objectExtraction: true,
opaquePredicates: 0.1,
renameVariables: false,
renameGlobals: false,
stringConcealing: true,
globalConcealing: false
}
Code:
this code
const users = session.users,
user = session.user,
invitations = user.invitations,
dimensions = user.dimensions,
partners = user.partners,
id = form.id;
delete partners[name];
delete invitations[id];
delete users[id];
.... other code
is transformed to
const users = session[__p_7425670131__JS_PREDICT__(0x121)]
, user = session.user
, invitations = user.invitations
, dimensions = user.dimensions
, partners = user.partners
, id = form.id;
__p_4869811828(delete (delete partners[name],
invitations[id]), delete users[id], ... other code)
Expected behavior
the property name bound to 'id' should be deleted from invitations
Actual behavior
the property is not deleted
Additional context
I believe the transformation __p_4869811828(delete (delete partners[name], invitations[id]), delete users[id], ... other code) is incorrect and should be __p_4869811828(delete partners[name], delete invitations[id], delete users[id], ... other code)
This code works when transformed:
const users = session.users,
user = session.user,
invitations = user.invitations,
dimensions = user.dimensions,
partners = user.partners,
id = form.id;
delete partners[name];
[invitations,users].forEach(obj => delete obj[id]);