@ibyar/expressions 0.3.8 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/README.md +22 -12
  2. package/api/abstract.d.ts +20 -4
  3. package/api/abstract.js +54 -3
  4. package/api/abstract.js.map +1 -1
  5. package/api/app/class.d.ts +21 -11
  6. package/api/app/class.js +28 -10
  7. package/api/app/class.js.map +1 -1
  8. package/api/app/program.d.ts +6 -3
  9. package/api/app/program.js +7 -3
  10. package/api/app/program.js.map +1 -1
  11. package/api/computing/call.d.ts +5 -2
  12. package/api/computing/call.js +8 -2
  13. package/api/computing/call.js.map +1 -1
  14. package/api/computing/new.d.ts +5 -2
  15. package/api/computing/new.js +10 -2
  16. package/api/computing/new.js.map +1 -1
  17. package/api/computing/rest.d.ts +5 -2
  18. package/api/computing/rest.js +8 -2
  19. package/api/computing/rest.js.map +1 -1
  20. package/api/computing/return.d.ts +5 -2
  21. package/api/computing/return.js +8 -2
  22. package/api/computing/return.js.map +1 -1
  23. package/api/computing/spread.d.ts +5 -2
  24. package/api/computing/spread.js +8 -2
  25. package/api/computing/spread.js.map +1 -1
  26. package/api/computing/throw.d.ts +11 -4
  27. package/api/computing/throw.js +23 -6
  28. package/api/computing/throw.js.map +1 -1
  29. package/api/computing/yield.d.ts +18 -0
  30. package/api/computing/yield.js +51 -0
  31. package/api/computing/yield.js.map +1 -0
  32. package/api/definition/array.d.ts +10 -3
  33. package/api/definition/array.js +20 -4
  34. package/api/definition/array.js.map +1 -1
  35. package/api/definition/bind.d.ts +5 -2
  36. package/api/definition/bind.js +10 -9
  37. package/api/definition/bind.js.map +1 -1
  38. package/api/definition/comment.d.ts +5 -1
  39. package/api/definition/comment.js +6 -4
  40. package/api/definition/comment.js.map +1 -1
  41. package/api/definition/function.d.ts +26 -10
  42. package/api/definition/function.js +123 -54
  43. package/api/definition/function.js.map +1 -1
  44. package/api/definition/member.d.ts +5 -2
  45. package/api/definition/member.js +19 -7
  46. package/api/definition/member.js.map +1 -1
  47. package/api/definition/object.d.ts +14 -5
  48. package/api/definition/object.js +32 -6
  49. package/api/definition/object.js.map +1 -1
  50. package/api/definition/statement.d.ts +6 -2
  51. package/api/definition/statement.js +11 -2
  52. package/api/definition/statement.js.map +1 -1
  53. package/api/definition/values.d.ts +20 -7
  54. package/api/definition/values.js +37 -9
  55. package/api/definition/values.js.map +1 -1
  56. package/api/deserialize/deserialize.js +3 -3
  57. package/api/deserialize/deserialize.js.map +1 -1
  58. package/api/deserialize/type-store.d.ts +2 -0
  59. package/api/deserialize/type-store.js +2 -0
  60. package/api/deserialize/type-store.js.map +1 -0
  61. package/api/expression.d.ts +27 -5
  62. package/api/expression.js.map +1 -1
  63. package/api/index.d.ts +1 -0
  64. package/api/index.js +1 -0
  65. package/api/index.js.map +1 -1
  66. package/api/module/export.d.ts +7 -2
  67. package/api/module/export.js +15 -1
  68. package/api/module/export.js.map +1 -1
  69. package/api/module/import.d.ts +7 -2
  70. package/api/module/import.js +15 -1
  71. package/api/module/import.js.map +1 -1
  72. package/api/module/module.d.ts +6 -2
  73. package/api/module/module.js +11 -2
  74. package/api/module/module.js.map +1 -1
  75. package/api/operators/assignment.d.ts +2 -1
  76. package/api/operators/assignment.js +4 -0
  77. package/api/operators/assignment.js.map +1 -1
  78. package/api/operators/await.d.ts +6 -2
  79. package/api/operators/await.js +12 -3
  80. package/api/operators/await.js.map +1 -1
  81. package/api/operators/binary.d.ts +2 -1
  82. package/api/operators/binary.js +4 -0
  83. package/api/operators/binary.js.map +1 -1
  84. package/api/operators/chaining.d.ts +5 -2
  85. package/api/operators/chaining.js +9 -2
  86. package/api/operators/chaining.js.map +1 -1
  87. package/api/operators/comma.d.ts +6 -2
  88. package/api/operators/comma.js +11 -2
  89. package/api/operators/comma.js.map +1 -1
  90. package/api/operators/grouping.d.ts +6 -2
  91. package/api/operators/grouping.js +11 -2
  92. package/api/operators/grouping.js.map +1 -1
  93. package/api/operators/logical.d.ts +2 -1
  94. package/api/operators/logical.js +4 -0
  95. package/api/operators/logical.js.map +1 -1
  96. package/api/operators/pipeline.d.ts +6 -2
  97. package/api/operators/pipeline.js +21 -6
  98. package/api/operators/pipeline.js.map +1 -1
  99. package/api/operators/ternary.d.ts +6 -2
  100. package/api/operators/ternary.js +17 -2
  101. package/api/operators/ternary.js.map +1 -1
  102. package/api/operators/unary.d.ts +6 -2
  103. package/api/operators/unary.js +20 -5
  104. package/api/operators/unary.js.map +1 -1
  105. package/api/operators/update.d.ts +6 -2
  106. package/api/operators/update.js +11 -2
  107. package/api/operators/update.js.map +1 -1
  108. package/api/statement/control/block.d.ts +6 -2
  109. package/api/statement/control/block.js +11 -2
  110. package/api/statement/control/block.js.map +1 -1
  111. package/api/statement/control/empty.d.ts +5 -1
  112. package/api/statement/control/empty.js +5 -1
  113. package/api/statement/control/empty.js.map +1 -1
  114. package/api/statement/control/if.d.ts +6 -2
  115. package/api/statement/control/if.js +16 -2
  116. package/api/statement/control/if.js.map +1 -1
  117. package/api/statement/control/switch.d.ts +13 -3
  118. package/api/statement/control/switch.js +35 -9
  119. package/api/statement/control/switch.js.map +1 -1
  120. package/api/statement/control/terminate.d.ts +9 -4
  121. package/api/statement/control/terminate.js +11 -1
  122. package/api/statement/control/terminate.js.map +1 -1
  123. package/api/statement/declarations/declares.d.ts +10 -3
  124. package/api/statement/declarations/declares.js +25 -6
  125. package/api/statement/declarations/declares.js.map +1 -1
  126. package/api/statement/iterations/for.d.ts +18 -5
  127. package/api/statement/iterations/for.js +67 -8
  128. package/api/statement/iterations/for.js.map +1 -1
  129. package/api/statement/iterations/while.d.ts +10 -3
  130. package/api/statement/iterations/while.js +26 -4
  131. package/api/statement/iterations/while.js.map +1 -1
  132. package/index.d.ts +1 -0
  133. package/index.js +1 -0
  134. package/index.js.map +1 -1
  135. package/package.json +12 -4
  136. package/scope/event.d.ts +5 -0
  137. package/scope/event.js +41 -0
  138. package/scope/event.js.map +1 -0
  139. package/scope/index.d.ts +1 -0
  140. package/scope/index.js +1 -0
  141. package/scope/index.js.map +1 -1
  142. package/scope/proxy.d.ts +18 -6
  143. package/scope/proxy.js +57 -9
  144. package/scope/proxy.js.map +1 -1
  145. package/scope/scope.d.ts +71 -61
  146. package/scope/scope.js +104 -52
  147. package/scope/scope.js.map +1 -1
  148. package/scope/stack.d.ts +28 -28
  149. package/scope/stack.js.map +1 -1
  150. package/v8/nodes.d.ts +1 -1
  151. package/v8/parser.d.ts +2 -1
  152. package/v8/parser.js +16 -10
  153. package/v8/parser.js.map +1 -1
  154. package/v8/stream.d.ts +4 -2
  155. package/v8/stream.js +39 -17
  156. package/v8/stream.js.map +1 -1
  157. package/v8/token.d.ts +1 -1
  158. package/v8/token.js.map +1 -1
  159. package/visit/index.d.ts +1 -0
  160. package/visit/index.js +2 -0
  161. package/visit/index.js.map +1 -0
  162. package/visit/visitor.d.ts +11 -0
  163. package/visit/visitor.js +42 -0
  164. package/visit/visitor.js.map +1 -0
