@ibyar/expressions 0.8.2-dev.20221008 → 0.8.3

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 (130) hide show
  1. package/api/abstract.d.ts +0 -3
  2. package/api/abstract.js +0 -4
  3. package/api/abstract.js.map +1 -1
  4. package/api/class/class.d.ts +85 -43
  5. package/api/class/class.js +237 -173
  6. package/api/class/class.js.map +1 -1
  7. package/api/class/decorator.d.ts +0 -2
  8. package/api/class/decorator.js +0 -3
  9. package/api/class/decorator.js.map +1 -1
  10. package/api/computing/call.d.ts +0 -2
  11. package/api/computing/call.js +0 -3
  12. package/api/computing/call.js.map +1 -1
  13. package/api/computing/debugger.d.ts +0 -2
  14. package/api/computing/debugger.js +0 -2
  15. package/api/computing/debugger.js.map +1 -1
  16. package/api/computing/new.d.ts +0 -2
  17. package/api/computing/new.js +0 -3
  18. package/api/computing/new.js.map +1 -1
  19. package/api/computing/rest.d.ts +0 -2
  20. package/api/computing/rest.js +0 -3
  21. package/api/computing/rest.js.map +1 -1
  22. package/api/computing/return.d.ts +0 -2
  23. package/api/computing/return.js +0 -3
  24. package/api/computing/return.js.map +1 -1
  25. package/api/computing/spread.d.ts +0 -2
  26. package/api/computing/spread.js +0 -3
  27. package/api/computing/spread.js.map +1 -1
  28. package/api/computing/throw.d.ts +0 -4
  29. package/api/computing/throw.js +0 -5
  30. package/api/computing/throw.js.map +1 -1
  31. package/api/computing/yield.d.ts +0 -2
  32. package/api/computing/yield.js +0 -3
  33. package/api/computing/yield.js.map +1 -1
  34. package/api/definition/array.d.ts +0 -3
  35. package/api/definition/array.js +0 -4
  36. package/api/definition/array.js.map +1 -1
  37. package/api/definition/bind.d.ts +0 -1
  38. package/api/definition/bind.js +0 -1
  39. package/api/definition/bind.js.map +1 -1
  40. package/api/definition/comment.d.ts +0 -2
  41. package/api/definition/comment.js +0 -1
  42. package/api/definition/comment.js.map +1 -1
  43. package/api/definition/function.d.ts +3 -11
  44. package/api/definition/function.js +33 -56
  45. package/api/definition/function.js.map +1 -1
  46. package/api/definition/member.d.ts +0 -1
  47. package/api/definition/member.js +1 -2
  48. package/api/definition/member.js.map +1 -1
  49. package/api/definition/object.d.ts +1 -5
  50. package/api/definition/object.js +2 -8
  51. package/api/definition/object.js.map +1 -1
  52. package/api/definition/statement.d.ts +0 -2
  53. package/api/definition/statement.js +0 -3
  54. package/api/definition/statement.js.map +1 -1
  55. package/api/definition/values.d.ts +0 -3
  56. package/api/definition/values.js +0 -5
  57. package/api/definition/values.js.map +1 -1
  58. package/api/expression.d.ts +0 -20
  59. package/api/expression.js.map +1 -1
  60. package/api/module/common.d.ts +1 -2
  61. package/api/module/common.js +3 -3
  62. package/api/module/common.js.map +1 -1
  63. package/api/module/export.d.ts +0 -5
  64. package/api/module/export.js +5 -9
  65. package/api/module/export.js.map +1 -1
  66. package/api/module/import.d.ts +2 -6
  67. package/api/module/import.js +4 -9
  68. package/api/module/import.js.map +1 -1
  69. package/api/operators/await.d.ts +0 -2
  70. package/api/operators/await.js +0 -3
  71. package/api/operators/await.js.map +1 -1
  72. package/api/operators/chaining.d.ts +0 -1
  73. package/api/operators/chaining.js +0 -1
  74. package/api/operators/chaining.js.map +1 -1
  75. package/api/operators/comma.d.ts +0 -2
  76. package/api/operators/comma.js +0 -3
  77. package/api/operators/comma.js.map +1 -1
  78. package/api/operators/grouping.d.ts +0 -2
  79. package/api/operators/grouping.js +0 -3
  80. package/api/operators/grouping.js.map +1 -1
  81. package/api/operators/pipeline.d.ts +1 -3
  82. package/api/operators/pipeline.js +0 -7
  83. package/api/operators/pipeline.js.map +1 -1
  84. package/api/operators/ternary.d.ts +0 -2
  85. package/api/operators/ternary.js +0 -5
  86. package/api/operators/ternary.js.map +1 -1
  87. package/api/operators/unary.d.ts +0 -2
  88. package/api/operators/unary.js +0 -3
  89. package/api/operators/unary.js.map +1 -1
  90. package/api/operators/update.d.ts +0 -2
  91. package/api/operators/update.js +0 -3
  92. package/api/operators/update.js.map +1 -1
  93. package/api/program.d.ts +0 -2
  94. package/api/program.js +0 -1
  95. package/api/program.js.map +1 -1
  96. package/api/statement/control/block.d.ts +0 -2
  97. package/api/statement/control/block.js +3 -8
  98. package/api/statement/control/block.js.map +1 -1
  99. package/api/statement/control/empty.d.ts +0 -2
  100. package/api/statement/control/empty.js +0 -1
  101. package/api/statement/control/empty.js.map +1 -1
  102. package/api/statement/control/if.d.ts +0 -2
  103. package/api/statement/control/if.js +0 -5
  104. package/api/statement/control/if.js.map +1 -1
  105. package/api/statement/control/switch.d.ts +0 -3
  106. package/api/statement/control/switch.js +0 -8
  107. package/api/statement/control/switch.js.map +1 -1
  108. package/api/statement/control/terminate.d.ts +0 -3
  109. package/api/statement/control/terminate.js +0 -4
  110. package/api/statement/control/terminate.js.map +1 -1
  111. package/api/statement/declarations/declares.d.ts +1 -4
  112. package/api/statement/declarations/declares.js +0 -6
  113. package/api/statement/declarations/declares.js.map +1 -1
  114. package/api/statement/iterations/for.d.ts +1 -6
  115. package/api/statement/iterations/for.js +0 -18
  116. package/api/statement/iterations/for.js.map +1 -1
  117. package/api/statement/iterations/while.d.ts +0 -3
  118. package/api/statement/iterations/while.js +0 -8
  119. package/api/statement/iterations/while.js.map +1 -1
  120. package/package.json +2 -2
  121. package/scope/scope.d.ts +6 -22
  122. package/scope/scope.js +12 -59
  123. package/scope/scope.js.map +1 -1
  124. package/scope/stack.d.ts +15 -3
  125. package/scope/stack.js +26 -9
  126. package/scope/stack.js.map +1 -1
  127. package/v8/inline.d.ts +3 -1
  128. package/v8/inline.js +29 -16
  129. package/v8/inline.js.map +1 -1
  130. package/v8/nodes.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/control/switch.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport type {\n\tNodeDeserializer, ExpressionNode,\n\tExpressionEventPath, VisitNodeType\n} from '../../expression.js';\nimport type { Scope } from '../../../scope/scope.js';\nimport type { Stack } from '../../../scope/stack.js';\nimport { AbstractExpressionNode } from '../../abstract.js';\nimport { Deserializer } from '../../deserialize/deserialize.js';\nimport { TerminateReturnType } from './terminate.js';\nimport { Identifier } from '../../definition/values.js';\n\n\n@Deserializer('SwitchCase')\nexport class SwitchCase extends AbstractExpressionNode {\n\tstatic fromJSON(node: SwitchCase, deserializer: NodeDeserializer): SwitchCase {\n\t\treturn new SwitchCase(\n\t\t\tdeserializer(node.test),\n\t\t\tdeserializer(node.consequent)\n\t\t);\n\t}\n\tstatic visit(node: SwitchCase, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.test);\n\t\tvisitNode(node.consequent);\n\t}\n\tconstructor(protected test: ExpressionNode, protected consequent: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetTest() {\n\t\treturn this.test;\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.consequent.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`SwitchCase#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\treturn this.consequent.get(stack);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.test.dependency(computed).concat(this.consequent.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.test.dependencyPath(computed).concat(this.consequent.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\treturn `case ${this.test.toString()}: ${this.consequent.toString()};`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\ttest: this.test.toJSON(),\n\t\t\tconsequent: this.consequent.toJSON()\n\t\t};\n\t}\n}\n\n@Deserializer('default')\nexport class DefaultExpression extends SwitchCase {\n\tstatic DefaultNode = Object.freeze(new Identifier('default')) as Identifier;\n\tstatic fromJSON(node: DefaultExpression, deserializer: NodeDeserializer): DefaultExpression {\n\t\treturn new DefaultExpression(deserializer(node.consequent));\n\t}\n\tstatic visit(node: DefaultExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.consequent);\n\t}\n\tconstructor(block: ExpressionNode) {\n\t\tsuper(DefaultExpression.DefaultNode, block);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.consequent.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.consequent.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `default: ${this.consequent.toString()};`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tconsequent: this.consequent.toJSON()\n\t\t};\n\t}\n}\n\n/**\n * The switch statement evaluates an expression, matching the expression's value to a case clause,\n * and executes statements associated with that case,\n * as well as statements in cases that follow the matching case.\n * \n */\n@Deserializer('SwitchStatement')\nexport class SwitchStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: SwitchStatement, deserializer: NodeDeserializer): SwitchStatement {\n\t\treturn new SwitchStatement(\n\t\t\tdeserializer(node.discriminant),\n\t\t\tnode.cases.map(deserializer) as SwitchCase[]\n\t\t);\n\t}\n\tstatic visit(node: SwitchStatement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.discriminant);\n\t\tnode.cases.forEach(visitNode);\n\t}\n\tconstructor(private discriminant: ExpressionNode, private cases: SwitchCase[]) {\n\t\tsuper();\n\t}\n\tgetDiscriminant() {\n\t\treturn this.discriminant;\n\t}\n\tgetCases() {\n\t\treturn this.cases;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.discriminant.shareVariables(scopeList);\n\t\tthis.cases.forEach(item => item.shareVariables(scopeList));\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`SwitchStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\t// need to fix statements execution and support default case\n\t\t// stack = stack.newStack();\n\t\tconst result = this.discriminant.get(stack);\n\t\tconst values = this.cases.map(item => item.getTest().get(stack));\n\t\tlet startIndex = values.findIndex(item => result === item);\n\t\tif (startIndex === -1) {\n\t\t\t// search for default statement\n\t\t\tstartIndex = this.cases.findIndex(item => item instanceof DefaultExpression);\n\t\t\tif (startIndex === -1) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tconst caseBlock = stack.pushBlockScope();\n\t\tfor (let index = startIndex; index < this.cases.length; index++) {\n\t\t\tconst returnValue = this.cases[index].get(stack);\n\t\t\tif (result instanceof TerminateReturnType) {\n\t\t\t\tif (result.type === 'continue') {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tstack.clearTo(caseBlock);\n\t\treturn void 0;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.discriminant.dependency(computed).concat(this.cases.flatMap(expCase => expCase.dependency(computed)));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.discriminant.dependencyPath(computed).concat(this.cases.flatMap(expCase => expCase.dependencyPath(computed)));\n\t}\n\ttoString(): string {\n\t\treturn `switch (${this.discriminant.toString()}) {${this.cases.map(item => item.toString())}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tdiscriminant: this.discriminant.toJSON(),\n\t\t\tcases: this.cases.map(item => item.toJSON())\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/control/switch.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport type {\n\tNodeDeserializer, ExpressionNode,\n\tExpressionEventPath, VisitNodeType\n} from '../../expression.js';\nimport type { Stack } from '../../../scope/stack.js';\nimport { AbstractExpressionNode } from '../../abstract.js';\nimport { Deserializer } from '../../deserialize/deserialize.js';\nimport { TerminateReturnType } from './terminate.js';\nimport { Identifier } from '../../definition/values.js';\n\n\n@Deserializer('SwitchCase')\nexport class SwitchCase extends AbstractExpressionNode {\n\tstatic fromJSON(node: SwitchCase, deserializer: NodeDeserializer): SwitchCase {\n\t\treturn new SwitchCase(\n\t\t\tdeserializer(node.test),\n\t\t\tdeserializer(node.consequent)\n\t\t);\n\t}\n\tstatic visit(node: SwitchCase, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.test);\n\t\tvisitNode(node.consequent);\n\t}\n\tconstructor(protected test: ExpressionNode, protected consequent: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetTest() {\n\t\treturn this.test;\n\t}\n\tgetConsequent() {\n\t\treturn this.consequent;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`SwitchCase#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\treturn this.consequent.get(stack);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.test.dependency(computed).concat(this.consequent.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.test.dependencyPath(computed).concat(this.consequent.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\treturn `case ${this.test.toString()}: ${this.consequent.toString()};`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\ttest: this.test.toJSON(),\n\t\t\tconsequent: this.consequent.toJSON()\n\t\t};\n\t}\n}\n\n@Deserializer('default')\nexport class DefaultExpression extends SwitchCase {\n\tstatic DefaultNode = Object.freeze(new Identifier('default')) as Identifier;\n\tstatic fromJSON(node: DefaultExpression, deserializer: NodeDeserializer): DefaultExpression {\n\t\treturn new DefaultExpression(deserializer(node.consequent));\n\t}\n\tstatic visit(node: DefaultExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.consequent);\n\t}\n\tconstructor(block: ExpressionNode) {\n\t\tsuper(DefaultExpression.DefaultNode, block);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.consequent.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.consequent.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `default: ${this.consequent.toString()};`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tconsequent: this.consequent.toJSON()\n\t\t};\n\t}\n}\n\n/**\n * The switch statement evaluates an expression, matching the expression's value to a case clause,\n * and executes statements associated with that case,\n * as well as statements in cases that follow the matching case.\n * \n */\n@Deserializer('SwitchStatement')\nexport class SwitchStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: SwitchStatement, deserializer: NodeDeserializer): SwitchStatement {\n\t\treturn new SwitchStatement(\n\t\t\tdeserializer(node.discriminant),\n\t\t\tnode.cases.map(deserializer) as SwitchCase[]\n\t\t);\n\t}\n\tstatic visit(node: SwitchStatement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.discriminant);\n\t\tnode.cases.forEach(visitNode);\n\t}\n\tconstructor(private discriminant: ExpressionNode, private cases: SwitchCase[]) {\n\t\tsuper();\n\t}\n\tgetDiscriminant() {\n\t\treturn this.discriminant;\n\t}\n\tgetCases() {\n\t\treturn this.cases;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`SwitchStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\t// need to fix statements execution and support default case\n\t\t// stack = stack.newStack();\n\t\tconst result = this.discriminant.get(stack);\n\t\tconst values = this.cases.map(item => item.getTest().get(stack));\n\t\tlet startIndex = values.findIndex(item => result === item);\n\t\tif (startIndex === -1) {\n\t\t\t// search for default statement\n\t\t\tstartIndex = this.cases.findIndex(item => item instanceof DefaultExpression);\n\t\t\tif (startIndex === -1) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tconst caseBlock = stack.pushBlockScope();\n\t\tfor (let index = startIndex; index < this.cases.length; index++) {\n\t\t\tconst returnValue = this.cases[index].get(stack);\n\t\t\tif (result instanceof TerminateReturnType) {\n\t\t\t\tif (result.type === 'continue') {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tstack.clearTo(caseBlock);\n\t\treturn void 0;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.discriminant.dependency(computed).concat(this.cases.flatMap(expCase => expCase.dependency(computed)));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.discriminant.dependencyPath(computed).concat(this.cases.flatMap(expCase => expCase.dependencyPath(computed)));\n\t}\n\ttoString(): string {\n\t\treturn `switch (${this.discriminant.toString()}) {${this.cases.map(item => item.toString())}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tdiscriminant: this.discriminant.toJSON(),\n\t\t\tcases: this.cases.map(item => item.toJSON())\n\t\t};\n\t}\n}\n"]}
@@ -1,5 +1,4 @@
1
1
  import type { ExpressionEventPath, ExpressionNode, NodeDeserializer, VisitNodeType } from '../../expression.js';
2
- import type { Scope } from '../../../scope/scope.js';
3
2
  import type { Stack } from '../../../scope/stack.js';
4
3
  import { AbstractExpressionNode } from '../../abstract.js';
5
4
  import { Identifier } from '../../definition/values.js';
@@ -21,7 +20,6 @@ declare abstract class TerminateStatement extends AbstractExpressionNode {
21
20
  protected label?: Identifier | undefined;
22
21
  constructor(label?: Identifier | undefined);
23
22
  getLabel(): void;
24
- shareVariables(scopeList: Scope<any>[]): void;
25
23
  set(stack: Stack, value: any): void;
26
24
  get(stack: Stack): TerminateReturnType;
27
25
  dependency(computed?: true): ExpressionNode[];
@@ -50,7 +48,6 @@ export declare class LabeledStatement extends AbstractExpressionNode {
50
48
  constructor(label: Identifier, body: ExpressionNode);
51
49
  getLabel(): Identifier;
52
50
  getBody(): ExpressionNode;
53
- shareVariables(scopeList: Scope<any>[]): void;
54
51
  set(stack: Stack, value: any): void;
55
52
  get(stack: Stack): any;
56
53
  dependency(computed?: true | undefined): ExpressionNode[];
@@ -26,7 +26,6 @@ class TerminateStatement extends AbstractExpressionNode {
26
26
  getLabel() {
27
27
  this.label;
28
28
  }
29
- shareVariables(scopeList) { }
30
29
  set(stack, value) {
31
30
  throw new Error(`TerminateStatement#set() has no implementation.`);
32
31
  }
@@ -101,9 +100,6 @@ let LabeledStatement = LabeledStatement_1 = class LabeledStatement extends Abstr
101
100
  getBody() {
102
101
  return this.body;
103
102
  }
104
- shareVariables(scopeList) {
105
- this.body.shareVariables(scopeList);
106
- }
107
103
  set(stack, value) {
108
104
  throw new Error('LabeledStatement#set() not implemented.');
109
105
  }
@@ -1 +1 @@
1
- {"version":3,"file":"terminate.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/control/terminate.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ExpressionEventPath, ExpressionNode, NodeDeserializer, VisitNodeType } 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 { Identifier } from '../../definition/values.js';\n\nexport type TerminateType = 'break' | 'continue';\n\nexport class TerminateReturnType {\n\tconstructor(public type: TerminateType, public label?: string) { }\n};\n\n\n\n/**\n * The break statement terminates the current loop, switch, or label statement\n * and transfers program control to the statement following the terminated statement.\n * \n * The continue statement terminates execution of the statements in the current iteration of the current or labeled loop,\n * and continues execution of the loop with the next iteration.\n *\n */\nabstract class TerminateStatement extends AbstractExpressionNode {\n\n\tconstructor(protected label?: Identifier) {\n\t\tsuper();\n\t}\n\tgetLabel() {\n\t\tthis.label;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`TerminateStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack): TerminateReturnType {\n\t\treturn new TerminateReturnType(this.getType(), this.label?.get(stack));\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn [];\n\t}\n\ttoString(): string {\n\t\treturn `${this.getType()}${this.label ? ` ${this.label.toString()}` : ''};`;\n\t}\n\ttoJson(): object {\n\t\treturn { label: this.label?.toJSON() };\n\t}\n\n\tabstract getType(): TerminateType;\n}\n\n@Deserializer('BreakStatement')\nexport class BreakStatement extends TerminateStatement {\n\tstatic readonly BREAK_INSTANCE = Object.freeze(new BreakStatement()) as BreakStatement;\n\tstatic fromJSON(node: BreakStatement, deserializer: NodeDeserializer): BreakStatement {\n\t\treturn node.label\n\t\t\t? new BreakStatement(deserializer(node.label) as Identifier)\n\t\t\t: BreakStatement.BREAK_INSTANCE;\n\t}\n\tstatic visit(node: BreakStatement, visitNode: VisitNodeType): void {\n\t\tnode.label && visitNode(node.label);\n\t}\n\tgetType(): 'break' {\n\t\treturn 'break';\n\t}\n}\n\n@Deserializer('ContinueStatement')\nexport class ContinueStatement extends TerminateStatement {\n\tstatic readonly CONTINUE_INSTANCE = Object.freeze(new ContinueStatement()) as ContinueStatement;\n\tstatic fromJSON(node: ContinueStatement, deserializer: NodeDeserializer): ContinueStatement {\n\n\t\treturn node.label\n\t\t\t? new ContinueStatement(deserializer(node.label) as Identifier)\n\t\t\t: ContinueStatement.CONTINUE_INSTANCE;\n\t}\n\tstatic visit(node: ContinueStatement, visitNode: VisitNodeType): void {\n\t\tnode.label && visitNode(node.label);\n\t}\n\tgetType(): 'continue' {\n\t\treturn 'continue';\n\t}\n}\n\n@Deserializer('LabeledStatement')\nexport class LabeledStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: LabeledStatement, deserializer: NodeDeserializer): LabeledStatement {\n\t\treturn new LabeledStatement(\n\t\t\tdeserializer(node.label) as Identifier,\n\t\t\tdeserializer(node.body),\n\t\t);\n\t}\n\tstatic visit(node: LabeledStatement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.label);\n\t\tvisitNode(node.body);\n\t}\n\tconstructor(private label: Identifier, private body: ExpressionNode) {\n\t\tsuper();\n\t}\n\n\tgetLabel() {\n\t\treturn this.label;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.body.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('LabeledStatement#set() not implemented.');\n\t}\n\tget(stack: Stack) {\n\t\treturn this.body.get(stack);\n\t}\n\tdependency(computed?: true | undefined): ExpressionNode[] {\n\t\treturn this.body.dependency(computed);\n\t}\n\tdependencyPath(computed?: true | undefined): ExpressionEventPath[] {\n\t\treturn this.body.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `${this.label.toString()}:\\n${this.body.toString()}`;\n\t}\n\ttoJson() {\n\t\treturn {\n\t\t\tlabel: this.label.toJSON(),\n\t\t\tbody: this.body.toJSON()\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"terminate.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/control/terminate.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ExpressionEventPath, ExpressionNode, NodeDeserializer, VisitNodeType } from '../../expression.js';\nimport type { Stack } from '../../../scope/stack.js';\nimport { AbstractExpressionNode } from '../../abstract.js';\nimport { Deserializer } from '../../deserialize/deserialize.js';\nimport { Identifier } from '../../definition/values.js';\n\nexport type TerminateType = 'break' | 'continue';\n\nexport class TerminateReturnType {\n\tconstructor(public type: TerminateType, public label?: string) { }\n};\n\n\n\n/**\n * The break statement terminates the current loop, switch, or label statement\n * and transfers program control to the statement following the terminated statement.\n * \n * The continue statement terminates execution of the statements in the current iteration of the current or labeled loop,\n * and continues execution of the loop with the next iteration.\n *\n */\nabstract class TerminateStatement extends AbstractExpressionNode {\n\n\tconstructor(protected label?: Identifier) {\n\t\tsuper();\n\t}\n\tgetLabel() {\n\t\tthis.label;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`TerminateStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack): TerminateReturnType {\n\t\treturn new TerminateReturnType(this.getType(), this.label?.get(stack));\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn [];\n\t}\n\ttoString(): string {\n\t\treturn `${this.getType()}${this.label ? ` ${this.label.toString()}` : ''};`;\n\t}\n\ttoJson(): object {\n\t\treturn { label: this.label?.toJSON() };\n\t}\n\n\tabstract getType(): TerminateType;\n}\n\n@Deserializer('BreakStatement')\nexport class BreakStatement extends TerminateStatement {\n\tstatic readonly BREAK_INSTANCE = Object.freeze(new BreakStatement()) as BreakStatement;\n\tstatic fromJSON(node: BreakStatement, deserializer: NodeDeserializer): BreakStatement {\n\t\treturn node.label\n\t\t\t? new BreakStatement(deserializer(node.label) as Identifier)\n\t\t\t: BreakStatement.BREAK_INSTANCE;\n\t}\n\tstatic visit(node: BreakStatement, visitNode: VisitNodeType): void {\n\t\tnode.label && visitNode(node.label);\n\t}\n\tgetType(): 'break' {\n\t\treturn 'break';\n\t}\n}\n\n@Deserializer('ContinueStatement')\nexport class ContinueStatement extends TerminateStatement {\n\tstatic readonly CONTINUE_INSTANCE = Object.freeze(new ContinueStatement()) as ContinueStatement;\n\tstatic fromJSON(node: ContinueStatement, deserializer: NodeDeserializer): ContinueStatement {\n\n\t\treturn node.label\n\t\t\t? new ContinueStatement(deserializer(node.label) as Identifier)\n\t\t\t: ContinueStatement.CONTINUE_INSTANCE;\n\t}\n\tstatic visit(node: ContinueStatement, visitNode: VisitNodeType): void {\n\t\tnode.label && visitNode(node.label);\n\t}\n\tgetType(): 'continue' {\n\t\treturn 'continue';\n\t}\n}\n\n@Deserializer('LabeledStatement')\nexport class LabeledStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: LabeledStatement, deserializer: NodeDeserializer): LabeledStatement {\n\t\treturn new LabeledStatement(\n\t\t\tdeserializer(node.label) as Identifier,\n\t\t\tdeserializer(node.body),\n\t\t);\n\t}\n\tstatic visit(node: LabeledStatement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.label);\n\t\tvisitNode(node.body);\n\t}\n\tconstructor(private label: Identifier, private body: ExpressionNode) {\n\t\tsuper();\n\t}\n\n\tgetLabel() {\n\t\treturn this.label;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('LabeledStatement#set() not implemented.');\n\t}\n\tget(stack: Stack) {\n\t\treturn this.body.get(stack);\n\t}\n\tdependency(computed?: true | undefined): ExpressionNode[] {\n\t\treturn this.body.dependency(computed);\n\t}\n\tdependencyPath(computed?: true | undefined): ExpressionEventPath[] {\n\t\treturn this.body.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `${this.label.toString()}:\\n${this.body.toString()}`;\n\t}\n\ttoJson() {\n\t\treturn {\n\t\t\tlabel: this.label.toJSON(),\n\t\t\tbody: this.body.toJSON()\n\t\t};\n\t}\n}\n"]}
@@ -1,5 +1,4 @@
1
1
  import type { NodeDeserializer, ExpressionNode, DeclarationExpression, ExpressionEventPath, VisitNodeType } from '../../expression.js';
2
- import type { Scope } from '../../../scope/scope.js';
3
2
  import type { Stack } from '../../../scope/stack.js';
4
3
  import { AbstractExpressionNode } from '../../abstract.js';
5
4
  export declare class VariableDeclarator extends AbstractExpressionNode implements DeclarationExpression {
@@ -10,7 +9,6 @@ export declare class VariableDeclarator extends AbstractExpressionNode implement
10
9
  constructor(id: DeclarationExpression, init?: ExpressionNode | undefined);
11
10
  getId(): DeclarationExpression;
12
11
  getInit(): ExpressionNode | undefined;
13
- shareVariables(scopeList: Scope<any>[]): void;
14
12
  set(stack: Stack, value: any): void;
15
13
  get(stack: Stack): void;
16
14
  declareVariable(stack: Stack, propertyValue?: any): void;
@@ -30,8 +28,7 @@ export declare class VariableDeclarationNode extends AbstractExpressionNode impl
30
28
  static visit(node: VariableDeclarationNode, visitNode: VisitNodeType): void;
31
29
  constructor(declarations: VariableDeclarator[], kind: 'var' | 'let' | 'const');
32
30
  getDeclarations(): VariableDeclarator[];
33
- getKind(): "let" | "var" | "const";
34
- shareVariables(scopeList: Scope<any>[]): void;
31
+ getKind(): "const" | "let" | "var";
35
32
  set(stack: Stack, value: any): void;
36
33
  get(stack: Stack): void;
37
34
  getDeclarationName(): string;
@@ -21,9 +21,6 @@ let VariableDeclarator = VariableDeclarator_1 = class VariableDeclarator extends
21
21
  getInit() {
22
22
  return this.init;
23
23
  }
24
- shareVariables(scopeList) {
25
- this.init?.shareVariables(scopeList);
26
- }
27
24
  set(stack, value) {
28
25
  throw new Error(`VariableNode#set() has no implementation.`);
29
26
  }
@@ -88,9 +85,6 @@ let VariableDeclarationNode = VariableDeclarationNode_1 = class VariableDeclarat
88
85
  getKind() {
89
86
  return this.kind;
90
87
  }
91
- shareVariables(scopeList) {
92
- this.declarations.forEach(declaration => declaration.shareVariables(scopeList));
93
- }
94
88
  set(stack, value) {
95
89
  if (Array.isArray(value)) {
96
90
  throw new Error(`VariableDeclarationNode#set() has no implementation.`);
@@ -1 +1 @@
1
- {"version":3,"file":"declares.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/declarations/declares.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport type {\n\tNodeDeserializer, ExpressionNode, DeclarationExpression,\n\tExpressionEventPath, VisitNodeType\n} from '../../expression.js';\nimport type { Scope } from '../../../scope/scope.js';\nimport type { Stack } from '../../../scope/stack.js';\nimport { AbstractExpressionNode, AwaitPromise } from '../../abstract.js';\nimport { Deserializer } from '../../deserialize/deserialize.js';\n\n@Deserializer('VariableDeclarator')\nexport class VariableDeclarator extends AbstractExpressionNode implements DeclarationExpression {\n\tstatic fromJSON(node: VariableDeclarator, deserializer: NodeDeserializer): VariableDeclarator {\n\t\treturn new VariableDeclarator(\n\t\t\tdeserializer(node.id) as DeclarationExpression,\n\t\t\tnode.init ? deserializer(node.init) : void 0\n\t\t);\n\t}\n\tstatic visit(node: VariableDeclarator, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.id);\n\t\tnode.init && visitNode(node.init);\n\t}\n\tconstructor(public id: DeclarationExpression, public init?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetId() {\n\t\treturn this.id;\n\t}\n\tgetInit() {\n\t\treturn this.init;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.init?.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`VariableNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tthis.declareVariable(stack);\n\t}\n\tdeclareVariable(stack: Stack, propertyValue?: any) {\n\t\tif (propertyValue !== undefined) {\n\t\t\tthis.id.declareVariable(stack, propertyValue);\n\t\t\treturn;\n\t\t}\n\t\tconst value = this.init?.get(stack);\n\t\tif (value instanceof AwaitPromise) {\n\t\t\tvalue.node = this.id;\n\t\t\tvalue.declareVariable = true;\n\t\t\tvalue.node.declareVariable(stack);\n\t\t\tstack.resolveAwait(value);\n\t\t} else {\n\t\t\tthis.id.declareVariable(stack, value);\n\t\t}\n\t}\n\tgetDeclarationName(): string {\n\t\treturn this.id.getDeclarationName!();\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.init?.dependency() || [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.init?.dependencyPath(computed) || [];\n\t}\n\ttoString() {\n\t\treturn `${this.id.toString()}${this.init ? ` = ${this.init.toString()}` : ''}`;\n\t}\n\ttoJson() {\n\t\treturn {\n\t\t\tid: this.id.toJSON(),\n\t\t\tinit: this.init?.toJSON()\n\t\t};\n\t}\n}\n\n@Deserializer('VariableDeclaration')\nexport class VariableDeclarationNode extends AbstractExpressionNode implements DeclarationExpression {\n\tstatic fromJSON(node: VariableDeclarationNode, deserializer: NodeDeserializer): VariableDeclarationNode {\n\t\treturn new VariableDeclarationNode(\n\t\t\tnode.declarations.map(deserializer) as VariableDeclarator[],\n\t\t\tnode.kind\n\t\t);\n\t}\n\tstatic visit(node: VariableDeclarationNode, visitNode: VisitNodeType): void {\n\t\tnode.declarations.forEach(visitNode);\n\t}\n\tconstructor(protected declarations: VariableDeclarator[], protected kind: 'var' | 'let' | 'const') {\n\t\tsuper();\n\t}\n\tgetDeclarations() {\n\t\treturn this.declarations;\n\t}\n\tgetKind() {\n\t\treturn this.kind;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.declarations.forEach(declaration => declaration.shareVariables(scopeList));\n\t}\n\tset(stack: Stack, value: any) {\n\t\tif (Array.isArray(value)) {\n\t\t\tthrow new Error(`VariableDeclarationNode#set() has no implementation.`);\n\t\t}\n\t\tthis.declarations[0].id.set(stack, value);\n\t}\n\tget(stack: Stack) {\n\t\tfor (const item of this.declarations) {\n\t\t\titem.declareVariable(stack);\n\t\t}\n\t}\n\tgetDeclarationName(): string {\n\t\treturn this.declarations[0].getDeclarationName!();\n\t}\n\tdeclareVariable(stack: Stack, propertyValue: any): any {\n\t\tthis.declarations[0].declareVariable(stack, propertyValue);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.declarations.flatMap(declareVariable => declareVariable.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.declarations.flatMap(declareVariable => declareVariable.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\treturn `${this.kind} ${this.declarations.map(v => v.toString()).join(', ')};`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tkind: this.kind,\n\t\t\tdeclarations: this.declarations.map(v => v.toJSON()),\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"declares.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/declarations/declares.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport type {\n\tNodeDeserializer, ExpressionNode, DeclarationExpression,\n\tExpressionEventPath, VisitNodeType\n} from '../../expression.js';\nimport type { Stack } from '../../../scope/stack.js';\nimport { AbstractExpressionNode, AwaitPromise } from '../../abstract.js';\nimport { Deserializer } from '../../deserialize/deserialize.js';\n\n@Deserializer('VariableDeclarator')\nexport class VariableDeclarator extends AbstractExpressionNode implements DeclarationExpression {\n\tstatic fromJSON(node: VariableDeclarator, deserializer: NodeDeserializer): VariableDeclarator {\n\t\treturn new VariableDeclarator(\n\t\t\tdeserializer(node.id) as DeclarationExpression,\n\t\t\tnode.init ? deserializer(node.init) : void 0\n\t\t);\n\t}\n\tstatic visit(node: VariableDeclarator, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.id);\n\t\tnode.init && visitNode(node.init);\n\t}\n\tconstructor(public id: DeclarationExpression, public init?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetId() {\n\t\treturn this.id;\n\t}\n\tgetInit() {\n\t\treturn this.init;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`VariableNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tthis.declareVariable(stack);\n\t}\n\tdeclareVariable(stack: Stack, propertyValue?: any) {\n\t\tif (propertyValue !== undefined) {\n\t\t\tthis.id.declareVariable(stack, propertyValue);\n\t\t\treturn;\n\t\t}\n\t\tconst value = this.init?.get(stack);\n\t\tif (value instanceof AwaitPromise) {\n\t\t\tvalue.node = this.id;\n\t\t\tvalue.declareVariable = true;\n\t\t\tvalue.node.declareVariable(stack);\n\t\t\tstack.resolveAwait(value);\n\t\t} else {\n\t\t\tthis.id.declareVariable(stack, value);\n\t\t}\n\t}\n\tgetDeclarationName(): string {\n\t\treturn this.id.getDeclarationName!();\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.init?.dependency() || [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.init?.dependencyPath(computed) || [];\n\t}\n\ttoString() {\n\t\treturn `${this.id.toString()}${this.init ? ` = ${this.init.toString()}` : ''}`;\n\t}\n\ttoJson() {\n\t\treturn {\n\t\t\tid: this.id.toJSON(),\n\t\t\tinit: this.init?.toJSON()\n\t\t};\n\t}\n}\n\n@Deserializer('VariableDeclaration')\nexport class VariableDeclarationNode extends AbstractExpressionNode implements DeclarationExpression {\n\tstatic fromJSON(node: VariableDeclarationNode, deserializer: NodeDeserializer): VariableDeclarationNode {\n\t\treturn new VariableDeclarationNode(\n\t\t\tnode.declarations.map(deserializer) as VariableDeclarator[],\n\t\t\tnode.kind\n\t\t);\n\t}\n\tstatic visit(node: VariableDeclarationNode, visitNode: VisitNodeType): void {\n\t\tnode.declarations.forEach(visitNode);\n\t}\n\tconstructor(protected declarations: VariableDeclarator[], protected kind: 'var' | 'let' | 'const') {\n\t\tsuper();\n\t}\n\tgetDeclarations() {\n\t\treturn this.declarations;\n\t}\n\tgetKind() {\n\t\treturn this.kind;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tif (Array.isArray(value)) {\n\t\t\tthrow new Error(`VariableDeclarationNode#set() has no implementation.`);\n\t\t}\n\t\tthis.declarations[0].id.set(stack, value);\n\t}\n\tget(stack: Stack) {\n\t\tfor (const item of this.declarations) {\n\t\t\titem.declareVariable(stack);\n\t\t}\n\t}\n\tgetDeclarationName(): string {\n\t\treturn this.declarations[0].getDeclarationName!();\n\t}\n\tdeclareVariable(stack: Stack, propertyValue: any): any {\n\t\tthis.declarations[0].declareVariable(stack, propertyValue);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.declarations.flatMap(declareVariable => declareVariable.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.declarations.flatMap(declareVariable => declareVariable.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\treturn `${this.kind} ${this.declarations.map(v => v.toString()).join(', ')};`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tkind: this.kind,\n\t\t\tdeclarations: this.declarations.map(v => v.toJSON()),\n\t\t};\n\t}\n}\n"]}
@@ -1,5 +1,4 @@
1
1
  import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../../expression.js';
2
- import type { Scope } from '../../../scope/scope.js';
3
2
  import type { Stack } from '../../../scope/stack.js';
4
3
  import { AbstractExpressionNode, ReturnValue } from '../../abstract.js';
5
4
  import { VariableDeclarationNode } from '../declarations/declares.js';
@@ -22,7 +21,6 @@ export declare class ForNode extends AbstractExpressionNode {
22
21
  getInit(): ExpressionNode | undefined;
23
22
  getTest(): ExpressionNode | undefined;
24
23
  getUpdate(): ExpressionNode | undefined;
25
- shareVariables(scopeList: Scope<any>[]): void;
26
24
  set(stack: Stack, value: any): void;
27
25
  get(stack: Stack): ReturnValue | undefined;
28
26
  dependency(computed?: true): ExpressionNode[];
@@ -41,7 +39,6 @@ export declare class ForOfNode extends AbstractExpressionNode {
41
39
  getLeft(): ForDeclaration;
42
40
  getRight(): ExpressionNode;
43
41
  getBody(): ExpressionNode;
44
- shareVariables(scopeList: Scope<any>[]): void;
45
42
  set(stack: Stack, value: any): void;
46
43
  get(stack: Stack): ReturnValue | undefined;
47
44
  dependency(computed?: true): ExpressionNode[];
@@ -56,10 +53,9 @@ export declare class ForInNode extends AbstractExpressionNode {
56
53
  static fromJSON(node: ForInNode, deserializer: NodeDeserializer): ForInNode;
57
54
  static visit(node: ForInNode, visitNode: VisitNodeType): void;
58
55
  constructor(left: VariableDeclarationNode | ObjectPattern | ArrayPattern, right: ExpressionNode, body: ExpressionNode);
59
- getLeft(): ArrayPattern | ObjectPattern | VariableDeclarationNode;
56
+ getLeft(): ObjectPattern | ArrayPattern | VariableDeclarationNode;
60
57
  getRight(): ExpressionNode;
61
58
  getBody(): ExpressionNode;
62
- shareVariables(scopeList: Scope<any>[]): void;
63
59
  set(stack: Stack, value: any): void;
64
60
  get(stack: Stack): ReturnValue | undefined;
65
61
  dependency(computed?: true): ExpressionNode[];
@@ -77,7 +73,6 @@ export declare class ForAwaitOfNode extends AbstractExpressionNode {
77
73
  getLeft(): ForDeclaration;
78
74
  getRight(): ExpressionNode;
79
75
  getBody(): ExpressionNode;
80
- shareVariables(scopeList: Scope<any>[]): void;
81
76
  set(stack: Stack, value: any): void;
82
77
  get(stack: Stack): void;
83
78
  dependency(computed?: true): ExpressionNode[];
@@ -37,12 +37,6 @@ let ForNode = ForNode_1 = class ForNode extends AbstractExpressionNode {
37
37
  getUpdate() {
38
38
  return this.update;
39
39
  }
40
- shareVariables(scopeList) {
41
- this.init?.shareVariables(scopeList);
42
- this.test?.shareVariables(scopeList);
43
- this.update?.shareVariables(scopeList);
44
- this.body.shareVariables(scopeList);
45
- }
46
40
  set(stack, value) {
47
41
  throw new Error(`ForNode#set() has no implementation.`);
48
42
  }
@@ -123,10 +117,6 @@ let ForOfNode = ForOfNode_1 = class ForOfNode extends AbstractExpressionNode {
123
117
  getBody() {
124
118
  return this.body;
125
119
  }
126
- shareVariables(scopeList) {
127
- this.right.shareVariables(scopeList);
128
- this.body.shareVariables(scopeList);
129
- }
130
120
  set(stack, value) {
131
121
  throw new Error(`ForOfNode#set() has no implementation.`);
132
122
  }
@@ -201,10 +191,6 @@ let ForInNode = ForInNode_1 = class ForInNode extends AbstractExpressionNode {
201
191
  getBody() {
202
192
  return this.body;
203
193
  }
204
- shareVariables(scopeList) {
205
- this.right.shareVariables(scopeList);
206
- this.body.shareVariables(scopeList);
207
- }
208
194
  set(stack, value) {
209
195
  throw new Error(`ForOfNode#set() has no implementation.`);
210
196
  }
@@ -279,10 +265,6 @@ let ForAwaitOfNode = ForAwaitOfNode_1 = class ForAwaitOfNode extends AbstractExp
279
265
  getBody() {
280
266
  return this.body;
281
267
  }
282
- shareVariables(scopeList) {
283
- this.right.shareVariables(scopeList);
284
- this.body.shareVariables(scopeList);
285
- }
286
268
  set(stack, value) {
287
269
  throw new Error(`ForAwaitOfNode#set() has no implementation.`);
288
270
  }
@@ -1 +1 @@
1
- {"version":3,"file":"for.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/iterations/for.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode,\n\tExpressionEventPath, VisitNodeType\n} from '../../expression.js';\nimport type { Scope } from '../../../scope/scope.js';\nimport type { Stack } from '../../../scope/stack.js';\nimport { AbstractExpressionNode, ReturnValue } from '../../abstract.js';\nimport { Deserializer } from '../../deserialize/deserialize.js';\nimport { TerminateReturnType } from '../control/terminate.js';\nimport { VariableDeclarationNode } from '../declarations/declares.js';\nimport { ArrayPattern } from '../../definition/array.js';\nimport { ObjectPattern } from '../../definition/object.js';\n\n\n/**\n * The if statement executes a statement if a specified condition is truthy.\n * If the condition is falsy, another statement can be executed.\n * \n */\n@Deserializer('ForStatement')\nexport class ForNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: ForNode, deserializer: NodeDeserializer): ForNode {\n\t\treturn new ForNode(\n\t\t\tdeserializer(node.body),\n\t\t\tnode.init && deserializer(node.init),\n\t\t\tnode.test && deserializer(node.test),\n\t\t\tnode.update && deserializer(node.update)\n\t\t);\n\t}\n\tstatic visit(node: ForNode, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.body);\n\t\tnode.init && visitNode(node.init);\n\t\tnode.test && visitNode(node.test);\n\t\tnode.update && visitNode(node.update);\n\t}\n\tconstructor(\n\t\tprivate body: ExpressionNode,\n\t\tprivate init?: ExpressionNode,\n\t\tprivate test?: ExpressionNode,\n\t\tprivate update?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tgetInit() {\n\t\treturn this.init;\n\t}\n\tgetTest() {\n\t\treturn this.test;\n\t}\n\tgetUpdate() {\n\t\treturn this.update;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.init?.shareVariables(scopeList);\n\t\tthis.test?.shareVariables(scopeList);\n\t\tthis.update?.shareVariables(scopeList);\n\t\tthis.body.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`ForNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst forBlock = stack.pushBlockScope();\n\t\tfor (this.init?.get(stack); this.test?.get(stack) ?? true; this.update?.get(stack)) {\n\t\t\tconst result = this.body.get(stack);\n\t\t\t// useless case, as it at the end of for statement\n\t\t\t// an array/block statement, should return last signal\n\t\t\tif (result instanceof TerminateReturnType) {\n\t\t\t\tif (result.type === 'continue') {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (result instanceof ReturnValue) {\n\t\t\t\tstack.clearTo(forBlock);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t\tstack.clearTo(forBlock);\n\t\treturn void 0;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\tlet dependency: ExpressionNode[] = this.body.dependency(computed);\n\t\tthis.init && (dependency = dependency.concat(this.init.dependency(computed)));\n\t\tthis.test && (dependency = dependency.concat(this.test.dependency(computed)));\n\t\tthis.update && (dependency = dependency.concat(this.update.dependency(computed)));\n\t\treturn dependency;\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\tlet dependencyPath: ExpressionEventPath[] = this.body.dependencyPath(computed);\n\t\tthis.init && (dependencyPath = dependencyPath.concat(this.init.dependencyPath(computed)));\n\t\tthis.test && (dependencyPath = dependencyPath.concat(this.test.dependencyPath(computed)));\n\t\tthis.update && (dependencyPath = dependencyPath.concat(this.update.dependencyPath(computed)));\n\t\treturn dependencyPath;\n\t}\n\ttoString(): string {\n\t\treturn `for (${this.init?.toString()};${this.test?.toString()};${this.init?.toString()}) ${this.body.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tbody: this.body.toJSON(),\n\t\t\tinit: this.init?.toJSON(),\n\t\t\ttest: this.test?.toJSON(),\n\t\t\tupdate: this.update?.toJSON(),\n\t\t};\n\t}\n}\n\nexport type ForDeclaration = VariableDeclarationNode | ObjectPattern | ArrayPattern;\n\n@Deserializer('ForOfStatement')\nexport class ForOfNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: ForOfNode, deserializer: NodeDeserializer): ForOfNode {\n\t\treturn new ForOfNode(\n\t\t\tdeserializer(node.left) as ForDeclaration,\n\t\t\tdeserializer(node.right),\n\t\t\tdeserializer(node.body)\n\t\t);\n\t}\n\tstatic visit(node: ForOfNode, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.left);\n\t\tvisitNode(node.right);\n\t\tvisitNode(node.body);\n\t}\n\tconstructor(\n\t\tprivate left: ForDeclaration,\n\t\tprivate right: ExpressionNode,\n\t\tprivate body: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetLeft() {\n\t\treturn this.left;\n\t}\n\tgetRight() {\n\t\treturn this.right;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.right.shareVariables(scopeList);\n\t\tthis.body.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`ForOfNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst iterable = <any[]>this.right.get(stack);\n\t\tfor (const iterator of iterable) {\n\t\t\tconst forBlock = stack.pushBlockScope();\n\t\t\tthis.left.declareVariable(stack, iterator);\n\t\t\tconst result = this.body.get(stack);\n\t\t\t// useless case, as it at the end of for statement\n\t\t\t// an array/block statement, should return last signal\n\t\t\tif (result instanceof TerminateReturnType) {\n\t\t\t\tif (result.type === 'continue') {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (result instanceof ReturnValue) {\n\t\t\t\tstack.clearTo(forBlock);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tstack.clearTo(forBlock);\n\t\t}\n\t\treturn void 0;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.right.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.right.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `for (${this.left?.toString()} of ${this.right.toString()}) ${this.body.toString()}`;\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\tbody: this.body.toJSON(),\n\t\t};\n\t}\n}\n\n@Deserializer('ForInStatement')\nexport class ForInNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: ForInNode, deserializer: NodeDeserializer): ForInNode {\n\t\treturn new ForInNode(\n\t\t\tdeserializer(node.left) as ForDeclaration,\n\t\t\tdeserializer(node.right),\n\t\t\tdeserializer(node.body)\n\t\t);\n\t}\n\tstatic visit(node: ForInNode, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.left);\n\t\tvisitNode(node.right);\n\t\tvisitNode(node.body);\n\t}\n\t// variable of iterable\n\tconstructor(\n\t\tprivate left: VariableDeclarationNode | ObjectPattern | ArrayPattern,\n\t\tprivate right: ExpressionNode,\n\t\tprivate body: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetLeft() {\n\t\treturn this.left;\n\t}\n\tgetRight() {\n\t\treturn this.right;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.right.shareVariables(scopeList);\n\t\tthis.body.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`ForOfNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst iterable = <object>this.right.get(stack);\n\t\tfor (const iterator in iterable) {\n\t\t\tconst forBlock = stack.pushBlockScope();\n\t\t\tthis.left.declareVariable(stack, iterator);\n\t\t\tconst result = this.body.get(stack);\n\t\t\t// useless case, as it at the end of for statement\n\t\t\t// an array/block statement, should return last signal\n\t\t\tif (result instanceof TerminateReturnType) {\n\t\t\t\tif (result.type === 'continue') {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (result instanceof ReturnValue) {\n\t\t\t\tstack.clearTo(forBlock);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tstack.clearTo(forBlock);\n\t\t}\n\t\treturn void 0;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.right.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.right.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `for (${this.left.toString()} in ${this.right.toString()}) ${this.body.toString()}`;\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\tbody: this.body.toJSON(),\n\t\t};\n\t}\n}\n\n@Deserializer('ForAwaitOfStatement')\nexport class ForAwaitOfNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: ForAwaitOfNode, deserializer: NodeDeserializer): ForAwaitOfNode {\n\t\treturn new ForAwaitOfNode(\n\t\t\tdeserializer(node.left) as ForDeclaration,\n\t\t\tdeserializer(node.right),\n\t\t\tdeserializer(node.body)\n\t\t);\n\t}\n\tstatic visit(node: ForAwaitOfNode, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.left);\n\t\tvisitNode(node.right);\n\t\tvisitNode(node.body);\n\t}\n\t// variable of iterable\n\tconstructor(\n\t\tprivate left: ForDeclaration,\n\t\tprivate right: ExpressionNode,\n\t\tprivate body: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetLeft() {\n\t\treturn this.left;\n\t}\n\tgetRight() {\n\t\treturn this.right;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.right.shareVariables(scopeList);\n\t\tthis.body.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`ForAwaitOfNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst iterable: AsyncIterable<any> = this.right.get(stack);\n\t\tconst forAwaitBody = (iterator: any): any => {\n\t\t\tconst forBlock = stack.pushBlockScope();\n\t\t\tthis.left.declareVariable(stack, iterator);\n\t\t\tconst result = this.body.get(stack);\n\t\t\tstack.clearTo(forBlock);\n\t\t\treturn result;\n\t\t};\n\t\tstack.forAwaitAsyncIterable = { iterable, forAwaitBody };\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.right.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.right.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `for (${this.left?.toString()} of ${this.right.toString()}) ${this.body.toString()}`;\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\tbody: this.body.toJSON(),\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"for.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/iterations/for.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode,\n\tExpressionEventPath, VisitNodeType\n} from '../../expression.js';\nimport type { Stack } from '../../../scope/stack.js';\nimport { AbstractExpressionNode, ReturnValue } from '../../abstract.js';\nimport { Deserializer } from '../../deserialize/deserialize.js';\nimport { TerminateReturnType } from '../control/terminate.js';\nimport { VariableDeclarationNode } from '../declarations/declares.js';\nimport { ArrayPattern } from '../../definition/array.js';\nimport { ObjectPattern } from '../../definition/object.js';\n\n\n/**\n * The if statement executes a statement if a specified condition is truthy.\n * If the condition is falsy, another statement can be executed.\n * \n */\n@Deserializer('ForStatement')\nexport class ForNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: ForNode, deserializer: NodeDeserializer): ForNode {\n\t\treturn new ForNode(\n\t\t\tdeserializer(node.body),\n\t\t\tnode.init && deserializer(node.init),\n\t\t\tnode.test && deserializer(node.test),\n\t\t\tnode.update && deserializer(node.update)\n\t\t);\n\t}\n\tstatic visit(node: ForNode, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.body);\n\t\tnode.init && visitNode(node.init);\n\t\tnode.test && visitNode(node.test);\n\t\tnode.update && visitNode(node.update);\n\t}\n\tconstructor(\n\t\tprivate body: ExpressionNode,\n\t\tprivate init?: ExpressionNode,\n\t\tprivate test?: ExpressionNode,\n\t\tprivate update?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tgetInit() {\n\t\treturn this.init;\n\t}\n\tgetTest() {\n\t\treturn this.test;\n\t}\n\tgetUpdate() {\n\t\treturn this.update;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`ForNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst forBlock = stack.pushBlockScope();\n\t\tfor (this.init?.get(stack); this.test?.get(stack) ?? true; this.update?.get(stack)) {\n\t\t\tconst result = this.body.get(stack);\n\t\t\t// useless case, as it at the end of for statement\n\t\t\t// an array/block statement, should return last signal\n\t\t\tif (result instanceof TerminateReturnType) {\n\t\t\t\tif (result.type === 'continue') {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (result instanceof ReturnValue) {\n\t\t\t\tstack.clearTo(forBlock);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t\tstack.clearTo(forBlock);\n\t\treturn void 0;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\tlet dependency: ExpressionNode[] = this.body.dependency(computed);\n\t\tthis.init && (dependency = dependency.concat(this.init.dependency(computed)));\n\t\tthis.test && (dependency = dependency.concat(this.test.dependency(computed)));\n\t\tthis.update && (dependency = dependency.concat(this.update.dependency(computed)));\n\t\treturn dependency;\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\tlet dependencyPath: ExpressionEventPath[] = this.body.dependencyPath(computed);\n\t\tthis.init && (dependencyPath = dependencyPath.concat(this.init.dependencyPath(computed)));\n\t\tthis.test && (dependencyPath = dependencyPath.concat(this.test.dependencyPath(computed)));\n\t\tthis.update && (dependencyPath = dependencyPath.concat(this.update.dependencyPath(computed)));\n\t\treturn dependencyPath;\n\t}\n\ttoString(): string {\n\t\treturn `for (${this.init?.toString()};${this.test?.toString()};${this.init?.toString()}) ${this.body.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tbody: this.body.toJSON(),\n\t\t\tinit: this.init?.toJSON(),\n\t\t\ttest: this.test?.toJSON(),\n\t\t\tupdate: this.update?.toJSON(),\n\t\t};\n\t}\n}\n\nexport type ForDeclaration = VariableDeclarationNode | ObjectPattern | ArrayPattern;\n\n@Deserializer('ForOfStatement')\nexport class ForOfNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: ForOfNode, deserializer: NodeDeserializer): ForOfNode {\n\t\treturn new ForOfNode(\n\t\t\tdeserializer(node.left) as ForDeclaration,\n\t\t\tdeserializer(node.right),\n\t\t\tdeserializer(node.body)\n\t\t);\n\t}\n\tstatic visit(node: ForOfNode, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.left);\n\t\tvisitNode(node.right);\n\t\tvisitNode(node.body);\n\t}\n\tconstructor(\n\t\tprivate left: ForDeclaration,\n\t\tprivate right: ExpressionNode,\n\t\tprivate body: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetLeft() {\n\t\treturn this.left;\n\t}\n\tgetRight() {\n\t\treturn this.right;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`ForOfNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst iterable = <any[]>this.right.get(stack);\n\t\tfor (const iterator of iterable) {\n\t\t\tconst forBlock = stack.pushBlockScope();\n\t\t\tthis.left.declareVariable(stack, iterator);\n\t\t\tconst result = this.body.get(stack);\n\t\t\t// useless case, as it at the end of for statement\n\t\t\t// an array/block statement, should return last signal\n\t\t\tif (result instanceof TerminateReturnType) {\n\t\t\t\tif (result.type === 'continue') {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (result instanceof ReturnValue) {\n\t\t\t\tstack.clearTo(forBlock);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tstack.clearTo(forBlock);\n\t\t}\n\t\treturn void 0;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.right.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.right.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `for (${this.left?.toString()} of ${this.right.toString()}) ${this.body.toString()}`;\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\tbody: this.body.toJSON(),\n\t\t};\n\t}\n}\n\n@Deserializer('ForInStatement')\nexport class ForInNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: ForInNode, deserializer: NodeDeserializer): ForInNode {\n\t\treturn new ForInNode(\n\t\t\tdeserializer(node.left) as ForDeclaration,\n\t\t\tdeserializer(node.right),\n\t\t\tdeserializer(node.body)\n\t\t);\n\t}\n\tstatic visit(node: ForInNode, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.left);\n\t\tvisitNode(node.right);\n\t\tvisitNode(node.body);\n\t}\n\t// variable of iterable\n\tconstructor(\n\t\tprivate left: VariableDeclarationNode | ObjectPattern | ArrayPattern,\n\t\tprivate right: ExpressionNode,\n\t\tprivate body: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetLeft() {\n\t\treturn this.left;\n\t}\n\tgetRight() {\n\t\treturn this.right;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`ForOfNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst iterable = <object>this.right.get(stack);\n\t\tfor (const iterator in iterable) {\n\t\t\tconst forBlock = stack.pushBlockScope();\n\t\t\tthis.left.declareVariable(stack, iterator);\n\t\t\tconst result = this.body.get(stack);\n\t\t\t// useless case, as it at the end of for statement\n\t\t\t// an array/block statement, should return last signal\n\t\t\tif (result instanceof TerminateReturnType) {\n\t\t\t\tif (result.type === 'continue') {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (result instanceof ReturnValue) {\n\t\t\t\tstack.clearTo(forBlock);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tstack.clearTo(forBlock);\n\t\t}\n\t\treturn void 0;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.right.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.right.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `for (${this.left.toString()} in ${this.right.toString()}) ${this.body.toString()}`;\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\tbody: this.body.toJSON(),\n\t\t};\n\t}\n}\n\n@Deserializer('ForAwaitOfStatement')\nexport class ForAwaitOfNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: ForAwaitOfNode, deserializer: NodeDeserializer): ForAwaitOfNode {\n\t\treturn new ForAwaitOfNode(\n\t\t\tdeserializer(node.left) as ForDeclaration,\n\t\t\tdeserializer(node.right),\n\t\t\tdeserializer(node.body)\n\t\t);\n\t}\n\tstatic visit(node: ForAwaitOfNode, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.left);\n\t\tvisitNode(node.right);\n\t\tvisitNode(node.body);\n\t}\n\t// variable of iterable\n\tconstructor(\n\t\tprivate left: ForDeclaration,\n\t\tprivate right: ExpressionNode,\n\t\tprivate body: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetLeft() {\n\t\treturn this.left;\n\t}\n\tgetRight() {\n\t\treturn this.right;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`ForAwaitOfNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst iterable: AsyncIterable<any> = this.right.get(stack);\n\t\tconst forAwaitBody = (iterator: any): any => {\n\t\t\tconst forBlock = stack.pushBlockScope();\n\t\t\tthis.left.declareVariable(stack, iterator);\n\t\t\tconst result = this.body.get(stack);\n\t\t\tstack.clearTo(forBlock);\n\t\t\treturn result;\n\t\t};\n\t\tstack.forAwaitAsyncIterable = { iterable, forAwaitBody };\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.right.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.right.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `for (${this.left?.toString()} of ${this.right.toString()}) ${this.body.toString()}`;\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\tbody: this.body.toJSON(),\n\t\t};\n\t}\n}\n"]}
@@ -1,5 +1,4 @@
1
1
  import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../../expression.js';
2
- import type { Scope } from '../../../scope/scope.js';
3
2
  import type { Stack } from '../../../scope/stack.js';
4
3
  import { AbstractExpressionNode, ReturnValue } from '../../abstract.js';
5
4
  /**
@@ -16,7 +15,6 @@ export declare class WhileNode extends AbstractExpressionNode {
16
15
  constructor(test: ExpressionNode, body: ExpressionNode);
17
16
  getTest(): ExpressionNode;
18
17
  getBody(): ExpressionNode;
19
- shareVariables(scopeList: Scope<any>[]): void;
20
18
  set(stack: Stack, value: any): void;
21
19
  get(stack: Stack): ReturnValue | undefined;
22
20
  dependency(computed?: true): ExpressionNode[];
@@ -32,7 +30,6 @@ export declare class DoWhileNode extends AbstractExpressionNode {
32
30
  constructor(test: ExpressionNode, body: ExpressionNode);
33
31
  getTest(): ExpressionNode;
34
32
  getBody(): ExpressionNode;
35
- shareVariables(scopeList: Scope<any>[]): void;
36
33
  set(stack: Stack, value: any): void;
37
34
  get(stack: Stack): ReturnValue | undefined;
38
35
  dependency(computed?: true): ExpressionNode[];
@@ -28,10 +28,6 @@ let WhileNode = WhileNode_1 = class WhileNode extends AbstractExpressionNode {
28
28
  getBody() {
29
29
  return this.body;
30
30
  }
31
- shareVariables(scopeList) {
32
- this.test.shareVariables(scopeList);
33
- this.body.shareVariables(scopeList);
34
- }
35
31
  set(stack, value) {
36
32
  throw new Error(`WhileNode#set() has no implementation.`);
37
33
  }
@@ -98,10 +94,6 @@ let DoWhileNode = DoWhileNode_1 = class DoWhileNode extends AbstractExpressionNo
98
94
  getBody() {
99
95
  return this.body;
100
96
  }
101
- shareVariables(scopeList) {
102
- this.test.shareVariables(scopeList);
103
- this.body.shareVariables(scopeList);
104
- }
105
97
  set(stack, value) {
106
98
  throw new Error(`WhileNode#set() has no implementation.`);
107
99
  }
@@ -1 +1 @@
1
- {"version":3,"file":"while.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/iterations/while.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode,\n\tExpressionEventPath, VisitNodeType\n} from '../../expression.js';\nimport type { Scope } from '../../../scope/scope.js';\nimport type { Stack } from '../../../scope/stack.js';\nimport { AbstractExpressionNode, ReturnValue } from '../../abstract.js';\nimport { Deserializer } from '../../deserialize/deserialize.js';\nimport { TerminateReturnType } from '../control/terminate.js';\n\n/**\n * The while statement creates a loop that executes a specified\n * statement as long as the test condition evaluates to true.\n * The condition is evaluated before executing the statement.\n * \n */\n@Deserializer('WhileStatement')\nexport class WhileNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: WhileNode, deserializer: NodeDeserializer): WhileNode {\n\t\treturn new WhileNode(\n\t\t\tdeserializer(node.test),\n\t\t\tdeserializer(node.body)\n\t\t);\n\t}\n\tstatic visit(node: WhileNode, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.body);\n\t\tvisitNode(node.test);\n\t}\n\tconstructor(private test: ExpressionNode, private body: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetTest() {\n\t\treturn this.test;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.test.shareVariables(scopeList);\n\t\tthis.body.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`WhileNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst condition = this.test.get(stack);\n\t\tconst whileBlock = stack.pushBlockScope();\n\t\twhile (condition) {\n\t\t\tconst result = this.body.get(stack);\n\t\t\t// useless case, as it at the end of for statement\n\t\t\t// an array/block statement, should return last signal\n\t\t\tif (result instanceof TerminateReturnType) {\n\t\t\t\tif (result.type === 'continue') {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (result instanceof ReturnValue) {\n\t\t\t\tstack.clearTo(whileBlock);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t\tstack.clearTo(whileBlock);\n\t\treturn void 0;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.test.dependency(computed).concat(this.body.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.test.dependencyPath(computed).concat(this.body.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\treturn `while (${this.test.toString()}) ${this.body.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\ttest: this.test.toJSON(),\n\t\t\tbody: this.body.toJSON()\n\t\t};\n\t}\n}\n\n@Deserializer('DoWhileStatement')\nexport class DoWhileNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: DoWhileNode, deserializer: NodeDeserializer): DoWhileNode {\n\t\treturn new DoWhileNode(\n\t\t\tdeserializer(node.test),\n\t\t\tdeserializer(node.body)\n\t\t);\n\t}\n\tstatic visit(node: DoWhileNode, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.test);\n\t\tvisitNode(node.body);\n\t}\n\tconstructor(private test: ExpressionNode, private body: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetTest() {\n\t\treturn this.test;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.test.shareVariables(scopeList);\n\t\tthis.body.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`WhileNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst whileBlock = stack.pushBlockScope();\n\t\tdo {\n\t\t\tconst result = this.body.get(stack);\n\t\t\t// useless case, as it at the end of for statement\n\t\t\t// an array/block statement, should return last signal\n\t\t\tif (result instanceof TerminateReturnType) {\n\t\t\t\tif (result.type === 'continue') {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (result instanceof ReturnValue) {\n\t\t\t\tstack.clearTo(whileBlock);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t} while (this.test.get(stack));\n\t\tstack.clearTo(whileBlock);\n\t\treturn void 0;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.body.dependency(computed).concat(this.test.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.body.dependencyPath(computed).concat(this.test.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\treturn `do {${this.body.toString()}} while (${this.test.toString()})`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\ttest: this.test.toJSON(),\n\t\t\tbody: this.body.toJSON()\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"while.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/iterations/while.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode,\n\tExpressionEventPath, VisitNodeType\n} from '../../expression.js';\nimport type { Stack } from '../../../scope/stack.js';\nimport { AbstractExpressionNode, ReturnValue } from '../../abstract.js';\nimport { Deserializer } from '../../deserialize/deserialize.js';\nimport { TerminateReturnType } from '../control/terminate.js';\n\n/**\n * The while statement creates a loop that executes a specified\n * statement as long as the test condition evaluates to true.\n * The condition is evaluated before executing the statement.\n * \n */\n@Deserializer('WhileStatement')\nexport class WhileNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: WhileNode, deserializer: NodeDeserializer): WhileNode {\n\t\treturn new WhileNode(\n\t\t\tdeserializer(node.test),\n\t\t\tdeserializer(node.body)\n\t\t);\n\t}\n\tstatic visit(node: WhileNode, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.body);\n\t\tvisitNode(node.test);\n\t}\n\tconstructor(private test: ExpressionNode, private body: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetTest() {\n\t\treturn this.test;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`WhileNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst condition = this.test.get(stack);\n\t\tconst whileBlock = stack.pushBlockScope();\n\t\twhile (condition) {\n\t\t\tconst result = this.body.get(stack);\n\t\t\t// useless case, as it at the end of for statement\n\t\t\t// an array/block statement, should return last signal\n\t\t\tif (result instanceof TerminateReturnType) {\n\t\t\t\tif (result.type === 'continue') {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (result instanceof ReturnValue) {\n\t\t\t\tstack.clearTo(whileBlock);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t\tstack.clearTo(whileBlock);\n\t\treturn void 0;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.test.dependency(computed).concat(this.body.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.test.dependencyPath(computed).concat(this.body.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\treturn `while (${this.test.toString()}) ${this.body.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\ttest: this.test.toJSON(),\n\t\t\tbody: this.body.toJSON()\n\t\t};\n\t}\n}\n\n@Deserializer('DoWhileStatement')\nexport class DoWhileNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: DoWhileNode, deserializer: NodeDeserializer): DoWhileNode {\n\t\treturn new DoWhileNode(\n\t\t\tdeserializer(node.test),\n\t\t\tdeserializer(node.body)\n\t\t);\n\t}\n\tstatic visit(node: DoWhileNode, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.test);\n\t\tvisitNode(node.body);\n\t}\n\tconstructor(private test: ExpressionNode, private body: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetTest() {\n\t\treturn this.test;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`WhileNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst whileBlock = stack.pushBlockScope();\n\t\tdo {\n\t\t\tconst result = this.body.get(stack);\n\t\t\t// useless case, as it at the end of for statement\n\t\t\t// an array/block statement, should return last signal\n\t\t\tif (result instanceof TerminateReturnType) {\n\t\t\t\tif (result.type === 'continue') {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (result instanceof ReturnValue) {\n\t\t\t\tstack.clearTo(whileBlock);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t} while (this.test.get(stack));\n\t\tstack.clearTo(whileBlock);\n\t\treturn void 0;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.body.dependency(computed).concat(this.test.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.body.dependencyPath(computed).concat(this.test.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\treturn `do {${this.body.toString()}} while (${this.test.toString()})`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\ttest: this.test.toJSON(),\n\t\t\tbody: this.body.toJSON()\n\t\t};\n\t}\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibyar/expressions",
3
- "version": "0.8.2-dev.20221008",
3
+ "version": "0.8.3",
4
4
  "description": "Aurora expression, an template expression and evaluation, An 100% spec compliant ES2022 JavaScript toolchain,",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/ibyar/aurora/tree/dev/packages/expressions",
@@ -51,5 +51,5 @@
51
51
  "backend",
52
52
  "front-end"
53
53
  ],
54
- "gitHead": "abe877ef8e4d4914a0b9bc12dc88154ba9f0b2b9"
54
+ "gitHead": "9c3d7e7cf59692bd1cf6d8dfbada3f177ad53c7f"
55
55
  }
package/scope/scope.d.ts CHANGED
@@ -58,26 +58,6 @@ export declare class Scope<T extends Context> implements Scope<T> {
58
58
  protected _inners: Map<keyof T, Scope<any>>;
59
59
  constructor(context: T, propertyKeys?: (keyof T)[]);
60
60
  }
61
- /**
62
- * a class scope used for class instance and private static properties
63
- */
64
- export declare class ClassScope<T extends Context> extends Scope<T> {
65
- private _pKeys?;
66
- static for<T extends Context>(ctx: T, propertyKeys?: (keyof T)[], privateKeys?: (keyof T)[]): ClassScope<T>;
67
- static blockScope<T extends Context>(propertyKeys?: (keyof T)[], privateKeys?: (keyof T)[]): ClassScope<T>;
68
- static readOnlyScopeForThis<T extends Context>(ctx: T, propertyKeys?: (keyof T)[], privateKeys?: (keyof T)[]): ReadOnlyScope<{
69
- this: T;
70
- }>;
71
- protected _private: Context;
72
- constructor(context: T, propertyKeys?: (keyof T)[], privateKeys?: (keyof T)[]);
73
- getPrivateContext(): T;
74
- get(key: keyof T): any;
75
- set(key: keyof T, value: any, receiver?: any): boolean;
76
- has(key: keyof T): boolean;
77
- delete(key: keyof T): boolean;
78
- protected isPrivateKey(key: keyof T): boolean;
79
- getClass(): TypeOf<ReadOnlyScope<Context>>;
80
- }
81
61
  export declare class ReadOnlyScope<T extends Context> extends Scope<T> {
82
62
  static for<T extends Context>(ctx: T, propertyKeys?: (keyof T)[]): ReadOnlyScope<T>;
83
63
  static blockScope<T extends Context>(propertyKeys?: (keyof T)[]): ReadOnlyScope<T>;
@@ -220,7 +200,11 @@ export declare class ModuleScope extends ReactiveScope<ModuleContext> {
220
200
  importModule(propertyKey: keyof ModuleContext, scope: ModuleScope): void;
221
201
  }
222
202
  export declare class WebModuleScope extends ModuleScope {
223
- constructor();
224
- updateContext(context: any): void;
203
+ private source;
204
+ private importCallOptions?;
205
+ private import;
206
+ constructor(source: string, importCallOptions?: ImportCallOptions | undefined);
207
+ private updateContext;
208
+ resolveImport(): Promise<any>;
225
209
  }
226
210
  export {};