@ibyar/expressions 0.4.2 → 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.
Files changed (126) hide show
  1. package/api/abstract.d.ts +2 -1
  2. package/api/abstract.js +4 -0
  3. package/api/abstract.js.map +1 -1
  4. package/api/definition/array.d.ts +3 -1
  5. package/api/definition/array.js +6 -0
  6. package/api/definition/array.js.map +1 -1
  7. package/api/definition/bind.d.ts +2 -1
  8. package/api/definition/bind.js +4 -0
  9. package/api/definition/bind.js.map +1 -1
  10. package/api/definition/function.d.ts +6 -1
  11. package/api/definition/function.js +22 -2
  12. package/api/definition/function.js.map +1 -1
  13. package/api/definition/member.d.ts +2 -1
  14. package/api/definition/member.js +4 -0
  15. package/api/definition/member.js.map +1 -1
  16. package/api/definition/object.d.ts +4 -1
  17. package/api/definition/object.js +10 -0
  18. package/api/definition/object.js.map +1 -1
  19. package/api/definition/statement.d.ts +2 -1
  20. package/api/definition/statement.js +3 -0
  21. package/api/definition/statement.js.map +1 -1
  22. package/api/definition/values.d.ts +11 -4
  23. package/api/definition/values.js +16 -0
  24. package/api/definition/values.js.map +1 -1
  25. package/api/deserialize/deserialize.js +3 -3
  26. package/api/deserialize/deserialize.js.map +1 -1
  27. package/api/deserialize/type-store.d.ts +2 -0
  28. package/api/deserialize/type-store.js +2 -0
  29. package/api/deserialize/type-store.js.map +1 -0
  30. package/api/expression.d.ts +9 -3
  31. package/api/expression.js.map +1 -1
  32. package/api/module/export.d.ts +3 -1
  33. package/api/module/export.js +10 -0
  34. package/api/module/export.js.map +1 -1
  35. package/api/module/import.d.ts +3 -1
  36. package/api/module/import.js +10 -0
  37. package/api/module/import.js.map +1 -1
  38. package/api/module/module.d.ts +2 -1
  39. package/api/module/module.js +5 -0
  40. package/api/module/module.js.map +1 -1
  41. package/api/operators/assignment.d.ts +2 -1
  42. package/api/operators/assignment.js +4 -0
  43. package/api/operators/assignment.js.map +1 -1
  44. package/api/operators/await.d.ts +2 -1
  45. package/api/operators/await.js +3 -0
  46. package/api/operators/await.js.map +1 -1
  47. package/api/operators/binary.d.ts +2 -1
  48. package/api/operators/binary.js +4 -0
  49. package/api/operators/binary.js.map +1 -1
  50. package/api/operators/chaining.d.ts +2 -1
  51. package/api/operators/chaining.js +3 -0
  52. package/api/operators/chaining.js.map +1 -1
  53. package/api/operators/comma.d.ts +2 -1
  54. package/api/operators/comma.js +3 -0
  55. package/api/operators/comma.js.map +1 -1
  56. package/api/operators/grouping.d.ts +2 -1
  57. package/api/operators/grouping.js +3 -0
  58. package/api/operators/grouping.js.map +1 -1
  59. package/api/operators/logical.d.ts +2 -1
  60. package/api/operators/logical.js +4 -0
  61. package/api/operators/logical.js.map +1 -1
  62. package/api/operators/pipeline.d.ts +2 -1
  63. package/api/operators/pipeline.js +5 -0
  64. package/api/operators/pipeline.js.map +1 -1
  65. package/api/operators/ternary.d.ts +2 -1
  66. package/api/operators/ternary.js +5 -0
  67. package/api/operators/ternary.js.map +1 -1
  68. package/api/operators/unary.d.ts +2 -1
  69. package/api/operators/unary.js +3 -0
  70. package/api/operators/unary.js.map +1 -1
  71. package/api/operators/update.d.ts +2 -1
  72. package/api/operators/update.js +3 -0
  73. package/api/operators/update.js.map +1 -1
  74. package/api/statement/control/block.d.ts +2 -1
  75. package/api/statement/control/block.js +3 -0
  76. package/api/statement/control/block.js.map +1 -1
  77. package/api/statement/control/if.d.ts +2 -1
  78. package/api/statement/control/if.js +5 -0
  79. package/api/statement/control/if.js.map +1 -1
  80. package/api/statement/control/switch.d.ts +4 -1
  81. package/api/statement/control/switch.js +11 -0
  82. package/api/statement/control/switch.js.map +1 -1
  83. package/api/statement/control/terminate.d.ts +5 -3
  84. package/api/statement/control/terminate.js +6 -0
  85. package/api/statement/control/terminate.js.map +1 -1
  86. package/api/statement/declarations/declares.d.ts +3 -1
  87. package/api/statement/declarations/declares.js +8 -1
  88. package/api/statement/declarations/declares.js.map +1 -1
  89. package/api/statement/iterations/for.d.ts +5 -1
  90. package/api/statement/iterations/for.js +21 -0
  91. package/api/statement/iterations/for.js.map +1 -1
  92. package/api/statement/iterations/while.d.ts +3 -1
  93. package/api/statement/iterations/while.js +8 -0
  94. package/api/statement/iterations/while.js.map +1 -1
  95. package/index.d.ts +1 -0
  96. package/index.js +1 -0
  97. package/index.js.map +1 -1
  98. package/package.json +3 -3
  99. package/scope/event.d.ts +5 -0
  100. package/scope/event.js +41 -0
  101. package/scope/event.js.map +1 -0
  102. package/scope/index.d.ts +1 -0
  103. package/scope/index.js +1 -0
  104. package/scope/index.js.map +1 -1
  105. package/scope/proxy.d.ts +1 -1
  106. package/scope/proxy.js +3 -3
  107. package/scope/proxy.js.map +1 -1
  108. package/scope/scope.d.ts +56 -48
  109. package/scope/scope.js +84 -29
  110. package/scope/scope.js.map +1 -1
  111. package/scope/stack.d.ts +28 -28
  112. package/scope/stack.js.map +1 -1
  113. package/v8/parser.d.ts +1 -1
  114. package/v8/parser.js +4 -2
  115. package/v8/parser.js.map +1 -1
  116. package/v8/stream.d.ts +4 -2
  117. package/v8/stream.js +34 -17
  118. package/v8/stream.js.map +1 -1
  119. package/v8/token.d.ts +1 -1
  120. package/v8/token.js.map +1 -1
  121. package/visit/index.d.ts +1 -0
  122. package/visit/index.js +2 -0
  123. package/visit/index.js.map +1 -0
  124. package/visit/visitor.d.ts +11 -0
  125. package/visit/visitor.js +42 -0
  126. package/visit/visitor.js.map +1 -0
