mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
Added new types and interfaces for Nodes, tests fixes
This commit is contained in:
+2
-1
@@ -3,6 +3,7 @@ import * as estraverse from 'estraverse';
|
||||
import { INode } from './interfaces/nodes/INode';
|
||||
|
||||
import { TNodeWithBlockStatement } from "./types/TNodeWithBlockStatement";
|
||||
import { TStatement } from "./types/TStatement";
|
||||
|
||||
import { NodeType } from "./enums/NodeType";
|
||||
|
||||
@@ -116,7 +117,7 @@ export class NodeUtils {
|
||||
Object.defineProperty(node, 'parentNode', {
|
||||
configurable: true,
|
||||
enumerable: true,
|
||||
value: isRootNode ? Nodes.getProgramNode([node]) : parentNode || node,
|
||||
value: isRootNode ? Nodes.getProgramNode(<TStatement[]>[node]) : parentNode || node,
|
||||
writable: true
|
||||
});
|
||||
|
||||
|
||||
+3
-1
@@ -7,6 +7,8 @@ import { IProgramNode } from "./interfaces/nodes/IProgramNode";
|
||||
import { IPropertyNode } from "./interfaces/nodes/IPropertyNode";
|
||||
import { IVariableDeclaratorNode } from "./interfaces/nodes/IVariableDeclaratorNode";
|
||||
|
||||
import { TStatement } from "./types/TStatement";
|
||||
|
||||
import { TNodeWithBlockStatement } from "./types/TNodeWithBlockStatement";
|
||||
|
||||
import { NodeType } from "./enums/NodeType";
|
||||
@@ -16,7 +18,7 @@ export class Nodes {
|
||||
* @param bodyNode
|
||||
* @returns IProgramNode
|
||||
*/
|
||||
public static getProgramNode (bodyNode: INode[]): IProgramNode {
|
||||
public static getProgramNode (bodyNode: TStatement[]): IProgramNode {
|
||||
return {
|
||||
'type': NodeType.Program,
|
||||
'body': bodyNode
|
||||
|
||||
+3
-1
@@ -1,5 +1,7 @@
|
||||
import { TStatement } from "../../types/TStatement";
|
||||
|
||||
import { INode } from "./INode";
|
||||
|
||||
export interface IBlockStatementNode extends INode {
|
||||
body: INode[];
|
||||
body: TStatement[];
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
import { TExpression } from "../../types/TExpression";
|
||||
|
||||
import { INode } from "./INode";
|
||||
import { ISpreadElementNode } from "./ISpreadElementNode";
|
||||
|
||||
export interface ICallExpressionNode extends INode {
|
||||
callee: TExpression;
|
||||
arguments: TExpression[] | ISpreadElementNode[];
|
||||
}
|
||||
+3
-1
@@ -1,5 +1,7 @@
|
||||
import { TExpression } from "../../types/TExpression";
|
||||
|
||||
import { INode } from "./INode";
|
||||
|
||||
export interface IExpressionStatementNode extends INode {
|
||||
expression: any;
|
||||
expression: TExpression;
|
||||
}
|
||||
|
||||
+3
@@ -1,3 +1,5 @@
|
||||
import { TExpression } from "../../types/TExpression";
|
||||
|
||||
import { IBlockStatementNode } from "./IBlockStatementNode";
|
||||
import { IIdentifierNode } from "./IIdentifierNode";
|
||||
import { INode } from "./INode";
|
||||
@@ -5,6 +7,7 @@ import { INode } from "./INode";
|
||||
export interface IFunctionNode extends INode {
|
||||
id: IIdentifierNode;
|
||||
params: IIdentifierNode[];
|
||||
defaults?: TExpression[];
|
||||
body: IBlockStatementNode;
|
||||
generator: boolean;
|
||||
expression: boolean;
|
||||
|
||||
+1
-1
@@ -3,5 +3,5 @@ import { INode } from "./INode";
|
||||
export interface ILiteralNode extends INode {
|
||||
value: boolean|number|string;
|
||||
raw: string;
|
||||
'x-verbatim-property': any;
|
||||
'x-verbatim-property'?: any;
|
||||
}
|
||||
|
||||
+3
-1
@@ -1,5 +1,7 @@
|
||||
import { TStatement } from "../../types/TStatement";
|
||||
|
||||
import { INode } from "./INode";
|
||||
|
||||
export interface IProgramNode extends INode {
|
||||
body: INode[];
|
||||
body: TStatement[];
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
import { TExpression } from "../../types/TExpression";
|
||||
|
||||
import { INode } from "./INode";
|
||||
|
||||
export interface ISpreadElementNode extends INode {
|
||||
argument: TExpression;
|
||||
}
|
||||
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
import { IArrowFunctionExpressionNode } from "../interfaces/nodes/IArrowFunctionExpressionNode";
|
||||
import { ICallExpressionNode } from "../interfaces/nodes/ICallExpressionNode";
|
||||
import { IFunctionExpressionNode } from "../interfaces/nodes/IFunctionExpressionNode";
|
||||
import { IIdentifierNode } from "../interfaces/nodes/IIdentifierNode";
|
||||
import { ILiteralNode } from "../interfaces/nodes/ILiteralNode";
|
||||
import { IMemberExpressionNode } from "../interfaces/nodes/IMemberExpressionNode";
|
||||
import { INode } from "../interfaces/nodes/INode";
|
||||
|
||||
export type TExpression = INode & (IArrowFunctionExpressionNode | ICallExpressionNode | IFunctionExpressionNode |
|
||||
IIdentifierNode | ILiteralNode | IMemberExpressionNode);
|
||||
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
import { IExpressionStatementNode } from "../interfaces/nodes/IExpressionStatementNode";
|
||||
import { IFunctionDeclarationNode } from "../interfaces/nodes/IFunctionDeclarationNode";
|
||||
import { IIfStatementNode } from "../interfaces/nodes/IIfStatementNode";
|
||||
import { INode } from "../interfaces/nodes/INode";
|
||||
import { IVariableDeclarationNode } from "../interfaces/nodes/IVariableDeclarationNode";
|
||||
|
||||
export type TStatement = INode & (IExpressionStatementNode | IFunctionDeclarationNode | IIfStatementNode |
|
||||
IVariableDeclarationNode);
|
||||
Reference in New Issue
Block a user