@ibyar/expressions 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/api/abstract.js.map +1 -1
  2. package/api/class/class.js.map +1 -1
  3. package/api/computing/call.js.map +1 -1
  4. package/api/computing/new.js.map +1 -1
  5. package/api/computing/spread.js.map +1 -1
  6. package/api/computing/throw.js.map +1 -1
  7. package/api/computing/yield.js.map +1 -1
  8. package/api/definition/array.js.map +1 -1
  9. package/api/definition/bind.js.map +1 -1
  10. package/api/definition/function.js.map +1 -1
  11. package/api/definition/member.js.map +1 -1
  12. package/api/definition/object.js.map +1 -1
  13. package/api/definition/values.js.map +1 -1
  14. package/api/deserialize/deserialize.js.map +1 -1
  15. package/api/expression.d.ts +3 -0
  16. package/api/expression.d.ts.map +1 -1
  17. package/api/expression.js.map +1 -1
  18. package/api/module/export.js.map +1 -1
  19. package/api/module/import.js.map +1 -1
  20. package/api/operators/assignment.js.map +1 -1
  21. package/api/operators/binary.js.map +1 -1
  22. package/api/operators/logical.js.map +1 -1
  23. package/api/operators/pipeline.js.map +1 -1
  24. package/api/operators/unary.js.map +1 -1
  25. package/api/operators/update.js.map +1 -1
  26. package/api/statement/control/block.js.map +1 -1
  27. package/api/statement/control/if.js.map +1 -1
  28. package/api/statement/control/switch.js.map +1 -1
  29. package/api/statement/control/with.js.map +1 -1
  30. package/api/statement/declarations/declares.js.map +1 -1
  31. package/api/statement/iterations/for.js.map +1 -1
  32. package/api/statement/iterations/while.js.map +1 -1
  33. package/bin/cli.d.ts +3 -0
  34. package/bin/cli.d.ts.map +1 -0
  35. package/bin/cli.js +73 -0
  36. package/bin/cli.js.map +1 -0
  37. package/package.json +7 -4
  38. package/scope/event.js.map +1 -1
  39. package/scope/finalizer.js.map +1 -1
  40. package/scope/index.d.ts +1 -0
  41. package/scope/index.d.ts.map +1 -1
  42. package/scope/index.js +1 -0
  43. package/scope/index.js.map +1 -1
  44. package/scope/pool.js.map +1 -1
  45. package/scope/proxy.js.map +1 -1
  46. package/scope/scope.d.ts.map +1 -1
  47. package/scope/scope.js +4 -3
  48. package/scope/scope.js.map +1 -1
  49. package/scope/signal.d.ts +75 -0
  50. package/scope/signal.d.ts.map +1 -0
  51. package/scope/signal.js +226 -0
  52. package/scope/signal.js.map +1 -0
  53. package/scope/stack.d.ts +1 -1
  54. package/scope/stack.d.ts.map +1 -1
  55. package/scope/stack.js.map +1 -1
  56. package/scope/variable.d.ts +1 -0
  57. package/scope/variable.d.ts.map +1 -0
  58. package/scope/variable.js +2 -0
  59. package/scope/variable.js.map +1 -0
  60. package/scope/variables.d.ts +66 -0
  61. package/scope/variables.d.ts.map +1 -0
  62. package/scope/variables.js +214 -0
  63. package/scope/variables.js.map +1 -0
  64. package/v8/enums.d.ts +5 -5
  65. package/v8/enums.d.ts.map +1 -1
  66. package/v8/enums.js.map +1 -1
  67. package/v8/factory.js.map +1 -1
  68. package/v8/inline.js.map +1 -1
  69. package/v8/parser.js.map +1 -1
  70. package/v8/stream.js.map +1 -1
  71. package/v8/token.js.map +1 -1
  72. package/visit/visitor.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../src/expressions/api/abstract.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AwaitPromiseInfo, Stack } from '../scope/stack.js';\nimport type {\n\tNodeDeserializer, ExpressionNode, ExpressionNodConstructor,\n\tNodeJsonType, DeclarationExpression, ExpressionEventMap,\n\tExpressionEventPath, VisitNodeType, SourceLocation\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}\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\ttype: string;\n\tloc?: SourceLocation;\n\trange?: [number, number];\n\tconstructor(range?: [number, number], loc?: SourceLocation) {\n\t\tthis.type = this.getClass().type;\n\t\trange && (this.range = range);\n\t\tloc && (this.loc = loc);\n\t}\n\tgetClass(): ExpressionNodConstructor<ExpressionNode> {\n\t\treturn this.constructor as ExpressionNodConstructor<ExpressionNode>;\n\t}\n\ttoJSON(key?: string): NodeJsonType {\n\t\tconst json = this.toJson(key);\n\t\tconst index: { range?: [number, number], loc?: SourceLocation } = {};\n\t\tthis.range && (index.range = this.range);\n\t\tthis.loc && (index.loc = this.loc);\n\t\treturn Object.assign({ type: this.type }, json, index);\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 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}\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, range?: [number, number], loc?: SourceLocation) {\n\t\tsuper(range, loc);\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\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 { AwaitPromiseInfo, Stack } from '../scope/stack.js';\nimport type {\n\tNodeDeserializer, ExpressionNode, ExpressionNodConstructor,\n\tNodeJsonType, DeclarationExpression, ExpressionEventMap,\n\tExpressionEventPath, VisitNodeType, SourceLocation\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}\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\ttype: string;\n\tloc?: SourceLocation;\n\trange?: [number, number];\n\tconstructor(range?: [number, number], loc?: SourceLocation) {\n\t\tthis.type = this.getClass().type;\n\t\trange && (this.range = range);\n\t\tloc && (this.loc = loc);\n\t}\n\tgetClass(): ExpressionNodConstructor<ExpressionNode> {\n\t\treturn this.constructor as ExpressionNodConstructor<ExpressionNode>;\n\t}\n\ttoJSON(key?: string): NodeJsonType {\n\t\tconst json = this.toJson(key);\n\t\tconst index: { range?: [number, number], loc?: SourceLocation } = {};\n\t\tthis.range && (index.range = this.range);\n\t\tthis.loc && (index.loc = this.loc);\n\t\treturn Object.assign({ type: this.type }, json, index);\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 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}\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, range?: [number, number], loc?: SourceLocation) {\n\t\tsuper(range, loc);\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\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 +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, ExpressionNode,\n\tNodeDeserializer, SourceLocation, VisitNodeType\n} from '../expression.js';\nimport { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { Identifier } from '../definition/values.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 PRIVATE_SYMBOL: unique symbol = Symbol('#');;\n\ninterface ClassConstructor {\n\t/**\n\t * A reference to the prototype.\n\t */\n\treadonly prototype: ClassInstance;\n\n\t/**\n\t * private static properties and methods\n\t */\n\t[PRIVATE_SYMBOL]: Record<PropertyKey, any>;\n\n\t/**\n\t * public static class properties\n\t */\n\t[key: PropertyKey]: any;\n}\n\ndeclare var ClassInstance: ClassConstructor;\ninterface ClassInstance {\n\n\t/**\n\t * private instance properties and methods\n\t */\n\t[PRIVATE_SYMBOL]: Record<PropertyKey, any>;\n\n\t/**\n\t * public instance properties\n\t */\n\t[key: PropertyKey]: any;\n}\n\n\ntype PropertyInitializer = () => { key: PropertyKey, value: any, isPrivate: boolean };\n\nclass ClassInitializer {\n\n\t/**\n\t * register class public static properties and methods\n\t */\n\tprivate staticInitializer: Record<PropertyKey, PropertyDescriptor & ThisType<any>> = {};\n\n\t/**\n\t * register class private static properties and methods\n\t */\n\tprivate staticPrivateInitializer: Record<PropertyKey, PropertyDescriptor & ThisType<any>> = {};\n\n\t/**\n\t * register static initialization block\n\t */\n\tprivate staticInitializerBlock: (() => void)[] = [];\n\n\t/**\n\t * register class constructor function\n\t */\n\tprivate instanceConstructor?: Function;\n\n\t/**\n\t * register super parameter resolver\n\t */\n\tprivate superParameterResolver: ((params: any[]) => any[]) = (params: any[]) => params;\n\n\t/**\n\t * register in class property\n\t */\n\tprivate instanceMethod: Record<PropertyKey, PropertyDescriptor & ThisType<any>> = {};\n\n\t/**\n\t * register method in instance private space\n\t */\n\tprivate privateInstanceMethod: Record<PropertyKey, PropertyDescriptor & ThisType<any>> = {};\n\n\t/**\n\t * register property in instance itself\n\t */\n\tprivate instanceInitializer: PropertyInitializer[] = [];\n\n\taddStaticInitializer(key: PropertyKey, attributes: PropertyDescriptor & ThisType<any>) {\n\t\tReflect.set(this.staticInitializer, key, attributes)\n\t}\n\taddStaticPrivateInitializer(key: PropertyKey, attributes: PropertyDescriptor & ThisType<any>) {\n\t\tReflect.set(this.staticPrivateInitializer, key, attributes)\n\t}\n\taddStaticInitializerBlock(block: () => void) {\n\t\tthis.staticInitializerBlock.push(block);\n\t}\n\tsetConstructor(cstr: Function) {\n\t\tthis.instanceConstructor = cstr;\n\t}\n\tsetParameterResolver(resolver: (params: any[]) => any[]) {\n\t\tthis.superParameterResolver = resolver;\n\t}\n\taddInstanceMethod(key: PropertyKey, attributes: PropertyDescriptor & ThisType<any>) {\n\t\tReflect.set(this.instanceMethod, key, attributes);\n\t}\n\taddPrivateInstanceMethod(key: PropertyKey, attributes: PropertyDescriptor & ThisType<any>) {\n\t\tReflect.set(this.privateInstanceMethod, key, attributes);\n\t}\n\taddInstanceInitializer(initializer: PropertyInitializer) {\n\t\tthis.instanceInitializer.push(initializer);\n\t}\n\tinitClass(classConstructor: ClassConstructor) {\n\t\tObject.defineProperties(classConstructor, this.staticInitializer);\n\t\tObject.defineProperties(classConstructor[PRIVATE_SYMBOL], this.staticPrivateInitializer);\n\t\tObject.defineProperties(classConstructor.prototype, this.instanceMethod);\n\t\tthis.staticInitializerBlock.forEach(block => block());\n\t}\n\tgetSuperArguments(args: any[]) {\n\t\treturn this.superParameterResolver(args);\n\t}\n\tinitInstance(instance: ClassInstance) {\n\t\tObject.defineProperties(instance[PRIVATE_SYMBOL], this.privateInstanceMethod);\n\t\tthis.instanceInitializer.forEach(initializer => {\n\t\t\tconst definition = initializer();\n\t\t\tconst target = definition.isPrivate ? instance[PRIVATE_SYMBOL] : instance;\n\t\t\ttarget[definition.key] = definition.value;\n\t\t});\n\t\tthis.instanceConstructor?.apply(instance);\n\t}\n}\n\n\n/**\n * A `super` pseudo-expression.\n */\n@Deserializer('Super')\nexport class Super extends AbstractExpressionNode {\n\tstatic fromJSON(node: Super): Super {\n\t\treturn new Super(node.range, node.loc);\n\t}\n\tconstructor(range?: [number, number], loc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\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\treturn stack.get('super');\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\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 AbstractExpressionNode {\n\tstatic fromJSON(node: MetaProperty, deserializer: NodeDeserializer<any>): MetaProperty {\n\t\treturn new MetaProperty(\n\t\t\tdeserializer(node.meta),\n\t\t\tdeserializer(node.property),\n\t\t\tnode.range,\n\t\t\tnode.loc\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, private property: Identifier, range?: [number, number], loc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetMeta() {\n\t\treturn this.meta;\n\t}\n\tgetProperty() {\n\t\treturn this.property;\n\t}\n\tget(stack: Stack) {\n\t\tconst metaRef = this.meta.get(stack);\n\t\tif (metaRef === undefined || metaRef === null) {\n\t\t\tthrow new TypeError(`Cannot read meta property '${this.property.toString()}' of ${metaRef}, reading [${this.toString()}]`);\n\t\t}\n\t\treturn this.property.get(stack, metaRef);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`MetaProperty#set() has no implementation.`);\n\t}\n\tdependency(computed?: true | undefined): ExpressionNode[] {\n\t\treturn [];\n\t}\n\tdependencyPath(computed?: true | undefined): ExpressionEventPath[] {\n\t\treturn [];\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 Identifier {\n\tstatic fromJSON(node: PrivateIdentifier): PrivateIdentifier {\n\t\treturn new PrivateIdentifier(\n\t\t\tnode.name as string,\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tget(stack: Stack, thisContext: ClassInstance) {\n\t\treturn thisContext[PRIVATE_SYMBOL][this.name];\n\t}\n\tset(stack: Stack, value: any) {\n\t\tconst thisContext = stack.lastScope().getContext();\n\t\treturn thisContext[PRIVATE_SYMBOL][this.name] = value;\n\t}\n\ttoString(): string {\n\t\treturn `#${this.name}`;\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), node.range, node.loc);\n\t}\n\tget(stack: Stack, classInitializer?: ClassInitializer): void {\n\t\tclassInitializer?.addStaticInitializerBlock(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\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\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\tisPrivate() {\n\t\treturn this.key instanceof PrivateIdentifier;\n\t}\n\tgetDecorators() {\n\t\treturn this.decorators;\n\t}\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\tgetKeyName(stack: Stack) {\n\t\tif (this.computed) {\n\t\t\t// private properties can't be computed\n\t\t\treturn (this.key as ExpressionNode).get(stack);\n\t\t}\n\t\tif (this.key instanceof Identifier) {\n\t\t\treturn this.key.getName();\n\t\t}\n\t\treturn this.key.toString();\n\t}\n\tabstract get(stack: Stack, initializer?: ClassInitializer): 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\tnode.range,\n\t\t\tnode.loc\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 'static': boolean;\n\tdeclare value: FunctionExpression;\n\tafterInstanceConstruct: any;\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\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(key, decorators, computed, isStatic, value, range, loc);\n\t}\n\tgetKind() {\n\t\treturn this.kind;\n\t}\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\tget(stack: Stack, initializer: ClassInitializer): void {\n\t\tif (this.kind === 'constructor') {\n\t\t\tthis.initConstructor(stack, initializer);\n\t\t\treturn;\n\t\t}\n\t\tconst name: string = this.getKeyName(stack);\n\t\tconst value = this.value?.get(stack);\n\t\tconst attributes = this.getPropertyAttributes(value);\n\t\tif (this.isStatic() && this.isPrivate()) {\n\t\t\tinitializer.addStaticPrivateInitializer(name, attributes);\n\t\t} else if (this.isStatic()) {\n\t\t\tinitializer.addStaticInitializer(name, attributes);\n\t\t} else if (this.isPrivate()) {\n\t\t\tinitializer.addPrivateInstanceMethod(name, attributes);\n\t\t} else {\n\t\t\tinitializer.addInstanceMethod(name, attributes);\n\t\t}\n\t}\n\n\tprivate getPropertyAttributes(value: any): PropertyDescriptor & ThisType<any> {\n\t\tswitch (this.kind) {\n\t\t\tcase 'set': return {\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\tset: value,\n\t\t\t};\n\t\t\tcase 'get': return {\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\tget: value,\n\t\t\t};\n\t\t\tdefault:\n\t\t\tcase 'method': return {\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: value\n\t\t\t};\n\t\t}\n\t}\n\tprivate initConstructor(stack: Stack, initializer: ClassInitializer) {\n\t\tconst body = (this.value.getBody() as BlockStatement).getBody();\n\t\tlet superIndex = body\n\t\t\t.findIndex(call => call instanceof CallExpression && call.getCallee() instanceof Super);\n\t\tconst blockAfterSuper = new BlockStatement(body.slice(superIndex + 1));\n\t\tinitializer.setConstructor(function (this: ClassInstance, params: any[]) {\n\t\t\tconst scope = stack.pushBlockScope();\n\t\t\tblockAfterSuper.get(stack);\n\t\t\tstack.clearTo(scope);\n\t\t});\n\t\tif (superIndex >= 0) {\n\t\t\tconst blockBeforeSuper = new BlockStatement(body.slice(0, superIndex));\n\t\t\tconst superCall = body[superIndex] as CallExpression;\n\t\t\tconst cstrExpr = this;\n\t\t\tinitializer.setParameterResolver(function (params: any[]) {\n\t\t\t\tconst scope = stack.pushBlockScope();\n\t\t\t\tcstrExpr.value.defineFunctionArguments(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\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 * - 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\tnode.range,\n\t\t\tnode.loc\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\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(key, decorators, computed, isStatic, value, range, loc);\n\t}\n\tget(stack: Stack, initializer: ClassInitializer): void {\n\t\tconst name: string = this.getKeyName(stack);\n\t\tif (!this.isStatic()) {\n\t\t\tinitializer.addInstanceInitializer(() => ({ isPrivate: this.isPrivate(), key: name, value: this.value?.get(stack) }));\n\t\t\treturn;\n\t\t}\n\t\tconst value = this.value?.get(stack);\n\t\tconst attributes = { writable: true, configurable: true, enumerable: true, value };\n\t\tif (this.isPrivate()) {\n\t\t\tinitializer.addStaticPrivateInitializer(name, attributes);\n\t\t} else {\n\t\t\tinitializer.addStaticInitializer(name, attributes);\n\t\t}\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\tnode.range,\n\t\t\tnode.loc\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\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(key, decorators, computed, isStatic, value, range, loc);\n\t}\n\tget(stack: Stack, initializer: ClassInitializer): void {\n\t\tconst name: string = this.getKeyName(stack);\n\t\tconst accessorAttributes = {\n\t\t\twritable: false,\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tset: function (this: ClassInstance, value: any) {\n\t\t\t\tthis[PRIVATE_SYMBOL][name] = value;\n\t\t\t},\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\tif (!this.isStatic()) {\n\t\t\tinitializer.addInstanceInitializer(() => ({ isPrivate: true, key: name, value: this.value?.get(stack) }));\n\t\t\tinitializer.addInstanceMethod(name, accessorAttributes);\n\t\t\treturn;\n\t\t}\n\t\tconst value = this.value?.get(stack);\n\t\tconst valueAttribute = { writable: true, configurable: true, enumerable: true, value };\n\t\tinitializer.addStaticInitializer(name, accessorAttributes);\n\t\tinitializer.addStaticPrivateInitializer(name, valueAttribute);\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\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: ClassBody, visitNode: VisitNodeType): void {\n\t\tnode.body.forEach(visitNode);\n\t}\n\tconstructor(\n\t\tprivate body: (MethodDefinition | PropertyDefinition | AccessorProperty | StaticBlock)[],\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('Method not implemented.');\n\t}\n\tget(stack: Stack, initializer: ClassInitializer) {\n\t\tthis.body.forEach(definition => definition.get(stack, initializer));\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\tconstructor(\n\t\tprotected body: ClassBody,\n\t\tprotected decorators: Decorator[],\n\t\tprotected id?: Identifier,\n\t\tprotected superClass?: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\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\tset(stack: Stack) {\n\t\tthrow new Error(`Class.#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\t// freeze stack\n\t\tstack = stack.copyStack();\n\t\tconst className = this.id?.getName() as string ?? TEMP_CLASS_NAME;\n\t\tconst SuperClass = this.superClass?.get(stack) as TypeOf<any> | undefined ?? class { };\n\t\tconst initializer = new ClassInitializer();\n\t\tconst ClassConstructor: ClassConstructor = this.createClass(SuperClass, className, initializer);\n\n\t\t// build class body\n\t\tstack.pushBlockScopeFor({\n\t\t\t'this': ClassConstructor,\n\t\t\t'super': SuperClass,\n\t\t});\n\t\tthis.body.get(stack, initializer);\n\t\tinitializer.initClass(ClassConstructor);\n\t\treturn ClassConstructor;\n\t}\n\n\tprivate createClass(parentClass: TypeOf<any>, className: string | symbol, initializer: ClassInitializer) {\n\t\tconst nameClassDeclaration: Record<PropertyKey, ClassConstructor> = {\n\t\t\t[className]: class extends parentClass {\n\t\t\t\tstatic [Symbol.toStringTag] = className;\n\t\t\t\tstatic [PRIVATE_SYMBOL]: { [key: string | number | symbol]: any } = {};\n\t\t\t\t[PRIVATE_SYMBOL]: { [key: string | number | symbol]: any } = {};\n\t\t\t\tconstructor(...params: any[]) {\n\t\t\t\t\tconst parameters = initializer.getSuperArguments(params);\n\t\t\t\t\tsuper(...parameters);\n\t\t\t\t\tinitializer.initInstance(this);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn nameClassDeclaration[className];\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\tnode.decorators.map(deserializer),\n\t\t\tdeserializer(node.id),\n\t\t\tnode.superClass && deserializer(node.superClass),\n\t\t\tnode.range,\n\t\t\tnode.loc\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(\n\t\tbody: ClassBody,\n\t\tdecorators: Decorator[],\n\t\tid: Identifier,\n\t\tsuperClass?: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(body, decorators, id, superClass, range, loc);\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.decorators.map(deserializer),\n\t\t\tnode.id && deserializer(node.id),\n\t\t\tnode.superClass && deserializer(node.superClass),\n\t\t\tnode.range,\n\t\t\tnode.loc\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\tconstructor(\n\t\tbody: ClassBody,\n\t\tdecorators: Decorator[],\n\t\tid?: Identifier,\n\t\tsuperClass?: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(body, decorators, id, superClass, range, loc);\n\t}\n\n}\n"]}
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, ExpressionNode,\n\tNodeDeserializer, SourceLocation, VisitNodeType\n} from '../expression.js';\nimport { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { Identifier } from '../definition/values.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 PRIVATE_SYMBOL: unique symbol = Symbol('#');;\n\ninterface ClassConstructor {\n\t/**\n\t * A reference to the prototype.\n\t */\n\treadonly prototype: ClassInstance;\n\n\t/**\n\t * private static properties and methods\n\t */\n\t[PRIVATE_SYMBOL]: Record<PropertyKey, any>;\n\n\t/**\n\t * public static class properties\n\t */\n\t[key: PropertyKey]: any;\n}\n\ndeclare var ClassInstance: ClassConstructor;\ninterface ClassInstance {\n\n\t/**\n\t * private instance properties and methods\n\t */\n\t[PRIVATE_SYMBOL]: Record<PropertyKey, any>;\n\n\t/**\n\t * public instance properties\n\t */\n\t[key: PropertyKey]: any;\n}\n\n\ntype PropertyInitializer = () => { key: PropertyKey, value: any, isPrivate: boolean };\n\nclass ClassInitializer {\n\n\t/**\n\t * register class public static properties and methods\n\t */\n\tprivate staticInitializer: Record<PropertyKey, PropertyDescriptor & ThisType<any>> = {};\n\n\t/**\n\t * register class private static properties and methods\n\t */\n\tprivate staticPrivateInitializer: Record<PropertyKey, PropertyDescriptor & ThisType<any>> = {};\n\n\t/**\n\t * register static initialization block\n\t */\n\tprivate staticInitializerBlock: (() => void)[] = [];\n\n\t/**\n\t * register class constructor function\n\t */\n\tprivate instanceConstructor?: Function;\n\n\t/**\n\t * register super parameter resolver\n\t */\n\tprivate superParameterResolver: ((params: any[]) => any[]) = (params: any[]) => params;\n\n\t/**\n\t * register in class property\n\t */\n\tprivate instanceMethod: Record<PropertyKey, PropertyDescriptor & ThisType<any>> = {};\n\n\t/**\n\t * register method in instance private space\n\t */\n\tprivate privateInstanceMethod: Record<PropertyKey, PropertyDescriptor & ThisType<any>> = {};\n\n\t/**\n\t * register property in instance itself\n\t */\n\tprivate instanceInitializer: PropertyInitializer[] = [];\n\n\taddStaticInitializer(key: PropertyKey, attributes: PropertyDescriptor & ThisType<any>) {\n\t\tReflect.set(this.staticInitializer, key, attributes)\n\t}\n\taddStaticPrivateInitializer(key: PropertyKey, attributes: PropertyDescriptor & ThisType<any>) {\n\t\tReflect.set(this.staticPrivateInitializer, key, attributes)\n\t}\n\taddStaticInitializerBlock(block: () => void) {\n\t\tthis.staticInitializerBlock.push(block);\n\t}\n\tsetConstructor(cstr: Function) {\n\t\tthis.instanceConstructor = cstr;\n\t}\n\tsetParameterResolver(resolver: (params: any[]) => any[]) {\n\t\tthis.superParameterResolver = resolver;\n\t}\n\taddInstanceMethod(key: PropertyKey, attributes: PropertyDescriptor & ThisType<any>) {\n\t\tReflect.set(this.instanceMethod, key, attributes);\n\t}\n\taddPrivateInstanceMethod(key: PropertyKey, attributes: PropertyDescriptor & ThisType<any>) {\n\t\tReflect.set(this.privateInstanceMethod, key, attributes);\n\t}\n\taddInstanceInitializer(initializer: PropertyInitializer) {\n\t\tthis.instanceInitializer.push(initializer);\n\t}\n\tinitClass(classConstructor: ClassConstructor) {\n\t\tObject.defineProperties(classConstructor, this.staticInitializer);\n\t\tObject.defineProperties(classConstructor[PRIVATE_SYMBOL], this.staticPrivateInitializer);\n\t\tObject.defineProperties(classConstructor.prototype, this.instanceMethod);\n\t\tthis.staticInitializerBlock.forEach(block => block());\n\t}\n\tgetSuperArguments(args: any[]) {\n\t\treturn this.superParameterResolver(args);\n\t}\n\tinitInstance(instance: ClassInstance) {\n\t\tObject.defineProperties(instance[PRIVATE_SYMBOL], this.privateInstanceMethod);\n\t\tthis.instanceInitializer.forEach(initializer => {\n\t\t\tconst definition = initializer();\n\t\t\tconst target = definition.isPrivate ? instance[PRIVATE_SYMBOL] : instance;\n\t\t\ttarget[definition.key] = definition.value;\n\t\t});\n\t\tthis.instanceConstructor?.apply(instance);\n\t}\n}\n\n\n/**\n * A `super` pseudo-expression.\n */\n@Deserializer('Super')\nexport class Super extends AbstractExpressionNode {\n\tstatic fromJSON(node: Super): Super {\n\t\treturn new Super(node.range, node.loc);\n\t}\n\tconstructor(range?: [number, number], loc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\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\treturn stack.get('super');\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\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 AbstractExpressionNode {\n\tstatic fromJSON(node: MetaProperty, deserializer: NodeDeserializer<any>): MetaProperty {\n\t\treturn new MetaProperty(\n\t\t\tdeserializer(node.meta),\n\t\t\tdeserializer(node.property),\n\t\t\tnode.range,\n\t\t\tnode.loc\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, private property: Identifier, range?: [number, number], loc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetMeta() {\n\t\treturn this.meta;\n\t}\n\tgetProperty() {\n\t\treturn this.property;\n\t}\n\tget(stack: Stack) {\n\t\tconst metaRef = this.meta.get(stack);\n\t\tif (metaRef === undefined || metaRef === null) {\n\t\t\tthrow new TypeError(`Cannot read meta property '${this.property.toString()}' of ${metaRef}, reading [${this.toString()}]`);\n\t\t}\n\t\treturn this.property.get(stack, metaRef);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`MetaProperty#set() has no implementation.`);\n\t}\n\tdependency(computed?: true | undefined): ExpressionNode[] {\n\t\treturn [];\n\t}\n\tdependencyPath(computed?: true | undefined): ExpressionEventPath[] {\n\t\treturn [];\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 Identifier {\n\tstatic fromJSON(node: PrivateIdentifier): PrivateIdentifier {\n\t\treturn new PrivateIdentifier(\n\t\t\tnode.name as string,\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tget(stack: Stack, thisContext: ClassInstance) {\n\t\treturn thisContext[PRIVATE_SYMBOL][this.name];\n\t}\n\tset(stack: Stack, value: any) {\n\t\tconst thisContext = stack.lastScope().getContext();\n\t\treturn thisContext[PRIVATE_SYMBOL][this.name] = value;\n\t}\n\ttoString(): string {\n\t\treturn `#${this.name}`;\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), node.range, node.loc);\n\t}\n\tget(stack: Stack, classInitializer?: ClassInitializer): void {\n\t\tclassInitializer?.addStaticInitializerBlock(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\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\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\tisPrivate() {\n\t\treturn this.key instanceof PrivateIdentifier;\n\t}\n\tgetDecorators() {\n\t\treturn this.decorators;\n\t}\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\tgetKeyName(stack: Stack) {\n\t\tif (this.computed) {\n\t\t\t// private properties can't be computed\n\t\t\treturn (this.key as ExpressionNode).get(stack);\n\t\t}\n\t\tif (this.key instanceof Identifier) {\n\t\t\treturn this.key.getName();\n\t\t}\n\t\treturn this.key.toString();\n\t}\n\tabstract get(stack: Stack, initializer?: ClassInitializer): 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\tnode.range,\n\t\t\tnode.loc\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 'static': boolean;\n\tdeclare value: FunctionExpression;\n\tafterInstanceConstruct: any;\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\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(key, decorators, computed, isStatic, value, range, loc);\n\t}\n\tgetKind() {\n\t\treturn this.kind;\n\t}\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\tget(stack: Stack, initializer: ClassInitializer): void {\n\t\tif (this.kind === 'constructor') {\n\t\t\tthis.initConstructor(stack, initializer);\n\t\t\treturn;\n\t\t}\n\t\tconst name: string = this.getKeyName(stack);\n\t\tconst value = this.value?.get(stack);\n\t\tconst attributes = this.getPropertyAttributes(value);\n\t\tif (this.isStatic() && this.isPrivate()) {\n\t\t\tinitializer.addStaticPrivateInitializer(name, attributes);\n\t\t} else if (this.isStatic()) {\n\t\t\tinitializer.addStaticInitializer(name, attributes);\n\t\t} else if (this.isPrivate()) {\n\t\t\tinitializer.addPrivateInstanceMethod(name, attributes);\n\t\t} else {\n\t\t\tinitializer.addInstanceMethod(name, attributes);\n\t\t}\n\t}\n\n\tprivate getPropertyAttributes(value: any): PropertyDescriptor & ThisType<any> {\n\t\tswitch (this.kind) {\n\t\t\tcase 'set': return {\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\tset: value,\n\t\t\t};\n\t\t\tcase 'get': return {\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\tget: value,\n\t\t\t};\n\t\t\tdefault:\n\t\t\tcase 'method': return {\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: value\n\t\t\t};\n\t\t}\n\t}\n\tprivate initConstructor(stack: Stack, initializer: ClassInitializer) {\n\t\tconst body = (this.value.getBody() as BlockStatement).getBody();\n\t\tlet superIndex = body\n\t\t\t.findIndex(call => call instanceof CallExpression && call.getCallee() instanceof Super);\n\t\tconst blockAfterSuper = new BlockStatement(body.slice(superIndex + 1));\n\t\tinitializer.setConstructor(function (this: ClassInstance, params: any[]) {\n\t\t\tconst scope = stack.pushBlockScope();\n\t\t\tblockAfterSuper.get(stack);\n\t\t\tstack.clearTo(scope);\n\t\t});\n\t\tif (superIndex >= 0) {\n\t\t\tconst blockBeforeSuper = new BlockStatement(body.slice(0, superIndex));\n\t\t\tconst superCall = body[superIndex] as CallExpression;\n\t\t\tconst cstrExpr = this;\n\t\t\tinitializer.setParameterResolver(function (params: any[]) {\n\t\t\t\tconst scope = stack.pushBlockScope();\n\t\t\t\tcstrExpr.value.defineFunctionArguments(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\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 * - 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\tnode.range,\n\t\t\tnode.loc\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\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(key, decorators, computed, isStatic, value, range, loc);\n\t}\n\tget(stack: Stack, initializer: ClassInitializer): void {\n\t\tconst name: string = this.getKeyName(stack);\n\t\tif (!this.isStatic()) {\n\t\t\tinitializer.addInstanceInitializer(() => ({ isPrivate: this.isPrivate(), key: name, value: this.value?.get(stack) }));\n\t\t\treturn;\n\t\t}\n\t\tconst value = this.value?.get(stack);\n\t\tconst attributes = { writable: true, configurable: true, enumerable: true, value };\n\t\tif (this.isPrivate()) {\n\t\t\tinitializer.addStaticPrivateInitializer(name, attributes);\n\t\t} else {\n\t\t\tinitializer.addStaticInitializer(name, attributes);\n\t\t}\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\tnode.range,\n\t\t\tnode.loc\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\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(key, decorators, computed, isStatic, value, range, loc);\n\t}\n\tget(stack: Stack, initializer: ClassInitializer): void {\n\t\tconst name: string = this.getKeyName(stack);\n\t\tconst accessorAttributes = {\n\t\t\twritable: false,\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tset: function (this: ClassInstance, value: any) {\n\t\t\t\tthis[PRIVATE_SYMBOL][name] = value;\n\t\t\t},\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\tif (!this.isStatic()) {\n\t\t\tinitializer.addInstanceInitializer(() => ({ isPrivate: true, key: name, value: this.value?.get(stack) }));\n\t\t\tinitializer.addInstanceMethod(name, accessorAttributes);\n\t\t\treturn;\n\t\t}\n\t\tconst value = this.value?.get(stack);\n\t\tconst valueAttribute = { writable: true, configurable: true, enumerable: true, value };\n\t\tinitializer.addStaticInitializer(name, accessorAttributes);\n\t\tinitializer.addStaticPrivateInitializer(name, valueAttribute);\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\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: ClassBody, visitNode: VisitNodeType): void {\n\t\tnode.body.forEach(visitNode);\n\t}\n\tconstructor(\n\t\tprivate body: (MethodDefinition | PropertyDefinition | AccessorProperty | StaticBlock)[],\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('Method not implemented.');\n\t}\n\tget(stack: Stack, initializer: ClassInitializer) {\n\t\tthis.body.forEach(definition => definition.get(stack, initializer));\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\tconstructor(\n\t\tprotected body: ClassBody,\n\t\tprotected decorators: Decorator[],\n\t\tprotected id?: Identifier,\n\t\tprotected superClass?: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\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\tset(stack: Stack) {\n\t\tthrow new Error(`Class.#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\t// freeze stack\n\t\tstack = stack.copyStack();\n\t\tconst className = this.id?.getName() as string ?? TEMP_CLASS_NAME;\n\t\tconst SuperClass = this.superClass?.get(stack) as TypeOf<any> | undefined ?? class { };\n\t\tconst initializer = new ClassInitializer();\n\t\tconst ClassConstructor: ClassConstructor = this.createClass(SuperClass, className, initializer);\n\n\t\t// build class body\n\t\tstack.pushBlockScopeFor({\n\t\t\t'this': ClassConstructor,\n\t\t\t'super': SuperClass,\n\t\t});\n\t\tthis.body.get(stack, initializer);\n\t\tinitializer.initClass(ClassConstructor);\n\t\treturn ClassConstructor;\n\t}\n\n\tprivate createClass(parentClass: TypeOf<any>, className: string | symbol, initializer: ClassInitializer) {\n\t\tconst nameClassDeclaration: Record<PropertyKey, ClassConstructor> = {\n\t\t\t[className]: class extends parentClass {\n\t\t\t\tstatic [Symbol.toStringTag] = className;\n\t\t\t\tstatic [PRIVATE_SYMBOL]: { [key: string | number | symbol]: any } = {};\n\t\t\t\t[PRIVATE_SYMBOL]: { [key: string | number | symbol]: any } = {};\n\t\t\t\tconstructor(...params: any[]) {\n\t\t\t\t\tconst parameters = initializer.getSuperArguments(params);\n\t\t\t\t\tsuper(...parameters);\n\t\t\t\t\tinitializer.initInstance(this);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn nameClassDeclaration[className];\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\tnode.decorators.map(deserializer),\n\t\t\tdeserializer(node.id),\n\t\t\tnode.superClass && deserializer(node.superClass),\n\t\t\tnode.range,\n\t\t\tnode.loc\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(\n\t\tbody: ClassBody,\n\t\tdecorators: Decorator[],\n\t\tid: Identifier,\n\t\tsuperClass?: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(body, decorators, id, superClass, range, loc);\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.decorators.map(deserializer),\n\t\t\tnode.id && deserializer(node.id),\n\t\t\tnode.superClass && deserializer(node.superClass),\n\t\t\tnode.range,\n\t\t\tnode.loc\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\tconstructor(\n\t\tbody: ClassBody,\n\t\tdecorators: Decorator[],\n\t\tid?: Identifier,\n\t\tsuperClass?: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(body, decorators, id, superClass, range, loc);\n\t}\n\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"call.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/call.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, ExpressionEventPath,\n\tVisitNodeType, SourceLocation\n} from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { SpreadElement } from './spread.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { MemberExpression } from '../definition/member.js';\nimport { Identifier } from '../definition/values.js';\n\n@Deserializer('CallExpression')\nexport class CallExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: CallExpression, deserializer: NodeDeserializer): CallExpression {\n\t\treturn new CallExpression(\n\t\t\tdeserializer(node.callee),\n\t\t\tnode.arguments.map(param => deserializer(param)),\n\t\t\tnode.optional,\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: CallExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.callee);\n\t\tnode.arguments.forEach(visitNode);\n\t}\n\tprivate arguments: ExpressionNode[];\n\tconstructor(\n\t\tprivate callee: ExpressionNode,\n\t\tparams: ExpressionNode[],\n\t\tprivate optional: boolean = false,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t\tthis.arguments = params;\n\t}\n\tgetCallee() {\n\t\treturn this.callee;\n\t}\n\tgetArguments() {\n\t\treturn this.arguments;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`CallExpression#set() has no implementation.`);\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\tconst funCallBack: Function = this.callee.get(stack) as Function;\n\t\tif (this.optional && (funCallBack === null || funCallBack === undefined)) {\n\t\t\treturn;\n\t\t}\n\t\tconst parameters: any[] = this.getCallParameters(stack);\n\t\tif (!thisContext && this.callee instanceof MemberExpression) {\n\t\t\tthisContext = this.callee.getObject().get(stack);\n\t\t} else if (!thisContext && this.callee instanceof Identifier) {\n\t\t\tthisContext = stack.findScope(this.callee.getName()).getContextProxy?.();\n\t\t}\n\t\treturn funCallBack.apply(thisContext, parameters);\n\t}\n\tgetCallParameters(stack: Stack): any[] {\n\t\tconst parameters: any[] = [];\n\t\tfor (const arg of this.arguments) {\n\t\t\tif (arg instanceof SpreadElement) {\n\t\t\t\tconst paramScope = stack.pushBlockScopeFor(parameters);\n\t\t\t\targ.get(stack);\n\t\t\t\tstack.clearTo(paramScope);\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tparameters.push(arg.get(stack));\n\t\t\t}\n\t\t}\n\t\treturn parameters;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.callee.dependency(computed).concat(this.arguments.flatMap(param => param.dependency(computed)));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.callee.dependencyPath(computed).concat(this.arguments.flatMap(param => param.dependencyPath(computed)));\n\t}\n\ttoString(): string {\n\t\treturn `${this.callee.toString()}${this.optional ? '?.' : ''}(${this.arguments.map(arg => arg.toString()).join(', ')})`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tcallee: this.callee.toJSON(),\n\t\t\targuments: this.arguments.map(arg => arg.toJSON()),\n\t\t\toptional: this.optional\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"call.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/call.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, ExpressionEventPath,\n\tVisitNodeType, SourceLocation\n} from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { SpreadElement } from './spread.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { MemberExpression } from '../definition/member.js';\nimport { Identifier } from '../definition/values.js';\n\n@Deserializer('CallExpression')\nexport class CallExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: CallExpression, deserializer: NodeDeserializer): CallExpression {\n\t\treturn new CallExpression(\n\t\t\tdeserializer(node.callee),\n\t\t\tnode.arguments.map(param => deserializer(param)),\n\t\t\tnode.optional,\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: CallExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.callee);\n\t\tnode.arguments.forEach(visitNode);\n\t}\n\tprivate arguments: ExpressionNode[];\n\tconstructor(\n\t\tprivate callee: ExpressionNode,\n\t\tparams: ExpressionNode[],\n\t\tprivate optional: boolean = false,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t\tthis.arguments = params;\n\t}\n\tgetCallee() {\n\t\treturn this.callee;\n\t}\n\tgetArguments() {\n\t\treturn this.arguments;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`CallExpression#set() has no implementation.`);\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\tconst funCallBack: Function = this.callee.get(stack) as Function;\n\t\tif (this.optional && (funCallBack === null || funCallBack === undefined)) {\n\t\t\treturn;\n\t\t}\n\t\tconst parameters: any[] = this.getCallParameters(stack);\n\t\tif (!thisContext && this.callee instanceof MemberExpression) {\n\t\t\tthisContext = this.callee.getObject().get(stack);\n\t\t} else if (!thisContext && this.callee instanceof Identifier) {\n\t\t\tthisContext = stack.findScope(this.callee.getName()).getContextProxy?.();\n\t\t}\n\t\treturn funCallBack.apply(thisContext, parameters);\n\t}\n\tgetCallParameters(stack: Stack): any[] {\n\t\tconst parameters: any[] = [];\n\t\tfor (const arg of this.arguments) {\n\t\t\tif (arg instanceof SpreadElement) {\n\t\t\t\tconst paramScope = stack.pushBlockScopeFor(parameters);\n\t\t\t\targ.get(stack);\n\t\t\t\tstack.clearTo(paramScope);\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tparameters.push(arg.get(stack));\n\t\t\t}\n\t\t}\n\t\treturn parameters;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.callee.dependency(computed).concat(this.arguments.flatMap(param => param.dependency(computed)));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.callee.dependencyPath(computed).concat(this.arguments.flatMap(param => param.dependencyPath(computed)));\n\t}\n\ttoString(): string {\n\t\treturn `${this.callee.toString()}${this.optional ? '?.' : ''}(${this.arguments.map(arg => arg.toString()).join(', ')})`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tcallee: this.callee.toJSON(),\n\t\t\targuments: this.arguments.map(arg => arg.toJSON()),\n\t\t\toptional: this.optional\n\t\t};\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"new.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/new.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, ExpressionEventPath,\n\tVisitNodeType, SourceLocation\n} from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { SpreadElement } from './spread.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('NewExpression')\nexport class NewExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: NewExpression, deserializer: NodeDeserializer): NewExpression {\n\t\treturn new NewExpression(\n\t\t\tdeserializer(node.className),\n\t\t\tnode.arguments?.map(deserializer),\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: NewExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.className);\n\t\tnode.arguments?.forEach(visitNode);\n\t}\n\tprivate arguments?: ExpressionNode[];\n\tconstructor(\n\t\tprivate className: ExpressionNode,\n\t\tparameters?: ExpressionNode[],\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t\tthis.arguments = parameters;\n\t}\n\tgetClassName() {\n\t\treturn this.className;\n\t}\n\tgetArguments() {\n\t\treturn this.arguments;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`NewExpression#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst classRef = this.className.get(stack);\n\t\tlet value: any;\n\t\tif (this.arguments) {\n\t\t\tif (this.arguments.length > 0) {\n\t\t\t\tconst parameters: any[] = [];\n\t\t\t\tfor (const param of this.arguments) {\n\t\t\t\t\tif (param instanceof SpreadElement) {\n\t\t\t\t\t\tconst paramScope = stack.pushBlockScopeFor(parameters);\n\t\t\t\t\t\tparam.get(stack);\n\t\t\t\t\t\tstack.clearTo(paramScope);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tparameters.push(param.get(stack));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvalue = new classRef(...parameters);\n\t\t\t} else {\n\t\t\t\tvalue = new classRef();\n\t\t\t}\n\t\t} else {\n\t\t\tvalue = new classRef;\n\t\t}\n\t\treturn value;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.className.dependency(computed)\n\t\t\t.concat(this.arguments?.flatMap(parm => parm.dependency(computed)) || []);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.className.dependencyPath(computed)\n\t\t\t.concat(this.arguments?.flatMap(param => param.dependencyPath(computed)) || []);\n\t}\n\ttoString(): string {\n\t\tconst parameters = this.arguments ? `(${this.arguments?.map(arg => arg.toString()).join(', ')})` : '';\n\t\treturn `new ${this.className.toString()}${parameters}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tclassName: this.className.toJSON(),\n\t\t\targuments: this.arguments?.map(arg => arg.toJSON())\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/new.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, ExpressionEventPath,\n\tVisitNodeType, SourceLocation\n} from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { SpreadElement } from './spread.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('NewExpression')\nexport class NewExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: NewExpression, deserializer: NodeDeserializer): NewExpression {\n\t\treturn new NewExpression(\n\t\t\tdeserializer(node.className),\n\t\t\tnode.arguments?.map(deserializer),\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: NewExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.className);\n\t\tnode.arguments?.forEach(visitNode);\n\t}\n\tprivate arguments?: ExpressionNode[];\n\tconstructor(\n\t\tprivate className: ExpressionNode,\n\t\tparameters?: ExpressionNode[],\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t\tthis.arguments = parameters;\n\t}\n\tgetClassName() {\n\t\treturn this.className;\n\t}\n\tgetArguments() {\n\t\treturn this.arguments;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`NewExpression#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst classRef = this.className.get(stack);\n\t\tlet value: any;\n\t\tif (this.arguments) {\n\t\t\tif (this.arguments.length > 0) {\n\t\t\t\tconst parameters: any[] = [];\n\t\t\t\tfor (const param of this.arguments) {\n\t\t\t\t\tif (param instanceof SpreadElement) {\n\t\t\t\t\t\tconst paramScope = stack.pushBlockScopeFor(parameters);\n\t\t\t\t\t\tparam.get(stack);\n\t\t\t\t\t\tstack.clearTo(paramScope);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tparameters.push(param.get(stack));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvalue = new classRef(...parameters);\n\t\t\t} else {\n\t\t\t\tvalue = new classRef();\n\t\t\t}\n\t\t} else {\n\t\t\tvalue = new classRef;\n\t\t}\n\t\treturn value;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.className.dependency(computed)\n\t\t\t.concat(this.arguments?.flatMap(parm => parm.dependency(computed)) || []);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.className.dependencyPath(computed)\n\t\t\t.concat(this.arguments?.flatMap(param => param.dependencyPath(computed)) || []);\n\t}\n\ttoString(): string {\n\t\tconst parameters = this.arguments ? `(${this.arguments?.map(arg => arg.toString()).join(', ')})` : '';\n\t\treturn `new ${this.className.toString()}${parameters}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tclassName: this.className.toJSON(),\n\t\t\targuments: this.arguments?.map(arg => arg.toJSON())\n\t\t};\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"spread.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/spread.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;IAGhD,aAAa;4BADzB,YAAY,CAAC,eAAe,CAAC;;;;sBACK,sBAAsB;6BAA9B,SAAQ,WAAsB;;;;YAAzD,6KAyDC;;;YAzDY,uDAAa;;QAYhB,QAAQ;QAXjB,MAAM,CAAC,QAAQ,CAAC,IAAmB,EAAE,YAA8B;YAClE,OAAO,IAAI,aAAa,CACvB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC3B,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,CACR,CAAC;QACH,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,IAAmB,EAAE,SAAwB;YACzD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QACD,YACS,QAAwB,EAChC,KAAwB,EACxB,GAAoB;YACpB,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAHV,aAAQ,GAAR,QAAQ,CAAgB;QAIjC,CAAC;QACD,WAAW;YACV,OAAO,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;QACD,GAAG,CAAC,KAAY,EAAE,KAAU;YAC3B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACtE,CAAC;QACD,GAAG,CAAC,KAAY;YACf,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;aACnC;iBAAM,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;gBAC/C,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;aACtC;QACF,CAAC;QACO,eAAe,CAAC,KAAY,EAAE,KAAiB;YACtD,IAAI,MAAM,GAAW,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACzC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QAChE,CAAC;QACO,kBAAkB,CAAC,KAAY,EAAE,QAAuB;YAC/D,IAAI,MAAM,GAAW,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACzC,OAAO,IAAI,EAAE;gBACZ,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACvC,IAAI,cAAc,CAAC,IAAI,EAAE;oBACxB,MAAM;iBACN;gBACD,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;aACtD;QACF,CAAC;QACD,UAAU,CAAC,QAAe;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;QACD,cAAc,CAAC,QAAe;YAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;QACD,QAAQ;YACP,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;QACzC,CAAC;QACD,MAAM;YACL,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QAC7C,CAAC;;;;SAxDW,aAAa","sourcesContent":["import type {\n\tExpressionEventPath, ExpressionNode, NodeDeserializer,\n\tSourceLocation, VisitNodeType\n} from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('SpreadElement')\nexport class SpreadElement extends AbstractExpressionNode {\n\tstatic fromJSON(node: SpreadElement, deserializer: NodeDeserializer): SpreadElement {\n\t\treturn new SpreadElement(\n\t\t\tdeserializer(node.argument),\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: SpreadElement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.argument);\n\t}\n\tconstructor(\n\t\tprivate argument: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('SpreadElement#set() Method has no implementation.');\n\t}\n\tget(stack: Stack): void {\n\t\tconst value = this.argument.get(stack);\n\t\tif (Array.isArray(value)) {\n\t\t\tthis.spreadFromArray(stack, value);\n\t\t} else if (Reflect.has(value, Symbol.iterator)) {\n\t\t\tthis.spreadFromIterator(stack, value);\n\t\t}\n\t}\n\tprivate spreadFromArray(stack: Stack, array: Array<any>): void {\n\t\tlet length: number = stack.get('length');\n\t\tarray.forEach(value => stack.declareVariable(length++, value));\n\t}\n\tprivate spreadFromIterator(stack: Stack, iterator: Iterator<any>): void {\n\t\tlet length: number = stack.get('length');\n\t\twhile (true) {\n\t\t\tconst iteratorResult = iterator.next();\n\t\t\tif (iteratorResult.done) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tstack.declareVariable(length++, iteratorResult.value);\n\t\t}\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.argument.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.argument.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `...${this.argument.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn { argument: this.argument.toJSON() };\n\t}\n}\n"]}
1
+ {"version":3,"file":"spread.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/spread.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;IAGhD,aAAa;4BADzB,YAAY,CAAC,eAAe,CAAC;;;;sBACK,sBAAsB;6BAA9B,SAAQ,WAAsB;;;;YAAzD,6KAyDC;;;YAzDY,uDAAa;;QAYhB,QAAQ;QAXjB,MAAM,CAAC,QAAQ,CAAC,IAAmB,EAAE,YAA8B;YAClE,OAAO,IAAI,aAAa,CACvB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC3B,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,CACR,CAAC;QACH,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,IAAmB,EAAE,SAAwB;YACzD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QACD,YACS,QAAwB,EAChC,KAAwB,EACxB,GAAoB;YACpB,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAHV,aAAQ,GAAR,QAAQ,CAAgB;QAIjC,CAAC;QACD,WAAW;YACV,OAAO,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;QACD,GAAG,CAAC,KAAY,EAAE,KAAU;YAC3B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACtE,CAAC;QACD,GAAG,CAAC,KAAY;YACf,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACpC,CAAC;iBAAM,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChD,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACvC,CAAC;QACF,CAAC;QACO,eAAe,CAAC,KAAY,EAAE,KAAiB;YACtD,IAAI,MAAM,GAAW,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACzC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QAChE,CAAC;QACO,kBAAkB,CAAC,KAAY,EAAE,QAAuB;YAC/D,IAAI,MAAM,GAAW,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACzC,OAAO,IAAI,EAAE,CAAC;gBACb,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACvC,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC;oBACzB,MAAM;gBACP,CAAC;gBACD,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;YACvD,CAAC;QACF,CAAC;QACD,UAAU,CAAC,QAAe;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;QACD,cAAc,CAAC,QAAe;YAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;QACD,QAAQ;YACP,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;QACzC,CAAC;QACD,MAAM;YACL,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QAC7C,CAAC;;;;SAxDW,aAAa","sourcesContent":["import type {\n\tExpressionEventPath, ExpressionNode, NodeDeserializer,\n\tSourceLocation, VisitNodeType\n} from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('SpreadElement')\nexport class SpreadElement extends AbstractExpressionNode {\n\tstatic fromJSON(node: SpreadElement, deserializer: NodeDeserializer): SpreadElement {\n\t\treturn new SpreadElement(\n\t\t\tdeserializer(node.argument),\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: SpreadElement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.argument);\n\t}\n\tconstructor(\n\t\tprivate argument: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('SpreadElement#set() Method has no implementation.');\n\t}\n\tget(stack: Stack): void {\n\t\tconst value = this.argument.get(stack);\n\t\tif (Array.isArray(value)) {\n\t\t\tthis.spreadFromArray(stack, value);\n\t\t} else if (Reflect.has(value, Symbol.iterator)) {\n\t\t\tthis.spreadFromIterator(stack, value);\n\t\t}\n\t}\n\tprivate spreadFromArray(stack: Stack, array: Array<any>): void {\n\t\tlet length: number = stack.get('length');\n\t\tarray.forEach(value => stack.declareVariable(length++, value));\n\t}\n\tprivate spreadFromIterator(stack: Stack, iterator: Iterator<any>): void {\n\t\tlet length: number = stack.get('length');\n\t\twhile (true) {\n\t\t\tconst iteratorResult = iterator.next();\n\t\t\tif (iteratorResult.done) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tstack.declareVariable(length++, iteratorResult.value);\n\t\t}\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.argument.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.argument.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `...${this.argument.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn { argument: this.argument.toJSON() };\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"throw.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/throw.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, ExpressionEventPath,\n\tVisitNodeType, SourceLocation\n} from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n/**\n * The expression whose value is to be returned. \n * If omitted, undefined is returned instead.\n */\n@Deserializer('ThrowStatement')\nexport class ThrowStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: ThrowStatement, deserializer: NodeDeserializer): ThrowStatement {\n\t\treturn new ThrowStatement(\n\t\t\tdeserializer(node.argument),\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: ThrowStatement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.argument);\n\t}\n\tconstructor(\n\t\tprivate argument: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`ThrowStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tthrow this.argument.get(stack);\n\t}\n\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\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tconstructor(\n\t\tprivate body: ExpressionNode,\n\t\tprivate param?: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetParam() {\n\t\treturn this.param;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tset(stack: Stack, error: any) {\n\t\tthis.param?.set(stack, error);\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\treturn this.body.get(stack);\n\t}\n\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\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tconstructor(private block: ExpressionNode,\n\t\tprivate handler?: ExpressionNode,\n\t\tprivate finalizer?: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetBlock() {\n\t\treturn this.block;\n\t}\n\tgetHandler() {\n\t\treturn this.handler;\n\t}\n\tgetFinalizer() {\n\t\treturn this.finalizer;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`TryCatchNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst scope = stack.lastScope();\n\t\tif (this.block && this.handler && this.finalizer) {\n\t\t\ttry {\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.block.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} catch (error) {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.handler.set(stack, error);\n\t\t\t\tthis.handler.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} finally {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.finalizer.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t}\n\t\t} else if (this.block && this.handler) {\n\t\t\ttry {\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.block.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} catch (error) {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t\tthis.handler.set(stack, error);\n\t\t\t\tthis.handler.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t}\n\t\t} else if (this.block && this.finalizer) {\n\t\t\ttry {\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.block.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} finally {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.finalizer.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new Error(`Uncaught SyntaxError: Missing catch or finally after try`);\n\t\t}\n\t\tstack.clearTill(scope);\n\t}\n\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":";AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D;;;GAGG;IAEU,cAAc;4BAD1B,YAAY,CAAC,gBAAgB,CAAC;;;;sBACK,sBAAsB;8BAA9B,SAAQ,WAAsB;;;;YAA1D,6KAsCC;;;YAtCY,uDAAc;;QAYjB,QAAQ;QAXjB,MAAM,CAAC,QAAQ,CAAC,IAAoB,EAAE,YAA8B;YACnE,OAAO,IAAI,cAAc,CACxB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC3B,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,CACR,CAAC;QACH,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,IAAoB,EAAE,SAAwB;YAC1D,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QACD,YACS,QAAwB,EAChC,KAAwB,EACxB,GAAoB;YACpB,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAHV,aAAQ,GAAR,QAAQ,CAAgB;QAIjC,CAAC;QACD,WAAW;YACV,OAAO,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;QACD,GAAG,CAAC,KAAY,EAAE,KAAU;YAC3B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAChE,CAAC;QACD,GAAG,CAAC,KAAY;YACf,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QACD,UAAU,CAAC,QAAe;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;QACD,cAAc,CAAC,QAAe;YAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;QACD,QAAQ;YACP,OAAO,SAAS,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC5C,CAAC;QACD,MAAM;YACL,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;QAC9C,CAAC;;;;SArCW,cAAc;IA0Cd,eAAe;4BAD3B,YAAY,CAAC,aAAa,CAAC;;;;sBACS,sBAAsB;+BAA9B,SAAQ,WAAsB;;;;YAA3D,6KA4CC;;;YA5CY,uDAAe;;QAUlB,IAAI;QACJ,KAAK;QAVd,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,YAA8B;YACpE,OAAO,IAAI,eAAe,CACzB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EACvB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAC9C,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,CACR,CAAC;QACH,CAAC;QACD,YACS,IAAoB,EACpB,KAAsB,EAC9B,KAAwB,EACxB,GAAoB;YACpB,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAJV,SAAI,GAAJ,IAAI,CAAgB;YACpB,UAAK,GAAL,KAAK,CAAiB;QAI/B,CAAC;QACD,QAAQ;YACP,OAAO,IAAI,CAAC,KAAK,CAAC;QACnB,CAAC;QACD,OAAO;YACN,OAAO,IAAI,CAAC,IAAI,CAAC;QAClB,CAAC;QACD,GAAG,CAAC,KAAY,EAAE,KAAU;YAC3B,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,GAAG,CAAC,KAAY,EAAE,WAAiB;YAClC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,UAAU,CAAC,QAAe;YACzB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/B,CAAC;QACD,cAAc,CAAC,QAAe;YAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;QACD,QAAQ;YACP,OAAO,UAAU,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC1E,CAAC;QACD,MAAM,CAAC,GAAY;YAClB,OAAO;gBACN,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;gBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;aACxB,CAAC;QACH,CAAC;;;;SA1CW,eAAe;IA+Cf,YAAY;4BADxB,YAAY,CAAC,cAAc,CAAC;;;;sBACK,sBAAsB;4BAA9B,SAAQ,WAAsB;;;;YAAxD,6KAmGC;;;YAnGY,uDAAY;;QAUJ,KAAK;QAChB,OAAO;QACP,SAAS;QAXlB,MAAM,CAAC,QAAQ,CAAC,IAAkB,EAAE,YAA8B;YACjE,OAAO,IAAI,YAAY,CACtB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EACxB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAClD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EACtD,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,CACR,CAAC;QACH,CAAC;QACD,YAAoB,KAAqB,EAChC,OAAwB,EACxB,SAA0B,EAClC,KAAwB,EACxB,GAAoB;YACpB,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YALC,UAAK,GAAL,KAAK,CAAgB;YAChC,YAAO,GAAP,OAAO,CAAiB;YACxB,cAAS,GAAT,SAAS,CAAiB;QAInC,CAAC;QACD,QAAQ;YACP,OAAO,IAAI,CAAC,KAAK,CAAC;QACnB,CAAC;QACD,UAAU;YACT,OAAO,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;QACD,YAAY;YACX,OAAO,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;QACD,GAAG,CAAC,KAAY,EAAE,KAAU;YAC3B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC9D,CAAC;QACD,GAAG,CAAC,KAAY;YACf,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAClD,IAAI,CAAC;oBACJ,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;oBAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACtB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC3B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBACvB,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;oBAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACxB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC3B,CAAC;wBAAS,CAAC;oBACV,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBACvB,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;oBAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBAC1B,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC3B,CAAC;YACF,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACvC,IAAI,CAAC;oBACJ,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;oBAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACtB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC3B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBACvB,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;oBAC1C,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;oBAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACxB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC3B,CAAC;YACF,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACzC,IAAI,CAAC;oBACJ,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;oBAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACtB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC3B,CAAC;wBAAS,CAAC;oBACV,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBACvB,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;oBAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBAC1B,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC3B,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAC7E,CAAC;YACD,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,UAAU,CAAC,QAAe;YACzB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;iBAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;iBACxC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,cAAc,CAAC,QAAe;YAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;iBACxC,MAAM,CACN,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,EAC5C,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAC9C,CAAC;QACJ,CAAC;QACD,QAAQ;YACP,OAAO,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACzI,CAAC;QACD,MAAM;YACL,OAAO;gBACN,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE;gBAC/B,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;aACnC,CAAC;QACH,CAAC;;;;SAlGW,YAAY","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, ExpressionEventPath,\n\tVisitNodeType, SourceLocation\n} from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n/**\n * The expression whose value is to be returned. \n * If omitted, undefined is returned instead.\n */\n@Deserializer('ThrowStatement')\nexport class ThrowStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: ThrowStatement, deserializer: NodeDeserializer): ThrowStatement {\n\t\treturn new ThrowStatement(\n\t\t\tdeserializer(node.argument),\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: ThrowStatement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.argument);\n\t}\n\tconstructor(\n\t\tprivate argument: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`ThrowStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tthrow this.argument.get(stack);\n\t}\n\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\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tconstructor(\n\t\tprivate body: ExpressionNode,\n\t\tprivate param?: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetParam() {\n\t\treturn this.param;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tset(stack: Stack, error: any) {\n\t\tthis.param?.set(stack, error);\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\treturn this.body.get(stack);\n\t}\n\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\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tconstructor(private block: ExpressionNode,\n\t\tprivate handler?: ExpressionNode,\n\t\tprivate finalizer?: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetBlock() {\n\t\treturn this.block;\n\t}\n\tgetHandler() {\n\t\treturn this.handler;\n\t}\n\tgetFinalizer() {\n\t\treturn this.finalizer;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`TryCatchNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst scope = stack.lastScope();\n\t\tif (this.block && this.handler && this.finalizer) {\n\t\t\ttry {\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.block.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} catch (error) {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.handler.set(stack, error);\n\t\t\t\tthis.handler.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} finally {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.finalizer.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t}\n\t\t} else if (this.block && this.handler) {\n\t\t\ttry {\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.block.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} catch (error) {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t\tthis.handler.set(stack, error);\n\t\t\t\tthis.handler.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t}\n\t\t} else if (this.block && this.finalizer) {\n\t\t\ttry {\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.block.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} finally {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.finalizer.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new Error(`Uncaught SyntaxError: Missing catch or finally after try`);\n\t\t}\n\t\tstack.clearTill(scope);\n\t}\n\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 +1 @@
1
- {"version":3,"file":"yield.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/yield.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;IAGhD,eAAe;4BAD3B,YAAY,CAAC,iBAAiB,CAAC;;;;sBACK,sBAAsB;+BAA9B,SAAQ,WAAsB;;;;YAA3D,6KA+CC;;;YA/CY,uDAAe;;QAalB,QAAQ;QACR,QAAQ;QAbjB,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,YAA8B;YACpE,OAAO,IAAI,eAAe,CACzB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EACpD,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,CACR,CAAC;QACH,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,IAAqB,EAAE,SAAwB;YAC3D,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;QACD,YACS,QAAiB,EACjB,QAAyB,EACjC,KAAwB,EACxB,GAAoB;YACpB,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAJV,aAAQ,GAAR,QAAQ,CAAS;YACjB,aAAQ,GAAR,QAAQ,CAAiB;QAIlC,CAAC;QACD,WAAW;YACV,OAAO,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;QACD,GAAG,CAAC,KAAY,EAAE,KAAU;YAC3B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACjE,CAAC;QACD,GAAG,CAAC,KAAY;YACf,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAClB,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;aACrC;YACD,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,UAAU,CAAC,QAAe;YACzB,OAAO,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClD,CAAC;QACD,cAAc,CAAC,QAAe;YAC7B,OAAO,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtD,CAAC;QACD,QAAQ;YACP,OAAO,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;QAC9E,CAAC;QACD,MAAM;YACL,OAAO;gBACN,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;aACjC,CAAC;QACH,CAAC;;;;SA9CW,eAAe","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, ExpressionEventPath,\n\tVisitNodeType, SourceLocation\n} from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode, YieldDelegateValue, YieldValue } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('YieldExpression')\nexport class YieldExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: YieldExpression, deserializer: NodeDeserializer): YieldExpression {\n\t\treturn new YieldExpression(\n\t\t\tnode.delegate,\n\t\t\tnode.argument ? deserializer(node.argument) : void 0,\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: YieldExpression, visitNode: VisitNodeType): void {\n\t\tnode.argument && visitNode(node.argument);\n\t}\n\tconstructor(\n\t\tprivate delegate: boolean,\n\t\tprivate argument?: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`YieldExpression#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst value = this.argument?.get(stack);\n\t\tif (this.delegate) {\n\t\t\treturn new YieldDelegateValue(value);\n\t\t}\n\t\treturn new YieldValue(value);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.argument?.dependency(computed) || [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.argument?.dependencyPath(computed) || [];\n\t}\n\ttoString(): string {\n\t\treturn `yield${this.delegate ? '*' : ''} ${this.argument?.toString() || ''}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tdelegate: this.delegate,\n\t\t\targument: this.argument?.toJSON()\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"yield.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/yield.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;IAGhD,eAAe;4BAD3B,YAAY,CAAC,iBAAiB,CAAC;;;;sBACK,sBAAsB;+BAA9B,SAAQ,WAAsB;;;;YAA3D,6KA+CC;;;YA/CY,uDAAe;;QAalB,QAAQ;QACR,QAAQ;QAbjB,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,YAA8B;YACpE,OAAO,IAAI,eAAe,CACzB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EACpD,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,CACR,CAAC;QACH,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,IAAqB,EAAE,SAAwB;YAC3D,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;QACD,YACS,QAAiB,EACjB,QAAyB,EACjC,KAAwB,EACxB,GAAoB;YACpB,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAJV,aAAQ,GAAR,QAAQ,CAAS;YACjB,aAAQ,GAAR,QAAQ,CAAiB;QAIlC,CAAC;QACD,WAAW;YACV,OAAO,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;QACD,GAAG,CAAC,KAAY,EAAE,KAAU;YAC3B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACjE,CAAC;QACD,GAAG,CAAC,KAAY;YACf,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC;YACD,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,UAAU,CAAC,QAAe;YACzB,OAAO,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClD,CAAC;QACD,cAAc,CAAC,QAAe;YAC7B,OAAO,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtD,CAAC;QACD,QAAQ;YACP,OAAO,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;QAC9E,CAAC;QACD,MAAM;YACL,OAAO;gBACN,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;aACjC,CAAC;QACH,CAAC;;;;SA9CW,eAAe","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, ExpressionEventPath,\n\tVisitNodeType, SourceLocation\n} from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode, YieldDelegateValue, YieldValue } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('YieldExpression')\nexport class YieldExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: YieldExpression, deserializer: NodeDeserializer): YieldExpression {\n\t\treturn new YieldExpression(\n\t\t\tnode.delegate,\n\t\t\tnode.argument ? deserializer(node.argument) : void 0,\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: YieldExpression, visitNode: VisitNodeType): void {\n\t\tnode.argument && visitNode(node.argument);\n\t}\n\tconstructor(\n\t\tprivate delegate: boolean,\n\t\tprivate argument?: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`YieldExpression#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst value = this.argument?.get(stack);\n\t\tif (this.delegate) {\n\t\t\treturn new YieldDelegateValue(value);\n\t\t}\n\t\treturn new YieldValue(value);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.argument?.dependency(computed) || [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.argument?.dependencyPath(computed) || [];\n\t}\n\ttoString(): string {\n\t\treturn `yield${this.delegate ? '*' : ''} ${this.argument?.toString() || ''}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tdelegate: this.delegate,\n\t\t\targument: this.argument?.toJSON()\n\t\t};\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/array.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, DeclarationExpression,\n\tExpressionEventPath, VisitNodeType, SourceLocation\n} from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { RestElement } from '../computing/rest.js';\nimport { SpreadElement } from '../computing/spread.js';\n\n@Deserializer('ArrayExpression')\nexport class ArrayExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: ArrayExpression, deserializer: NodeDeserializer): ArrayExpression {\n\t\treturn new ArrayExpression(\n\t\t\tnode.elements.map(element => element ? deserializer(element) : null),\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: ArrayExpression, visitNode: VisitNodeType): void {\n\t\tnode.elements.forEach(element => element && visitNode(element));\n\t}\n\tconstructor(\n\t\tprivate elements: (ExpressionNode | SpreadElement | null)[],\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetElements() {\n\t\treturn this.elements;\n\t}\n\tset(stack: Stack) {\n\t\tthrow new Error(\"ArrayExpression#set() has no implementation.\");\n\t}\n\tget(stack: Stack) {\n\t\treturn this.elements.map(item => item?.get(stack));\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.elements.filter(item => item).flatMap(item => item!.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.elements.filter(item => item).flatMap(item => item!.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\treturn `[ ${this.elements.map(item => item?.toString()).toString()} ]`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\telements: this.elements.map(item => item?.toJSON())\n\t\t};\n\t}\n}\n\n\n@Deserializer('ArrayPattern')\nexport class ArrayPattern extends AbstractExpressionNode implements DeclarationExpression {\n\tstatic fromJSON(node: ArrayPattern, deserializer: NodeDeserializer): ArrayPattern {\n\t\treturn new ArrayPattern(\n\t\t\tnode.elements.map(expression => expression ? deserializer(expression) : null) as DeclarationExpression[],\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: ArrayPattern, visitNode: VisitNodeType): void {\n\t\tnode.elements.forEach(expression => expression && visitNode(expression));\n\t}\n\tconstructor(\n\t\tprivate elements: (DeclarationExpression | null)[],\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetElements() {\n\t\treturn this.elements;\n\t}\n\tset(stack: Stack, values: any) {\n\t\tthrow new Error('ArrayPattern#set() has no implementation.');\n\t}\n\tget(scopeProvider: Stack) {\n\t\tthrow new Error('ArrayPattern#get() has no implementation.');\n\t}\n\tdeclareVariable(stack: Stack, values: any) {\n\t\tif (Array.isArray(values)) {\n\t\t\tthis.declareVariableFromArray(stack, values);\n\t\t} else if (Reflect.has(values, Symbol.iterator)) {\n\t\t\tthis.declareVariableFromIterator(stack, values);\n\t\t}\n\t}\n\tdeclareVariableFromArray(stack: Stack, values: any[]) {\n\t\tfor (let index = 0; index < this.elements.length; index++) {\n\t\t\tconst elem = this.elements[index];\n\t\t\tif (elem == null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (elem instanceof RestElement) {\n\t\t\t\tconst rest = values.slice(index);\n\t\t\t\telem.declareVariable(stack, rest);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telem.declareVariable(stack, values[index]);\n\t\t}\n\t}\n\tdeclareVariableFromIterator(stack: Stack, iterator: Iterator<any>) {\n\t\tlet index = 0;\n\t\twhile (true) {\n\t\t\tlet iteratorResult = iterator.next();\n\t\t\tif (iteratorResult.done) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst elem = this.elements[index++];\n\t\t\tif (elem == null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (elem instanceof RestElement) {\n\t\t\t\tconst rest = [iteratorResult.value];\n\t\t\t\twhile (!iteratorResult.done) {\n\t\t\t\t\titeratorResult = iterator.next();\n\t\t\t\t\trest.push(iteratorResult.value);\n\t\t\t\t}\n\t\t\t\telem.declareVariable(stack, rest);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telem.declareVariable(stack, iteratorResult.value);\n\t\t\tif (index >= this.elements.length) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.elements.filter(item => item).flatMap(item => item!.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.elements.filter(item => item).flatMap(item => item!.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\treturn `[ ${this.elements.map(item => item?.toString()).toString()} ]`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\telements: this.elements.map(item => item?.toJSON())\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/array.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;IAItC,eAAe;4BAD3B,YAAY,CAAC,iBAAiB,CAAC;;;;sBACK,sBAAsB;+BAA9B,SAAQ,WAAsB;;;;YAA3D,6KAwCC;;;YAxCY,uDAAe;;QAYlB,QAAQ;QAXjB,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,YAA8B;YACpE,OAAO,IAAI,eAAe,CACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EACpE,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,CACR,CAAC;QACH,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,IAAqB,EAAE,SAAwB;YAC3D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACjE,CAAC;QACD,YACS,QAAmD,EAC3D,KAAwB,EACxB,GAAoB;YACpB,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAHV,aAAQ,GAAR,QAAQ,CAA2C;QAI5D,CAAC;QACD,WAAW;YACV,OAAO,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;QACD,GAAG,CAAC,KAAY;YACf,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACjE,CAAC;QACD,GAAG,CAAC,KAAY;YACf,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,UAAU,CAAC,QAAe;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvF,CAAC;QACD,cAAc,CAAC,QAAe;YAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3F,CAAC;QACD,QAAQ;YACP,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC;QACxE,CAAC;QACD,MAAM;YACL,OAAO;gBACN,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;aACnD,CAAC;QACH,CAAC;;;;SAvCW,eAAe;IA4Cf,YAAY;4BADxB,YAAY,CAAC,cAAc,CAAC;;;;sBACK,sBAAsB;4BAA9B,SAAQ,WAAsB;;;;YAAxD,6KAuFC;;;YAvFY,uDAAY;;QAYf,QAAQ;QAXjB,MAAM,CAAC,QAAQ,CAAC,IAAkB,EAAE,YAA8B;YACjE,OAAO,IAAI,YAAY,CACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAA4B,EACxG,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,CACR,CAAC;QACH,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,IAAkB,EAAE,SAAwB;YACxD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1E,CAAC;QACD,YACS,QAA0C,EAClD,KAAwB,EACxB,GAAoB;YACpB,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAHV,aAAQ,GAAR,QAAQ,CAAkC;QAInD,CAAC;QACD,WAAW;YACV,OAAO,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;QACD,GAAG,CAAC,KAAY,EAAE,MAAW;YAC5B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC9D,CAAC;QACD,GAAG,CAAC,aAAoB;YACvB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC9D,CAAC;QACD,eAAe,CAAC,KAAY,EAAE,MAAW;YACxC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACjD,CAAC;QACF,CAAC;QACD,wBAAwB,CAAC,KAAY,EAAE,MAAa;YACnD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAClC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;oBAClB,SAAS;gBACV,CAAC;gBACD,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;oBACjC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACjC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBAClC,MAAM;gBACP,CAAC;gBACD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5C,CAAC;QACF,CAAC;QACD,2BAA2B,CAAC,KAAY,EAAE,QAAuB;YAChE,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,OAAO,IAAI,EAAE,CAAC;gBACb,IAAI,cAAc,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACrC,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC;oBACzB,MAAM;gBACP,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;gBACpC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;oBAClB,SAAS;gBACV,CAAC;gBACD,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;oBACjC,MAAM,IAAI,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;oBACpC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;wBAC7B,cAAc,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;wBACjC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;oBACjC,CAAC;oBACD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBAClC,MAAM;gBACP,CAAC;gBACD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;gBAClD,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;oBACnC,MAAM;gBACP,CAAC;YACF,CAAC;QACF,CAAC;QACD,UAAU,CAAC,QAAe;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvF,CAAC;QACD,cAAc,CAAC,QAAe;YAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3F,CAAC;QACD,QAAQ;YACP,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC;QACxE,CAAC;QACD,MAAM;YACL,OAAO;gBACN,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;aACnD,CAAC;QACH,CAAC;;;;SAtFW,YAAY","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, DeclarationExpression,\n\tExpressionEventPath, VisitNodeType, SourceLocation\n} from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { RestElement } from '../computing/rest.js';\nimport { SpreadElement } from '../computing/spread.js';\n\n@Deserializer('ArrayExpression')\nexport class ArrayExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: ArrayExpression, deserializer: NodeDeserializer): ArrayExpression {\n\t\treturn new ArrayExpression(\n\t\t\tnode.elements.map(element => element ? deserializer(element) : null),\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: ArrayExpression, visitNode: VisitNodeType): void {\n\t\tnode.elements.forEach(element => element && visitNode(element));\n\t}\n\tconstructor(\n\t\tprivate elements: (ExpressionNode | SpreadElement | null)[],\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetElements() {\n\t\treturn this.elements;\n\t}\n\tset(stack: Stack) {\n\t\tthrow new Error(\"ArrayExpression#set() has no implementation.\");\n\t}\n\tget(stack: Stack) {\n\t\treturn this.elements.map(item => item?.get(stack));\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.elements.filter(item => item).flatMap(item => item!.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.elements.filter(item => item).flatMap(item => item!.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\treturn `[ ${this.elements.map(item => item?.toString()).toString()} ]`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\telements: this.elements.map(item => item?.toJSON())\n\t\t};\n\t}\n}\n\n\n@Deserializer('ArrayPattern')\nexport class ArrayPattern extends AbstractExpressionNode implements DeclarationExpression {\n\tstatic fromJSON(node: ArrayPattern, deserializer: NodeDeserializer): ArrayPattern {\n\t\treturn new ArrayPattern(\n\t\t\tnode.elements.map(expression => expression ? deserializer(expression) : null) as DeclarationExpression[],\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: ArrayPattern, visitNode: VisitNodeType): void {\n\t\tnode.elements.forEach(expression => expression && visitNode(expression));\n\t}\n\tconstructor(\n\t\tprivate elements: (DeclarationExpression | null)[],\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetElements() {\n\t\treturn this.elements;\n\t}\n\tset(stack: Stack, values: any) {\n\t\tthrow new Error('ArrayPattern#set() has no implementation.');\n\t}\n\tget(scopeProvider: Stack) {\n\t\tthrow new Error('ArrayPattern#get() has no implementation.');\n\t}\n\tdeclareVariable(stack: Stack, values: any) {\n\t\tif (Array.isArray(values)) {\n\t\t\tthis.declareVariableFromArray(stack, values);\n\t\t} else if (Reflect.has(values, Symbol.iterator)) {\n\t\t\tthis.declareVariableFromIterator(stack, values);\n\t\t}\n\t}\n\tdeclareVariableFromArray(stack: Stack, values: any[]) {\n\t\tfor (let index = 0; index < this.elements.length; index++) {\n\t\t\tconst elem = this.elements[index];\n\t\t\tif (elem == null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (elem instanceof RestElement) {\n\t\t\t\tconst rest = values.slice(index);\n\t\t\t\telem.declareVariable(stack, rest);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telem.declareVariable(stack, values[index]);\n\t\t}\n\t}\n\tdeclareVariableFromIterator(stack: Stack, iterator: Iterator<any>) {\n\t\tlet index = 0;\n\t\twhile (true) {\n\t\t\tlet iteratorResult = iterator.next();\n\t\t\tif (iteratorResult.done) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst elem = this.elements[index++];\n\t\t\tif (elem == null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (elem instanceof RestElement) {\n\t\t\t\tconst rest = [iteratorResult.value];\n\t\t\t\twhile (!iteratorResult.done) {\n\t\t\t\t\titeratorResult = iterator.next();\n\t\t\t\t\trest.push(iteratorResult.value);\n\t\t\t\t}\n\t\t\t\telem.declareVariable(stack, rest);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telem.declareVariable(stack, iteratorResult.value);\n\t\t\tif (index >= this.elements.length) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.elements.filter(item => item).flatMap(item => item!.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.elements.filter(item => item).flatMap(item => item!.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\treturn `[ ${this.elements.map(item => item?.toString()).toString()} ]`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\telements: this.elements.map(item => item?.toJSON())\n\t\t};\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"bind.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/bind.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, CanFindScope,\n\tExpressionEventPath, VisitNodeType, SourceLocation\n} from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { AbstractExpressionNode } from '../abstract.js';\n\n/**\n * ```js\n * const x = {method: function(){...}};\n * const z = x::method;\n * ```\n */\n@Deserializer('BindExpression')\nexport class BindExpression extends AbstractExpressionNode implements CanFindScope {\n\tstatic fromJSON(node: BindExpression, deserializer: NodeDeserializer): BindExpression {\n\t\treturn new BindExpression(\n\t\t\tdeserializer(node.object),\n\t\t\tdeserializer(node.property),\n\t\t\tnode.computed,\n\t\t\tnode.optional,\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: BindExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.object);\n\t\tvisitNode(node.property);\n\t}\n\tconstructor(\n\t\tprotected object: ExpressionNode,\n\t\tprotected property: ExpressionNode,\n\t\tprivate computed: boolean,\n\t\tprivate optional: boolean = false,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetObject() {\n\t\treturn this.object;\n\t}\n\tgetProperty() {\n\t\treturn this.property;\n\t}\n\tset(stack: Stack) {\n\t\tthrow new Error(\"BindExpression#set() has no implementation.\");\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\tconst objectRef = thisContext ?? this.object.get(stack);\n\t\tif (typeof objectRef === 'undefined') {\n\t\t\tthrow new TypeError(`Cannot read property '${this.property.toString()}' of undefined`);\n\t\t}\n\t\tlet value;\n\t\tif (this.computed) {\n\t\t\tvalue = objectRef[this.property.get(stack)];\n\t\t} else {\n\t\t\tvalue = this.property.get(stack, objectRef);\n\t\t}\n\t\tif (this.optional && (value === undefined || value === null)) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof value !== 'function') {\n\t\t\tthrow new Error(`can't bind to non-function type ${value}`);\n\t\t}\n\t\treturn (<Function>value).bind(objectRef);\n\t}\n\tfindScope<T extends object>(stack: Stack): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, scope: Scope<any>): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, objectScope?: Scope<any>): Scope<T> | undefined {\n\t\tif (!objectScope) {\n\t\t\tobjectScope = (this.object as ExpressionNode & CanFindScope).findScope(stack);\n\t\t}\n\t\treturn (this.property as ExpressionNode & CanFindScope).findScope(stack, objectScope);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.object.dependency(computed).concat(this.property.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.object.dependencyPath(computed).concat(this.property.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\tif (this.computed) {\n\t\t\treturn `${this.object.toString()}${this.optional ? '?::' : '::'}[${this.property.toString()}]`;\n\t\t}\n\t\treturn `${this.object.toString()}${this.optional ? '?::' : '::'}${this.property.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tobject: this.object.toJSON(),\n\t\t\tproperty: this.property.toJSON(),\n\t\t\tcomputed: this.computed,\n\t\t\toptional: this.optional\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"bind.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/bind.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, CanFindScope,\n\tExpressionEventPath, VisitNodeType, SourceLocation\n} from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { AbstractExpressionNode } from '../abstract.js';\n\n/**\n * ```js\n * const x = {method: function(){...}};\n * const z = x::method;\n * ```\n */\n@Deserializer('BindExpression')\nexport class BindExpression extends AbstractExpressionNode implements CanFindScope {\n\tstatic fromJSON(node: BindExpression, deserializer: NodeDeserializer): BindExpression {\n\t\treturn new BindExpression(\n\t\t\tdeserializer(node.object),\n\t\t\tdeserializer(node.property),\n\t\t\tnode.computed,\n\t\t\tnode.optional,\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: BindExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.object);\n\t\tvisitNode(node.property);\n\t}\n\tconstructor(\n\t\tprotected object: ExpressionNode,\n\t\tprotected property: ExpressionNode,\n\t\tprivate computed: boolean,\n\t\tprivate optional: boolean = false,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetObject() {\n\t\treturn this.object;\n\t}\n\tgetProperty() {\n\t\treturn this.property;\n\t}\n\tset(stack: Stack) {\n\t\tthrow new Error(\"BindExpression#set() has no implementation.\");\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\tconst objectRef = thisContext ?? this.object.get(stack);\n\t\tif (typeof objectRef === 'undefined') {\n\t\t\tthrow new TypeError(`Cannot read property '${this.property.toString()}' of undefined`);\n\t\t}\n\t\tlet value;\n\t\tif (this.computed) {\n\t\t\tvalue = objectRef[this.property.get(stack)];\n\t\t} else {\n\t\t\tvalue = this.property.get(stack, objectRef);\n\t\t}\n\t\tif (this.optional && (value === undefined || value === null)) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof value !== 'function') {\n\t\t\tthrow new Error(`can't bind to non-function type ${value}`);\n\t\t}\n\t\treturn (<Function>value).bind(objectRef);\n\t}\n\tfindScope<T extends object>(stack: Stack): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, scope: Scope<any>): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, objectScope?: Scope<any>): Scope<T> | undefined {\n\t\tif (!objectScope) {\n\t\t\tobjectScope = (this.object as ExpressionNode & CanFindScope).findScope(stack);\n\t\t}\n\t\treturn (this.property as ExpressionNode & CanFindScope).findScope(stack, objectScope);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.object.dependency(computed).concat(this.property.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.object.dependencyPath(computed).concat(this.property.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\tif (this.computed) {\n\t\t\treturn `${this.object.toString()}${this.optional ? '?::' : '::'}[${this.property.toString()}]`;\n\t\t}\n\t\treturn `${this.object.toString()}${this.optional ? '?::' : '::'}${this.property.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tobject: this.object.toJSON(),\n\t\t\tproperty: this.property.toJSON(),\n\t\t\tcomputed: this.computed,\n\t\t\toptional: this.optional\n\t\t};\n\t}\n}\n"]}