@@ -20,6 +20,9 @@ let CallExpression = CallExpression_1 = class CallExpression extends AbstractExp
20
20
  getArguments() {
21
21
  return this.arguments;
22
22
  }
23
+ shareVariables(scopeList) {
24
+ this.arguments.forEach(param => param.shareVariables(scopeList));
25
+ }
23
26
  set(stack, value) {
24
27
  throw new Error(`CallExpression#set() has no implementation.`);
25
28
  }
@@ -45,8 +48,11 @@ let CallExpression = CallExpression_1 = class CallExpression extends AbstractExp
45
48
  }
46
49
  return funCallBack.apply(thisContext, parameters);
47
50
  }
48
- events(parent) {
49
- return [...this.callee.events(), ...this.arguments.flatMap(arg => arg.events())];
51
+ dependency(computed) {
52
+ return this.callee.dependency(computed).concat(this.arguments.flatMap(param => param.dependency(computed)));
53
+ }
54
+ dependencyPath(computed) {
55
+ return this.callee.dependencyPath(computed).concat(this.arguments.flatMap(param => param.dependencyPath(computed)));
50
56
  }
51
57
  toString() {
52
58
  return `${this.callee.toString()}${this.optional ? '?.' : ''}(${this.arguments.map(arg => arg.toString()).join(', ')})`;
@@ -1 +1 @@
1
- {"version":3,"file":"call.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/call.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,IAAa,cAAc,sBAA3B,MAAa,cAAe,SAAQ,sBAAsB;IASzD,YAAoB,MAAsB,EAAE,MAAwB,EAAU,WAAoB,KAAK;QACtG,KAAK,EAAE,CAAC;QADW,WAAM,GAAN,MAAM,CAAgB;QAAoC,aAAQ,GAAR,QAAQ,CAAiB;QAEtG,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;IACzB,CAAC;IAXD,MAAM,CAAC,QAAQ,CAAC,IAAoB,EAAE,YAA8B;QACnE,OAAO,IAAI,gBAAc,CACxB,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EACzB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAChD,IAAI,CAAC,QAAQ,CACb,CAAC;IACH,CAAC;IAMD,SAAS;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,YAAY;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAChE,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,WAAiB;QAClC,MAAM,WAAW,GAAa,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAa,CAAC;QACjE,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS,CAAC,EAAE;YACzE,OAAO;SACP;QACD,MAAM,UAAU,GAAU,EAAE,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE;YACjC,IAAI,GAAG,YAAY,aAAa,EAAE;gBACjC,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;gBACvD,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACf,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC1B,MAAM;aACN;iBAAM;gBACN,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;aAChC;SACD;QACD,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,YAAY,gBAAgB,EAAE;YAC5D,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SACjD;QACD,OAAO,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,CAAC,MAAe;QACrB,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;IACD,QAAQ;QACP,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACzH,CAAC;IACD,MAAM;QACL,OAAO;YACN,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAC5B,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAClD,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC;IACH,CAAC;CACD,CAAA;AAxDY,cAAc;IAD1B,YAAY,CAAC,gBAAgB,CAAC;;GAClB,cAAc,CAwD1B;SAxDY,cAAc","sourcesContent":["import type { NodeDeserializer, ExpressionNode } from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { SpreadElement } from './spread.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { MemberExpression } from '../definition/member.js';\n\n@Deserializer('CallExpression')\nexport class CallExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: CallExpression, deserializer: NodeDeserializer): CallExpression {\n\t\treturn new CallExpression(\n\t\t\tdeserializer(node.callee),\n\t\t\tnode.arguments.map(param => deserializer(param)),\n\t\t\tnode.optional\n\t\t);\n\t}\n\tprivate arguments: ExpressionNode[];\n\tconstructor(private callee: ExpressionNode, params: ExpressionNode[], private optional: boolean = false) {\n\t\tsuper();\n\t\tthis.arguments = params;\n\t}\n\tgetCallee() {\n\t\treturn this.callee;\n\t}\n\tgetArguments() {\n\t\treturn this.arguments;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`CallExpression#set() has no implementation.`);\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\tconst funCallBack: Function = this.callee.get(stack) as Function;\n\t\tif (this.optional && (funCallBack === null || funCallBack === undefined)) {\n\t\t\treturn;\n\t\t}\n\t\tconst parameters: any[] = [];\n\t\tfor (const arg of this.arguments) {\n\t\t\tif (arg instanceof SpreadElement) {\n\t\t\t\tconst paramScope = stack.pushBlockScopeFor(parameters);\n\t\t\t\targ.get(stack);\n\t\t\t\tstack.clearTo(paramScope);\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tparameters.push(arg.get(stack));\n\t\t\t}\n\t\t}\n\t\tif (!thisContext && this.callee instanceof MemberExpression) {\n\t\t\tthisContext = this.callee.getObject().get(stack);\n\t\t}\n\t\treturn funCallBack.apply(thisContext, parameters);\n\t}\n\tevents(parent?: string): string[] {\n\t\treturn [...this.callee.events(), ...this.arguments.flatMap(arg => arg.events())];\n\t}\n\ttoString(): string {\n\t\treturn `${this.callee.toString()}${this.optional ? '?.' : ''}(${this.arguments.map(arg => arg.toString()).join(', ')})`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tcallee: this.callee.toJSON(),\n\t\t\targuments: this.arguments.map(arg => arg.toJSON()),\n\t\t\toptional: this.optional\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"call.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/call.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 { SpreadElement } from './spread.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { MemberExpression } from '../definition/member.js';\n\n@Deserializer('CallExpression')\nexport class CallExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: CallExpression, deserializer: NodeDeserializer): CallExpression {\n\t\treturn new CallExpression(\n\t\t\tdeserializer(node.callee),\n\t\t\tnode.arguments.map(param => deserializer(param)),\n\t\t\tnode.optional\n\t\t);\n\t}\n\tprivate arguments: ExpressionNode[];\n\tconstructor(private callee: ExpressionNode, params: ExpressionNode[], private optional: boolean = false) {\n\t\tsuper();\n\t\tthis.arguments = params;\n\t}\n\tgetCallee() {\n\t\treturn this.callee;\n\t}\n\tgetArguments() {\n\t\treturn this.arguments;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.arguments.forEach(param => param.shareVariables(scopeList));\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`CallExpression#set() has no implementation.`);\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\tconst funCallBack: Function = this.callee.get(stack) as Function;\n\t\tif (this.optional && (funCallBack === null || funCallBack === undefined)) {\n\t\t\treturn;\n\t\t}\n\t\tconst parameters: any[] = [];\n\t\tfor (const arg of this.arguments) {\n\t\t\tif (arg instanceof SpreadElement) {\n\t\t\t\tconst paramScope = stack.pushBlockScopeFor(parameters);\n\t\t\t\targ.get(stack);\n\t\t\t\tstack.clearTo(paramScope);\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tparameters.push(arg.get(stack));\n\t\t\t}\n\t\t}\n\t\tif (!thisContext && this.callee instanceof MemberExpression) {\n\t\t\tthisContext = this.callee.getObject().get(stack);\n\t\t}\n\t\treturn funCallBack.apply(thisContext, parameters);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.callee.dependency(computed).concat(this.arguments.flatMap(param => param.dependency(computed)));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.callee.dependencyPath(computed).concat(this.arguments.flatMap(param => param.dependencyPath(computed)));\n\t}\n\ttoString(): string {\n\t\treturn `${this.callee.toString()}${this.optional ? '?.' : ''}(${this.arguments.map(arg => arg.toString()).join(', ')})`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tcallee: this.callee.toJSON(),\n\t\t\targuments: this.arguments.map(arg => arg.toJSON()),\n\t\t\toptional: this.optional\n\t\t};\n\t}\n}\n"]}
@@ -1,4 +1,5 @@
1
- import type { NodeDeserializer, ExpressionNode } from '../expression.js';
1
+ import type { NodeDeserializer, ExpressionNode, ExpressionEventPath } from '../expression.js';
2
+ import type { Scope } from '../../scope/scope.js';
2
3
  import type { Stack } from '../../scope/stack.js';
3
4
  import { AbstractExpressionNode } from '../abstract.js';
4
5
  export declare class NewExpression extends AbstractExpressionNode {
@@ -8,9 +9,11 @@ export declare class NewExpression extends AbstractExpressionNode {
8
9
  constructor(className: ExpressionNode, parameters?: ExpressionNode[]);
9
10
  getClassName(): ExpressionNode;
10
11
  getArguments(): ExpressionNode[] | undefined;
12
+ shareVariables(scopeList: Scope<any>[]): void;
11
13
  set(stack: Stack, value: any): void;
12
14
  get(stack: Stack): any;
13
- events(parent?: string): string[];
15
+ dependency(computed?: true): ExpressionNode[];
16
+ dependencyPath(computed?: true): ExpressionEventPath[];
14
17
  toString(): string;
15
18
  toJson(): object;
16
19
  }
@@ -18,6 +18,9 @@ let NewExpression = NewExpression_1 = class NewExpression extends AbstractExpres
18
18
  getArguments() {
19
19
  return this.arguments;
20
20
  }
21
+ shareVariables(scopeList) {
22
+ this.arguments?.forEach(param => param.shareVariables(scopeList));
23
+ }
21
24
  set(stack, value) {
22
25
  throw new Error(`NewExpression#set() has no implementation.`);
23
26
  }
@@ -49,8 +52,13 @@ let NewExpression = NewExpression_1 = class NewExpression extends AbstractExpres
49
52
  }
50
53
  return value;
51
54
  }
52
- events(parent) {
53
- return [...this.className.events()].concat(this.arguments?.flatMap(arg => arg.events()) || []);
55
+ dependency(computed) {
56
+ return this.className.dependency(computed)
57
+ .concat(this.arguments?.flatMap(parm => parm.dependency(computed)) || []);
58
+ }
59
+ dependencyPath(computed) {
60
+ return this.className.dependencyPath(computed)
61
+ .concat(this.arguments?.flatMap(param => param.dependencyPath(computed)) || []);
54
62
  }
55
63
  toString() {
56
64
  const parameters = this.arguments ? `(${this.arguments?.map(arg => arg.toString()).join(', ')})` : '';
@@ -1 +1 @@
1
- {"version":3,"file":"new.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/new.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NodeDeserializer, ExpressionNode } from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { SpreadElement } from './spread.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('NewExpression')\nexport class NewExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: NewExpression, deserializer: NodeDeserializer): NewExpression {\n\t\treturn new NewExpression(deserializer(node.className), node.arguments?.map(deserializer));\n\t}\n\tprivate arguments?: ExpressionNode[];\n\tconstructor(private className: ExpressionNode, parameters?: ExpressionNode[]) {\n\t\tsuper();\n\t\tthis.arguments = parameters;\n\t}\n\tgetClassName() {\n\t\treturn this.className;\n\t}\n\tgetArguments() {\n\t\treturn this.arguments;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`NewExpression#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst classRef = this.className.get(stack);\n\t\tlet value: any;\n\t\tif (this.arguments) {\n\t\t\tif (this.arguments.length > 0) {\n\t\t\t\tconst parameters: any[] = [];\n\t\t\t\tfor (const param of this.arguments) {\n\t\t\t\t\tif (param instanceof SpreadElement) {\n\t\t\t\t\t\tconst paramScope = stack.pushBlockScopeFor(parameters);\n\t\t\t\t\t\tparam.get(stack);\n\t\t\t\t\t\tstack.clearTo(paramScope);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tparameters.push(param.get(stack));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvalue = new classRef(...parameters);\n\t\t\t} else {\n\t\t\t\tvalue = new classRef();\n\t\t\t}\n\t\t} else {\n\t\t\tvalue = new classRef;\n\t\t}\n\t\treturn value;\n\t}\n\tevents(parent?: string): string[] {\n\t\treturn [...this.className.events()].concat(this.arguments?.flatMap(arg => arg.events()) || []);\n\t}\n\ttoString(): string {\n\t\tconst parameters = this.arguments ? `(${this.arguments?.map(arg => arg.toString()).join(', ')})` : '';\n\t\treturn `new ${this.className.toString()}${parameters}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tclassName: this.className.toJSON(),\n\t\t\targuments: this.arguments?.map(arg => arg.toJSON())\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/new.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 { SpreadElement } from './spread.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('NewExpression')\nexport class NewExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: NewExpression, deserializer: NodeDeserializer): NewExpression {\n\t\treturn new NewExpression(deserializer(node.className), node.arguments?.map(deserializer));\n\t}\n\tprivate arguments?: ExpressionNode[];\n\tconstructor(private className: ExpressionNode, parameters?: ExpressionNode[]) {\n\t\tsuper();\n\t\tthis.arguments = parameters;\n\t}\n\tgetClassName() {\n\t\treturn this.className;\n\t}\n\tgetArguments() {\n\t\treturn this.arguments;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.arguments?.forEach(param => param.shareVariables(scopeList));\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`NewExpression#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst classRef = this.className.get(stack);\n\t\tlet value: any;\n\t\tif (this.arguments) {\n\t\t\tif (this.arguments.length > 0) {\n\t\t\t\tconst parameters: any[] = [];\n\t\t\t\tfor (const param of this.arguments) {\n\t\t\t\t\tif (param instanceof SpreadElement) {\n\t\t\t\t\t\tconst paramScope = stack.pushBlockScopeFor(parameters);\n\t\t\t\t\t\tparam.get(stack);\n\t\t\t\t\t\tstack.clearTo(paramScope);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tparameters.push(param.get(stack));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvalue = new classRef(...parameters);\n\t\t\t} else {\n\t\t\t\tvalue = new classRef();\n\t\t\t}\n\t\t} else {\n\t\t\tvalue = new classRef;\n\t\t}\n\t\treturn value;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.className.dependency(computed)\n\t\t\t.concat(this.arguments?.flatMap(parm => parm.dependency(computed)) || []);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.className.dependencyPath(computed)\n\t\t\t.concat(this.arguments?.flatMap(param => param.dependencyPath(computed)) || []);\n\t}\n\ttoString(): string {\n\t\tconst parameters = this.arguments ? `(${this.arguments?.map(arg => arg.toString()).join(', ')})` : '';\n\t\treturn `new ${this.className.toString()}${parameters}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tclassName: this.className.toJSON(),\n\t\t\targuments: this.arguments?.map(arg => arg.toJSON())\n\t\t};\n\t}\n}\n"]}
@@ -1,4 +1,5 @@
1
- import type { CanDeclareExpression, NodeDeserializer } from '../expression.js';
1
+ import type { CanDeclareExpression, ExpressionEventPath, ExpressionNode, NodeDeserializer } from '../expression.js';
2
+ import type { Scope } from '../../scope/scope.js';
2
3
  import type { Stack } from '../../scope/stack.js';
3
4
  import { AbstractExpressionNode } from '../abstract.js';
4
5
  import { ScopeType } from '../../index.js';
@@ -7,10 +8,12 @@ export declare class RestElement extends AbstractExpressionNode implements CanDe
7
8
  static fromJSON(node: RestElement, deserializer: NodeDeserializer): RestElement;
8
9
  constructor(argument: CanDeclareExpression);
9
10
  getArgument(): CanDeclareExpression;
11
+ shareVariables(scopeList: Scope<any>[]): void;
10
12
  set(stack: Stack, value: any): void;
11
13
  get(stack: Stack): void;
12
14
  declareVariable(stack: Stack, scopeType: ScopeType, propertyValue?: any): any;
13
- events(parent?: string): string[];
15
+ dependency(computed?: true): ExpressionNode[];
16
+ dependencyPath(computed?: true): ExpressionEventPath[];
14
17
  toString(): string;
15
18
  toJson(): object;
16
19
  }
@@ -13,6 +13,9 @@ let RestElement = RestElement_1 = class RestElement extends AbstractExpressionNo
13
13
  getArgument() {
14
14
  return this.argument;
15
15
  }
16
+ shareVariables(scopeList) {
17
+ this.argument.shareVariables(scopeList);
18
+ }
16
19
  set(stack, value) {
17
20
  throw new Error('RestElement#set() Method has no implementation.');
18
21
  }
@@ -22,8 +25,11 @@ let RestElement = RestElement_1 = class RestElement extends AbstractExpressionNo
22
25
  declareVariable(stack, scopeType, propertyValue) {
23
26
  this.argument.declareVariable(stack, scopeType, propertyValue);
24
27
  }
25
- events(parent) {
26
- return this.argument.events();
28
+ dependency(computed) {
29
+ return this.argument.dependency(computed);
30
+ }
31
+ dependencyPath(computed) {
32
+ return this.argument.dependencyPath(computed);
27
33
  }
28
34
  toString() {
29
35
  return `...${this.argument.toString()}`;
@@ -1 +1 @@
1
- {"version":3,"file":"rest.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/rest.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAI7D,IAAa,WAAW,mBAAxB,MAAa,WAAY,SAAQ,sBAAsB;IAItD,YAAoB,QAA8B;QACjD,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAsB;IAElD,CAAC;IALD,MAAM,CAAC,QAAQ,CAAC,IAAiB,EAAE,YAA8B;QAChE,OAAO,IAAI,aAAW,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAyB,CAAC,CAAC;IAC7E,CAAC;IAID,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACpE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACpE,CAAC;IACD,eAAe,CAAC,KAAY,EAAE,SAAoB,EAAE,aAAmB;QACtE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,CAAC,MAAe;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC/B,CAAC;IACD,QAAQ;QACP,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;IACzC,CAAC;IACD,MAAM;QACL,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;IAC7C,CAAC;CACD,CAAA;AA5BY,WAAW;IADvB,YAAY,CAAC,aAAa,CAAC;;GACf,WAAW,CA4BvB;SA5BY,WAAW","sourcesContent":["import type { CanDeclareExpression, ExpressionNode, NodeDeserializer } from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { ScopeType } from '../../index.js';\n\n@Deserializer('RestElement')\nexport class RestElement extends AbstractExpressionNode implements CanDeclareExpression {\n\tstatic fromJSON(node: RestElement, deserializer: NodeDeserializer): RestElement {\n\t\treturn new RestElement(deserializer(node.argument) as CanDeclareExpression);\n\t}\n\tconstructor(private argument: CanDeclareExpression) {\n\t\tsuper();\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('RestElement#set() Method has no implementation.');\n\t}\n\tget(stack: Stack): void {\n\t\tthrow new Error('RestElement#get() Method has no implementation.');\n\t}\n\tdeclareVariable(stack: Stack, scopeType: ScopeType, propertyValue?: any): any {\n\t\tthis.argument.declareVariable(stack, scopeType, propertyValue);\n\t}\n\tevents(parent?: string): string[] {\n\t\treturn this.argument.events();\n\t}\n\ttoString(): string {\n\t\treturn `...${this.argument.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn { argument: this.argument.toJSON() };\n\t}\n}\n"]}
1
+ {"version":3,"file":"rest.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/rest.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAI7D,IAAa,WAAW,mBAAxB,MAAa,WAAY,SAAQ,sBAAsB;IAItD,YAAoB,QAA8B;QACjD,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAsB;IAElD,CAAC;IALD,MAAM,CAAC,QAAQ,CAAC,IAAiB,EAAE,YAA8B;QAChE,OAAO,IAAI,aAAW,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAyB,CAAC,CAAC;IAC7E,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,iDAAiD,CAAC,CAAC;IACpE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACpE,CAAC;IACD,eAAe,CAAC,KAAY,EAAE,SAAoB,EAAE,aAAmB;QACtE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAChE,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,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;IACzC,CAAC;IACD,MAAM;QACL,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;IAC7C,CAAC;CACD,CAAA;AAlCY,WAAW;IADvB,YAAY,CAAC,aAAa,CAAC;;GACf,WAAW,CAkCvB;SAlCY,WAAW","sourcesContent":["import type { CanDeclareExpression, 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';\nimport { ScopeType } from '../../index.js';\n\n@Deserializer('RestElement')\nexport class RestElement extends AbstractExpressionNode implements CanDeclareExpression {\n\tstatic fromJSON(node: RestElement, deserializer: NodeDeserializer): RestElement {\n\t\treturn new RestElement(deserializer(node.argument) as CanDeclareExpression);\n\t}\n\tconstructor(private argument: CanDeclareExpression) {\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('RestElement#set() Method has no implementation.');\n\t}\n\tget(stack: Stack): void {\n\t\tthrow new Error('RestElement#get() Method has no implementation.');\n\t}\n\tdeclareVariable(stack: Stack, scopeType: ScopeType, propertyValue?: any): any {\n\t\tthis.argument.declareVariable(stack, scopeType, propertyValue);\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(): string {\n\t\treturn `...${this.argument.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn { argument: this.argument.toJSON() };\n\t}\n}\n"]}
@@ -1,4 +1,5 @@
1
- import type { NodeDeserializer, ExpressionNode } from '../expression.js';
1
+ import type { NodeDeserializer, ExpressionNode, ExpressionEventPath } from '../expression.js';
2
+ import type { Scope } from '../../scope/scope.js';
2
3
  import type { Stack } from '../../scope/stack.js';
3
4
  import { AbstractExpressionNode, ReturnValue } from '../abstract.js';
4
5
  export declare class ReturnStatement extends AbstractExpressionNode {
@@ -6,9 +7,11 @@ export declare class ReturnStatement extends AbstractExpressionNode {
6
7
  static fromJSON(node: ReturnStatement, deserializer: NodeDeserializer): ReturnStatement;
7
8
  constructor(argument?: ExpressionNode | undefined);
8
9
  getArgument(): ExpressionNode | undefined;
10
+ shareVariables(scopeList: Scope<any>[]): void;
9
11
  set(stack: Stack, value: any): void;
10
12
  get(stack: Stack): ReturnValue;
11
- events(parent?: string): string[];
13
+ dependency(computed?: true): ExpressionNode[];
14
+ dependencyPath(computed?: true): ExpressionEventPath[];
12
15
  toString(): string;
13
16
  toJson(): object;
14
17
  }
@@ -13,14 +13,20 @@ let ReturnStatement = ReturnStatement_1 = class ReturnStatement extends Abstract
13
13
  getArgument() {
14
14
  return this.argument;
15
15
  }
16
+ shareVariables(scopeList) {
17
+ this.argument?.shareVariables(scopeList);
18
+ }
16
19
  set(stack, value) {
17
20
  throw new Error(`ReturnStatement#set() has no implementation.`);
18
21
  }
19
22
  get(stack) {
20
23
  return new ReturnValue(this.argument?.get(stack));
21
24
  }
22
- events(parent) {
23
- return this.argument?.events(parent) || [];
25
+ dependency(computed) {
26
+ return this.argument?.dependency(computed) || [];
27
+ }
28
+ dependencyPath(computed) {
29
+ return this.argument?.dependencyPath(computed) || [];
24
30
  }
25
31
  toString() {
26
32
  return `return ${this.argument?.toString() || ''}`;
@@ -1 +1 @@
1
- {"version":3,"file":"return.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/return.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAO7D,IAAa,eAAe,uBAA5B,MAAa,eAAgB,SAAQ,sBAAsB;IAI1D,YAAoB,QAAyB;QAC5C,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAiB;IAE7C,CAAC;IALD,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,YAA8B;QACpE,OAAO,IAAI,iBAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAClF,CAAC;IAID,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACjE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAEnD,CAAC;IACD,MAAM,CAAC,MAAe;QACrB,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC5C,CAAC;IACD,QAAQ;QACP,OAAO,UAAU,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;IACpD,CAAC;IACD,MAAM;QACL,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;IAC9C,CAAC;CACD,CAAA;AA1BY,eAAe;IAD3B,YAAY,CAAC,iBAAiB,CAAC;;GACnB,eAAe,CA0B3B;SA1BY,eAAe","sourcesContent":["import type { NodeDeserializer, ExpressionNode } from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode, ReturnValue } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n/**\n * The expression whose value is to be returned. \n * If omitted, undefined is returned instead.\n */\n@Deserializer('ReturnStatement')\nexport class ReturnStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: ReturnStatement, deserializer: NodeDeserializer): ReturnStatement {\n\t\treturn new ReturnStatement(node.argument ? deserializer(node.argument) : void 0);\n\t}\n\tconstructor(private argument?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`ReturnStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\treturn new ReturnValue(this.argument?.get(stack));\n\t\t// nothing should be written after this operation in a function body.\n\t}\n\tevents(parent?: string): string[] {\n\t\treturn this.argument?.events(parent) || [];\n\t}\n\ttoString(): string {\n\t\treturn `return ${this.argument?.toString() || ''}`;\n\t}\n\ttoJson(): object {\n\t\treturn { argument: this.argument?.toJSON() };\n\t}\n}\n"]}
1
+ {"version":3,"file":"return.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/return.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAO7D,IAAa,eAAe,uBAA5B,MAAa,eAAgB,SAAQ,sBAAsB;IAI1D,YAAoB,QAAyB;QAC5C,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAiB;IAE7C,CAAC;IALD,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,YAA8B;QACpE,OAAO,IAAI,iBAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAClF,CAAC;IAID,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,cAAc,CAAC,SAAuB;QACrC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACjE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAEnD,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAClD,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;IACD,QAAQ;QACP,OAAO,UAAU,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;IACpD,CAAC;IACD,MAAM;QACL,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;IAC9C,CAAC;CACD,CAAA;AAhCY,eAAe;IAD3B,YAAY,CAAC,iBAAiB,CAAC;;GACnB,eAAe,CAgC3B;SAhCY,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 { AbstractExpressionNode, ReturnValue } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n/**\n * The expression whose value is to be returned. \n * If omitted, undefined is returned instead.\n */\n@Deserializer('ReturnStatement')\nexport class ReturnStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: ReturnStatement, deserializer: NodeDeserializer): ReturnStatement {\n\t\treturn new ReturnStatement(node.argument ? deserializer(node.argument) : void 0);\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(`ReturnStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\treturn new ReturnValue(this.argument?.get(stack));\n\t\t// nothing should be written after this operation in a function body.\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(): string {\n\t\treturn `return ${this.argument?.toString() || ''}`;\n\t}\n\ttoJson(): object {\n\t\treturn { argument: this.argument?.toJSON() };\n\t}\n}\n"]}
@@ -1,4 +1,5 @@
1
- import type { ExpressionNode, NodeDeserializer } from '../expression.js';
1
+ import type { ExpressionEventPath, ExpressionNode, NodeDeserializer } from '../expression.js';
2
+ import type { Scope } from '../../scope/scope.js';
2
3
  import type { Stack } from '../../scope/stack.js';
3
4
  import { AbstractExpressionNode } from '../abstract.js';
4
5
  export declare class SpreadElement extends AbstractExpressionNode {
@@ -6,11 +7,13 @@ export declare class SpreadElement extends AbstractExpressionNode {
6
7
  static fromJSON(node: SpreadElement, deserializer: NodeDeserializer): SpreadElement;
7
8
  constructor(argument: ExpressionNode);
8
9
  getArgument(): ExpressionNode;
10
+ shareVariables(scopeList: Scope<any>[]): void;
9
11
  set(stack: Stack, value: any): void;
10
12
  get(stack: Stack): void;
11
13
  private spreadFromArray;
12
14
  private spreadFromIterator;
13
- events(parent?: string): string[];
15
+ dependency(computed?: true): ExpressionNode[];
16
+ dependencyPath(computed?: true): ExpressionEventPath[];
14
17
  toString(): string;
15
18
  toJson(): object;
16
19
  }
@@ -13,6 +13,9 @@ let SpreadElement = SpreadElement_1 = class SpreadElement extends AbstractExpres
13
13
  getArgument() {
14
14
  return this.argument;
15
15
  }
16
+ shareVariables(scopeList) {
17
+ this.argument.shareVariables(scopeList);
18
+ }
16
19
  set(stack, value) {
17
20
  throw new Error('SpreadElement#set() Method has no implementation.');
18
21
  }
@@ -39,8 +42,11 @@ let SpreadElement = SpreadElement_1 = class SpreadElement extends AbstractExpres
39
42
  stack.declareVariable('block', length++, iteratorResult.value);
40
43
  }
41
44
  }
42
- events(parent) {
43
- return this.argument.events();
45
+ dependency(computed) {
46
+ return this.argument.dependency(computed);
47
+ }
48
+ dependencyPath(computed) {
49
+ return this.argument.dependencyPath(computed);
44
50
  }
45
51
  toString() {
46
52
  return `...${this.argument.toString()}`;
@@ -1 +1 @@
1
- {"version":3,"file":"spread.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/spread.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,IAAa,aAAa,qBAA1B,MAAa,aAAc,SAAQ,sBAAsB;IAIxD,YAAoB,QAAwB;QAC3C,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAgB;IAE5C,CAAC;IALD,MAAM,CAAC,QAAQ,CAAC,IAAmB,EAAE,YAA8B;QAClE,OAAO,IAAI,eAAa,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvD,CAAC;IAID,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACtE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACnC;aAAM,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;YAC/C,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACtC;IACF,CAAC;IACO,eAAe,CAAC,KAAY,EAAE,KAAiB;QACtD,IAAI,MAAM,GAAW,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC;IACO,kBAAkB,CAAC,KAAY,EAAE,QAAuB;QAC/D,IAAI,MAAM,GAAW,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,IAAI,EAAE;YACZ,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,cAAc,CAAC,IAAI,EAAE;gBACxB,MAAM;aACN;YACD,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;SAC/D;IACF,CAAC;IACD,MAAM,CAAC,MAAe;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC/B,CAAC;IACD,QAAQ;QACP,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;IACzC,CAAC;IACD,MAAM;QACL,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;IAC7C,CAAC;CACD,CAAA;AA5CY,aAAa;IADzB,YAAY,CAAC,eAAe,CAAC;;GACjB,aAAa,CA4CzB;SA5CY,aAAa","sourcesContent":["import type { ExpressionNode, NodeDeserializer } from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('SpreadElement')\nexport class SpreadElement extends AbstractExpressionNode {\n\tstatic fromJSON(node: SpreadElement, deserializer: NodeDeserializer): SpreadElement {\n\t\treturn new SpreadElement(deserializer(node.argument));\n\t}\n\tconstructor(private argument: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('SpreadElement#set() Method has no implementation.');\n\t}\n\tget(stack: Stack): void {\n\t\tconst value = this.argument.get(stack);\n\t\tif (Array.isArray(value)) {\n\t\t\tthis.spreadFromArray(stack, value);\n\t\t} else if (Reflect.has(value, Symbol.iterator)) {\n\t\t\tthis.spreadFromIterator(stack, value);\n\t\t}\n\t}\n\tprivate spreadFromArray(stack: Stack, array: Array<any>): void {\n\t\tlet length: number = stack.get('length');\n\t\tarray.forEach(value => stack.declareVariable('block', length++, value));\n\t}\n\tprivate spreadFromIterator(stack: Stack, iterator: Iterator<any>): void {\n\t\tlet length: number = stack.get('length');\n\t\twhile (true) {\n\t\t\tconst iteratorResult = iterator.next();\n\t\t\tif (iteratorResult.done) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tstack.declareVariable('block', length++, iteratorResult.value);\n\t\t}\n\t}\n\tevents(parent?: string): string[] {\n\t\treturn this.argument.events();\n\t}\n\ttoString(): string {\n\t\treturn `...${this.argument.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn { argument: this.argument.toJSON() };\n\t}\n}\n"]}
1
+ {"version":3,"file":"spread.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/spread.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,IAAa,aAAa,qBAA1B,MAAa,aAAc,SAAQ,sBAAsB;IAIxD,YAAoB,QAAwB;QAC3C,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAgB;IAE5C,CAAC;IALD,MAAM,CAAC,QAAQ,CAAC,IAAmB,EAAE,YAA8B;QAClE,OAAO,IAAI,eAAa,CAAC,YAAY,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,mDAAmD,CAAC,CAAC;IACtE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACnC;aAAM,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;YAC/C,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACtC;IACF,CAAC;IACO,eAAe,CAAC,KAAY,EAAE,KAAiB;QACtD,IAAI,MAAM,GAAW,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC;IACO,kBAAkB,CAAC,KAAY,EAAE,QAAuB;QAC/D,IAAI,MAAM,GAAW,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,IAAI,EAAE;YACZ,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,cAAc,CAAC,IAAI,EAAE;gBACxB,MAAM;aACN;YACD,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;SAC/D;IACF,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,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;IACzC,CAAC;IACD,MAAM;QACL,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;IAC7C,CAAC;CACD,CAAA;AAlDY,aAAa;IADzB,YAAY,CAAC,eAAe,CAAC;;GACjB,aAAa,CAkDzB;SAlDY,aAAa","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('SpreadElement')\nexport class SpreadElement extends AbstractExpressionNode {\n\tstatic fromJSON(node: SpreadElement, deserializer: NodeDeserializer): SpreadElement {\n\t\treturn new SpreadElement(deserializer(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('SpreadElement#set() Method has no implementation.');\n\t}\n\tget(stack: Stack): void {\n\t\tconst value = this.argument.get(stack);\n\t\tif (Array.isArray(value)) {\n\t\t\tthis.spreadFromArray(stack, value);\n\t\t} else if (Reflect.has(value, Symbol.iterator)) {\n\t\t\tthis.spreadFromIterator(stack, value);\n\t\t}\n\t}\n\tprivate spreadFromArray(stack: Stack, array: Array<any>): void {\n\t\tlet length: number = stack.get('length');\n\t\tarray.forEach(value => stack.declareVariable('block', length++, value));\n\t}\n\tprivate spreadFromIterator(stack: Stack, iterator: Iterator<any>): void {\n\t\tlet length: number = stack.get('length');\n\t\twhile (true) {\n\t\t\tconst iteratorResult = iterator.next();\n\t\t\tif (iteratorResult.done) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tstack.declareVariable('block', length++, iteratorResult.value);\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(): string {\n\t\treturn `...${this.argument.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn { argument: this.argument.toJSON() };\n\t}\n}\n"]}
@@ -1,4 +1,5 @@
1
- import type { NodeDeserializer, ExpressionNode } from '../expression.js';
1
+ import type { NodeDeserializer, ExpressionNode, ExpressionEventPath } from '../expression.js';
2
+ import type { Scope } from '../../scope/scope.js';
2
3
  import type { Stack } from '../../scope/stack.js';
3
4
  import { AbstractExpressionNode } from '../abstract.js';
4
5
  export declare class ThrowStatement extends AbstractExpressionNode {
@@ -6,9 +7,11 @@ export declare class ThrowStatement extends AbstractExpressionNode {
6
7
  static fromJSON(node: ThrowStatement, deserializer: NodeDeserializer): ThrowStatement;
7
8
  constructor(argument: ExpressionNode);
8
9
  getArgument(): ExpressionNode;
10
+ shareVariables(scopeList: Scope<any>[]): void;
9
11
  set(stack: Stack, value: any): void;
10
12
  get(stack: Stack): void;
11
- events(parent?: string): string[];
13
+ dependency(computed?: true): ExpressionNode[];
14
+ dependencyPath(computed?: true): ExpressionEventPath[];
12
15
  toString(): string;
13
16
  toJson(): object;
14
17
  }
@@ -19,9 +22,11 @@ export declare class CatchClauseNode extends AbstractExpressionNode {
19
22
  constructor(body: ExpressionNode, param?: ExpressionNode | undefined);
20
23
  getParam(): ExpressionNode | undefined;
21
24
  getBody(): ExpressionNode;
25
+ shareVariables(scopeList: Scope<any>[]): void;
22
26
  set(stack: Stack, error: any): void;
23
27
  get(stack: Stack, thisContext?: any): any;
24
- events(parent?: string): string[];
28
+ dependency(computed?: true): ExpressionNode[];
29
+ dependencyPath(computed?: true): ExpressionEventPath[];
25
30
  toString(): string;
26
31
  toJson(key?: string): {
27
32
  [key: string]: any;
@@ -36,9 +41,11 @@ export declare class TryCatchNode extends AbstractExpressionNode {
36
41
  getBlock(): ExpressionNode;
37
42
  getHandler(): ExpressionNode | undefined;
38
43
  getFinalizer(): ExpressionNode | undefined;
44
+ shareVariables(scopeList: Scope<any>[]): void;
39
45
  set(stack: Stack, value: any): void;
40
46
  get(stack: Stack): void;
41
- events(parent?: string): string[];
47
+ dependency(computed?: true): ExpressionNode[];
48
+ dependencyPath(computed?: true): ExpressionEventPath[];
42
49
  toString(): string;
43
50
  toJson(): object;
44
51
  }
@@ -13,14 +13,20 @@ let ThrowStatement = ThrowStatement_1 = class ThrowStatement extends AbstractExp
13
13
  getArgument() {
14
14
  return this.argument;
15
15
  }
16
+ shareVariables(scopeList) {
17
+ this.argument.shareVariables(scopeList);
18
+ }
16
19
  set(stack, value) {
17
20
  throw new Error(`ThrowStatement#set() has no implementation.`);
18
21
  }
19
22
  get(stack) {
20
23
  throw this.argument.get(stack);
21
24
  }
22
- events(parent) {
23
- return this.argument.events();
25
+ dependency(computed) {
26
+ return this.argument.dependency(computed);
27
+ }
28
+ dependencyPath(computed) {
29
+ return this.argument.dependencyPath(computed);
24
30
  }
25
31
  toString() {
26
32
  return `throw ${this.argument.toString()}`;
@@ -49,14 +55,18 @@ let CatchClauseNode = CatchClauseNode_1 = class CatchClauseNode extends Abstract
49
55
  getBody() {
50
56
  return this.body;
51
57
  }
58
+ shareVariables(scopeList) { }
52
59
  set(stack, error) {
53
60
  this.param?.set(stack, error);
54
61
  }
55
62
  get(stack, thisContext) {
56
63
  return this.body.get(stack);
57
64
  }
58
- events(parent) {
59
- return [];
65
+ dependency(computed) {
66
+ return this.body.dependency();
67
+ }
68
+ dependencyPath(computed) {
69
+ return this.body.dependencyPath(computed);
60
70
  }
61
71
  toString() {
62
72
  return `catch (${this.param?.toString() || ''}) ${this.body.toString()}`;
@@ -92,6 +102,7 @@ let TryCatchNode = TryCatchNode_1 = class TryCatchNode extends AbstractExpressio
92
102
  getFinalizer() {
93
103
  return this.finalizer;
94
104
  }
105
+ shareVariables(scopeList) { }
95
106
  set(stack, value) {
96
107
  throw new Error(`TryCatchNode#set() has no implementation.`);
97
108
  }
@@ -150,8 +161,14 @@ let TryCatchNode = TryCatchNode_1 = class TryCatchNode extends AbstractExpressio
150
161
  }
151
162
  stack.clearTill(scope);
152
163
  }
153
- events(parent) {
154
- return this.block.events().concat(this.handler?.events() || []).concat(this.finalizer?.events() || []);
164
+ dependency(computed) {
165
+ return this.block.dependency()
166
+ .concat(this.handler?.dependency() || [])
167
+ .concat(this.finalizer?.dependency() || []);
168
+ }
169
+ dependencyPath(computed) {
170
+ return this.block.dependencyPath(computed)
171
+ .concat(this.handler?.dependencyPath(computed) || [], this.finalizer?.dependencyPath(computed) || []);
155
172
  }
156
173
  toString() {
157
174
  return `try ${this.block.toString()} ${this.handler?.toString() || ''} ${this.finalizer ? `finally ${this.finalizer.toString()}` : ''}`;
@@ -1 +1 @@
1
- {"version":3,"file":"throw.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/throw.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NodeDeserializer, ExpressionNode } from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n/**\n * The expression whose value is to be returned. \n * If omitted, undefined is returned instead.\n */\n@Deserializer('ThrowStatement')\nexport class ThrowStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: ThrowStatement, deserializer: NodeDeserializer): ThrowStatement {\n\t\treturn new ThrowStatement(deserializer(node.argument));\n\t}\n\tconstructor(private argument: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`ThrowStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tthrow this.argument.get(stack);\n\t}\n\tevents(parent?: string): string[] {\n\t\treturn this.argument.events();\n\t}\n\ttoString(): string {\n\t\treturn `throw ${this.argument.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn { argument: this.argument?.toJSON() };\n\t}\n}\n\n\n@Deserializer('CatchClause')\nexport class CatchClauseNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: CatchClauseNode, deserializer: NodeDeserializer): CatchClauseNode {\n\t\treturn new CatchClauseNode(\n\t\t\tdeserializer(node.body),\n\t\t\tnode.param ? deserializer(node.param) : void 0,\n\t\t);\n\t}\n\tconstructor(private body: ExpressionNode, private param?: ExpressionNode,) {\n\t\tsuper();\n\t}\n\tgetParam() {\n\t\treturn this.param;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tset(stack: Stack, error: any) {\n\t\tthis.param?.set(stack, error);\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\treturn this.body.get(stack);\n\t}\n\tevents(parent?: string): string[] {\n\t\treturn [];\n\t}\n\ttoString(): string {\n\t\t// return `catch ${this.catchVar ? `(${this.catchVar.toString()})`;\n\t\treturn `catch (${this.param?.toString() || ''}) ${this.body.toString()}`;\n\t}\n\ttoJson(key?: string): { [key: string]: any; } {\n\t\treturn {\n\t\t\tparam: this.param?.toJSON(),\n\t\t\tbody: this.body.toJSON()\n\t\t};\n\t}\n\n}\n\n@Deserializer('TryStatement')\nexport class TryCatchNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: TryCatchNode, deserializer: NodeDeserializer): TryCatchNode {\n\t\treturn new TryCatchNode(\n\t\t\tdeserializer(node.block),\n\t\t\tnode.handler ? deserializer(node.handler) : void 0,\n\t\t\tnode.finalizer ? deserializer(node.finalizer) : void 0\n\t\t);\n\t}\n\tconstructor(private block: ExpressionNode, private handler?: ExpressionNode, private finalizer?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetBlock() {\n\t\treturn this.block;\n\t}\n\tgetHandler() {\n\t\treturn this.handler;\n\t}\n\tgetFinalizer() {\n\t\treturn this.finalizer;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`TryCatchNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst scope = stack.lastScope();\n\t\tif (this.block && this.handler && this.finalizer) {\n\t\t\ttry {\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.block.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} catch (error) {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.handler.set(stack, error);\n\t\t\t\tthis.handler.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} finally {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.finalizer.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t}\n\t\t} else if (this.block && this.handler) {\n\t\t\ttry {\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.block.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} catch (error) {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t\tthis.handler.set(stack, error);\n\t\t\t\tthis.handler.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t}\n\t\t} else if (this.block && this.finalizer) {\n\t\t\ttry {\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.block.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} finally {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.finalizer.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new Error(`Uncaught SyntaxError: Missing catch or finally after try`);\n\t\t}\n\t\tstack.clearTill(scope);\n\t}\n\tevents(parent?: string): string[] {\n\t\treturn this.block.events().concat(this.handler?.events() || []).concat(this.finalizer?.events() || []);\n\t}\n\ttoString(): string {\n\t\treturn `try ${this.block.toString()} ${this.handler?.toString() || ''} ${this.finalizer ? `finally ${this.finalizer.toString()}` : ''}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tblock: this.block.toJSON(),\n\t\t\thandler: this.handler?.toJSON(),\n\t\t\tfinalizer: this.finalizer?.toJSON(),\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"throw.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/throw.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAO7D,IAAa,cAAc,sBAA3B,MAAa,cAAe,SAAQ,sBAAsB;IAIzD,YAAoB,QAAwB;QAC3C,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAgB;IAE5C,CAAC;IALD,MAAM,CAAC,QAAQ,CAAC,IAAoB,EAAE,YAA8B;QACnE,OAAO,IAAI,gBAAc,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxD,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,6CAA6C,CAAC,CAAC;IAChE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChC,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,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;IAC9C,CAAC;CACD,CAAA;AA/BY,cAAc;IAD1B,YAAY,CAAC,gBAAgB,CAAC;;GAClB,cAAc,CA+B1B;SA/BY,cAAc;AAmC3B,IAAa,eAAe,uBAA5B,MAAa,eAAgB,SAAQ,sBAAsB;IAO1D,YAAoB,IAAoB,EAAU,KAAsB;QACvE,KAAK,EAAE,CAAC;QADW,SAAI,GAAJ,IAAI,CAAgB;QAAU,UAAK,GAAL,KAAK,CAAiB;IAExE,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,YAA8B;QACpE,OAAO,IAAI,iBAAe,CACzB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EACvB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAC9C,CAAC;IACH,CAAC;IAID,QAAQ;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IACD,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IACD,cAAc,CAAC,SAAuB,IAAU,CAAC;IACjD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,WAAiB;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IAC/B,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IACD,QAAQ;QACP,OAAO,UAAU,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC1E,CAAC;IACD,MAAM,CAAC,GAAY;QAClB,OAAO;YACN,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;SACxB,CAAC;IACH,CAAC;CAED,CAAA;AAvCY,eAAe;IAD3B,YAAY,CAAC,aAAa,CAAC;;GACf,eAAe,CAuC3B;SAvCY,eAAe;AA0C5B,IAAa,YAAY,oBAAzB,MAAa,YAAa,SAAQ,sBAAsB;IAQvD,YAAoB,KAAqB,EAAU,OAAwB,EAAU,SAA0B;QAC9G,KAAK,EAAE,CAAC;QADW,UAAK,GAAL,KAAK,CAAgB;QAAU,YAAO,GAAP,OAAO,CAAiB;QAAU,cAAS,GAAT,SAAS,CAAiB;IAE/G,CAAC;IATD,MAAM,CAAC,QAAQ,CAAC,IAAkB,EAAE,YAA8B;QACjE,OAAO,IAAI,cAAY,CACtB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EACxB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAClD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CACtD,CAAC;IACH,CAAC;IAID,QAAQ;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IACD,UAAU;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IACD,YAAY;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IACD,cAAc,CAAC,SAAuB,IAAU,CAAC;IACjD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC9D,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;YACjD,IAAI;gBACH,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACtB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC1B;YAAC,OAAO,KAAK,EAAE;gBACf,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACvB,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACxB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC1B;oBAAS;gBACT,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACvB,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC1B,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC1B;SACD;aAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;YACtC,IAAI;gBACH,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACtB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC1B;YAAC,OAAO,KAAK,EAAE;gBACf,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACvB,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC1C,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACxB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC1B;SACD;aAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE;YACxC,IAAI;gBACH,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACtB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC1B;oBAAS;gBACT,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACvB,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC1B,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC1B;SACD;aAAM;YACN,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;SAC5E;QACD,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;aAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;aACxC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;aACxC,MAAM,CACN,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,EAC5C,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAC9C,CAAC;IACJ,CAAC;IACD,QAAQ;QACP,OAAO,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACzI,CAAC;IACD,MAAM;QACL,OAAO;YACN,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;SACnC,CAAC;IACH,CAAC;CACD,CAAA;AA9FY,YAAY;IADxB,YAAY,CAAC,cAAc,CAAC;;GAChB,YAAY,CA8FxB;SA9FY,YAAY","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 expression whose value is to be returned. \n * If omitted, undefined is returned instead.\n */\n@Deserializer('ThrowStatement')\nexport class ThrowStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: ThrowStatement, deserializer: NodeDeserializer): ThrowStatement {\n\t\treturn new ThrowStatement(deserializer(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(`ThrowStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tthrow this.argument.get(stack);\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(): string {\n\t\treturn `throw ${this.argument.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn { argument: this.argument?.toJSON() };\n\t}\n}\n\n\n@Deserializer('CatchClause')\nexport class CatchClauseNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: CatchClauseNode, deserializer: NodeDeserializer): CatchClauseNode {\n\t\treturn new CatchClauseNode(\n\t\t\tdeserializer(node.body),\n\t\t\tnode.param ? deserializer(node.param) : void 0,\n\t\t);\n\t}\n\tconstructor(private body: ExpressionNode, private param?: ExpressionNode,) {\n\t\tsuper();\n\t}\n\tgetParam() {\n\t\treturn this.param;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, error: any) {\n\t\tthis.param?.set(stack, error);\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\treturn this.body.get(stack);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.body.dependency();\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.body.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `catch (${this.param?.toString() || ''}) ${this.body.toString()}`;\n\t}\n\ttoJson(key?: string): { [key: string]: any; } {\n\t\treturn {\n\t\t\tparam: this.param?.toJSON(),\n\t\t\tbody: this.body.toJSON()\n\t\t};\n\t}\n\n}\n\n@Deserializer('TryStatement')\nexport class TryCatchNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: TryCatchNode, deserializer: NodeDeserializer): TryCatchNode {\n\t\treturn new TryCatchNode(\n\t\t\tdeserializer(node.block),\n\t\t\tnode.handler ? deserializer(node.handler) : void 0,\n\t\t\tnode.finalizer ? deserializer(node.finalizer) : void 0\n\t\t);\n\t}\n\tconstructor(private block: ExpressionNode, private handler?: ExpressionNode, private finalizer?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetBlock() {\n\t\treturn this.block;\n\t}\n\tgetHandler() {\n\t\treturn this.handler;\n\t}\n\tgetFinalizer() {\n\t\treturn this.finalizer;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`TryCatchNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst scope = stack.lastScope();\n\t\tif (this.block && this.handler && this.finalizer) {\n\t\t\ttry {\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.block.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} catch (error) {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.handler.set(stack, error);\n\t\t\t\tthis.handler.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} finally {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.finalizer.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t}\n\t\t} else if (this.block && this.handler) {\n\t\t\ttry {\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.block.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} catch (error) {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t\tthis.handler.set(stack, error);\n\t\t\t\tthis.handler.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t}\n\t\t} else if (this.block && this.finalizer) {\n\t\t\ttry {\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.block.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} finally {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.finalizer.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new Error(`Uncaught SyntaxError: Missing catch or finally after try`);\n\t\t}\n\t\tstack.clearTill(scope);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.block.dependency()\n\t\t\t.concat(this.handler?.dependency() || [])\n\t\t\t.concat(this.finalizer?.dependency() || []);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.block.dependencyPath(computed)\n\t\t\t.concat(\n\t\t\t\tthis.handler?.dependencyPath(computed) || [],\n\t\t\t\tthis.finalizer?.dependencyPath(computed) || []\n\t\t\t);\n\t}\n\ttoString(): string {\n\t\treturn `try ${this.block.toString()} ${this.handler?.toString() || ''} ${this.finalizer ? `finally ${this.finalizer.toString()}` : ''}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tblock: this.block.toJSON(),\n\t\t\thandler: this.handler?.toJSON(),\n\t\t\tfinalizer: this.finalizer?.toJSON(),\n\t\t};\n\t}\n}\n"]}
@@ -0,0 +1,18 @@
1
+ import type { NodeDeserializer, ExpressionNode, ExpressionEventPath } from '../expression.js';
2
+ import type { Scope } from '../../scope/scope.js';
3
+ import type { Stack } from '../../scope/stack.js';
4
+ import { AbstractExpressionNode, YieldDelegateValue, YieldValue } from '../abstract.js';
5
+ export declare class YieldExpression extends AbstractExpressionNode {
6
+ private delegate;
7
+ private argument?;
8
+ static fromJSON(node: YieldExpression, deserializer: NodeDeserializer): YieldExpression;
9
+ constructor(delegate: boolean, argument?: ExpressionNode | undefined);
10
+ getArgument(): ExpressionNode | undefined;
11
+ shareVariables(scopeList: Scope<any>[]): void;
12
+ set(stack: Stack, value: any): void;
13
+ get(stack: Stack): YieldValue | YieldDelegateValue;
14
+ dependency(computed?: true): ExpressionNode[];
15
+ dependencyPath(computed?: true): ExpressionEventPath[];
16
+ toString(): string;
17
+ toJson(): object;
18
+ }
@@ -0,0 +1,51 @@
1
+ var YieldExpression_1;
2
+ import { __decorate, __metadata } from "tslib";
3
+ import { AbstractExpressionNode, YieldDelegateValue, YieldValue } from '../abstract.js';
4
+ import { Deserializer } from '../deserialize/deserialize.js';
5
+ let YieldExpression = YieldExpression_1 = class YieldExpression extends AbstractExpressionNode {
6
+ constructor(delegate, argument) {
7
+ super();
8
+ this.delegate = delegate;
9
+ this.argument = argument;
10
+ }
11
+ static fromJSON(node, deserializer) {
12
+ return new YieldExpression_1(node.delegate, node.argument ? deserializer(node.argument) : void 0);
13
+ }
14
+ getArgument() {
15
+ return this.argument;
16
+ }
17
+ shareVariables(scopeList) {
18
+ this.argument?.shareVariables(scopeList);
19
+ }
20
+ set(stack, value) {
21
+ throw new Error(`YieldExpression#set() has no implementation.`);
22
+ }
23
+ get(stack) {
24
+ const value = this.argument?.get(stack);
25
+ if (this.delegate) {
26
+ return new YieldDelegateValue(value);
27
+ }
28
+ return new YieldValue(value);
29
+ }
30
+ dependency(computed) {
31
+ return this.argument?.dependency(computed) || [];
32
+ }
33
+ dependencyPath(computed) {
34
+ return this.argument?.dependencyPath(computed) || [];
35
+ }
36
+ toString() {
37
+ return `yield${this.delegate ? '*' : ''} ${this.argument?.toString() || ''}`;
38
+ }
39
+ toJson() {
40
+ return {
41
+ delegate: this.delegate,
42
+ argument: this.argument?.toJSON()
43
+ };
44
+ }
45
+ };
46
+ YieldExpression = YieldExpression_1 = __decorate([
47
+ Deserializer('YieldExpression'),
48
+ __metadata("design:paramtypes", [Boolean, Object])
49
+ ], YieldExpression);
50
+ export { YieldExpression };
51
+ //# sourceMappingURL=yield.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yield.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/yield.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,IAAa,eAAe,uBAA5B,MAAa,eAAgB,SAAQ,sBAAsB;IAI1D,YAAoB,QAAiB,EAAU,QAAyB;QACvE,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAS;QAAU,aAAQ,GAAR,QAAQ,CAAiB;IAExE,CAAC;IALD,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,YAA8B;QACpE,OAAO,IAAI,iBAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACjG,CAAC;IAID,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,cAAc,CAAC,SAAuB;QACrC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACjE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;SACrC;QACD,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAClD,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;IACD,QAAQ;QACP,OAAO,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;IAC9E,CAAC;IACD,MAAM;QACL,OAAO;YACN,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;SACjC,CAAC;IACH,CAAC;CACD,CAAA;AAtCY,eAAe;IAD3B,YAAY,CAAC,iBAAiB,CAAC;;GACnB,eAAe,CAsC3B;SAtCY,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 { AbstractExpressionNode, YieldDelegateValue, YieldValue } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('YieldExpression')\nexport class YieldExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: YieldExpression, deserializer: NodeDeserializer): YieldExpression {\n\t\treturn new YieldExpression(node.delegate, node.argument ? deserializer(node.argument) : void 0);\n\t}\n\tconstructor(private delegate: boolean, 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(`YieldExpression#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst value = this.argument?.get(stack);\n\t\tif (this.delegate) {\n\t\t\treturn new YieldDelegateValue(value);\n\t\t}\n\t\treturn new YieldValue(value);\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(): string {\n\t\treturn `yield${this.delegate ? '*' : ''} ${this.argument?.toString() || ''}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tdelegate: this.delegate,\n\t\t\targument: this.argument?.toJSON()\n\t\t};\n\t}\n}\n"]}
@@ -1,29 +1,36 @@
1
- import type { NodeDeserializer, ExpressionNode, CanDeclareExpression } from '../expression.js';
1
+ import type { NodeDeserializer, ExpressionNode, CanDeclareExpression, ExpressionEventPath, VisitNodeType, VisitNodeListType } from '../expression.js';
2
+ import type { Scope } from '../../scope/scope.js';
2
3
  import type { Stack } from '../../scope/stack.js';
3
4
  import { AbstractExpressionNode } from '../abstract.js';
4
5
  import { ScopeType } from '../../scope/scope.js';
5
6
  export declare class ArrayExpression extends AbstractExpressionNode {
6
7
  private elements;
7
8
  static fromJSON(node: ArrayExpression, deserializer: NodeDeserializer): ArrayExpression;
9
+ static visit(node: ArrayExpression, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void;
8
10
  constructor(elements: ExpressionNode[]);
9
11
  getElements(): ExpressionNode[];
12
+ shareVariables(scopeList: Scope<any>[]): void;
10
13
  set(stack: Stack): void;
11
14
  get(stack: Stack): any[];
12
- events(parent?: string): string[];
15
+ dependency(computed?: true): ExpressionNode[];
16
+ dependencyPath(computed?: true): ExpressionEventPath[];
13
17
  toString(): string;
14
18
  toJson(): object;
15
19
  }
16
20
  export declare class ArrayPattern extends AbstractExpressionNode implements CanDeclareExpression {
17
21
  private elements;
18
22
  static fromJSON(node: ArrayPattern, deserializer: NodeDeserializer): ArrayPattern;
23
+ static visit(node: ArrayPattern, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void;
19
24
  constructor(elements: CanDeclareExpression[]);
20
25
  getElements(): CanDeclareExpression[];
26
+ shareVariables(scopeList: Scope<any>[]): void;
21
27
  set(stack: Stack, values: any): void;
22
28
  get(scopeProvider: Stack): void;
23
29
  declareVariable(stack: Stack, scopeType: ScopeType, values: any): void;
24
30
  declareVariableFromArray(stack: Stack, scopeType: ScopeType, values: any[]): void;
25
31
  declareVariableFromIterator(stack: Stack, scopeType: ScopeType, iterator: Iterator<any>): void;
26
- events(parent?: string): string[];
32
+ dependency(computed?: true): ExpressionNode[];
33
+ dependencyPath(computed?: true): ExpressionEventPath[];
27
34
  toString(): string;
28
35
  toJson(): object;
29
36
  }