@ibyar/expressions 0.3.8 → 0.5.0
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 +22 -12
- package/api/abstract.d.ts +20 -4
- package/api/abstract.js +54 -3
- package/api/abstract.js.map +1 -1
- package/api/app/class.d.ts +21 -11
- package/api/app/class.js +28 -10
- package/api/app/class.js.map +1 -1
- package/api/app/program.d.ts +6 -3
- package/api/app/program.js +7 -3
- package/api/app/program.js.map +1 -1
- package/api/computing/call.d.ts +5 -2
- package/api/computing/call.js +8 -2
- package/api/computing/call.js.map +1 -1
- package/api/computing/new.d.ts +5 -2
- package/api/computing/new.js +10 -2
- package/api/computing/new.js.map +1 -1
- package/api/computing/rest.d.ts +5 -2
- package/api/computing/rest.js +8 -2
- package/api/computing/rest.js.map +1 -1
- package/api/computing/return.d.ts +5 -2
- package/api/computing/return.js +8 -2
- package/api/computing/return.js.map +1 -1
- package/api/computing/spread.d.ts +5 -2
- package/api/computing/spread.js +8 -2
- package/api/computing/spread.js.map +1 -1
- package/api/computing/throw.d.ts +11 -4
- package/api/computing/throw.js +23 -6
- package/api/computing/throw.js.map +1 -1
- package/api/computing/yield.d.ts +18 -0
- package/api/computing/yield.js +51 -0
- package/api/computing/yield.js.map +1 -0
- package/api/definition/array.d.ts +10 -3
- package/api/definition/array.js +20 -4
- package/api/definition/array.js.map +1 -1
- package/api/definition/bind.d.ts +5 -2
- package/api/definition/bind.js +10 -9
- package/api/definition/bind.js.map +1 -1
- package/api/definition/comment.d.ts +5 -1
- package/api/definition/comment.js +6 -4
- package/api/definition/comment.js.map +1 -1
- package/api/definition/function.d.ts +26 -10
- package/api/definition/function.js +123 -54
- package/api/definition/function.js.map +1 -1
- package/api/definition/member.d.ts +5 -2
- package/api/definition/member.js +19 -7
- package/api/definition/member.js.map +1 -1
- package/api/definition/object.d.ts +14 -5
- package/api/definition/object.js +32 -6
- package/api/definition/object.js.map +1 -1
- package/api/definition/statement.d.ts +6 -2
- package/api/definition/statement.js +11 -2
- package/api/definition/statement.js.map +1 -1
- package/api/definition/values.d.ts +20 -7
- package/api/definition/values.js +37 -9
- package/api/definition/values.js.map +1 -1
- package/api/deserialize/deserialize.js +3 -3
- package/api/deserialize/deserialize.js.map +1 -1
- package/api/deserialize/type-store.d.ts +2 -0
- package/api/deserialize/type-store.js +2 -0
- package/api/deserialize/type-store.js.map +1 -0
- package/api/expression.d.ts +27 -5
- 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/export.d.ts +7 -2
- package/api/module/export.js +15 -1
- package/api/module/export.js.map +1 -1
- package/api/module/import.d.ts +7 -2
- package/api/module/import.js +15 -1
- package/api/module/import.js.map +1 -1
- package/api/module/module.d.ts +6 -2
- package/api/module/module.js +11 -2
- package/api/module/module.js.map +1 -1
- package/api/operators/assignment.d.ts +2 -1
- package/api/operators/assignment.js +4 -0
- package/api/operators/assignment.js.map +1 -1
- package/api/operators/await.d.ts +6 -2
- package/api/operators/await.js +12 -3
- package/api/operators/await.js.map +1 -1
- package/api/operators/binary.d.ts +2 -1
- package/api/operators/binary.js +4 -0
- package/api/operators/binary.js.map +1 -1
- package/api/operators/chaining.d.ts +5 -2
- package/api/operators/chaining.js +9 -2
- package/api/operators/chaining.js.map +1 -1
- package/api/operators/comma.d.ts +6 -2
- package/api/operators/comma.js +11 -2
- package/api/operators/comma.js.map +1 -1
- package/api/operators/grouping.d.ts +6 -2
- package/api/operators/grouping.js +11 -2
- package/api/operators/grouping.js.map +1 -1
- package/api/operators/logical.d.ts +2 -1
- package/api/operators/logical.js +4 -0
- package/api/operators/logical.js.map +1 -1
- package/api/operators/pipeline.d.ts +6 -2
- package/api/operators/pipeline.js +21 -6
- package/api/operators/pipeline.js.map +1 -1
- package/api/operators/ternary.d.ts +6 -2
- package/api/operators/ternary.js +17 -2
- package/api/operators/ternary.js.map +1 -1
- package/api/operators/unary.d.ts +6 -2
- package/api/operators/unary.js +20 -5
- package/api/operators/unary.js.map +1 -1
- package/api/operators/update.d.ts +6 -2
- package/api/operators/update.js +11 -2
- package/api/operators/update.js.map +1 -1
- package/api/statement/control/block.d.ts +6 -2
- package/api/statement/control/block.js +11 -2
- package/api/statement/control/block.js.map +1 -1
- package/api/statement/control/empty.d.ts +5 -1
- package/api/statement/control/empty.js +5 -1
- package/api/statement/control/empty.js.map +1 -1
- package/api/statement/control/if.d.ts +6 -2
- package/api/statement/control/if.js +16 -2
- package/api/statement/control/if.js.map +1 -1
- package/api/statement/control/switch.d.ts +13 -3
- package/api/statement/control/switch.js +35 -9
- package/api/statement/control/switch.js.map +1 -1
- package/api/statement/control/terminate.d.ts +9 -4
- package/api/statement/control/terminate.js +11 -1
- package/api/statement/control/terminate.js.map +1 -1
- package/api/statement/declarations/declares.d.ts +10 -3
- package/api/statement/declarations/declares.js +25 -6
- package/api/statement/declarations/declares.js.map +1 -1
- package/api/statement/iterations/for.d.ts +18 -5
- package/api/statement/iterations/for.js +67 -8
- package/api/statement/iterations/for.js.map +1 -1
- package/api/statement/iterations/while.d.ts +10 -3
- package/api/statement/iterations/while.js +26 -4
- package/api/statement/iterations/while.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/package.json +12 -4
- package/scope/event.d.ts +5 -0
- package/scope/event.js +41 -0
- package/scope/event.js.map +1 -0
- package/scope/index.d.ts +1 -0
- package/scope/index.js +1 -0
- package/scope/index.js.map +1 -1
- package/scope/proxy.d.ts +18 -6
- package/scope/proxy.js +57 -9
- package/scope/proxy.js.map +1 -1
- package/scope/scope.d.ts +71 -61
- package/scope/scope.js +104 -52
- package/scope/scope.js.map +1 -1
- package/scope/stack.d.ts +28 -28
- package/scope/stack.js.map +1 -1
- package/v8/nodes.d.ts +1 -1
- package/v8/parser.d.ts +2 -1
- package/v8/parser.js +16 -10
- package/v8/parser.js.map +1 -1
- package/v8/stream.d.ts +4 -2
- package/v8/stream.js +39 -17
- package/v8/stream.js.map +1 -1
- package/v8/token.d.ts +1 -1
- package/v8/token.js.map +1 -1
- package/visit/index.d.ts +1 -0
- package/visit/index.js +2 -0
- package/visit/index.js.map +1 -0
- package/visit/visitor.d.ts +11 -0
- package/visit/visitor.js +42 -0
- package/visit/visitor.js.map +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"member.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/member.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"member.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/member.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, CanFindScope,\n\tExpressionEventPath, VisitNodeType, VisitNodeListType\n} from '../expression.js';\nimport type { Scope, ScopeContext } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { AbstractExpressionNode } from '../abstract.js';\n\n@Deserializer('MemberExpression')\nexport class MemberExpression extends AbstractExpressionNode implements CanFindScope {\n\tstatic fromJSON(node: MemberExpression, deserializer: NodeDeserializer): MemberExpression {\n\t\treturn new MemberExpression(\n\t\t\tdeserializer(node.object),\n\t\t\tdeserializer(node.property),\n\t\t\tnode.computed,\n\t\t\tnode.optional\n\t\t);\n\t}\n\tstatic visit(node: MemberExpression, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void {\n\t\tvisitNode(node.object);\n\t\tvisitNode(node.property);\n\t}\n\tconstructor(\n\t\tprotected object: ExpressionNode,\n\t\tprotected property: ExpressionNode,\n\t\tprivate computed: boolean,\n\t\tprivate optional: boolean = false) {\n\t\tsuper();\n\t}\n\tgetObject() {\n\t\treturn this.object;\n\t}\n\tgetProperty() {\n\t\treturn this.property;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, value: any) {\n\t\tconst objectScope = (this.object as ExpressionNode & CanFindScope).findScope<ScopeContext>(stack);\n\t\tlet propertyKey: PropertyKey;\n\t\tif (this.computed) {\n\t\t\tpropertyKey = this.property.get(stack);\n\t\t\tobjectScope.set(propertyKey, value);\n\t\t} else {\n\t\t\tstack.pushScope(objectScope);\n\t\t\tthis.property.set(stack, value);\n\t\t\tstack.clearTo(objectScope);\n\t\t}\n\t\treturn value;\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\tconst objectRef = thisContext ?? this.object.get(stack);\n\t\tif (objectRef === undefined || objectRef === null) {\n\t\t\tif (this.optional) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthrow new TypeError(`Cannot read property '${this.property.toString()}' of ${objectRef}`);\n\t\t}\n\t\tlet value;\n\t\tif (this.computed) {\n\t\t\tvalue = objectRef[this.property.get(stack)];\n\t\t} else {\n\t\t\tvalue = this.property.get(stack, objectRef);\n\t\t}\n\t\treturn value;\n\t}\n\tfindScope<T extends object>(stack: Stack): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, scope: Scope<any>): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, objectScope?: Scope<any>): Scope<T> | undefined {\n\t\tif (!objectScope) {\n\t\t\tobjectScope = (this.object as ExpressionNode & CanFindScope).findScope(stack);\n\t\t}\n\t\treturn (this.property as ExpressionNode & CanFindScope).findScope(stack, objectScope);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn [this];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\tif (this.computed) {\n\t\t\tconst objPath = this.object.dependencyPath(computed);\n\t\t\tconst propertyDependency = this.property.dependency(true);\n\t\t\tconst propertyDependencyPath = propertyDependency.map(exp => exp.dependencyPath(true));\n\n\t\t\tconst computedPath: ExpressionEventPath = {\n\t\t\t\tcomputed: true,\n\t\t\t\tpath: ':' + propertyDependencyPath.flatMap(paths => paths).map(prop => prop.path).join(':'),\n\t\t\t\tcomputedPath: propertyDependencyPath.flatMap(paths => paths.flatMap(prop => prop.computed ? prop.computedPath : [])),\n\t\t\t};\n\t\t\treturn objPath.concat(computedPath);\n\t\t}\n\t\treturn this.object.dependencyPath(computed).concat(this.property.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\tif (this.computed) {\n\t\t\treturn `${this.object.toString()}${this.optional ? '?.' : ''}[${this.property.toString()}]`;\n\t\t}\n\t\treturn `${this.object.toString()}${this.optional ? '?.' : '.'}${this.property.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tobject: this.object.toJSON(),\n\t\t\tproperty: this.property.toJSON(),\n\t\t\tcomputed: this.computed,\n\t\t\toptional: this.optional\n\t\t};\n\t}\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { NodeDeserializer, ExpressionNode, CanDeclareExpression } from '../expression.js';
|
|
1
|
+
import type { NodeDeserializer, ExpressionNode, CanDeclareExpression, ExpressionEventPath, VisitNodeType, VisitNodeListType } from '../expression.js';
|
|
2
|
+
import type { Scope, ScopeType } from '../../scope/scope.js';
|
|
2
3
|
import type { Stack } from '../../scope/stack.js';
|
|
3
|
-
import type { ScopeType } from '../../scope/scope.js';
|
|
4
4
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
5
5
|
import { RestElement } from '../computing/rest.js';
|
|
6
6
|
export declare class Property extends AbstractExpressionNode implements CanDeclareExpression {
|
|
@@ -8,37 +8,46 @@ export declare class Property extends AbstractExpressionNode implements CanDecla
|
|
|
8
8
|
protected value: CanDeclareExpression | ExpressionNode;
|
|
9
9
|
protected kind: 'init' | 'get' | 'set';
|
|
10
10
|
static fromJSON(node: Property, deserializer: NodeDeserializer): Property;
|
|
11
|
+
static visit(node: Property, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void;
|
|
11
12
|
constructor(key: ExpressionNode, value: CanDeclareExpression | ExpressionNode, kind: 'init' | 'get' | 'set');
|
|
12
13
|
getKey(): ExpressionNode;
|
|
13
14
|
getValue(): ExpressionNode | CanDeclareExpression;
|
|
14
15
|
set(stack: Stack, value: any): void;
|
|
16
|
+
shareVariables(scopeList: Scope<any>[]): void;
|
|
15
17
|
get(stack: Stack, thisContext: ThisType<any>): any;
|
|
16
18
|
declareVariable(stack: Stack, scopeType: ScopeType, objectValue: any): void;
|
|
17
|
-
|
|
19
|
+
dependency(computed?: true): ExpressionNode[];
|
|
20
|
+
dependencyPath(computed?: true): ExpressionEventPath[];
|
|
18
21
|
toString(): string;
|
|
19
22
|
toJson(): object;
|
|
20
23
|
}
|
|
21
24
|
export declare class ObjectExpression extends AbstractExpressionNode {
|
|
22
25
|
private properties;
|
|
23
26
|
static fromJSON(node: ObjectExpression, deserializer: NodeDeserializer): ObjectExpression;
|
|
27
|
+
static visit(node: ObjectExpression, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void;
|
|
24
28
|
constructor(properties: Property[]);
|
|
25
29
|
getProperties(): Property[];
|
|
26
30
|
set(stack: Stack): void;
|
|
31
|
+
shareVariables(scopeList: Scope<any>[]): void;
|
|
27
32
|
get(stack: Stack): {};
|
|
28
|
-
|
|
33
|
+
dependency(computed?: true): ExpressionNode[];
|
|
34
|
+
dependencyPath(computed?: true): ExpressionEventPath[];
|
|
29
35
|
toString(): string;
|
|
30
36
|
toJson(): object;
|
|
31
37
|
}
|
|
32
38
|
export declare class ObjectPattern extends AbstractExpressionNode implements CanDeclareExpression {
|
|
33
39
|
private properties;
|
|
34
40
|
static fromJSON(node: ObjectPattern, deserializer: NodeDeserializer): ObjectPattern;
|
|
41
|
+
static visit(node: ObjectPattern, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void;
|
|
35
42
|
constructor(properties: (Property | RestElement)[]);
|
|
36
43
|
getProperties(): (RestElement | Property)[];
|
|
44
|
+
shareVariables(scopeList: Scope<any>[]): void;
|
|
37
45
|
set(stack: Stack, objectValue: any): void;
|
|
38
46
|
get(scopeProvider: Stack): void;
|
|
39
47
|
declareVariable(stack: Stack, scopeType: ScopeType, objectValue: any): void;
|
|
40
48
|
private getFromObject;
|
|
41
|
-
|
|
49
|
+
dependency(computed?: true): ExpressionNode[];
|
|
50
|
+
dependencyPath(computed?: true): ExpressionEventPath[];
|
|
42
51
|
toString(): string;
|
|
43
52
|
toJson(): object;
|
|
44
53
|
}
|
package/api/definition/object.js
CHANGED
|
@@ -13,6 +13,10 @@ let Property = Property_1 = class Property extends AbstractExpressionNode {
|
|
|
13
13
|
static fromJSON(node, deserializer) {
|
|
14
14
|
return new Property_1(deserializer(node.key), deserializer(node.value), node.kind);
|
|
15
15
|
}
|
|
16
|
+
static visit(node, visitNode, visitNodeList) {
|
|
17
|
+
visitNode(node.key);
|
|
18
|
+
visitNode(node.value);
|
|
19
|
+
}
|
|
16
20
|
getKey() {
|
|
17
21
|
return this.key;
|
|
18
22
|
}
|
|
@@ -22,6 +26,9 @@ let Property = Property_1 = class Property extends AbstractExpressionNode {
|
|
|
22
26
|
set(stack, value) {
|
|
23
27
|
this.key.set(stack, value);
|
|
24
28
|
}
|
|
29
|
+
shareVariables(scopeList) {
|
|
30
|
+
this.value.shareVariables(scopeList);
|
|
31
|
+
}
|
|
25
32
|
get(stack, thisContext) {
|
|
26
33
|
const name = this.key.get(stack);
|
|
27
34
|
let value;
|
|
@@ -49,8 +56,11 @@ let Property = Property_1 = class Property extends AbstractExpressionNode {
|
|
|
49
56
|
const propertyValue = objectValue[propertyName];
|
|
50
57
|
this.value.declareVariable(stack, scopeType, propertyValue);
|
|
51
58
|
}
|
|
52
|
-
|
|
53
|
-
return this.key.
|
|
59
|
+
dependency(computed) {
|
|
60
|
+
return this.key.dependency(computed).concat(this.value.dependency(computed));
|
|
61
|
+
}
|
|
62
|
+
dependencyPath(computed) {
|
|
63
|
+
return this.key.dependencyPath(computed).concat(this.value.dependencyPath(computed));
|
|
54
64
|
}
|
|
55
65
|
toString() {
|
|
56
66
|
return `${this.key.toString()}: ${this.value.toString()}`;
|
|
@@ -76,12 +86,18 @@ let ObjectExpression = ObjectExpression_1 = class ObjectExpression extends Abstr
|
|
|
76
86
|
static fromJSON(node, deserializer) {
|
|
77
87
|
return new ObjectExpression_1(node.properties.map(deserializer));
|
|
78
88
|
}
|
|
89
|
+
static visit(node, visitNode, visitNodeList) {
|
|
90
|
+
visitNodeList(node.properties);
|
|
91
|
+
}
|
|
79
92
|
getProperties() {
|
|
80
93
|
return this.properties;
|
|
81
94
|
}
|
|
82
95
|
set(stack) {
|
|
83
96
|
throw new Error('ObjectExpression#set() has no implementation.');
|
|
84
97
|
}
|
|
98
|
+
shareVariables(scopeList) {
|
|
99
|
+
this.properties.forEach(prop => prop.shareVariables(scopeList));
|
|
100
|
+
}
|
|
85
101
|
get(stack) {
|
|
86
102
|
const newObject = {};
|
|
87
103
|
for (const property of this.properties) {
|
|
@@ -89,8 +105,11 @@ let ObjectExpression = ObjectExpression_1 = class ObjectExpression extends Abstr
|
|
|
89
105
|
}
|
|
90
106
|
return newObject;
|
|
91
107
|
}
|
|
92
|
-
|
|
93
|
-
return this.properties.flatMap(property => property.
|
|
108
|
+
dependency(computed) {
|
|
109
|
+
return this.properties.flatMap(property => property.dependency(computed));
|
|
110
|
+
}
|
|
111
|
+
dependencyPath(computed) {
|
|
112
|
+
return this.properties.flatMap(property => property.dependencyPath(computed));
|
|
94
113
|
}
|
|
95
114
|
toString() {
|
|
96
115
|
return `{ ${this.properties.map(item => item.toString()).join(', ')} }`;
|
|
@@ -114,9 +133,13 @@ let ObjectPattern = ObjectPattern_1 = class ObjectPattern extends AbstractExpres
|
|
|
114
133
|
static fromJSON(node, deserializer) {
|
|
115
134
|
return new ObjectPattern_1(node.properties.map(deserializer));
|
|
116
135
|
}
|
|
136
|
+
static visit(node, visitNode, visitNodeList) {
|
|
137
|
+
visitNodeList(node.properties);
|
|
138
|
+
}
|
|
117
139
|
getProperties() {
|
|
118
140
|
return this.properties;
|
|
119
141
|
}
|
|
142
|
+
shareVariables(scopeList) { }
|
|
120
143
|
set(stack, objectValue) {
|
|
121
144
|
throw new Error('ObjectPattern#set() has no implementation.');
|
|
122
145
|
}
|
|
@@ -144,8 +167,11 @@ let ObjectPattern = ObjectPattern_1 = class ObjectPattern extends AbstractExpres
|
|
|
144
167
|
}
|
|
145
168
|
return restObject;
|
|
146
169
|
}
|
|
147
|
-
|
|
148
|
-
return this.properties.flatMap(property => property.
|
|
170
|
+
dependency(computed) {
|
|
171
|
+
return this.properties.flatMap(property => property.dependency(computed));
|
|
172
|
+
}
|
|
173
|
+
dependencyPath(computed) {
|
|
174
|
+
return this.properties.flatMap(property => property.dependencyPath(computed));
|
|
149
175
|
}
|
|
150
176
|
toString() {
|
|
151
177
|
return `{ ${this.properties.map(item => item.toString()).join(', ')} }`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/object.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NodeDeserializer, ExpressionNode, CanDeclareExpression } from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport type { ScopeType } from '../../scope/scope.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { RestElement } from '../computing/rest.js';\n\n@Deserializer('Property')\nexport class Property extends AbstractExpressionNode implements CanDeclareExpression {\n\tstatic fromJSON(node: Property, deserializer: NodeDeserializer): Property {\n\t\treturn new Property(deserializer(node.key), deserializer(node.value) as CanDeclareExpression, node.kind);\n\t}\n\tconstructor(protected key: ExpressionNode, protected value: CanDeclareExpression | ExpressionNode, protected kind: 'init' | 'get' | 'set') {\n\t\tsuper();\n\t}\n\tgetKey() {\n\t\treturn this.key;\n\t}\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthis.key.set(stack, value);\n\t}\n\tget(stack: Stack, thisContext: ThisType<any>): any {\n\t\tconst name = this.key.get(stack);\n\t\tlet value: any;\n\t\tswitch (this.kind) {\n\t\t\tcase 'get':\n\t\t\t\tconst get: () => any = this.value.get(stack);\n\t\t\t\tObject.defineProperty(thisContext, name, { get, configurable: true, enumerable: true });\n\t\t\t\tvalue = get;\n\t\t\t\tbreak;\n\t\t\tcase 'set':\n\t\t\t\tconst set: (v: any) => void = this.value.get(stack);\n\t\t\t\tObject.defineProperty(thisContext, name, { set, configurable: true, enumerable: true });\n\t\t\t\tvalue = set;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\tcase 'init':\n\t\t\t\tvalue = this.value.get(stack);\n\t\t\t\tObject.defineProperty(thisContext, name, { value, configurable: true, enumerable: true, writable: true });\n\t\t\t\tbreak;\n\t\t}\n\t\treturn value;\n\t}\n\tdeclareVariable(stack: Stack, scopeType: ScopeType, objectValue: any): void {\n\t\tconst propertyName = this.key.get(stack);\n\t\tconst propertyValue = objectValue[propertyName];\n\t\t(this.value as CanDeclareExpression).declareVariable(stack, scopeType, propertyValue);\n\t}\n\tevents(): string[] {\n\t\treturn this.key.events().concat(this.value.events());\n\t}\n\ttoString(): string {\n\t\treturn `${this.key.toString()}: ${this.value.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tkey: this.key.toJSON(),\n\t\t\tvalue: this.value.toJSON(),\n\t\t\tkind: this.kind\n\t\t};\n\t}\n}\n\n@Deserializer('ObjectExpression')\nexport class ObjectExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: ObjectExpression, deserializer: NodeDeserializer): ObjectExpression {\n\t\treturn new ObjectExpression(node.properties.map(deserializer) as Property[]);\n\t}\n\tconstructor(private properties: Property[]) {\n\t\tsuper();\n\t}\n\tgetProperties() {\n\t\treturn this.properties;\n\t}\n\tset(stack: Stack) {\n\t\tthrow new Error('ObjectExpression#set() has no implementation.');\n\t}\n\tget(stack: Stack) {\n\t\tconst newObject = {};\n\t\tfor (const property of this.properties) {\n\t\t\tproperty.get(stack, newObject);\n\t\t}\n\t\treturn newObject;\n\t}\n\tevents(parent?: string): string[] {\n\t\treturn this.properties.flatMap(property => property.events());\n\t}\n\ttoString() {\n\t\treturn `{ ${this.properties.map(item => item.toString()).join(', ')} }`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tproperties: this.properties.map(item => item.toJSON())\n\t\t};\n\t}\n}\n\n@Deserializer('ObjectPattern')\nexport class ObjectPattern extends AbstractExpressionNode implements CanDeclareExpression {\n\tstatic fromJSON(node: ObjectPattern, deserializer: NodeDeserializer): ObjectPattern {\n\t\treturn new ObjectPattern(node.properties.map(deserializer) as (Property | RestElement)[]);\n\t}\n\tconstructor(private properties: (Property | RestElement)[]) {\n\t\tsuper();\n\t}\n\tgetProperties() {\n\t\treturn this.properties;\n\t}\n\tset(stack: Stack, objectValue: any) {\n\t\tthrow new Error('ObjectPattern#set() has no implementation.');\n\t}\n\tget(scopeProvider: Stack) {\n\t\tthrow new Error('ObjectPattern#get() has no implementation.');\n\t}\n\tdeclareVariable(stack: Stack, scopeType: ScopeType, objectValue: any): void {\n\t\tfor (const property of this.properties) {\n\t\t\tif (property instanceof RestElement) {\n\t\t\t\tobjectValue = this.getFromObject(stack, objectValue);\n\t\t\t}\n\t\t\tproperty.declareVariable(stack, scopeType, objectValue);\n\t\t}\n\t}\n\tprivate getFromObject(stack: Stack, objectValue: { [key: PropertyKey]: any }) {\n\t\tconst keys: PropertyKey[] = [];\n\t\tkeys.push(...Object.keys(objectValue));\n\t\tkeys.push(...Object.getOwnPropertySymbols(objectValue));\n\t\tconst restObject: typeof objectValue = {};\n\t\tconst context = stack.lastScope<typeof objectValue>().getContext()!;\n\t\tfor (const key of keys) {\n\t\t\tif (!(key in context)) {\n\t\t\t\trestObject[key] = objectValue[key];\n\t\t\t}\n\t\t}\n\t\treturn restObject;\n\t}\n\tevents(parent?: string): string[] {\n\t\treturn this.properties.flatMap(property => property.events());\n\t}\n\ttoString() {\n\t\treturn `{ ${this.properties.map(item => item.toString()).join(', ')} }`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tproperties: this.properties.map(item => item.toJSON())\n\t\t};\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/object.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, CanDeclareExpression,\n\tExpressionEventPath, VisitNodeType, VisitNodeListType\n} from '../expression.js';\nimport type { Scope, ScopeType } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { RestElement } from '../computing/rest.js';\n\n@Deserializer('Property')\nexport class Property extends AbstractExpressionNode implements CanDeclareExpression {\n\tstatic fromJSON(node: Property, deserializer: NodeDeserializer): Property {\n\t\treturn new Property(deserializer(node.key), deserializer(node.value) as CanDeclareExpression, node.kind);\n\t}\n\tstatic visit(node: Property, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void {\n\t\tvisitNode(node.key);\n\t\tvisitNode(node.value);\n\t}\n\tconstructor(protected key: ExpressionNode, protected value: CanDeclareExpression | ExpressionNode, protected kind: 'init' | 'get' | 'set') {\n\t\tsuper();\n\t}\n\tgetKey() {\n\t\treturn this.key;\n\t}\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthis.key.set(stack, value);\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.value.shareVariables(scopeList);\n\t}\n\tget(stack: Stack, thisContext: ThisType<any>): any {\n\t\tconst name = this.key.get(stack);\n\t\tlet value: any;\n\t\tswitch (this.kind) {\n\t\t\tcase 'get':\n\t\t\t\tconst get: () => any = this.value.get(stack);\n\t\t\t\tObject.defineProperty(thisContext, name, { get, configurable: true, enumerable: true });\n\t\t\t\tvalue = get;\n\t\t\t\tbreak;\n\t\t\tcase 'set':\n\t\t\t\tconst set: (v: any) => void = this.value.get(stack);\n\t\t\t\tObject.defineProperty(thisContext, name, { set, configurable: true, enumerable: true });\n\t\t\t\tvalue = set;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\tcase 'init':\n\t\t\t\tvalue = this.value.get(stack);\n\t\t\t\tObject.defineProperty(thisContext, name, { value, configurable: true, enumerable: true, writable: true });\n\t\t\t\tbreak;\n\t\t}\n\t\treturn value;\n\t}\n\tdeclareVariable(stack: Stack, scopeType: ScopeType, objectValue: any): void {\n\t\tconst propertyName = this.key.get(stack);\n\t\tconst propertyValue = objectValue[propertyName];\n\t\t(this.value as CanDeclareExpression).declareVariable(stack, scopeType, propertyValue);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.key.dependency(computed).concat(this.value.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.key.dependencyPath(computed).concat(this.value.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\treturn `${this.key.toString()}: ${this.value.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tkey: this.key.toJSON(),\n\t\t\tvalue: this.value.toJSON(),\n\t\t\tkind: this.kind\n\t\t};\n\t}\n}\n\n@Deserializer('ObjectExpression')\nexport class ObjectExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: ObjectExpression, deserializer: NodeDeserializer): ObjectExpression {\n\t\treturn new ObjectExpression(node.properties.map(deserializer) as Property[]);\n\t}\n\tstatic visit(node: ObjectExpression, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void {\n\t\tvisitNodeList(node.properties);\n\t}\n\tconstructor(private properties: Property[]) {\n\t\tsuper();\n\t}\n\tgetProperties() {\n\t\treturn this.properties;\n\t}\n\tset(stack: Stack) {\n\t\tthrow new Error('ObjectExpression#set() has no implementation.');\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.properties.forEach(prop => prop.shareVariables(scopeList));\n\t}\n\tget(stack: Stack) {\n\t\tconst newObject = {};\n\t\tfor (const property of this.properties) {\n\t\t\tproperty.get(stack, newObject);\n\t\t}\n\t\treturn newObject;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.properties.flatMap(property => property.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.properties.flatMap(property => property.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\treturn `{ ${this.properties.map(item => item.toString()).join(', ')} }`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tproperties: this.properties.map(item => item.toJSON())\n\t\t};\n\t}\n}\n\n@Deserializer('ObjectPattern')\nexport class ObjectPattern extends AbstractExpressionNode implements CanDeclareExpression {\n\tstatic fromJSON(node: ObjectPattern, deserializer: NodeDeserializer): ObjectPattern {\n\t\treturn new ObjectPattern(node.properties.map(deserializer) as (Property | RestElement)[]);\n\t}\n\tstatic visit(node: ObjectPattern, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void {\n\t\tvisitNodeList(node.properties);\n\t}\n\tconstructor(private properties: (Property | RestElement)[]) {\n\t\tsuper();\n\t}\n\tgetProperties() {\n\t\treturn this.properties;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, objectValue: any) {\n\t\tthrow new Error('ObjectPattern#set() has no implementation.');\n\t}\n\tget(scopeProvider: Stack) {\n\t\tthrow new Error('ObjectPattern#get() has no implementation.');\n\t}\n\tdeclareVariable(stack: Stack, scopeType: ScopeType, objectValue: any): void {\n\t\tfor (const property of this.properties) {\n\t\t\tif (property instanceof RestElement) {\n\t\t\t\tobjectValue = this.getFromObject(stack, objectValue);\n\t\t\t}\n\t\t\tproperty.declareVariable(stack, scopeType, objectValue);\n\t\t}\n\t}\n\tprivate getFromObject(stack: Stack, objectValue: { [key: PropertyKey]: any }) {\n\t\tconst keys: PropertyKey[] = [];\n\t\tkeys.push(...Object.keys(objectValue));\n\t\tkeys.push(...Object.getOwnPropertySymbols(objectValue));\n\t\tconst restObject: typeof objectValue = {};\n\t\tconst context = stack.lastScope<typeof objectValue>().getContext()!;\n\t\tfor (const key of keys) {\n\t\t\tif (!(key in context)) {\n\t\t\t\trestObject[key] = objectValue[key];\n\t\t\t}\n\t\t}\n\t\treturn restObject;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.properties.flatMap(property => property.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.properties.flatMap(property => property.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\treturn `{ ${this.properties.map(item => item.toString()).join(', ')} }`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tproperties: this.properties.map(item => item.toJSON())\n\t\t};\n\t}\n}\n"]}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
import type { NodeDeserializer, ExpressionNode } from '../expression.js';
|
|
1
|
+
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType, VisitNodeListType } from '../expression.js';
|
|
2
|
+
import type { Scope } from '../../scope/scope.js';
|
|
2
3
|
import type { Stack } from '../../scope/stack.js';
|
|
3
4
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
4
5
|
export declare class ExpressionStatement extends AbstractExpressionNode {
|
|
5
6
|
private body;
|
|
6
7
|
static fromJSON(node: ExpressionStatement, deserializer: NodeDeserializer): ExpressionStatement;
|
|
8
|
+
static visit(node: ExpressionStatement, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void;
|
|
7
9
|
constructor(body: ExpressionNode[]);
|
|
8
10
|
getBody(): ExpressionNode[];
|
|
11
|
+
shareVariables(scopeList: Scope<any>[]): void;
|
|
9
12
|
set(stack: Stack, value: any): void;
|
|
10
13
|
get(stack: Stack): undefined;
|
|
11
|
-
|
|
14
|
+
dependency(computed?: true): ExpressionNode[];
|
|
15
|
+
dependencyPath(computed?: true): ExpressionEventPath[];
|
|
12
16
|
toString(): string;
|
|
13
17
|
toJson(): object;
|
|
14
18
|
}
|
|
@@ -10,9 +10,15 @@ let ExpressionStatement = ExpressionStatement_1 = class ExpressionStatement exte
|
|
|
10
10
|
static fromJSON(node, deserializer) {
|
|
11
11
|
return new ExpressionStatement_1(node.body.map(line => deserializer(line)));
|
|
12
12
|
}
|
|
13
|
+
static visit(node, visitNode, visitNodeList) {
|
|
14
|
+
visitNodeList(node.body);
|
|
15
|
+
}
|
|
13
16
|
getBody() {
|
|
14
17
|
return this.body;
|
|
15
18
|
}
|
|
19
|
+
shareVariables(scopeList) {
|
|
20
|
+
this.body.forEach(statement => statement.shareVariables(scopeList));
|
|
21
|
+
}
|
|
16
22
|
set(stack, value) {
|
|
17
23
|
throw new Error(`ExpressionStatement#set() has no implementation.`);
|
|
18
24
|
}
|
|
@@ -21,8 +27,11 @@ let ExpressionStatement = ExpressionStatement_1 = class ExpressionStatement exte
|
|
|
21
27
|
this.body.forEach(node => value = node.get(stack));
|
|
22
28
|
return value;
|
|
23
29
|
}
|
|
24
|
-
|
|
25
|
-
return this.body.flatMap(
|
|
30
|
+
dependency(computed) {
|
|
31
|
+
return this.body.flatMap(exp => exp.dependency(computed));
|
|
32
|
+
}
|
|
33
|
+
dependencyPath(computed) {
|
|
34
|
+
return this.body.flatMap(node => node.dependencyPath(computed));
|
|
26
35
|
}
|
|
27
36
|
toString() {
|
|
28
37
|
return this.body.map(node => node.toString()).join('; ').concat(';');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/statement.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/statement.ts"],"names":[],"mappings":";;AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,IAAa,mBAAmB,2BAAhC,MAAa,mBAAoB,SAAQ,sBAAsB;IAO9D,YAAoB,IAAsB;QACzC,KAAK,EAAE,CAAC;QADW,SAAI,GAAJ,IAAI,CAAkB;IAE1C,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAyB,EAAE,YAA8B;QACxE,OAAO,IAAI,qBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAyB,EAAE,SAAwB,EAAE,aAAgC;QACjG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAID,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IACD,cAAc,CAAC,SAAuB;QACrC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACrE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,IAAI,KAAK,CAAC;QACV,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,OAAO,KAAK,CAAC;IACd,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACtE,CAAC;IACD,MAAM;QACL,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;IACrD,CAAC;CACD,CAAA;AApCY,mBAAmB;IAD/B,YAAY,CAAC,qBAAqB,CAAC;;GACvB,mBAAmB,CAoC/B;SApCY,mBAAmB","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, ExpressionEventPath,\n\tVisitNodeType, VisitNodeListType,\n} from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('ExpressionStatement')\nexport class ExpressionStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: ExpressionStatement, deserializer: NodeDeserializer): ExpressionStatement {\n\t\treturn new ExpressionStatement(node.body.map(line => deserializer(line)));\n\t}\n\tstatic visit(node: ExpressionStatement, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void {\n\t\tvisitNodeList(node.body);\n\t}\n\tconstructor(private body: ExpressionNode[]) {\n\t\tsuper();\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.body.forEach(statement => statement.shareVariables(scopeList));\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`ExpressionStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tlet value;\n\t\tthis.body.forEach(node => value = node.get(stack));\n\t\treturn value;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.body.flatMap(exp => exp.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.body.flatMap(node => node.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\treturn this.body.map(node => node.toString()).join('; ').concat(';');\n\t}\n\ttoJson(): object {\n\t\treturn { body: this.body.map(exp => exp.toJSON()) };\n\t}\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CanDeclareExpression, ExpressionNode, NodeDeserializer, CanFindScope } from '../expression.js';
|
|
1
|
+
import type { CanDeclareExpression, ExpressionNode, NodeDeserializer, CanFindScope, ExpressionEventPath, VisitNodeType, VisitNodeListType } from '../expression.js';
|
|
2
2
|
import type { Scope, ScopeType } from '../../scope/scope.js';
|
|
3
3
|
import type { Stack } from '../../scope/stack.js';
|
|
4
4
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
@@ -7,12 +7,14 @@ export declare class Identifier extends AbstractExpressionNode implements CanDec
|
|
|
7
7
|
static fromJSON(node: Identifier): Identifier;
|
|
8
8
|
constructor(name: string | number);
|
|
9
9
|
getName(): string | number;
|
|
10
|
+
shareVariables(scopeList: Scope<any>[]): void;
|
|
10
11
|
set(stack: Stack, value: any): any;
|
|
11
12
|
get(stack: Stack, thisContext?: any): any;
|
|
12
13
|
findScope<T extends object>(stack: Stack): Scope<T>;
|
|
13
14
|
findScope<T extends object>(stack: Stack, scope: Scope<any>): Scope<T>;
|
|
14
15
|
declareVariable(stack: Stack, scopeType: ScopeType, propertyValue: any): any;
|
|
15
|
-
|
|
16
|
+
dependency(computed?: true): ExpressionNode[];
|
|
17
|
+
dependencyPath(computed?: true): ExpressionEventPath[];
|
|
16
18
|
toString(): string;
|
|
17
19
|
toJson(): object;
|
|
18
20
|
}
|
|
@@ -21,11 +23,13 @@ export declare class Literal<T> extends AbstractExpressionNode implements CanFin
|
|
|
21
23
|
static fromJSON(node: Literal<any>): Literal<string> | Literal<number> | Literal<bigint> | Literal<boolean> | Literal<RegExp> | Literal<null | undefined>;
|
|
22
24
|
constructor(value: T);
|
|
23
25
|
getValue(): T;
|
|
26
|
+
shareVariables(scopeList: Scope<any>[]): void;
|
|
24
27
|
set(): void;
|
|
25
28
|
get(): T;
|
|
26
29
|
findScope<V extends object>(stack: Stack): Scope<V>;
|
|
27
30
|
findScope<V extends object>(stack: Stack, scope: Scope<any>): Scope<V>;
|
|
28
|
-
|
|
31
|
+
dependency(computed: true): ExpressionNode[];
|
|
32
|
+
dependencyPath(computed?: true): ExpressionEventPath[];
|
|
29
33
|
toString(): string;
|
|
30
34
|
toJson(): object;
|
|
31
35
|
}
|
|
@@ -38,22 +42,31 @@ export declare class StringLiteral extends Literal<string> {
|
|
|
38
42
|
toJson(): object;
|
|
39
43
|
}
|
|
40
44
|
export declare class TemplateLiteralExpressionNode extends AbstractExpressionNode {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
45
|
+
protected quasis: string[];
|
|
46
|
+
protected expressions: ExpressionNode[];
|
|
47
|
+
protected tag?: ExpressionNode | undefined;
|
|
44
48
|
static fromJSON(node: TemplateLiteralExpressionNode, deserializer: NodeDeserializer): TemplateLiteralExpressionNode;
|
|
49
|
+
static visit(node: TemplateLiteralExpressionNode, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void;
|
|
45
50
|
constructor(quasis: string[], expressions: ExpressionNode[], tag?: ExpressionNode | undefined);
|
|
51
|
+
getTag(): ExpressionNode | undefined;
|
|
52
|
+
getExpressions(): ExpressionNode[];
|
|
53
|
+
shareVariables(scopeList: Scope<any>[]): void;
|
|
46
54
|
set(stack: Stack, value: any): void;
|
|
47
55
|
get(stack: Stack): any;
|
|
48
|
-
|
|
56
|
+
dependency(computed?: true): ExpressionNode[];
|
|
57
|
+
dependencyPath(computed?: true): ExpressionEventPath[];
|
|
49
58
|
toString(): string;
|
|
50
59
|
toJson(): object;
|
|
51
60
|
}
|
|
52
61
|
export declare class TemplateLiteral extends TemplateLiteralExpressionNode {
|
|
62
|
+
protected tag: undefined;
|
|
53
63
|
constructor(quasis: string[], expressions: ExpressionNode[]);
|
|
64
|
+
getTag(): undefined;
|
|
54
65
|
}
|
|
55
66
|
export declare class TaggedTemplateExpression extends TemplateLiteralExpressionNode {
|
|
67
|
+
protected tag: ExpressionNode;
|
|
56
68
|
constructor(tag: ExpressionNode, quasis: string[], expressions: ExpressionNode[]);
|
|
69
|
+
getTag(): ExpressionNode;
|
|
57
70
|
}
|
|
58
71
|
export declare class NumberLiteral extends Literal<number> {
|
|
59
72
|
static fromJSON(node: NumberLiteral): NumberLiteral;
|
package/api/definition/values.js
CHANGED
|
@@ -13,6 +13,7 @@ let Identifier = Identifier_1 = class Identifier extends AbstractExpressionNode
|
|
|
13
13
|
getName() {
|
|
14
14
|
return this.name;
|
|
15
15
|
}
|
|
16
|
+
shareVariables(scopeList) { }
|
|
16
17
|
set(stack, value) {
|
|
17
18
|
return stack.set(this.name, value) ? value : void 0;
|
|
18
19
|
}
|
|
@@ -32,11 +33,12 @@ let Identifier = Identifier_1 = class Identifier extends AbstractExpressionNode
|
|
|
32
33
|
declareVariable(stack, scopeType, propertyValue) {
|
|
33
34
|
return stack.declareVariable(scopeType, this.name, propertyValue);
|
|
34
35
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
dependency(computed) {
|
|
37
|
+
return [this];
|
|
38
|
+
}
|
|
39
|
+
dependencyPath(computed) {
|
|
40
|
+
const path = [{ computed: false, path: this.toString() }];
|
|
41
|
+
return computed ? [{ computed, path: this.toString(), computedPath: [path] }] : path;
|
|
40
42
|
}
|
|
41
43
|
toString() {
|
|
42
44
|
return String(this.name);
|
|
@@ -61,6 +63,7 @@ let Literal = Literal_1 = class Literal extends AbstractExpressionNode {
|
|
|
61
63
|
getValue() {
|
|
62
64
|
return this.value;
|
|
63
65
|
}
|
|
66
|
+
shareVariables(scopeList) { }
|
|
64
67
|
set() {
|
|
65
68
|
throw new Error(`${this.constructor.name}#set() has no implementation.`);
|
|
66
69
|
}
|
|
@@ -74,8 +77,11 @@ let Literal = Literal_1 = class Literal extends AbstractExpressionNode {
|
|
|
74
77
|
scope = stack.findScope(this.value);
|
|
75
78
|
return scope.getScope(this.value);
|
|
76
79
|
}
|
|
77
|
-
|
|
78
|
-
return [];
|
|
80
|
+
dependency(computed) {
|
|
81
|
+
return computed ? [this] : [];
|
|
82
|
+
}
|
|
83
|
+
dependencyPath(computed) {
|
|
84
|
+
return computed ? [{ computed: false, path: this.toString() }] : [];
|
|
79
85
|
}
|
|
80
86
|
toString() {
|
|
81
87
|
return String(this.value);
|
|
@@ -143,6 +149,19 @@ export class TemplateLiteralExpressionNode extends AbstractExpressionNode {
|
|
|
143
149
|
static fromJSON(node, deserializer) {
|
|
144
150
|
return new TemplateLiteralExpressionNode(node.quasis, node.expressions.map(deserializer), node.tag ? deserializer(node.tag) : void 0);
|
|
145
151
|
}
|
|
152
|
+
static visit(node, visitNode, visitNodeList) {
|
|
153
|
+
node.tag && visitNode(node.tag);
|
|
154
|
+
visitNodeList(node.expressions);
|
|
155
|
+
}
|
|
156
|
+
getTag() {
|
|
157
|
+
return this.tag;
|
|
158
|
+
}
|
|
159
|
+
getExpressions() {
|
|
160
|
+
return this.expressions;
|
|
161
|
+
}
|
|
162
|
+
shareVariables(scopeList) {
|
|
163
|
+
this.expressions.forEach(value => value.shareVariables(scopeList));
|
|
164
|
+
}
|
|
146
165
|
set(stack, value) {
|
|
147
166
|
throw new Error(`TemplateLiteralExpressionNode#set() has no implementation.`);
|
|
148
167
|
}
|
|
@@ -153,8 +172,11 @@ export class TemplateLiteralExpressionNode extends AbstractExpressionNode {
|
|
|
153
172
|
const values = this.expressions.map(expr => expr.get(stack));
|
|
154
173
|
return tagged(templateStringsArray, ...values);
|
|
155
174
|
}
|
|
156
|
-
|
|
157
|
-
return this.expressions.flatMap(
|
|
175
|
+
dependency(computed) {
|
|
176
|
+
return this.expressions.flatMap(exp => exp.dependency(computed));
|
|
177
|
+
}
|
|
178
|
+
dependencyPath(computed) {
|
|
179
|
+
return this.expressions.flatMap(exp => exp.dependencyPath(computed));
|
|
158
180
|
}
|
|
159
181
|
toString() {
|
|
160
182
|
let str = this.tag?.toString() || '';
|
|
@@ -182,6 +204,9 @@ let TemplateLiteral = class TemplateLiteral extends TemplateLiteralExpressionNod
|
|
|
182
204
|
constructor(quasis, expressions) {
|
|
183
205
|
super(quasis, expressions);
|
|
184
206
|
}
|
|
207
|
+
getTag() {
|
|
208
|
+
return undefined;
|
|
209
|
+
}
|
|
185
210
|
};
|
|
186
211
|
TemplateLiteral = __decorate([
|
|
187
212
|
Deserializer('TemplateLiteral'),
|
|
@@ -192,6 +217,9 @@ let TaggedTemplateExpression = class TaggedTemplateExpression extends TemplateLi
|
|
|
192
217
|
constructor(tag, quasis, expressions) {
|
|
193
218
|
super(quasis, expressions, tag);
|
|
194
219
|
}
|
|
220
|
+
getTag() {
|
|
221
|
+
return super.getTag();
|
|
222
|
+
}
|
|
195
223
|
};
|
|
196
224
|
TaggedTemplateExpression = __decorate([
|
|
197
225
|
Deserializer('TaggedTemplateExpression'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"values.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/values.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tCanDeclareExpression, ExpressionNode,\n\tNodeDeserializer, CanFindScope\n} from '../expression.js';\nimport type { Scope, ScopeType } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { AbstractExpressionNode } from '../abstract.js';\n\n/**\n * An identifier is a sequence of characters in the code that identifies a variable, function, or property.\n * In JavaScript, identifiers are case-sensitive and can contain Unicode letters, $, _, and digits (0-9),\n * but may not start with a digit.\n * An identifier differs from a string in that a string is data,\n * while an identifier is part of the code. In JavaScript,\n * there is no way to convert identifiers to strings,\n * but sometimes it is possible to parse strings into identifiers.\n */\n@Deserializer('Identifier')\nexport class Identifier extends AbstractExpressionNode implements CanDeclareExpression, CanFindScope {\n\tstatic fromJSON(node: Identifier): Identifier {\n\t\treturn new Identifier(node.name);\n\t}\n\tconstructor(protected name: string | number) {\n\t\tsuper();\n\t}\n\tgetName() {\n\t\treturn this.name;\n\t}\n\tset(stack: Stack, value: any) {\n\t\treturn stack.set(this.name, value) ? value : void 0;\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\tif (thisContext) {\n\t\t\treturn thisContext[this.name];\n\t\t}\n\t\treturn stack.get(this.name);\n\t}\n\tfindScope<T extends object>(stack: Stack): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, scope: Scope<any>): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, scope?: Scope<any>): Scope<T> | undefined {\n\t\tif (scope) {\n\t\t\treturn scope.getScope(this.name);\n\t\t}\n\t\tscope = stack.findScope(this.name);\n\t\treturn scope.getScope(this.name);\n\t}\n\tdeclareVariable(stack: Stack, scopeType: ScopeType, propertyValue: any): any {\n\t\treturn stack.declareVariable(scopeType, this.name, propertyValue);\n\t}\n\tevents(parent?: string): string[] {\n\t\tif (parent) {\n\t\t\treturn [parent + this.toString()];\n\t\t}\n\t\treturn [this.toString()];\n\t}\n\ttoString(): string {\n\t\treturn String(this.name);\n\t}\n\ttoJson(): object {\n\t\treturn { name: this.name };\n\t}\n}\n\n@Deserializer('Literal')\nexport class Literal<T> extends AbstractExpressionNode implements CanFindScope {\n\tstatic fromJSON(node: Literal<any>):\n\t\tLiteral<string>\n\t\t| Literal<number>\n\t\t| Literal<bigint>\n\t\t| Literal<boolean>\n\t\t| Literal<RegExp>\n\t\t| Literal<null | undefined> {\n\t\treturn new Literal(node.value);\n\t}\n\tconstructor(protected value: T) {\n\t\tsuper();\n\t}\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\tset() {\n\t\tthrow new Error(`${this.constructor.name}#set() has no implementation.`);\n\t}\n\tget(): T {\n\t\treturn this.value;\n\t}\n\tfindScope<V extends object>(stack: Stack): Scope<V>;\n\tfindScope<V extends object>(stack: Stack, scope: Scope<any>): Scope<V>;\n\tfindScope<V extends object>(stack: Stack, scope?: Scope<any>): Scope<V> | undefined {\n\t\tif (scope) {\n\t\t\treturn scope.getScope(this.value as any);\n\t\t}\n\t\tscope = stack.findScope(this.value as any);\n\t\treturn scope.getScope(this.value as any);\n\t}\n\tevents(): string[] {\n\t\treturn [];\n\t}\n\ttoString(): string {\n\t\treturn String(this.value);\n\t}\n\ttoJson(): object {\n\t\treturn { value: this.value };\n\t}\n}\n\n@Deserializer('StringLiteral')\nexport class StringLiteral extends Literal<string> {\n\tstatic fromJSON(node: StringLiteral): StringLiteral {\n\t\treturn new StringLiteral(node.value, node.quote);\n\t}\n\tprivate quote: string;\n\tconstructor(value: string, quote?: string) {\n\t\tsuper(value);\n\t\tconst firstChar = value.charAt(0);\n\t\tif (quote) {\n\t\t\tthis.quote = quote;\n\t\t\tthis.value = value;\n\t\t} else if (firstChar === '\"' || firstChar == `'` || firstChar === '`') {\n\t\t\tthis.quote = firstChar;\n\t\t\tthis.value = `\"${value.substring(1, value.length - 1)}\"`;\n\t\t} else {\n\t\t\tthis.quote = '';\n\t\t\tthis.value = value;\n\t\t}\n\t}\n\tgetQuote() {\n\t\treturn this.quote;\n\t}\n\ttoString(): string {\n\t\treturn `${this.quote}${this.value}${this.quote}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tvalue: this.value,\n\t\t\tquote: this.quote\n\t\t};\n\t}\n}\n\nclass TemplateArray extends Array<string> implements TemplateStringsArray {\n\traw: readonly string[];\n\tconstructor(strings: string[]) {\n\t\tsuper(...strings);\n\t\tthis.raw = strings;\n\t}\n}\n\nexport class TemplateLiteralExpressionNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: TemplateLiteralExpressionNode, deserializer: NodeDeserializer): TemplateLiteralExpressionNode {\n\t\treturn new TemplateLiteralExpressionNode(\n\t\t\tnode.quasis,\n\t\t\tnode.expressions.map(deserializer),\n\t\t\tnode.tag ? deserializer(node.tag) : void 0\n\t\t);\n\t}\n\tconstructor(private quasis: string[], private expressions: ExpressionNode[], private tag?: ExpressionNode,) {\n\t\tsuper();\n\t}\n\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`TemplateLiteralExpressionNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst tagged: Function = this.tag?.get(stack) || String.raw;\n\t\tconst templateStringsArray = new TemplateArray(this.quasis);\n\t\ttemplateStringsArray.raw = templateStringsArray;\n\t\tconst values = this.expressions.map(expr => expr.get(stack));\n\t\treturn tagged(templateStringsArray, ...values);\n\t}\n\tevents(): string[] {\n\t\treturn this.expressions.flatMap(expr => expr.events());\n\t}\n\ttoString(): string {\n\t\tlet str = this.tag?.toString() || '';\n\t\tstr += '`';\n\t\tlet i = 0;\n\t\tfor (; i < this.quasis.length - 1; i++) {\n\t\t\tstr += this.quasis[i];\n\t\t\tstr += '${';\n\t\t\tstr += this.expressions[i].toString();\n\t\t\tstr += '}';\n\t\t}\n\t\tstr += this.quasis[i];\n\t\tstr += '`';\n\t\treturn str;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tquasis: this.quasis,\n\t\t\texpressions: this.expressions.map(expr => expr.toJSON()),\n\t\t\ttag: this.tag?.toJSON(),\n\t\t};\n\t}\n}\n\n@Deserializer('TemplateLiteral')\nexport class TemplateLiteral extends TemplateLiteralExpressionNode {\n\tconstructor(quasis: string[], expressions: ExpressionNode[]) {\n\t\tsuper(quasis, expressions);\n\t}\n}\n\n@Deserializer('TaggedTemplateExpression')\nexport class TaggedTemplateExpression extends TemplateLiteralExpressionNode {\n\tconstructor(tag: ExpressionNode, quasis: string[], expressions: ExpressionNode[]) {\n\t\tsuper(quasis, expressions, tag);\n\t}\n}\n\n\n@Deserializer('NumberLiteral')\nexport class NumberLiteral extends Literal<number> {\n\tstatic fromJSON(node: NumberLiteral): NumberLiteral {\n\t\treturn new NumberLiteral(node.value);\n\t}\n\tconstructor(value: number) {\n\t\tsuper(value);\n\t}\n}\n\n@Deserializer('BigIntLiteral')\nexport class BigIntLiteral extends Literal<bigint> {\n\tstatic fromJSON(node: BigIntLiteral): BigIntLiteral {\n\t\treturn new BigIntLiteral(BigInt(String(node.value)));\n\t}\n\ttoString(): string {\n\t\treturn `${this.value}n`;\n\t}\n\ttoJson(): object {\n\t\treturn { value: this.value.toString() };\n\t}\n}\n@Deserializer('RegExpLiteral')\nexport class RegExpLiteral extends Literal<RegExp> {\n\tstatic fromJSON(node: RegExpLiteral & { regex: { pattern: string, flags: string } }): RegExpLiteral {\n\t\treturn new RegExpLiteral(new RegExp(node.regex.pattern, node.regex.flags));\n\t}\n\ttoString(): string {\n\t\treturn `${this.value}n`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tregex: {\n\t\t\t\tpattern: this.value.source,\n\t\t\t\tflags: this.value.flags\n\t\t\t}\n\t\t};;\n\t}\n}\n\nexport const TRUE = String(true);\nexport const FALSE = String(false);\n@Deserializer('BooleanLiteral')\nexport class BooleanLiteral extends Literal<boolean> {\n\tstatic fromJSON(node: BooleanLiteral): BooleanLiteral {\n\t\tswitch (String(node.value)) {\n\t\t\tcase TRUE: return TrueNode;\n\t\t\tcase FALSE:\n\t\t\tdefault:\n\t\t\t\treturn FalseNode;\n\t\t}\n\t}\n}\n\nexport const NULL = String(null);\nexport const UNDEFINED = String(undefined);\n\n@Deserializer('NullishLiteral')\nexport class NullishLiteral extends Literal<null | undefined> {\n\tstatic fromJSON(node: NullishLiteral): NullishLiteral {\n\t\tswitch (String(node.value)) {\n\t\t\tcase NULL: return NullNode;\n\t\t\tcase UNDEFINED:\n\t\t\tdefault: return UndefinedNode;\n\t\t}\n\t}\n\n\ttoString(): string {\n\t\tif (typeof this.value === 'undefined') {\n\t\t\treturn UNDEFINED;\n\t\t}\n\t\treturn NULL;\n\t}\n\ttoJson(): object {\n\t\treturn { value: this.toString() };\n\t}\n}\n\n@Deserializer('ThisExpression')\nexport class ThisExpression extends Identifier {\n\tstatic fromJSON(node: ThisExpression): ThisExpression {\n\t\treturn ThisNode;\n\t}\n\tconstructor() {\n\t\tsuper('this');\n\t}\n}\n\nexport const NullNode = Object.freeze(new NullishLiteral(null)) as NullishLiteral;\nexport const UndefinedNode = Object.freeze(new NullishLiteral(undefined)) as NullishLiteral;\nexport const TrueNode = Object.freeze(new BooleanLiteral(true)) as BooleanLiteral;\nexport const FalseNode = Object.freeze(new BooleanLiteral(false)) as BooleanLiteral;\nexport const ThisNode = Object.freeze(new ThisExpression()) as ThisExpression;\nexport const GlobalThisNode = Object.freeze(new Identifier('globalThis')) as Identifier;\nexport const SymbolNode = Object.freeze(new Identifier('Symbol')) as Identifier;\nexport const OfNode = Object.freeze(new Identifier('of')) as Identifier;\nexport const AsNode = Object.freeze(new Identifier('as')) as Identifier;\nexport const GetIdentifier = Object.freeze(new Identifier('get')) as Identifier;\nexport const SetIdentifier = Object.freeze(new Identifier('set')) as Identifier;\nexport const AsyncIdentifier = Object.freeze(new Identifier('async')) as Identifier;\nexport const AwaitIdentifier = Object.freeze(new Identifier('await')) as Identifier;\nexport const ConstructorIdentifier = Object.freeze(new Identifier('constructor')) as Identifier;\nexport const NameIdentifier = Object.freeze(new Identifier('name')) as Identifier;\nexport const EvalIdentifier = Object.freeze(new Identifier('eval')) as Identifier;\nexport const ArgumentsIdentifier = Object.freeze(new Identifier('arguments')) as Identifier;\n"]}
|
|
1
|
+
{"version":3,"file":"values.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/values.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tCanDeclareExpression, ExpressionNode,\n\tNodeDeserializer, CanFindScope, ExpressionEventPath, VisitNodeType, VisitNodeListType\n} from '../expression.js';\nimport type { Scope, ScopeType } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { AbstractExpressionNode } from '../abstract.js';\n\n/**\n * An identifier is a sequence of characters in the code that identifies a variable, function, or property.\n * In JavaScript, identifiers are case-sensitive and can contain Unicode letters, $, _, and digits (0-9),\n * but may not start with a digit.\n * An identifier differs from a string in that a string is data,\n * while an identifier is part of the code. In JavaScript,\n * there is no way to convert identifiers to strings,\n * but sometimes it is possible to parse strings into identifiers.\n */\n@Deserializer('Identifier')\nexport class Identifier extends AbstractExpressionNode implements CanDeclareExpression, CanFindScope {\n\tstatic fromJSON(node: Identifier): Identifier {\n\t\treturn new Identifier(node.name);\n\t}\n\tconstructor(protected name: string | number) {\n\t\tsuper();\n\t}\n\tgetName() {\n\t\treturn this.name;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, value: any) {\n\t\treturn stack.set(this.name, value) ? value : void 0;\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\tif (thisContext) {\n\t\t\treturn thisContext[this.name];\n\t\t}\n\t\treturn stack.get(this.name);\n\t}\n\tfindScope<T extends object>(stack: Stack): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, scope: Scope<any>): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, scope?: Scope<any>): Scope<T> | undefined {\n\t\tif (scope) {\n\t\t\treturn scope.getScope(this.name);\n\t\t}\n\t\tscope = stack.findScope(this.name);\n\t\treturn scope.getScope(this.name);\n\t}\n\tdeclareVariable(stack: Stack, scopeType: ScopeType, propertyValue: any): any {\n\t\treturn stack.declareVariable(scopeType, this.name, propertyValue);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn [this];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\tconst path: ExpressionEventPath[] = [{ computed: false, path: this.toString() }];\n\t\treturn computed ? [{ computed, path: this.toString(), computedPath: [path] }] : path;\n\t}\n\ttoString(): string {\n\t\treturn String(this.name);\n\t}\n\ttoJson(): object {\n\t\treturn { name: this.name };\n\t}\n}\n\n@Deserializer('Literal')\nexport class Literal<T> extends AbstractExpressionNode implements CanFindScope {\n\tstatic fromJSON(node: Literal<any>):\n\t\tLiteral<string>\n\t\t| Literal<number>\n\t\t| Literal<bigint>\n\t\t| Literal<boolean>\n\t\t| Literal<RegExp>\n\t\t| Literal<null | undefined> {\n\t\treturn new Literal(node.value);\n\t}\n\tconstructor(protected value: T) {\n\t\tsuper();\n\t}\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset() {\n\t\tthrow new Error(`${this.constructor.name}#set() has no implementation.`);\n\t}\n\tget(): T {\n\t\treturn this.value;\n\t}\n\tfindScope<V extends object>(stack: Stack): Scope<V>;\n\tfindScope<V extends object>(stack: Stack, scope: Scope<any>): Scope<V>;\n\tfindScope<V extends object>(stack: Stack, scope?: Scope<any>): Scope<V> | undefined {\n\t\tif (scope) {\n\t\t\treturn scope.getScope<V>(this.value as any);\n\t\t}\n\t\tscope = stack.findScope<V>(this.value as any);\n\t\treturn scope.getScope<V>(this.value as any);\n\t}\n\tdependency(computed: true): ExpressionNode[] {\n\t\treturn computed ? [this] : [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn computed ? [{ computed: false, path: this.toString() }] : [];\n\t}\n\ttoString(): string {\n\t\treturn String(this.value);\n\t}\n\ttoJson(): object {\n\t\treturn { value: this.value };\n\t}\n}\n\n@Deserializer('StringLiteral')\nexport class StringLiteral extends Literal<string> {\n\tstatic fromJSON(node: StringLiteral): StringLiteral {\n\t\treturn new StringLiteral(node.value, node.quote);\n\t}\n\tprivate quote: string;\n\tconstructor(value: string, quote?: string) {\n\t\tsuper(value);\n\t\tconst firstChar = value.charAt(0);\n\t\tif (quote) {\n\t\t\tthis.quote = quote;\n\t\t\tthis.value = value;\n\t\t} else if (firstChar === '\"' || firstChar == `'` || firstChar === '`') {\n\t\t\tthis.quote = firstChar;\n\t\t\tthis.value = `\"${value.substring(1, value.length - 1)}\"`;\n\t\t} else {\n\t\t\tthis.quote = '';\n\t\t\tthis.value = value;\n\t\t}\n\t}\n\tgetQuote() {\n\t\treturn this.quote;\n\t}\n\ttoString(): string {\n\t\treturn `${this.quote}${this.value}${this.quote}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tvalue: this.value,\n\t\t\tquote: this.quote\n\t\t};\n\t}\n}\n\nclass TemplateArray extends Array<string> implements TemplateStringsArray {\n\traw: readonly string[];\n\tconstructor(strings: string[]) {\n\t\tsuper(...strings);\n\t\tthis.raw = strings;\n\t}\n}\n\nexport class TemplateLiteralExpressionNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: TemplateLiteralExpressionNode, deserializer: NodeDeserializer): TemplateLiteralExpressionNode {\n\t\treturn new TemplateLiteralExpressionNode(\n\t\t\tnode.quasis,\n\t\t\tnode.expressions.map(deserializer),\n\t\t\tnode.tag ? deserializer(node.tag) : void 0\n\t\t);\n\t}\n\tstatic visit(node: TemplateLiteralExpressionNode, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void {\n\t\tnode.tag && visitNode(node.tag);\n\t\tvisitNodeList(node.expressions);\n\t}\n\tconstructor(protected quasis: string[], protected expressions: ExpressionNode[], protected tag?: ExpressionNode,) {\n\t\tsuper();\n\t}\n\tgetTag() {\n\t\treturn this.tag;\n\t}\n\tgetExpressions() {\n\t\treturn this.expressions;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.expressions.forEach(value => value.shareVariables(scopeList));\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`TemplateLiteralExpressionNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst tagged: Function = this.tag?.get(stack) || String.raw;\n\t\tconst templateStringsArray = new TemplateArray(this.quasis);\n\t\ttemplateStringsArray.raw = templateStringsArray;\n\t\tconst values = this.expressions.map(expr => expr.get(stack));\n\t\treturn tagged(templateStringsArray, ...values);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.expressions.flatMap(exp => exp.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.expressions.flatMap(exp => exp.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\tlet str = this.tag?.toString() || '';\n\t\tstr += '`';\n\t\tlet i = 0;\n\t\tfor (; i < this.quasis.length - 1; i++) {\n\t\t\tstr += this.quasis[i];\n\t\t\tstr += '${';\n\t\t\tstr += this.expressions[i].toString();\n\t\t\tstr += '}';\n\t\t}\n\t\tstr += this.quasis[i];\n\t\tstr += '`';\n\t\treturn str;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tquasis: this.quasis,\n\t\t\texpressions: this.expressions.map(expr => expr.toJSON()),\n\t\t\ttag: this.tag?.toJSON(),\n\t\t};\n\t}\n}\n\n@Deserializer('TemplateLiteral')\nexport class TemplateLiteral extends TemplateLiteralExpressionNode {\n\tprotected tag: undefined;\n\tconstructor(quasis: string[], expressions: ExpressionNode[]) {\n\t\tsuper(quasis, expressions);\n\t}\n\toverride getTag(): undefined {\n\t\treturn undefined;\n\t}\n}\n\n@Deserializer('TaggedTemplateExpression')\nexport class TaggedTemplateExpression extends TemplateLiteralExpressionNode {\n\tprotected tag: ExpressionNode;\n\tconstructor(tag: ExpressionNode, quasis: string[], expressions: ExpressionNode[]) {\n\t\tsuper(quasis, expressions, tag);\n\t}\n\toverride getTag(): ExpressionNode {\n\t\treturn super.getTag()!;\n\t}\n}\n\n\n@Deserializer('NumberLiteral')\nexport class NumberLiteral extends Literal<number> {\n\tstatic fromJSON(node: NumberLiteral): NumberLiteral {\n\t\treturn new NumberLiteral(node.value);\n\t}\n\tconstructor(value: number) {\n\t\tsuper(value);\n\t}\n}\n\n@Deserializer('BigIntLiteral')\nexport class BigIntLiteral extends Literal<bigint> {\n\tstatic fromJSON(node: BigIntLiteral): BigIntLiteral {\n\t\treturn new BigIntLiteral(BigInt(String(node.value)));\n\t}\n\ttoString(): string {\n\t\treturn `${this.value}n`;\n\t}\n\ttoJson(): object {\n\t\treturn { value: this.value.toString() };\n\t}\n}\n@Deserializer('RegExpLiteral')\nexport class RegExpLiteral extends Literal<RegExp> {\n\tstatic fromJSON(node: RegExpLiteral & { regex: { pattern: string, flags: string } }): RegExpLiteral {\n\t\treturn new RegExpLiteral(new RegExp(node.regex.pattern, node.regex.flags));\n\t}\n\ttoString(): string {\n\t\treturn `${this.value}n`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tregex: {\n\t\t\t\tpattern: this.value.source,\n\t\t\t\tflags: this.value.flags\n\t\t\t}\n\t\t};;\n\t}\n}\n\nexport const TRUE = String(true);\nexport const FALSE = String(false);\n@Deserializer('BooleanLiteral')\nexport class BooleanLiteral extends Literal<boolean> {\n\tstatic fromJSON(node: BooleanLiteral): BooleanLiteral {\n\t\tswitch (String(node.value)) {\n\t\t\tcase TRUE: return TrueNode;\n\t\t\tcase FALSE:\n\t\t\tdefault:\n\t\t\t\treturn FalseNode;\n\t\t}\n\t}\n}\n\nexport const NULL = String(null);\nexport const UNDEFINED = String(undefined);\n\n@Deserializer('NullishLiteral')\nexport class NullishLiteral extends Literal<null | undefined> {\n\tstatic fromJSON(node: NullishLiteral): NullishLiteral {\n\t\tswitch (String(node.value)) {\n\t\t\tcase NULL: return NullNode;\n\t\t\tcase UNDEFINED:\n\t\t\tdefault: return UndefinedNode;\n\t\t}\n\t}\n\n\ttoString(): string {\n\t\tif (typeof this.value === 'undefined') {\n\t\t\treturn UNDEFINED;\n\t\t}\n\t\treturn NULL;\n\t}\n\ttoJson(): object {\n\t\treturn { value: this.toString() };\n\t}\n}\n\n@Deserializer('ThisExpression')\nexport class ThisExpression extends Identifier {\n\tstatic fromJSON(node: ThisExpression): ThisExpression {\n\t\treturn ThisNode;\n\t}\n\tconstructor() {\n\t\tsuper('this');\n\t}\n}\n\nexport const NullNode = Object.freeze(new NullishLiteral(null)) as NullishLiteral;\nexport const UndefinedNode = Object.freeze(new NullishLiteral(undefined)) as NullishLiteral;\nexport const TrueNode = Object.freeze(new BooleanLiteral(true)) as BooleanLiteral;\nexport const FalseNode = Object.freeze(new BooleanLiteral(false)) as BooleanLiteral;\nexport const ThisNode = Object.freeze(new ThisExpression()) as ThisExpression;\nexport const GlobalThisNode = Object.freeze(new Identifier('globalThis')) as Identifier;\nexport const SymbolNode = Object.freeze(new Identifier('Symbol')) as Identifier;\nexport const OfNode = Object.freeze(new Identifier('of')) as Identifier;\nexport const AsNode = Object.freeze(new Identifier('as')) as Identifier;\nexport const GetIdentifier = Object.freeze(new Identifier('get')) as Identifier;\nexport const SetIdentifier = Object.freeze(new Identifier('set')) as Identifier;\nexport const AsyncIdentifier = Object.freeze(new Identifier('async')) as Identifier;\nexport const AwaitIdentifier = Object.freeze(new Identifier('await')) as Identifier;\nexport const ConstructorIdentifier = Object.freeze(new Identifier('constructor')) as Identifier;\nexport const NameIdentifier = Object.freeze(new Identifier('name')) as Identifier;\nexport const EvalIdentifier = Object.freeze(new Identifier('eval')) as Identifier;\nexport const ArgumentsIdentifier = Object.freeze(new Identifier('arguments')) as Identifier;\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import { expressionTypes } from './type-store.js';
|
|
2
2
|
export function Deserializer(type) {
|
|
3
3
|
return (target) => {
|
|
4
|
-
DeserializerMap.set(type, target.fromJSON);
|
|
5
4
|
Reflect.set(target, 'type', type);
|
|
5
|
+
expressionTypes.set(type, target);
|
|
6
6
|
return target;
|
|
7
7
|
};
|
|
8
8
|
}
|
|
@@ -10,7 +10,7 @@ export function serializeNode(node) {
|
|
|
10
10
|
return JSON.stringify(node);
|
|
11
11
|
}
|
|
12
12
|
export function deserialize(node) {
|
|
13
|
-
const fromJSON =
|
|
13
|
+
const fromJSON = expressionTypes.get(node.type)?.fromJSON;
|
|
14
14
|
if (fromJSON) {
|
|
15
15
|
return fromJSON(node, deserialize);
|
|
16
16
|
}
|