mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
This commit is contained in:
@@ -55,9 +55,26 @@ export class FunctionTransformer extends AbstractNodeTransformer {
|
||||
|
||||
/**
|
||||
* @param {Node} node
|
||||
* @param {Node} parentNode
|
||||
* @returns {boolean}
|
||||
*/
|
||||
private static isProhibitedPropertyNode (node: ESTree.Node): node is ESTree.Property & {key: ESTree.Identifier} {
|
||||
private static isProhibitedIdentifierOfPropertyNode (
|
||||
node: ESTree.Node,
|
||||
parentNode: ESTree.Node | null
|
||||
): node is ESTree.Identifier {
|
||||
return NodeGuards.isIdentifierNode(node)
|
||||
&& !!parentNode
|
||||
&& NodeGuards.isPropertyNode(parentNode)
|
||||
&& parentNode.key === node;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Node} node
|
||||
* @returns {boolean}
|
||||
*/
|
||||
private static isProhibitedIdentifierOfShorthandPropertyNode (
|
||||
node: ESTree.Node,
|
||||
): node is ESTree.Property & {key: ESTree.Identifier} {
|
||||
return NodeGuards.isPropertyNode(node)
|
||||
&& node.shorthand
|
||||
&& NodeGuards.isIdentifierNode(node.key);
|
||||
@@ -109,9 +126,11 @@ export class FunctionTransformer extends AbstractNodeTransformer {
|
||||
functionNode.params
|
||||
.forEach((paramsNode: ESTree.Node) => {
|
||||
estraverse.traverse(paramsNode, {
|
||||
enter: (node: ESTree.Node): estraverse.VisitorOption | void => {
|
||||
if (FunctionTransformer.isProhibitedPropertyNode(node)) {
|
||||
return estraverse.VisitorOption.Skip;
|
||||
enter: (node: ESTree.Node, parentNode: ESTree.Node | null): estraverse.VisitorOption | void => {
|
||||
// Should check with identifier as first argument,
|
||||
// because prohibited identifier can be easily ignored
|
||||
if (FunctionTransformer.isProhibitedIdentifierOfPropertyNode(node, parentNode)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (NodeGuards.isAssignmentPatternNode(node) && NodeGuards.isIdentifierNode(node.left)) {
|
||||
@@ -150,10 +169,12 @@ export class FunctionTransformer extends AbstractNodeTransformer {
|
||||
}
|
||||
|
||||
/**
|
||||
* Should to ignore all identifiers that related to shorthand properties
|
||||
* Should ignore all shorthand `key` identifiers of the `PropertyNode`
|
||||
*/
|
||||
if (FunctionTransformer.isProhibitedPropertyNode(node)) {
|
||||
if (FunctionTransformer.isProhibitedIdentifierOfShorthandPropertyNode(node)) {
|
||||
ignoredIdentifierNamesSet.add(node.key.name);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (
|
||||
|
||||
Reference in New Issue
Block a user