mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
Speedup ObjectExpressionKeysTransformer.ts (#1331)
This commit is contained in:
@@ -1,5 +1,11 @@
|
||||
Change Log
|
||||
|
||||
v4.1.2
|
||||
---
|
||||
* Fix `transformObjectKeys` performance in some edge-cases
|
||||
* Update `class-validator` version. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1324
|
||||
* Update other dependencies
|
||||
|
||||
v4.1.1
|
||||
---
|
||||
* Update supported Node.js versions up to `node@22`. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/pull/1100
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "javascript-obfuscator",
|
||||
"version": "4.1.1",
|
||||
"version": "4.1.2",
|
||||
"description": "JavaScript obfuscator",
|
||||
"keywords": [
|
||||
"obfuscator",
|
||||
@@ -27,7 +27,7 @@
|
||||
"assert": "2.1.0",
|
||||
"chalk": "4.1.2",
|
||||
"chance": "1.1.13",
|
||||
"class-validator": "0.14.2",
|
||||
"class-validator": "0.14.3",
|
||||
"commander": "12.1.0",
|
||||
"eslint-scope": "8.4.0",
|
||||
"eslint-visitor-keys": "4.2.1",
|
||||
|
||||
@@ -102,7 +102,7 @@ export class ObjectExpressionKeysTransformer extends AbstractNodeTransformer {
|
||||
objectExpressionNode: ESTree.ObjectExpression,
|
||||
objectExpressionHostNode: ESTree.Node,
|
||||
): boolean {
|
||||
const identifierNamesSet: string[] = [];
|
||||
const identifierNamesSet: Set<string> = new Set();
|
||||
|
||||
let isReferencedIdentifierName: boolean = false;
|
||||
let isCurrentNode: boolean = false;
|
||||
@@ -119,17 +119,19 @@ export class ObjectExpressionKeysTransformer extends AbstractNodeTransformer {
|
||||
}
|
||||
|
||||
if (!isCurrentNode) {
|
||||
identifierNamesSet.push(ObjectExpressionKeysTransformer.getReferencedIdentifierName(node));
|
||||
identifierNamesSet.add(ObjectExpressionKeysTransformer.getReferencedIdentifierName(node));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
const hasReferencedIdentifierName: boolean = identifierNamesSet.includes(
|
||||
const hasReferencedIdentifierName: boolean = identifierNamesSet.has(
|
||||
ObjectExpressionKeysTransformer.getReferencedIdentifierName(node)
|
||||
);
|
||||
|
||||
if (hasReferencedIdentifierName) {
|
||||
isReferencedIdentifierName = true;
|
||||
|
||||
return estraverse.VisitorOption.Break;
|
||||
}
|
||||
},
|
||||
leave: (node: ESTree.Node): void | estraverse.VisitorOption => {
|
||||
|
||||
+5
-1
@@ -128,7 +128,11 @@ export class BasePropertiesExtractor implements IObjectExpressionExtractor {
|
||||
|
||||
this.filterExtractedObjectExpressionProperties(objectExpressionNode, removablePropertyIds);
|
||||
NodeAppender.insertAfter(hostNodeWithStatements, expressionStatements, hostStatement);
|
||||
NodeUtils.parentizeAst(hostNodeWithStatements);
|
||||
// Only parentize the newly inserted statements, not the entire scope
|
||||
expressionStatements.forEach((statement) => {
|
||||
NodeUtils.parentizeAst(statement);
|
||||
NodeUtils.parentizeNode(statement, hostNodeWithStatements);
|
||||
});
|
||||
|
||||
return {
|
||||
nodeToReplace: objectExpressionNode,
|
||||
|
||||
@@ -749,10 +749,10 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/string-template/-/string-template-1.0.7.tgz#593fd97fd7515ae6eba80a142738daadc961c895"
|
||||
integrity sha512-sQWEsTbB0pKCc1eAC9mwTKftyXuWfSZVfDTskhlQLE/xTtuevqOlFG/t4Djf/VFbRdt7PROaovoqpWfZWhMRfA==
|
||||
|
||||
"@types/validator@^13.11.8":
|
||||
version "13.15.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.15.4.tgz#38a97ae54747416f745afdfc678f041713082635"
|
||||
integrity sha512-LSFfpSnJJY9wbC0LQxgvfb+ynbHftFo0tMsFOl/J4wexLnYMmDSPaj2ZyDv3TkfL1UePxPrxOWJfbiRS8mQv7A==
|
||||
"@types/validator@^13.15.3":
|
||||
version "13.15.10"
|
||||
resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.15.10.tgz#742b77ec34d58554b94a76a14cef30d59e3c16b9"
|
||||
integrity sha512-T8L6i7wCuyoK8A/ZeLYt1+q0ty3Zb9+qbSSvrIVitzT3YjZqkTZ40IbRsPanlB4h1QB3JVL1SYCdR6ngtFYcuA==
|
||||
|
||||
"@types/webpack-env@1.18.8":
|
||||
version "1.18.8"
|
||||
@@ -1520,14 +1520,14 @@ ci-info@^4.0.0:
|
||||
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.3.1.tgz#355ad571920810b5623e11d40232f443f16f1daa"
|
||||
integrity sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==
|
||||
|
||||
class-validator@0.14.2:
|
||||
version "0.14.2"
|
||||
resolved "https://registry.yarnpkg.com/class-validator/-/class-validator-0.14.2.tgz#a3de95edd26b703e89c151a2023d3c115030340d"
|
||||
integrity sha512-3kMVRF2io8N8pY1IFIXlho9r8IPUUIfHe2hYVtiebvAzU2XeQFXTv+XI4WX+TnXmtwXMDcjngcpkiPM0O9PvLw==
|
||||
class-validator@0.14.3:
|
||||
version "0.14.3"
|
||||
resolved "https://registry.yarnpkg.com/class-validator/-/class-validator-0.14.3.tgz#834a4caafa8359aed73d7708badb4cf271be50fe"
|
||||
integrity sha512-rXXekcjofVN1LTOSw+u4u9WXVEUvNBVjORW154q/IdmYWy1nMbOU9aNtZB0t8m+FJQ9q91jlr2f9CwwUFdFMRA==
|
||||
dependencies:
|
||||
"@types/validator" "^13.11.8"
|
||||
"@types/validator" "^13.15.3"
|
||||
libphonenumber-js "^1.11.1"
|
||||
validator "^13.9.0"
|
||||
validator "^13.15.20"
|
||||
|
||||
clean-regexp@^1.0.0:
|
||||
version "1.0.0"
|
||||
@@ -5333,10 +5333,10 @@ validate-npm-package-license@^3.0.1:
|
||||
spdx-correct "^3.0.0"
|
||||
spdx-expression-parse "^3.0.0"
|
||||
|
||||
validator@^13.9.0:
|
||||
version "13.15.20"
|
||||
resolved "https://registry.yarnpkg.com/validator/-/validator-13.15.20.tgz#054e9238109538a1bf46ae3e1290845a64fa2186"
|
||||
integrity sha512-KxPOq3V2LmfQPP4eqf3Mq/zrT0Dqp2Vmx2Bn285LwVahLc+CsxOM0crBHczm8ijlcjZ0Q5Xd6LW3z3odTPnlrw==
|
||||
validator@^13.15.20:
|
||||
version "13.15.23"
|
||||
resolved "https://registry.yarnpkg.com/validator/-/validator-13.15.23.tgz#59a874f84e4594588e3409ab1edbe64e96d0c62d"
|
||||
integrity sha512-4yoz1kEWqUjzi5zsPbAS/903QXSYp0UOtHsPpp7p9rHAw/W+dkInskAE386Fat3oKRROwO98d9ZB0G4cObgUyw==
|
||||
|
||||
watchpack@^2.4.4:
|
||||
version "2.4.4"
|
||||
|
||||
Reference in New Issue
Block a user