@ibyar/expressions 0.8.2-dev.20221008 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -3
- package/api/abstract.d.ts +6 -5
- package/api/abstract.js +15 -12
- package/api/abstract.js.map +1 -1
- package/api/class/class.d.ts +99 -60
- package/api/class/class.js +285 -233
- package/api/class/class.js.map +1 -1
- package/api/class/decorator.d.ts +2 -4
- package/api/class/decorator.js +6 -9
- package/api/class/decorator.js.map +1 -1
- package/api/computing/call.d.ts +2 -4
- package/api/computing/call.js +8 -11
- package/api/computing/call.js.map +1 -1
- package/api/computing/debugger.d.ts +1 -4
- package/api/computing/debugger.js +2 -5
- package/api/computing/debugger.js.map +1 -1
- package/api/computing/new.d.ts +2 -4
- package/api/computing/new.js +7 -10
- package/api/computing/new.js.map +1 -1
- package/api/computing/rest.d.ts +2 -4
- package/api/computing/rest.js +6 -9
- package/api/computing/rest.js.map +1 -1
- package/api/computing/return.d.ts +2 -4
- package/api/computing/return.js +6 -9
- package/api/computing/return.js.map +1 -1
- package/api/computing/spread.d.ts +2 -4
- package/api/computing/spread.js +6 -9
- package/api/computing/spread.js.map +1 -1
- package/api/computing/throw.d.ts +4 -8
- package/api/computing/throw.js +18 -23
- package/api/computing/throw.js.map +1 -1
- package/api/computing/yield.d.ts +2 -4
- package/api/computing/yield.js +7 -10
- package/api/computing/yield.js.map +1 -1
- package/api/definition/array.d.ts +3 -6
- package/api/definition/array.js +14 -18
- package/api/definition/array.js.map +1 -1
- package/api/definition/bind.d.ts +2 -3
- package/api/definition/bind.js +9 -10
- package/api/definition/bind.js.map +1 -1
- package/api/definition/comment.d.ts +3 -5
- package/api/definition/comment.js +6 -7
- package/api/definition/comment.js.map +1 -1
- package/api/definition/function.d.ts +20 -27
- package/api/definition/function.js +92 -110
- package/api/definition/function.js.map +1 -1
- package/api/definition/member.d.ts +2 -3
- package/api/definition/member.js +14 -11
- package/api/definition/member.js.map +1 -1
- package/api/definition/object.d.ts +5 -9
- package/api/definition/object.js +24 -30
- package/api/definition/object.js.map +1 -1
- package/api/definition/statement.d.ts +2 -4
- package/api/definition/statement.js +6 -9
- package/api/definition/statement.js.map +1 -1
- package/api/definition/values.d.ts +15 -40
- package/api/definition/values.js +49 -79
- package/api/definition/values.js.map +1 -1
- package/api/expression.d.ts +40 -26
- package/api/expression.js.map +1 -1
- package/api/index.d.ts +1 -0
- package/api/index.js +1 -0
- package/api/index.js.map +1 -1
- package/api/module/common.d.ts +4 -5
- package/api/module/common.js +12 -12
- package/api/module/common.js.map +1 -1
- package/api/module/export.d.ts +5 -10
- package/api/module/export.js +35 -38
- package/api/module/export.js.map +1 -1
- package/api/module/import.d.ts +6 -10
- package/api/module/import.js +28 -32
- package/api/module/import.js.map +1 -1
- package/api/operators/assignment.d.ts +3 -3
- package/api/operators/assignment.js +5 -5
- package/api/operators/assignment.js.map +1 -1
- package/api/operators/await.d.ts +3 -5
- package/api/operators/await.js +7 -10
- package/api/operators/await.js.map +1 -1
- package/api/operators/binary.d.ts +1 -1
- package/api/operators/binary.js +1 -1
- package/api/operators/binary.js.map +1 -1
- package/api/operators/chaining.d.ts +2 -3
- package/api/operators/chaining.js +6 -7
- package/api/operators/chaining.js.map +1 -1
- package/api/operators/comma.d.ts +2 -4
- package/api/operators/comma.js +6 -9
- package/api/operators/comma.js.map +1 -1
- package/api/operators/grouping.d.ts +2 -4
- package/api/operators/grouping.js +6 -9
- package/api/operators/grouping.js.map +1 -1
- package/api/operators/logical.d.ts +1 -1
- package/api/operators/logical.js +1 -1
- package/api/operators/logical.js.map +1 -1
- package/api/operators/pipeline.d.ts +2 -4
- package/api/operators/pipeline.js +8 -15
- package/api/operators/pipeline.js.map +1 -1
- package/api/operators/ternary.d.ts +2 -4
- package/api/operators/ternary.js +8 -13
- package/api/operators/ternary.js.map +1 -1
- package/api/operators/types.d.ts +1 -1
- package/api/operators/unary.d.ts +3 -5
- package/api/operators/unary.js +7 -10
- package/api/operators/unary.js.map +1 -1
- package/api/operators/update.d.ts +3 -5
- package/api/operators/update.js +8 -11
- package/api/operators/update.js.map +1 -1
- package/api/program.d.ts +3 -5
- package/api/program.js +7 -8
- package/api/program.js.map +1 -1
- package/api/statement/control/block.d.ts +2 -4
- package/api/statement/control/block.js +9 -14
- package/api/statement/control/block.js.map +1 -1
- package/api/statement/control/empty.d.ts +2 -5
- package/api/statement/control/empty.js +6 -8
- package/api/statement/control/empty.js.map +1 -1
- package/api/statement/control/if.d.ts +2 -4
- package/api/statement/control/if.js +8 -13
- package/api/statement/control/if.js.map +1 -1
- package/api/statement/control/switch.d.ts +4 -9
- package/api/statement/control/switch.js +19 -28
- package/api/statement/control/switch.js.map +1 -1
- package/api/statement/control/terminate.d.ts +4 -7
- package/api/statement/control/terminate.js +11 -19
- package/api/statement/control/terminate.js.map +1 -1
- package/api/statement/control/with.d.ts +21 -0
- package/api/statement/control/with.js +67 -0
- package/api/statement/control/with.js.map +1 -0
- package/api/statement/declarations/declares.d.ts +4 -7
- package/api/statement/declarations/declares.js +14 -20
- package/api/statement/declarations/declares.js.map +1 -1
- package/api/statement/iterations/for.d.ts +6 -11
- package/api/statement/iterations/for.js +35 -53
- package/api/statement/iterations/for.js.map +1 -1
- package/api/statement/iterations/while.d.ts +3 -6
- package/api/statement/iterations/while.js +14 -22
- package/api/statement/iterations/while.js.map +1 -1
- package/package.json +14 -4
- package/scope/finalizer.d.ts +1 -1
- package/scope/pool.d.ts +1 -1
- package/scope/proxy.d.ts +1 -1
- package/scope/proxy.js +1 -0
- package/scope/proxy.js.map +1 -1
- package/scope/scope.d.ts +8 -24
- package/scope/scope.js +25 -75
- package/scope/scope.js.map +1 -1
- package/scope/stack.d.ts +15 -3
- package/scope/stack.js +49 -32
- package/scope/stack.js.map +1 -1
- package/v8/enums.d.ts +4 -2
- package/v8/enums.js.map +1 -1
- package/v8/factory.d.ts +148 -0
- package/v8/factory.js +499 -0
- package/v8/factory.js.map +1 -0
- package/v8/inline.d.ts +50 -48
- package/v8/inline.js +322 -300
- package/v8/inline.js.map +1 -1
- package/v8/node.d.ts +141 -0
- package/v8/node.js +2 -0
- package/v8/node.js.map +1 -0
- package/v8/nodes.d.ts +0 -14
- package/v8/nodes.js +1 -152
- package/v8/nodes.js.map +1 -1
- package/v8/parser.d.ts +21 -18
- package/v8/parser.js +97 -84
- package/v8/parser.js.map +1 -1
- package/v8/stream.d.ts +2 -1
- package/v8/stream.js +221 -311
- package/v8/stream.js.map +1 -1
- package/v8/token.d.ts +3 -1
- package/v8/token.js +7 -5
- package/v8/token.js.map +1 -1
- package/visit/visitor.d.ts +1 -1
package/v8/node.d.ts
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { AccessorProperty, ClassBody, ClassDeclaration, ClassExpression, MetaProperty, MethodDefinition, MethodDefinitionKind, PrivateIdentifier, PropertyDefinition, StaticBlock, Super } from '../api/class/class.js';
|
|
2
|
+
import { Decorator } from '../api/class/decorator.js';
|
|
3
|
+
import { CallExpression } from '../api/computing/call.js';
|
|
4
|
+
import { DebuggerStatement } from '../api/computing/debugger.js';
|
|
5
|
+
import { NewExpression } from '../api/computing/new.js';
|
|
6
|
+
import { RestElement } from '../api/computing/rest.js';
|
|
7
|
+
import { ReturnStatement } from '../api/computing/return.js';
|
|
8
|
+
import { SpreadElement } from '../api/computing/spread.js';
|
|
9
|
+
import { CatchClauseNode, ThrowStatement, TryCatchNode } from '../api/computing/throw.js';
|
|
10
|
+
import { YieldExpression } from '../api/computing/yield.js';
|
|
11
|
+
import { ArrayExpression, ArrayPattern } from '../api/definition/array.js';
|
|
12
|
+
import { BindExpression } from '../api/definition/bind.js';
|
|
13
|
+
import { ArrowFunctionExpression, AssignmentPattern, FunctionDeclaration, FunctionExpression } from '../api/definition/function.js';
|
|
14
|
+
import { MemberExpression } from '../api/definition/member.js';
|
|
15
|
+
import { ObjectExpression, ObjectPattern, Property } from '../api/definition/object.js';
|
|
16
|
+
import { Identifier, Literal, TaggedTemplateExpression, TemplateLiteral, ThisExpression } from '../api/definition/values.js';
|
|
17
|
+
import type { ExpressionNode, SourceLocation } from '../api/expression.js';
|
|
18
|
+
import { DeclarationExpression } from '../api/expression.js';
|
|
19
|
+
import { ImportAttribute } from '../api/module/common.js';
|
|
20
|
+
import { ExportAllDeclaration, ExportDefaultDeclaration, ExportNamedDeclaration, ExportSpecifier } from '../api/module/export.js';
|
|
21
|
+
import { ImportDeclaration, ImportDefaultSpecifier, ImportExpression, ImportNamespaceSpecifier, ImportSpecifier } from '../api/module/import.js';
|
|
22
|
+
import { AssignmentExpression, AssignmentOperator } from '../api/operators/assignment.js';
|
|
23
|
+
import { AwaitExpression } from '../api/operators/await.js';
|
|
24
|
+
import { BinaryExpression, BinaryOperator } from '../api/operators/binary.js';
|
|
25
|
+
import { ChainExpression } from '../api/operators/chaining.js';
|
|
26
|
+
import { SequenceExpression } from '../api/operators/comma.js';
|
|
27
|
+
import { GroupingExpression } from '../api/operators/grouping.js';
|
|
28
|
+
import { LogicalExpression, LogicalOperator } from '../api/operators/logical.js';
|
|
29
|
+
import { PipelineExpression } from '../api/operators/pipeline.js';
|
|
30
|
+
import { ConditionalExpression } from '../api/operators/ternary.js';
|
|
31
|
+
import { UnaryExpression, UnaryOperator } from '../api/operators/unary.js';
|
|
32
|
+
import { UpdateExpression, UpdateOperator } from '../api/operators/update.js';
|
|
33
|
+
import { Program, ProgramSourceType } from '../api/program.js';
|
|
34
|
+
import { BlockStatement } from '../api/statement/control/block.js';
|
|
35
|
+
import { EmptyStatement } from '../api/statement/control/empty.js';
|
|
36
|
+
import { IfStatement } from '../api/statement/control/if.js';
|
|
37
|
+
import { DefaultExpression, SwitchCase, SwitchStatement } from '../api/statement/control/switch.js';
|
|
38
|
+
import { BreakStatement, ContinueStatement, LabeledStatement } from '../api/statement/control/terminate.js';
|
|
39
|
+
import { WithStatement } from '../api/statement/control/with.js';
|
|
40
|
+
import { VariableDeclarationNode, VariableDeclarator } from '../api/statement/declarations/declares.js';
|
|
41
|
+
import { ForAwaitOfNode, ForDeclaration, ForInNode, ForNode, ForOfNode } from '../api/statement/iterations/for.js';
|
|
42
|
+
import { DoWhileNode, WhileNode } from '../api/statement/iterations/while.js';
|
|
43
|
+
export interface SourcePositionFactory {
|
|
44
|
+
createSourcePosition(range?: [number, number]): SourceLocation | undefined;
|
|
45
|
+
}
|
|
46
|
+
export interface NodeFactory {
|
|
47
|
+
createDebuggerStatement(range?: [number, number]): DebuggerStatement;
|
|
48
|
+
createSuper(range?: [number, number]): Super;
|
|
49
|
+
createThis(range?: [number, number]): ThisExpression;
|
|
50
|
+
createNull(range?: [number, number]): Literal<null>;
|
|
51
|
+
createTrue(range?: [number, number]): Literal<true>;
|
|
52
|
+
createFalse(range?: [number, number]): Literal<false>;
|
|
53
|
+
createVoidZero(argument: ExpressionNode, range?: [number, number]): UnaryExpression;
|
|
54
|
+
createEmptyStatement(range?: [number, number]): EmptyStatement;
|
|
55
|
+
createExpressionStatement(list: ExpressionNode[], range?: [number, number]): ExpressionNode;
|
|
56
|
+
createCatchClause(block: BlockStatement, identifier?: ExpressionNode, range?: [number, number]): CatchClauseNode;
|
|
57
|
+
createTryStatement(tryBlock: BlockStatement, catchBlock?: ExpressionNode, finallyBlock?: ExpressionNode, range?: [number, number]): TryCatchNode;
|
|
58
|
+
createThrowStatement(exception: ExpressionNode, range?: [number, number]): ThrowStatement;
|
|
59
|
+
createBlock(statements: ExpressionNode[], range?: [number, number]): BlockStatement;
|
|
60
|
+
createIfStatement(condition: ExpressionNode, thenStatement: ExpressionNode, elseStatement?: ExpressionNode, range?: [number, number]): IfStatement;
|
|
61
|
+
createDoStatement(condition: ExpressionNode, body: ExpressionNode, range?: [number, number]): DoWhileNode;
|
|
62
|
+
createClassDeclaration(body: ClassBody, decorators: Decorator[], id: Identifier, superClass?: ExpressionNode, range?: [number, number]): ClassDeclaration;
|
|
63
|
+
createFunctionDeclaration(formals: DeclarationExpression[], bodyBlock: BlockStatement, isAsync: boolean, isGenerator: boolean, name: Identifier, range?: [number, number]): FunctionDeclaration;
|
|
64
|
+
createFunctionExpression(formals: DeclarationExpression[], bodyBlock: BlockStatement, isAsync: boolean, isGenerator: boolean, range?: [number, number]): FunctionExpression;
|
|
65
|
+
createWhileStatement(condition: ExpressionNode, body: ExpressionNode, range?: [number, number]): WhileNode;
|
|
66
|
+
createSwitchStatement(tag: ExpressionNode, cases: SwitchCase[], range?: [number, number]): SwitchStatement;
|
|
67
|
+
createCaseBlock(test: ExpressionNode, block: BlockStatement, range?: [number, number]): SwitchCase;
|
|
68
|
+
createDefaultClause(block: BlockStatement, range?: [number, number]): DefaultExpression;
|
|
69
|
+
createWithStatement(object: ExpressionNode, body: ExpressionNode, range?: [number, number]): WithStatement;
|
|
70
|
+
createForStatement(body: ExpressionNode, initializer: ExpressionNode, cond: ExpressionNode, next: ExpressionNode, range?: [number, number]): ForNode;
|
|
71
|
+
createForOfStatement(initializer: ForDeclaration, enumerable: ExpressionNode, body: ExpressionNode, range?: [number, number]): ForOfNode;
|
|
72
|
+
createForAwaitOfStatement(left: ForDeclaration, right: ExpressionNode, body: ExpressionNode, range?: [number, number]): ForAwaitOfNode;
|
|
73
|
+
createForInStatement(initializer: ForDeclaration, enumerable: ExpressionNode, body: ExpressionNode, range?: [number, number]): ForInNode;
|
|
74
|
+
createVariableDeclaration(id: DeclarationExpression, init?: ExpressionNode, range?: [number, number]): VariableDeclarator;
|
|
75
|
+
createVariableStatement(variables: VariableDeclarator[], kind: 'let' | 'var' | 'const', range?: [number, number]): VariableDeclarationNode;
|
|
76
|
+
createContinueStatement(label?: Identifier, range?: [number, number]): ContinueStatement;
|
|
77
|
+
createBreakStatement(label?: Identifier, range?: [number, number]): BreakStatement;
|
|
78
|
+
createReturnStatement(argument?: ExpressionNode, range?: [number, number]): ReturnStatement;
|
|
79
|
+
createLabeledStatement(expression: Identifier, result: ExpressionNode, range?: [number, number]): LabeledStatement;
|
|
80
|
+
createAssignmentPattern(left: DeclarationExpression, right: ExpressionNode, range?: [number, number]): AssignmentPattern;
|
|
81
|
+
createSpreadElement(argument: ExpressionNode, range?: [number, number]): SpreadElement;
|
|
82
|
+
createCommaListExpression(expressions: ExpressionNode[], range?: [number, number]): SequenceExpression;
|
|
83
|
+
createTemplateExpression(quasis: string[], expressions: ExpressionNode[], range?: [number, number]): TemplateLiteral;
|
|
84
|
+
createTaggedTemplateExpression(tag: ExpressionNode, quasis: string[], expressions: ExpressionNode[], range?: [number, number]): TaggedTemplateExpression;
|
|
85
|
+
createNewExpression(className: ExpressionNode, parameters?: ExpressionNode[], range?: [number, number]): NewExpression;
|
|
86
|
+
createObjectBindingPattern(properties: (Property | RestElement)[], range?: [number, number]): ObjectPattern;
|
|
87
|
+
createObjectLiteralExpression(properties: Property[], range?: [number, number]): ObjectExpression;
|
|
88
|
+
createArrayBindingPattern(elements: (DeclarationExpression | null)[], range?: [number, number]): ArrayPattern;
|
|
89
|
+
createArrayLiteralExpression(elements: (ExpressionNode | SpreadElement | null)[], range?: [number, number]): ArrayExpression;
|
|
90
|
+
createAssignment(operator: AssignmentOperator, left: ExpressionNode, right: ExpressionNode, range?: [number, number]): AssignmentExpression;
|
|
91
|
+
createRestElement(argument: DeclarationExpression, range?: [number, number]): RestElement;
|
|
92
|
+
createArrowFunction(params: DeclarationExpression[], body: ExpressionNode | ExpressionNode[], expression: boolean, async: boolean, range?: [number, number]): ArrowFunctionExpression;
|
|
93
|
+
createPropertyDeclaration(key: ExpressionNode, value: DeclarationExpression | ExpressionNode, kind: 'init' | 'get' | 'set', method: boolean, shorthand: boolean, computed: boolean, range?: [number, number]): Property;
|
|
94
|
+
createIdentifier(name: string, range?: [number, number]): Identifier;
|
|
95
|
+
createPropertyAssignment(object: ExpressionNode, property: ExpressionNode, computed: boolean, optional?: boolean, range?: [number, number]): MemberExpression;
|
|
96
|
+
createPipelineExpression(left: ExpressionNode, right: ExpressionNode, params?: (ExpressionNode | '?' | '...?')[], range?: [number, number]): PipelineExpression;
|
|
97
|
+
createCallExpression(callee: ExpressionNode, params: ExpressionNode[], optional?: boolean, range?: [number, number]): CallExpression;
|
|
98
|
+
createBindExpression(object: ExpressionNode, property: ExpressionNode, computed: boolean, optional?: boolean, range?: [number, number]): BindExpression;
|
|
99
|
+
createChainExpression(expression: ExpressionNode, range?: [number, number]): ChainExpression;
|
|
100
|
+
createLogicalExpression(operator: LogicalOperator, left: ExpressionNode, right: ExpressionNode, range?: [number, number]): LogicalExpression;
|
|
101
|
+
createConditionalExpression(test: ExpressionNode, alternate: ExpressionNode, consequent: ExpressionNode, range?: [number, number]): ConditionalExpression;
|
|
102
|
+
createYieldExpression(delegate: boolean, argument?: ExpressionNode, range?: [number, number]): YieldExpression;
|
|
103
|
+
createMetaProperty(meta: Identifier, property: Identifier, range?: [number, number]): MetaProperty;
|
|
104
|
+
createProgram(sourceType: ProgramSourceType, body: ExpressionNode[], range?: [number, number]): Program;
|
|
105
|
+
createClassExpression(body: ClassBody, decorators: Decorator[], id?: Identifier, superClass?: ExpressionNode, range?: [number, number]): ClassExpression;
|
|
106
|
+
createClassStaticBlockDeclaration(body: ExpressionNode[], range?: [number, number]): StaticBlock;
|
|
107
|
+
createMethodSignature(kind: MethodDefinitionKind, key: ExpressionNode | PrivateIdentifier, value: FunctionExpression, decorators: Decorator[], computed: boolean, isStatic: boolean, range?: [number, number]): MethodDefinition;
|
|
108
|
+
createPropertySignature(key: ExpressionNode | PrivateIdentifier, decorators: Decorator[], computed: boolean, isStatic: boolean, value?: ExpressionNode, range?: [number, number]): PropertyDefinition;
|
|
109
|
+
createClassBody(body: (MethodDefinition | PropertyDefinition | AccessorProperty | StaticBlock)[], range?: [number, number]): ClassBody;
|
|
110
|
+
createNamespaceExportDeclaration(specifiers: ExportSpecifier[], declaration?: DeclarationExpression, source?: Literal<string>, assertions?: ImportAttribute[], range?: [number, number]): ExportNamedDeclaration;
|
|
111
|
+
createExportSpecifier(local: Identifier, exported: Identifier, range?: [number, number]): ExportSpecifier;
|
|
112
|
+
createImportSpecifier(local: Identifier, imported: Identifier, range?: [number, number]): ImportSpecifier;
|
|
113
|
+
createImportDeclaration(source: Literal<string>, specifiers?: (ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier)[], assertions?: ImportAttribute[], range?: [number, number]): ImportDeclaration;
|
|
114
|
+
createImportNamespaceSpecifier(local: Identifier, range?: [number, number]): ImportNamespaceSpecifier;
|
|
115
|
+
createImportDefaultSpecifier(local: Identifier, range?: [number, number]): ImportDefaultSpecifier;
|
|
116
|
+
createImportExpression(source: Literal<string>, attributes?: ExpressionNode, range?: [number, number]): ImportExpression;
|
|
117
|
+
createAssertEntry(key: Identifier | Literal<string>, value: Literal<string>, range?: [number, number]): ImportAttribute;
|
|
118
|
+
createExportDefault(declaration: FunctionDeclaration | ClassDeclaration | ExpressionNode, range?: [number, number]): ExportDefaultDeclaration;
|
|
119
|
+
createExportAllDeclaration(source: Literal<string>, exported?: Identifier, assertions?: ImportAttribute[], range?: [number, number]): ExportAllDeclaration;
|
|
120
|
+
createInfixExpression(operator: AssignmentOperator | LogicalOperator | BinaryOperator, left: ExpressionNode, right: ExpressionNode, range?: [number, number]): AssignmentExpression | LogicalExpression | BinaryExpression;
|
|
121
|
+
createUnaryExpression(operator: UpdateOperator | UnaryOperator | 'await', expression: ExpressionNode, range?: [number, number]): UpdateExpression | UnaryExpression | AwaitExpression;
|
|
122
|
+
createUpdateExpression(operator: UpdateOperator, argument: ExpressionNode, prefix: boolean, range?: [number, number]): UpdateExpression;
|
|
123
|
+
createAwaitExpression(argument: ExpressionNode, range?: [number, number]): AwaitExpression;
|
|
124
|
+
isIdentifier(node?: ExpressionNode): node is Identifier;
|
|
125
|
+
isObjectExpression(node?: ExpressionNode): node is ObjectExpression;
|
|
126
|
+
isArrayExpression(node?: ExpressionNode): node is ArrayExpression;
|
|
127
|
+
isObjectPattern(node?: ExpressionNode): node is ObjectPattern;
|
|
128
|
+
isArrayPattern(node?: ExpressionNode): node is ArrayPattern;
|
|
129
|
+
isAssignmentPattern(node?: ExpressionNode): node is AssignmentPattern;
|
|
130
|
+
isPattern(node?: ExpressionNode): boolean;
|
|
131
|
+
canBePattern(node?: ExpressionNode): node is (ObjectExpression | ArrayExpression);
|
|
132
|
+
isProperty(node?: ExpressionNode): node is Property;
|
|
133
|
+
isMemberExpression(node?: ExpressionNode): node is MemberExpression;
|
|
134
|
+
isPropertyOrMemberExpression(node?: ExpressionNode): node is (Property | MemberExpression);
|
|
135
|
+
isEmptyStatement(expression: ExpressionNode): expression is EmptyStatement;
|
|
136
|
+
isSequenceExpression(node: ExpressionNode): node is SequenceExpression;
|
|
137
|
+
isSuper(node: ExpressionNode): node is Super;
|
|
138
|
+
isAssignmentExpression(node: ExpressionNode): node is AssignmentExpression;
|
|
139
|
+
isGroupingExpression(node: ExpressionNode): node is GroupingExpression;
|
|
140
|
+
isSpreadElement(node: ExpressionNode): node is SpreadElement;
|
|
141
|
+
}
|
package/v8/node.js
ADDED
package/v8/node.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/expressions/v8/node.ts"],"names":[],"mappings":"","sourcesContent":["import {\n\tAccessorProperty, ClassBody, ClassDeclaration, ClassExpression,\n\tMetaProperty, MethodDefinition, MethodDefinitionKind, PrivateIdentifier,\n\tPropertyDefinition, StaticBlock, Super\n} from '../api/class/class.js';\nimport { Decorator } from '../api/class/decorator.js';\nimport { CallExpression } from '../api/computing/call.js';\nimport { DebuggerStatement } from '../api/computing/debugger.js';\nimport { NewExpression } from '../api/computing/new.js';\nimport { RestElement } from '../api/computing/rest.js';\nimport { ReturnStatement } from '../api/computing/return.js';\nimport { SpreadElement } from '../api/computing/spread.js';\nimport {\n\tCatchClauseNode, ThrowStatement, TryCatchNode\n} from '../api/computing/throw.js';\nimport { YieldExpression } from '../api/computing/yield.js';\nimport { ArrayExpression, ArrayPattern } from '../api/definition/array.js';\nimport { BindExpression } from '../api/definition/bind.js';\nimport {\n\tArrowFunctionExpression, AssignmentPattern, FunctionDeclaration, FunctionExpression\n} from '../api/definition/function.js';\nimport { MemberExpression } from '../api/definition/member.js';\nimport {\n\tObjectExpression, ObjectPattern, Property\n} from '../api/definition/object.js';\nimport {\n\tIdentifier, Literal, TaggedTemplateExpression, TemplateLiteral, ThisExpression\n} from '../api/definition/values.js';\nimport type { ExpressionNode, SourceLocation } from '../api/expression.js';\nimport { DeclarationExpression } from '../api/expression.js';\nimport { ImportAttribute } from '../api/module/common.js';\nimport {\n\tExportAllDeclaration, ExportDefaultDeclaration,\n\tExportNamedDeclaration, ExportSpecifier\n} from '../api/module/export.js';\nimport {\n\tImportDeclaration, ImportDefaultSpecifier, ImportExpression,\n\tImportNamespaceSpecifier, ImportSpecifier\n} from '../api/module/import.js';\nimport {\n\tAssignmentExpression, AssignmentOperator\n} from '../api/operators/assignment.js';\nimport { AwaitExpression } from '../api/operators/await.js';\nimport { BinaryExpression, BinaryOperator } from '../api/operators/binary.js';\nimport { ChainExpression } from '../api/operators/chaining.js';\nimport { SequenceExpression } from '../api/operators/comma.js';\nimport { GroupingExpression } from '../api/operators/grouping.js';\nimport { LogicalExpression, LogicalOperator } from '../api/operators/logical.js';\nimport { PipelineExpression } from '../api/operators/pipeline.js';\nimport { ConditionalExpression } from '../api/operators/ternary.js';\nimport { UnaryExpression, UnaryOperator } from '../api/operators/unary.js';\nimport { UpdateExpression, UpdateOperator } from '../api/operators/update.js';\nimport { Program, ProgramSourceType } from '../api/program.js';\nimport { BlockStatement } from '../api/statement/control/block.js';\nimport { EmptyStatement } from '../api/statement/control/empty.js';\nimport { IfStatement } from '../api/statement/control/if.js';\nimport {\n\tDefaultExpression, SwitchCase, SwitchStatement\n} from '../api/statement/control/switch.js';\nimport {\n\tBreakStatement, ContinueStatement, LabeledStatement\n} from '../api/statement/control/terminate.js';\nimport { WithStatement } from '../api/statement/control/with.js';\nimport {\n\tVariableDeclarationNode, VariableDeclarator\n} from '../api/statement/declarations/declares.js';\nimport {\n\tForAwaitOfNode, ForDeclaration, ForInNode, ForNode, ForOfNode\n} from '../api/statement/iterations/for.js';\nimport { DoWhileNode, WhileNode } from '../api/statement/iterations/while.js';\n\n\nexport interface SourcePositionFactory {\n\tcreateSourcePosition(range?: [number, number]): SourceLocation | undefined;\n}\n\nexport interface NodeFactory {\n\tcreateDebuggerStatement(range?: [number, number]): DebuggerStatement;\n\tcreateSuper(range?: [number, number]): Super;\n\tcreateThis(range?: [number, number]): ThisExpression;\n\tcreateNull(range?: [number, number]): Literal<null>;\n\tcreateTrue(range?: [number, number]): Literal<true>;\n\tcreateFalse(range?: [number, number]): Literal<false>;\n\tcreateVoidZero(argument: ExpressionNode, range?: [number, number]): UnaryExpression;\n\tcreateEmptyStatement(range?: [number, number]): EmptyStatement;\n\tcreateExpressionStatement(list: ExpressionNode[], range?: [number, number]): ExpressionNode;\n\tcreateCatchClause(block: BlockStatement, identifier?: ExpressionNode, range?: [number, number]): CatchClauseNode;\n\tcreateTryStatement(tryBlock: BlockStatement, catchBlock?: ExpressionNode, finallyBlock?: ExpressionNode, range?: [number, number]): TryCatchNode;\n\tcreateThrowStatement(exception: ExpressionNode, range?: [number, number]): ThrowStatement;\n\tcreateBlock(statements: ExpressionNode[], range?: [number, number]): BlockStatement;\n\tcreateIfStatement(condition: ExpressionNode, thenStatement: ExpressionNode, elseStatement?: ExpressionNode, range?: [number, number]): IfStatement;\n\tcreateDoStatement(condition: ExpressionNode, body: ExpressionNode, range?: [number, number]): DoWhileNode;\n\tcreateClassDeclaration(body: ClassBody, decorators: Decorator[], id: Identifier, superClass?: ExpressionNode, range?: [number, number]): ClassDeclaration;\n\tcreateFunctionDeclaration(formals: DeclarationExpression[], bodyBlock: BlockStatement, isAsync: boolean, isGenerator: boolean, name: Identifier, range?: [number, number]): FunctionDeclaration;\n\tcreateFunctionExpression(formals: DeclarationExpression[], bodyBlock: BlockStatement, isAsync: boolean, isGenerator: boolean, range?: [number, number]): FunctionExpression;\n\tcreateWhileStatement(condition: ExpressionNode, body: ExpressionNode, range?: [number, number]): WhileNode;\n\tcreateSwitchStatement(tag: ExpressionNode, cases: SwitchCase[], range?: [number, number]): SwitchStatement;\n\tcreateCaseBlock(test: ExpressionNode, block: BlockStatement, range?: [number, number]): SwitchCase;\n\tcreateDefaultClause(block: BlockStatement, range?: [number, number]): DefaultExpression;\n\tcreateWithStatement(object: ExpressionNode, body: ExpressionNode, range?: [number, number]): WithStatement;\n\tcreateForStatement(body: ExpressionNode, initializer: ExpressionNode, cond: ExpressionNode, next: ExpressionNode, range?: [number, number]): ForNode;\n\tcreateForOfStatement(initializer: ForDeclaration, enumerable: ExpressionNode, body: ExpressionNode, range?: [number, number]): ForOfNode;\n\tcreateForAwaitOfStatement(left: ForDeclaration, right: ExpressionNode, body: ExpressionNode, range?: [number, number]): ForAwaitOfNode;\n\tcreateForInStatement(initializer: ForDeclaration, enumerable: ExpressionNode, body: ExpressionNode, range?: [number, number]): ForInNode;\n\tcreateVariableDeclaration(id: DeclarationExpression, init?: ExpressionNode, range?: [number, number]): VariableDeclarator;\n\tcreateVariableStatement(variables: VariableDeclarator[], kind: 'let' | 'var' | 'const', range?: [number, number]): VariableDeclarationNode;\n\tcreateContinueStatement(label?: Identifier, range?: [number, number]): ContinueStatement;\n\tcreateBreakStatement(label?: Identifier, range?: [number, number]): BreakStatement;\n\tcreateReturnStatement(argument?: ExpressionNode, range?: [number, number]): ReturnStatement;\n\tcreateLabeledStatement(expression: Identifier, result: ExpressionNode, range?: [number, number]): LabeledStatement;\n\tcreateAssignmentPattern(left: DeclarationExpression, right: ExpressionNode, range?: [number, number]): AssignmentPattern;\n\tcreateSpreadElement(argument: ExpressionNode, range?: [number, number]): SpreadElement;\n\tcreateCommaListExpression(expressions: ExpressionNode[], range?: [number, number]): SequenceExpression;\n\tcreateTemplateExpression(quasis: string[], expressions: ExpressionNode[], range?: [number, number]): TemplateLiteral;\n\tcreateTaggedTemplateExpression(tag: ExpressionNode, quasis: string[], expressions: ExpressionNode[], range?: [number, number]): TaggedTemplateExpression;\n\tcreateNewExpression(className: ExpressionNode, parameters?: ExpressionNode[], range?: [number, number]): NewExpression;\n\tcreateObjectBindingPattern(properties: (Property | RestElement)[], range?: [number, number]): ObjectPattern;\n\tcreateObjectLiteralExpression(properties: Property[], range?: [number, number]): ObjectExpression;\n\tcreateArrayBindingPattern(elements: (DeclarationExpression | null)[], range?: [number, number]): ArrayPattern;\n\tcreateArrayLiteralExpression(elements: (ExpressionNode | SpreadElement | null)[], range?: [number, number]): ArrayExpression;\n\tcreateAssignment(operator: AssignmentOperator, left: ExpressionNode, right: ExpressionNode, range?: [number, number]): AssignmentExpression;\n\tcreateRestElement(argument: DeclarationExpression, range?: [number, number]): RestElement;\n\tcreateArrowFunction(params: DeclarationExpression[], body: ExpressionNode | ExpressionNode[], expression: boolean, async: boolean, range?: [number, number]): ArrowFunctionExpression;\n\tcreatePropertyDeclaration(key: ExpressionNode, value: DeclarationExpression | ExpressionNode, kind: 'init' | 'get' | 'set', method: boolean, shorthand: boolean, computed: boolean, range?: [number, number]): Property;\n\tcreateIdentifier(name: string, range?: [number, number]): Identifier;\n\tcreatePropertyAssignment(object: ExpressionNode, property: ExpressionNode, computed: boolean, optional?: boolean, range?: [number, number]): MemberExpression;\n\tcreatePipelineExpression(left: ExpressionNode, right: ExpressionNode, params?: (ExpressionNode | '?' | '...?')[], range?: [number, number]): PipelineExpression;\n\tcreateCallExpression(callee: ExpressionNode, params: ExpressionNode[], optional?: boolean, range?: [number, number]): CallExpression;\n\tcreateBindExpression(object: ExpressionNode, property: ExpressionNode, computed: boolean, optional?: boolean, range?: [number, number]): BindExpression;\n\tcreateChainExpression(expression: ExpressionNode, range?: [number, number]): ChainExpression;\n\tcreateLogicalExpression(operator: LogicalOperator, left: ExpressionNode, right: ExpressionNode, range?: [number, number],): LogicalExpression;\n\tcreateConditionalExpression(test: ExpressionNode, alternate: ExpressionNode, consequent: ExpressionNode, range?: [number, number]): ConditionalExpression;\n\tcreateYieldExpression(delegate: boolean, argument?: ExpressionNode, range?: [number, number]): YieldExpression;\n\tcreateMetaProperty(meta: Identifier, property: Identifier, range?: [number, number]): MetaProperty;\n\tcreateProgram(sourceType: ProgramSourceType, body: ExpressionNode[], range?: [number, number]): Program;\n\tcreateClassExpression(body: ClassBody, decorators: Decorator[], id?: Identifier, superClass?: ExpressionNode, range?: [number, number]): ClassExpression;\n\tcreateClassStaticBlockDeclaration(body: ExpressionNode[], range?: [number, number]): StaticBlock;\n\tcreateMethodSignature(kind: MethodDefinitionKind, key: ExpressionNode | PrivateIdentifier, value: FunctionExpression, decorators: Decorator[], computed: boolean, isStatic: boolean, range?: [number, number]): MethodDefinition;\n\tcreatePropertySignature(key: ExpressionNode | PrivateIdentifier, decorators: Decorator[], computed: boolean, isStatic: boolean, value?: ExpressionNode, range?: [number, number]): PropertyDefinition;\n\tcreateClassBody(body: (MethodDefinition | PropertyDefinition | AccessorProperty | StaticBlock)[], range?: [number, number]): ClassBody;\n\tcreateNamespaceExportDeclaration(specifiers: ExportSpecifier[], declaration?: DeclarationExpression, source?: Literal<string>, assertions?: ImportAttribute[], range?: [number, number]): ExportNamedDeclaration;\n\tcreateExportSpecifier(local: Identifier, exported: Identifier, range?: [number, number]): ExportSpecifier;\n\tcreateImportSpecifier(local: Identifier, imported: Identifier, range?: [number, number]): ImportSpecifier;\n\tcreateImportDeclaration(source: Literal<string>, specifiers?: (ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier)[], assertions?: ImportAttribute[], range?: [number, number]): ImportDeclaration;\n\tcreateImportNamespaceSpecifier(local: Identifier, range?: [number, number]): ImportNamespaceSpecifier;\n\tcreateImportDefaultSpecifier(local: Identifier, range?: [number, number]): ImportDefaultSpecifier;\n\tcreateImportExpression(source: Literal<string>, attributes?: ExpressionNode, range?: [number, number]): ImportExpression;\n\tcreateAssertEntry(key: Identifier | Literal<string>, value: Literal<string>, range?: [number, number]): ImportAttribute;\n\tcreateExportDefault(declaration: FunctionDeclaration | ClassDeclaration | ExpressionNode, range?: [number, number],): ExportDefaultDeclaration;\n\tcreateExportAllDeclaration(source: Literal<string>, exported?: Identifier, assertions?: ImportAttribute[], range?: [number, number]): ExportAllDeclaration;\n\tcreateInfixExpression(operator: AssignmentOperator | LogicalOperator | BinaryOperator, left: ExpressionNode, right: ExpressionNode, range?: [number, number]): AssignmentExpression | LogicalExpression | BinaryExpression;\n\tcreateUnaryExpression(operator: UpdateOperator | UnaryOperator | 'await', expression: ExpressionNode, range?: [number, number]): UpdateExpression | UnaryExpression | AwaitExpression;\n\tcreateUpdateExpression(operator: UpdateOperator, argument: ExpressionNode, prefix: boolean, range?: [number, number]): UpdateExpression;\n\tcreateAwaitExpression(argument: ExpressionNode, range?: [number, number]): AwaitExpression;\n\tisIdentifier(node?: ExpressionNode): node is Identifier;\n\tisObjectExpression(node?: ExpressionNode): node is ObjectExpression;\n\tisArrayExpression(node?: ExpressionNode): node is ArrayExpression;\n\tisObjectPattern(node?: ExpressionNode): node is ObjectPattern;\n\tisArrayPattern(node?: ExpressionNode): node is ArrayPattern;\n\tisAssignmentPattern(node?: ExpressionNode): node is AssignmentPattern;\n\tisPattern(node?: ExpressionNode): boolean;\n\tcanBePattern(node?: ExpressionNode): node is (ObjectExpression | ArrayExpression);\n\tisProperty(node?: ExpressionNode): node is Property;\n\tisMemberExpression(node?: ExpressionNode): node is MemberExpression;\n\tisPropertyOrMemberExpression(node?: ExpressionNode): node is (Property | MemberExpression);\n\tisEmptyStatement(expression: ExpressionNode): expression is EmptyStatement;\n\tisSequenceExpression(node: ExpressionNode): node is SequenceExpression;\n\tisSuper(node: ExpressionNode): node is Super;\n\tisAssignmentExpression(node: ExpressionNode): node is AssignmentExpression;\n\tisGroupingExpression(node: ExpressionNode): node is GroupingExpression;\n\tisSpreadElement(node: ExpressionNode): node is SpreadElement;\n}\n"]}
|
package/v8/nodes.d.ts
CHANGED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { ExpressionNode } from '../api/expression.js';
|
|
2
|
-
import { Token, TokenExpression } from './token.js';
|
|
3
|
-
import { UnaryExpression } from '../api/operators/unary.js';
|
|
4
|
-
import { Literal } from '../api/definition/values.js';
|
|
5
|
-
import { AwaitExpression } from '../api/operators/await.js';
|
|
6
|
-
import { UpdateExpression } from '../api/operators/update.js';
|
|
7
|
-
export declare function creteInfixExpression(op: string, left: ExpressionNode, right: ExpressionNode): ExpressionNode;
|
|
8
|
-
export declare function createTernaryExpression(op: string, logical: ExpressionNode, ifTrue: ExpressionNode, ifFalse: ExpressionNode): ExpressionNode;
|
|
9
|
-
export declare function creteCommaExpression(nodes: ExpressionNode[]): ExpressionNode;
|
|
10
|
-
export declare function shortcutNumericLiteralBinaryExpression(x: ExpressionNode, y: ExpressionNode, op: Token): ExpressionNode;
|
|
11
|
-
export declare function coverValue(value: any): false | Literal<boolean> | Literal<null> | Literal<undefined> | Literal<string | number | bigint>;
|
|
12
|
-
export declare function buildUnaryExpression(expression: ExpressionNode, op: Token): AwaitExpression | UnaryExpression | UpdateExpression;
|
|
13
|
-
export declare function buildPostfixExpression(expression: ExpressionNode, op: Token): UpdateExpression;
|
|
14
|
-
export declare function expressionFromLiteral(te: TokenExpression): ExpressionNode | Literal<boolean> | Literal<null> | Literal<undefined>;
|
package/v8/nodes.js
CHANGED
|
@@ -1,153 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { AssignmentExpression } from '../api/operators/assignment.js';
|
|
3
|
-
import { LogicalExpression } from '../api/operators/logical.js';
|
|
4
|
-
import { UnaryExpression } from '../api/operators/unary.js';
|
|
5
|
-
import { ConditionalExpression } from '../api/operators/ternary.js';
|
|
6
|
-
import { SequenceExpression } from '../api/operators/comma.js';
|
|
7
|
-
import { Literal, TrueNode, FalseNode, NullNode, UndefinedNode } from '../api/definition/values.js';
|
|
8
|
-
import { AwaitExpression } from '../api/operators/await.js';
|
|
9
|
-
import { UpdateExpression } from '../api/operators/update.js';
|
|
10
|
-
import { BinaryExpression } from '../api/operators/binary.js';
|
|
11
|
-
export function creteInfixExpression(op, left, right) {
|
|
12
|
-
switch (op) {
|
|
13
|
-
case '=':
|
|
14
|
-
case '+=':
|
|
15
|
-
case '-=':
|
|
16
|
-
case '**=':
|
|
17
|
-
case '/=':
|
|
18
|
-
case '%=':
|
|
19
|
-
case '<<=':
|
|
20
|
-
case '>>=':
|
|
21
|
-
case '>>>=':
|
|
22
|
-
case '&=':
|
|
23
|
-
case '^=':
|
|
24
|
-
case '|=':
|
|
25
|
-
case '&&=':
|
|
26
|
-
case '||=':
|
|
27
|
-
case '??=':
|
|
28
|
-
return new AssignmentExpression(op, left, right);
|
|
29
|
-
case '&&':
|
|
30
|
-
case '||':
|
|
31
|
-
case '??':
|
|
32
|
-
return new LogicalExpression(op, left, right);
|
|
33
|
-
case '**':
|
|
34
|
-
case '*':
|
|
35
|
-
case '/':
|
|
36
|
-
case '%':
|
|
37
|
-
case '+':
|
|
38
|
-
case '-':
|
|
39
|
-
case '<':
|
|
40
|
-
case '<=':
|
|
41
|
-
case '>':
|
|
42
|
-
case '>=':
|
|
43
|
-
case 'in':
|
|
44
|
-
case 'instanceof':
|
|
45
|
-
case '==':
|
|
46
|
-
case '!=':
|
|
47
|
-
case '===':
|
|
48
|
-
case '!==':
|
|
49
|
-
case '<<':
|
|
50
|
-
case '>>':
|
|
51
|
-
case '>>>':
|
|
52
|
-
case '&':
|
|
53
|
-
case '^':
|
|
54
|
-
case '|':
|
|
55
|
-
case '>?':
|
|
56
|
-
case '<?':
|
|
57
|
-
case '<=>':
|
|
58
|
-
return new BinaryExpression(op, left, right);
|
|
59
|
-
default:
|
|
60
|
-
throw new Error(`Not Supported Operator: ${op}`);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
export function createTernaryExpression(op, logical, ifTrue, ifFalse) {
|
|
64
|
-
switch (op) {
|
|
65
|
-
case '?':
|
|
66
|
-
return new ConditionalExpression(logical, ifTrue, ifFalse);
|
|
67
|
-
default:
|
|
68
|
-
throw new Error(`${op} is not ternary operator`);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
export function creteCommaExpression(nodes) {
|
|
72
|
-
return new SequenceExpression(nodes);
|
|
73
|
-
}
|
|
74
|
-
const USELESS_STACK = null; //Object.create(null);
|
|
75
|
-
const ALLOWED_TYPES = ['string', 'number', 'bigint', 'boolean'];
|
|
76
|
-
export function shortcutNumericLiteralBinaryExpression(x, y, op) {
|
|
77
|
-
const expression = creteInfixExpression(op.getName(), x, y);
|
|
78
|
-
if (x instanceof Literal && y instanceof Literal) {
|
|
79
|
-
const typeX = typeof x.getValue();
|
|
80
|
-
const typeY = typeof y.getValue();
|
|
81
|
-
if (x === y && ALLOWED_TYPES.indexOf(typeX) > -1) {
|
|
82
|
-
const result = expression.get(USELESS_STACK);
|
|
83
|
-
const rawString = `${x.toString()} ${op.getName()} ${x.toString()}`;
|
|
84
|
-
return new Literal(result, rawString);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return expression;
|
|
88
|
-
}
|
|
89
|
-
export function coverValue(value) {
|
|
90
|
-
switch (typeof value) {
|
|
91
|
-
case 'undefined': return UndefinedNode;
|
|
92
|
-
case 'boolean': return value ? TrueNode : FalseNode;
|
|
93
|
-
case 'number':
|
|
94
|
-
case 'bigint':
|
|
95
|
-
case 'string':
|
|
96
|
-
return new Literal(value);
|
|
97
|
-
case 'object':
|
|
98
|
-
if (value === null) {
|
|
99
|
-
return NullNode;
|
|
100
|
-
}
|
|
101
|
-
// never reach
|
|
102
|
-
case 'function':
|
|
103
|
-
case 'symbol':
|
|
104
|
-
default:
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
export function buildUnaryExpression(expression, op) {
|
|
109
|
-
const name = op.getName();
|
|
110
|
-
switch (name) {
|
|
111
|
-
case '++':
|
|
112
|
-
case '--':
|
|
113
|
-
return new UpdateExpression(name, expression, true);
|
|
114
|
-
case '+':
|
|
115
|
-
case '-':
|
|
116
|
-
case '!':
|
|
117
|
-
case '~':
|
|
118
|
-
case 'typeof':
|
|
119
|
-
case 'void':
|
|
120
|
-
case 'delete':
|
|
121
|
-
return new UnaryExpression(name, expression);
|
|
122
|
-
case 'await':
|
|
123
|
-
return new AwaitExpression(expression);
|
|
124
|
-
default:
|
|
125
|
-
throw new Error(`${op} is not prefix operator`);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
export function buildPostfixExpression(expression, op) {
|
|
129
|
-
const name = op.getName();
|
|
130
|
-
switch (name) {
|
|
131
|
-
case '++':
|
|
132
|
-
case '--':
|
|
133
|
-
return new UpdateExpression(name, expression, false);
|
|
134
|
-
default:
|
|
135
|
-
throw new Error(`${op} is not postfix operator`);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
export function expressionFromLiteral(te) {
|
|
139
|
-
switch (te.token) {
|
|
140
|
-
case Token.NUMBER:
|
|
141
|
-
case Token.BIGINT:
|
|
142
|
-
case Token.STRING:
|
|
143
|
-
case Token.REGEXP_LITERAL:
|
|
144
|
-
case Token.IDENTIFIER:
|
|
145
|
-
return te.getValue();
|
|
146
|
-
case Token.NULL_LITERAL: return NullNode;
|
|
147
|
-
case Token.TRUE_LITERAL: return TrueNode;
|
|
148
|
-
case Token.FALSE_LITERAL: return FalseNode;
|
|
149
|
-
default:
|
|
150
|
-
case Token.UNDEFINED_LITERAL: return UndefinedNode;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
1
|
+
"use strict";
|
|
153
2
|
//# sourceMappingURL=nodes.js.map
|
package/v8/nodes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../../src/expressions/v8/nodes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../../src/expressions/v8/nodes.ts"],"names":[],"mappings":"","sourcesContent":["\n"]}
|
package/v8/parser.d.ts
CHANGED
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
import type { ExpressionNode } from '../api/expression.js';
|
|
2
|
-
import {
|
|
3
|
-
import { TokenExpression } from './token.js';
|
|
2
|
+
import type { NodeFactory } from './node.js';
|
|
4
3
|
import { Class, ClassBody, ClassDeclaration, ClassExpression, MethodDefinition, PropertyDefinition, StaticBlock } from '../api/class/class.js';
|
|
5
4
|
import { Identifier, Literal } from '../api/definition/values.js';
|
|
6
|
-
import {
|
|
7
|
-
import { TokenStream } from './stream.js';
|
|
5
|
+
import { ImportAttribute } from '../api/module/common.js';
|
|
8
6
|
import { ExportDefaultDeclaration, ExportSpecifier } from '../api/module/export.js';
|
|
9
7
|
import { ImportSpecifier } from '../api/module/import.js';
|
|
10
|
-
import {
|
|
8
|
+
import { Program } from '../api/program.js';
|
|
11
9
|
import { ClassInfo, ClassLiteralPropertyKind, PropertyKindInfo, VariableDeclarationContext } from './enums.js';
|
|
10
|
+
import { InlineParserOptions, JavaScriptInlineParser, PositionMark } from './inline.js';
|
|
11
|
+
import { TokenStream } from './stream.js';
|
|
12
|
+
import { TokenExpression } from './token.js';
|
|
13
|
+
import { WithStatement } from '../api/statement/control/with.js';
|
|
12
14
|
import { LanguageMode } from './language.js';
|
|
13
|
-
export
|
|
15
|
+
export type ParserOptions = {
|
|
14
16
|
mode?: LanguageMode;
|
|
17
|
+
factory?: NodeFactory;
|
|
18
|
+
addLocation?: boolean;
|
|
15
19
|
};
|
|
16
20
|
export declare class JavaScriptParser extends JavaScriptInlineParser {
|
|
17
21
|
/**
|
|
@@ -19,15 +23,15 @@ export declare class JavaScriptParser extends JavaScriptInlineParser {
|
|
|
19
23
|
* @param source
|
|
20
24
|
* @returns
|
|
21
25
|
*/
|
|
22
|
-
static parse(source: string | TokenExpression[] | TokenStream, { mode }?: ParserOptions):
|
|
26
|
+
static parse(source: string | TokenExpression[] | TokenStream, { mode, factory, addLocation }?: ParserOptions): Program;
|
|
23
27
|
/**
|
|
24
28
|
* parse inline code like that used in html 2 or 1 way binding
|
|
25
29
|
*/
|
|
26
|
-
static parseScript(source: string | TokenExpression[] | TokenStream, options?: InlineParserOptions):
|
|
27
|
-
scan():
|
|
28
|
-
protected parseNewTargetExpression(): ExpressionNode;
|
|
30
|
+
static parseScript<T extends ExpressionNode>(source: string | TokenExpression[] | TokenStream, options?: InlineParserOptions): T;
|
|
31
|
+
scan(): Program;
|
|
32
|
+
protected parseNewTargetExpression(start?: PositionMark): ExpressionNode;
|
|
29
33
|
protected parseClassExpression(): ClassExpression;
|
|
30
|
-
protected parseClassDeclaration(names: string[] | undefined, defaultExport: boolean): ClassDeclaration;
|
|
34
|
+
protected parseClassDeclaration(names: string[] | undefined, defaultExport: boolean, start: PositionMark): ClassDeclaration;
|
|
31
35
|
protected parseClassLiteral(name: ExpressionNode | undefined, nameIsStrictReserved: boolean): Class;
|
|
32
36
|
protected declarePublicClassMethod(name: ExpressionNode | undefined, property: MethodDefinition, isConstructor: boolean, classInfo: ClassInfo): void;
|
|
33
37
|
protected declarePublicClassField(property: PropertyDefinition, isStatic: boolean, isComputedName: boolean, classInfo: ClassInfo): void;
|
|
@@ -35,24 +39,23 @@ export declare class JavaScriptParser extends JavaScriptInlineParser {
|
|
|
35
39
|
protected parseClassPropertyDefinition(classInfo: ClassInfo, propInfo: PropertyKindInfo, hasExtends: boolean): ExpressionNode | Literal<null> | MethodDefinition | PropertyDefinition;
|
|
36
40
|
protected checkClassMethodName(propInfo: PropertyKindInfo, classInfo: ClassInfo): void;
|
|
37
41
|
protected parseClassStaticBlock(classInfo: ClassInfo): StaticBlock;
|
|
38
|
-
protected
|
|
39
|
-
protected declareVariable(name: string, mode: 'let' | 'const' | 'var'): VariableDeclarationNode;
|
|
40
|
-
protected newClassLiteralProperty(nameExpression: ExpressionNode, initializer: ExpressionNode | undefined, kind: ClassLiteralPropertyKind, isStatic: boolean, isComputedName: boolean, isPrivate: boolean): MethodDefinition | PropertyDefinition;
|
|
42
|
+
protected newClassLiteralProperty(nameExpression: ExpressionNode, initializer: ExpressionNode | undefined, kind: ClassLiteralPropertyKind, isStatic: boolean, isComputedName: boolean, isPrivate: boolean, start: PositionMark): MethodDefinition | PropertyDefinition;
|
|
41
43
|
protected parseMemberInitializer(classInfo: ClassInfo, isStatic: boolean): ExpressionNode | undefined;
|
|
42
44
|
protected setFunctionNameFromPropertyName(property: ExpressionNode, name: string, prefix?: string): void;
|
|
43
45
|
protected parseSuperExpression(): ExpressionNode;
|
|
44
|
-
protected rewriteClassLiteral(classInfo: ClassInfo, name?: ExpressionNode): ClassBody;
|
|
46
|
+
protected rewriteClassLiteral(classInfo: ClassInfo, name?: ExpressionNode, range?: [number, number]): ClassBody;
|
|
45
47
|
protected parseModuleItemList(): ExpressionNode[];
|
|
46
48
|
protected parseModuleItem(): ExpressionNode | undefined;
|
|
47
49
|
protected parseExportDeclaration(): ExpressionNode | undefined;
|
|
48
50
|
protected parseImportDeclaration(): ExpressionNode | undefined;
|
|
49
51
|
protected parseImportExpressions(): ExpressionNode;
|
|
50
|
-
protected parseVariableStatement(varContext: VariableDeclarationContext, names: string[]): VariableDeclarationNode;
|
|
52
|
+
protected parseVariableStatement(varContext: VariableDeclarationContext, names: string[]): import("../index.js").VariableDeclarationNode;
|
|
51
53
|
protected parseImportAssertClause(): ImportAttribute[] | undefined;
|
|
52
54
|
protected parseModuleSpecifier(): Literal<string>;
|
|
53
55
|
protected parseExportClause(): ExportSpecifier[];
|
|
54
56
|
protected parseExportSpecifierName(): Identifier | Literal<string>;
|
|
55
57
|
protected parseNamedImports(): ImportSpecifier[];
|
|
56
|
-
protected parseExportDefault(): ExportDefaultDeclaration;
|
|
57
|
-
protected parseExportStar(): ExpressionNode | undefined;
|
|
58
|
+
protected parseExportDefault(start: PositionMark): ExportDefaultDeclaration;
|
|
59
|
+
protected parseExportStar(start: PositionMark): ExpressionNode | undefined;
|
|
60
|
+
protected parseWithStatement(): WithStatement;
|
|
58
61
|
}
|