* The splitStrings option now correctly works with transformObjectKeys option

* Internal `TransformersRunner` rework to support topological sort of node transformers
This commit is contained in:
sanex3339
2019-12-30 19:46:49 +03:00
parent 4a1361c86d
commit c313802011
20 changed files with 491 additions and 40 deletions
+4 -6
View File
@@ -6,18 +6,16 @@ import { NO_ADDITIONAL_NODES_PRESET } from '../../src/options/presets/NoCustomNo
let obfuscatedCode: string = JavaScriptObfuscator.obfuscate(
`
function hi() {
console.log("Hello World!");
}
hi();
var s = {
'abcdefg': 'abcdefg'
};
`,
{
...NO_ADDITIONAL_NODES_PRESET,
compact: false,
splitStrings: true,
splitStringsChunkLength: 4,
controlFlowFlattening: true,
controlFlowFlatteningThreshold: 1
transformObjectKeys: true
}
).getObfuscatedCode();
@@ -162,4 +162,25 @@ describe('SplitStringTransformer', () => {
assert.match(obfuscatedCode, /^var *test *= *{\['ab' *\+ *'cd' *\+ *'ef' *\+ *'g'] *: *0x1};$/);
});
});
describe('Variant #10: Integration with `transformObjectKeys` option', () => {
it('should correctly transform string when `transformObjectKeys` option is enabled', () => {
const code: string = readFileAsString(__dirname + '/fixtures/object-string-literal.js');
obfuscatedCode = JavaScriptObfuscator.obfuscate(
code,
{
...NO_ADDITIONAL_NODES_PRESET,
splitStrings: true,
splitStringsChunkLength: 2,
transformObjectKeys: true
}
).getObfuscatedCode();
assert.match(
obfuscatedCode,
/^var *test *= *{}; *test\['ab' *\+ *'cd' *\+ *'ef' *\+ *'g'] *= *'ab' *\+ *'cd' *\+ *'ef' *\+ *'g';$/
);
});
});
});