@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/factory.js
ADDED
|
@@ -0,0 +1,499 @@
|
|
|
1
|
+
import { ClassBody, ClassDeclaration, ClassExpression, MetaProperty, MethodDefinition, PropertyDefinition, StaticBlock, Super } from '../api/class/class.js';
|
|
2
|
+
import { CallExpression } from '../api/computing/call.js';
|
|
3
|
+
import { DebuggerStatement } from '../api/computing/debugger.js';
|
|
4
|
+
import { NewExpression } from '../api/computing/new.js';
|
|
5
|
+
import { RestElement } from '../api/computing/rest.js';
|
|
6
|
+
import { ReturnStatement } from '../api/computing/return.js';
|
|
7
|
+
import { SpreadElement } from '../api/computing/spread.js';
|
|
8
|
+
import { CatchClauseNode, ThrowStatement, TryCatchNode } from '../api/computing/throw.js';
|
|
9
|
+
import { YieldExpression } from '../api/computing/yield.js';
|
|
10
|
+
import { ArrayExpression, ArrayPattern } from '../api/definition/array.js';
|
|
11
|
+
import { BindExpression } from '../api/definition/bind.js';
|
|
12
|
+
import { ArrowFunctionExpression, AssignmentPattern, FunctionDeclaration, FunctionExpression } from '../api/definition/function.js';
|
|
13
|
+
import { MemberExpression } from '../api/definition/member.js';
|
|
14
|
+
import { ObjectExpression, ObjectPattern, Property } from '../api/definition/object.js';
|
|
15
|
+
import { ExpressionStatement } from '../api/definition/statement.js';
|
|
16
|
+
import { Identifier, Literal, TaggedTemplateExpression, TemplateLiteral, ThisExpression } from '../api/definition/values.js';
|
|
17
|
+
import { ImportAttribute } from '../api/module/common.js';
|
|
18
|
+
import { ExportAllDeclaration, ExportDefaultDeclaration, ExportNamedDeclaration, ExportSpecifier } from '../api/module/export.js';
|
|
19
|
+
import { ImportDeclaration, ImportDefaultSpecifier, ImportExpression, ImportNamespaceSpecifier, ImportSpecifier } from '../api/module/import.js';
|
|
20
|
+
import { AssignmentExpression } from '../api/operators/assignment.js';
|
|
21
|
+
import { AwaitExpression } from '../api/operators/await.js';
|
|
22
|
+
import { BinaryExpression } from '../api/operators/binary.js';
|
|
23
|
+
import { ChainExpression } from '../api/operators/chaining.js';
|
|
24
|
+
import { SequenceExpression } from '../api/operators/comma.js';
|
|
25
|
+
import { GroupingExpression } from '../api/operators/grouping.js';
|
|
26
|
+
import { LogicalExpression } from '../api/operators/logical.js';
|
|
27
|
+
import { PipelineExpression } from '../api/operators/pipeline.js';
|
|
28
|
+
import { ConditionalExpression } from '../api/operators/ternary.js';
|
|
29
|
+
import { UnaryExpression } from '../api/operators/unary.js';
|
|
30
|
+
import { UpdateExpression } from '../api/operators/update.js';
|
|
31
|
+
import { Program } from '../api/program.js';
|
|
32
|
+
import { BlockStatement } from '../api/statement/control/block.js';
|
|
33
|
+
import { EmptyStatement } from '../api/statement/control/empty.js';
|
|
34
|
+
import { IfStatement } from '../api/statement/control/if.js';
|
|
35
|
+
import { DefaultExpression, SwitchCase, SwitchStatement } from '../api/statement/control/switch.js';
|
|
36
|
+
import { BreakStatement, ContinueStatement, LabeledStatement } from '../api/statement/control/terminate.js';
|
|
37
|
+
import { WithStatement } from '../api/statement/control/with.js';
|
|
38
|
+
import { VariableDeclarationNode, VariableDeclarator } from '../api/statement/declarations/declares.js';
|
|
39
|
+
import { ForAwaitOfNode, ForInNode, ForNode, ForOfNode } from '../api/statement/iterations/for.js';
|
|
40
|
+
import { DoWhileNode, WhileNode } from '../api/statement/iterations/while.js';
|
|
41
|
+
export class ExpressionNodeSourcePosition {
|
|
42
|
+
constructor(source) {
|
|
43
|
+
this.source = source;
|
|
44
|
+
this.newLineRegex = new RegExp('\n', 'g');
|
|
45
|
+
}
|
|
46
|
+
getLineNumber(index, defaultValue) {
|
|
47
|
+
return this.source.substring(0, index).match(this.newLineRegex)?.length ?? defaultValue;
|
|
48
|
+
}
|
|
49
|
+
getColumnNumber(index) {
|
|
50
|
+
const end = this.source.lastIndexOf('\n', index);
|
|
51
|
+
if (end === -1) {
|
|
52
|
+
return index;
|
|
53
|
+
}
|
|
54
|
+
return index - end - 1;
|
|
55
|
+
}
|
|
56
|
+
createSourcePosition(range) {
|
|
57
|
+
if (!range || !this.source) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const startLine = this.getLineNumber(range[0], 1);
|
|
61
|
+
const endLine = this.getLineNumber(range[1], startLine);
|
|
62
|
+
const startColumn = this.getColumnNumber(range[0]);
|
|
63
|
+
const endColumn = this.getColumnNumber(range[1]);
|
|
64
|
+
return {
|
|
65
|
+
start: { line: startLine, column: startColumn },
|
|
66
|
+
end: { line: endLine, column: endColumn },
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export class ExpressionNodeFactory {
|
|
71
|
+
constructor(rangeFactory) {
|
|
72
|
+
this.rangeFactory = rangeFactory;
|
|
73
|
+
}
|
|
74
|
+
createDebuggerStatement(range) {
|
|
75
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
76
|
+
return new DebuggerStatement(range, loc);
|
|
77
|
+
}
|
|
78
|
+
createSuper(range) {
|
|
79
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
80
|
+
return new Super(range, loc);
|
|
81
|
+
}
|
|
82
|
+
createThis(range) {
|
|
83
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
84
|
+
return new ThisExpression(range, loc);
|
|
85
|
+
}
|
|
86
|
+
createNull(range) {
|
|
87
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
88
|
+
return new Literal(null, undefined, undefined, undefined, range, loc);
|
|
89
|
+
}
|
|
90
|
+
createTrue(range) {
|
|
91
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
92
|
+
return new Literal(true, undefined, undefined, undefined, range, loc);
|
|
93
|
+
}
|
|
94
|
+
createFalse(range) {
|
|
95
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
96
|
+
return new Literal(false, undefined, undefined, undefined, range, loc);
|
|
97
|
+
}
|
|
98
|
+
createVoidZero(argument, range) {
|
|
99
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
100
|
+
return new UnaryExpression('void', argument, range, loc);
|
|
101
|
+
}
|
|
102
|
+
createEmptyStatement(range) {
|
|
103
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
104
|
+
return new EmptyStatement(range, loc);
|
|
105
|
+
}
|
|
106
|
+
createExpressionStatement(list, range) {
|
|
107
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
108
|
+
return new ExpressionStatement(list, range, loc);
|
|
109
|
+
}
|
|
110
|
+
createCatchClause(block, identifier, range) {
|
|
111
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
112
|
+
return new CatchClauseNode(block, identifier, range, loc);
|
|
113
|
+
}
|
|
114
|
+
createTryStatement(tryBlock, catchBlock, finallyBlock, range) {
|
|
115
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
116
|
+
return new TryCatchNode(tryBlock, catchBlock, finallyBlock, range, loc);
|
|
117
|
+
}
|
|
118
|
+
createThrowStatement(exception, range) {
|
|
119
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
120
|
+
return new ThrowStatement(exception, range, loc);
|
|
121
|
+
}
|
|
122
|
+
createBlock(statements, range) {
|
|
123
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
124
|
+
return new BlockStatement(statements, range, loc);
|
|
125
|
+
}
|
|
126
|
+
createIfStatement(condition, thenStatement, elseStatement, range) {
|
|
127
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
128
|
+
return new IfStatement(condition, thenStatement, elseStatement, range, loc);
|
|
129
|
+
}
|
|
130
|
+
createDoStatement(condition, body, range) {
|
|
131
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
132
|
+
return new DoWhileNode(condition, body, range, loc);
|
|
133
|
+
}
|
|
134
|
+
createClassDeclaration(body, decorators, id, superClass, range) {
|
|
135
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
136
|
+
return new ClassDeclaration(body, decorators, id, superClass, range, loc);
|
|
137
|
+
}
|
|
138
|
+
createFunctionDeclaration(formals, bodyBlock, isAsync, isGenerator, name, range) {
|
|
139
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
140
|
+
return new FunctionDeclaration(formals, bodyBlock, isAsync, isGenerator, name, range, loc);
|
|
141
|
+
}
|
|
142
|
+
createFunctionExpression(formals, bodyBlock, isAsync, isGenerator, range) {
|
|
143
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
144
|
+
return new FunctionExpression(formals, bodyBlock, isAsync, isGenerator, undefined, range, loc);
|
|
145
|
+
}
|
|
146
|
+
createWhileStatement(condition, body, range) {
|
|
147
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
148
|
+
return new WhileNode(condition, body, range, loc);
|
|
149
|
+
}
|
|
150
|
+
createSwitchStatement(tag, cases, range) {
|
|
151
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
152
|
+
return new SwitchStatement(tag, cases, range, loc);
|
|
153
|
+
}
|
|
154
|
+
createCaseBlock(test, block, range) {
|
|
155
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
156
|
+
return new SwitchCase(test, block, range, loc);
|
|
157
|
+
}
|
|
158
|
+
createDefaultClause(block, range) {
|
|
159
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
160
|
+
return new DefaultExpression(block, range, loc);
|
|
161
|
+
}
|
|
162
|
+
createWithStatement(object, body, range) {
|
|
163
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
164
|
+
return new WithStatement(object, body, range, loc);
|
|
165
|
+
}
|
|
166
|
+
createForStatement(body, initializer, cond, next, range) {
|
|
167
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
168
|
+
return new ForNode(body, initializer, cond, next, range, loc);
|
|
169
|
+
}
|
|
170
|
+
createForOfStatement(initializer, enumerable, body, range) {
|
|
171
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
172
|
+
return new ForOfNode(initializer, enumerable, body, range, loc);
|
|
173
|
+
}
|
|
174
|
+
createForAwaitOfStatement(left, right, body, range) {
|
|
175
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
176
|
+
return new ForAwaitOfNode(left, right, body, range, loc);
|
|
177
|
+
}
|
|
178
|
+
createForInStatement(initializer, enumerable, body, range) {
|
|
179
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
180
|
+
return new ForInNode(initializer, enumerable, body, range, loc);
|
|
181
|
+
}
|
|
182
|
+
createVariableDeclaration(id, init, range) {
|
|
183
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
184
|
+
return new VariableDeclarator(id, init, range, loc);
|
|
185
|
+
}
|
|
186
|
+
createVariableStatement(variables, kind, range) {
|
|
187
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
188
|
+
return new VariableDeclarationNode(variables, kind, range, loc);
|
|
189
|
+
}
|
|
190
|
+
createContinueStatement(label, range) {
|
|
191
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
192
|
+
return new ContinueStatement(label, range, loc);
|
|
193
|
+
}
|
|
194
|
+
createBreakStatement(label, range) {
|
|
195
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
196
|
+
return new BreakStatement(label, range, loc);
|
|
197
|
+
}
|
|
198
|
+
createReturnStatement(argument, range) {
|
|
199
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
200
|
+
return new ReturnStatement(argument, range, loc);
|
|
201
|
+
}
|
|
202
|
+
createLabeledStatement(expression, result, range) {
|
|
203
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
204
|
+
return new LabeledStatement(expression, result, range, loc);
|
|
205
|
+
}
|
|
206
|
+
createAssignmentPattern(left, right, range) {
|
|
207
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
208
|
+
return new AssignmentPattern(left, right, range, loc);
|
|
209
|
+
}
|
|
210
|
+
createSpreadElement(argument, range) {
|
|
211
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
212
|
+
return new SpreadElement(argument, range, loc);
|
|
213
|
+
}
|
|
214
|
+
createCommaListExpression(expressions, range) {
|
|
215
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
216
|
+
return new SequenceExpression(expressions, range, loc);
|
|
217
|
+
}
|
|
218
|
+
createTemplateExpression(quasis, expressions, range) {
|
|
219
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
220
|
+
return new TemplateLiteral(quasis, expressions, range, loc);
|
|
221
|
+
}
|
|
222
|
+
createTaggedTemplateExpression(tag, quasis, expressions, range) {
|
|
223
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
224
|
+
return new TaggedTemplateExpression(tag, quasis, expressions, range, loc);
|
|
225
|
+
}
|
|
226
|
+
createNewExpression(className, parameters, range) {
|
|
227
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
228
|
+
return new NewExpression(className, parameters, range, loc);
|
|
229
|
+
}
|
|
230
|
+
createObjectBindingPattern(properties, range) {
|
|
231
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
232
|
+
return new ObjectPattern(properties, range, loc);
|
|
233
|
+
}
|
|
234
|
+
createObjectLiteralExpression(properties, range) {
|
|
235
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
236
|
+
return new ObjectExpression(properties, range, loc);
|
|
237
|
+
}
|
|
238
|
+
createArrayBindingPattern(elements, range) {
|
|
239
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
240
|
+
return new ArrayPattern(elements, range, loc);
|
|
241
|
+
}
|
|
242
|
+
createArrayLiteralExpression(elements, range) {
|
|
243
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
244
|
+
return new ArrayExpression(elements, range, loc);
|
|
245
|
+
}
|
|
246
|
+
createAssignment(operator, left, right, range) {
|
|
247
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
248
|
+
return new AssignmentExpression(operator, left, right, range, loc);
|
|
249
|
+
}
|
|
250
|
+
createRestElement(argument, range) {
|
|
251
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
252
|
+
return new RestElement(argument, range, loc);
|
|
253
|
+
}
|
|
254
|
+
createArrowFunction(params, body, expression, async, range) {
|
|
255
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
256
|
+
return new ArrowFunctionExpression(params, body, expression, async, range, loc);
|
|
257
|
+
}
|
|
258
|
+
createPropertyDeclaration(key, value, kind, method, shorthand, computed, range) {
|
|
259
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
260
|
+
return new Property(key, value, kind, method, shorthand, computed, range, loc);
|
|
261
|
+
}
|
|
262
|
+
createIdentifier(name, range) {
|
|
263
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
264
|
+
return new Identifier(name, range, loc);
|
|
265
|
+
}
|
|
266
|
+
createPropertyAssignment(object, property, computed, optional, range) {
|
|
267
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
268
|
+
return new MemberExpression(object, property, computed, optional, range, loc);
|
|
269
|
+
}
|
|
270
|
+
createPipelineExpression(left, right, params, range) {
|
|
271
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
272
|
+
return new PipelineExpression(left, right, params, range, loc);
|
|
273
|
+
}
|
|
274
|
+
createCallExpression(callee, params, optional, range) {
|
|
275
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
276
|
+
return new CallExpression(callee, params, optional, range, loc);
|
|
277
|
+
}
|
|
278
|
+
createBindExpression(object, property, computed, optional, range) {
|
|
279
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
280
|
+
return new BindExpression(object, property, computed, optional, range, loc);
|
|
281
|
+
}
|
|
282
|
+
createChainExpression(expression, range) {
|
|
283
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
284
|
+
return new ChainExpression(expression, range, loc);
|
|
285
|
+
}
|
|
286
|
+
createLogicalExpression(operator, left, right, range) {
|
|
287
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
288
|
+
return new LogicalExpression(operator, left, right, range, loc);
|
|
289
|
+
}
|
|
290
|
+
createConditionalExpression(test, alternate, consequent, range) {
|
|
291
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
292
|
+
return new ConditionalExpression(test, alternate, consequent, range, loc);
|
|
293
|
+
}
|
|
294
|
+
createYieldExpression(delegate, argument, range) {
|
|
295
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
296
|
+
return new YieldExpression(delegate, argument, range, loc);
|
|
297
|
+
}
|
|
298
|
+
createMetaProperty(meta, property, range) {
|
|
299
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
300
|
+
return new MetaProperty(meta, property, range, loc);
|
|
301
|
+
}
|
|
302
|
+
createProgram(sourceType, body, range) {
|
|
303
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
304
|
+
return new Program(sourceType, body, range, loc);
|
|
305
|
+
}
|
|
306
|
+
createClassExpression(body, decorators, id, superClass, range) {
|
|
307
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
308
|
+
return new ClassExpression(body, decorators, id, superClass, range, loc);
|
|
309
|
+
}
|
|
310
|
+
createClassStaticBlockDeclaration(body, range) {
|
|
311
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
312
|
+
return new StaticBlock(body, range, loc);
|
|
313
|
+
}
|
|
314
|
+
createMethodSignature(kind, key, value, decorators, computed, isStatic, range) {
|
|
315
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
316
|
+
return new MethodDefinition(kind, key, value, decorators, computed, isStatic, range, loc);
|
|
317
|
+
}
|
|
318
|
+
createPropertySignature(key, decorators, computed, isStatic, value, range) {
|
|
319
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
320
|
+
return new PropertyDefinition(key, decorators, computed, isStatic, value, range, loc);
|
|
321
|
+
}
|
|
322
|
+
createClassBody(body, range) {
|
|
323
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
324
|
+
return new ClassBody(body, range, loc);
|
|
325
|
+
}
|
|
326
|
+
createNamespaceExportDeclaration(specifiers, declaration, source, assertions, range) {
|
|
327
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
328
|
+
return new ExportNamedDeclaration(specifiers, declaration, source, assertions, range, loc);
|
|
329
|
+
}
|
|
330
|
+
createExportSpecifier(local, exported, range) {
|
|
331
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
332
|
+
return new ExportSpecifier(local, exported, range, loc);
|
|
333
|
+
}
|
|
334
|
+
createImportSpecifier(local, imported, range) {
|
|
335
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
336
|
+
return new ImportSpecifier(local, imported, range, loc);
|
|
337
|
+
}
|
|
338
|
+
createImportDeclaration(source, specifiers, assertions, range) {
|
|
339
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
340
|
+
return new ImportDeclaration(source, specifiers, assertions, range, loc);
|
|
341
|
+
}
|
|
342
|
+
createImportNamespaceSpecifier(local, range) {
|
|
343
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
344
|
+
return new ImportNamespaceSpecifier(local, range, loc);
|
|
345
|
+
}
|
|
346
|
+
createImportDefaultSpecifier(local, range) {
|
|
347
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
348
|
+
return new ImportDefaultSpecifier(local, range, loc);
|
|
349
|
+
}
|
|
350
|
+
createImportExpression(source, attributes, range) {
|
|
351
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
352
|
+
return new ImportExpression(source, attributes, range, loc);
|
|
353
|
+
}
|
|
354
|
+
createAssertEntry(key, value, range) {
|
|
355
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
356
|
+
return new ImportAttribute(key, value, range, loc);
|
|
357
|
+
}
|
|
358
|
+
createExportDefault(declaration, range) {
|
|
359
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
360
|
+
return new ExportDefaultDeclaration(declaration, range, loc);
|
|
361
|
+
}
|
|
362
|
+
createExportAllDeclaration(source, exported, assertions, range) {
|
|
363
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
364
|
+
return new ExportAllDeclaration(source, exported, assertions, range, loc);
|
|
365
|
+
}
|
|
366
|
+
createInfixExpression(op, left, right, range) {
|
|
367
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
368
|
+
switch (op) {
|
|
369
|
+
case '=':
|
|
370
|
+
case '+=':
|
|
371
|
+
case '-=':
|
|
372
|
+
case '**=':
|
|
373
|
+
case '/=':
|
|
374
|
+
case '%=':
|
|
375
|
+
case '<<=':
|
|
376
|
+
case '>>=':
|
|
377
|
+
case '>>>=':
|
|
378
|
+
case '&=':
|
|
379
|
+
case '^=':
|
|
380
|
+
case '|=':
|
|
381
|
+
case '&&=':
|
|
382
|
+
case '||=':
|
|
383
|
+
case '??=':
|
|
384
|
+
return new AssignmentExpression(op, left, right, range, loc);
|
|
385
|
+
case '&&':
|
|
386
|
+
case '||':
|
|
387
|
+
case '??':
|
|
388
|
+
return new LogicalExpression(op, left, right, range, loc);
|
|
389
|
+
case '**':
|
|
390
|
+
case '*':
|
|
391
|
+
case '/':
|
|
392
|
+
case '%':
|
|
393
|
+
case '+':
|
|
394
|
+
case '-':
|
|
395
|
+
case '<':
|
|
396
|
+
case '<=':
|
|
397
|
+
case '>':
|
|
398
|
+
case '>=':
|
|
399
|
+
case 'in':
|
|
400
|
+
case 'instanceof':
|
|
401
|
+
case '==':
|
|
402
|
+
case '!=':
|
|
403
|
+
case '===':
|
|
404
|
+
case '!==':
|
|
405
|
+
case '<<':
|
|
406
|
+
case '>>':
|
|
407
|
+
case '>>>':
|
|
408
|
+
case '&':
|
|
409
|
+
case '^':
|
|
410
|
+
case '|':
|
|
411
|
+
case '>?':
|
|
412
|
+
case '<?':
|
|
413
|
+
case '<=>':
|
|
414
|
+
return new BinaryExpression(op, left, right, range, loc);
|
|
415
|
+
default:
|
|
416
|
+
throw new Error(`Not Supported Operator: ${op}`);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
createUnaryExpression(operator, expression, range) {
|
|
420
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
421
|
+
switch (operator) {
|
|
422
|
+
case '++':
|
|
423
|
+
case '--':
|
|
424
|
+
return new UpdateExpression(operator, expression, true);
|
|
425
|
+
case '+':
|
|
426
|
+
case '-':
|
|
427
|
+
case '!':
|
|
428
|
+
case '~':
|
|
429
|
+
case 'typeof':
|
|
430
|
+
case 'void':
|
|
431
|
+
case 'delete':
|
|
432
|
+
return new UnaryExpression(operator, expression);
|
|
433
|
+
case 'await':
|
|
434
|
+
return new AwaitExpression(expression);
|
|
435
|
+
default:
|
|
436
|
+
throw new Error(`${operator} is not prefix operator`);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
createUpdateExpression(operator, argument, prefix, range) {
|
|
440
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
441
|
+
return new UpdateExpression(operator, argument, prefix, range, loc);
|
|
442
|
+
}
|
|
443
|
+
createAwaitExpression(argument, range) {
|
|
444
|
+
const loc = this.rangeFactory?.createSourcePosition(range);
|
|
445
|
+
return new AwaitExpression(argument, range, loc);
|
|
446
|
+
}
|
|
447
|
+
isIdentifier(node) {
|
|
448
|
+
return node instanceof Identifier || node?.type === 'Identifier';
|
|
449
|
+
}
|
|
450
|
+
isObjectExpression(node) {
|
|
451
|
+
return node instanceof ObjectExpression || node?.type === 'ObjectExpression';
|
|
452
|
+
}
|
|
453
|
+
isArrayExpression(node) {
|
|
454
|
+
return node instanceof ArrayExpression || node?.type === 'ArrayExpression';
|
|
455
|
+
}
|
|
456
|
+
isObjectPattern(node) {
|
|
457
|
+
return node instanceof ObjectPattern || node?.type === 'ObjectPattern';
|
|
458
|
+
}
|
|
459
|
+
isArrayPattern(node) {
|
|
460
|
+
return node instanceof ArrayPattern || node?.type === 'ArrayPattern';
|
|
461
|
+
}
|
|
462
|
+
isAssignmentPattern(node) {
|
|
463
|
+
return node instanceof AssignmentPattern || node?.type === 'AssignmentPattern';
|
|
464
|
+
}
|
|
465
|
+
isPattern(node) {
|
|
466
|
+
return this.isObjectPattern(node) || this.isArrayPattern(node) || this.isAssignmentPattern(node);
|
|
467
|
+
}
|
|
468
|
+
canBePattern(node) {
|
|
469
|
+
return this.isObjectExpression(node) || this.isArrayExpression(node);
|
|
470
|
+
}
|
|
471
|
+
isProperty(node) {
|
|
472
|
+
return node instanceof Property || node?.type === 'Property';
|
|
473
|
+
}
|
|
474
|
+
isMemberExpression(node) {
|
|
475
|
+
return node instanceof MemberExpression || node?.type === 'MemberExpression';
|
|
476
|
+
}
|
|
477
|
+
isPropertyOrMemberExpression(node) {
|
|
478
|
+
return this.isProperty(node) || this.isMemberExpression(node);
|
|
479
|
+
}
|
|
480
|
+
isEmptyStatement(node) {
|
|
481
|
+
return node instanceof EmptyStatement || node?.type === 'EmptyStatement';
|
|
482
|
+
}
|
|
483
|
+
isSequenceExpression(node) {
|
|
484
|
+
return node instanceof SequenceExpression || node?.type === 'SequenceExpression';
|
|
485
|
+
}
|
|
486
|
+
isSuper(node) {
|
|
487
|
+
return node instanceof Super || node?.type === 'Super';
|
|
488
|
+
}
|
|
489
|
+
isAssignmentExpression(node) {
|
|
490
|
+
return node instanceof AssignmentExpression || node?.type === 'AssignmentExpression';
|
|
491
|
+
}
|
|
492
|
+
isGroupingExpression(node) {
|
|
493
|
+
return node instanceof GroupingExpression || node?.type === 'GroupingExpression';
|
|
494
|
+
}
|
|
495
|
+
isSpreadElement(node) {
|
|
496
|
+
return node instanceof SpreadElement || node?.type === 'SpreadElement';
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/expressions/v8/factory.ts"],"names":[],"mappings":"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","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 { ExpressionStatement } from '../api/definition/statement.js';\nimport {\n\tIdentifier, Literal, TaggedTemplateExpression, TemplateLiteral, ThisExpression\n} from '../api/definition/values.js';\nimport {\n\tDeclarationExpression, ExpressionNode, SourceLocation\n} 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';\nimport type { NodeFactory, SourcePositionFactory } from './node.js';\n\n\nexport class ExpressionNodeSourcePosition implements SourcePositionFactory {\n\tprivate newLineRegex = new RegExp('\\n', 'g');\n\n\tconstructor(private source: string) { }\n\n\tprivate getLineNumber(index: number, defaultValue: number) {\n\t\treturn this.source.substring(0, index).match(this.newLineRegex)?.length ?? defaultValue;\n\t}\n\n\tprivate getColumnNumber(index: number) {\n\t\tconst end = this.source.lastIndexOf('\\n', index);\n\t\tif (end === -1) {\n\t\t\treturn index;\n\t\t}\n\t\treturn index - end - 1;\n\t}\n\n\tpublic createSourcePosition(range?: [number, number]): SourceLocation | undefined {\n\t\tif (!range || !this.source) {\n\t\t\treturn;\n\t\t}\n\t\tconst startLine = this.getLineNumber(range[0], 1);\n\t\tconst endLine = this.getLineNumber(range[1], startLine);\n\t\tconst startColumn = this.getColumnNumber(range[0]);\n\t\tconst endColumn = this.getColumnNumber(range[1]);\n\t\treturn {\n\t\t\tstart: { line: startLine, column: startColumn },\n\t\t\tend: { line: endLine, column: endColumn },\n\t\t};\n\t}\n\n}\n\nexport class ExpressionNodeFactory implements NodeFactory {\n\n\tconstructor(private rangeFactory?: SourcePositionFactory) { }\n\n\tcreateDebuggerStatement(range?: [number, number]): DebuggerStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new DebuggerStatement(range, loc);\n\t}\n\n\tcreateSuper(range?: [number, number]): Super {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new Super(range, loc);\n\t}\n\tcreateThis(range?: [number, number]): ThisExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ThisExpression(range, loc);\n\t}\n\tcreateNull(range?: [number, number]): Literal<null> {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new Literal(null, undefined, undefined, undefined, range, loc);\n\t}\n\tcreateTrue(range?: [number, number]): Literal<true> {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new Literal(true, undefined, undefined, undefined, range, loc);\n\t}\n\tcreateFalse(range?: [number, number]): Literal<false> {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new Literal(false, undefined, undefined, undefined, range, loc);\n\t}\n\tcreateVoidZero(argument: ExpressionNode, range?: [number, number]): UnaryExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new UnaryExpression('void', argument, range, loc);\n\t}\n\tcreateEmptyStatement(range?: [number, number]): EmptyStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new EmptyStatement(range, loc);\n\t}\n\tcreateExpressionStatement(list: ExpressionNode[], range?: [number, number]): ExpressionNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ExpressionStatement(list, range, loc);\n\t}\n\tcreateCatchClause(block: BlockStatement, identifier?: ExpressionNode, range?: [number, number]): CatchClauseNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new CatchClauseNode(block, identifier, range, loc);\n\t}\n\tcreateTryStatement(tryBlock: BlockStatement, catchBlock?: ExpressionNode, finallyBlock?: ExpressionNode, range?: [number, number]): TryCatchNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new TryCatchNode(tryBlock, catchBlock, finallyBlock, range, loc);\n\t}\n\tcreateThrowStatement(exception: ExpressionNode, range?: [number, number]): ThrowStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ThrowStatement(exception, range, loc);\n\t}\n\n\tcreateBlock(statements: ExpressionNode[], range?: [number, number]): BlockStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new BlockStatement(statements, range, loc);\n\t}\n\tcreateIfStatement(condition: ExpressionNode, thenStatement: ExpressionNode, elseStatement?: ExpressionNode, range?: [number, number]): IfStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new IfStatement(condition, thenStatement, elseStatement, range, loc);\n\t}\n\tcreateDoStatement(condition: ExpressionNode, body: ExpressionNode, range?: [number, number] | undefined): DoWhileNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new DoWhileNode(condition, body, range, loc);\n\t}\n\tcreateClassDeclaration(body: ClassBody, decorators: Decorator[], id: Identifier, superClass?: ExpressionNode, range?: [number, number]): ClassDeclaration {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ClassDeclaration(body, decorators, id, superClass, range, loc);\n\t}\n\tcreateFunctionDeclaration(formals: DeclarationExpression[], bodyBlock: BlockStatement, isAsync: boolean, isGenerator: boolean, name: Identifier, range?: [number, number]): FunctionDeclaration {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new FunctionDeclaration(formals, bodyBlock, isAsync, isGenerator, name, range, loc);\n\t}\n\tcreateFunctionExpression(formals: DeclarationExpression[], bodyBlock: BlockStatement, isAsync: boolean, isGenerator: boolean, range?: [number, number]): FunctionExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new FunctionExpression(formals, bodyBlock, isAsync, isGenerator, undefined, range, loc);\n\t}\n\tcreateWhileStatement(condition: ExpressionNode, body: ExpressionNode, range?: [number, number] | undefined): WhileNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new WhileNode(condition, body, range, loc);\n\t}\n\tcreateSwitchStatement(tag: ExpressionNode, cases: SwitchCase[], range?: [number, number] | undefined): SwitchStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new SwitchStatement(tag, cases, range, loc);\n\t}\n\tcreateCaseBlock(test: ExpressionNode, block: BlockStatement, range?: [number, number] | undefined): SwitchCase {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new SwitchCase(test, block, range, loc);\n\t}\n\tcreateDefaultClause(block: BlockStatement, range?: [number, number] | undefined): DefaultExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new DefaultExpression(block, range, loc);\n\t}\n\tcreateWithStatement(object: ExpressionNode, body: ExpressionNode, range?: [number, number]): WithStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new WithStatement(object, body, range, loc);\n\t}\n\tcreateForStatement(body: ExpressionNode, initializer: ExpressionNode, cond: ExpressionNode, next: ExpressionNode, range?: [number, number] | undefined): ForNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ForNode(body, initializer, cond, next, range, loc);\n\t}\n\tcreateForOfStatement(initializer: ForDeclaration, enumerable: ExpressionNode, body: ExpressionNode, range?: [number, number] | undefined): ForOfNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ForOfNode(initializer, enumerable, body, range, loc);\n\t}\n\tcreateForAwaitOfStatement(left: ForDeclaration, right: ExpressionNode, body: ExpressionNode, range?: [number, number] | undefined): ForAwaitOfNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ForAwaitOfNode(left, right, body, range, loc);\n\t}\n\tcreateForInStatement(initializer: ForDeclaration, enumerable: ExpressionNode, body: ExpressionNode, range?: [number, number]): ForInNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ForInNode(initializer, enumerable, body, range, loc);\n\t}\n\tcreateVariableDeclaration(id: DeclarationExpression, init?: ExpressionNode, range?: [number, number]): VariableDeclarator {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new VariableDeclarator(id, init, range, loc);\n\t}\n\tcreateVariableStatement(variables: VariableDeclarator[], kind: 'let' | 'var' | 'const', range?: [number, number]): VariableDeclarationNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new VariableDeclarationNode(variables, kind, range, loc);\n\t}\n\tcreateContinueStatement(label?: Identifier, range?: [number, number]): ContinueStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ContinueStatement(label, range, loc);\n\t}\n\tcreateBreakStatement(label?: Identifier, range?: [number, number]): BreakStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new BreakStatement(label, range, loc);\n\t}\n\tcreateReturnStatement(argument?: ExpressionNode, range?: [number, number]): ReturnStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ReturnStatement(argument, range, loc);\n\t}\n\tcreateLabeledStatement(expression: Identifier, result: ExpressionNode, range?: [number, number]): LabeledStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new LabeledStatement(expression, result, range, loc);\n\t}\n\tcreateAssignmentPattern(left: DeclarationExpression, right: ExpressionNode, range?: [number, number]): AssignmentPattern {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new AssignmentPattern(left, right, range, loc);\n\t}\n\tcreateSpreadElement(argument: ExpressionNode, range?: [number, number]): SpreadElement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new SpreadElement(argument, range, loc);\n\t}\n\tcreateCommaListExpression(expressions: ExpressionNode[], range?: [number, number] | undefined): SequenceExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new SequenceExpression(expressions, range, loc);\n\t}\n\tcreateTemplateExpression(quasis: string[], expressions: ExpressionNode[], range?: [number, number]): TemplateLiteral {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new TemplateLiteral(quasis, expressions, range, loc);\n\t}\n\tcreateTaggedTemplateExpression(tag: ExpressionNode, quasis: string[], expressions: ExpressionNode[], range?: [number, number]): TaggedTemplateExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new TaggedTemplateExpression(tag, quasis, expressions, range, loc);\n\t}\n\tcreateNewExpression(className: ExpressionNode, parameters?: ExpressionNode[], range?: [number, number]): NewExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new NewExpression(className, parameters, range, loc);\n\t}\n\tcreateObjectBindingPattern(properties: (Property | RestElement)[], range?: [number, number] | undefined): ObjectPattern {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ObjectPattern(properties, range, loc);\n\t}\n\tcreateObjectLiteralExpression(properties: Property[], range?: [number, number]): ObjectExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ObjectExpression(properties, range, loc);\n\t}\n\tcreateArrayBindingPattern(elements: (DeclarationExpression | null)[], range?: [number, number]): ArrayPattern {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ArrayPattern(elements, range, loc);\n\t}\n\tcreateArrayLiteralExpression(elements: (ExpressionNode | SpreadElement | null)[], range?: [number, number]): ArrayExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ArrayExpression(elements, range, loc);\n\t}\n\tcreateAssignment(operator: AssignmentOperator, left: ExpressionNode, right: ExpressionNode, range?: [number, number]): AssignmentExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new AssignmentExpression(operator, left, right, range, loc);\n\t}\n\tcreateRestElement(argument: DeclarationExpression, range?: [number, number]): RestElement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new RestElement(argument, range, loc);\n\t}\n\tcreateArrowFunction(params: DeclarationExpression[], body: ExpressionNode | ExpressionNode[], expression: boolean, async: boolean, range?: [number, number]): ArrowFunctionExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ArrowFunctionExpression(params, body, expression, async, range, loc);\n\t}\n\tcreatePropertyDeclaration(key: ExpressionNode, value: DeclarationExpression | ExpressionNode, kind: 'init' | 'get' | 'set', method: boolean, shorthand: boolean, computed: boolean, range?: [number, number]): Property {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new Property(key, value, kind, method, shorthand, computed, range, loc);\n\t}\n\tcreateIdentifier(name: string, range?: [number, number]): Identifier {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new Identifier(name, range, loc);\n\t}\n\tcreatePropertyAssignment(object: ExpressionNode, property: ExpressionNode, computed: boolean, optional?: boolean, range?: [number, number]): MemberExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new MemberExpression(object, property, computed, optional, range, loc);\n\t}\n\tcreatePipelineExpression(left: ExpressionNode, right: ExpressionNode, params?: (ExpressionNode | '?' | '...?')[], range?: [number, number]): PipelineExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new PipelineExpression(left, right, params, range, loc);\n\t}\n\tcreateCallExpression(callee: ExpressionNode, params: ExpressionNode[], optional?: boolean, range?: [number, number]): CallExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new CallExpression(callee, params, optional, range, loc);\n\t}\n\tcreateBindExpression(object: ExpressionNode, property: ExpressionNode, computed: boolean, optional?: boolean, range?: [number, number]): BindExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new BindExpression(object, property, computed, optional, range, loc);\n\t}\n\tcreateChainExpression(expression: ExpressionNode, range?: [number, number]): ChainExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ChainExpression(expression, range, loc);\n\t}\n\tcreateLogicalExpression(operator: LogicalOperator, left: ExpressionNode, right: ExpressionNode, range?: [number, number],): LogicalExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new LogicalExpression(operator, left, right, range, loc);\n\t}\n\tcreateConditionalExpression(test: ExpressionNode, alternate: ExpressionNode, consequent: ExpressionNode, range?: [number, number]): ConditionalExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ConditionalExpression(test, alternate, consequent, range, loc);\n\t}\n\tcreateYieldExpression(delegate: boolean, argument?: ExpressionNode, range?: [number, number]): YieldExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new YieldExpression(delegate, argument, range, loc);\n\t}\n\tcreateMetaProperty(meta: Identifier, property: Identifier, range?: [number, number]): MetaProperty {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new MetaProperty(meta, property, range, loc);\n\t}\n\tcreateProgram(sourceType: ProgramSourceType, body: ExpressionNode[], range?: [number, number]): Program {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new Program(sourceType, body, range, loc);\n\t}\n\tcreateClassExpression(body: ClassBody, decorators: Decorator[], id?: Identifier, superClass?: ExpressionNode, range?: [number, number]): ClassExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ClassExpression(body, decorators, id, superClass, range, loc);\n\t}\n\tcreateClassStaticBlockDeclaration(body: ExpressionNode[], range?: [number, number]): StaticBlock {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new StaticBlock(body, range, loc);\n\t}\n\tcreateMethodSignature(kind: MethodDefinitionKind, key: ExpressionNode | PrivateIdentifier, value: FunctionExpression, decorators: Decorator[], computed: boolean, isStatic: boolean, range?: [number, number]): MethodDefinition {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new MethodDefinition(kind, key, value, decorators, computed, isStatic, range, loc);\n\t}\n\tcreatePropertySignature(key: ExpressionNode | PrivateIdentifier, decorators: Decorator[], computed: boolean, isStatic: boolean, value?: ExpressionNode, range?: [number, number]): PropertyDefinition {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new PropertyDefinition(key, decorators, computed, isStatic, value, range, loc);\n\t}\n\tcreateClassBody(body: (MethodDefinition | PropertyDefinition | AccessorProperty | StaticBlock)[], range?: [number, number]): ClassBody {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ClassBody(body, range, loc);\n\t}\n\tcreateNamespaceExportDeclaration(specifiers: ExportSpecifier[], declaration?: DeclarationExpression, source?: Literal<string>, assertions?: ImportAttribute[], range?: [number, number]): ExportNamedDeclaration {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ExportNamedDeclaration(specifiers, declaration, source, assertions, range, loc);\n\t}\n\tcreateExportSpecifier(local: Identifier, exported: Identifier, range?: [number, number]): ExportSpecifier {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ExportSpecifier(local, exported, range, loc);\n\t}\n\tcreateImportSpecifier(local: Identifier, imported: Identifier, range?: [number, number]): ImportSpecifier {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ImportSpecifier(local, imported, range, loc);\n\t}\n\tcreateImportDeclaration(source: Literal<string>, specifiers?: (ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier)[], assertions?: ImportAttribute[], range?: [number, number]): ImportDeclaration {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ImportDeclaration(source, specifiers, assertions, range, loc);\n\t}\n\tcreateImportNamespaceSpecifier(local: Identifier, range?: [number, number]): ImportNamespaceSpecifier {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ImportNamespaceSpecifier(local, range, loc);\n\t}\n\tcreateImportDefaultSpecifier(local: Identifier, range?: [number, number]): ImportDefaultSpecifier {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ImportDefaultSpecifier(local, range, loc);\n\t}\n\tcreateImportExpression(source: Literal<string>, attributes?: ExpressionNode, range?: [number, number]): ImportExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ImportExpression(source, attributes, range, loc);\n\t}\n\tcreateAssertEntry(key: Identifier | Literal<string>, value: Literal<string>, range?: [number, number]): ImportAttribute {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ImportAttribute(key, value, range, loc);\n\t}\n\tcreateExportDefault(declaration: FunctionDeclaration | ClassDeclaration | ExpressionNode, range?: [number, number],): ExportDefaultDeclaration {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ExportDefaultDeclaration(declaration, range, loc);\n\t}\n\tcreateExportAllDeclaration(source: Literal<string>, exported?: Identifier, assertions?: ImportAttribute[], range?: [number, number]): ExportAllDeclaration {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ExportAllDeclaration(source, exported, assertions, range, loc);\n\t}\n\tcreateInfixExpression(op: AssignmentOperator | LogicalOperator | BinaryOperator, left: ExpressionNode, right: ExpressionNode, range?: [number, number]): AssignmentExpression | LogicalExpression | BinaryExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\tswitch (op) {\n\t\t\tcase '=':\n\t\t\tcase '+=':\n\t\t\tcase '-=':\n\t\t\tcase '**=':\n\t\t\tcase '/=':\n\t\t\tcase '%=':\n\t\t\tcase '<<=':\n\t\t\tcase '>>=':\n\t\t\tcase '>>>=':\n\t\t\tcase '&=':\n\t\t\tcase '^=':\n\t\t\tcase '|=':\n\t\t\tcase '&&=':\n\t\t\tcase '||=':\n\t\t\tcase '??=':\n\t\t\t\treturn new AssignmentExpression(op, left, right, range, loc);\n\t\t\tcase '&&':\n\t\t\tcase '||':\n\t\t\tcase '??':\n\t\t\t\treturn new LogicalExpression(op, left, right, range, loc);\n\t\t\tcase '**':\n\t\t\tcase '*':\n\t\t\tcase '/':\n\t\t\tcase '%':\n\t\t\tcase '+':\n\t\t\tcase '-':\n\t\t\tcase '<':\n\t\t\tcase '<=':\n\t\t\tcase '>':\n\t\t\tcase '>=':\n\t\t\tcase 'in':\n\t\t\tcase 'instanceof':\n\t\t\tcase '==':\n\t\t\tcase '!=':\n\t\t\tcase '===':\n\t\t\tcase '!==':\n\t\t\tcase '<<':\n\t\t\tcase '>>':\n\t\t\tcase '>>>':\n\t\t\tcase '&':\n\t\t\tcase '^':\n\t\t\tcase '|':\n\t\t\tcase '>?':\n\t\t\tcase '<?':\n\t\t\tcase '<=>':\n\t\t\t\treturn new BinaryExpression(op, left, right, range, loc);\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Not Supported Operator: ${op}`);\n\t\t}\n\t}\n\tcreateUnaryExpression(operator: UpdateOperator | UnaryOperator | 'await', expression: ExpressionNode, range?: [number, number]): UpdateExpression | UnaryExpression | AwaitExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\tswitch (operator) {\n\t\t\tcase '++':\n\t\t\tcase '--':\n\t\t\t\treturn new UpdateExpression(operator, expression, true);\n\t\t\tcase '+':\n\t\t\tcase '-':\n\t\t\tcase '!':\n\t\t\tcase '~':\n\t\t\tcase 'typeof':\n\t\t\tcase 'void':\n\t\t\tcase 'delete':\n\t\t\t\treturn new UnaryExpression(operator, expression);\n\t\t\tcase 'await':\n\t\t\t\treturn new AwaitExpression(expression);\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`${operator} is not prefix operator`);\n\t\t}\n\t}\n\tcreateUpdateExpression(operator: UpdateOperator, argument: ExpressionNode, prefix: boolean, range?: [number, number]): UpdateExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new UpdateExpression(operator, argument, prefix, range, loc);\n\t}\n\tcreateAwaitExpression(argument: ExpressionNode, range?: [number, number]): AwaitExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new AwaitExpression(argument, range, loc);\n\t}\n\tisIdentifier(node?: ExpressionNode): node is Identifier {\n\t\treturn node instanceof Identifier || node?.type === 'Identifier';\n\t}\n\tisObjectExpression(node?: ExpressionNode): node is ObjectExpression {\n\t\treturn node instanceof ObjectExpression || node?.type === 'ObjectExpression';\n\t}\n\tisArrayExpression(node?: ExpressionNode): node is ArrayExpression {\n\t\treturn node instanceof ArrayExpression || node?.type === 'ArrayExpression';\n\t}\n\tisObjectPattern(node?: ExpressionNode): node is ObjectPattern {\n\t\treturn node instanceof ObjectPattern || node?.type === 'ObjectPattern';\n\t}\n\tisArrayPattern(node?: ExpressionNode): node is ArrayPattern {\n\t\treturn node instanceof ArrayPattern || node?.type === 'ArrayPattern';\n\t}\n\tisAssignmentPattern(node?: ExpressionNode): node is AssignmentPattern {\n\t\treturn node instanceof AssignmentPattern || node?.type === 'AssignmentPattern';\n\t}\n\tisPattern(node?: ExpressionNode): boolean {\n\t\treturn this.isObjectPattern(node) || this.isArrayPattern(node) || this.isAssignmentPattern(node);\n\t}\n\tcanBePattern(node?: ExpressionNode): node is (ObjectExpression | ArrayExpression) {\n\t\treturn this.isObjectExpression(node) || this.isArrayExpression(node);\n\t}\n\tisProperty(node?: ExpressionNode): node is Property {\n\t\treturn node instanceof Property || node?.type === 'Property';\n\t}\n\tisMemberExpression(node?: ExpressionNode): node is MemberExpression {\n\t\treturn node instanceof MemberExpression || node?.type === 'MemberExpression';\n\t}\n\tisPropertyOrMemberExpression(node?: ExpressionNode): node is (Property | MemberExpression) {\n\t\treturn this.isProperty(node) || this.isMemberExpression(node);\n\t}\n\tisEmptyStatement(node: ExpressionNode): node is EmptyStatement {\n\t\treturn node instanceof EmptyStatement || node?.type === 'EmptyStatement';\n\t}\n\tisSequenceExpression(node: ExpressionNode): node is SequenceExpression {\n\t\treturn node instanceof SequenceExpression || node?.type === 'SequenceExpression';\n\t}\n\tisSuper(node: ExpressionNode): node is Super {\n\t\treturn node instanceof Super || node?.type === 'Super';\n\t}\n\tisAssignmentExpression(node: ExpressionNode): node is AssignmentExpression {\n\t\treturn node instanceof AssignmentExpression || node?.type === 'AssignmentExpression';\n\t}\n\tisGroupingExpression(node: ExpressionNode): node is GroupingExpression {\n\t\treturn node instanceof GroupingExpression || node?.type === 'GroupingExpression';\n\t}\n\tisSpreadElement(node: ExpressionNode): node is SpreadElement {\n\t\treturn node instanceof SpreadElement || node?.type === 'SpreadElement';\n\t}\n\n}\n"]}
|