UNPKG

shift-interpreter

Version:

Shift-interpreter is an experimental JavaScript meta-interpreter useful for reverse engineering and analysis. One notable difference from other projects is that shift-interpreter retains state over an entire script but can be fed expressions and statement

72 lines (71 loc) 4.23 kB
import { ArrayExpression, ArrowExpression, AssignmentExpression, BinaryExpression, Block, BlockStatement, CallExpression, ClassDeclaration, CompoundAssignmentExpression, ComputedMemberExpression, ConditionalExpression, DoWhileStatement, ExpressionStatement, ForInStatement, ForOfStatement, ForStatement, FunctionBody, FunctionDeclaration, FunctionExpression, IdentifierExpression, IfStatement, LiteralBooleanExpression, LiteralInfinityExpression, LiteralNullExpression, LiteralNumericExpression, LiteralRegExpExpression, LiteralStringExpression, NewExpression, ObjectExpression, ReturnStatement, Script, StaticMemberExpression, TemplateExpression, ThisExpression, ThrowStatement, TryCatchStatement, TryFinallyStatement, UnaryExpression, UpdateExpression, VariableDeclarationStatement, VariableDeclarator, WhileStatement } from 'shift-ast'; import { Interpreter } from './interpreter'; export interface DynamicClass { [key: string]: any; } export declare class NodeHandler { interpreter: Interpreter; constructor(interpreter: Interpreter); ReturnStatement(stmt: ReturnStatement): any; ExpressionStatement(stmt: ExpressionStatement): any; VariableDeclarationStatement(stmt: VariableDeclarationStatement): void; VariableDeclarator(declarator: VariableDeclarator): void; FunctionDeclaration(decl: FunctionDeclaration): void; BlockStatement(stmt: BlockStatement): any; ClassDeclaration(decl: ClassDeclaration): DynamicClass; IfStatement(stmt: IfStatement): any; ConditionalExpression(stmt: ConditionalExpression): any; ThrowStatement(stmt: ThrowStatement): void; TryCatchStatement(stmt: TryCatchStatement): any; TryFinallyStatement(stmt: TryFinallyStatement): any; Block(block: Block): any; FunctionBody(body: FunctionBody): any; Script(body: Script): any; loopBlock(stmt: ForOfStatement | ForInStatement | ForStatement | WhileStatement | DoWhileStatement): void; ForOfStatement(stmt: ForOfStatement): void; ForInStatement(stmt: ForInStatement): void; ForStatement(stmt: ForStatement): void; WhileStatement(stmt: WhileStatement): void; DoWhileStatement(stmt: DoWhileStatement): void; ThisExpression(expr: ThisExpression): Record<string, any>; NewExpression(expr: NewExpression): any; ArrayExpression(expr: ArrayExpression): any[]; ObjectExpression(expr: ObjectExpression): { [key: string]: any; }; StaticMemberExpression(expr: StaticMemberExpression): any; ComputedMemberExpression(expr: ComputedMemberExpression): any; CallExpression(expr: CallExpression): any; AssignmentExpression(expr: AssignmentExpression): any; UpdateExpression(expr: UpdateExpression): any; CompoundAssignmentExpression(expr: CompoundAssignmentExpression): any; LiteralRegExpExpression(expr: LiteralRegExpExpression): RegExp; TemplateExpression(expr: TemplateExpression): string; ArrowExpression(expr: ArrowExpression): (...args: any) => any; FunctionExpression(expr: FunctionExpression): ((this: any, ...args: any) => any) & { _interp: boolean; }; IdentifierExpression(expr: IdentifierExpression): any; LiteralNumericExpression(expr: LiteralNumericExpression): number; LiteralStringExpression(expr: LiteralStringExpression): string; LiteralBooleanExpression(expr: LiteralBooleanExpression): boolean; LiteralInfinityExpression(expr?: LiteralInfinityExpression): number; LiteralNullExpression(expr?: LiteralNullExpression): null; BinaryExpression(expr: BinaryExpression): any; UnaryExpression(expr: UnaryExpression): any; BreakStatement(...args: any): void; ContinueStatement(...args: any): void; DebuggerStatement(...args: any): void; EmptyStatement(...args: any): void; WithStatement(...args: any): void; SwitchStatementWithDefault(...args: any): void; SwitchStatement(...args: any): void; LabeledStatement(...args: any): void; ForAwaitStatement(...args: any): void; NewTargetExpression(...args: any): void; AwaitExpression(...args: any): void; Super(...args: any): void; ClassExpression(...args: any): void; YieldExpression(...args: any): void; YieldGeneratorExpression(...args: any): void; }