@ibyar/expressions 0.5.1 → 0.5.6
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/LICENSE +1 -1
- package/README.md +5 -4
- package/api/abstract.d.ts +5 -6
- package/api/abstract.js +3 -3
- package/api/abstract.js.map +1 -1
- package/api/class/class.d.ts +202 -0
- package/api/class/class.js +635 -0
- package/api/class/class.js.map +1 -0
- package/api/class/decorator.d.ts +20 -0
- package/api/class/decorator.js +48 -0
- package/api/class/decorator.js.map +1 -0
- package/api/computing/call.d.ts +3 -1
- package/api/computing/call.js +16 -4
- package/api/computing/call.js.map +1 -1
- package/api/computing/debugger.d.ts +15 -0
- package/api/computing/debugger.js +35 -0
- package/api/computing/debugger.js.map +1 -0
- package/api/computing/new.d.ts +2 -1
- package/api/computing/new.js +4 -0
- package/api/computing/new.js.map +1 -1
- package/api/computing/rest.d.ts +6 -6
- package/api/computing/rest.js +5 -2
- package/api/computing/rest.js.map +1 -1
- package/api/computing/return.d.ts +2 -1
- package/api/computing/return.js +3 -0
- package/api/computing/return.js.map +1 -1
- package/api/computing/spread.d.ts +2 -1
- package/api/computing/spread.js +5 -2
- package/api/computing/spread.js.map +1 -1
- package/api/computing/throw.d.ts +2 -1
- package/api/computing/throw.js +3 -0
- package/api/computing/throw.js.map +1 -1
- package/api/computing/yield.d.ts +2 -1
- package/api/computing/yield.js +3 -0
- package/api/computing/yield.js.map +1 -1
- package/api/definition/array.d.ts +12 -12
- package/api/definition/array.js +31 -25
- package/api/definition/array.js.map +1 -1
- package/api/definition/bind.d.ts +2 -2
- package/api/definition/bind.js +1 -1
- package/api/definition/bind.js.map +1 -1
- package/api/definition/function.d.ts +40 -51
- package/api/definition/function.js +291 -309
- package/api/definition/function.js.map +1 -1
- package/api/definition/member.d.ts +2 -2
- package/api/definition/member.js +1 -1
- package/api/definition/member.js.map +1 -1
- package/api/definition/object.d.ts +15 -12
- package/api/definition/object.js +43 -13
- package/api/definition/object.js.map +1 -1
- package/api/definition/statement.d.ts +2 -2
- package/api/definition/statement.js +7 -3
- package/api/definition/statement.js.map +1 -1
- package/api/definition/values.d.ts +35 -50
- package/api/definition/values.js +66 -149
- package/api/definition/values.js.map +1 -1
- package/api/deserialize/deserialize.d.ts +2 -1
- package/api/deserialize/deserialize.js +4 -1
- package/api/deserialize/deserialize.js.map +1 -1
- package/api/deserialize/type-store.d.ts +2 -2
- package/api/deserialize/type-store.js.map +1 -1
- package/api/expression.d.ts +13 -18
- package/api/expression.js.map +1 -1
- package/api/index.d.ts +2 -0
- package/api/index.js +2 -0
- package/api/index.js.map +1 -1
- package/api/module/common.d.ts +29 -0
- package/api/module/common.js +71 -0
- package/api/module/common.js.map +1 -0
- package/api/module/export.d.ts +66 -25
- package/api/module/export.js +270 -58
- package/api/module/export.js.map +1 -1
- package/api/module/import.d.ts +61 -25
- package/api/module/import.js +226 -68
- package/api/module/import.js.map +1 -1
- package/api/operators/assignment.d.ts +2 -2
- package/api/operators/assignment.js +1 -1
- package/api/operators/assignment.js.map +1 -1
- package/api/operators/await.d.ts +2 -2
- package/api/operators/await.js +1 -1
- package/api/operators/await.js.map +1 -1
- package/api/operators/binary.d.ts +2 -2
- package/api/operators/binary.js +1 -1
- package/api/operators/binary.js.map +1 -1
- package/api/operators/chaining.d.ts +2 -2
- package/api/operators/chaining.js +1 -1
- package/api/operators/chaining.js.map +1 -1
- package/api/operators/comma.d.ts +2 -2
- package/api/operators/comma.js +2 -2
- package/api/operators/comma.js.map +1 -1
- package/api/operators/grouping.d.ts +2 -2
- package/api/operators/grouping.js +1 -1
- package/api/operators/grouping.js.map +1 -1
- package/api/operators/logical.d.ts +2 -2
- package/api/operators/logical.js +1 -1
- package/api/operators/logical.js.map +1 -1
- package/api/operators/pipeline.d.ts +2 -2
- package/api/operators/pipeline.js +1 -1
- package/api/operators/pipeline.js.map +1 -1
- package/api/operators/ternary.d.ts +2 -2
- package/api/operators/ternary.js +1 -1
- package/api/operators/ternary.js.map +1 -1
- package/api/operators/unary.d.ts +3 -3
- package/api/operators/unary.js +4 -3
- package/api/operators/unary.js.map +1 -1
- package/api/operators/update.d.ts +2 -2
- package/api/operators/update.js +1 -1
- package/api/operators/update.js.map +1 -1
- package/api/{app/program.d.ts → program.d.ts} +8 -9
- package/api/program.js +45 -0
- package/api/program.js.map +1 -0
- package/api/statement/control/block.d.ts +4 -5
- package/api/statement/control/block.js +22 -23
- package/api/statement/control/block.js.map +1 -1
- package/api/statement/control/empty.d.ts +1 -1
- package/api/statement/control/empty.js.map +1 -1
- package/api/statement/control/if.d.ts +2 -2
- package/api/statement/control/if.js +1 -1
- package/api/statement/control/if.js.map +1 -1
- package/api/statement/control/switch.d.ts +4 -5
- package/api/statement/control/switch.js +13 -9
- package/api/statement/control/switch.js.map +1 -1
- package/api/statement/control/terminate.d.ts +38 -13
- package/api/statement/control/terminate.js +81 -20
- package/api/statement/control/terminate.js.map +1 -1
- package/api/statement/declarations/declares.d.ts +17 -16
- package/api/statement/declarations/declares.js +24 -19
- package/api/statement/declarations/declares.js.map +1 -1
- package/api/statement/iterations/for.d.ts +5 -5
- package/api/statement/iterations/for.js +29 -23
- package/api/statement/iterations/for.js.map +1 -1
- package/api/statement/iterations/while.d.ts +3 -3
- package/api/statement/iterations/while.js +17 -13
- package/api/statement/iterations/while.js.map +1 -1
- package/api/utils.d.ts +5 -0
- package/api/utils.js +4 -0
- package/api/utils.js.map +1 -0
- package/package.json +5 -5
- package/scope/event.d.ts +2 -2
- package/scope/event.js +8 -14
- package/scope/event.js.map +1 -1
- package/scope/finalizer.d.ts +4 -0
- package/scope/finalizer.js +11 -0
- package/scope/finalizer.js.map +1 -0
- package/scope/proxy.d.ts +2 -3
- package/scope/proxy.js +22 -26
- package/scope/proxy.js.map +1 -1
- package/scope/scope.d.ts +42 -53
- package/scope/scope.js +73 -143
- package/scope/scope.js.map +1 -1
- package/scope/stack.d.ts +43 -26
- package/scope/stack.js +148 -102
- package/scope/stack.js.map +1 -1
- package/v8/enums.d.ts +204 -0
- package/v8/enums.js +375 -0
- package/v8/enums.js.map +1 -0
- package/v8/index.d.ts +2 -1
- package/v8/index.js +2 -1
- package/v8/index.js.map +1 -1
- package/v8/inline.d.ts +177 -0
- package/v8/inline.js +1973 -0
- package/v8/inline.js.map +1 -0
- package/v8/nodes.d.ts +8 -7
- package/v8/nodes.js +37 -63
- package/v8/nodes.js.map +1 -1
- package/v8/parser.d.ts +41 -151
- package/v8/parser.js +507 -1578
- package/v8/parser.js.map +1 -1
- package/v8/stream.d.ts +35 -3
- package/v8/stream.js +616 -164
- package/v8/stream.js.map +1 -1
- package/v8/token.d.ts +15 -9
- package/v8/token.js +79 -46
- package/v8/token.js.map +1 -1
- package/visit/visitor.js +4 -7
- package/visit/visitor.js.map +1 -1
- package/api/app/class.d.ts +0 -117
- package/api/app/class.js +0 -292
- package/api/app/class.js.map +0 -1
- package/api/app/program.js +0 -39
- package/api/app/program.js.map +0 -1
- package/api/module/module.d.ts +0 -26
- package/api/module/module.js +0 -63
- package/api/module/module.js.map +0 -1
- package/v8/app.d.ts +0 -0
- package/v8/app.js +0 -2
- package/v8/app.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chaining.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/chaining.ts"],"names":[],"mappings":";;AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,IAAa,eAAe,uBAA5B,MAAa,eAAgB,SAAQ,sBAAsB;IAO1D,YAAoB,UAA0B;QAC7C,KAAK,EAAE,CAAC;QADW,eAAU,GAAV,UAAU,CAAgB;IAE9C,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,YAA8B;QACpE,OAAO,IAAI,iBAAe,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAqB,EAAE,SAAwB
|
|
1
|
+
{"version":3,"file":"chaining.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/chaining.ts"],"names":[],"mappings":";;AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,IAAa,eAAe,uBAA5B,MAAa,eAAgB,SAAQ,sBAAsB;IAO1D,YAAoB,UAA0B;QAC7C,KAAK,EAAE,CAAC;QADW,eAAU,GAAV,UAAU,CAAgB;IAE9C,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,YAA8B;QACpE,OAAO,IAAI,iBAAe,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAqB,EAAE,SAAwB;QAC3D,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;IAID,aAAa;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IACD,cAAc,CAAC,SAAuB,IAAU,CAAC;IACjD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IACjE,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,WAAiB;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAChD,CAAC;IAGD,SAAS,CAAmB,KAAY,EAAE,WAAwB;QACjE,OAAQ,IAAI,CAAC,UAA4C,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACzF,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;IACD,MAAM;QACL,OAAO;YACN,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;SACpC,CAAC;IACH,CAAC;CACD,CAAA;AAvCY,eAAe;IAD3B,YAAY,CAAC,iBAAiB,CAAC;;GACnB,eAAe,CAuC3B;SAvCY,eAAe","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, CanFindScope,\n\tExpressionEventPath, VisitNodeType\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('ChainExpression')\nexport class ChainExpression extends AbstractExpressionNode implements CanFindScope {\n\tstatic fromJSON(node: ChainExpression, deserializer: NodeDeserializer): ChainExpression {\n\t\treturn new ChainExpression(deserializer(node.expression));\n\t}\n\tstatic visit(node: ChainExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.expression);\n\t}\n\tconstructor(private expression: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetExpression() {\n\t\treturn this.expression;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`ChainExpression.#set() has no implementation.`)\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\treturn this.expression.get(stack, thisContext);\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\treturn (this.expression as ExpressionNode & CanFindScope).findScope(stack, objectScope);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.expression.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.expression.dependencyPath(computed);\n\t}\n\ttoString() {\n\t\treturn this.expression.toString();\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\texpression: this.expression.toJSON(),\n\t\t};\n\t}\n}\n"]}
|
package/api/operators/comma.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType
|
|
1
|
+
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../expression.js';
|
|
2
2
|
import type { Scope } from '../../scope/scope.js';
|
|
3
3
|
import type { Stack } from '../../scope/stack.js';
|
|
4
4
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
5
5
|
export declare class SequenceExpression extends AbstractExpressionNode {
|
|
6
6
|
private expressions;
|
|
7
7
|
static fromJSON(node: SequenceExpression, deserializer: NodeDeserializer): SequenceExpression;
|
|
8
|
-
static visit(node: SequenceExpression, visitNode: VisitNodeType
|
|
8
|
+
static visit(node: SequenceExpression, visitNode: VisitNodeType): void;
|
|
9
9
|
constructor(expressions: ExpressionNode[]);
|
|
10
10
|
getExpressions(): ExpressionNode[];
|
|
11
11
|
shareVariables(scopeList: Scope<any>[]): void;
|
package/api/operators/comma.js
CHANGED
|
@@ -10,8 +10,8 @@ let SequenceExpression = SequenceExpression_1 = class SequenceExpression extends
|
|
|
10
10
|
static fromJSON(node, deserializer) {
|
|
11
11
|
return new SequenceExpression_1(node.expressions.map(expression => deserializer(expression)));
|
|
12
12
|
}
|
|
13
|
-
static visit(node, visitNode
|
|
14
|
-
|
|
13
|
+
static visit(node, visitNode) {
|
|
14
|
+
node.expressions.forEach(visitNode);
|
|
15
15
|
}
|
|
16
16
|
getExpressions() {
|
|
17
17
|
return this.expressions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comma.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/comma.ts"],"names":[],"mappings":";;AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,IAAa,kBAAkB,0BAA/B,MAAa,kBAAmB,SAAQ,sBAAsB;IAO7D,YAAoB,WAA6B;QAChD,KAAK,EAAE,CAAC;QADW,gBAAW,GAAX,WAAW,CAAkB;IAEjD,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAwB,EAAE,YAA8B;QACvE,OAAO,IAAI,oBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,UAAiB,CAAC,CAAC,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAwB,EAAE,SAAwB,
|
|
1
|
+
{"version":3,"file":"comma.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/comma.ts"],"names":[],"mappings":";;AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,IAAa,kBAAkB,0BAA/B,MAAa,kBAAmB,SAAQ,sBAAsB;IAO7D,YAAoB,WAA6B;QAChD,KAAK,EAAE,CAAC;QADW,gBAAW,GAAX,WAAW,CAAkB;IAEjD,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAwB,EAAE,YAA8B;QACvE,OAAO,IAAI,oBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,UAAiB,CAAC,CAAC,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAwB,EAAE,SAAwB;QAC9D,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAID,cAAc;QACb,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IACD,cAAc,CAAC,SAAuB;QACrC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACrE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC5D,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpF,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM;QACL,OAAO;YACN,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;SACpE,CAAC;IACH,CAAC;CACD,CAAA;AApCY,kBAAkB;IAD9B,YAAY,CAAC,oBAAoB,CAAC;;GACtB,kBAAkB,CAoC9B;SApCY,kBAAkB","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode,\n\tExpressionEventPath, VisitNodeType\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('SequenceExpression')\nexport class SequenceExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: SequenceExpression, deserializer: NodeDeserializer): SequenceExpression {\n\t\treturn new SequenceExpression(node.expressions.map(expression => deserializer(expression as any)));\n\t}\n\tstatic visit(node: SequenceExpression, visitNode: VisitNodeType): void {\n\t\tnode.expressions.forEach(visitNode);\n\t}\n\tconstructor(private expressions: ExpressionNode[]) {\n\t\tsuper();\n\t}\n\tgetExpressions() {\n\t\treturn this.expressions;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.expressions.forEach(statement => statement.shareVariables(scopeList));\n\t}\n\tset(stack: Stack) {\n\t\tthrow new Error(`SequenceExpression.#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\treturn this.expressions.map(expr => expr.get(stack)).pop();\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(expression => expression.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\treturn this.expressions.map(key => key.toString()).join(', ');\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\texpressions: this.expressions.map(expression => expression.toJSON())\n\t\t};\n\t}\n}\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType
|
|
1
|
+
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../expression.js';
|
|
2
2
|
import type { Scope } from '../../scope/scope.js';
|
|
3
3
|
import type { Stack } from '../../scope/stack.js';
|
|
4
4
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
5
5
|
export declare class GroupingExpression extends AbstractExpressionNode {
|
|
6
6
|
private node;
|
|
7
7
|
static fromJSON(node: GroupingExpression, deserializer: NodeDeserializer): GroupingExpression;
|
|
8
|
-
static visit(node: GroupingExpression, visitNode: VisitNodeType
|
|
8
|
+
static visit(node: GroupingExpression, visitNode: VisitNodeType): void;
|
|
9
9
|
constructor(node: ExpressionNode);
|
|
10
10
|
getNode(): ExpressionNode;
|
|
11
11
|
shareVariables(scopeList: Scope<any>[]): void;
|
|
@@ -10,7 +10,7 @@ let GroupingExpression = GroupingExpression_1 = class GroupingExpression extends
|
|
|
10
10
|
static fromJSON(node, deserializer) {
|
|
11
11
|
return new GroupingExpression_1(deserializer(node.node));
|
|
12
12
|
}
|
|
13
|
-
static visit(node, visitNode
|
|
13
|
+
static visit(node, visitNode) {
|
|
14
14
|
visitNode(node.node);
|
|
15
15
|
}
|
|
16
16
|
getNode() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grouping.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/grouping.ts"],"names":[],"mappings":";;AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAU7D,IAAa,kBAAkB,0BAA/B,MAAa,kBAAmB,SAAQ,sBAAsB;IAO7D,YAAoB,IAAoB;QACvC,KAAK,EAAE,CAAC;QADW,SAAI,GAAJ,IAAI,CAAgB;IAExC,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAwB,EAAE,YAA8B;QACvE,OAAO,IAAI,oBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAW,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAwB,EAAE,SAAwB
|
|
1
|
+
{"version":3,"file":"grouping.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/grouping.ts"],"names":[],"mappings":";;AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAU7D,IAAa,kBAAkB,0BAA/B,MAAa,kBAAmB,SAAQ,sBAAsB;IAO7D,YAAoB,IAAoB;QACvC,KAAK,EAAE,CAAC;QADW,SAAI,GAAJ,IAAI,CAAgB;IAExC,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAwB,EAAE,YAA8B;QACvE,OAAO,IAAI,oBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAW,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAwB,EAAE,SAAwB;QAC9D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAID,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IACD,cAAc,CAAC,SAAuB;QACrC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,GAAG,CAAC,KAAY;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC;IACpC,CAAC;IACD,MAAM;QACL,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;IACrC,CAAC;CACD,CAAA;AAlCY,kBAAkB;IAD9B,YAAY,CAAC,oBAAoB,CAAC;;GACtB,kBAAkB,CAkC9B;SAlCY,kBAAkB","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode,\n\tExpressionEventPath, VisitNodeType\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/**\n * The grouping operator consists of a pair of parentheses around\n * an expression or sub-expression to override the normal operator\n * precedence so that expressions with lower precedence can be evaluated\n * before an expression with higher priority.\n * As it sounds, it groups what's inside of the parentheses.\n */\n@Deserializer('GroupingExpression')\nexport class GroupingExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: GroupingExpression, deserializer: NodeDeserializer): GroupingExpression {\n\t\treturn new GroupingExpression(deserializer(node.node as any));\n\t}\n\tstatic visit(node: GroupingExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.node);\n\t}\n\tconstructor(private node: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetNode() {\n\t\treturn this.node;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.node.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthis.node.set(stack, value);\n\t}\n\tget(stack: Stack,) {\n\t\treturn this.node.get(stack);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.node.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.node.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `(${this.node.toString()})`;\n\t}\n\ttoJson(): object {\n\t\treturn { node: this.node.toJSON() };\n\t}\n}\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { NodeDeserializer,
|
|
1
|
+
import type { NodeDeserializer, VisitNodeType } from '../expression.js';
|
|
2
2
|
import { InfixExpressionNode } from '../abstract.js';
|
|
3
3
|
export declare type LogicalOperator = '||' | '&&' | '??';
|
|
4
4
|
export declare class LogicalExpression extends InfixExpressionNode<LogicalOperator> {
|
|
5
5
|
static fromJSON(node: LogicalExpression, deserializer: NodeDeserializer): LogicalExpression;
|
|
6
|
-
static visit(node: LogicalExpression, visitNode: VisitNodeType
|
|
6
|
+
static visit(node: LogicalExpression, visitNode: VisitNodeType): void;
|
|
7
7
|
static Evaluations: {
|
|
8
8
|
[key: string]: (exp: LogicalExpression, context: any) => any;
|
|
9
9
|
};
|
package/api/operators/logical.js
CHANGED
|
@@ -6,7 +6,7 @@ let LogicalExpression = LogicalExpression_1 = class LogicalExpression extends In
|
|
|
6
6
|
static fromJSON(node, deserializer) {
|
|
7
7
|
return new LogicalExpression_1(node.operator, deserializer(node.left), deserializer(node.right));
|
|
8
8
|
}
|
|
9
|
-
static visit(node, visitNode
|
|
9
|
+
static visit(node, visitNode) {
|
|
10
10
|
visitNode(node.left);
|
|
11
11
|
visitNode(node.right);
|
|
12
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logical.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/logical.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAK7D,IAAa,iBAAiB,yBAA9B,MAAa,iBAAkB,SAAQ,mBAAoC;IAC1E,MAAM,CAAC,QAAQ,CAAC,IAAuB,EAAE,YAA8B;QACtE,OAAO,IAAI,mBAAiB,CAC3B,IAAI,CAAC,QAAQ,EACb,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EACvB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CACxB,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAuB,EAAE,SAAwB
|
|
1
|
+
{"version":3,"file":"logical.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/logical.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAK7D,IAAa,iBAAiB,yBAA9B,MAAa,iBAAkB,SAAQ,mBAAoC;IAC1E,MAAM,CAAC,QAAQ,CAAC,IAAuB,EAAE,YAA8B;QACtE,OAAO,IAAI,mBAAiB,CAC3B,IAAI,CAAC,QAAQ,EACb,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EACvB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CACxB,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAuB,EAAE,SAAwB;QAC7D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IA4BD,GAAG,CAAC,OAAe;QAClB,OAAO,mBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;CACD,CAAA;AA9BO,6BAAW,GAAqE;IAEtF,IAAI,EAAE,CAAC,GAAsB,EAAE,OAAY,EAAE,EAAE;QAC9C,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,KAAK,EAAE;YACV,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SAC/B;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,EAAE,CAAC,GAAsB,EAAE,OAAY,EAAE,EAAE;QAC9C,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE;YACX,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SAC/B;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,EAAE,CAAC,GAAsB,EAAE,OAAY,EAAE,EAAE;QAC9C,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;YAC1C,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SAC/B;QACD,OAAO,KAAK,CAAC;IACd,CAAC;CAEA,CAAA;AAtCU,iBAAiB;IAD7B,YAAY,CAAC,mBAAmB,CAAC;GACrB,iBAAiB,CA0C7B;SA1CY,iBAAiB","sourcesContent":["import type { NodeDeserializer, VisitNodeType } from '../expression.js';\nimport { InfixExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\nexport type LogicalOperator = '||' | '&&' | '??';\n\n@Deserializer('LogicalExpression')\nexport class LogicalExpression extends InfixExpressionNode<LogicalOperator> {\n\tstatic fromJSON(node: LogicalExpression, deserializer: NodeDeserializer): LogicalExpression {\n\t\treturn new LogicalExpression(\n\t\t\tnode.operator,\n\t\t\tdeserializer(node.left),\n\t\t\tdeserializer(node.right)\n\t\t);\n\t}\n\tstatic visit(node: LogicalExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.left);\n\t\tvisitNode(node.right);\n\t}\n\tstatic Evaluations: { [key: string]: (exp: LogicalExpression, context: any) => any } = {\n\n\t\t'&&': (exp: LogicalExpression, context: any) => {\n\t\t\tlet value = exp.left.get(context);\n\t\t\tif (value) {\n\t\t\t\tvalue = exp.right.get(context);\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\n\t\t'||': (exp: LogicalExpression, context: any) => {\n\t\t\tlet value = exp.left.get(context);\n\t\t\tif (!value) {\n\t\t\t\tvalue = exp.right.get(context);\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\n\t\t'??': (exp: LogicalExpression, context: any) => {\n\t\t\tlet value = exp.left.get(context);\n\t\t\tif (value === undefined || value === null) {\n\t\t\t\tvalue = exp.right.get(context);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\n\t};\n\tget(context: object) {\n\t\treturn LogicalExpression.Evaluations[this.operator](this, context);\n\t}\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType
|
|
1
|
+
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../expression.js';
|
|
2
2
|
import type { Scope } from '../../scope/scope.js';
|
|
3
3
|
import type { Stack } from '../../scope/stack.js';
|
|
4
4
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
@@ -6,7 +6,7 @@ export declare class PipelineExpression extends AbstractExpressionNode {
|
|
|
6
6
|
private left;
|
|
7
7
|
private right;
|
|
8
8
|
static fromJSON(node: PipelineExpression, deserializer: NodeDeserializer): PipelineExpression;
|
|
9
|
-
static visit(node: PipelineExpression, visitNode: VisitNodeType
|
|
9
|
+
static visit(node: PipelineExpression, visitNode: VisitNodeType): void;
|
|
10
10
|
private arguments;
|
|
11
11
|
constructor(left: ExpressionNode, right: ExpressionNode, params?: (ExpressionNode | '?' | '...?')[]);
|
|
12
12
|
getLeft(): ExpressionNode;
|
|
@@ -14,7 +14,7 @@ let PipelineExpression = PipelineExpression_1 = class PipelineExpression extends
|
|
|
14
14
|
static fromJSON(node, deserializer) {
|
|
15
15
|
return new PipelineExpression_1(deserializer(node.left), deserializer(node.right), node.arguments.map(arg => typeof arg === 'string' ? arg : deserializer(arg)));
|
|
16
16
|
}
|
|
17
|
-
static visit(node, visitNode
|
|
17
|
+
static visit(node, visitNode) {
|
|
18
18
|
visitNode(node.left);
|
|
19
19
|
visitNode(node.right);
|
|
20
20
|
node.arguments.forEach(arg => typeof arg == 'object' && visitNode(arg));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/pipeline.ts"],"names":[],"mappings":";;AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAe3D,IAAa,kBAAkB,0BAA/B,MAAa,kBAAmB,SAAQ,sBAAsB;IAc7D,YAAoB,IAAoB,EAAU,KAAqB,EAAE,SAA4C,EAAE;QACtH,KAAK,EAAE,CAAC;QADW,SAAI,GAAJ,IAAI,CAAgB;QAAU,UAAK,GAAL,KAAK,CAAgB;QAEtE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;IACzB,CAAC;IAhBD,MAAM,CAAC,QAAQ,CAAC,IAAwB,EAAE,YAA8B;QACvE,OAAO,IAAI,oBAAkB,CAC5B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EACvB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EACxB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAC5E,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAwB,EAAE,SAAwB
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/pipeline.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode,\n\tExpressionEventPath, VisitNodeType\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';\nimport { SpreadElement } from '../computing/spread.js';\nimport { MemberExpression } from '../definition/member.js';\n\n/**\n * pipeline ('|>') operator support syntax:\n * param |> func\n * param |> func:arg1:arg2:arg3\n * param |> func:arg1:?:arg3\n * param |> func:arg1:?:arg3:?:arg5\n * param |> func:arg1:...?:arg3\n * \n * param |> func(arg1, arg2, arg3)\n * param |> func(arg1, ?, arg3)\n * param |> func(arg1, ?, arg3, arg4, ?, arg6)\n */\n@Deserializer('PipelineExpression')\nexport class PipelineExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: PipelineExpression, deserializer: NodeDeserializer): PipelineExpression {\n\t\treturn new PipelineExpression(\n\t\t\tdeserializer(node.left),\n\t\t\tdeserializer(node.right),\n\t\t\tnode.arguments.map(arg => typeof arg === 'string' ? arg : deserializer(arg))\n\t\t);\n\t}\n\tstatic visit(node: PipelineExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.left);\n\t\tvisitNode(node.right);\n\t\tnode.arguments.forEach(arg => typeof arg == 'object' && visitNode(arg));\n\t}\n\tprivate arguments: (ExpressionNode | '?' | '...?')[];\n\tconstructor(private left: ExpressionNode, private right: ExpressionNode, params: (ExpressionNode | '?' | '...?')[] = []) {\n\t\tsuper();\n\t\tthis.arguments = params;\n\t}\n\tgetLeft() {\n\t\treturn this.left;\n\t}\n\tgetRight() {\n\t\treturn this.right;\n\t}\n\tgetArguments() {\n\t\treturn this.arguments;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.left.shareVariables(scopeList);\n\t\tthis.right.shareVariables(scopeList);\n\t\t(this.arguments\n\t\t\t.filter(param => typeof param !== 'string') as ExpressionNode[])\n\t\t\t.forEach(param => param.shareVariables(scopeList))\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`PipelineNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst paramValue = this.left.get(stack);\n\t\tconst parameters: any[] = [];\n\t\tlet indexed = false;\n\t\tfor (const arg of this.arguments) {\n\t\t\tif (arg === '?') {\n\t\t\t\tparameters.push(paramValue);\n\t\t\t\tindexed = true;\n\t\t\t} else if (arg === '...?') {\n\t\t\t\tparameters.push(...paramValue);\n\t\t\t\tindexed = true;\n\t\t\t} else {\n\t\t\t\tif (arg instanceof SpreadElement) {\n\t\t\t\t\tconst paramScope = stack.pushBlockScopeFor(parameters);\n\t\t\t\t\targ.get(stack);\n\t\t\t\t\tstack.clearTo(paramScope);\n\t\t\t\t} else {\n\t\t\t\t\tparameters.push(arg.get(stack));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!indexed) {\n\t\t\tparameters.unshift(paramValue);\n\t\t}\n\t\tconst funCallBack = this.right.get(stack) as Function;\n\t\tif (this.right instanceof MemberExpression) {\n\t\t\tconst thisArg = this.right.getObject().get(stack);\n\t\t\treturn funCallBack.apply(thisArg, parameters);\n\t\t}\n\t\treturn funCallBack(...parameters);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.right.dependency(computed)\n\t\t\t.concat(\n\t\t\t\tthis.left.dependency(computed),\n\t\t\t\t(this.arguments.filter(arg => (arg !== '?' && arg !== '...?')) as ExpressionNode[])\n\t\t\t\t\t.flatMap(param => param.dependency!(computed))\n\t\t\t);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.right.dependencyPath(computed)\n\t\t\t.concat(\n\t\t\t\tthis.left.dependencyPath(computed),\n\t\t\t\t(this.arguments.filter(arg => (arg !== '?' && arg !== '...?')) as ExpressionNode[])\n\t\t\t\t\t.flatMap(param => param.dependencyPath!(computed))\n\t\t\t);\n\t}\n\ttoString() {\n\t\treturn `${this.left.toString()} |> ${this.right.toString()}${this.arguments.flatMap(arg => `:${arg.toString()}`).join('')}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tleft: this.left.toJSON(),\n\t\t\tright: this.right.toJSON(),\n\t\t\targuments: this.arguments.map(arg => typeof arg === 'string' ? arg : arg.toJSON())\n\t\t};\n\t}\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType
|
|
1
|
+
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../expression.js';
|
|
2
2
|
import type { Scope } from '../../scope/scope.js';
|
|
3
3
|
import type { Stack } from '../../scope/stack.js';
|
|
4
4
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
@@ -7,7 +7,7 @@ export declare class ConditionalExpression extends AbstractExpressionNode {
|
|
|
7
7
|
private alternate;
|
|
8
8
|
private consequent;
|
|
9
9
|
static fromJSON(node: ConditionalExpression, deserializer: NodeDeserializer): ConditionalExpression;
|
|
10
|
-
static visit(node: ConditionalExpression, visitNode: VisitNodeType
|
|
10
|
+
static visit(node: ConditionalExpression, visitNode: VisitNodeType): void;
|
|
11
11
|
constructor(test: ExpressionNode, alternate: ExpressionNode, consequent: ExpressionNode);
|
|
12
12
|
getTest(): ExpressionNode;
|
|
13
13
|
getAlternate(): ExpressionNode;
|
package/api/operators/ternary.js
CHANGED
|
@@ -12,7 +12,7 @@ let ConditionalExpression = ConditionalExpression_1 = class ConditionalExpressio
|
|
|
12
12
|
static fromJSON(node, deserializer) {
|
|
13
13
|
return new ConditionalExpression_1(deserializer(node.test), deserializer(node.alternate), deserializer(node.consequent));
|
|
14
14
|
}
|
|
15
|
-
static visit(node, visitNode
|
|
15
|
+
static visit(node, visitNode) {
|
|
16
16
|
visitNode(node.test);
|
|
17
17
|
visitNode(node.alternate);
|
|
18
18
|
visitNode(node.consequent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ternary.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/ternary.ts"],"names":[],"mappings":";;AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,IAAa,qBAAqB,6BAAlC,MAAa,qBAAsB,SAAQ,sBAAsB;IAahE,YAAoB,IAAoB,EAAU,SAAyB,EAAU,UAA0B;QAC9G,KAAK,EAAE,CAAC;QADW,SAAI,GAAJ,IAAI,CAAgB;QAAU,cAAS,GAAT,SAAS,CAAgB;QAAU,eAAU,GAAV,UAAU,CAAgB;IAE/G,CAAC;IAdD,MAAM,CAAC,QAAQ,CAAC,IAA2B,EAAE,YAA8B;QAC1E,OAAO,IAAI,uBAAqB,CAC/B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EACvB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAC5B,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAA2B,EAAE,SAAwB
|
|
1
|
+
{"version":3,"file":"ternary.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/ternary.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode,\n\tExpressionEventPath, VisitNodeType\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('ConditionalExpression')\nexport class ConditionalExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: ConditionalExpression, deserializer: NodeDeserializer): ConditionalExpression {\n\t\treturn new ConditionalExpression(\n\t\t\tdeserializer(node.test),\n\t\t\tdeserializer(node.alternate),\n\t\t\tdeserializer(node.consequent)\n\t\t);\n\t}\n\tstatic visit(node: ConditionalExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.test);\n\t\tvisitNode(node.alternate);\n\t\tvisitNode(node.consequent);\n\t}\n\tconstructor(private test: ExpressionNode, private alternate: ExpressionNode, private consequent: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetTest() {\n\t\treturn this.test;\n\t}\n\tgetAlternate() {\n\t\treturn this.alternate;\n\t}\n\tgetConsequent() {\n\t\treturn this.consequent;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.test.shareVariables(scopeList);\n\t\tthis.alternate.shareVariables(scopeList);\n\t\tthis.consequent.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`ConditionalExpression#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\treturn this.test.get(stack) ? this.consequent.get(stack) : this.alternate.get(stack);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.test.dependency(computed)\n\t\t\t.concat(\n\t\t\t\tthis.alternate.dependency(computed),\n\t\t\t\tthis.consequent.dependency(computed)\n\t\t\t);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.test.dependencyPath(computed)\n\t\t\t.concat(\n\t\t\t\tthis.alternate.dependencyPath(computed),\n\t\t\t\tthis.consequent.dependencyPath(computed)\n\t\t\t);\n\t}\n\ttoString() {\n\t\treturn `${this.test.toString()} ? (${this.alternate.toString()}):(${this.consequent.toString()})`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\ttest: this.test.toJSON(),\n\t\t\talternate: this.alternate.toJSON(),\n\t\t\tconsequent: this.consequent.toJSON()\n\t\t};\n\t}\n}\n"]}
|
package/api/operators/unary.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType
|
|
1
|
+
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../expression.js';
|
|
2
2
|
import type { Scope } from '../../scope/scope.js';
|
|
3
3
|
import type { Stack } from '../../scope/stack.js';
|
|
4
4
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
@@ -7,7 +7,7 @@ export declare class UnaryExpression extends AbstractExpressionNode {
|
|
|
7
7
|
private operator;
|
|
8
8
|
private argument;
|
|
9
9
|
static fromJSON(node: UnaryExpression, deserializer: NodeDeserializer): UnaryExpression;
|
|
10
|
-
static visit(node: UnaryExpression, visitNode: VisitNodeType
|
|
10
|
+
static visit(node: UnaryExpression, visitNode: VisitNodeType): void;
|
|
11
11
|
static Evaluations: {
|
|
12
12
|
[key: string]: (value: any) => any;
|
|
13
13
|
};
|
|
@@ -17,7 +17,7 @@ export declare class UnaryExpression extends AbstractExpressionNode {
|
|
|
17
17
|
shareVariables(scopeList: Scope<any>[]): void;
|
|
18
18
|
set(stack: Stack, value: any): any;
|
|
19
19
|
get(stack: Stack, thisContext?: any): any;
|
|
20
|
-
private
|
|
20
|
+
private executeDelete;
|
|
21
21
|
dependency(computed?: true): ExpressionNode[];
|
|
22
22
|
dependencyPath(computed?: true): ExpressionEventPath[];
|
|
23
23
|
toString(): string;
|
package/api/operators/unary.js
CHANGED
|
@@ -13,7 +13,7 @@ let UnaryExpression = UnaryExpression_1 = class UnaryExpression extends Abstract
|
|
|
13
13
|
static fromJSON(node, deserializer) {
|
|
14
14
|
return new UnaryExpression_1(node.operator, deserializer(node.argument));
|
|
15
15
|
}
|
|
16
|
-
static visit(node, visitNode
|
|
16
|
+
static visit(node, visitNode) {
|
|
17
17
|
visitNode(node.argument);
|
|
18
18
|
}
|
|
19
19
|
getOperator() {
|
|
@@ -30,13 +30,13 @@ let UnaryExpression = UnaryExpression_1 = class UnaryExpression extends Abstract
|
|
|
30
30
|
}
|
|
31
31
|
get(stack, thisContext) {
|
|
32
32
|
switch (this.operator) {
|
|
33
|
-
case 'delete': return this.
|
|
33
|
+
case 'delete': return this.executeDelete(stack, thisContext);
|
|
34
34
|
default:
|
|
35
35
|
const value = this.argument.get(stack);
|
|
36
36
|
return UnaryExpression_1.Evaluations[this.operator](value);
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
|
|
39
|
+
executeDelete(stack, thisContext) {
|
|
40
40
|
if (this.argument instanceof MemberExpression) {
|
|
41
41
|
const scope = this.argument.findScope(stack);
|
|
42
42
|
let propertyKey;
|
|
@@ -52,6 +52,7 @@ let UnaryExpression = UnaryExpression_1 = class UnaryExpression extends Abstract
|
|
|
52
52
|
}
|
|
53
53
|
return scope.delete(propertyKey);
|
|
54
54
|
}
|
|
55
|
+
return false;
|
|
55
56
|
}
|
|
56
57
|
dependency(computed) {
|
|
57
58
|
return this.argument.dependency(computed);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unary.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/unary.ts"],"names":[],"mappings":";;AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAIlD,IAAa,eAAe,uBAA5B,MAAa,eAAgB,SAAQ,sBAAsB;IAe1D,YAAoB,QAAuB,EAAU,QAAwB;QAC5E,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAe;QAAU,aAAQ,GAAR,QAAQ,CAAgB;IAE7E,CAAC;IAhBD,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,YAA8B;QACpE,OAAO,IAAI,iBAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAqB,EAAE,SAAwB
|
|
1
|
+
{"version":3,"file":"unary.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/unary.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode,\n\tExpressionEventPath, VisitNodeType\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';\nimport { MemberExpression } from '../definition/member.js';\nimport { Literal } from '../definition/values.js';\n\nexport type UnaryOperator = '-' | '+' | '~' | '!' | 'void' | 'delete' | 'typeof';\n@Deserializer('UnaryExpression')\nexport class UnaryExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: UnaryExpression, deserializer: NodeDeserializer): UnaryExpression {\n\t\treturn new UnaryExpression(node.operator, deserializer(node.argument));\n\t}\n\tstatic visit(node: UnaryExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.argument);\n\t}\n\tstatic Evaluations: { [key: string]: (value: any) => any } = {\n\t\t'+': (value: string) => { return +value; },\n\t\t'-': (value: number) => { return -value; },\n\t\t'~': (value: number) => { return ~value; },\n\t\t'!': (value: any) => { return !value; },\n\t\t'void': (value: any) => { return void value; },\n\t\t'typeof': (value: any) => { return typeof value; },\n\t};\n\tconstructor(private operator: UnaryOperator, private argument: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetOperator() {\n\t\treturn this.operator;\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.argument.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: any) {\n\t\treturn this.argument.set(stack, value);\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\tswitch (this.operator) {\n\t\t\tcase 'delete': return this.executeDelete(stack, thisContext);\n\t\t\tdefault:\n\t\t\t\tconst value = this.argument.get(stack);\n\t\t\t\treturn UnaryExpression.Evaluations[this.operator](value);\n\t\t}\n\t}\n\tprivate executeDelete(stack: Stack, thisContext?: any): boolean {\n\t\tif (this.argument instanceof MemberExpression) {\n\t\t\tconst scope = this.argument.findScope<ScopeContext>(stack);\n\t\t\tlet propertyKey: PropertyKey;\n\t\t\tconst right = this.argument.getProperty();\n\t\t\tif (right instanceof MemberExpression) {\n\t\t\t\t// [Symbol.asyncIterator]\n\t\t\t\tpropertyKey = this.argument.getProperty().get(stack);\n\t\t\t} else if (right instanceof Literal) {\n\t\t\t\t// x[10], x['string'], x.name\n\t\t\t\tpropertyKey = right.getValue();\n\t\t\t} else {\n\t\t\t\t// x[u == 3 ? 'y': 'n']\n\t\t\t\tpropertyKey = this.argument.getProperty().get(stack);\n\t\t\t}\n\t\t\treturn scope.delete(propertyKey);\n\t\t}\n\t\treturn false;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.argument.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.argument.dependencyPath(computed);\n\t}\n\ttoString() {\n\t\tswitch (this.operator) {\n\t\t\tcase 'void':\n\t\t\tcase 'delete':\n\t\t\tcase 'typeof':\n\t\t\t\treturn `${this.operator} ${this.argument.toString()}`;\n\t\t\tdefault:\n\t\t\t\treturn `${this.operator}${this.argument.toString()}`;\n\t\t}\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\toperator: this.operator,\n\t\t\targument: this.argument.toJSON(),\n\t\t\tprefix: true\n\t\t};\n\t}\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType
|
|
1
|
+
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../expression.js';
|
|
2
2
|
import type { Scope } from '../../scope/scope.js';
|
|
3
3
|
import type { Stack } from '../../scope/stack.js';
|
|
4
4
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
@@ -8,7 +8,7 @@ export declare class UpdateExpression extends AbstractExpressionNode {
|
|
|
8
8
|
private argument;
|
|
9
9
|
private prefix;
|
|
10
10
|
static fromJSON(node: UpdateExpression, deserializer: NodeDeserializer): UpdateExpression;
|
|
11
|
-
static visit(node: UpdateExpression, visitNode: VisitNodeType
|
|
11
|
+
static visit(node: UpdateExpression, visitNode: VisitNodeType): void;
|
|
12
12
|
static PostfixEvaluations: {
|
|
13
13
|
[key: string]: (num: {
|
|
14
14
|
value: number;
|
package/api/operators/update.js
CHANGED
|
@@ -12,7 +12,7 @@ let UpdateExpression = UpdateExpression_1 = class UpdateExpression extends Abstr
|
|
|
12
12
|
static fromJSON(node, deserializer) {
|
|
13
13
|
return new UpdateExpression_1(node.operator, deserializer(node.argument), node.prefix);
|
|
14
14
|
}
|
|
15
|
-
static visit(node, visitNode
|
|
15
|
+
static visit(node, visitNode) {
|
|
16
16
|
visitNode(node.argument);
|
|
17
17
|
}
|
|
18
18
|
getOperator() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/update.ts"],"names":[],"mappings":";;AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAK7D,IAAa,gBAAgB,wBAA7B,MAAa,gBAAiB,SAAQ,sBAAsB;IAkB3D,YAAoB,QAAwB,EAAU,QAAwB,EAAU,MAAe;QACtG,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAgB;QAAU,aAAQ,GAAR,QAAQ,CAAgB;QAAU,WAAM,GAAN,MAAM,CAAS;IAEvG,CAAC;IAnBD,MAAM,CAAC,QAAQ,CAAC,IAAsB,EAAE,YAA8B;QACrE,OAAO,IAAI,kBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAsB,EAAE,SAAwB
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/update.ts"],"names":[],"mappings":";;AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAK7D,IAAa,gBAAgB,wBAA7B,MAAa,gBAAiB,SAAQ,sBAAsB;IAkB3D,YAAoB,QAAwB,EAAU,QAAwB,EAAU,MAAe;QACtG,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAgB;QAAU,aAAQ,GAAR,QAAQ,CAAgB;QAAU,WAAM,GAAN,MAAM,CAAS;IAEvG,CAAC;IAnBD,MAAM,CAAC,QAAQ,CAAC,IAAsB,EAAE,YAA8B;QACrE,OAAO,IAAI,kBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAsB,EAAE,SAAwB;QAC5D,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAeD,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,cAAc,CAAC,SAAuB;QACrC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAW,EAAE,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM;YAC9B,CAAC,CAAC,kBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC;YACxD,CAAC,CAAC,kBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3D,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,WAAW,CAAC;IACpB,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IACD,QAAQ;QACP,IAAI,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrD;QACD,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtD,CAAC;IACD,MAAM;QACL,OAAO;YACN,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAChC,MAAM,EAAE,IAAI,CAAC,MAAM;SACnB,CAAC;IACH,CAAC;CAED,CAAA;AArDO,mCAAkB,GAA0D;IAClF,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACpC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CACnC,CAAA;AAEK,kCAAiB,GAA0D;IACjF,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACpC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;CACnC,CAAA;AAhBU,gBAAgB;IAD5B,YAAY,CAAC,kBAAkB,CAAC;;GACpB,gBAAgB,CA6D5B;SA7DY,gBAAgB","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode,\n\tExpressionEventPath, VisitNodeType\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\nexport type UpdateOperator = '++' | '--';\n\n@Deserializer('UpdateExpression')\nexport class UpdateExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: UpdateExpression, deserializer: NodeDeserializer): UpdateExpression {\n\t\treturn new UpdateExpression(node.operator, deserializer(node.argument), node.prefix);\n\t}\n\tstatic visit(node: UpdateExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.argument);\n\t}\n\n\tstatic PostfixEvaluations: { [key: string]: (num: { value: number }) => number } = {\n\t\t'++': num => { return num.value++; },\n\t\t'--': num => { return num.value--; }\n\t};\n\n\tstatic PrefixEvaluations: { [key: string]: (num: { value: number }) => number } = {\n\t\t'++': num => { return ++num.value; },\n\t\t'--': num => { return --num.value; }\n\t};\n\n\tconstructor(private operator: UpdateOperator, private argument: ExpressionNode, private prefix: boolean) {\n\t\tsuper();\n\t}\n\tgetOperator() {\n\t\treturn this.operator;\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.argument.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthis.argument.set(stack, value);\n\t}\n\tget(stack: Stack) {\n\t\tconst num = { value: this.argument.get(stack) as number };\n\t\tconst returnValue = this.prefix\n\t\t\t? UpdateExpression.PrefixEvaluations[this.operator](num)\n\t\t\t: UpdateExpression.PostfixEvaluations[this.operator](num);\n\t\tthis.set(stack, num.value);\n\t\treturn returnValue;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.argument.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.argument.dependencyPath(computed);\n\t}\n\ttoString() {\n\t\tif (this.prefix) {\n\t\t\treturn `${this.operator}${this.argument.toString()}`;\n\t\t}\n\t\treturn `${this.argument.toString()}${this.operator}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\toperator: this.operator,\n\t\t\targument: this.argument.toJSON(),\n\t\t\tprefix: this.prefix\n\t\t};\n\t}\n\n}\n"]}
|
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
import type { ExpressionEventPath, ExpressionNode, NodeDeserializer } from '
|
|
2
|
-
import type { Scope } from '
|
|
3
|
-
import type { Stack } from '
|
|
4
|
-
import { AbstractExpressionNode } from '
|
|
1
|
+
import type { ExpressionEventPath, ExpressionNode, NodeDeserializer, VisitNodeType } from './expression.js';
|
|
2
|
+
import type { Scope, ScopeContext } from '../scope/scope.js';
|
|
3
|
+
import type { Stack } from '../scope/stack.js';
|
|
4
|
+
import { AbstractExpressionNode } from './abstract.js';
|
|
5
5
|
export declare type ProgramSourceType = 'script' | 'module';
|
|
6
6
|
export declare class Program extends AbstractExpressionNode {
|
|
7
7
|
private sourceType;
|
|
8
8
|
private body;
|
|
9
9
|
static fromJSON(node: Program, deserializer: NodeDeserializer): Program;
|
|
10
|
+
static visit(node: Program, visitNode: VisitNodeType): void;
|
|
10
11
|
constructor(sourceType: ProgramSourceType, body: ExpressionNode[]);
|
|
11
|
-
shareVariables(scopeList: Scope<
|
|
12
|
+
shareVariables(scopeList: Scope<ScopeContext>[]): void;
|
|
12
13
|
set(stack: Stack, value: any): any;
|
|
13
|
-
get(stack: Stack
|
|
14
|
+
get(stack: Stack): any;
|
|
14
15
|
dependency(computed?: true): ExpressionNode[];
|
|
15
16
|
dependencyPath(computed?: true): ExpressionEventPath[];
|
|
16
17
|
toString(): string;
|
|
17
|
-
toJson():
|
|
18
|
-
[key: string]: any;
|
|
19
|
-
};
|
|
18
|
+
toJson(): object;
|
|
20
19
|
}
|
package/api/program.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
var Program_1;
|
|
2
|
+
import { __decorate, __metadata } from "tslib";
|
|
3
|
+
import { AbstractExpressionNode } from './abstract.js';
|
|
4
|
+
import { Deserializer } from './deserialize/deserialize.js';
|
|
5
|
+
let Program = Program_1 = class Program extends AbstractExpressionNode {
|
|
6
|
+
constructor(sourceType, body) {
|
|
7
|
+
super();
|
|
8
|
+
this.sourceType = sourceType;
|
|
9
|
+
this.body = body;
|
|
10
|
+
}
|
|
11
|
+
static fromJSON(node, deserializer) {
|
|
12
|
+
return new Program_1(node.sourceType, node.body.map(deserializer));
|
|
13
|
+
}
|
|
14
|
+
static visit(node, visitNode) {
|
|
15
|
+
node.body.forEach(visitNode);
|
|
16
|
+
}
|
|
17
|
+
shareVariables(scopeList) { }
|
|
18
|
+
set(stack, value) {
|
|
19
|
+
throw new Error(`Program#set() has no implementation.`);
|
|
20
|
+
}
|
|
21
|
+
get(stack) {
|
|
22
|
+
return this.body.map(statement => statement.get(stack)).at(-1);
|
|
23
|
+
}
|
|
24
|
+
dependency(computed) {
|
|
25
|
+
return this.body.flatMap(statement => statement.dependency());
|
|
26
|
+
}
|
|
27
|
+
dependencyPath(computed) {
|
|
28
|
+
return this.body.flatMap(statement => statement.dependencyPath());
|
|
29
|
+
}
|
|
30
|
+
toString() {
|
|
31
|
+
return this.body.map(statement => statement.toString()).join('\n');
|
|
32
|
+
}
|
|
33
|
+
toJson() {
|
|
34
|
+
return {
|
|
35
|
+
sourceType: this.sourceType,
|
|
36
|
+
body: this.body.map(statement => statement.toJSON())
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
Program = Program_1 = __decorate([
|
|
41
|
+
Deserializer('Program'),
|
|
42
|
+
__metadata("design:paramtypes", [String, Array])
|
|
43
|
+
], Program);
|
|
44
|
+
export { Program };
|
|
45
|
+
//# sourceMappingURL=program.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../../src/expressions/api/program.ts"],"names":[],"mappings":";;AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAK5D,IAAa,OAAO,eAApB,MAAa,OAAQ,SAAQ,sBAAsB;IAQlD,YAAoB,UAA6B,EAAU,IAAsB;QAChF,KAAK,EAAE,CAAC;QADW,eAAU,GAAV,UAAU,CAAmB;QAAU,SAAI,GAAJ,IAAI,CAAkB;IAEjF,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAa,EAAE,YAA8B;QAC5D,OAAO,IAAI,SAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAa,EAAE,SAAwB;QACnD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAID,cAAc,CAAC,SAAgC,IAAU,CAAC;IAC1D,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACzD,CAAC;IACD,GAAG,CAAC,KAAY;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC;IACD,MAAM;QACL,OAAO;YACN,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;SACpD,CAAC;IACH,CAAC;CAED,CAAA;AAnCY,OAAO;IADnB,YAAY,CAAC,SAAS,CAAC;;GACX,OAAO,CAmCnB;SAnCY,OAAO","sourcesContent":["import type {\n\tExpressionEventPath, ExpressionNode,\n\tNodeDeserializer, VisitNodeType\n} from './expression.js';\nimport type { Scope, ScopeContext } from '../scope/scope.js';\nimport type { Stack } from '../scope/stack.js';\nimport { AbstractExpressionNode } from './abstract.js';\nimport { Deserializer } from './deserialize/deserialize.js';\n\nexport type ProgramSourceType = 'script' | 'module';\n\n@Deserializer('Program')\nexport class Program extends AbstractExpressionNode {\n\n\tstatic fromJSON(node: Program, deserializer: NodeDeserializer): Program {\n\t\treturn new Program(node.sourceType, node.body.map(deserializer));\n\t}\n\tstatic visit(node: Program, visitNode: VisitNodeType): void {\n\t\tnode.body.forEach(visitNode);\n\t}\n\tconstructor(private sourceType: ProgramSourceType, private body: ExpressionNode[]) {\n\t\tsuper();\n\t}\n\tshareVariables(scopeList: Scope<ScopeContext>[]): void { }\n\tset(stack: Stack, value: any): any {\n\t\tthrow new Error(`Program#set() has no implementation.`);\n\t}\n\tget(stack: Stack): any {\n\t\treturn this.body.map(statement => statement.get(stack)).at(-1);\n\t}\n\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.body.flatMap(statement => statement.dependency());\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.body.flatMap(statement => statement.dependencyPath());\n\t}\n\ttoString(): string {\n\t\treturn this.body.map(statement => statement.toString()).join('\\n');\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tsourceType: this.sourceType,\n\t\t\tbody: this.body.map(statement => statement.toJSON())\n\t\t};\n\t}\n\n}\n"]}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType
|
|
1
|
+
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../../expression.js';
|
|
2
2
|
import type { Scope } from '../../../scope/scope.js';
|
|
3
3
|
import type { Stack } from '../../../scope/stack.js';
|
|
4
4
|
import { AbstractExpressionNode } from '../../abstract.js';
|
|
5
5
|
export declare class BlockStatement extends AbstractExpressionNode {
|
|
6
|
-
|
|
7
|
-
isStatement: boolean;
|
|
6
|
+
protected body: ExpressionNode[];
|
|
8
7
|
static fromJSON(node: BlockStatement, deserializer: NodeDeserializer): BlockStatement;
|
|
9
|
-
static visit(node: BlockStatement, visitNode: VisitNodeType
|
|
10
|
-
constructor(body: ExpressionNode[]
|
|
8
|
+
static visit(node: BlockStatement, visitNode: VisitNodeType): void;
|
|
9
|
+
constructor(body: ExpressionNode[]);
|
|
11
10
|
getBody(): ExpressionNode[];
|
|
12
11
|
shareVariables(scopeList: Scope<any>[]): void;
|
|
13
12
|
set(stack: Stack, value: any): void;
|
|
@@ -2,18 +2,18 @@ var BlockStatement_1;
|
|
|
2
2
|
import { __decorate, __metadata } from "tslib";
|
|
3
3
|
import { AbstractExpressionNode, ReturnValue } from '../../abstract.js';
|
|
4
4
|
import { Deserializer } from '../../deserialize/deserialize.js';
|
|
5
|
-
import {
|
|
5
|
+
import { TerminateReturnType } from './terminate.js';
|
|
6
|
+
import { isDeclarationExpression } from '../../utils.js';
|
|
6
7
|
let BlockStatement = BlockStatement_1 = class BlockStatement extends AbstractExpressionNode {
|
|
7
|
-
constructor(body
|
|
8
|
+
constructor(body) {
|
|
8
9
|
super();
|
|
9
10
|
this.body = body;
|
|
10
|
-
this.isStatement = isStatement;
|
|
11
11
|
}
|
|
12
12
|
static fromJSON(node, deserializer) {
|
|
13
|
-
return new BlockStatement_1(node.body.map(
|
|
13
|
+
return new BlockStatement_1(node.body.map(deserializer));
|
|
14
14
|
}
|
|
15
|
-
static visit(node, visitNode
|
|
16
|
-
|
|
15
|
+
static visit(node, visitNode) {
|
|
16
|
+
node.body.forEach(visitNode);
|
|
17
17
|
}
|
|
18
18
|
getBody() {
|
|
19
19
|
return this.body;
|
|
@@ -26,25 +26,19 @@ let BlockStatement = BlockStatement_1 = class BlockStatement extends AbstractExp
|
|
|
26
26
|
}
|
|
27
27
|
get(stack) {
|
|
28
28
|
const blockScope = stack.pushBlockScope();
|
|
29
|
+
let value;
|
|
29
30
|
for (const node of this.body) {
|
|
30
|
-
|
|
31
|
-
if (
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
case ContinueStatement.ContinueSymbol === value:
|
|
35
|
-
case value instanceof ReturnValue:
|
|
36
|
-
stack.clearTo(blockScope);
|
|
37
|
-
return value;
|
|
38
|
-
}
|
|
31
|
+
value = node.get(stack);
|
|
32
|
+
if (value instanceof ReturnValue) {
|
|
33
|
+
stack.clearTo(blockScope);
|
|
34
|
+
return value.value;
|
|
39
35
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
stack.clearTo(blockScope);
|
|
43
|
-
return value.value;
|
|
44
|
-
}
|
|
36
|
+
if (value instanceof TerminateReturnType) {
|
|
37
|
+
return value;
|
|
45
38
|
}
|
|
46
39
|
}
|
|
47
40
|
stack.clearTo(blockScope);
|
|
41
|
+
return value;
|
|
48
42
|
}
|
|
49
43
|
dependency(computed) {
|
|
50
44
|
return this.body.flatMap(exp => exp.dependency(computed));
|
|
@@ -53,15 +47,20 @@ let BlockStatement = BlockStatement_1 = class BlockStatement extends AbstractExp
|
|
|
53
47
|
return this.body.flatMap(node => node.dependencyPath(computed));
|
|
54
48
|
}
|
|
55
49
|
toString() {
|
|
56
|
-
return `{
|
|
50
|
+
return `{
|
|
51
|
+
${this.body
|
|
52
|
+
.map(node => ({ insert: !isDeclarationExpression(node), string: node.toString() }))
|
|
53
|
+
.map(ref => `${ref.string}${ref.insert ? ';' : ''}`)
|
|
54
|
+
.join('\n')}
|
|
55
|
+
}`;
|
|
57
56
|
}
|
|
58
57
|
toJson() {
|
|
59
|
-
return { body: this.body.map(node => node.toJSON())
|
|
58
|
+
return { body: this.body.map(node => node.toJSON()) };
|
|
60
59
|
}
|
|
61
60
|
};
|
|
62
61
|
BlockStatement = BlockStatement_1 = __decorate([
|
|
63
62
|
Deserializer('BlockStatement'),
|
|
64
|
-
__metadata("design:paramtypes", [Array
|
|
63
|
+
__metadata("design:paramtypes", [Array])
|
|
65
64
|
], BlockStatement);
|
|
66
65
|
export { BlockStatement };
|
|
67
66
|
//# sourceMappingURL=block.js.map
|