mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
Optimised convertCodeToStructure method
This commit is contained in:
+13
-18
@@ -13,22 +13,18 @@ import { NodeMetadata } from './NodeMetadata';
|
||||
|
||||
export class NodeUtils {
|
||||
/**
|
||||
* @param {T} astTree
|
||||
* @param {T} node
|
||||
* @returns {T}
|
||||
*/
|
||||
public static addXVerbatimPropertyToLiterals <T extends ESTree.Node = ESTree.Node> (astTree: T): T {
|
||||
estraverse.replace(astTree, {
|
||||
leave: (node: ESTree.Node) => {
|
||||
if (NodeGuards.isLiteralNode(node)) {
|
||||
node['x-verbatim-property'] = {
|
||||
content: node.raw,
|
||||
precedence: escodegen.Precedence.Primary
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
public static addXVerbatimPropertyToLiteralNode <T extends ESTree.Node = ESTree.Node> (node: T): T {
|
||||
if (NodeGuards.isLiteralNode(node)) {
|
||||
node['x-verbatim-property'] = {
|
||||
content: node.raw,
|
||||
precedence: escodegen.Precedence.Primary
|
||||
};
|
||||
}
|
||||
|
||||
return astTree;
|
||||
return node;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -44,13 +40,12 @@ export class NodeUtils {
|
||||
* @returns {Statement[]}
|
||||
*/
|
||||
public static convertCodeToStructure (code: string): ESTree.Statement[] {
|
||||
let structure: ESTree.Program = espree.parse(code, { sourceType: 'script' });
|
||||
|
||||
structure = NodeUtils.addXVerbatimPropertyToLiterals(structure);
|
||||
structure = NodeUtils.parentize(structure);
|
||||
const structure: ESTree.Program = espree.parse(code, { sourceType: 'script' });
|
||||
|
||||
estraverse.replace(structure, {
|
||||
enter: (node: ESTree.Node): ESTree.Node => {
|
||||
enter: (node: ESTree.Node, parentNode: ESTree.Node | null): ESTree.Node => {
|
||||
NodeUtils.parentizeNode(node, parentNode);
|
||||
NodeUtils.addXVerbatimPropertyToLiteralNode(node);
|
||||
NodeMetadata.set(node, { ignoredNode: false });
|
||||
|
||||
return node;
|
||||
|
||||
Reference in New Issue
Block a user