Browse Source

Merge pull request #706 from javascript-obfuscator/acorn-8-update

Acorn@8 version update + fixed ScopeIdentifiersTransformer logic
Timofey Kachalov 4 năm trước cách đây
mục cha
commit
85e8e6c852

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/index.browser.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/index.cli.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/index.js


+ 3 - 3
package.json

@@ -23,7 +23,7 @@
   "dependencies": {
     "@gradecam/tsenum": "1.2.0",
     "@nuxtjs/opencollective": "0.2.2",
-    "acorn": "7.4.0",
+    "acorn": "8.0.1",
     "chalk": "4.1.0",
     "chance": "1.1.6",
     "class-validator": "0.12.2",
@@ -55,7 +55,7 @@
     "@types/estree": "0.0.44",
     "@types/md5": "2.2.0",
     "@types/mkdirp": "1.0.1",
-    "@types/mocha": "8.0.1",
+    "@types/mocha": "8.0.2",
     "@types/multimatch": "4.0.0",
     "@types/node": "14.0.27",
     "@types/rimraf": "3.0.0",
@@ -68,7 +68,7 @@
     "coveralls": "3.1.0",
     "eslint": "7.6.0",
     "eslint-plugin-import": "2.22.0",
-    "eslint-plugin-jsdoc": "30.2.1",
+    "eslint-plugin-jsdoc": "30.2.2",
     "eslint-plugin-no-null": "1.0.2",
     "eslint-plugin-prefer-arrow": "1.2.2",
     "eslint-plugin-unicorn": "21.0.0",

+ 26 - 9
src/node-transformers/obfuscating-transformers/ScopeIdentifiersTransformer.ts

@@ -194,6 +194,7 @@ export class ScopeIdentifiersTransformer extends AbstractNodeTransformer {
      * @param {Variable} variable
      * @returns {boolean}
      */
+    // eslint-disable-next-line complexity
     private isReplaceableIdentifierNode (
         identifierNode: ESTree.Identifier,
         lexicalScopeNode: TNodeWithLexicalScope,
@@ -203,7 +204,8 @@ export class ScopeIdentifiersTransformer extends AbstractNodeTransformer {
 
         return !!parentNode
             && !NodeMetadata.isIgnoredNode(identifierNode)
-            && !this.isProhibitedPropertyNode(identifierNode, parentNode)
+            && !this.isProhibitedPropertyIdentifierNode(identifierNode, parentNode)
+            && !this.isProhibitedPropertyAssignmentPatternIdentifierNode(identifierNode, parentNode)
             && !this.isProhibitedClassDeclarationNameIdentifierNode(variable, identifierNode, parentNode)
             && !this.isProhibitedExportNamedClassDeclarationIdentifierNode(identifierNode, parentNode)
             && !this.isProhibitedExportNamedFunctionDeclarationIdentifierNode(identifierNode, parentNode)
@@ -291,18 +293,33 @@ export class ScopeIdentifiersTransformer extends AbstractNodeTransformer {
      * @param {Node} parentNode
      * @returns {boolean}
      */
-    private isProhibitedPropertyNode (node: ESTree.Node, parentNode: ESTree.Node): node is ESTree.Identifier {
-        const isProhibitedPropertyIdentifier = NodeGuards.isPropertyNode(parentNode)
+    private isProhibitedPropertyIdentifierNode (
+        node: ESTree.Node,
+        parentNode: ESTree.Node
+    ): node is ESTree.Identifier {
+        return NodeGuards.isPropertyNode(parentNode)
             && !parentNode.computed
-            && parentNode.key === node;
-        const isProhibitedPropertyAssignmentPatternIdentifier = NodeGuards.isAssignmentPatternNode(parentNode)
+            && NodeGuards.isIdentifierNode(parentNode.key)
+            && NodeGuards.isIdentifierNode(node)
+            && parentNode.key.name === node.name;
+    }
+
+    /**
+     * @param {Node} node
+     * @param {Node} parentNode
+     * @returns {boolean}
+     */
+    private isProhibitedPropertyAssignmentPatternIdentifierNode (
+        node: ESTree.Node,
+        parentNode: ESTree.Node
+    ): node is ESTree.Identifier {
+        return NodeGuards.isAssignmentPatternNode(parentNode)
             && parentNode.left === node
             && !!parentNode.parentNode
             && NodeGuards.isPropertyNode(parentNode.parentNode)
-            && parentNode.left === parentNode.parentNode.key;
-
-        return isProhibitedPropertyIdentifier
-            || isProhibitedPropertyAssignmentPatternIdentifier;
+            && NodeGuards.isIdentifierNode(parentNode.left)
+            && NodeGuards.isIdentifierNode(parentNode.parentNode.key)
+            && parentNode.left.name === parentNode.parentNode.key.name;
     }
 
     /**

+ 12 - 12
yarn.lock

@@ -366,10 +366,10 @@
   dependencies:
     "@types/node" "*"
 
-"@types/[email protected].1":
-  version "8.0.1"
-  resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.0.1.tgz#813b4ff8dd9920d652e1e6b451ff1e371a4561d2"
-  integrity sha512-TBZ6YdX7IZz4U9/mBoB8zCMRN1vXw8QdihRcZxD3I0Cv/r8XF8RggZ8WiXFws4aj5atzRR5hJrYer7g8nXwpnQ==
+"@types/[email protected].2":
+  version "8.0.2"
+  resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.0.2.tgz#cdd160767c5a445bedef94ea8cfc8ab760fff42b"
+  integrity sha512-5cv8rmqT3KX9XtWDvSgGYfS4OwrKM2eei90GWLnTYz+AXRiBv5uYcKBjnkQ4katNvfYk3+o2bHGZUsDhdcoUyg==
 
 "@types/[email protected]":
   version "4.0.0"
@@ -653,10 +653,10 @@ acorn-jsx@^5.2.0:
   resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe"
   integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==
 
-acorn@7.4.0:
-  version "7.4.0"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c"
-  integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==
+acorn@8.0.1:
+  version "8.0.1"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.0.1.tgz#d7e8eca9b71d5840db0e7e415b3b2b20e250f938"
+  integrity sha512-dmKn4pqZ29iQl2Pvze1zTrps2luvls2PBY//neO2WJ0s10B3AxJXshN+Ph7B4GrhfGhHXrl4dnUwyNNXQcnWGQ==
 
 acorn@^6.4.1:
   version "6.4.1"
@@ -1971,10 +1971,10 @@ [email protected]:
     resolve "^1.17.0"
     tsconfig-paths "^3.9.0"
 
[email protected].1:
-  version "30.2.1"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-30.2.1.tgz#6cac1a70ec239b4672888193d8a4e084a7e2d7bf"
-  integrity sha512-9Nx+BKMBoCTDRIbVpMV4MYfw+lvfnfsWTWYX9vwRRZrkXBpZkKtE3dsFcG6MhF7N/vW1cwpjEnoAIAtn0+a6gw==
[email protected].2:
+  version "30.2.2"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-30.2.2.tgz#f554a172c54b0e5514af03f1300af495670bea16"
+  integrity sha512-588zVyRy+g7s8VU3D0AL75r7xBYN0UX6tZEwP5EQ4JvpVavwu2iPJRaBxwuG3QAj99WZkUBlrLU16p4qST6vSw==
   dependencies:
     comment-parser "^0.7.5"
     debug "^4.1.1"

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác