@ibyar/expressions 0.8.6 → 1.0.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.
- package/api/abstract.d.ts +1 -0
- package/api/abstract.d.ts.map +1 -0
- package/api/abstract.js +12 -0
- package/api/abstract.js.map +1 -1
- package/api/class/class.d.ts +1 -0
- package/api/class/class.d.ts.map +1 -0
- package/api/class/class.js +563 -482
- package/api/class/class.js.map +1 -1
- package/api/class/decorator.d.ts +1 -0
- package/api/class/decorator.d.ts.map +1 -0
- package/api/class/decorator.js +49 -42
- package/api/class/decorator.js.map +1 -1
- package/api/computing/call.d.ts +1 -0
- package/api/computing/call.d.ts.map +1 -0
- package/api/computing/call.js +79 -70
- package/api/computing/call.js.map +1 -1
- package/api/computing/debugger.d.ts +1 -0
- package/api/computing/debugger.d.ts.map +1 -0
- package/api/computing/debugger.js +36 -29
- package/api/computing/debugger.js.map +1 -1
- package/api/computing/new.d.ts +1 -0
- package/api/computing/new.d.ts.map +1 -0
- package/api/computing/new.js +77 -69
- package/api/computing/new.js.map +1 -1
- package/api/computing/rest.d.ts +1 -0
- package/api/computing/rest.d.ts.map +1 -0
- package/api/computing/rest.js +50 -43
- package/api/computing/rest.js.map +1 -1
- package/api/computing/return.d.ts +1 -0
- package/api/computing/return.d.ts.map +1 -0
- package/api/computing/return.js +48 -41
- package/api/computing/return.js.map +1 -1
- package/api/computing/spread.d.ts +1 -0
- package/api/computing/spread.d.ts.map +1 -0
- package/api/computing/spread.js +66 -59
- package/api/computing/spread.js.map +1 -1
- package/api/computing/throw.d.ts +1 -0
- package/api/computing/throw.d.ts.map +1 -0
- package/api/computing/throw.js +204 -178
- package/api/computing/throw.js.map +1 -1
- package/api/computing/yield.d.ts +1 -0
- package/api/computing/yield.d.ts.map +1 -0
- package/api/computing/yield.js +56 -48
- package/api/computing/yield.js.map +1 -1
- package/api/definition/array.d.ts +1 -0
- package/api/definition/array.d.ts.map +1 -0
- package/api/definition/array.js +139 -124
- package/api/definition/array.js.map +1 -1
- package/api/definition/bind.d.ts +1 -0
- package/api/definition/bind.d.ts.map +1 -0
- package/api/definition/bind.js +81 -71
- package/api/definition/bind.js.map +1 -1
- package/api/definition/comment.d.ts +1 -0
- package/api/definition/comment.d.ts.map +1 -0
- package/api/definition/comment.js +40 -33
- package/api/definition/comment.js.map +1 -1
- package/api/definition/function.d.ts +1 -0
- package/api/definition/function.d.ts.map +1 -0
- package/api/definition/function.js +484 -447
- package/api/definition/function.js.map +1 -1
- package/api/definition/member.d.ts +1 -0
- package/api/definition/member.d.ts.map +1 -0
- package/api/definition/member.js +100 -90
- package/api/definition/member.js.map +1 -1
- package/api/definition/object.d.ts +1 -0
- package/api/definition/object.d.ts.map +1 -0
- package/api/definition/object.js +230 -202
- package/api/definition/object.js.map +1 -1
- package/api/definition/statement.d.ts +1 -0
- package/api/definition/statement.d.ts.map +1 -0
- package/api/definition/statement.js +52 -45
- package/api/definition/statement.js.map +1 -1
- package/api/definition/values.d.ts +1 -0
- package/api/definition/values.d.ts.map +1 -0
- package/api/definition/values.js +210 -167
- package/api/definition/values.js.map +1 -1
- package/api/deserialize/deserialize.d.ts +2 -1
- package/api/deserialize/deserialize.d.ts.map +1 -0
- package/api/deserialize/deserialize.js +5 -7
- package/api/deserialize/deserialize.js.map +1 -1
- package/api/deserialize/type-store.d.ts +1 -0
- package/api/deserialize/type-store.d.ts.map +1 -0
- package/api/expression.d.ts +1 -0
- package/api/expression.d.ts.map +1 -0
- package/api/index.d.ts +1 -0
- package/api/index.d.ts.map +1 -0
- package/api/module/common.d.ts +1 -0
- package/api/module/common.d.ts.map +1 -0
- package/api/module/common.js +59 -51
- package/api/module/common.js.map +1 -1
- package/api/module/export.d.ts +1 -0
- package/api/module/export.d.ts.map +1 -0
- package/api/module/export.js +327 -294
- package/api/module/export.js.map +1 -1
- package/api/module/import.d.ts +1 -0
- package/api/module/import.d.ts.map +1 -0
- package/api/module/import.js +298 -258
- package/api/module/import.js.map +1 -1
- package/api/operators/assignment.d.ts +1 -0
- package/api/operators/assignment.d.ts.map +1 -0
- package/api/operators/assignment.js +84 -75
- package/api/operators/assignment.js.map +1 -1
- package/api/operators/await.d.ts +1 -0
- package/api/operators/await.d.ts.map +1 -0
- package/api/operators/await.js +50 -43
- package/api/operators/await.js.map +1 -1
- package/api/operators/binary.d.ts +1 -0
- package/api/operators/binary.d.ts.map +1 -0
- package/api/operators/binary.js +74 -64
- package/api/operators/binary.js.map +1 -1
- package/api/operators/chaining.d.ts +1 -0
- package/api/operators/chaining.d.ts.map +1 -0
- package/api/operators/chaining.js +52 -45
- package/api/operators/chaining.js.map +1 -1
- package/api/operators/comma.d.ts +1 -0
- package/api/operators/comma.d.ts.map +1 -0
- package/api/operators/comma.js +49 -42
- package/api/operators/comma.js.map +1 -1
- package/api/operators/grouping.d.ts +1 -0
- package/api/operators/grouping.d.ts.map +1 -0
- package/api/operators/grouping.js +47 -40
- package/api/operators/grouping.js.map +1 -1
- package/api/operators/logical.d.ts +1 -0
- package/api/operators/logical.d.ts.map +1 -0
- package/api/operators/logical.js +47 -37
- package/api/operators/logical.js.map +1 -1
- package/api/operators/pipeline.d.ts +1 -0
- package/api/operators/pipeline.d.ts.map +1 -0
- package/api/operators/pipeline.js +91 -82
- package/api/operators/pipeline.js.map +1 -1
- package/api/operators/ternary.d.ts +1 -0
- package/api/operators/ternary.d.ts.map +1 -0
- package/api/operators/ternary.js +65 -56
- package/api/operators/ternary.js.map +1 -1
- package/api/operators/types.d.ts +1 -0
- package/api/operators/types.d.ts.map +1 -0
- package/api/operators/unary.d.ts +1 -0
- package/api/operators/unary.d.ts.map +1 -0
- package/api/operators/unary.js +93 -82
- package/api/operators/unary.js.map +1 -1
- package/api/operators/update.d.ts +1 -0
- package/api/operators/update.d.ts.map +1 -0
- package/api/operators/update.js +74 -62
- package/api/operators/update.js.map +1 -1
- package/api/program.d.ts +1 -0
- package/api/program.d.ts.map +1 -0
- package/api/program.js +49 -41
- package/api/program.js.map +1 -1
- package/api/statement/control/block.d.ts +1 -0
- package/api/statement/control/block.d.ts.map +1 -0
- package/api/statement/control/block.js +61 -54
- package/api/statement/control/block.js.map +1 -1
- package/api/statement/control/empty.d.ts +1 -1
- package/api/statement/control/empty.d.ts.map +1 -0
- package/api/statement/control/empty.js +39 -34
- package/api/statement/control/empty.js.map +1 -1
- package/api/statement/control/if.d.ts +1 -0
- package/api/statement/control/if.d.ts.map +1 -0
- package/api/statement/control/if.js +75 -66
- package/api/statement/control/if.js.map +1 -1
- package/api/statement/control/switch.d.ts +1 -0
- package/api/statement/control/switch.d.ts.map +1 -0
- package/api/statement/control/switch.js +168 -144
- package/api/statement/control/switch.js.map +1 -1
- package/api/statement/control/terminate.d.ts +1 -2
- package/api/statement/control/terminate.d.ts.map +1 -0
- package/api/statement/control/terminate.js +105 -81
- package/api/statement/control/terminate.js.map +1 -1
- package/api/statement/control/with.d.ts +1 -0
- package/api/statement/control/with.d.ts.map +1 -0
- package/api/statement/control/with.js +68 -60
- package/api/statement/control/with.js.map +1 -1
- package/api/statement/declarations/declares.d.ts +1 -0
- package/api/statement/declarations/declares.d.ts.map +1 -0
- package/api/statement/declarations/declares.js +140 -123
- package/api/statement/declarations/declares.js.map +1 -1
- package/api/statement/iterations/for.d.ts +1 -0
- package/api/statement/iterations/for.d.ts.map +1 -0
- package/api/statement/iterations/for.js +320 -280
- package/api/statement/iterations/for.js.map +1 -1
- package/api/statement/iterations/while.d.ts +1 -0
- package/api/statement/iterations/while.d.ts.map +1 -0
- package/api/statement/iterations/while.js +144 -127
- package/api/statement/iterations/while.js.map +1 -1
- package/api/utils.d.ts +1 -0
- package/api/utils.d.ts.map +1 -0
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -0
- package/package.json +4 -4
- package/scope/event.d.ts +1 -0
- package/scope/event.d.ts.map +1 -0
- package/scope/finalizer.d.ts +1 -0
- package/scope/finalizer.d.ts.map +1 -0
- package/scope/index.d.ts +1 -0
- package/scope/index.d.ts.map +1 -0
- package/scope/pool.d.ts +1 -0
- package/scope/pool.d.ts.map +1 -0
- package/scope/proxy.d.ts +1 -0
- package/scope/proxy.d.ts.map +1 -0
- package/scope/proxy.js +1 -0
- package/scope/proxy.js.map +1 -1
- package/scope/scope.d.ts +1 -0
- package/scope/scope.d.ts.map +1 -0
- package/scope/scope.js +17 -11
- package/scope/scope.js.map +1 -1
- package/scope/stack.d.ts +1 -0
- package/scope/stack.d.ts.map +1 -0
- package/scope/stack.js +21 -13
- package/scope/stack.js.map +1 -1
- package/v8/enums.d.ts +1 -0
- package/v8/enums.d.ts.map +1 -0
- package/v8/enums.js +15 -13
- package/v8/enums.js.map +1 -1
- package/v8/factory.d.ts +1 -0
- package/v8/factory.d.ts.map +1 -0
- package/v8/factory.js +3 -1
- package/v8/factory.js.map +1 -1
- package/v8/index.d.ts +1 -0
- package/v8/index.d.ts.map +1 -0
- package/v8/inline.d.ts +1 -0
- package/v8/inline.d.ts.map +1 -0
- package/v8/inline.js +9 -5
- package/v8/inline.js.map +1 -1
- package/v8/language.d.ts +1 -0
- package/v8/language.d.ts.map +1 -0
- package/v8/node.d.ts +1 -0
- package/v8/node.d.ts.map +1 -0
- package/v8/parser.d.ts +1 -0
- package/v8/parser.d.ts.map +1 -0
- package/v8/parser.js +5 -5
- package/v8/parser.js.map +1 -1
- package/v8/stream.d.ts +1 -0
- package/v8/stream.d.ts.map +1 -0
- package/v8/stream.js +19 -8
- package/v8/stream.js.map +1 -1
- package/v8/token.d.ts +1 -0
- package/v8/token.d.ts.map +1 -0
- package/v8/token.js +365 -359
- package/v8/token.js.map +1 -1
- package/visit/index.d.ts +1 -0
- package/visit/index.d.ts.map +1 -0
- package/visit/visitor.d.ts +1 -0
- package/visit/visitor.d.ts.map +1 -0
package/api/class/class.js.map
CHANGED
|
@@ -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; 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"]}
|
package/api/class/decorator.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorator.d.ts","sourceRoot":"","sources":["../../../../src/expressions/api/class/decorator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,mBAAmB,EAAE,cAAc,EAAE,gBAAgB,EACrD,cAAc,EAAE,aAAa,EAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAGxD,qBACa,SAAU,SAAQ,sBAAsB;IAOxC,OAAO,CAAC,UAAU;IAN9B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,SAAS;IAGhF,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,GAAG,IAAI;gBAGzC,UAAU,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,cAAc;IAG9F,aAAa;IAGb,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG;IAG5B,GAAG,CAAC,KAAK,EAAE,KAAK;IAGhB,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,cAAc,EAAE;IAG7C,cAAc,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,mBAAmB,EAAE;IAGtD,QAAQ,IAAI,MAAM;IAGlB,MAAM,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KAAE;CAKjC"}
|
package/api/class/decorator.js
CHANGED
|
@@ -1,45 +1,52 @@
|
|
|
1
|
-
|
|
2
|
-
import { __decorate, __metadata } from "tslib";
|
|
1
|
+
import { __esDecorate, __runInitializers } from "tslib";
|
|
3
2
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
4
3
|
import { Deserializer } from '../deserialize/deserialize.js';
|
|
5
|
-
let Decorator =
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
4
|
+
export let Decorator = (() => {
|
|
5
|
+
let _classDecorators = [Deserializer('Decorator')];
|
|
6
|
+
let _classDescriptor;
|
|
7
|
+
let _classExtraInitializers = [];
|
|
8
|
+
let _classThis;
|
|
9
|
+
var Decorator = class extends AbstractExpressionNode {
|
|
10
|
+
static {
|
|
11
|
+
__esDecorate(null, _classDescriptor = { value: this }, _classDecorators, { kind: "class", name: this.name }, null, _classExtraInitializers);
|
|
12
|
+
Decorator = _classThis = _classDescriptor.value;
|
|
13
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
14
|
+
}
|
|
15
|
+
expression;
|
|
16
|
+
static fromJSON(node, deserializer) {
|
|
17
|
+
return new Decorator(deserializer(node.expression), node.range, node.loc);
|
|
18
|
+
}
|
|
19
|
+
static visit(node, visitNode) {
|
|
20
|
+
visitNode(node.expression);
|
|
21
|
+
}
|
|
22
|
+
constructor(expression, range, loc) {
|
|
23
|
+
super(range, loc);
|
|
24
|
+
this.expression = expression;
|
|
25
|
+
}
|
|
26
|
+
getExpression() {
|
|
27
|
+
return this.expression;
|
|
28
|
+
}
|
|
29
|
+
set(stack, value) {
|
|
30
|
+
throw new Error('Decorator#set() Method not implemented.');
|
|
31
|
+
}
|
|
32
|
+
get(stack) {
|
|
33
|
+
return this.expression.get(stack);
|
|
34
|
+
}
|
|
35
|
+
dependency(computed) {
|
|
36
|
+
return this.expression.dependency(computed);
|
|
37
|
+
}
|
|
38
|
+
dependencyPath(computed) {
|
|
39
|
+
return this.expression.dependencyPath(computed);
|
|
40
|
+
}
|
|
41
|
+
toString() {
|
|
42
|
+
return `@${this.expression.toString()}`;
|
|
43
|
+
}
|
|
44
|
+
toJson() {
|
|
45
|
+
return {
|
|
46
|
+
expression: this.expression.toJSON()
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
return Decorator = _classThis;
|
|
51
|
+
})();
|
|
45
52
|
//# sourceMappingURL=decorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorator.js","sourceRoot":"","sources":["../../../../src/expressions/api/class/decorator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"decorator.js","sourceRoot":"","sources":["../../../../src/expressions/api/class/decorator.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,MAAM,KAAO,SAAS;4BADrB,YAAY,CAAC,WAAW,CAAC;;;;QACb,SAAS,QAAC,SAAQ,sBAAsB;;YAArD,4IAiCC;YAjCY,SAAS;YAAT,uDAAS;;QAOD,UAAU;QAN9B,MAAM,CAAC,QAAQ,CAAC,IAAe,EAAE,YAAmC;YACnE,OAAO,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,IAAe,EAAE,SAAwB;YACrD,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;QACD,YAAoB,UAA0B,EAAE,KAAwB,EAAE,GAAoB;YAC7F,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YADC,eAAU,GAAV,UAAU,CAAgB;QAE9C,CAAC;QACD,aAAa;YACZ,OAAO,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;QACD,GAAG,CAAC,KAAY,EAAE,KAAU;YAC3B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC5D,CAAC;QACD,GAAG,CAAC,KAAY;YACf,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,UAAU,CAAC,QAAe;YACzB,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;QACD,cAAc,CAAC,QAAe;YAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC;QACD,QAAQ;YACP,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;QACzC,CAAC;QACD,MAAM;YACL,OAAO;gBACN,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;aACpC,CAAC;QACH,CAAC;;WAhCW,SAAS","sourcesContent":["import type {\n\tExpressionEventPath, ExpressionNode, NodeDeserializer,\n\tSourceLocation, VisitNodeType\n} from '../expression.js';\nimport { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('Decorator')\nexport class Decorator extends AbstractExpressionNode {\n\tstatic fromJSON(node: Decorator, deserializer: NodeDeserializer<any>): Decorator {\n\t\treturn new Decorator(deserializer(node.expression), node.range, node.loc);\n\t}\n\tstatic visit(node: Decorator, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.expression);\n\t}\n\tconstructor(private expression: ExpressionNode, range?: [number, number], loc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetExpression() {\n\t\treturn this.expression;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('Decorator#set() Method not implemented.');\n\t}\n\tget(stack: Stack) {\n\t\treturn this.expression.get(stack);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.expression.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.expression.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `@${this.expression.toString()}`;\n\t}\n\ttoJson(): { [key: string]: any; } {\n\t\treturn {\n\t\t\texpression: this.expression.toJSON()\n\t\t};\n\t}\n}\n"]}
|
package/api/computing/call.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../../../src/expressions/api/computing/call.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,gBAAgB,EAAE,cAAc,EAAE,mBAAmB,EACrD,aAAa,EAAE,cAAc,EAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAMxD,qBACa,cAAe,SAAQ,sBAAsB;IAgBxD,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,QAAQ;IAjBjB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,GAAG,cAAc;IASrF,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,GAAG,IAAI;IAIlE,OAAO,CAAC,SAAS,CAAmB;gBAE3B,MAAM,EAAE,cAAc,EAC9B,MAAM,EAAE,cAAc,EAAE,EAChB,QAAQ,GAAE,OAAe,EACjC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACxB,GAAG,CAAC,EAAE,cAAc;IAIrB,SAAS;IAGT,YAAY;IAGZ,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG;IAG5B,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,GAAG;IAanC,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE;IActC,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,cAAc,EAAE;IAG7C,cAAc,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,mBAAmB,EAAE;IAGtD,QAAQ,IAAI,MAAM;IAGlB,MAAM,IAAI,MAAM;CAOhB"}
|
package/api/computing/call.js
CHANGED
|
@@ -1,82 +1,91 @@
|
|
|
1
|
-
|
|
2
|
-
import { __decorate, __metadata } from "tslib";
|
|
1
|
+
import { __esDecorate, __runInitializers } from "tslib";
|
|
3
2
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
4
3
|
import { SpreadElement } from './spread.js';
|
|
5
4
|
import { Deserializer } from '../deserialize/deserialize.js';
|
|
6
5
|
import { MemberExpression } from '../definition/member.js';
|
|
7
6
|
import { Identifier } from '../definition/values.js';
|
|
8
|
-
let CallExpression =
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
this.callee = callee;
|
|
19
|
-
this.optional = optional;
|
|
20
|
-
this.arguments = params;
|
|
21
|
-
}
|
|
22
|
-
getCallee() {
|
|
23
|
-
return this.callee;
|
|
24
|
-
}
|
|
25
|
-
getArguments() {
|
|
26
|
-
return this.arguments;
|
|
27
|
-
}
|
|
28
|
-
set(stack, value) {
|
|
29
|
-
throw new Error(`CallExpression#set() has no implementation.`);
|
|
30
|
-
}
|
|
31
|
-
get(stack, thisContext) {
|
|
32
|
-
const funCallBack = this.callee.get(stack);
|
|
33
|
-
if (this.optional && (funCallBack === null || funCallBack === undefined)) {
|
|
34
|
-
return;
|
|
7
|
+
export let CallExpression = (() => {
|
|
8
|
+
let _classDecorators = [Deserializer('CallExpression')];
|
|
9
|
+
let _classDescriptor;
|
|
10
|
+
let _classExtraInitializers = [];
|
|
11
|
+
let _classThis;
|
|
12
|
+
var CallExpression = class extends AbstractExpressionNode {
|
|
13
|
+
static {
|
|
14
|
+
__esDecorate(null, _classDescriptor = { value: this }, _classDecorators, { kind: "class", name: this.name }, null, _classExtraInitializers);
|
|
15
|
+
CallExpression = _classThis = _classDescriptor.value;
|
|
16
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
35
17
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
18
|
+
callee;
|
|
19
|
+
optional;
|
|
20
|
+
static fromJSON(node, deserializer) {
|
|
21
|
+
return new CallExpression(deserializer(node.callee), node.arguments.map(param => deserializer(param)), node.optional, node.range, node.loc);
|
|
39
22
|
}
|
|
40
|
-
|
|
41
|
-
|
|
23
|
+
static visit(node, visitNode) {
|
|
24
|
+
visitNode(node.callee);
|
|
25
|
+
node.arguments.forEach(visitNode);
|
|
42
26
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
27
|
+
arguments;
|
|
28
|
+
constructor(callee, params, optional = false, range, loc) {
|
|
29
|
+
super(range, loc);
|
|
30
|
+
this.callee = callee;
|
|
31
|
+
this.optional = optional;
|
|
32
|
+
this.arguments = params;
|
|
33
|
+
}
|
|
34
|
+
getCallee() {
|
|
35
|
+
return this.callee;
|
|
36
|
+
}
|
|
37
|
+
getArguments() {
|
|
38
|
+
return this.arguments;
|
|
39
|
+
}
|
|
40
|
+
set(stack, value) {
|
|
41
|
+
throw new Error(`CallExpression#set() has no implementation.`);
|
|
42
|
+
}
|
|
43
|
+
get(stack, thisContext) {
|
|
44
|
+
const funCallBack = this.callee.get(stack);
|
|
45
|
+
if (this.optional && (funCallBack === null || funCallBack === undefined)) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const parameters = this.getCallParameters(stack);
|
|
49
|
+
if (!thisContext && this.callee instanceof MemberExpression) {
|
|
50
|
+
thisContext = this.callee.getObject().get(stack);
|
|
53
51
|
}
|
|
54
|
-
else {
|
|
55
|
-
|
|
52
|
+
else if (!thisContext && this.callee instanceof Identifier) {
|
|
53
|
+
thisContext = stack.findScope(this.callee.getName()).getContextProxy?.();
|
|
56
54
|
}
|
|
55
|
+
return funCallBack.apply(thisContext, parameters);
|
|
56
|
+
}
|
|
57
|
+
getCallParameters(stack) {
|
|
58
|
+
const parameters = [];
|
|
59
|
+
for (const arg of this.arguments) {
|
|
60
|
+
if (arg instanceof SpreadElement) {
|
|
61
|
+
const paramScope = stack.pushBlockScopeFor(parameters);
|
|
62
|
+
arg.get(stack);
|
|
63
|
+
stack.clearTo(paramScope);
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
parameters.push(arg.get(stack));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return parameters;
|
|
71
|
+
}
|
|
72
|
+
dependency(computed) {
|
|
73
|
+
return this.callee.dependency(computed).concat(this.arguments.flatMap(param => param.dependency(computed)));
|
|
74
|
+
}
|
|
75
|
+
dependencyPath(computed) {
|
|
76
|
+
return this.callee.dependencyPath(computed).concat(this.arguments.flatMap(param => param.dependencyPath(computed)));
|
|
77
|
+
}
|
|
78
|
+
toString() {
|
|
79
|
+
return `${this.callee.toString()}${this.optional ? '?.' : ''}(${this.arguments.map(arg => arg.toString()).join(', ')})`;
|
|
80
|
+
}
|
|
81
|
+
toJson() {
|
|
82
|
+
return {
|
|
83
|
+
callee: this.callee.toJSON(),
|
|
84
|
+
arguments: this.arguments.map(arg => arg.toJSON()),
|
|
85
|
+
optional: this.optional
|
|
86
|
+
};
|
|
57
87
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return this.callee.dependency(computed).concat(this.arguments.flatMap(param => param.dependency(computed)));
|
|
62
|
-
}
|
|
63
|
-
dependencyPath(computed) {
|
|
64
|
-
return this.callee.dependencyPath(computed).concat(this.arguments.flatMap(param => param.dependencyPath(computed)));
|
|
65
|
-
}
|
|
66
|
-
toString() {
|
|
67
|
-
return `${this.callee.toString()}${this.optional ? '?.' : ''}(${this.arguments.map(arg => arg.toString()).join(', ')})`;
|
|
68
|
-
}
|
|
69
|
-
toJson() {
|
|
70
|
-
return {
|
|
71
|
-
callee: this.callee.toJSON(),
|
|
72
|
-
arguments: this.arguments.map(arg => arg.toJSON()),
|
|
73
|
-
optional: this.optional
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
CallExpression = CallExpression_1 = __decorate([
|
|
78
|
-
Deserializer('CallExpression'),
|
|
79
|
-
__metadata("design:paramtypes", [Object, Array, Boolean, Array, Object])
|
|
80
|
-
], CallExpression);
|
|
81
|
-
export { CallExpression };
|
|
88
|
+
};
|
|
89
|
+
return CallExpression = _classThis;
|
|
90
|
+
})();
|
|
82
91
|
//# sourceMappingURL=call.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/call.ts"],"names":[],"mappings":"
|
|
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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debugger.d.ts","sourceRoot":"","sources":["../../../../src/expressions/api/computing/debugger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAGxD,qBACa,iBAAkB,SAAQ,sBAAsB;IAC5D,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,GAAG,iBAAiB;IAG3D,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG;IAG5B,GAAG,CAAC,KAAK,EAAE,KAAK;IAGhB,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,cAAc,EAAE;IAG7C,cAAc,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,mBAAmB,EAAE;IAGtD,QAAQ,IAAI,MAAM;IAGlB,MAAM,IAAI,MAAM;CAGhB"}
|