@ibyar/expressions 0.5.6 → 0.5.62

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 (85) hide show
  1. package/api/abstract.js +5 -0
  2. package/api/abstract.js.map +1 -1
  3. package/api/class/class.d.ts +25 -0
  4. package/api/class/class.js +27 -0
  5. package/api/class/class.js.map +1 -1
  6. package/api/computing/return.d.ts +4 -0
  7. package/api/computing/return.js +5 -0
  8. package/api/computing/return.js.map +1 -1
  9. package/api/computing/throw.d.ts +4 -0
  10. package/api/computing/throw.js +4 -0
  11. package/api/computing/throw.js.map +1 -1
  12. package/api/definition/bind.d.ts +6 -0
  13. package/api/definition/bind.js +6 -0
  14. package/api/definition/bind.js.map +1 -1
  15. package/api/definition/function.js +1 -0
  16. package/api/definition/function.js.map +1 -1
  17. package/api/definition/values.d.ts +9 -0
  18. package/api/definition/values.js +21 -0
  19. package/api/definition/values.js.map +1 -1
  20. package/api/deserialize/deserialize.d.ts +5 -0
  21. package/api/deserialize/deserialize.js +5 -0
  22. package/api/deserialize/deserialize.js.map +1 -1
  23. package/api/expression.d.ts +146 -0
  24. package/api/module/export.d.ts +63 -0
  25. package/api/module/export.js +63 -0
  26. package/api/module/export.js.map +1 -1
  27. package/api/module/import.d.ts +53 -0
  28. package/api/module/import.js +53 -0
  29. package/api/module/import.js.map +1 -1
  30. package/api/operators/grouping.d.ts +7 -0
  31. package/api/operators/grouping.js +7 -0
  32. package/api/operators/grouping.js.map +1 -1
  33. package/api/operators/pipeline.d.ts +12 -0
  34. package/api/operators/pipeline.js +12 -0
  35. package/api/operators/pipeline.js.map +1 -1
  36. package/api/operators/unary.js +3 -0
  37. package/api/operators/unary.js.map +1 -1
  38. package/api/statement/control/block.d.ts +4 -0
  39. package/api/statement/control/block.js +4 -0
  40. package/api/statement/control/block.js.map +1 -1
  41. package/api/statement/control/empty.d.ts +7 -0
  42. package/api/statement/control/empty.js +7 -0
  43. package/api/statement/control/empty.js.map +1 -1
  44. package/api/statement/control/if.d.ts +5 -0
  45. package/api/statement/control/if.js +5 -0
  46. package/api/statement/control/if.js.map +1 -1
  47. package/api/statement/control/switch.d.ts +6 -0
  48. package/api/statement/control/switch.js +9 -0
  49. package/api/statement/control/switch.js.map +1 -1
  50. package/api/statement/control/terminate.d.ts +8 -0
  51. package/api/statement/control/terminate.js +8 -0
  52. package/api/statement/control/terminate.js.map +1 -1
  53. package/api/statement/iterations/for.d.ts +5 -0
  54. package/api/statement/iterations/for.js +13 -0
  55. package/api/statement/iterations/for.js.map +1 -1
  56. package/api/statement/iterations/while.d.ts +6 -0
  57. package/api/statement/iterations/while.js +10 -0
  58. package/api/statement/iterations/while.js.map +1 -1
  59. package/package.json +2 -2
  60. package/scope/proxy.d.ts +3 -0
  61. package/scope/proxy.js +4 -0
  62. package/scope/proxy.js.map +1 -1
  63. package/scope/scope.d.ts +68 -0
  64. package/scope/scope.js +5 -0
  65. package/scope/scope.js.map +1 -1
  66. package/scope/stack.d.ts +74 -0
  67. package/scope/stack.js +6 -0
  68. package/scope/stack.js.map +1 -1
  69. package/v8/enums.js +31 -0
  70. package/v8/enums.js.map +1 -1
  71. package/v8/inline.d.ts +36 -0
  72. package/v8/inline.js +407 -5
  73. package/v8/inline.js.map +1 -1
  74. package/v8/nodes.js +2 -1
  75. package/v8/nodes.js.map +1 -1
  76. package/v8/parser.d.ts +8 -0
  77. package/v8/parser.js +304 -1
  78. package/v8/parser.js.map +1 -1
  79. package/v8/stream.d.ts +4 -0
  80. package/v8/stream.js +79 -17
  81. package/v8/stream.js.map +1 -1
  82. package/v8/token.d.ts +229 -0
  83. package/v8/token.js +236 -1
  84. package/v8/token.js.map +1 -1
  85. package/visit/visitor.d.ts +3 -0
