mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
Added new utils method getRootStatementOfNode
This commit is contained in:
@@ -93,6 +93,28 @@ export class NodeUtils {
|
||||
return NodeUtils.getSiblingStatementByOffset(statement, -1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Node} node
|
||||
* @returns {Statement}
|
||||
*/
|
||||
public static getRootStatementOfNode (node: ESTree.Node): ESTree.Statement {
|
||||
if (NodeGuards.isProgramNode(node)) {
|
||||
throw new Error('Unable to find root statement for `Program` node');
|
||||
}
|
||||
|
||||
const parentNode: ESTree.Node | undefined = node.parentNode;
|
||||
|
||||
if (!parentNode) {
|
||||
throw new ReferenceError('`parentNode` property of given node is `undefined`');
|
||||
}
|
||||
|
||||
if (!NodeGuards.isNodeHasScope(parentNode)) {
|
||||
return NodeUtils.getRootStatementOfNode(parentNode);
|
||||
}
|
||||
|
||||
return <ESTree.Statement>node;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {NodeGuards} node
|
||||
* @returns {TNodeWithScope}
|
||||
|
||||
Reference in New Issue
Block a user