@@ -13,6 +13,11 @@ let ModuleNode = ModuleNode_1 = class ModuleNode extends AbstractExpressionNode
13
13
  static fromJSON(node, deserializer) {
14
14
  return new ModuleNode_1(node.exportList.map(deserializer), node.importList.map(deserializer), node.body.map(deserializer), node.meta);
15
15
  }
16
+ static visit(node, visitNode, visitNodeList) {
17
+ visitNodeList(node.exportList);
18
+ visitNodeList(node.importList);
19
+ visitNodeList(node.body);
20
+ }
16
21
  getExportList() {
17
22
  return this.exportList;
18
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../src/expressions/api/module/module.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ExpressionEventPath, ExpressionNode, NodeDeserializer } 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('module')\nexport class ModuleNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: ModuleNode, deserializer: NodeDeserializer): ModuleNode {\n\t\treturn new ModuleNode(\n\t\t\tnode.exportList.map(deserializer),\n\t\t\tnode.importList.map(deserializer),\n\t\t\tnode.body.map(deserializer),\n\t\t\tnode.meta\n\t\t);\n\t}\n\tconstructor(\n\t\tprivate exportList: ExpressionNode[],\n\t\tprivate importList: ExpressionNode[],\n\t\tprivate body: ExpressionNode[],\n\t\tprivate meta: { name: string, url: string, }) {\n\t\tsuper();\n\t}\n\tgetExportList() {\n\t\treturn this.exportList;\n\t}\n\tgetImportList() {\n\t\treturn this.importList;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack) {\n\t\tthrow new Error(`ModuleNode.#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tthrow new Error(`ModuleNode.#get() has no implementation.`);\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(exp => exp.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\tconst importString = this.importList.map(imp => imp.toString()).join('\\n');\n\t\tconst exportString = this.exportList.map(expo => expo.toString()).join('\\n');\n\t\tconst bodyString = this.body.map(exp => exp.toString()).join('\\n');\n\t\treturn `${importString}\\n${exportString}\\n${bodyString}\\n`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\texportList: this.exportList.map(expression => expression.toJSON()),\n\t\t\timportList: this.importList.map(expression => expression.toJSON()),\n\t\t\tbody: this.body.map(expression => expression.toJSON()),\n\t\t\tmeta: JSON.parse(JSON.stringify(this.meta)),\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../src/expressions/api/module/module.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tExpressionEventPath, ExpressionNode, NodeDeserializer,\n\tVisitNodeListType, 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('module')\nexport class ModuleNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: ModuleNode, deserializer: NodeDeserializer): ModuleNode {\n\t\treturn new ModuleNode(\n\t\t\tnode.exportList.map(deserializer),\n\t\t\tnode.importList.map(deserializer),\n\t\t\tnode.body.map(deserializer),\n\t\t\tnode.meta\n\t\t);\n\t}\n\tstatic visit(node: ModuleNode, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void {\n\t\tvisitNodeList(node.exportList);\n\t\tvisitNodeList(node.importList);\n\t\tvisitNodeList(node.body);\n\t}\n\tconstructor(\n\t\tprivate exportList: ExpressionNode[],\n\t\tprivate importList: ExpressionNode[],\n\t\tprivate body: ExpressionNode[],\n\t\tprivate meta: { name: string, url: string, }) {\n\t\tsuper();\n\t}\n\tgetExportList() {\n\t\treturn this.exportList;\n\t}\n\tgetImportList() {\n\t\treturn this.importList;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack) {\n\t\tthrow new Error(`ModuleNode.#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tthrow new Error(`ModuleNode.#get() has no implementation.`);\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(exp => exp.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\tconst importString = this.importList.map(imp => imp.toString()).join('\\n');\n\t\tconst exportString = this.exportList.map(expo => expo.toString()).join('\\n');\n\t\tconst bodyString = this.body.map(exp => exp.toString()).join('\\n');\n\t\treturn `${importString}\\n${exportString}\\n${bodyString}\\n`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\texportList: this.exportList.map(expression => expression.toJSON()),\n\t\t\timportList: this.importList.map(expression => expression.toJSON()),\n\t\t\tbody: this.body.map(expression => expression.toJSON()),\n\t\t\tmeta: JSON.parse(JSON.stringify(this.meta)),\n\t\t};\n\t}\n}\n"]}
@@ -1,10 +1,11 @@
1
1
  import type { EvaluateType } from './types.js';
2
- import type { NodeDeserializer, ExpressionNode } from '../expression.js';
2
+ import type { NodeDeserializer, ExpressionNode, VisitNodeType, VisitNodeListType } from '../expression.js';
3
3
  import type { Stack } from '../../scope/stack.js';
4
4
  import { InfixExpressionNode } from '../abstract.js';
5
5
  export declare type AssignmentOperator = '=' | '+=' | '-=' | '*=' | '**=' | '/=' | '%=' | '<<=' | '>>=' | '>>>=' | '|=' | '^=' | '&=' | '||=' | '&&=' | '??=' | '%%=' | '>?=' | '<?=';
6
6
  export declare class AssignmentExpression extends InfixExpressionNode<AssignmentOperator> {
7
7
  static fromJSON(node: AssignmentExpression, deserializer: NodeDeserializer): AssignmentExpression;
8
+ static visit(node: AssignmentExpression, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void;
8
9
  static Evaluations: EvaluateType;
9
10
  static LogicalEvaluations: {
10
11
  [key: string]: (exp: AssignmentExpression, context: any) => any;
@@ -9,6 +9,10 @@ let AssignmentExpression = AssignmentExpression_1 = class AssignmentExpression e
9
9
  static fromJSON(node, deserializer) {
10
10
  return new AssignmentExpression_1(node.operator, deserializer(node.left), deserializer(node.right));
11
11
  }
12
+ static visit(node, visitNode, visitNodeList) {
13
+ visitNode(node.left);
14
+ visitNode(node.right);
15
+ }
12
16
  set(stack, value) {
13
17
  return this.left.set(stack, value);
14
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"assignment.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/assignment.ts"],"names":[],"mappings":"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","sourcesContent":["import type { EvaluateNode, EvaluateType } from './types.js';\nimport type { NodeDeserializer, ExpressionNode } from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { InfixExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\nexport type AssignmentOperator =\n\t'=' | '+=' | '-=' | '*=' | '**=' | '/=' | '%='\n\t| '<<=' | '>>=' | '>>>='\n\t| '|=' | '^=' | '&='\n\t| '||=' | '&&=' | '??='\n\t| '%%=' | '>?=' | '<?=';\n\n@Deserializer('AssignmentExpression')\nexport class AssignmentExpression extends InfixExpressionNode<AssignmentOperator> {\n\tstatic fromJSON(node: AssignmentExpression, deserializer: NodeDeserializer): AssignmentExpression {\n\t\treturn new AssignmentExpression(\n\t\t\tnode.operator,\n\t\t\tdeserializer(node.left),\n\t\t\tdeserializer(node.right)\n\t\t);\n\t}\n\tstatic Evaluations: EvaluateType = {\n\n\t\t'=': (evalNode: EvaluateNode) => { return evalNode.left = evalNode.right; },\n\t\t'*=': (evalNode: EvaluateNode) => { return evalNode.left *= evalNode.right; },\n\t\t'**=': (evalNode: EvaluateNode) => { return evalNode.left **= evalNode.right; },\n\n\t\t'/=': (evalNode: EvaluateNode) => { return evalNode.left /= evalNode.right; },\n\t\t'%=': (evalNode: EvaluateNode) => { return evalNode.left %= evalNode.right; },\n\n\t\t'+=': (evalNode: EvaluateNode) => { return evalNode.left += evalNode.right; },\n\t\t'-=': (evalNode: EvaluateNode) => { return evalNode.left -= evalNode.right; },\n\n\t\t'<<=': (evalNode: EvaluateNode) => { return evalNode.left <<= evalNode.right; },\n\t\t'>>=': (evalNode: EvaluateNode) => { return evalNode.left >>= evalNode.right; },\n\t\t'>>>=': (evalNode: EvaluateNode) => { return evalNode.left >>>= evalNode.right; },\n\n\t\t'&=': (evalNode: EvaluateNode) => { return evalNode.left &= evalNode.right; },\n\t\t'^=': (evalNode: EvaluateNode) => { return evalNode.left ^= evalNode.right; },\n\t\t'|=': (evalNode: EvaluateNode) => { return evalNode.left |= evalNode.right; },\n\n\t\t'%%=': (evalNode: EvaluateNode) => { return evalNode.left %= ((evalNode.left % evalNode.right) + evalNode.right) % evalNode.right; },\n\t\t'>?=': (evalNode: EvaluateNode) => { return evalNode.left = evalNode.left > evalNode.right ? evalNode.left : evalNode.right; },\n\t\t'<?=': (evalNode: EvaluateNode) => { return evalNode.left = evalNode.left > evalNode.right ? evalNode.right : evalNode.left; },\n\n\t};\n\n\tstatic LogicalEvaluations: { [key: string]: (exp: AssignmentExpression, context: any) => any } = {\n\n\t\t'&&=': (exp: AssignmentExpression, 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\texp.set(context, value);\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\n\t\t'||=': (exp: AssignmentExpression, 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\texp.set(context, value);\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\n\t\t'??=': (exp: AssignmentExpression, 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\texp.set(context, value);\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\n\t};\n\n\tconstructor(operator: AssignmentOperator, left: ExpressionNode, right: ExpressionNode) {\n\t\tsuper(operator, left, right);\n\t}\n\tset(stack: Stack, value: any) {\n\t\treturn this.left.set(stack, value);\n\t}\n\tget(stack: Stack): any {\n\t\tswitch (this.operator) {\n\t\t\tcase '&&=':\n\t\t\tcase '||=':\n\t\t\tcase '??=':\n\t\t\t\treturn AssignmentExpression.LogicalEvaluations[this.operator](this, stack);\n\t\t}\n\t\tconst evalNode: EvaluateNode = {\n\t\t\tleft: this.left.get(stack),\n\t\t\tright: this.right.get(stack)\n\t\t};\n\t\tconst value = AssignmentExpression.Evaluations[this.operator](evalNode);\n\t\tthis.set(stack, value);\n\t\treturn value;\n\t}\n}\n"]}
1
+ {"version":3,"file":"assignment.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/assignment.ts"],"names":[],"mappings":"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","sourcesContent":["import type { EvaluateNode, EvaluateType } from './types.js';\nimport type { NodeDeserializer, ExpressionNode, VisitNodeType, VisitNodeListType } from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { InfixExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\nexport type AssignmentOperator =\n\t'=' | '+=' | '-=' | '*=' | '**=' | '/=' | '%='\n\t| '<<=' | '>>=' | '>>>='\n\t| '|=' | '^=' | '&='\n\t| '||=' | '&&=' | '??='\n\t| '%%=' | '>?=' | '<?=';\n\n@Deserializer('AssignmentExpression')\nexport class AssignmentExpression extends InfixExpressionNode<AssignmentOperator> {\n\tstatic fromJSON(node: AssignmentExpression, deserializer: NodeDeserializer): AssignmentExpression {\n\t\treturn new AssignmentExpression(\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: AssignmentExpression, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void {\n\t\tvisitNode(node.left);\n\t\tvisitNode(node.right);\n\t}\n\tstatic Evaluations: EvaluateType = {\n\n\t\t'=': (evalNode: EvaluateNode) => { return evalNode.left = evalNode.right; },\n\t\t'*=': (evalNode: EvaluateNode) => { return evalNode.left *= evalNode.right; },\n\t\t'**=': (evalNode: EvaluateNode) => { return evalNode.left **= evalNode.right; },\n\n\t\t'/=': (evalNode: EvaluateNode) => { return evalNode.left /= evalNode.right; },\n\t\t'%=': (evalNode: EvaluateNode) => { return evalNode.left %= evalNode.right; },\n\n\t\t'+=': (evalNode: EvaluateNode) => { return evalNode.left += evalNode.right; },\n\t\t'-=': (evalNode: EvaluateNode) => { return evalNode.left -= evalNode.right; },\n\n\t\t'<<=': (evalNode: EvaluateNode) => { return evalNode.left <<= evalNode.right; },\n\t\t'>>=': (evalNode: EvaluateNode) => { return evalNode.left >>= evalNode.right; },\n\t\t'>>>=': (evalNode: EvaluateNode) => { return evalNode.left >>>= evalNode.right; },\n\n\t\t'&=': (evalNode: EvaluateNode) => { return evalNode.left &= evalNode.right; },\n\t\t'^=': (evalNode: EvaluateNode) => { return evalNode.left ^= evalNode.right; },\n\t\t'|=': (evalNode: EvaluateNode) => { return evalNode.left |= evalNode.right; },\n\n\t\t'%%=': (evalNode: EvaluateNode) => { return evalNode.left %= ((evalNode.left % evalNode.right) + evalNode.right) % evalNode.right; },\n\t\t'>?=': (evalNode: EvaluateNode) => { return evalNode.left = evalNode.left > evalNode.right ? evalNode.left : evalNode.right; },\n\t\t'<?=': (evalNode: EvaluateNode) => { return evalNode.left = evalNode.left > evalNode.right ? evalNode.right : evalNode.left; },\n\n\t};\n\n\tstatic LogicalEvaluations: { [key: string]: (exp: AssignmentExpression, context: any) => any } = {\n\n\t\t'&&=': (exp: AssignmentExpression, 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\texp.set(context, value);\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\n\t\t'||=': (exp: AssignmentExpression, 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\texp.set(context, value);\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\n\t\t'??=': (exp: AssignmentExpression, 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\texp.set(context, value);\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\n\t};\n\n\tconstructor(operator: AssignmentOperator, left: ExpressionNode, right: ExpressionNode) {\n\t\tsuper(operator, left, right);\n\t}\n\tset(stack: Stack, value: any) {\n\t\treturn this.left.set(stack, value);\n\t}\n\tget(stack: Stack): any {\n\t\tswitch (this.operator) {\n\t\t\tcase '&&=':\n\t\t\tcase '||=':\n\t\t\tcase '??=':\n\t\t\t\treturn AssignmentExpression.LogicalEvaluations[this.operator](this, stack);\n\t\t}\n\t\tconst evalNode: EvaluateNode = {\n\t\t\tleft: this.left.get(stack),\n\t\t\tright: this.right.get(stack)\n\t\t};\n\t\tconst value = AssignmentExpression.Evaluations[this.operator](evalNode);\n\t\tthis.set(stack, value);\n\t\treturn value;\n\t}\n}\n"]}
@@ -1,10 +1,11 @@
1
- import type { NodeDeserializer, ExpressionNode, ExpressionEventPath } from '../expression.js';
1
+ import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType, VisitNodeListType } 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, AwaitPromise } from '../abstract.js';
5
5
  export declare class AwaitExpression extends AbstractExpressionNode {
6
6
  private argument;
7
7
  static fromJSON(node: AwaitExpression, serializer: NodeDeserializer): AwaitExpression;
8
+ static visit(node: AwaitExpression, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void;
8
9
  constructor(argument: ExpressionNode);
9
10
  getArgument(): ExpressionNode;
10
11
  shareVariables(scopeList: Scope<any>[]): void;
@@ -10,6 +10,9 @@ let AwaitExpression = AwaitExpression_1 = class AwaitExpression extends Abstract
10
10
  static fromJSON(node, serializer) {
11
11
  return new AwaitExpression_1(serializer(node.argument));
12
12
  }
13
+ static visit(node, visitNode, visitNodeList) {
14
+ visitNode(node.argument);
15
+ }
13
16
  getArgument() {
14
17
  return this.argument;
15
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"await.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/await.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAItE,IAAa,eAAe,uBAA5B,MAAa,eAAgB,SAAQ,sBAAsB;IAI1D,YAAoB,QAAwB;QAC3C,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAgB;IAE5C,CAAC;IALD,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,UAA4B;QAClE,OAAO,IAAI,iBAAe,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvD,CAAC;IAID,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,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACjE,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,WAAiB;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IAClC,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,OAAO,SAAS,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC5C,CAAC;IACD,MAAM;QACL,OAAO;YACN,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;SAChC,CAAC;IACH,CAAC;CACD,CAAA;AAlCY,eAAe;IAD3B,YAAY,CAAC,iBAAiB,CAAC;;GACnB,eAAe,CAkC3B;SAlCY,eAAe","sourcesContent":["import type { NodeDeserializer, ExpressionNode, ExpressionEventPath } from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { AbstractExpressionNode, AwaitPromise } from '../abstract.js';\n\n\n@Deserializer('AwaitExpression')\nexport class AwaitExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: AwaitExpression, serializer: NodeDeserializer): AwaitExpression {\n\t\treturn new AwaitExpression(serializer(node.argument));\n\t}\n\tconstructor(private argument: ExpressionNode) {\n\t\tsuper();\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\tthrow new Error('AwaitExpression#set() has no implementation.');\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\tconst promise = this.argument.get(stack);\n\t\treturn new AwaitPromise(promise);\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\treturn `await ${this.argument.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\targument: this.argument.toJSON()\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"await.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/await.ts"],"names":[],"mappings":";;AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAItE,IAAa,eAAe,uBAA5B,MAAa,eAAgB,SAAQ,sBAAsB;IAO1D,YAAoB,QAAwB;QAC3C,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAgB;IAE5C,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,UAA4B;QAClE,OAAO,IAAI,iBAAe,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAqB,EAAE,SAAwB,EAAE,aAAgC;QAC7F,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAID,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,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACjE,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,WAAiB;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IAClC,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,OAAO,SAAS,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC5C,CAAC;IACD,MAAM;QACL,OAAO;YACN,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;SAChC,CAAC;IACH,CAAC;CACD,CAAA;AArCY,eAAe;IAD3B,YAAY,CAAC,iBAAiB,CAAC;;GACnB,eAAe,CAqC3B;SArCY,eAAe","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 { Deserializer } from '../deserialize/deserialize.js';\nimport { AbstractExpressionNode, AwaitPromise } from '../abstract.js';\n\n\n@Deserializer('AwaitExpression')\nexport class AwaitExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: AwaitExpression, serializer: NodeDeserializer): AwaitExpression {\n\t\treturn new AwaitExpression(serializer(node.argument));\n\t}\n\tstatic visit(node: AwaitExpression, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void {\n\t\tvisitNode(node.argument);\n\t}\n\tconstructor(private argument: ExpressionNode) {\n\t\tsuper();\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\tthrow new Error('AwaitExpression#set() has no implementation.');\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\tconst promise = this.argument.get(stack);\n\t\treturn new AwaitPromise(promise);\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\treturn `await ${this.argument.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\targument: this.argument.toJSON()\n\t\t};\n\t}\n}\n"]}
@@ -1,10 +1,11 @@
1
1
  import type { EvaluateType } from './types.js';
2
2
  import type { Stack } from '../../scope/stack.js';
3
- import type { NodeDeserializer } from '../expression.js';
3
+ import type { NodeDeserializer, VisitNodeListType, VisitNodeType } from '../expression.js';
4
4
  import { InfixExpressionNode } from '../abstract.js';
5
5
  export declare type BinaryOperator = '==' | '!=' | '===' | '!==' | '<' | '<=' | '>' | '>=' | '<<' | '>>' | '>>>' | '+' | '-' | '*' | '/' | '%' | '|' | '^' | '&' | 'in' | 'instanceof' | '**' | '%%' | '>?' | '<?' | '<=>';
6
6
  export declare class BinaryExpression extends InfixExpressionNode<BinaryOperator> {
7
7
  static fromJSON(node: BinaryExpression, deserializer: NodeDeserializer): BinaryExpression;
8
+ static visit(node: BinaryExpression, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void;
8
9
  static Evaluations: EvaluateType;
9
10
  set(context: object, value: any): void;
10
11
  get(stack: Stack): any;
@@ -6,6 +6,10 @@ let BinaryExpression = BinaryExpression_1 = class BinaryExpression extends Infix
6
6
  static fromJSON(node, deserializer) {
7
7
  return new BinaryExpression_1(node.operator, deserializer(node.left), deserializer(node.right));
8
8
  }
9
+ static visit(node, visitNode, visitNodeList) {
10
+ visitNode(node.left);
11
+ visitNode(node.right);
12
+ }
9
13
  set(context, value) {
10
14
  throw new Error(`BinaryExpression#set() for operator:(${this.operator}) has no implementation.`);
11
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/binary.ts"],"names":[],"mappings":"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","sourcesContent":["import type { EvaluateNode, EvaluateType } from './types.js';\nimport type { Stack } from '../../scope/stack.js';\nimport type { NodeDeserializer } from '../expression.js';\nimport { InfixExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\nexport type BinaryOperator =\n\t'==' | '!=' | '===' | '!=='\n\t| '<' | '<=' | '>' | '>='\n\t| '<<' | '>>' | '>>>'\n\t| '+' | '-' | '*' | '/' | '%'\n\t| '|' | '^' | '&' | 'in'\n\t| 'instanceof'\n\t| '**' | '%%' | '>?' | '<?' | '<=>';\n\n@Deserializer('BinaryExpression')\nexport class BinaryExpression extends InfixExpressionNode<BinaryOperator> {\n\tstatic fromJSON(node: BinaryExpression, deserializer: NodeDeserializer): BinaryExpression {\n\t\treturn new BinaryExpression(\n\t\t\tnode.operator,\n\t\t\tdeserializer(node.left),\n\t\t\tdeserializer(node.right)\n\t\t);\n\t}\n\tstatic Evaluations: EvaluateType = {\n\t\t'==': (evalNode: EvaluateNode) => { return evalNode.left == evalNode.right; },\n\t\t'!=': (evalNode: EvaluateNode) => { return evalNode.left != evalNode.right; },\n\n\t\t'===': (evalNode: EvaluateNode) => { return evalNode.left === evalNode.right; },\n\t\t'!==': (evalNode: EvaluateNode) => { return evalNode.left !== evalNode.right; },\n\n\t\t'<': (evalNode: EvaluateNode) => { return evalNode.left < evalNode.right; },\n\t\t'<=': (evalNode: EvaluateNode) => { return evalNode.left <= evalNode.right; },\n\n\t\t'>': (evalNode: EvaluateNode) => { return evalNode.left > evalNode.right; },\n\t\t'>=': (evalNode: EvaluateNode) => { return evalNode.left >= evalNode.right; },\n\n\t\t'*': (evalNode: EvaluateNode) => { return evalNode.left * evalNode.right; },\n\t\t'/': (evalNode: EvaluateNode) => { return evalNode.left / evalNode.right; },\n\t\t'%': (evalNode: EvaluateNode) => { return evalNode.left % evalNode.right; },\n\n\t\t'+': (evalNode: EvaluateNode) => { return evalNode.left + evalNode.right; },\n\t\t'-': (evalNode: EvaluateNode) => { return evalNode.left - evalNode.right; },\n\n\t\t'in': (evalNode: EvaluateNode) => { return evalNode.left in evalNode.right; },\n\t\t'instanceof': (evalNode: EvaluateNode) => { return evalNode.left instanceof evalNode.right; },\n\n\t\t'<<': (evalNode: EvaluateNode) => { return evalNode.left << evalNode.right; },\n\t\t'>>': (evalNode: EvaluateNode) => { return evalNode.left >> evalNode.right; },\n\t\t'>>>': (evalNode: EvaluateNode) => { return evalNode.left >>> evalNode.right; },\n\n\t\t'&': (evalNode: EvaluateNode) => { return evalNode.left & evalNode.right; },\n\t\t'^': (evalNode: EvaluateNode) => { return evalNode.left ^ evalNode.right; },\n\t\t'|': (evalNode: EvaluateNode) => { return evalNode.left | evalNode.right; },\n\n\t\t'**': (evalNode: EvaluateNode) => { return evalNode.left ** evalNode.right; },\n\t\t'%%': (evalNode: EvaluateNode) => { return ((evalNode.left % evalNode.right) + evalNode.right) % evalNode.right; },\n\t\t'>?': (evalNode: EvaluateNode) => { return evalNode.left > evalNode.right ? evalNode.left : evalNode.right; },\n\t\t'<?': (evalNode: EvaluateNode) => { return evalNode.left > evalNode.right ? evalNode.right : evalNode.left; },\n\t\t'<=>': (evalNode: EvaluateNode) => {\n\t\t\tif ((evalNode.left === null || evalNode.right === null) || (typeof evalNode.left != typeof evalNode.right)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (typeof evalNode.left === 'string') {\n\t\t\t\treturn evalNode.left.localeCompare(evalNode.right);\n\t\t\t} else {\n\t\t\t\tif (evalNode.left > evalNode.right) {\n\t\t\t\t\treturn 1;\n\t\t\t\t} else if (evalNode.left < evalNode.right) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t};\n\tset(context: object, value: any) {\n\t\tthrow new Error(`BinaryExpression#set() for operator:(${this.operator}) has no implementation.`);\n\t}\n\tget(stack: Stack): any {\n\t\tconst evalNode: EvaluateNode = {\n\t\t\tleft: this.left.get(stack),\n\t\t\tright: this.right.get(stack)\n\t\t};\n\t\treturn BinaryExpression.Evaluations[this.operator](evalNode);\n\t}\n}\n"]}
1
+ {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/binary.ts"],"names":[],"mappings":"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","sourcesContent":["import type { EvaluateNode, EvaluateType } from './types.js';\nimport type { Stack } from '../../scope/stack.js';\nimport type { NodeDeserializer, VisitNodeListType, VisitNodeType } from '../expression.js';\nimport { InfixExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\nexport type BinaryOperator =\n\t'==' | '!=' | '===' | '!=='\n\t| '<' | '<=' | '>' | '>='\n\t| '<<' | '>>' | '>>>'\n\t| '+' | '-' | '*' | '/' | '%'\n\t| '|' | '^' | '&' | 'in'\n\t| 'instanceof'\n\t| '**' | '%%' | '>?' | '<?' | '<=>';\n\n@Deserializer('BinaryExpression')\nexport class BinaryExpression extends InfixExpressionNode<BinaryOperator> {\n\tstatic fromJSON(node: BinaryExpression, deserializer: NodeDeserializer): BinaryExpression {\n\t\treturn new BinaryExpression(\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: BinaryExpression, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void {\n\t\tvisitNode(node.left);\n\t\tvisitNode(node.right);\n\t}\n\tstatic Evaluations: EvaluateType = {\n\t\t'==': (evalNode: EvaluateNode) => { return evalNode.left == evalNode.right; },\n\t\t'!=': (evalNode: EvaluateNode) => { return evalNode.left != evalNode.right; },\n\n\t\t'===': (evalNode: EvaluateNode) => { return evalNode.left === evalNode.right; },\n\t\t'!==': (evalNode: EvaluateNode) => { return evalNode.left !== evalNode.right; },\n\n\t\t'<': (evalNode: EvaluateNode) => { return evalNode.left < evalNode.right; },\n\t\t'<=': (evalNode: EvaluateNode) => { return evalNode.left <= evalNode.right; },\n\n\t\t'>': (evalNode: EvaluateNode) => { return evalNode.left > evalNode.right; },\n\t\t'>=': (evalNode: EvaluateNode) => { return evalNode.left >= evalNode.right; },\n\n\t\t'*': (evalNode: EvaluateNode) => { return evalNode.left * evalNode.right; },\n\t\t'/': (evalNode: EvaluateNode) => { return evalNode.left / evalNode.right; },\n\t\t'%': (evalNode: EvaluateNode) => { return evalNode.left % evalNode.right; },\n\n\t\t'+': (evalNode: EvaluateNode) => { return evalNode.left + evalNode.right; },\n\t\t'-': (evalNode: EvaluateNode) => { return evalNode.left - evalNode.right; },\n\n\t\t'in': (evalNode: EvaluateNode) => { return evalNode.left in evalNode.right; },\n\t\t'instanceof': (evalNode: EvaluateNode) => { return evalNode.left instanceof evalNode.right; },\n\n\t\t'<<': (evalNode: EvaluateNode) => { return evalNode.left << evalNode.right; },\n\t\t'>>': (evalNode: EvaluateNode) => { return evalNode.left >> evalNode.right; },\n\t\t'>>>': (evalNode: EvaluateNode) => { return evalNode.left >>> evalNode.right; },\n\n\t\t'&': (evalNode: EvaluateNode) => { return evalNode.left & evalNode.right; },\n\t\t'^': (evalNode: EvaluateNode) => { return evalNode.left ^ evalNode.right; },\n\t\t'|': (evalNode: EvaluateNode) => { return evalNode.left | evalNode.right; },\n\n\t\t'**': (evalNode: EvaluateNode) => { return evalNode.left ** evalNode.right; },\n\t\t'%%': (evalNode: EvaluateNode) => { return ((evalNode.left % evalNode.right) + evalNode.right) % evalNode.right; },\n\t\t'>?': (evalNode: EvaluateNode) => { return evalNode.left > evalNode.right ? evalNode.left : evalNode.right; },\n\t\t'<?': (evalNode: EvaluateNode) => { return evalNode.left > evalNode.right ? evalNode.right : evalNode.left; },\n\t\t'<=>': (evalNode: EvaluateNode) => {\n\t\t\tif ((evalNode.left === null || evalNode.right === null) || (typeof evalNode.left != typeof evalNode.right)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (typeof evalNode.left === 'string') {\n\t\t\t\treturn evalNode.left.localeCompare(evalNode.right);\n\t\t\t} else {\n\t\t\t\tif (evalNode.left > evalNode.right) {\n\t\t\t\t\treturn 1;\n\t\t\t\t} else if (evalNode.left < evalNode.right) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t};\n\tset(context: object, value: any) {\n\t\tthrow new Error(`BinaryExpression#set() for operator:(${this.operator}) has no implementation.`);\n\t}\n\tget(stack: Stack): any {\n\t\tconst evalNode: EvaluateNode = {\n\t\t\tleft: this.left.get(stack),\n\t\t\tright: this.right.get(stack)\n\t\t};\n\t\treturn BinaryExpression.Evaluations[this.operator](evalNode);\n\t}\n}\n"]}
@@ -1,10 +1,11 @@
1
- import type { NodeDeserializer, ExpressionNode, CanFindScope, ExpressionEventPath } from '../expression.js';
1
+ import type { NodeDeserializer, ExpressionNode, CanFindScope, ExpressionEventPath, VisitNodeType, VisitNodeListType } 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 ChainExpression extends AbstractExpressionNode implements CanFindScope {
6
6
  private expression;
7
7
  static fromJSON(node: ChainExpression, deserializer: NodeDeserializer): ChainExpression;
8
+ static visit(node: ChainExpression, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void;
8
9
  constructor(expression: ExpressionNode);
9
10
  getExpression(): ExpressionNode;
10
11
  shareVariables(scopeList: Scope<any>[]): void;
@@ -10,6 +10,9 @@ let ChainExpression = ChainExpression_1 = class ChainExpression extends Abstract
10
10
  static fromJSON(node, deserializer) {
11
11
  return new ChainExpression_1(deserializer(node.expression));
12
12
  }
13
+ static visit(node, visitNode, visitNodeList) {
14
+ visitNode(node.expression);
15
+ }
13
16
  getExpression() {
14
17
  return this.expression;
15
18
  }
@@ -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;IAI1D,YAAoB,UAA0B;QAC7C,KAAK,EAAE,CAAC;QADW,eAAU,GAAV,UAAU,CAAgB;IAE9C,CAAC;IALD,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,YAA8B;QACpE,OAAO,IAAI,iBAAe,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,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;AApCY,eAAe;IAD3B,YAAY,CAAC,iBAAiB,CAAC;;GACnB,eAAe,CAoC3B;SApCY,eAAe","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode,\n\tCanFindScope, ExpressionEventPath\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\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"]}
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,EAAE,aAAgC;QAC7F,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, 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('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, visitNodeList: VisitNodeListType): 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"]}
@@ -1,10 +1,11 @@
1
- import type { NodeDeserializer, ExpressionNode, ExpressionEventPath } from '../expression.js';
1
+ import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType, VisitNodeListType } 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, visitNodeList: VisitNodeListType): void;
8
9
  constructor(expressions: ExpressionNode[]);
9
10
  getExpressions(): ExpressionNode[];
10
11
  shareVariables(scopeList: Scope<any>[]): void;
@@ -10,6 +10,9 @@ 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, visitNodeList) {
14
+ visitNodeList(node.expressions);
15
+ }
13
16
  getExpressions() {
14
17
  return this.expressions;
15
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"comma.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/comma.ts"],"names":[],"mappings":";;AAGA,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;IAI7D,YAAoB,WAA6B;QAChD,KAAK,EAAE,CAAC;QADW,gBAAW,GAAX,WAAW,CAAkB;IAEjD,CAAC;IALD,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;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;AAjCY,kBAAkB;IAD9B,YAAY,CAAC,oBAAoB,CAAC;;GACtB,kBAAkB,CAiC9B;SAjCY,kBAAkB","sourcesContent":["import type { NodeDeserializer, ExpressionNode, ExpressionEventPath } 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\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
+ {"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,EAAE,aAAgC;QAChG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjC,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, 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('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, visitNodeList: VisitNodeListType): void {\n\t\tvisitNodeList(node.expressions);\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,10 +1,11 @@
1
- import type { NodeDeserializer, ExpressionNode, ExpressionEventPath } from '../expression.js';
1
+ import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType, VisitNodeListType } 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, visitNodeList: VisitNodeListType): void;
8
9
  constructor(node: ExpressionNode);
9
10
  getNode(): ExpressionNode;
10
11
  shareVariables(scopeList: Scope<any>[]): void;
@@ -10,6 +10,9 @@ 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, visitNodeList) {
14
+ visitNode(node.node);
15
+ }
13
16
  getNode() {
14
17
  return this.node;
15
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"grouping.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/grouping.ts"],"names":[],"mappings":";;AAGA,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;IAI7D,YAAoB,IAAoB;QACvC,KAAK,EAAE,CAAC;QADW,SAAI,GAAJ,IAAI,CAAgB;IAExC,CAAC;IALD,MAAM,CAAC,QAAQ,CAAC,IAAwB,EAAE,YAA8B;QACvE,OAAO,IAAI,oBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAW,CAAC,CAAC,CAAC;IAC/D,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;AA/BY,kBAAkB;IAD9B,YAAY,CAAC,oBAAoB,CAAC;;GACtB,kBAAkB,CA+B9B;SA/BY,kBAAkB","sourcesContent":["import type { NodeDeserializer, ExpressionNode, ExpressionEventPath } 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\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
+ {"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,EAAE,aAAgC;QAChG,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, 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/**\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, visitNodeList: VisitNodeListType): 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,8 +1,9 @@
1
- import type { NodeDeserializer } from '../expression.js';
1
+ import type { NodeDeserializer, VisitNodeListType, 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, visitNodeList: VisitNodeListType): void;
6
7
  static Evaluations: {
7
8
  [key: string]: (exp: LogicalExpression, context: any) => any;
8
9
  };
@@ -6,6 +6,10 @@ 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, visitNodeList) {
10
+ visitNode(node.left);
11
+ visitNode(node.right);
12
+ }
9
13
  get(context) {
10
14
  return LogicalExpression_1.Evaluations[this.operator](this, context);
11
15
  }
@@ -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;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;AAlCU,iBAAiB;IAD7B,YAAY,CAAC,mBAAmB,CAAC;GACrB,iBAAiB,CAsC7B;SAtCY,iBAAiB","sourcesContent":["import type { NodeDeserializer } 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 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
+ {"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,EAAE,aAAgC;QAC/F,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, VisitNodeListType, 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, visitNodeList: VisitNodeListType): 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 } from '../expression.js';
1
+ import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType, VisitNodeListType } 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,6 +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, visitNodeList: VisitNodeListType): void;
9
10
  private arguments;
10
11
  constructor(left: ExpressionNode, right: ExpressionNode, params?: (ExpressionNode | '?' | '...?')[]);
11
12
  getLeft(): ExpressionNode;
@@ -14,6 +14,11 @@ 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, visitNodeList) {
18
+ visitNode(node.left);
19
+ visitNode(node.right);
20
+ node.arguments.forEach(arg => typeof arg == 'object' && visitNode(arg));
21
+ }
17
22
  getLeft() {
18
23
  return this.left;
19
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/pipeline.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NodeDeserializer, ExpressionNode, ExpressionEventPath } 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\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
+ {"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, 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';\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, visitNodeList: VisitNodeListType): 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 } from '../expression.js';
1
+ import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType, VisitNodeListType } 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,6 +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, visitNodeList: VisitNodeListType): void;
10
11
  constructor(test: ExpressionNode, alternate: ExpressionNode, consequent: ExpressionNode);
11
12
  getTest(): ExpressionNode;
12
13
  getAlternate(): ExpressionNode;
@@ -12,6 +12,11 @@ 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, visitNodeList) {
16
+ visitNode(node.test);
17
+ visitNode(node.alternate);
18
+ visitNode(node.consequent);
19
+ }
15
20
  getTest() {
16
21
  return this.test;
17
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ternary.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/ternary.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,IAAa,qBAAqB,6BAAlC,MAAa,qBAAsB,SAAQ,sBAAsB;IAQhE,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;IATD,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;IAID,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IACD,YAAY;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IACD,aAAa;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IACD,cAAc,CAAC,SAAuB;QACrC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACvE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtF,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;aACnC,MAAM,CACN,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EACnC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CACpC,CAAC;IACJ,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;aACvC,MAAM,CACN,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,EACvC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CACxC,CAAC;IACJ,CAAC;IACD,QAAQ;QACP,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC;IACnG,CAAC;IACD,MAAM;QACL,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACxB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YAClC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;SACpC,CAAC;IACH,CAAC;CACD,CAAA;AAvDY,qBAAqB;IADjC,YAAY,CAAC,uBAAuB,CAAC;;GACzB,qBAAqB,CAuDjC;SAvDY,qBAAqB","sourcesContent":["import type { NodeDeserializer, ExpressionNode, ExpressionEventPath } 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\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"]}
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, 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('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, visitNodeList: VisitNodeListType): 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"]}
@@ -1,4 +1,4 @@
1
- import type { NodeDeserializer, ExpressionNode, ExpressionEventPath } from '../expression.js';
1
+ import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType, VisitNodeListType } 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,6 +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, visitNodeList: VisitNodeListType): void;
10
11
  static Evaluations: {
11
12
  [key: string]: (value: any) => any;
12
13
  };
@@ -13,6 +13,9 @@ 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, visitNodeList) {
17
+ visitNode(node.argument);
18
+ }
16
19
  getOperator() {
17
20
  return this.operator;
18
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"unary.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/unary.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NodeDeserializer, ExpressionNode, ExpressionEventPath } 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 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.getDelete(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 getDelete(stack: Stack, thisContext?: any) {\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}\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
+ {"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, ExpressionEventPath,\n\tVisitNodeType, 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';\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, visitNodeList: VisitNodeListType): 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.getDelete(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 getDelete(stack: Stack, thisContext?: any) {\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}\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"]}