package/api/abstract.js CHANGED
@@ -1,5 +1,6 @@
1
1
  function initPathExpressionEventMap(rootEventMap, path) {
2
2
  let lastMap = rootEventMap;
3
+ // let index = 0;
3
4
  for (const node of path) {
4
5
  const scopeName = node.path;
5
6
  let eventMap = lastMap[scopeName];
@@ -7,6 +8,10 @@ function initPathExpressionEventMap(rootEventMap, path) {
7
8
  lastMap = eventMap;
8
9
  continue;
9
10
  }
11
+ // if ((index++) === path.length - 1) {
12
+ // lastMap[scopeName] = undefined;
13
+ // continue;
14
+ // }
10
15
  lastMap = lastMap[scopeName] = {};
11
16
  if (node.computed) {
12
17
  node.computedPath.forEach(path => initPathExpressionEventMap(rootEventMap, path));
@@ -1 +1 @@
1
- {"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../src/expressions/api/abstract.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Scope } from '../scope/scope.js';\nimport type { AwaitPromiseInfo, Stack } from '../scope/stack.js';\nimport type {\n\tNodeDeserializer, ExpressionNode, ExpressionNodConstructor,\n\tNodeJsonType, DeclarationExpression, ExpressionEventMap,\n\tExpressionEventPath, VisitNodeType\n} from './expression.js';\n\nfunction initPathExpressionEventMap(rootEventMap: ExpressionEventMap, path: ExpressionEventPath[]): void {\n\tlet lastMap = rootEventMap;\n\t// let index = 0;\n\tfor (const node of path) {\n\t\tconst scopeName = node.path;\n\t\tlet eventMap = lastMap[scopeName];\n\t\tif (eventMap) {\n\t\t\tlastMap = eventMap;\n\t\t\tcontinue;\n\t\t}\n\t\t// if ((index++) === path.length - 1) {\n\t\t// \tlastMap[scopeName] = undefined;\n\t\t// \tcontinue;\n\t\t// }\n\t\tlastMap = lastMap[scopeName] = {};\n\t\tif (node.computed) {\n\t\t\tnode.computedPath.forEach(path => initPathExpressionEventMap(rootEventMap, path));\n\t\t}\n\t}\n}\nexport abstract class AbstractExpressionNode implements ExpressionNode {\n\tstatic fromJSON(node: ExpressionNode, deserializer: NodeDeserializer): ExpressionNode {\n\t\treturn deserializer(node as any);\n\t}\n\tgetClass(): ExpressionNodConstructor<ExpressionNode> {\n\t\treturn this.constructor as ExpressionNodConstructor<ExpressionNode>;\n\t}\n\ttoJSON(key?: string): NodeJsonType {\n\t\tconst type = this.getClass().type;\n\t\tconst json = this.toJson(key);\n\t\treturn { type, ...json };\n\t}\n\tevents(): ExpressionEventMap {\n\t\tconst dependencyNodes = this.dependency();\n\t\tconst eventMap: ExpressionEventMap = {};\n\t\tfor (const node of dependencyNodes) {\n\t\t\tconst dependencyPath = node.dependencyPath();\n\t\t\tinitPathExpressionEventMap(eventMap, dependencyPath);\n\t\t}\n\t\treturn eventMap;\n\t}\n\tabstract shareVariables(scopeList: Scope<any>[]): void;\n\tabstract set(stack: Stack, value: any): any;\n\tabstract get(stack: Stack, thisContext?: any): any;\n\tabstract dependency(computed?: true): ExpressionNode[];\n\tabstract dependencyPath(computed?: true): ExpressionEventPath[];\n\tabstract toString(): string;\n\tabstract toJson(key?: string): { [key: string]: any };\n}\nexport abstract class InfixExpressionNode<T> extends AbstractExpressionNode {\n\tstatic visit(node: InfixExpressionNode<any>, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.getLeft());\n\t\tvisitNode(node.getRight())\n\t}\n\tconstructor(protected operator: T, protected left: ExpressionNode, protected right: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetOperator() {\n\t\treturn this.operator;\n\t}\n\tgetLeft() {\n\t\treturn this.left;\n\t}\n\tgetRight() {\n\t\treturn this.right;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.left.shareVariables(scopeList);\n\t\tthis.right.shareVariables(scopeList);\n\t}\n\tset(context: object, value: any) {\n\t\tthrow new Error(`${this.constructor.name}#set() of operator: '${this.operator}' has no implementation.`);\n\t}\n\tabstract get(stack: Stack): any;\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.left.dependency(computed).concat(this.right.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.left.dependencyPath(computed).concat(this.right.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\treturn `${this.left.toString()} ${this.operator} ${this.right.toString()}`;\n\t}\n\ttoJson(key: string): object {\n\t\treturn {\n\t\t\toperator: this.operator,\n\t\t\tleft: this.left.toJSON(),\n\t\t\tright: this.right.toJSON()\n\t\t};\n\t}\n}\n\nexport class ReturnValue {\n\tconstructor(public value: any) { }\n\tgetValue() {\n\t\treturn this.value;\n\t}\n}\n\nexport class YieldValue {\n\tconstructor(public value: any) { }\n\tgetValue() {\n\t\treturn this.value;\n\t}\n}\n\nexport class YieldDelegateValue {\n\tconstructor(public value: any) { }\n\tgetValue() {\n\t\treturn this.value;\n\t}\n}\n\nexport class AwaitPromise implements AwaitPromiseInfo {\n\tnode: DeclarationExpression;\n\tdeclareVariable: boolean;\n\tconstructor(public promise: Promise<any>) { }\n}\n"]}
1
+ {"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../src/expressions/api/abstract.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Scope } from '../scope/scope.js';\nimport type { AwaitPromiseInfo, Stack } from '../scope/stack.js';\nimport type {\n\tNodeDeserializer, ExpressionNode, ExpressionNodConstructor,\n\tNodeJsonType, DeclarationExpression, ExpressionEventMap,\n\tExpressionEventPath, VisitNodeType\n} from './expression.js';\n\nfunction initPathExpressionEventMap(rootEventMap: ExpressionEventMap, path: ExpressionEventPath[]): void {\n\tlet lastMap = rootEventMap;\n\t// let index = 0;\n\tfor (const node of path) {\n\t\tconst scopeName = node.path;\n\t\tlet eventMap = lastMap[scopeName];\n\t\tif (eventMap) {\n\t\t\tlastMap = eventMap;\n\t\t\tcontinue;\n\t\t}\n\t\t// if ((index++) === path.length - 1) {\n\t\t// \tlastMap[scopeName] = undefined;\n\t\t// \tcontinue;\n\t\t// }\n\t\tlastMap = lastMap[scopeName] = {};\n\t\tif (node.computed) {\n\t\t\tnode.computedPath.forEach(path => initPathExpressionEventMap(rootEventMap, path));\n\t\t}\n\t}\n}\nexport abstract class AbstractExpressionNode implements ExpressionNode {\n\tstatic fromJSON(node: ExpressionNode, deserializer: NodeDeserializer): ExpressionNode {\n\t\treturn deserializer(node as any);\n\t}\n\tgetClass(): ExpressionNodConstructor<ExpressionNode> {\n\t\treturn this.constructor as ExpressionNodConstructor<ExpressionNode>;\n\t}\n\ttoJSON(key?: string): NodeJsonType {\n\t\tconst type = this.getClass().type;\n\t\tconst json = this.toJson(key);\n\t\treturn { type, ...json };\n\t}\n\tevents(): ExpressionEventMap {\n\t\tconst dependencyNodes = this.dependency();\n\t\tconst eventMap: ExpressionEventMap = {};\n\t\tfor (const node of dependencyNodes) {\n\t\t\tconst dependencyPath = node.dependencyPath();\n\t\t\tinitPathExpressionEventMap(eventMap, dependencyPath);\n\t\t}\n\t\treturn eventMap;\n\t}\n\tabstract shareVariables(scopeList: Scope<any>[]): void;\n\tabstract set(stack: Stack, value: any): any;\n\tabstract get(stack: Stack, thisContext?: any): any;\n\tabstract dependency(computed?: true): ExpressionNode[];\n\tabstract dependencyPath(computed?: true): ExpressionEventPath[];\n\tabstract toString(): string;\n\tabstract toJson(key?: string): { [key: string]: any };\n}\nexport abstract class InfixExpressionNode<T> extends AbstractExpressionNode {\n\tstatic visit(node: InfixExpressionNode<any>, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.getLeft());\n\t\tvisitNode(node.getRight())\n\t}\n\tconstructor(protected operator: T, protected left: ExpressionNode, protected right: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetOperator() {\n\t\treturn this.operator;\n\t}\n\tgetLeft() {\n\t\treturn this.left;\n\t}\n\tgetRight() {\n\t\treturn this.right;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.left.shareVariables(scopeList);\n\t\tthis.right.shareVariables(scopeList);\n\t}\n\tset(context: object, value: any) {\n\t\tthrow new Error(`${this.constructor.name}#set() of operator: '${this.operator}' has no implementation.`);\n\t}\n\tabstract get(stack: Stack): any;\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.left.dependency(computed).concat(this.right.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.left.dependencyPath(computed).concat(this.right.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\treturn `${this.left.toString()} ${this.operator} ${this.right.toString()}`;\n\t}\n\ttoJson(key: string): object {\n\t\treturn {\n\t\t\toperator: this.operator,\n\t\t\tleft: this.left.toJSON(),\n\t\t\tright: this.right.toJSON()\n\t\t};\n\t}\n}\n\nexport class ReturnValue {\n\tconstructor(public value: any) { }\n\tgetValue() {\n\t\treturn this.value;\n\t}\n}\n\nexport class YieldValue {\n\tconstructor(public value: any) { }\n\tgetValue() {\n\t\treturn this.value;\n\t}\n}\n\nexport class YieldDelegateValue {\n\tconstructor(public value: any) { }\n\tgetValue() {\n\t\treturn this.value;\n\t}\n}\n\nexport class AwaitPromise implements AwaitPromiseInfo {\n\tnode: DeclarationExpression;\n\tdeclareVariable: boolean;\n\tconstructor(public promise: Promise<any>) { }\n}\n"]}
@@ -14,6 +14,9 @@ declare const PRIVATE_SYMBOL: unique symbol;
14
14
  declare const INSTANCE_PRIVATE_SYMBOL: unique symbol;
15
15
  declare const STATIC_INITIALIZATION_BLOCK: unique symbol;
16
16
  interface ClassConstructor {
17
+ /**
18
+ * A reference to the prototype.
19
+ */
17
20
  readonly prototype: ClassInstance;
18
21
  [GET_PARAMETERS](args: any[]): any[];
19
22
  [STATIC_INITIALIZATION_BLOCK]: Function[];
@@ -34,6 +37,9 @@ interface ClassInstance {
34
37
  [STACK]: Stack;
35
38
  [key: string]: any;
36
39
  }
40
+ /**
41
+ * A `super` pseudo-expression.
42
+ */
37
43
  export declare class Super extends AbstractExpressionNode {
38
44
  static INSTANCE: Super;
39
45
  static fromJSON(node: Super): Super;
@@ -48,6 +54,13 @@ export declare class Super extends AbstractExpressionNode {
48
54
  [key: string]: any;
49
55
  };
50
56
  }
57
+ /**
58
+ * MetaProperty node represents
59
+ * - `new.target` meta property in ES2015.
60
+ * - `import.meta` meta property in ES2030.
61
+ *
62
+ * In the future, it will represent other meta properties as well.
63
+ */
51
64
  export declare class MetaProperty extends MemberExpression {
52
65
  private meta;
53
66
  static NewTarget: MetaProperty;
@@ -64,6 +77,9 @@ export declare class MetaProperty extends MemberExpression {
64
77
  [key: string]: any;
65
78
  };
66
79
  }
80
+ /**
81
+ * A private identifier refers to private class elements. For a private name `#a`, its name is `a`.
82
+ */
67
83
  export declare class PrivateIdentifier extends AbstractExpressionNode {
68
84
  private name;
69
85
  static fromJSON(node: PrivateIdentifier): PrivateIdentifier;
@@ -79,6 +95,9 @@ export declare class PrivateIdentifier extends AbstractExpressionNode {
79
95
  [key: string]: any;
80
96
  };
81
97
  }
98
+ /**
99
+ * A static block static { } is a block statement serving as an additional static initializer.
100
+ */
82
101
  export declare class StaticBlock extends BlockStatement {
83
102
  static fromJSON(node: StaticBlock, deserializer: NodeDeserializer<any>): StaticBlock;
84
103
  constructor(body: ExpressionNode[]);
@@ -115,6 +134,9 @@ export declare abstract class AbstractDefinition extends AbstractExpressionNode
115
134
  };
116
135
  }
117
136
  export declare type MethodDefinitionKind = 'constructor' | 'method' | 'set' | 'get';
137
+ /**
138
+ * - When key is a PrivateIdentifier, computed must be false and kind can not be "constructor".
139
+ */
118
140
  export declare class MethodDefinition extends AbstractDefinition {
119
141
  private kind;
120
142
  static fromJSON(node: MethodDefinition, deserializer: NodeDeserializer<any>): MethodDefinition;
@@ -130,6 +152,9 @@ export declare class MethodDefinition extends AbstractDefinition {
130
152
  [key: string]: any;
131
153
  };
132
154
  }
155
+ /**
156
+ * - When key is a PrivateIdentifier, computed must be false.
157
+ */
133
158
  export declare class PropertyDefinition extends AbstractDefinition {
134
159
  static fromJSON(node: PropertyDefinition, deserializer: NodeDeserializer<any>): PropertyDefinition;
135
160
  static visit(node: PropertyDefinition, visitNode: VisitNodeType): void;
@@ -20,6 +20,9 @@ const CONSTRUCTOR = Symbol('Constructor');
20
20
  const PRIVATE_SYMBOL = Symbol('Private');
21
21
  const INSTANCE_PRIVATE_SYMBOL = Symbol('InstancePrivate');
22
22
  const STATIC_INITIALIZATION_BLOCK = Symbol('StaticBlock');
23
+ /**
24
+ * A `super` pseudo-expression.
25
+ */
23
26
  let Super = Super_1 = class Super extends AbstractExpressionNode {
24
27
  constructor() {
25
28
  super();
@@ -53,6 +56,13 @@ Super = Super_1 = __decorate_1([
53
56
  __metadata("design:paramtypes", [])
54
57
  ], Super);
55
58
  export { Super };
59
+ /**
60
+ * MetaProperty node represents
61
+ * - `new.target` meta property in ES2015.
62
+ * - `import.meta` meta property in ES2030.
63
+ *
64
+ * In the future, it will represent other meta properties as well.
65
+ */
56
66
  let MetaProperty = MetaProperty_1 = class MetaProperty extends MemberExpression {
57
67
  constructor(meta, property) {
58
68
  super(meta, property, false);
@@ -105,6 +115,9 @@ MetaProperty = MetaProperty_1 = __decorate_1([
105
115
  __metadata("design:paramtypes", [Identifier, Identifier])
106
116
  ], MetaProperty);
107
117
  export { MetaProperty };
118
+ /**
119
+ * A private identifier refers to private class elements. For a private name `#a`, its name is `a`.
120
+ */
108
121
  let PrivateIdentifier = PrivateIdentifier_1 = class PrivateIdentifier extends AbstractExpressionNode {
109
122
  constructor(name) {
110
123
  super();
@@ -124,6 +137,7 @@ let PrivateIdentifier = PrivateIdentifier_1 = class PrivateIdentifier extends Ab
124
137
  if (thisContext) {
125
138
  return thisContext[PRIVATE_SYMBOL][this.name];
126
139
  }
140
+ // return stack.get(this.name);
127
141
  let privateObj = stack.get('this');
128
142
  if (privateObj) {
129
143
  return privateObj[PRIVATE_SYMBOL][this.name];
@@ -152,6 +166,9 @@ PrivateIdentifier = PrivateIdentifier_1 = __decorate_1([
152
166
  __metadata("design:paramtypes", [String])
153
167
  ], PrivateIdentifier);
154
168
  export { PrivateIdentifier };
169
+ /**
170
+ * A static block static { } is a block statement serving as an additional static initializer.
171
+ */
155
172
  let StaticBlock = StaticBlock_1 = class StaticBlock extends BlockStatement {
156
173
  static fromJSON(node, deserializer) {
157
174
  return new StaticBlock_1(deserializer(node.body));
@@ -225,6 +242,9 @@ export class AbstractDefinition extends AbstractExpressionNode {
225
242
  }
226
243
  }
227
244
  }
245
+ /**
246
+ * - When key is a PrivateIdentifier, computed must be false and kind can not be "constructor".
247
+ */
228
248
  let MethodDefinition = MethodDefinition_1 = class MethodDefinition extends AbstractDefinition {
229
249
  constructor(kind, key, value, decorators, computed, isStatic) {
230
250
  super(key, decorators, computed, isStatic, value);
@@ -355,6 +375,9 @@ MethodDefinition = MethodDefinition_1 = __decorate_1([
355
375
  __metadata("design:paramtypes", [String, Object, FunctionExpression, Array, Boolean, Boolean])
356
376
  ], MethodDefinition);
357
377
  export { MethodDefinition };
378
+ /**
379
+ * - When key is a PrivateIdentifier, computed must be false.
380
+ */
358
381
  let PropertyDefinition = PropertyDefinition_1 = class PropertyDefinition extends AbstractDefinition {
359
382
  static fromJSON(node, deserializer) {
360
383
  return new PropertyDefinition_1(deserializer(node.key), node.decorators.map(deserializer), node.computed, node.static, node.value && deserializer(node.value));
@@ -521,9 +544,12 @@ export class Class extends AbstractExpressionNode {
521
544
  const parentClass = this.superClass?.get(stack) ?? class {
522
545
  };
523
546
  let classConstructor = this.createClass(stack, parentClass, className);
547
+ // build class body
524
548
  this.body.get(stack, classConstructor);
549
+ // apply class decorators
525
550
  const decorators = this.decorators.map(decorator => decorator.get(stack));
526
551
  classConstructor = __decorate(decorators, classConstructor);
552
+ // run static initialization block
527
553
  classConstructor[STATIC_INITIALIZATION_BLOCK].forEach(block => block());
528
554
  Reflect.deleteProperty(classConstructor, STATIC_INITIALIZATION_BLOCK);
529
555
  return classConstructor;
@@ -546,6 +572,7 @@ export class Class extends AbstractExpressionNode {
546
572
  instanceStack.declareVariable(CALL_SUPER_Method, (name) => super[name]());
547
573
  instanceStack.declareVariable(GET_SUPER_PROPERTY, (name) => super[name]);
548
574
  instanceStack.pushReactiveScope();
575
+ // init fields and methods values
549
576
  TEMP[className][CONSTRUCTOR]();
550
577
  }
551
578
  static [GET_PARAMETERS](args) {
@@ -1 +1 @@
1
- {"version":3,"file":"class.js","sourceRoot":"","sources":["../../../../src/expressions/api/class/class.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tDeclarationExpression, ExpressionEventPath,\n\tExpressionNode, NodeDeserializer, VisitNodeType\n} from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport { __decorate } from 'tslib';\nimport { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { Identifier } from '../definition/values.js';\nimport { MemberExpression } from '../definition/member.js';\nimport { FunctionExpression } from '../definition/function.js';\nimport { BlockStatement } from '../statement/control/block.js';\nimport { TypeOf } from '../utils.js';\nimport { Decorator } from './decorator.js';\nimport { CallExpression } from '../computing/call.js';\n\nconst TEMP_CLASS_NAME: unique symbol = Symbol('TempClassName');\nconst SUPER: unique symbol = Symbol('Super');\nconst NEW_TARGET: unique symbol = Symbol('NewTarget');\nconst IMPORT_META: unique symbol = Symbol('ImportMeta');\nconst STACK: unique symbol = Symbol('Stack');\n\nconst GET_PARAMETERS: unique symbol = Symbol('GetParameters');\nconst GET_SUPER_PROPERTY: unique symbol = Symbol('GetSuperProperty');\nconst CALL_SUPER_Method: unique symbol = Symbol('CallSuperMethod');\n\nconst CONSTRUCTOR: unique symbol = Symbol('Constructor');\nconst PRIVATE_SYMBOL: unique symbol = Symbol('Private');\nconst INSTANCE_PRIVATE_SYMBOL: unique symbol = Symbol('InstancePrivate');\nconst STATIC_INITIALIZATION_BLOCK: unique symbol = Symbol('StaticBlock');\n\ninterface ClassConstructor {\n\t/**\n\t * A reference to the prototype.\n\t */\n\treadonly prototype: ClassInstance;\n\n\t[GET_PARAMETERS](args: any[]): any[];\n\t[STATIC_INITIALIZATION_BLOCK]: Function[];\n\t[PRIVATE_SYMBOL]: { [key: PropertyKey]: any };\n\t[INSTANCE_PRIVATE_SYMBOL]: { [key: PropertyKey]: any };\n\t[CONSTRUCTOR]: Function;\n\t[key: string]: any;\n}\n\ndeclare var ClassInstance: ClassConstructor;\ninterface ClassInstance {\n\t[PRIVATE_SYMBOL]: { [key: PropertyKey]: any };\n\t[STACK]: Stack;\n\t[key: string]: any;\n}\n\n\n/**\n * A `super` pseudo-expression.\n */\n@Deserializer('Super')\nexport class Super extends AbstractExpressionNode {\n\tstatic INSTANCE = new Super();\n\tstatic fromJSON(node: Super): Super {\n\t\treturn Super.INSTANCE;\n\t}\n\tconstructor() {\n\t\tsuper();\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('Super.#set() Method not implemented.');\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\tthrow new Error('Super.#get() Method not implemented.');\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\tthrow new Error('Super.#dependency() Method not implemented.');\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\tthrow new Error('Super.#dependencyPath() Method not implemented.');\n\t}\n\n\ttoString(): string {\n\t\treturn `super`;\n\t}\n\ttoJson(): { [key: string]: any; } {\n\t\treturn {};\n\t}\n}\n\n/**\n * MetaProperty node represents\n * - `new.target` meta property in ES2015.\n * - `import.meta` meta property in ES2030.\n * \n * In the future, it will represent other meta properties as well.\n */\n@Deserializer('MetaProperty')\nexport class MetaProperty extends MemberExpression {\n\n\tpublic static NewTarget = new MetaProperty(new Identifier('new'), new Identifier('target'));\n\n\tpublic static ImportMeta = new MetaProperty(new Identifier('import'), new Identifier('meta'));\n\n\tprivate static getJsonName(identifier: ExpressionNode): string {\n\t\treturn Reflect.get(identifier, 'name');\n\t}\n\n\tstatic fromJSON(node: MetaProperty, deserializer: NodeDeserializer<any>): MetaProperty {\n\t\tif (MetaProperty.getJsonName(node.meta) === 'new' && MetaProperty.getJsonName(node.property) === 'target') {\n\t\t\treturn MetaProperty.NewTarget;\n\t\t}\n\t\telse if (MetaProperty.getJsonName(node.meta) === 'import' && MetaProperty.getJsonName(node.property) === 'meta') {\n\t\t\treturn MetaProperty.ImportMeta;\n\t\t}\n\t\treturn new MetaProperty(\n\t\t\tdeserializer(node.meta),\n\t\t\tdeserializer(node.property)\n\t\t);\n\t}\n\tstatic visit(node: MetaProperty, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.meta);\n\t\tvisitNode(node.property);\n\t}\n\tconstructor(private meta: Identifier, property: Identifier) {\n\t\tsuper(meta, property, false);\n\t}\n\tgetMeta() {\n\t\treturn this.meta;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tget(stack: Stack, thisContext?: any) {\n\t\tif (MetaProperty.getJsonName(this.meta) === 'new' && MetaProperty.getJsonName(this.property) === 'target') {\n\t\t\treturn stack.get(NEW_TARGET);\n\t\t}\n\t\telse if (MetaProperty.getJsonName(this.meta) === 'import' && MetaProperty.getJsonName(this.property) === 'meta') {\n\t\t\tconst importObject = stack.getModule()?.get('import');\n\t\t\treturn importObject['meta'];\n\t\t}\n\t\treturn super.get(stack, thisContext);\n\t}\n\ttoString(): string {\n\t\treturn `${this.meta.toString()}.${this.property.toString()}`;\n\t}\n\ttoJson(): { [key: string]: any; } {\n\t\treturn {\n\t\t\tmeta: this.meta.toJSON(),\n\t\t\tproperty: this.property.toJSON(),\n\t\t};\n\t}\n}\n\n/**\n * A private identifier refers to private class elements. For a private name `#a`, its name is `a`.\n */\n@Deserializer('PrivateIdentifier')\nexport class PrivateIdentifier extends AbstractExpressionNode {\n\tstatic fromJSON(node: PrivateIdentifier): PrivateIdentifier {\n\t\treturn new PrivateIdentifier(\n\t\t\tnode.name as string\n\t\t);\n\t}\n\tconstructor(private name: string) {\n\t\tsuper();\n\t}\n\tgetName() {\n\t\treturn this.name;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tconst privateScope = stack.findScope(PRIVATE_SYMBOL);\n\t\tprivateScope.getScope(PRIVATE_SYMBOL)?.set(this.name, value);\n\t}\n\tget(stack: Stack, thisContext?: ClassInstance | ClassConstructor) {\n\t\tif (thisContext) {\n\t\t\treturn thisContext[PRIVATE_SYMBOL][this.name];\n\t\t}\n\t\t// return stack.get(this.name);\n\t\tlet privateObj = stack.get('this');\n\t\tif (privateObj) {\n\t\t\treturn privateObj[PRIVATE_SYMBOL][this.name];\n\t\t}\n\t\tprivateObj = stack.get(PRIVATE_SYMBOL);\n\t\treturn privateObj[this.name];\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn [];\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\ttoString(): string {\n\t\treturn `#${this.name}`;\n\t}\n\ttoJson(): { [key: string]: any; } {\n\t\treturn {\n\t\t\tname: this.name\n\t\t};\n\t}\n}\n\n/**\n * A static block static { } is a block statement serving as an additional static initializer.\n */\n@Deserializer('StaticBlock')\nexport class StaticBlock extends BlockStatement {\n\tstatic fromJSON(node: StaticBlock, deserializer: NodeDeserializer<any>): StaticBlock {\n\t\treturn new StaticBlock(deserializer(node.body));\n\t}\n\tconstructor(body: ExpressionNode[]) {\n\t\tsuper(body);\n\t}\n\tget(stack: Stack, classConstructor?: ClassConstructor): void {\n\t\tconst constructor = classConstructor!;\n\t\tconstructor[STATIC_INITIALIZATION_BLOCK].push(() => super.get(stack));\n\t}\n\ttoString(): string {\n\t\treturn `static ${super.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tbody: this.body.map(node => node.toJSON())\n\t\t};\n\t}\n}\n\nexport abstract class AbstractDefinition extends AbstractExpressionNode {\n\tprotected 'static': boolean;\n\tconstructor(\n\t\tprotected key: ExpressionNode | PrivateIdentifier,\n\t\tprotected decorators: Decorator[],\n\t\tprotected computed: boolean,\n\t\tisStatic: boolean,\n\t\tprotected value?: ExpressionNode,) {\n\t\tsuper();\n\t\tthis.static = isStatic;\n\t}\n\tgetKey() {\n\t\treturn this.key;\n\t}\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\tisComputed() {\n\t\treturn this.computed;\n\t}\n\tisStatic() {\n\t\treturn this.static;\n\t}\n\tgetDecorators() {\n\t\treturn this.decorators;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('AbstractDefinition.#set() Method not implemented.');\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn [];\n\t}\n\tgetTarget(classConstructor: ClassConstructor) {\n\t\treturn this.static\n\t\t\t? (this.key instanceof PrivateIdentifier ? classConstructor[PRIVATE_SYMBOL] : classConstructor)\n\t\t\t: (this.key instanceof PrivateIdentifier ? classConstructor[INSTANCE_PRIVATE_SYMBOL] : classConstructor.prototype);\n\t}\n\tgetKeyName(stack: Stack) {\n\t\tswitch (true) {\n\t\t\tcase this.computed: return this.key.get(stack);\n\t\t\tcase this.key instanceof Identifier:\n\t\t\tcase this.key instanceof PrivateIdentifier: return (this.key as Identifier | PrivateIdentifier).getName() as string;\n\t\t\tdefault: return this.key.toString();\n\t\t}\n\t}\n\tabstract get(stack: Stack, classConstructor: ClassConstructor): void;\n\tabstract toString(): string;\n\tabstract toJson(): { [key: string]: any; };\n}\n\nexport type MethodDefinitionKind = 'constructor' | 'method' | 'set' | 'get';\n\n/**\n * - When key is a PrivateIdentifier, computed must be false and kind can not be \"constructor\".\n */\n@Deserializer('MethodDefinition')\nexport class MethodDefinition extends AbstractDefinition {\n\tstatic fromJSON(node: MethodDefinition, deserializer: NodeDeserializer<any>): MethodDefinition {\n\t\treturn new MethodDefinition(\n\t\t\tnode.kind,\n\t\t\tdeserializer(node.key),\n\t\t\tdeserializer(node.value),\n\t\t\tnode.decorators.map(deserializer),\n\t\t\tnode.computed,\n\t\t\tnode.static\n\t\t);\n\t}\n\tstatic visit(node: MethodDefinition, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.key);\n\t\tvisitNode(node.value);\n\t\tnode.decorators.forEach(visitNode);\n\t}\n\tdeclare protected value: FunctionExpression;\n\tconstructor(\n\t\tprivate kind: MethodDefinitionKind,\n\t\tkey: ExpressionNode | PrivateIdentifier,\n\t\tvalue: FunctionExpression,\n\t\tdecorators: Decorator[],\n\t\tcomputed: boolean,\n\t\tisStatic: boolean) {\n\t\tsuper(key, decorators, computed, isStatic, value);\n\t}\n\tgetKind() {\n\t\treturn this.kind;\n\t}\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\tget(stack: Stack, classConstructor: ClassConstructor): void {\n\t\tif (this.kind === 'constructor') {\n\t\t\tthis.initConstructor(stack, classConstructor);\n\t\t\treturn;\n\t\t}\n\t\tconst target = this.getTarget(classConstructor);\n\t\tconst name: string = this.getKeyName(stack);\n\t\tconst value = this.value?.get(stack);\n\t\tswitch (this.kind) {\n\t\t\tcase 'method':\n\t\t\t\ttarget[name] = value;\n\t\t\t\tbreak;\n\t\t\tcase 'set':\n\t\t\t\tObject.defineProperty(target, name, {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tset: value as (v: any) => void,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'get':\n\t\t\t\tObject.defineProperty(target, name, {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tget: value as () => any,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\tconst decorators = this.decorators.map(decorator => decorator.get(stack));\n\t\tdecorators.length && __decorate(decorators, target, name, null);\n\t}\n\tprivate initConstructor(stack: Stack, classConstructor: ClassConstructor) {\n\t\tconst body = (this.value.getBody() as BlockStatement).getBody();\n\t\tlet superIndex = body\n\t\t\t.findIndex(call => call instanceof CallExpression && Super.INSTANCE === call.getCallee());\n\t\tif (superIndex === -1) {\n\t\t\tsuperIndex = body.length;\n\t\t}\n\t\tconst superCall = body[superIndex] as CallExpression | undefined;\n\n\t\tconst blockBeforeSuper = new BlockStatement(body.slice(0, superIndex));\n\t\tconst blockAfterSuper = new BlockStatement(body.slice(superIndex + 1));\n\n\t\tif (superCall) {\n\t\t\tclassConstructor[GET_PARAMETERS] = function (this: ClassConstructor, params: any[]) {\n\t\t\t\tconst scope = stack.pushBlockScope();\n\t\t\t\tthis.value.setParameter(stack, params);\n\t\t\t\tblockBeforeSuper.get(stack);\n\t\t\t\tconst parameters = superCall.getCallParameters(stack);\n\t\t\t\tstack.clearTo(scope);\n\t\t\t\treturn parameters;\n\t\t\t};\n\t\t}\n\n\t\tclassConstructor[CONSTRUCTOR] = function (this: ClassInstance, params: any[]) {\n\t\t\tconst scope = this[STACK].pushBlockScope();\n\t\t\tblockAfterSuper.get(this[STACK]);\n\t\t\tstack.clearTo(scope);\n\t\t};\n\t}\n\ttoString(): string {\n\t\tlet str = this.decorators.map(decorator => decorator.toString()).join(' ');\n\t\tif (str.length) {\n\t\t\tstr += ' ';\n\t\t}\n\t\tif (this.static) {\n\t\t\tstr += 'static ';\n\t\t}\n\t\tconst methodName = this.key.toString();\n\t\tswitch (this.kind) {\n\t\t\tcase 'get':\n\t\t\t\tstr += 'get ' + methodName;\n\t\t\t\tbreak;\n\t\t\tcase 'set':\n\t\t\t\tstr += 'set ' + methodName;\n\t\t\t\tbreak;\n\t\t\tcase 'method':\n\t\t\t\tif (this.value.getAsync() && this.value.getGenerator()) {\n\t\t\t\t\tstr += 'async *';\n\t\t\t\t}\n\t\t\t\telse if (this.value.getAsync()) {\n\t\t\t\t\tstr += 'async ';\n\t\t\t\t} else if (this.value.getGenerator()) {\n\t\t\t\t\tstr += '*';\n\t\t\t\t}\n\t\t\t\tstr += methodName;\n\t\t\t\tbreak;\n\t\t\tcase 'constructor':\n\t\t\t\tstr += 'constructor';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\tstr += this.value.paramsAndBodyToString();\n\t\treturn str;\n\t}\n\ttoJson(): { [key: string]: any; } {\n\t\treturn {\n\t\t\tkind: this.kind,\n\t\t\tkey: this.key.toJSON(),\n\t\t\tvalue: this.value.toJSON(),\n\t\t\tdecorators: this.decorators.map(decorator => decorator.toJSON()),\n\t\t\tcomputed: this.computed,\n\t\t\tstatic: this.static,\n\t\t};\n\t}\n}\n\n\n\n/**\n * - When key is a PrivateIdentifier, computed must be false.\n */\n@Deserializer('PropertyDefinition')\nexport class PropertyDefinition extends AbstractDefinition {\n\tstatic fromJSON(node: PropertyDefinition, deserializer: NodeDeserializer<any>): PropertyDefinition {\n\t\treturn new PropertyDefinition(\n\t\t\tdeserializer(node.key),\n\t\t\tnode.decorators.map(deserializer),\n\t\t\tnode.computed,\n\t\t\tnode.static,\n\t\t\tnode.value && deserializer(node.value)\n\t\t);\n\t}\n\tstatic visit(node: PropertyDefinition, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.key);\n\t\tnode.value && visitNode(node.value);\n\t}\n\tconstructor(\n\t\tkey: ExpressionNode | PrivateIdentifier,\n\t\tdecorators: Decorator[],\n\t\tcomputed: boolean,\n\t\tisStatic: boolean,\n\t\tvalue?: ExpressionNode) {\n\t\tsuper(key, decorators, computed, isStatic, value);\n\t}\n\tget(stack: Stack, classConstructor: ClassConstructor): void {\n\t\tconst target = this.getTarget(classConstructor);\n\t\tconst name: string = this.getKeyName(stack);\n\t\tconst value = this.value?.get(stack);\n\t\ttarget[name as string] = value;\n\t\tconst decorators = this.decorators.map(decorator => decorator.get(stack));\n\t\tdecorators.length && __decorate(decorators, target, name, null);\n\t}\n\ttoString(): string {\n\t\tconst decorators = this.decorators.map(decorator => decorator.toString()).join('\\n');\n\t\tconst name = this.computed ? `[${this.key.toString()}]` : this.key.toString();\n\t\treturn `${decorators.length ? decorators + ' ' : ''}${this.static ? 'static ' : ''}${name}${this.value ? ` = ${this.value.toString()}` : ''};`\n\t}\n\ttoJson(): { [key: string]: any; } {\n\t\treturn {\n\t\t\tkey: this.key.toJSON(),\n\t\t\tvalue: this.value?.toJSON(),\n\t\t\tdecorators: this.decorators.map(decorator => decorator.toJSON()),\n\t\t\tcomputed: this.computed,\n\t\t\tstatic: this.static,\n\t\t};\n\t}\n}\n\n\n\n@Deserializer('AccessorProperty')\nexport class AccessorProperty extends AbstractDefinition {\n\tstatic fromJSON(node: AccessorProperty, deserializer: NodeDeserializer): AccessorProperty {\n\t\treturn new AccessorProperty(\n\t\t\tdeserializer(node.key),\n\t\t\tnode.decorators.map(deserializer) as Decorator[],\n\t\t\tnode.computed,\n\t\t\tnode.static,\n\t\t\tnode.value ? deserializer(node.value) : void 0\n\t\t);\n\t}\n\tstatic visit(node: AccessorProperty, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.key);\n\t\tnode.value && visitNode(node.value);\n\t\tnode.decorators.forEach(visitNode);\n\t}\n\tconstructor(\n\t\tkey: ExpressionNode,\n\t\tdecorators: Decorator[],\n\t\tcomputed: boolean,\n\t\tisStatic: boolean,\n\t\tvalue?: ExpressionNode) {\n\t\tsuper(key, decorators, computed, isStatic, value);\n\t}\n\tget(stack: Stack, classConstructor: ClassConstructor): void {\n\t\tconst target = this.getTarget(classConstructor);\n\t\tconst name = this.getKeyName(stack);\n\t\tconst value = this.value?.get(stack);\n\t\ttarget[name] = value;\n\t\tconst ref = this.static ? classConstructor : classConstructor.prototype;\n\t\tObject.defineProperty(ref, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tset: function (this: ClassInstance, setValue: any) {\n\t\t\t\tthis[PRIVATE_SYMBOL][name] = setValue;\n\t\t\t},\n\t\t});\n\t\tObject.defineProperty(ref, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: function (this: ClassInstance) {\n\t\t\t\treturn this[PRIVATE_SYMBOL][name];\n\t\t\t},\n\t\t});\n\t\tconst decorators = this.decorators.map(decorator => decorator.get(stack));\n\t\tdecorators.length && __decorate(decorators, ref, name, null);\n\t}\n\ttoString(): string {\n\t\tconst decorators = this.decorators.map(decorator => decorator.toString()).join('\\n');\n\t\tconst name = this.computed ? `[${this.key.toString()}]` : this.key.toString();\n\t\treturn `${decorators.length ? decorators.concat(' ') : ''}${this.static ? 'static ' : ''}accessor ${name}${this.value ? ` = ${this.value.toString()}` : ''};`\n\t}\n\ttoJson(): { [key: string]: any; } {\n\t\treturn {\n\t\t\tkey: this.key.toJSON(),\n\t\t\tdecorators: this.decorators.map(decorator => decorator.toJSON()),\n\t\t\tcomputed: this.computed,\n\t\t\tstatic: this.static,\n\t\t\tvalue: this.value?.toJSON(),\n\t\t};\n\t}\n}\n\n\n@Deserializer('ClassBody')\nexport class ClassBody extends AbstractExpressionNode {\n\tstatic fromJSON(node: ClassBody, deserializer: NodeDeserializer<any>): ClassBody {\n\t\treturn new ClassBody(\n\t\t\tnode.body.map(deserializer)\n\t\t);\n\t}\n\tstatic visit(node: ClassBody, visitNode: VisitNodeType): void {\n\t\tnode.body.forEach(visitNode);\n\t}\n\tconstructor(private body: (MethodDefinition | PropertyDefinition | AccessorProperty | StaticBlock)[]) {\n\t\tsuper();\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('Method not implemented.');\n\t}\n\tget(stack: Stack, classConstructor: ClassConstructor) {\n\t\tthis.body.forEach(definition => definition.get(stack, classConstructor));\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\tthrow new Error('Method not implemented.');\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\tthrow new Error('Method not implemented.');\n\t}\n\ttoString(): string {\n\t\treturn this.body.map(definition => `\\t${definition.toString()}`).join('\\n');\n\t}\n\ttoJson(): { [key: string]: any; } {\n\t\treturn {\n\t\t\tbody: this.body.map(method => method.toJSON())\n\t\t};\n\t}\n}\n\nexport class Class extends AbstractExpressionNode {\n\tprivate sharedVariables?: Scope<any>[];\n\tconstructor(\n\t\tprotected body: ClassBody,\n\t\tprotected decorators: Decorator[],\n\t\tprotected id?: Identifier,\n\t\tprotected superClass?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tgetDecorators() {\n\t\treturn this.decorators;\n\t}\n\tgetId() {\n\t\treturn this.id;\n\t}\n\tgetSuperClass() {\n\t\treturn this.superClass;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.sharedVariables = scopeList;\n\t}\n\tset(stack: Stack) {\n\t\tthrow new Error(`Class.#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst className = this.id?.get(stack) as string | undefined;\n\t\tconst parentClass = this.superClass?.get(stack) as TypeOf<any> | undefined ?? class { };\n\t\tlet classConstructor: ClassConstructor = this.createClass(stack, parentClass, className);\n\t\t// build class body\n\t\tthis.body.get(stack, classConstructor);\n\n\t\t// apply class decorators\n\t\tconst decorators = this.decorators.map(decorator => decorator.get(stack));\n\t\tclassConstructor = __decorate(decorators, classConstructor);\n\n\t\t// run static initialization block\n\t\tclassConstructor[STATIC_INITIALIZATION_BLOCK].forEach(block => block());\n\t\tReflect.deleteProperty(classConstructor, STATIC_INITIALIZATION_BLOCK);\n\n\t\treturn classConstructor;\n\t}\n\n\tprivate createClass(stack: Stack, parentClass: TypeOf<any>, className: string | symbol = TEMP_CLASS_NAME) {\n\t\tconst TEMP: { [key: typeof className]: ClassConstructor } = {\n\t\t\t[className]: class extends parentClass {\n\t\t\t\tstatic [GET_PARAMETERS](args: any[]): any[] {\n\t\t\t\t\treturn args;\n\t\t\t\t}\n\t\t\t\tstatic [STATIC_INITIALIZATION_BLOCK]: Function[] = [];\n\t\t\t\tstatic [PRIVATE_SYMBOL]: { [key: string | number | symbol]: any } = {};\n\t\t\t\tstatic [INSTANCE_PRIVATE_SYMBOL] = {};\n\t\t\t\tstatic [CONSTRUCTOR](): void { }\n\n\t\t\t\t[PRIVATE_SYMBOL]: { [key: string | number | symbol]: any } = {};\n\n\t\t\t\t[STACK]: Stack;\n\t\t\t\tconstructor(...params: any[]) {\n\t\t\t\t\tconst parameters = TEMP[className][GET_PARAMETERS](params);\n\t\t\t\t\tsuper(...parameters);\n\t\t\t\t\tthis[PRIVATE_SYMBOL] = Object.assign(this[PRIVATE_SYMBOL], TEMP[className][INSTANCE_PRIVATE_SYMBOL]);\n\t\t\t\t\tthis[STACK] = stack.copyStack();\n\t\t\t\t\tconst instanceStack = this[STACK];\n\t\t\t\t\tinstanceStack.pushBlockScope();\n\t\t\t\t\tinstanceStack.declareVariable('this', this);\n\t\t\t\t\tinstanceStack.declareVariable(NEW_TARGET, new.target);\n\t\t\t\t\tinstanceStack.declareVariable(PRIVATE_SYMBOL, this[PRIVATE_SYMBOL]);\n\t\t\t\t\tinstanceStack.declareVariable(CALL_SUPER_Method, (name: string) => super[name]());\n\t\t\t\t\tinstanceStack.declareVariable(GET_SUPER_PROPERTY, (name: string) => super[name]);\n\t\t\t\t\tinstanceStack.pushReactiveScope();\n\t\t\t\t\t// init fields and methods values\n\t\t\t\t\tTEMP[className][CONSTRUCTOR]();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn TEMP[className as string];\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\tthrow new Error('Method not implemented.');\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\tthrow new Error('Method not implemented.');\n\t}\n\ttoString() {\n\t\tconst decorators = this.decorators.map(decorator => decorator.toString()).join('\\n');\n\t\tlet classDeclaration = 'class ';\n\t\tif (this.id) {\n\t\t\tclassDeclaration += this.id.toString();\n\t\t}\n\t\tif (this.superClass) {\n\t\t\tclassDeclaration += ' extends ' + this.superClass.toString();\n\t\t}\n\t\treturn `${decorators}${classDeclaration} {\\n${this.body.toString()}\\n}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tbody: this.body.toJSON(),\n\t\t\tdecorators: this.decorators.map(decorator => decorator.toJSON()),\n\t\t\tid: this.id?.toJSON(),\n\t\t\tsuperClass: this.superClass?.toJSON(),\n\t\t};\n\t}\n}\n\n@Deserializer('ClassDeclaration')\nexport class ClassDeclaration extends Class implements DeclarationExpression {\n\tstatic fromJSON(node: ClassDeclaration, deserializer: NodeDeserializer<any>): ClassDeclaration {\n\t\treturn new ClassDeclaration(\n\t\t\tdeserializer(node.body),\n\t\t\tdeserializer(node.id),\n\t\t\tnode.superClass && deserializer(node.superClass)\n\t\t);\n\t}\n\tstatic visit(node: ClassDeclaration, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.body);\n\t\tnode.decorators.forEach(visitNode);\n\t\tvisitNode(node.id);\n\t\tnode.superClass && visitNode(node.superClass);\n\t}\n\tdeclare protected id: Identifier;\n\tconstructor(body: ClassBody, decorators: Decorator[], id: Identifier, superClass?: ExpressionNode) {\n\t\tsuper(body, decorators, id, superClass);\n\t}\n\tdeclareVariable(stack: Stack, propertyValue?: any) {\n\t\tstack.declareVariable(this.id.getName(), propertyValue);\n\t}\n\tgetDeclarationName(): string {\n\t\treturn this.id.getDeclarationName()!;\n\t}\n\n\toverride get(stack: Stack) {\n\t\tconst classConstructor = super.get(stack);\n\t\tthis.id.declareVariable(stack, classConstructor);\n\t\treturn classConstructor;\n\t}\n}\n\n@Deserializer('ClassExpression')\nexport class ClassExpression extends Class {\n\tstatic fromJSON(node: ClassExpression, deserializer: NodeDeserializer<any>): ClassExpression {\n\t\treturn new ClassExpression(\n\t\t\tdeserializer(node.body),\n\t\t\tnode.superClass && deserializer(node.superClass)\n\t\t);\n\t}\n\tstatic visit(node: ClassExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.body);\n\t\tnode.decorators.forEach(visitNode);\n\t\tnode.id && visitNode(node.id);\n\t\tnode.superClass && visitNode(node.superClass);\n\t}\n\n}\n"]}
1
+ {"version":3,"file":"class.js","sourceRoot":"","sources":["../../../../src/expressions/api/class/class.ts"],"names":[],"mappings":";;AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,eAAe,GAAkB,MAAM,CAAC,eAAe,CAAC,CAAC;AAC/D,MAAM,KAAK,GAAkB,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7C,MAAM,UAAU,GAAkB,MAAM,CAAC,WAAW,CAAC,CAAC;AACtD,MAAM,WAAW,GAAkB,MAAM,CAAC,YAAY,CAAC,CAAC;AACxD,MAAM,KAAK,GAAkB,MAAM,CAAC,OAAO,CAAC,CAAC;AAE7C,MAAM,cAAc,GAAkB,MAAM,CAAC,eAAe,CAAC,CAAC;AAC9D,MAAM,kBAAkB,GAAkB,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACrE,MAAM,iBAAiB,GAAkB,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAEnE,MAAM,WAAW,GAAkB,MAAM,CAAC,aAAa,CAAC,CAAC;AACzD,MAAM,cAAc,GAAkB,MAAM,CAAC,SAAS,CAAC,CAAC;AACxD,MAAM,uBAAuB,GAAkB,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzE,MAAM,2BAA2B,GAAkB,MAAM,CAAC,aAAa,CAAC,CAAC;AAwBzE;;GAEG;AAEH,IAAa,KAAK,aAAlB,MAAa,KAAM,SAAQ,sBAAsB;IAKhD;QACC,KAAK,EAAE,CAAC;IACT,CAAC;IALD,MAAM,CAAC,QAAQ,CAAC,IAAW;QAC1B,OAAO,OAAK,CAAC,QAAQ,CAAC;IACvB,CAAC;IAID,cAAc,CAAC,SAAuB,IAAU,CAAC;IACjD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACzD,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,WAAiB;QAClC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACzD,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAChE,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACpE,CAAC;IAED,QAAQ;QACP,OAAO,OAAO,CAAC;IAChB,CAAC;IACD,MAAM;QACL,OAAO,EAAE,CAAC;IACX,CAAC;CACD,CAAA;AA3BO,cAAQ,GAAG,IAAI,OAAK,EAAE,CAAC;AADlB,KAAK;IADjB,YAAY,CAAC,OAAO,CAAC;;GACT,KAAK,CA4BjB;SA5BY,KAAK;AA8BlB;;;;;;GAMG;AAEH,IAAa,YAAY,oBAAzB,MAAa,YAAa,SAAQ,gBAAgB;IA0BjD,YAAoB,IAAgB,EAAE,QAAoB;QACzD,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QADV,SAAI,GAAJ,IAAI,CAAY;IAEpC,CAAC;IAtBO,MAAM,CAAC,WAAW,CAAC,UAA0B;QACpD,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAkB,EAAE,YAAmC;QACtE,IAAI,cAAY,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,cAAY,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE;YAC1G,OAAO,cAAY,CAAC,SAAS,CAAC;SAC9B;aACI,IAAI,cAAY,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,cAAY,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE;YAChH,OAAO,cAAY,CAAC,UAAU,CAAC;SAC/B;QACD,OAAO,IAAI,cAAY,CACtB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EACvB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC3B,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAkB,EAAE,SAAwB;QACxD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAID,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IACD,cAAc,CAAC,SAAuB,IAAU,CAAC;IACjD,GAAG,CAAC,KAAY,EAAE,WAAiB;QAClC,IAAI,cAAY,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,cAAY,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE;YAC1G,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SAC7B;aACI,IAAI,cAAY,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,cAAY,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE;YAChH,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtD,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;SAC5B;QACD,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACtC,CAAC;IACD,QAAQ;QACP,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC9D,CAAC;IACD,MAAM;QACL,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;SAChC,CAAC;IACH,CAAC;CACD,CAAA;AAlDc,sBAAS,GAAG,IAAI,cAAY,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAE,CAAA;AAE9E,uBAAU,GAAG,IAAI,cAAY,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,CAAE,CAAA;AAJlF,YAAY;IADxB,YAAY,CAAC,cAAc,CAAC;qCA2BF,UAAU,EAAY,UAAU;GA1B9C,YAAY,CAoDxB;SApDY,YAAY;AAsDzB;;GAEG;AAEH,IAAa,iBAAiB,yBAA9B,MAAa,iBAAkB,SAAQ,sBAAsB;IAM5D,YAAoB,IAAY;QAC/B,KAAK,EAAE,CAAC;QADW,SAAI,GAAJ,IAAI,CAAQ;IAEhC,CAAC;IAPD,MAAM,CAAC,QAAQ,CAAC,IAAuB;QACtC,OAAO,IAAI,mBAAiB,CAC3B,IAAI,CAAC,IAAc,CACnB,CAAC;IACH,CAAC;IAID,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACrD,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,WAA8C;QAC/D,IAAI,WAAW,EAAE;YAChB,OAAO,WAAW,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC9C;QACD,+BAA+B;QAC/B,IAAI,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,UAAU,EAAE;YACf,OAAO,UAAU,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7C;QACD,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACvC,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,EAAE,CAAC;IACX,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,EAAE,CAAC;IACX,CAAC;IACD,cAAc,CAAC,SAAuB,IAAU,CAAC;IACjD,QAAQ;QACP,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IACD,MAAM;QACL,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,IAAI;SACf,CAAC;IACH,CAAC;CACD,CAAA;AA3CY,iBAAiB;IAD7B,YAAY,CAAC,mBAAmB,CAAC;;GACrB,iBAAiB,CA2C7B;SA3CY,iBAAiB;AA6C9B;;GAEG;AAEH,IAAa,WAAW,mBAAxB,MAAa,WAAY,SAAQ,cAAc;IAC9C,MAAM,CAAC,QAAQ,CAAC,IAAiB,EAAE,YAAmC;QACrE,OAAO,IAAI,aAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,YAAY,IAAsB;QACjC,KAAK,CAAC,IAAI,CAAC,CAAC;IACb,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,gBAAmC;QACpD,MAAM,WAAW,GAAG,gBAAiB,CAAC;QACtC,WAAW,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,QAAQ;QACP,OAAO,UAAU,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;IACrC,CAAC;IACD,MAAM;QACL,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;SAC1C,CAAC;IACH,CAAC;CACD,CAAA;AAnBY,WAAW;IADvB,YAAY,CAAC,aAAa,CAAC;;GACf,WAAW,CAmBvB;SAnBY,WAAW;AAqBxB,MAAM,OAAgB,kBAAmB,SAAQ,sBAAsB;IAEtE,YACW,GAAuC,EACvC,UAAuB,EACvB,QAAiB,EAC3B,QAAiB,EACP,KAAsB;QAChC,KAAK,EAAE,CAAC;QALE,QAAG,GAAH,GAAG,CAAoC;QACvC,eAAU,GAAV,UAAU,CAAa;QACvB,aAAQ,GAAR,QAAQ,CAAS;QAEjB,UAAK,GAAL,KAAK,CAAiB;QAEhC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;IACxB,CAAC;IACD,MAAM;QACL,OAAO,IAAI,CAAC,GAAG,CAAC;IACjB,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IACD,UAAU;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,aAAa;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IACD,cAAc,CAAC,SAAuB,IAAU,CAAC;IACjD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACtE,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,EAAE,CAAC;IACX,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,EAAE,CAAC;IACX,CAAC;IACD,SAAS,CAAC,gBAAkC;QAC3C,OAAO,IAAI,CAAC,MAAM;YACjB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,YAAY,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;YAC/F,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,YAAY,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACrH,CAAC;IACD,UAAU,CAAC,KAAY;QACtB,QAAQ,IAAI,EAAE;YACb,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC/C,KAAK,IAAI,CAAC,GAAG,YAAY,UAAU,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,YAAY,iBAAiB,CAAC,CAAC,OAAQ,IAAI,CAAC,GAAsC,CAAC,OAAO,EAAY,CAAC;YACpH,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;SACpC;IACF,CAAC;CAID;AAID;;GAEG;AAEH,IAAa,gBAAgB,wBAA7B,MAAa,gBAAiB,SAAQ,kBAAkB;IAiBvD,YACS,IAA0B,EAClC,GAAuC,EACvC,KAAyB,EACzB,UAAuB,EACvB,QAAiB,EACjB,QAAiB;QACjB,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAN1C,SAAI,GAAJ,IAAI,CAAsB;IAOnC,CAAC;IAxBD,MAAM,CAAC,QAAQ,CAAC,IAAsB,EAAE,YAAmC;QAC1E,OAAO,IAAI,kBAAgB,CAC1B,IAAI,CAAC,IAAI,EACT,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EACtB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EACxB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,EACjC,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,CACX,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAsB,EAAE,SAAwB;QAC5D,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAWD,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,gBAAkC;QACnD,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE;YAChC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;YAC9C,OAAO;SACP;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAChD,MAAM,IAAI,GAAW,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,QAAQ,IAAI,CAAC,IAAI,EAAE;YAClB,KAAK,QAAQ;gBACZ,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;gBACrB,MAAM;YACP,KAAK,KAAK;gBACT,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;oBACnC,YAAY,EAAE,IAAI;oBAClB,UAAU,EAAE,KAAK;oBACjB,GAAG,EAAE,KAAyB;iBAC9B,CAAC,CAAC;gBACH,MAAM;YACP,KAAK,KAAK;gBACT,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;oBACnC,YAAY,EAAE,IAAI;oBAClB,UAAU,EAAE,KAAK;oBACjB,GAAG,EAAE,KAAkB;iBACvB,CAAC,CAAC;gBACH,MAAM;YACP;gBACC,MAAM;SACP;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC;IACO,eAAe,CAAC,KAAY,EAAE,gBAAkC;QACvE,MAAM,IAAI,GAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAqB,CAAC,OAAO,EAAE,CAAC;QAChE,IAAI,UAAU,GAAG,IAAI;aACnB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,YAAY,cAAc,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAC3F,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;YACtB,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;SACzB;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAA+B,CAAC;QAEjE,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;QACvE,MAAM,eAAe,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;QAEvE,IAAI,SAAS,EAAE;YACd,gBAAgB,CAAC,cAAc,CAAC,GAAG,UAAkC,MAAa;gBACjF,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;gBACrC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBACvC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC5B,MAAM,UAAU,GAAG,SAAS,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBACtD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACrB,OAAO,UAAU,CAAC;YACnB,CAAC,CAAC;SACF;QAED,gBAAgB,CAAC,WAAW,CAAC,GAAG,UAA+B,MAAa;YAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC;YAC3C,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACjC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC;IACH,CAAC;IACD,QAAQ;QACP,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3E,IAAI,GAAG,CAAC,MAAM,EAAE;YACf,GAAG,IAAI,GAAG,CAAC;SACX;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;YAChB,GAAG,IAAI,SAAS,CAAC;SACjB;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACvC,QAAQ,IAAI,CAAC,IAAI,EAAE;YAClB,KAAK,KAAK;gBACT,GAAG,IAAI,MAAM,GAAG,UAAU,CAAC;gBAC3B,MAAM;YACP,KAAK,KAAK;gBACT,GAAG,IAAI,MAAM,GAAG,UAAU,CAAC;gBAC3B,MAAM;YACP,KAAK,QAAQ;gBACZ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE;oBACvD,GAAG,IAAI,SAAS,CAAC;iBACjB;qBACI,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE;oBAC/B,GAAG,IAAI,QAAQ,CAAC;iBAChB;qBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE;oBACrC,GAAG,IAAI,GAAG,CAAC;iBACX;gBACD,GAAG,IAAI,UAAU,CAAC;gBAClB,MAAM;YACP,KAAK,aAAa;gBACjB,GAAG,IAAI,aAAa,CAAC;gBACrB,MAAM;YACP;gBACC,MAAM;SACP;QACD,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAC1C,OAAO,GAAG,CAAC;IACZ,CAAC;IACD,MAAM;QACL,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YACtB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAC1B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAChE,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;SACnB,CAAC;IACH,CAAC;CACD,CAAA;AA3IY,gBAAgB;IAD5B,YAAY,CAAC,kBAAkB,CAAC;qDAqBxB,kBAAkB;GApBd,gBAAgB,CA2I5B;SA3IY,gBAAgB;AA+I7B;;GAEG;AAEH,IAAa,kBAAkB,0BAA/B,MAAa,kBAAmB,SAAQ,kBAAkB;IACzD,MAAM,CAAC,QAAQ,CAAC,IAAwB,EAAE,YAAmC;QAC5E,OAAO,IAAI,oBAAkB,CAC5B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EACtB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,EACjC,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CACtC,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAwB,EAAE,SAAwB;QAC9D,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,YACC,GAAuC,EACvC,UAAuB,EACvB,QAAiB,EACjB,QAAiB,EACjB,KAAsB;QACtB,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,gBAAkC;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAChD,MAAM,IAAI,GAAW,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,CAAC,IAAc,CAAC,GAAG,KAAK,CAAC;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC;IACD,QAAQ;QACP,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrF,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC9E,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAA;IAC/I,CAAC;IACD,MAAM;QACL,OAAO;YACN,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YACtB,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAChE,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;SACnB,CAAC;IACH,CAAC;CACD,CAAA;AA5CY,kBAAkB;IAD9B,YAAY,CAAC,oBAAoB,CAAC;;GACtB,kBAAkB,CA4C9B;SA5CY,kBAAkB;AAiD/B,IAAa,gBAAgB,wBAA7B,MAAa,gBAAiB,SAAQ,kBAAkB;IACvD,MAAM,CAAC,QAAQ,CAAC,IAAsB,EAAE,YAA8B;QACrE,OAAO,IAAI,kBAAgB,CAC1B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EACtB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAgB,EAChD,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAC9C,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAsB,EAAE,SAAwB;QAC5D,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IACD,YACC,GAAmB,EACnB,UAAuB,EACvB,QAAiB,EACjB,QAAiB,EACjB,KAAsB;QACtB,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,gBAAkC;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC;QACxE,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE;YAChC,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,KAAK;YACjB,GAAG,EAAE,UAA+B,QAAa;gBAChD,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;YACvC,CAAC;SACD,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE;YAChC,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,KAAK;YACjB,GAAG,EAAE;gBACJ,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC;YACnC,CAAC;SACD,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC;IACD,QAAQ;QACP,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrF,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC9E,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAA;IAC9J,CAAC;IACD,MAAM;QACL,OAAO;YACN,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YACtB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAChE,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;SAC3B,CAAC;IACH,CAAC;CACD,CAAA;AA5DY,gBAAgB;IAD5B,YAAY,CAAC,kBAAkB,CAAC;;GACpB,gBAAgB,CA4D5B;SA5DY,gBAAgB;AAgE7B,IAAa,SAAS,iBAAtB,MAAa,SAAU,SAAQ,sBAAsB;IASpD,YAAoB,IAAgF;QACnG,KAAK,EAAE,CAAC;QADW,SAAI,GAAJ,IAAI,CAA4E;IAEpG,CAAC;IAVD,MAAM,CAAC,QAAQ,CAAC,IAAe,EAAE,YAAmC;QACnE,OAAO,IAAI,WAAS,CACnB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAC3B,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAe,EAAE,SAAwB;QACrD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAID,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IACD,cAAc,CAAC,SAAuB,IAAU,CAAC;IACjD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC5C,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,gBAAkC;QACnD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC5C,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC5C,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM;QACL,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;SAC9C,CAAC;IACH,CAAC;CACD,CAAA;AApCY,SAAS;IADrB,YAAY,CAAC,WAAW,CAAC;;GACb,SAAS,CAoCrB;SApCY,SAAS;AAsCtB,MAAM,OAAO,KAAM,SAAQ,sBAAsB;IAEhD,YACW,IAAe,EACf,UAAuB,EACvB,EAAe,EACf,UAA2B;QACrC,KAAK,EAAE,CAAC;QAJE,SAAI,GAAJ,IAAI,CAAW;QACf,eAAU,GAAV,UAAU,CAAa;QACvB,OAAE,GAAF,EAAE,CAAa;QACf,eAAU,GAAV,UAAU,CAAiB;IAEtC,CAAC;IACD,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IACD,aAAa;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IACD,KAAK;QACJ,OAAO,IAAI,CAAC,EAAE,CAAC;IAChB,CAAC;IACD,aAAa;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IACD,cAAc,CAAC,SAAuB;QACrC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;IAClC,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACxD,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAuB,CAAC;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,CAA4B,IAAI;SAAS,CAAC;QACxF,IAAI,gBAAgB,GAAqB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QACzF,mBAAmB;QACnB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAEvC,yBAAyB;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,gBAAgB,GAAG,UAAU,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;QAE5D,kCAAkC;QAClC,gBAAgB,CAAC,2BAA2B,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,cAAc,CAAC,gBAAgB,EAAE,2BAA2B,CAAC,CAAC;QAEtE,OAAO,gBAAgB,CAAC;IACzB,CAAC;IAEO,WAAW,CAAC,KAAY,EAAE,WAAwB,EAAE,YAA6B,eAAe;;QACvG,MAAM,IAAI,GAAkD;YAC3D,CAAC,SAAS,CAAC,QAAE,KAAM,SAAQ,WAAW;oBAYrC,YAAY,GAAG,MAAa;wBAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;wBAC3D,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC;wBALtB,QAAgB,GAA6C,EAAE,CAAC;wBAM/D,IAAI,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC;wBACrG,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;wBAChC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;wBAClC,aAAa,CAAC,cAAc,EAAE,CAAC;wBAC/B,aAAa,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;wBAC5C,aAAa,CAAC,eAAe,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;wBACtD,aAAa,CAAC,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;wBACpE,aAAa,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAClF,aAAa,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;wBACjF,aAAa,CAAC,iBAAiB,EAAE,CAAC;wBAClC,iCAAiC;wBACjC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;oBAChC,CAAC;oBA1BD,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,IAAW;wBAClC,OAAO,IAAI,CAAC;oBACb,CAAC;oBAID,MAAM,CAAC,OAHC,2BAA2B,OAC3B,cAAc,OACd,uBAAuB,EACvB,WAAW,EAAC,KAAW,CAAC;iBAqBhC;qBAnBC,cAAc;gBALR,MAA6B,GAAe,EAAG;gBAC/C,MAAgB,GAA6C,EAAG;gBAChE,MAAyB,GAAG,EAAG;mBAsBtC;SACD,CAAC;QACF,OAAO,IAAI,CAAC,SAAmB,CAAC,CAAC;IAClC,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC5C,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC5C,CAAC;IACD,QAAQ;QACP,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrF,IAAI,gBAAgB,GAAG,QAAQ,CAAC;QAChC,IAAI,IAAI,CAAC,EAAE,EAAE;YACZ,gBAAgB,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;SACvC;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;YACpB,gBAAgB,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;SAC7D;QACD,OAAO,GAAG,UAAU,GAAG,gBAAgB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;IACzE,CAAC;IACD,MAAM;QACL,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACxB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAChE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;SACrC,CAAC;IACH,CAAC;CACD;AAGD,IAAa,gBAAgB,wBAA7B,MAAa,gBAAiB,SAAQ,KAAK;IAC1C,MAAM,CAAC,QAAQ,CAAC,IAAsB,EAAE,YAAmC;QAC1E,OAAO,IAAI,kBAAgB,CAC1B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EACvB,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EACrB,IAAI,CAAC,UAAU,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAChD,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAsB,EAAE,SAAwB;QAC5D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACnC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,YAAY,IAAe,EAAE,UAAuB,EAAE,EAAc,EAAE,UAA2B;QAChG,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;IACzC,CAAC;IACD,eAAe,CAAC,KAAY,EAAE,aAAmB;QAChD,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;IACzD,CAAC;IACD,kBAAkB;QACjB,OAAO,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAG,CAAC;IACtC,CAAC;IAEQ,GAAG,CAAC,KAAY;QACxB,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QACjD,OAAO,gBAAgB,CAAC;IACzB,CAAC;CACD,CAAA;AA9BY,gBAAgB;IAD5B,YAAY,CAAC,kBAAkB,CAAC;qCAgBd,SAAS,SAA+B,UAAU;GAfxD,gBAAgB,CA8B5B;SA9BY,gBAAgB;AAiC7B,IAAa,eAAe,uBAA5B,MAAa,eAAgB,SAAQ,KAAK;IACzC,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,YAAmC;QACzE,OAAO,IAAI,iBAAe,CACzB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EACvB,IAAI,CAAC,UAAU,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAChD,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAqB,EAAE,SAAwB;QAC3D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;CAED,CAAA;AAdY,eAAe;IAD3B,YAAY,CAAC,iBAAiB,CAAC;GACnB,eAAe,CAc3B;SAdY,eAAe","sourcesContent":["import type {\n\tDeclarationExpression, ExpressionEventPath,\n\tExpressionNode, NodeDeserializer, VisitNodeType\n} from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport { __decorate } from 'tslib';\nimport { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { Identifier } from '../definition/values.js';\nimport { MemberExpression } from '../definition/member.js';\nimport { FunctionExpression } from '../definition/function.js';\nimport { BlockStatement } from '../statement/control/block.js';\nimport { TypeOf } from '../utils.js';\nimport { Decorator } from './decorator.js';\nimport { CallExpression } from '../computing/call.js';\n\nconst TEMP_CLASS_NAME: unique symbol = Symbol('TempClassName');\nconst SUPER: unique symbol = Symbol('Super');\nconst NEW_TARGET: unique symbol = Symbol('NewTarget');\nconst IMPORT_META: unique symbol = Symbol('ImportMeta');\nconst STACK: unique symbol = Symbol('Stack');\n\nconst GET_PARAMETERS: unique symbol = Symbol('GetParameters');\nconst GET_SUPER_PROPERTY: unique symbol = Symbol('GetSuperProperty');\nconst CALL_SUPER_Method: unique symbol = Symbol('CallSuperMethod');\n\nconst CONSTRUCTOR: unique symbol = Symbol('Constructor');\nconst PRIVATE_SYMBOL: unique symbol = Symbol('Private');\nconst INSTANCE_PRIVATE_SYMBOL: unique symbol = Symbol('InstancePrivate');\nconst STATIC_INITIALIZATION_BLOCK: unique symbol = Symbol('StaticBlock');\n\ninterface ClassConstructor {\n\t/**\n\t * A reference to the prototype.\n\t */\n\treadonly prototype: ClassInstance;\n\n\t[GET_PARAMETERS](args: any[]): any[];\n\t[STATIC_INITIALIZATION_BLOCK]: Function[];\n\t[PRIVATE_SYMBOL]: { [key: PropertyKey]: any };\n\t[INSTANCE_PRIVATE_SYMBOL]: { [key: PropertyKey]: any };\n\t[CONSTRUCTOR]: Function;\n\t[key: string]: any;\n}\n\ndeclare var ClassInstance: ClassConstructor;\ninterface ClassInstance {\n\t[PRIVATE_SYMBOL]: { [key: PropertyKey]: any };\n\t[STACK]: Stack;\n\t[key: string]: any;\n}\n\n\n/**\n * A `super` pseudo-expression.\n */\n@Deserializer('Super')\nexport class Super extends AbstractExpressionNode {\n\tstatic INSTANCE = new Super();\n\tstatic fromJSON(node: Super): Super {\n\t\treturn Super.INSTANCE;\n\t}\n\tconstructor() {\n\t\tsuper();\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('Super.#set() Method not implemented.');\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\tthrow new Error('Super.#get() Method not implemented.');\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\tthrow new Error('Super.#dependency() Method not implemented.');\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\tthrow new Error('Super.#dependencyPath() Method not implemented.');\n\t}\n\n\ttoString(): string {\n\t\treturn `super`;\n\t}\n\ttoJson(): { [key: string]: any; } {\n\t\treturn {};\n\t}\n}\n\n/**\n * MetaProperty node represents\n * - `new.target` meta property in ES2015.\n * - `import.meta` meta property in ES2030.\n * \n * In the future, it will represent other meta properties as well.\n */\n@Deserializer('MetaProperty')\nexport class MetaProperty extends MemberExpression {\n\n\tpublic static NewTarget = new MetaProperty(new Identifier('new'), new Identifier('target'));\n\n\tpublic static ImportMeta = new MetaProperty(new Identifier('import'), new Identifier('meta'));\n\n\tprivate static getJsonName(identifier: ExpressionNode): string {\n\t\treturn Reflect.get(identifier, 'name');\n\t}\n\n\tstatic fromJSON(node: MetaProperty, deserializer: NodeDeserializer<any>): MetaProperty {\n\t\tif (MetaProperty.getJsonName(node.meta) === 'new' && MetaProperty.getJsonName(node.property) === 'target') {\n\t\t\treturn MetaProperty.NewTarget;\n\t\t}\n\t\telse if (MetaProperty.getJsonName(node.meta) === 'import' && MetaProperty.getJsonName(node.property) === 'meta') {\n\t\t\treturn MetaProperty.ImportMeta;\n\t\t}\n\t\treturn new MetaProperty(\n\t\t\tdeserializer(node.meta),\n\t\t\tdeserializer(node.property)\n\t\t);\n\t}\n\tstatic visit(node: MetaProperty, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.meta);\n\t\tvisitNode(node.property);\n\t}\n\tconstructor(private meta: Identifier, property: Identifier) {\n\t\tsuper(meta, property, false);\n\t}\n\tgetMeta() {\n\t\treturn this.meta;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tget(stack: Stack, thisContext?: any) {\n\t\tif (MetaProperty.getJsonName(this.meta) === 'new' && MetaProperty.getJsonName(this.property) === 'target') {\n\t\t\treturn stack.get(NEW_TARGET);\n\t\t}\n\t\telse if (MetaProperty.getJsonName(this.meta) === 'import' && MetaProperty.getJsonName(this.property) === 'meta') {\n\t\t\tconst importObject = stack.getModule()?.get('import');\n\t\t\treturn importObject['meta'];\n\t\t}\n\t\treturn super.get(stack, thisContext);\n\t}\n\ttoString(): string {\n\t\treturn `${this.meta.toString()}.${this.property.toString()}`;\n\t}\n\ttoJson(): { [key: string]: any; } {\n\t\treturn {\n\t\t\tmeta: this.meta.toJSON(),\n\t\t\tproperty: this.property.toJSON(),\n\t\t};\n\t}\n}\n\n/**\n * A private identifier refers to private class elements. For a private name `#a`, its name is `a`.\n */\n@Deserializer('PrivateIdentifier')\nexport class PrivateIdentifier extends AbstractExpressionNode {\n\tstatic fromJSON(node: PrivateIdentifier): PrivateIdentifier {\n\t\treturn new PrivateIdentifier(\n\t\t\tnode.name as string\n\t\t);\n\t}\n\tconstructor(private name: string) {\n\t\tsuper();\n\t}\n\tgetName() {\n\t\treturn this.name;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tconst privateScope = stack.findScope(PRIVATE_SYMBOL);\n\t\tprivateScope.getScope(PRIVATE_SYMBOL)?.set(this.name, value);\n\t}\n\tget(stack: Stack, thisContext?: ClassInstance | ClassConstructor) {\n\t\tif (thisContext) {\n\t\t\treturn thisContext[PRIVATE_SYMBOL][this.name];\n\t\t}\n\t\t// return stack.get(this.name);\n\t\tlet privateObj = stack.get('this');\n\t\tif (privateObj) {\n\t\t\treturn privateObj[PRIVATE_SYMBOL][this.name];\n\t\t}\n\t\tprivateObj = stack.get(PRIVATE_SYMBOL);\n\t\treturn privateObj[this.name];\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn [];\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\ttoString(): string {\n\t\treturn `#${this.name}`;\n\t}\n\ttoJson(): { [key: string]: any; } {\n\t\treturn {\n\t\t\tname: this.name\n\t\t};\n\t}\n}\n\n/**\n * A static block static { } is a block statement serving as an additional static initializer.\n */\n@Deserializer('StaticBlock')\nexport class StaticBlock extends BlockStatement {\n\tstatic fromJSON(node: StaticBlock, deserializer: NodeDeserializer<any>): StaticBlock {\n\t\treturn new StaticBlock(deserializer(node.body));\n\t}\n\tconstructor(body: ExpressionNode[]) {\n\t\tsuper(body);\n\t}\n\tget(stack: Stack, classConstructor?: ClassConstructor): void {\n\t\tconst constructor = classConstructor!;\n\t\tconstructor[STATIC_INITIALIZATION_BLOCK].push(() => super.get(stack));\n\t}\n\ttoString(): string {\n\t\treturn `static ${super.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tbody: this.body.map(node => node.toJSON())\n\t\t};\n\t}\n}\n\nexport abstract class AbstractDefinition extends AbstractExpressionNode {\n\tprotected 'static': boolean;\n\tconstructor(\n\t\tprotected key: ExpressionNode | PrivateIdentifier,\n\t\tprotected decorators: Decorator[],\n\t\tprotected computed: boolean,\n\t\tisStatic: boolean,\n\t\tprotected value?: ExpressionNode,) {\n\t\tsuper();\n\t\tthis.static = isStatic;\n\t}\n\tgetKey() {\n\t\treturn this.key;\n\t}\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\tisComputed() {\n\t\treturn this.computed;\n\t}\n\tisStatic() {\n\t\treturn this.static;\n\t}\n\tgetDecorators() {\n\t\treturn this.decorators;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('AbstractDefinition.#set() Method not implemented.');\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn [];\n\t}\n\tgetTarget(classConstructor: ClassConstructor) {\n\t\treturn this.static\n\t\t\t? (this.key instanceof PrivateIdentifier ? classConstructor[PRIVATE_SYMBOL] : classConstructor)\n\t\t\t: (this.key instanceof PrivateIdentifier ? classConstructor[INSTANCE_PRIVATE_SYMBOL] : classConstructor.prototype);\n\t}\n\tgetKeyName(stack: Stack) {\n\t\tswitch (true) {\n\t\t\tcase this.computed: return this.key.get(stack);\n\t\t\tcase this.key instanceof Identifier:\n\t\t\tcase this.key instanceof PrivateIdentifier: return (this.key as Identifier | PrivateIdentifier).getName() as string;\n\t\t\tdefault: return this.key.toString();\n\t\t}\n\t}\n\tabstract get(stack: Stack, classConstructor: ClassConstructor): void;\n\tabstract toString(): string;\n\tabstract toJson(): { [key: string]: any; };\n}\n\nexport type MethodDefinitionKind = 'constructor' | 'method' | 'set' | 'get';\n\n/**\n * - When key is a PrivateIdentifier, computed must be false and kind can not be \"constructor\".\n */\n@Deserializer('MethodDefinition')\nexport class MethodDefinition extends AbstractDefinition {\n\tstatic fromJSON(node: MethodDefinition, deserializer: NodeDeserializer<any>): MethodDefinition {\n\t\treturn new MethodDefinition(\n\t\t\tnode.kind,\n\t\t\tdeserializer(node.key),\n\t\t\tdeserializer(node.value),\n\t\t\tnode.decorators.map(deserializer),\n\t\t\tnode.computed,\n\t\t\tnode.static\n\t\t);\n\t}\n\tstatic visit(node: MethodDefinition, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.key);\n\t\tvisitNode(node.value);\n\t\tnode.decorators.forEach(visitNode);\n\t}\n\tdeclare protected value: FunctionExpression;\n\tconstructor(\n\t\tprivate kind: MethodDefinitionKind,\n\t\tkey: ExpressionNode | PrivateIdentifier,\n\t\tvalue: FunctionExpression,\n\t\tdecorators: Decorator[],\n\t\tcomputed: boolean,\n\t\tisStatic: boolean) {\n\t\tsuper(key, decorators, computed, isStatic, value);\n\t}\n\tgetKind() {\n\t\treturn this.kind;\n\t}\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\tget(stack: Stack, classConstructor: ClassConstructor): void {\n\t\tif (this.kind === 'constructor') {\n\t\t\tthis.initConstructor(stack, classConstructor);\n\t\t\treturn;\n\t\t}\n\t\tconst target = this.getTarget(classConstructor);\n\t\tconst name: string = this.getKeyName(stack);\n\t\tconst value = this.value?.get(stack);\n\t\tswitch (this.kind) {\n\t\t\tcase 'method':\n\t\t\t\ttarget[name] = value;\n\t\t\t\tbreak;\n\t\t\tcase 'set':\n\t\t\t\tObject.defineProperty(target, name, {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tset: value as (v: any) => void,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'get':\n\t\t\t\tObject.defineProperty(target, name, {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tget: value as () => any,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\tconst decorators = this.decorators.map(decorator => decorator.get(stack));\n\t\tdecorators.length && __decorate(decorators, target, name, null);\n\t}\n\tprivate initConstructor(stack: Stack, classConstructor: ClassConstructor) {\n\t\tconst body = (this.value.getBody() as BlockStatement).getBody();\n\t\tlet superIndex = body\n\t\t\t.findIndex(call => call instanceof CallExpression && Super.INSTANCE === call.getCallee());\n\t\tif (superIndex === -1) {\n\t\t\tsuperIndex = body.length;\n\t\t}\n\t\tconst superCall = body[superIndex] as CallExpression | undefined;\n\n\t\tconst blockBeforeSuper = new BlockStatement(body.slice(0, superIndex));\n\t\tconst blockAfterSuper = new BlockStatement(body.slice(superIndex + 1));\n\n\t\tif (superCall) {\n\t\t\tclassConstructor[GET_PARAMETERS] = function (this: ClassConstructor, params: any[]) {\n\t\t\t\tconst scope = stack.pushBlockScope();\n\t\t\t\tthis.value.setParameter(stack, params);\n\t\t\t\tblockBeforeSuper.get(stack);\n\t\t\t\tconst parameters = superCall.getCallParameters(stack);\n\t\t\t\tstack.clearTo(scope);\n\t\t\t\treturn parameters;\n\t\t\t};\n\t\t}\n\n\t\tclassConstructor[CONSTRUCTOR] = function (this: ClassInstance, params: any[]) {\n\t\t\tconst scope = this[STACK].pushBlockScope();\n\t\t\tblockAfterSuper.get(this[STACK]);\n\t\t\tstack.clearTo(scope);\n\t\t};\n\t}\n\ttoString(): string {\n\t\tlet str = this.decorators.map(decorator => decorator.toString()).join(' ');\n\t\tif (str.length) {\n\t\t\tstr += ' ';\n\t\t}\n\t\tif (this.static) {\n\t\t\tstr += 'static ';\n\t\t}\n\t\tconst methodName = this.key.toString();\n\t\tswitch (this.kind) {\n\t\t\tcase 'get':\n\t\t\t\tstr += 'get ' + methodName;\n\t\t\t\tbreak;\n\t\t\tcase 'set':\n\t\t\t\tstr += 'set ' + methodName;\n\t\t\t\tbreak;\n\t\t\tcase 'method':\n\t\t\t\tif (this.value.getAsync() && this.value.getGenerator()) {\n\t\t\t\t\tstr += 'async *';\n\t\t\t\t}\n\t\t\t\telse if (this.value.getAsync()) {\n\t\t\t\t\tstr += 'async ';\n\t\t\t\t} else if (this.value.getGenerator()) {\n\t\t\t\t\tstr += '*';\n\t\t\t\t}\n\t\t\t\tstr += methodName;\n\t\t\t\tbreak;\n\t\t\tcase 'constructor':\n\t\t\t\tstr += 'constructor';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\tstr += this.value.paramsAndBodyToString();\n\t\treturn str;\n\t}\n\ttoJson(): { [key: string]: any; } {\n\t\treturn {\n\t\t\tkind: this.kind,\n\t\t\tkey: this.key.toJSON(),\n\t\t\tvalue: this.value.toJSON(),\n\t\t\tdecorators: this.decorators.map(decorator => decorator.toJSON()),\n\t\t\tcomputed: this.computed,\n\t\t\tstatic: this.static,\n\t\t};\n\t}\n}\n\n\n\n/**\n * - When key is a PrivateIdentifier, computed must be false.\n */\n@Deserializer('PropertyDefinition')\nexport class PropertyDefinition extends AbstractDefinition {\n\tstatic fromJSON(node: PropertyDefinition, deserializer: NodeDeserializer<any>): PropertyDefinition {\n\t\treturn new PropertyDefinition(\n\t\t\tdeserializer(node.key),\n\t\t\tnode.decorators.map(deserializer),\n\t\t\tnode.computed,\n\t\t\tnode.static,\n\t\t\tnode.value && deserializer(node.value)\n\t\t);\n\t}\n\tstatic visit(node: PropertyDefinition, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.key);\n\t\tnode.value && visitNode(node.value);\n\t}\n\tconstructor(\n\t\tkey: ExpressionNode | PrivateIdentifier,\n\t\tdecorators: Decorator[],\n\t\tcomputed: boolean,\n\t\tisStatic: boolean,\n\t\tvalue?: ExpressionNode) {\n\t\tsuper(key, decorators, computed, isStatic, value);\n\t}\n\tget(stack: Stack, classConstructor: ClassConstructor): void {\n\t\tconst target = this.getTarget(classConstructor);\n\t\tconst name: string = this.getKeyName(stack);\n\t\tconst value = this.value?.get(stack);\n\t\ttarget[name as string] = value;\n\t\tconst decorators = this.decorators.map(decorator => decorator.get(stack));\n\t\tdecorators.length && __decorate(decorators, target, name, null);\n\t}\n\ttoString(): string {\n\t\tconst decorators = this.decorators.map(decorator => decorator.toString()).join('\\n');\n\t\tconst name = this.computed ? `[${this.key.toString()}]` : this.key.toString();\n\t\treturn `${decorators.length ? decorators + ' ' : ''}${this.static ? 'static ' : ''}${name}${this.value ? ` = ${this.value.toString()}` : ''};`\n\t}\n\ttoJson(): { [key: string]: any; } {\n\t\treturn {\n\t\t\tkey: this.key.toJSON(),\n\t\t\tvalue: this.value?.toJSON(),\n\t\t\tdecorators: this.decorators.map(decorator => decorator.toJSON()),\n\t\t\tcomputed: this.computed,\n\t\t\tstatic: this.static,\n\t\t};\n\t}\n}\n\n\n\n@Deserializer('AccessorProperty')\nexport class AccessorProperty extends AbstractDefinition {\n\tstatic fromJSON(node: AccessorProperty, deserializer: NodeDeserializer): AccessorProperty {\n\t\treturn new AccessorProperty(\n\t\t\tdeserializer(node.key),\n\t\t\tnode.decorators.map(deserializer) as Decorator[],\n\t\t\tnode.computed,\n\t\t\tnode.static,\n\t\t\tnode.value ? deserializer(node.value) : void 0\n\t\t);\n\t}\n\tstatic visit(node: AccessorProperty, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.key);\n\t\tnode.value && visitNode(node.value);\n\t\tnode.decorators.forEach(visitNode);\n\t}\n\tconstructor(\n\t\tkey: ExpressionNode,\n\t\tdecorators: Decorator[],\n\t\tcomputed: boolean,\n\t\tisStatic: boolean,\n\t\tvalue?: ExpressionNode) {\n\t\tsuper(key, decorators, computed, isStatic, value);\n\t}\n\tget(stack: Stack, classConstructor: ClassConstructor): void {\n\t\tconst target = this.getTarget(classConstructor);\n\t\tconst name = this.getKeyName(stack);\n\t\tconst value = this.value?.get(stack);\n\t\ttarget[name] = value;\n\t\tconst ref = this.static ? classConstructor : classConstructor.prototype;\n\t\tObject.defineProperty(ref, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tset: function (this: ClassInstance, setValue: any) {\n\t\t\t\tthis[PRIVATE_SYMBOL][name] = setValue;\n\t\t\t},\n\t\t});\n\t\tObject.defineProperty(ref, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: function (this: ClassInstance) {\n\t\t\t\treturn this[PRIVATE_SYMBOL][name];\n\t\t\t},\n\t\t});\n\t\tconst decorators = this.decorators.map(decorator => decorator.get(stack));\n\t\tdecorators.length && __decorate(decorators, ref, name, null);\n\t}\n\ttoString(): string {\n\t\tconst decorators = this.decorators.map(decorator => decorator.toString()).join('\\n');\n\t\tconst name = this.computed ? `[${this.key.toString()}]` : this.key.toString();\n\t\treturn `${decorators.length ? decorators.concat(' ') : ''}${this.static ? 'static ' : ''}accessor ${name}${this.value ? ` = ${this.value.toString()}` : ''};`\n\t}\n\ttoJson(): { [key: string]: any; } {\n\t\treturn {\n\t\t\tkey: this.key.toJSON(),\n\t\t\tdecorators: this.decorators.map(decorator => decorator.toJSON()),\n\t\t\tcomputed: this.computed,\n\t\t\tstatic: this.static,\n\t\t\tvalue: this.value?.toJSON(),\n\t\t};\n\t}\n}\n\n\n@Deserializer('ClassBody')\nexport class ClassBody extends AbstractExpressionNode {\n\tstatic fromJSON(node: ClassBody, deserializer: NodeDeserializer<any>): ClassBody {\n\t\treturn new ClassBody(\n\t\t\tnode.body.map(deserializer)\n\t\t);\n\t}\n\tstatic visit(node: ClassBody, visitNode: VisitNodeType): void {\n\t\tnode.body.forEach(visitNode);\n\t}\n\tconstructor(private body: (MethodDefinition | PropertyDefinition | AccessorProperty | StaticBlock)[]) {\n\t\tsuper();\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('Method not implemented.');\n\t}\n\tget(stack: Stack, classConstructor: ClassConstructor) {\n\t\tthis.body.forEach(definition => definition.get(stack, classConstructor));\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\tthrow new Error('Method not implemented.');\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\tthrow new Error('Method not implemented.');\n\t}\n\ttoString(): string {\n\t\treturn this.body.map(definition => `\\t${definition.toString()}`).join('\\n');\n\t}\n\ttoJson(): { [key: string]: any; } {\n\t\treturn {\n\t\t\tbody: this.body.map(method => method.toJSON())\n\t\t};\n\t}\n}\n\nexport class Class extends AbstractExpressionNode {\n\tprivate sharedVariables?: Scope<any>[];\n\tconstructor(\n\t\tprotected body: ClassBody,\n\t\tprotected decorators: Decorator[],\n\t\tprotected id?: Identifier,\n\t\tprotected superClass?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tgetDecorators() {\n\t\treturn this.decorators;\n\t}\n\tgetId() {\n\t\treturn this.id;\n\t}\n\tgetSuperClass() {\n\t\treturn this.superClass;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.sharedVariables = scopeList;\n\t}\n\tset(stack: Stack) {\n\t\tthrow new Error(`Class.#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst className = this.id?.get(stack) as string | undefined;\n\t\tconst parentClass = this.superClass?.get(stack) as TypeOf<any> | undefined ?? class { };\n\t\tlet classConstructor: ClassConstructor = this.createClass(stack, parentClass, className);\n\t\t// build class body\n\t\tthis.body.get(stack, classConstructor);\n\n\t\t// apply class decorators\n\t\tconst decorators = this.decorators.map(decorator => decorator.get(stack));\n\t\tclassConstructor = __decorate(decorators, classConstructor);\n\n\t\t// run static initialization block\n\t\tclassConstructor[STATIC_INITIALIZATION_BLOCK].forEach(block => block());\n\t\tReflect.deleteProperty(classConstructor, STATIC_INITIALIZATION_BLOCK);\n\n\t\treturn classConstructor;\n\t}\n\n\tprivate createClass(stack: Stack, parentClass: TypeOf<any>, className: string | symbol = TEMP_CLASS_NAME) {\n\t\tconst TEMP: { [key: typeof className]: ClassConstructor } = {\n\t\t\t[className]: class extends parentClass {\n\t\t\t\tstatic [GET_PARAMETERS](args: any[]): any[] {\n\t\t\t\t\treturn args;\n\t\t\t\t}\n\t\t\t\tstatic [STATIC_INITIALIZATION_BLOCK]: Function[] = [];\n\t\t\t\tstatic [PRIVATE_SYMBOL]: { [key: string | number | symbol]: any } = {};\n\t\t\t\tstatic [INSTANCE_PRIVATE_SYMBOL] = {};\n\t\t\t\tstatic [CONSTRUCTOR](): void { }\n\n\t\t\t\t[PRIVATE_SYMBOL]: { [key: string | number | symbol]: any } = {};\n\n\t\t\t\t[STACK]: Stack;\n\t\t\t\tconstructor(...params: any[]) {\n\t\t\t\t\tconst parameters = TEMP[className][GET_PARAMETERS](params);\n\t\t\t\t\tsuper(...parameters);\n\t\t\t\t\tthis[PRIVATE_SYMBOL] = Object.assign(this[PRIVATE_SYMBOL], TEMP[className][INSTANCE_PRIVATE_SYMBOL]);\n\t\t\t\t\tthis[STACK] = stack.copyStack();\n\t\t\t\t\tconst instanceStack = this[STACK];\n\t\t\t\t\tinstanceStack.pushBlockScope();\n\t\t\t\t\tinstanceStack.declareVariable('this', this);\n\t\t\t\t\tinstanceStack.declareVariable(NEW_TARGET, new.target);\n\t\t\t\t\tinstanceStack.declareVariable(PRIVATE_SYMBOL, this[PRIVATE_SYMBOL]);\n\t\t\t\t\tinstanceStack.declareVariable(CALL_SUPER_Method, (name: string) => super[name]());\n\t\t\t\t\tinstanceStack.declareVariable(GET_SUPER_PROPERTY, (name: string) => super[name]);\n\t\t\t\t\tinstanceStack.pushReactiveScope();\n\t\t\t\t\t// init fields and methods values\n\t\t\t\t\tTEMP[className][CONSTRUCTOR]();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn TEMP[className as string];\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\tthrow new Error('Method not implemented.');\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\tthrow new Error('Method not implemented.');\n\t}\n\ttoString() {\n\t\tconst decorators = this.decorators.map(decorator => decorator.toString()).join('\\n');\n\t\tlet classDeclaration = 'class ';\n\t\tif (this.id) {\n\t\t\tclassDeclaration += this.id.toString();\n\t\t}\n\t\tif (this.superClass) {\n\t\t\tclassDeclaration += ' extends ' + this.superClass.toString();\n\t\t}\n\t\treturn `${decorators}${classDeclaration} {\\n${this.body.toString()}\\n}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tbody: this.body.toJSON(),\n\t\t\tdecorators: this.decorators.map(decorator => decorator.toJSON()),\n\t\t\tid: this.id?.toJSON(),\n\t\t\tsuperClass: this.superClass?.toJSON(),\n\t\t};\n\t}\n}\n\n@Deserializer('ClassDeclaration')\nexport class ClassDeclaration extends Class implements DeclarationExpression {\n\tstatic fromJSON(node: ClassDeclaration, deserializer: NodeDeserializer<any>): ClassDeclaration {\n\t\treturn new ClassDeclaration(\n\t\t\tdeserializer(node.body),\n\t\t\tdeserializer(node.id),\n\t\t\tnode.superClass && deserializer(node.superClass)\n\t\t);\n\t}\n\tstatic visit(node: ClassDeclaration, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.body);\n\t\tnode.decorators.forEach(visitNode);\n\t\tvisitNode(node.id);\n\t\tnode.superClass && visitNode(node.superClass);\n\t}\n\tdeclare protected id: Identifier;\n\tconstructor(body: ClassBody, decorators: Decorator[], id: Identifier, superClass?: ExpressionNode) {\n\t\tsuper(body, decorators, id, superClass);\n\t}\n\tdeclareVariable(stack: Stack, propertyValue?: any) {\n\t\tstack.declareVariable(this.id.getName(), propertyValue);\n\t}\n\tgetDeclarationName(): string {\n\t\treturn this.id.getDeclarationName()!;\n\t}\n\n\toverride get(stack: Stack) {\n\t\tconst classConstructor = super.get(stack);\n\t\tthis.id.declareVariable(stack, classConstructor);\n\t\treturn classConstructor;\n\t}\n}\n\n@Deserializer('ClassExpression')\nexport class ClassExpression extends Class {\n\tstatic fromJSON(node: ClassExpression, deserializer: NodeDeserializer<any>): ClassExpression {\n\t\treturn new ClassExpression(\n\t\t\tdeserializer(node.body),\n\t\t\tnode.superClass && deserializer(node.superClass)\n\t\t);\n\t}\n\tstatic visit(node: ClassExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.body);\n\t\tnode.decorators.forEach(visitNode);\n\t\tnode.id && visitNode(node.id);\n\t\tnode.superClass && visitNode(node.superClass);\n\t}\n\n}\n"]}
@@ -2,6 +2,10 @@ import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeTy
2
2
  import type { Scope } from '../../scope/scope.js';
3
3
  import type { Stack } from '../../scope/stack.js';
4
4
  import { AbstractExpressionNode, ReturnValue } from '../abstract.js';
5
+ /**
6
+ * The expression whose value is to be returned.
7
+ * If omitted, undefined is returned instead.
8
+ */
5
9
  export declare class ReturnStatement extends AbstractExpressionNode {
6
10
  private argument?;
7
11
  static fromJSON(node: ReturnStatement, deserializer: NodeDeserializer): ReturnStatement;
@@ -2,6 +2,10 @@ var ReturnStatement_1;
2
2
  import { __decorate, __metadata } from "tslib";
3
3
  import { AbstractExpressionNode, ReturnValue } from '../abstract.js';
4
4
  import { Deserializer } from '../deserialize/deserialize.js';
5
+ /**
6
+ * The expression whose value is to be returned.
7
+ * If omitted, undefined is returned instead.
8
+ */
5
9
  let ReturnStatement = ReturnStatement_1 = class ReturnStatement extends AbstractExpressionNode {
6
10
  constructor(argument) {
7
11
  super();
@@ -24,6 +28,7 @@ let ReturnStatement = ReturnStatement_1 = class ReturnStatement extends Abstract
24
28
  }
25
29
  get(stack) {
26
30
  return new ReturnValue(this.argument?.get(stack));
31
+ // nothing should be written after this operation in a function body.
27
32
  }
28
33
  dependency(computed) {
29
34
  return this.argument?.dependency(computed) || [];
@@ -1 +1 @@
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;IAO1D,YAAoB,QAAyB;QAC5C,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAiB;IAE7C,CAAC;IARD,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;IACD,MAAM,CAAC,KAAK,CAAC,IAAqB,EAAE,SAAwB;QAC3D,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,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;AAnCY,eAAe;IAD3B,YAAY,CAAC,iBAAiB,CAAC;;GACnB,eAAe,CAmC3B;SAnCY,eAAe","sourcesContent":["import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } 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\tstatic visit(node: ReturnStatement, visitNode: VisitNodeType): void {\n\t\tnode.argument && visitNode(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(`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
+ {"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;AAE7D;;;GAGG;AAEH,IAAa,eAAe,uBAA5B,MAAa,eAAgB,SAAQ,sBAAsB;IAO1D,YAAoB,QAAyB;QAC5C,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAiB;IAE7C,CAAC;IARD,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;IACD,MAAM,CAAC,KAAK,CAAC,IAAqB,EAAE,SAAwB;QAC3D,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,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;QAClD,qEAAqE;IACtE,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;AAnCY,eAAe;IAD3B,YAAY,CAAC,iBAAiB,CAAC;;GACnB,eAAe,CAmC3B;SAnCY,eAAe","sourcesContent":["import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } 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\tstatic visit(node: ReturnStatement, visitNode: VisitNodeType): void {\n\t\tnode.argument && visitNode(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(`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"]}
@@ -2,6 +2,10 @@ import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeTy
2
2
  import type { Scope } from '../../scope/scope.js';
3
3
  import type { Stack } from '../../scope/stack.js';
4
4
  import { AbstractExpressionNode } from '../abstract.js';
5
+ /**
6
+ * The expression whose value is to be returned.
7
+ * If omitted, undefined is returned instead.
8
+ */
5
9
  export declare class ThrowStatement extends AbstractExpressionNode {
6
10
  private argument;
7
11
  static fromJSON(node: ThrowStatement, deserializer: NodeDeserializer): ThrowStatement;
@@ -2,6 +2,10 @@ var ThrowStatement_1, CatchClauseNode_1, TryCatchNode_1;
2
2
  import { __decorate, __metadata } from "tslib";
3
3
  import { AbstractExpressionNode } from '../abstract.js';
4
4
  import { Deserializer } from '../deserialize/deserialize.js';
5
+ /**
6
+ * The expression whose value is to be returned.
7
+ * If omitted, undefined is returned instead.
8
+ */
5
9
  let ThrowStatement = ThrowStatement_1 = class ThrowStatement extends AbstractExpressionNode {
6
10
  constructor(argument) {
7
11
  super();
@@ -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, ExpressionEventPath, 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';\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\tstatic visit(node: ThrowStatement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.argument);\n\t}\n\tconstructor(private argument: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.argument.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`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"]}
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, ExpressionEventPath, 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';\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\tstatic visit(node: ThrowStatement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.argument);\n\t}\n\tconstructor(private argument: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.argument.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`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"]}
@@ -2,6 +2,12 @@ import type { NodeDeserializer, ExpressionNode, CanFindScope, ExpressionEventPat
2
2
  import type { Scope } from '../../scope/scope.js';
3
3
  import type { Stack } from '../../scope/stack.js';
4
4
  import { AbstractExpressionNode } from '../abstract.js';
5
+ /**
6
+ * ```js
7
+ * const x = {method: function(){...}};
8
+ * const z = x::method;
9
+ * ```
10
+ */
5
11
  export declare class BindExpression extends AbstractExpressionNode implements CanFindScope {
6
12
  protected object: ExpressionNode;
7
13
  protected property: ExpressionNode;
@@ -2,6 +2,12 @@ var BindExpression_1;
2
2
  import { __decorate, __metadata } from "tslib";
3
3
  import { Deserializer } from '../deserialize/deserialize.js';
4
4
  import { AbstractExpressionNode } from '../abstract.js';
5
+ /**
6
+ * ```js
7
+ * const x = {method: function(){...}};
8
+ * const z = x::method;
9
+ * ```
10
+ */
5
11
  let BindExpression = BindExpression_1 = class BindExpression extends AbstractExpressionNode {
6
12
  constructor(object, property, computed, optional = false) {
7
13
  super();