@ibyar/expressions 0.8.2-dev.20221008 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/abstract.d.ts +0 -3
- package/api/abstract.js +0 -4
- package/api/abstract.js.map +1 -1
- package/api/class/class.d.ts +85 -43
- package/api/class/class.js +237 -173
- package/api/class/class.js.map +1 -1
- package/api/class/decorator.d.ts +0 -2
- package/api/class/decorator.js +0 -3
- package/api/class/decorator.js.map +1 -1
- package/api/computing/call.d.ts +0 -2
- package/api/computing/call.js +0 -3
- package/api/computing/call.js.map +1 -1
- package/api/computing/debugger.d.ts +0 -2
- package/api/computing/debugger.js +0 -2
- package/api/computing/debugger.js.map +1 -1
- package/api/computing/new.d.ts +0 -2
- package/api/computing/new.js +0 -3
- package/api/computing/new.js.map +1 -1
- package/api/computing/rest.d.ts +0 -2
- package/api/computing/rest.js +0 -3
- package/api/computing/rest.js.map +1 -1
- package/api/computing/return.d.ts +0 -2
- package/api/computing/return.js +0 -3
- package/api/computing/return.js.map +1 -1
- package/api/computing/spread.d.ts +0 -2
- package/api/computing/spread.js +0 -3
- package/api/computing/spread.js.map +1 -1
- package/api/computing/throw.d.ts +0 -4
- package/api/computing/throw.js +0 -5
- package/api/computing/throw.js.map +1 -1
- package/api/computing/yield.d.ts +0 -2
- package/api/computing/yield.js +0 -3
- package/api/computing/yield.js.map +1 -1
- package/api/definition/array.d.ts +0 -3
- package/api/definition/array.js +0 -4
- package/api/definition/array.js.map +1 -1
- package/api/definition/bind.d.ts +0 -1
- package/api/definition/bind.js +0 -1
- package/api/definition/bind.js.map +1 -1
- package/api/definition/comment.d.ts +0 -2
- package/api/definition/comment.js +0 -1
- package/api/definition/comment.js.map +1 -1
- package/api/definition/function.d.ts +3 -11
- package/api/definition/function.js +33 -56
- package/api/definition/function.js.map +1 -1
- package/api/definition/member.d.ts +0 -1
- package/api/definition/member.js +1 -2
- package/api/definition/member.js.map +1 -1
- package/api/definition/object.d.ts +1 -5
- package/api/definition/object.js +2 -8
- package/api/definition/object.js.map +1 -1
- package/api/definition/statement.d.ts +0 -2
- package/api/definition/statement.js +0 -3
- package/api/definition/statement.js.map +1 -1
- package/api/definition/values.d.ts +0 -3
- package/api/definition/values.js +0 -5
- package/api/definition/values.js.map +1 -1
- package/api/expression.d.ts +0 -20
- package/api/expression.js.map +1 -1
- package/api/module/common.d.ts +1 -2
- package/api/module/common.js +3 -3
- package/api/module/common.js.map +1 -1
- package/api/module/export.d.ts +0 -5
- package/api/module/export.js +5 -9
- package/api/module/export.js.map +1 -1
- package/api/module/import.d.ts +2 -6
- package/api/module/import.js +4 -9
- package/api/module/import.js.map +1 -1
- package/api/operators/await.d.ts +0 -2
- package/api/operators/await.js +0 -3
- package/api/operators/await.js.map +1 -1
- package/api/operators/chaining.d.ts +0 -1
- package/api/operators/chaining.js +0 -1
- package/api/operators/chaining.js.map +1 -1
- package/api/operators/comma.d.ts +0 -2
- package/api/operators/comma.js +0 -3
- package/api/operators/comma.js.map +1 -1
- package/api/operators/grouping.d.ts +0 -2
- package/api/operators/grouping.js +0 -3
- package/api/operators/grouping.js.map +1 -1
- package/api/operators/pipeline.d.ts +1 -3
- package/api/operators/pipeline.js +0 -7
- package/api/operators/pipeline.js.map +1 -1
- package/api/operators/ternary.d.ts +0 -2
- package/api/operators/ternary.js +0 -5
- package/api/operators/ternary.js.map +1 -1
- package/api/operators/unary.d.ts +0 -2
- package/api/operators/unary.js +0 -3
- package/api/operators/unary.js.map +1 -1
- package/api/operators/update.d.ts +0 -2
- package/api/operators/update.js +0 -3
- package/api/operators/update.js.map +1 -1
- package/api/program.d.ts +0 -2
- package/api/program.js +0 -1
- package/api/program.js.map +1 -1
- package/api/statement/control/block.d.ts +0 -2
- package/api/statement/control/block.js +3 -8
- package/api/statement/control/block.js.map +1 -1
- package/api/statement/control/empty.d.ts +0 -2
- package/api/statement/control/empty.js +0 -1
- package/api/statement/control/empty.js.map +1 -1
- package/api/statement/control/if.d.ts +0 -2
- package/api/statement/control/if.js +0 -5
- package/api/statement/control/if.js.map +1 -1
- package/api/statement/control/switch.d.ts +0 -3
- package/api/statement/control/switch.js +0 -8
- package/api/statement/control/switch.js.map +1 -1
- package/api/statement/control/terminate.d.ts +0 -3
- package/api/statement/control/terminate.js +0 -4
- package/api/statement/control/terminate.js.map +1 -1
- package/api/statement/declarations/declares.d.ts +1 -4
- package/api/statement/declarations/declares.js +0 -6
- package/api/statement/declarations/declares.js.map +1 -1
- package/api/statement/iterations/for.d.ts +1 -6
- package/api/statement/iterations/for.js +0 -18
- package/api/statement/iterations/for.js.map +1 -1
- package/api/statement/iterations/while.d.ts +0 -3
- package/api/statement/iterations/while.js +0 -8
- package/api/statement/iterations/while.js.map +1 -1
- package/package.json +2 -2
- package/scope/scope.d.ts +6 -22
- package/scope/scope.js +12 -59
- package/scope/scope.js.map +1 -1
- package/scope/stack.d.ts +15 -3
- package/scope/stack.js +26 -9
- package/scope/stack.js.map +1 -1
- package/v8/inline.d.ts +3 -1
- package/v8/inline.js +29 -16
- package/v8/inline.js.map +1 -1
- package/v8/nodes.d.ts +1 -1
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,\n\tExpressionNode, NodeDeserializer, VisitNodeType\n} from '../expression.js';\nimport { ClassScope, Scope } from '../../scope/scope.js';\nimport { __decorate } from 'tslib';\nimport { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { Identifier } from '../definition/values.js';\nimport { MemberExpression } from '../definition/member.js';\nimport { FunctionExpression } from '../definition/function.js';\nimport { BlockStatement } from '../statement/control/block.js';\nimport { TypeOf } from '../utils.js';\nimport { Decorator } from './decorator.js';\nimport { CallExpression } from '../computing/call.js';\n\nconst TEMP_CLASS_NAME: unique symbol = Symbol('TempClassName');\nconst SUPER: unique symbol = Symbol('Super');\nconst NEW_TARGET: unique symbol = Symbol('NewTarget');\nconst IMPORT_META: unique symbol = Symbol('ImportMeta');\nconst STACK: unique symbol = Symbol('Stack');\n\nconst GET_PARAMETERS: unique symbol = Symbol('GetParameters');\nconst GET_SUPER_PROPERTY: unique symbol = Symbol('GetSuperProperty');\nconst CALL_SUPER_Method: unique symbol = Symbol('CallSuperMethod');\n\nconst CONSTRUCTOR: unique symbol = Symbol('Constructor');\nconst PRIVATE_SYMBOL: unique symbol = Symbol('Private');\nconst INSTANCE_PRIVATE_SYMBOL: unique symbol = Symbol('InstancePrivate');\nconst STATIC_INITIALIZATION_BLOCK: unique symbol = Symbol('StaticBlock');\n\ninterface ClassConstructor {\n\t/**\n\t * A reference to the prototype.\n\t */\n\treadonly prototype: ClassInstance;\n\n\t[GET_PARAMETERS](args: any[]): any[];\n\t[STATIC_INITIALIZATION_BLOCK]: Function[];\n\t[PRIVATE_SYMBOL]: { [key: PropertyKey]: any };\n\t[INSTANCE_PRIVATE_SYMBOL]: { [key: PropertyKey]: any };\n\t[CONSTRUCTOR]: Function;\n\t[key: string]: any;\n}\n\ndeclare var ClassInstance: ClassConstructor;\ninterface ClassInstance {\n\t[PRIVATE_SYMBOL]: { [key: PropertyKey]: any };\n\t[STACK]: Stack;\n\t[key: string]: any;\n}\n\n\n/**\n * A `super` pseudo-expression.\n */\n@Deserializer('Super')\nexport class Super extends AbstractExpressionNode {\n\tstatic INSTANCE = new Super();\n\tstatic fromJSON(node: Super): Super {\n\t\treturn Super.INSTANCE;\n\t}\n\tconstructor() {\n\t\tsuper();\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('Super.#set() Method not implemented.');\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\tthrow new Error('Super.#get() Method not implemented.');\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\tthrow new Error('Super.#dependency() Method not implemented.');\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\tthrow new Error('Super.#dependencyPath() Method not implemented.');\n\t}\n\n\ttoString(): string {\n\t\treturn `super`;\n\t}\n\ttoJson(): { [key: string]: any; } {\n\t\treturn {};\n\t}\n}\n\n/**\n * MetaProperty node represents\n * - `new.target` meta property in ES2015.\n * - `import.meta` meta property in ES2030.\n * \n * In the future, it will represent other meta properties as well.\n */\n@Deserializer('MetaProperty')\nexport class MetaProperty extends MemberExpression {\n\n\tpublic static NewTarget = new MetaProperty(new Identifier('new'), new Identifier('target'));\n\n\tpublic static ImportMeta = new MetaProperty(new Identifier('import'), new Identifier('meta'));\n\n\tprivate static getJsonName(identifier: ExpressionNode): string {\n\t\treturn Reflect.get(identifier, 'name');\n\t}\n\n\tstatic fromJSON(node: MetaProperty, deserializer: NodeDeserializer<any>): MetaProperty {\n\t\tif (MetaProperty.getJsonName(node.meta) === 'new' && MetaProperty.getJsonName(node.property) === 'target') {\n\t\t\treturn MetaProperty.NewTarget;\n\t\t}\n\t\telse if (MetaProperty.getJsonName(node.meta) === 'import' && MetaProperty.getJsonName(node.property) === 'meta') {\n\t\t\treturn MetaProperty.ImportMeta;\n\t\t}\n\t\treturn new MetaProperty(\n\t\t\tdeserializer(node.meta),\n\t\t\tdeserializer(node.property)\n\t\t);\n\t}\n\tstatic visit(node: MetaProperty, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.meta);\n\t\tvisitNode(node.property);\n\t}\n\tconstructor(private meta: Identifier, property: Identifier) {\n\t\tsuper(meta, property, false);\n\t}\n\tgetMeta() {\n\t\treturn this.meta;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tget(stack: Stack, thisContext?: any) {\n\t\tif (MetaProperty.getJsonName(this.meta) === 'new' && MetaProperty.getJsonName(this.property) === 'target') {\n\t\t\treturn stack.get(NEW_TARGET);\n\t\t}\n\t\telse if (MetaProperty.getJsonName(this.meta) === 'import' && MetaProperty.getJsonName(this.property) === 'meta') {\n\t\t\tconst importObject = stack.getModule()?.get('import');\n\t\t\treturn importObject['meta'];\n\t\t}\n\t\treturn super.get(stack, thisContext);\n\t}\n\ttoString(): string {\n\t\treturn `${this.meta.toString()}.${this.property.toString()}`;\n\t}\n\ttoJson(): { [key: string]: any; } {\n\t\treturn {\n\t\t\tmeta: this.meta.toJSON(),\n\t\t\tproperty: this.property.toJSON(),\n\t\t};\n\t}\n}\n\n/**\n * A private identifier refers to private class elements. For a private name `#a`, its name is `a`.\n */\n@Deserializer('PrivateIdentifier')\nexport class PrivateIdentifier extends Identifier {\n\tstatic fromJSON(node: PrivateIdentifier): PrivateIdentifier {\n\t\treturn new PrivateIdentifier(\n\t\t\tnode.name as string\n\t\t);\n\t}\n\tget(stack: Stack) {\n\t\treturn stack.get(this.toString());\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));\n\t}\n\tconstructor(body: ExpressionNode[]) {\n\t\tsuper(body);\n\t}\n\tget(stack: Stack, classConstructor?: ClassConstructor): void {\n\t\tconst constructor = classConstructor!;\n\t\tconstructor[STATIC_INITIALIZATION_BLOCK].push(\n\t\t\t() => {\n\t\t\t\tconst scope = new ClassScope(constructor);\n\t\t\t\tstack.pushScope(scope);\n\t\t\t\ttry {\n\t\t\t\t\tsuper.get(stack)\n\t\t\t\t} finally {\n\t\t\t\t\tstack.clearTo(scope);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\ttoString(): string {\n\t\treturn `static ${super.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tbody: this.body.map(node => node.toJSON())\n\t\t};\n\t}\n}\n\nexport abstract class AbstractDefinition extends AbstractExpressionNode {\n\tprotected 'static': boolean;\n\tconstructor(\n\t\tprotected key: ExpressionNode | PrivateIdentifier,\n\t\tprotected decorators: Decorator[],\n\t\tprotected computed: boolean,\n\t\tisStatic: boolean,\n\t\tprotected value?: ExpressionNode,) {\n\t\tsuper();\n\t\tthis.static = isStatic;\n\t}\n\tgetKey() {\n\t\treturn this.key;\n\t}\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\tisComputed() {\n\t\treturn this.computed;\n\t}\n\tisStatic() {\n\t\treturn this.static;\n\t}\n\tgetDecorators() {\n\t\treturn this.decorators;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('AbstractDefinition.#set() Method not implemented.');\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn [];\n\t}\n\tgetTarget(classConstructor: ClassConstructor) {\n\t\treturn this.static\n\t\t\t? (this.key instanceof PrivateIdentifier ? classConstructor[PRIVATE_SYMBOL] : classConstructor)\n\t\t\t: (this.key instanceof PrivateIdentifier ? classConstructor[INSTANCE_PRIVATE_SYMBOL] : classConstructor.prototype);\n\t}\n\tgetKeyName(stack: Stack) {\n\t\tswitch (true) {\n\t\t\tcase this.computed:\n\t\t\t\treturn this.key.get(stack);\n\t\t\tcase this.key instanceof Identifier:\n\t\t\tcase this.key instanceof PrivateIdentifier:\n\t\t\t\treturn (this.key as Identifier | PrivateIdentifier).getName() as string;\n\t\t\tdefault: return this.key.toString();\n\t\t}\n\t}\n\tabstract get(stack: Stack, classConstructor: ClassConstructor): void;\n\tabstract toString(): string;\n\tabstract toJson(): { [key: string]: any; };\n}\n\nexport type MethodDefinitionKind = 'constructor' | 'method' | 'set' | 'get';\n\n/**\n * - When key is a PrivateIdentifier, computed must be false and kind can not be \"constructor\".\n */\n@Deserializer('MethodDefinition')\nexport class MethodDefinition extends AbstractDefinition {\n\tstatic fromJSON(node: MethodDefinition, deserializer: NodeDeserializer<any>): MethodDefinition {\n\t\treturn new MethodDefinition(\n\t\t\tnode.kind,\n\t\t\tdeserializer(node.key),\n\t\t\tdeserializer(node.value),\n\t\t\tnode.decorators.map(deserializer),\n\t\t\tnode.computed,\n\t\t\tnode.static\n\t\t);\n\t}\n\tstatic visit(node: MethodDefinition, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.key);\n\t\tvisitNode(node.value);\n\t\tnode.decorators.forEach(visitNode);\n\t}\n\tdeclare protected value: FunctionExpression;\n\tconstructor(\n\t\tprivate kind: MethodDefinitionKind,\n\t\tkey: ExpressionNode | PrivateIdentifier,\n\t\tvalue: FunctionExpression,\n\t\tdecorators: Decorator[],\n\t\tcomputed: boolean,\n\t\tisStatic: boolean) {\n\t\tsuper(key, decorators, computed, isStatic, value);\n\t}\n\tgetKind() {\n\t\treturn this.kind;\n\t}\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\tget(stack: Stack, classConstructor: ClassConstructor): void {\n\t\tif (this.kind === 'constructor') {\n\t\t\tthis.initConstructor(stack, classConstructor);\n\t\t\treturn;\n\t\t}\n\t\tconst target = this.getTarget(classConstructor);\n\t\tconst name: string = this.getKeyName(stack);\n\t\tconst value = this.value?.get(stack);\n\t\tswitch (this.kind) {\n\t\t\tcase 'method':\n\t\t\t\ttarget[name] = value;\n\t\t\t\tbreak;\n\t\t\tcase 'set':\n\t\t\t\tObject.defineProperty(target, name, {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tset: value as (v: any) => void,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'get':\n\t\t\t\tObject.defineProperty(target, name, {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tget: value as () => any,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\tconst decorators = this.decorators.map(decorator => decorator.get(stack));\n\t\tdecorators.length && __decorate(decorators, target, name, null);\n\t}\n\tprivate initConstructor(stack: Stack, classConstructor: ClassConstructor) {\n\t\tconst body = (this.value.getBody() as BlockStatement).getBody();\n\t\tlet superIndex = body\n\t\t\t.findIndex(call => call instanceof CallExpression && Super.INSTANCE === call.getCallee());\n\t\tif (superIndex === -1) {\n\t\t\tsuperIndex = body.length;\n\t\t}\n\t\tconst superCall = body[superIndex] as CallExpression | undefined;\n\n\t\tconst blockBeforeSuper = new BlockStatement(body.slice(0, superIndex));\n\t\tconst blockAfterSuper = new BlockStatement(body.slice(superIndex + 1));\n\n\t\tif (superCall) {\n\t\t\tclassConstructor[GET_PARAMETERS] = function (this: ClassConstructor, params: any[]) {\n\t\t\t\tconst scope = stack.pushBlockScope();\n\t\t\t\tthis.value.setParameter(stack, params);\n\t\t\t\tblockBeforeSuper.get(stack);\n\t\t\t\tconst parameters = superCall.getCallParameters(stack);\n\t\t\t\tstack.clearTo(scope);\n\t\t\t\treturn parameters;\n\t\t\t};\n\t\t}\n\n\t\tclassConstructor[CONSTRUCTOR] = function (this: ClassInstance, params: any[]) {\n\t\t\tconst scope = this[STACK].pushBlockScope();\n\t\t\tblockAfterSuper.get(this[STACK]);\n\t\t\tstack.clearTo(scope);\n\t\t};\n\t}\n\ttoString(): string {\n\t\tlet str = this.decorators.map(decorator => decorator.toString()).join(' ');\n\t\tif (str.length) {\n\t\t\tstr += ' ';\n\t\t}\n\t\tif (this.static) {\n\t\t\tstr += 'static ';\n\t\t}\n\t\tconst methodName = this.key.toString();\n\t\tswitch (this.kind) {\n\t\t\tcase 'get':\n\t\t\t\tstr += 'get ' + methodName;\n\t\t\t\tbreak;\n\t\t\tcase 'set':\n\t\t\t\tstr += 'set ' + methodName;\n\t\t\t\tbreak;\n\t\t\tcase 'method':\n\t\t\t\tif (this.value.getAsync() && this.value.getGenerator()) {\n\t\t\t\t\tstr += 'async *';\n\t\t\t\t}\n\t\t\t\telse if (this.value.getAsync()) {\n\t\t\t\t\tstr += 'async ';\n\t\t\t\t} else if (this.value.getGenerator()) {\n\t\t\t\t\tstr += '*';\n\t\t\t\t}\n\t\t\t\tstr += methodName;\n\t\t\t\tbreak;\n\t\t\tcase 'constructor':\n\t\t\t\tstr += 'constructor';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\tstr += this.value.paramsAndBodyToString();\n\t\treturn str;\n\t}\n\ttoJson(): { [key: string]: any; } {\n\t\treturn {\n\t\t\tkind: this.kind,\n\t\t\tkey: this.key.toJSON(),\n\t\t\tvalue: this.value.toJSON(),\n\t\t\tdecorators: this.decorators.map(decorator => decorator.toJSON()),\n\t\t\tcomputed: this.computed,\n\t\t\tstatic: this.static,\n\t\t};\n\t}\n}\n\n\n\n/**\n * - When key is a PrivateIdentifier, computed must be false.\n */\n@Deserializer('PropertyDefinition')\nexport class PropertyDefinition extends AbstractDefinition {\n\tstatic fromJSON(node: PropertyDefinition, deserializer: NodeDeserializer<any>): PropertyDefinition {\n\t\treturn new PropertyDefinition(\n\t\t\tdeserializer(node.key),\n\t\t\tnode.decorators.map(deserializer),\n\t\t\tnode.computed,\n\t\t\tnode.static,\n\t\t\tnode.value && deserializer(node.value)\n\t\t);\n\t}\n\tstatic visit(node: PropertyDefinition, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.key);\n\t\tnode.value && visitNode(node.value);\n\t}\n\tconstructor(\n\t\tkey: ExpressionNode | PrivateIdentifier,\n\t\tdecorators: Decorator[],\n\t\tcomputed: boolean,\n\t\tisStatic: boolean,\n\t\tvalue?: ExpressionNode) {\n\t\tsuper(key, decorators, computed, isStatic, value);\n\t}\n\tget(stack: Stack, classConstructor: ClassConstructor): void {\n\t\tconst target = this.getTarget(classConstructor);\n\t\tconst name: string = this.getKeyName(stack);\n\t\tconst value = this.value?.get(stack);\n\t\ttarget[name as string] = value;\n\t\tconst decorators = this.decorators.map(decorator => decorator.get(stack));\n\t\tdecorators.length && __decorate(decorators, target, name, null);\n\t}\n\ttoString(): string {\n\t\tconst decorators = this.decorators.map(decorator => decorator.toString()).join('\\n');\n\t\tconst name = this.computed ? `[${this.key.toString()}]` : this.key.toString();\n\t\treturn `${decorators.length ? decorators + ' ' : ''}${this.static ? 'static ' : ''}${name}${this.value ? ` = ${this.value.toString()}` : ''};`\n\t}\n\ttoJson(): { [key: string]: any; } {\n\t\treturn {\n\t\t\tkey: this.key.toJSON(),\n\t\t\tvalue: this.value?.toJSON(),\n\t\t\tdecorators: this.decorators.map(decorator => decorator.toJSON()),\n\t\t\tcomputed: this.computed,\n\t\t\tstatic: this.static,\n\t\t};\n\t}\n}\n\n\n\n@Deserializer('AccessorProperty')\nexport class AccessorProperty extends AbstractDefinition {\n\tstatic fromJSON(node: AccessorProperty, deserializer: NodeDeserializer): AccessorProperty {\n\t\treturn new AccessorProperty(\n\t\t\tdeserializer(node.key),\n\t\t\tnode.decorators.map(deserializer) as Decorator[],\n\t\t\tnode.computed,\n\t\t\tnode.static,\n\t\t\tnode.value ? deserializer(node.value) : void 0\n\t\t);\n\t}\n\tstatic visit(node: AccessorProperty, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.key);\n\t\tnode.value && visitNode(node.value);\n\t\tnode.decorators.forEach(visitNode);\n\t}\n\tconstructor(\n\t\tkey: ExpressionNode,\n\t\tdecorators: Decorator[],\n\t\tcomputed: boolean,\n\t\tisStatic: boolean,\n\t\tvalue?: ExpressionNode) {\n\t\tsuper(key, decorators, computed, isStatic, value);\n\t}\n\tget(stack: Stack, classConstructor: ClassConstructor): void {\n\t\tconst target = this.getTarget(classConstructor);\n\t\tconst name = this.getKeyName(stack);\n\t\tconst value = this.value?.get(stack);\n\t\ttarget[name] = value;\n\t\tconst ref = this.static ? classConstructor : classConstructor.prototype;\n\t\tObject.defineProperty(ref, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tset: function (this: ClassInstance, setValue: any) {\n\t\t\t\tthis[PRIVATE_SYMBOL][name] = setValue;\n\t\t\t},\n\t\t});\n\t\tObject.defineProperty(ref, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: function (this: ClassInstance) {\n\t\t\t\treturn this[PRIVATE_SYMBOL][name];\n\t\t\t},\n\t\t});\n\t\tconst decorators = this.decorators.map(decorator => decorator.get(stack));\n\t\tdecorators.length && __decorate(decorators, ref, name, null);\n\t}\n\ttoString(): string {\n\t\tconst decorators = this.decorators.map(decorator => decorator.toString()).join('\\n');\n\t\tconst name = this.computed ? `[${this.key.toString()}]` : this.key.toString();\n\t\treturn `${decorators.length ? decorators.concat(' ') : ''}${this.static ? 'static ' : ''}accessor ${name}${this.value ? ` = ${this.value.toString()}` : ''};`\n\t}\n\ttoJson(): { [key: string]: any; } {\n\t\treturn {\n\t\t\tkey: this.key.toJSON(),\n\t\t\tdecorators: this.decorators.map(decorator => decorator.toJSON()),\n\t\t\tcomputed: this.computed,\n\t\t\tstatic: this.static,\n\t\t\tvalue: this.value?.toJSON(),\n\t\t};\n\t}\n}\n\n\n@Deserializer('ClassBody')\nexport class ClassBody extends AbstractExpressionNode {\n\tstatic fromJSON(node: ClassBody, deserializer: NodeDeserializer<any>): ClassBody {\n\t\treturn new ClassBody(\n\t\t\tnode.body.map(deserializer)\n\t\t);\n\t}\n\tstatic visit(node: ClassBody, visitNode: VisitNodeType): void {\n\t\tnode.body.forEach(visitNode);\n\t}\n\tconstructor(private body: (MethodDefinition | PropertyDefinition | AccessorProperty | StaticBlock)[]) {\n\t\tsuper();\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('Method not implemented.');\n\t}\n\tget(stack: Stack, classConstructor: ClassConstructor) {\n\t\tthis.body.forEach(definition => definition.get(stack, classConstructor));\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\tthrow new Error('Method not implemented.');\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\tthrow new Error('Method not implemented.');\n\t}\n\ttoString(): string {\n\t\treturn this.body.map(definition => `\\t${definition.toString()}`).join('\\n');\n\t}\n\ttoJson(): { [key: string]: any; } {\n\t\treturn {\n\t\t\tbody: this.body.map(method => method.toJSON())\n\t\t};\n\t}\n}\n\nexport class Class extends AbstractExpressionNode {\n\tprivate sharedVariables?: Scope<any>[];\n\tconstructor(\n\t\tprotected body: ClassBody,\n\t\tprotected decorators: Decorator[],\n\t\tprotected id?: Identifier,\n\t\tprotected superClass?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tgetDecorators() {\n\t\treturn this.decorators;\n\t}\n\tgetId() {\n\t\treturn this.id;\n\t}\n\tgetSuperClass() {\n\t\treturn this.superClass;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.sharedVariables = scopeList;\n\t}\n\tset(stack: Stack) {\n\t\tthrow new Error(`Class.#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst className = this.id?.getName() as string | undefined;\n\t\tconst parentClass = this.superClass?.get(stack) as TypeOf<any> | undefined ?? class { };\n\t\tlet classConstructor: ClassConstructor = this.createClass(stack, parentClass, className);\n\t\t// build class body\n\t\tthis.body.get(stack, classConstructor);\n\n\t\t// apply class decorators\n\t\tconst decorators = this.decorators.map(decorator => decorator.get(stack));\n\t\tclassConstructor = __decorate(decorators, classConstructor);\n\n\t\t// run static initialization block\n\t\tclassConstructor[STATIC_INITIALIZATION_BLOCK].forEach(block => block());\n\t\tReflect.deleteProperty(classConstructor, STATIC_INITIALIZATION_BLOCK);\n\n\t\treturn classConstructor;\n\t}\n\n\tprivate createClass(stack: Stack, parentClass: TypeOf<any>, className: string | symbol = TEMP_CLASS_NAME) {\n\t\tconst ClassDeclaration = class extends parentClass {\n\t\t\tstatic [GET_PARAMETERS](args: any[]): any[] {\n\t\t\t\treturn args;\n\t\t\t}\n\t\t\tstatic [STATIC_INITIALIZATION_BLOCK]: Function[] = [];\n\t\t\tstatic [PRIVATE_SYMBOL]: { [key: string | number | symbol]: any } = {};\n\t\t\tstatic [INSTANCE_PRIVATE_SYMBOL] = {};\n\t\t\tstatic [CONSTRUCTOR](): void { }\n\n\t\t\t[PRIVATE_SYMBOL]: { [key: string | number | symbol]: any } = {};\n\n\t\t\t[STACK]: Stack;\n\t\t\tconstructor(...params: any[]) {\n\t\t\t\tconst parameters = ClassDeclaration[GET_PARAMETERS](params);\n\t\t\t\tsuper(...parameters);\n\t\t\t\tthis[PRIVATE_SYMBOL] = Object.assign(this[PRIVATE_SYMBOL], ClassDeclaration[INSTANCE_PRIVATE_SYMBOL]);\n\t\t\t\tthis[STACK] = stack.copyStack();\n\t\t\t\tconst instanceStack = this[STACK];\n\t\t\t\tinstanceStack.pushScope(ClassScope.readOnlyScopeForThis(this));\n\t\t\t\tinstanceStack.declareVariable(NEW_TARGET, new.target);\n\t\t\t\tinstanceStack.declareVariable(PRIVATE_SYMBOL, this[PRIVATE_SYMBOL]);\n\t\t\t\tinstanceStack.declareVariable(CALL_SUPER_Method, (name: string) => super[name]());\n\t\t\t\tinstanceStack.declareVariable(GET_SUPER_PROPERTY, (name: string) => super[name]);\n\t\t\t\tinstanceStack.pushReactiveScope();\n\t\t\t\t// init fields and methods values\n\t\t\t\tClassDeclaration[CONSTRUCTOR]();\n\t\t\t}\n\t\t};\n\t\tReflect.set(ClassDeclaration, 'name', className);\n\t\treturn ClassDeclaration;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\tthrow new Error('Method not implemented.');\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\tthrow new Error('Method not implemented.');\n\t}\n\ttoString() {\n\t\tconst decorators = this.decorators.map(decorator => decorator.toString()).join('\\n');\n\t\tlet classDeclaration = 'class ';\n\t\tif (this.id) {\n\t\t\tclassDeclaration += this.id.toString();\n\t\t}\n\t\tif (this.superClass) {\n\t\t\tclassDeclaration += ' extends ' + this.superClass.toString();\n\t\t}\n\t\treturn `${decorators}${classDeclaration} {\\n${this.body.toString()}\\n}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tbody: this.body.toJSON(),\n\t\t\tdecorators: this.decorators.map(decorator => decorator.toJSON()),\n\t\t\tid: this.id?.toJSON(),\n\t\t\tsuperClass: this.superClass?.toJSON(),\n\t\t};\n\t}\n}\n\n@Deserializer('ClassDeclaration')\nexport class ClassDeclaration extends Class implements DeclarationExpression {\n\tstatic fromJSON(node: ClassDeclaration, deserializer: NodeDeserializer<any>): ClassDeclaration {\n\t\treturn new ClassDeclaration(\n\t\t\tdeserializer(node.body),\n\t\t\tdeserializer(node.id),\n\t\t\tnode.superClass && deserializer(node.superClass)\n\t\t);\n\t}\n\tstatic visit(node: ClassDeclaration, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.body);\n\t\tnode.decorators.forEach(visitNode);\n\t\tvisitNode(node.id);\n\t\tnode.superClass && visitNode(node.superClass);\n\t}\n\tdeclare protected id: Identifier;\n\tconstructor(body: ClassBody, decorators: Decorator[], id: Identifier, superClass?: ExpressionNode) {\n\t\tsuper(body, decorators, id, superClass);\n\t}\n\tdeclareVariable(stack: Stack, propertyValue?: any) {\n\t\tstack.declareVariable(this.id.getName(), propertyValue);\n\t}\n\tgetDeclarationName(): string {\n\t\treturn this.id.getDeclarationName()!;\n\t}\n\n\toverride get(stack: Stack) {\n\t\tconst classConstructor = super.get(stack);\n\t\tthis.id.declareVariable(stack, classConstructor);\n\t\treturn classConstructor;\n\t}\n}\n\n@Deserializer('ClassExpression')\nexport class ClassExpression extends Class {\n\tstatic fromJSON(node: ClassExpression, deserializer: NodeDeserializer<any>): ClassExpression {\n\t\treturn new ClassExpression(\n\t\t\tdeserializer(node.body),\n\t\t\tnode.superClass && deserializer(node.superClass)\n\t\t);\n\t}\n\tstatic visit(node: ClassExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.body);\n\t\tnode.decorators.forEach(visitNode);\n\t\tnode.id && visitNode(node.id);\n\t\tnode.superClass && visitNode(node.superClass);\n\t}\n\n}\n"]}
|
|
1
|
+
{"version":3,"file":"class.js","sourceRoot":"","sources":["../../../../src/expressions/api/class/class.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tDeclarationExpression, ExpressionEventPath,\n\tExpressionNode, NodeDeserializer, 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\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 INSTANCE = new Super();\n\tstatic fromJSON(node: Super): Super {\n\t\treturn Super.INSTANCE;\n\t}\n\tconstructor() {\n\t\tsuper();\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\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\n\tpublic static NewTarget = new MetaProperty(new Identifier('new'), new Identifier('target'));\n\n\tpublic static ImportMeta = new MetaProperty(new Identifier('import'), new Identifier('meta'));\n\n\tprivate static getJsonName(identifier: ExpressionNode): string {\n\t\treturn Reflect.get(identifier, 'name');\n\t}\n\n\tstatic fromJSON(node: MetaProperty, deserializer: NodeDeserializer<any>): MetaProperty {\n\t\tif (MetaProperty.getJsonName(node.meta) === 'new' && MetaProperty.getJsonName(node.property) === 'target') {\n\t\t\treturn MetaProperty.NewTarget;\n\t\t}\n\t\telse if (MetaProperty.getJsonName(node.meta) === 'import' && MetaProperty.getJsonName(node.property) === 'meta') {\n\t\t\treturn MetaProperty.ImportMeta;\n\t\t}\n\t\treturn new MetaProperty(\n\t\t\tdeserializer(node.meta),\n\t\t\tdeserializer(node.property)\n\t\t);\n\t}\n\tstatic visit(node: MetaProperty, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.meta);\n\t\tvisitNode(node.property);\n\t}\n\tconstructor(private meta: Identifier, private property: Identifier) {\n\t\tsuper();\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);\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));\n\t}\n\tconstructor(body: ExpressionNode[]) {\n\t\tsuper(body);\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\tsuper();\n\t\tthis.static = isStatic;\n\t}\n\tgetKey() {\n\t\treturn this.key;\n\t}\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\tisComputed() {\n\t\treturn this.computed;\n\t}\n\tisStatic() {\n\t\treturn this.static;\n\t}\n\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);\n\t}\n\tstatic visit(node: MethodDefinition, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.key);\n\t\tvisitNode(node.value);\n\t\tnode.decorators.forEach(visitNode);\n\t}\n\tdeclare protected value: FunctionExpression;\n\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\tsuper(key, decorators, computed, isStatic, value);\n\t}\n\tgetKind() {\n\t\treturn this.kind;\n\t}\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\tget(stack: Stack, 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);\n\t}\n\tstatic visit(node: PropertyDefinition, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.key);\n\t\tnode.value && visitNode(node.value);\n\t}\n\tconstructor(\n\t\tkey: ExpressionNode | PrivateIdentifier,\n\t\tdecorators: Decorator[],\n\t\tcomputed: boolean,\n\t\tisStatic: boolean,\n\t\tvalue?: ExpressionNode) {\n\t\tsuper(key, decorators, computed, isStatic, value);\n\t}\n\tget(stack: Stack, 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);\n\t}\n\tstatic visit(node: AccessorProperty, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.key);\n\t\tnode.value && visitNode(node.value);\n\t\tnode.decorators.forEach(visitNode);\n\t}\n\tconstructor(\n\t\tkey: ExpressionNode,\n\t\tdecorators: Decorator[],\n\t\tcomputed: boolean,\n\t\tisStatic: boolean,\n\t\tvalue?: ExpressionNode) {\n\t\tsuper(key, decorators, computed, isStatic, value);\n\t}\n\tget(stack: Stack, 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);\n\t}\n\tstatic visit(node: ClassBody, visitNode: VisitNodeType): void {\n\t\tnode.body.forEach(visitNode);\n\t}\n\tconstructor(private body: (MethodDefinition | PropertyDefinition | AccessorProperty | StaticBlock)[]) {\n\t\tsuper();\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\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\tsuper();\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tgetDecorators() {\n\t\treturn this.decorators;\n\t}\n\tgetId() {\n\t\treturn this.id;\n\t}\n\tgetSuperClass() {\n\t\treturn this.superClass;\n\t}\n\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\tdeserializer(node.id),\n\t\t\tnode.superClass && deserializer(node.superClass)\n\t\t);\n\t}\n\tstatic visit(node: ClassDeclaration, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.body);\n\t\tnode.decorators.forEach(visitNode);\n\t\tvisitNode(node.id);\n\t\tnode.superClass && visitNode(node.superClass);\n\t}\n\tdeclare protected id: Identifier;\n\tconstructor(body: ClassBody, decorators: Decorator[], id: Identifier, superClass?: ExpressionNode) {\n\t\tsuper(body, decorators, id, superClass);\n\t}\n\tdeclareVariable(stack: Stack, propertyValue?: any) {\n\t\tstack.declareVariable(this.id.getName(), propertyValue);\n\t}\n\tgetDeclarationName(): string {\n\t\treturn this.id.getDeclarationName()!;\n\t}\n\n\toverride get(stack: Stack) {\n\t\tconst classConstructor = super.get(stack);\n\t\tthis.id.declareVariable(stack, classConstructor);\n\t\treturn classConstructor;\n\t}\n}\n\n@Deserializer('ClassExpression')\nexport class ClassExpression extends Class {\n\tstatic fromJSON(node: ClassExpression, deserializer: NodeDeserializer<any>): ClassExpression {\n\t\treturn new ClassExpression(\n\t\t\tdeserializer(node.body),\n\t\t\tnode.superClass && deserializer(node.superClass)\n\t\t);\n\t}\n\tstatic visit(node: ClassExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.body);\n\t\tnode.decorators.forEach(visitNode);\n\t\tnode.id && visitNode(node.id);\n\t\tnode.superClass && visitNode(node.superClass);\n\t}\n\n}\n"]}
|
package/api/class/decorator.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Scope } from '../../scope/scope.js';
|
|
2
1
|
import { Stack } from '../../scope/stack.js';
|
|
3
2
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
4
3
|
import { ExpressionEventPath, ExpressionNode, NodeDeserializer, VisitNodeType } from '../expression.js';
|
|
@@ -8,7 +7,6 @@ export declare class Decorator extends AbstractExpressionNode {
|
|
|
8
7
|
static visit(node: Decorator, visitNode: VisitNodeType): void;
|
|
9
8
|
constructor(expression: ExpressionNode);
|
|
10
9
|
getExpression(): ExpressionNode;
|
|
11
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
12
10
|
set(stack: Stack, value: any): void;
|
|
13
11
|
get(stack: Stack): any;
|
|
14
12
|
dependency(computed?: true): ExpressionNode[];
|
package/api/class/decorator.js
CHANGED
|
@@ -16,9 +16,6 @@ let Decorator = Decorator_1 = class Decorator extends AbstractExpressionNode {
|
|
|
16
16
|
getExpression() {
|
|
17
17
|
return this.expression;
|
|
18
18
|
}
|
|
19
|
-
shareVariables(scopeList) {
|
|
20
|
-
this.expression.shareVariables(scopeList);
|
|
21
|
-
}
|
|
22
19
|
set(stack, value) {
|
|
23
20
|
throw new Error('Decorator#set() Method not implemented.');
|
|
24
21
|
}
|
|
@@ -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":";;AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAItD,IAAM,SAAS,iBAAf,MAAM,SAAU,SAAQ,sBAAsB;IAOpD,YAAoB,UAA0B;QAC7C,KAAK,EAAE,CAAC;QADW,eAAU,GAAV,UAAU,CAAgB;IAE9C,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAe,EAAE,YAAmC;QACnE,OAAO,IAAI,WAAS,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAe,EAAE,SAAwB;QACrD,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;IAID,aAAa;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC5D,CAAC;IACD,GAAG,CAAC,KAAY;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;IACzC,CAAC;IACD,MAAM;QACL,OAAO;YACN,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;SACpC,CAAC;IACH,CAAC;CACD,CAAA;AAjCY,SAAS;IADrB,YAAY,CAAC,WAAW,CAAC;;GACb,SAAS,CAiCrB;SAjCY,SAAS","sourcesContent":["import { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { ExpressionEventPath, ExpressionNode, NodeDeserializer, VisitNodeType } from '../expression.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));\n\t}\n\tstatic visit(node: Decorator, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.expression);\n\t}\n\tconstructor(private expression: ExpressionNode) {\n\t\tsuper();\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
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../expression.js';
|
|
2
|
-
import type { Scope } from '../../scope/scope.js';
|
|
3
2
|
import type { Stack } from '../../scope/stack.js';
|
|
4
3
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
5
4
|
export declare class CallExpression extends AbstractExpressionNode {
|
|
@@ -11,7 +10,6 @@ export declare class CallExpression extends AbstractExpressionNode {
|
|
|
11
10
|
constructor(callee: ExpressionNode, params: ExpressionNode[], optional?: boolean);
|
|
12
11
|
getCallee(): ExpressionNode;
|
|
13
12
|
getArguments(): ExpressionNode[];
|
|
14
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
15
13
|
set(stack: Stack, value: any): void;
|
|
16
14
|
get(stack: Stack, thisContext?: any): any;
|
|
17
15
|
getCallParameters(stack: Stack): any[];
|
package/api/computing/call.js
CHANGED
|
@@ -25,9 +25,6 @@ let CallExpression = CallExpression_1 = class CallExpression extends AbstractExp
|
|
|
25
25
|
getArguments() {
|
|
26
26
|
return this.arguments;
|
|
27
27
|
}
|
|
28
|
-
shareVariables(scopeList) {
|
|
29
|
-
this.arguments.forEach(param => param.shareVariables(scopeList));
|
|
30
|
-
}
|
|
31
28
|
set(stack, value) {
|
|
32
29
|
throw new Error(`CallExpression#set() has no implementation.`);
|
|
33
30
|
}
|
|
@@ -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 { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } 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);\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(private callee: ExpressionNode, params: ExpressionNode[], private optional: boolean = false) {\n\t\tsuper();\n\t\tthis.arguments = params;\n\t}\n\tgetCallee() {\n\t\treturn this.callee;\n\t}\n\tgetArguments() {\n\t\treturn this.arguments;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`CallExpression#set() has no implementation.`);\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\tconst funCallBack: Function = this.callee.get(stack) as Function;\n\t\tif (this.optional && (funCallBack === null || funCallBack === undefined)) {\n\t\t\treturn;\n\t\t}\n\t\tconst parameters: any[] = 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,11 +1,9 @@
|
|
|
1
1
|
import type { ExpressionNode, ExpressionEventPath } from '../expression.js';
|
|
2
|
-
import type { Scope } from '../../scope/scope.js';
|
|
3
2
|
import type { Stack } from '../../scope/stack.js';
|
|
4
3
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
5
4
|
export declare class DebuggerStatement extends AbstractExpressionNode {
|
|
6
5
|
static INSTANCE: DebuggerStatement;
|
|
7
6
|
static fromJSON(): DebuggerStatement;
|
|
8
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
9
7
|
set(stack: Stack, value: any): void;
|
|
10
8
|
get(stack: Stack): void;
|
|
11
9
|
dependency(computed?: true): ExpressionNode[];
|
|
@@ -6,8 +6,6 @@ let DebuggerStatement = DebuggerStatement_1 = class DebuggerStatement extends Ab
|
|
|
6
6
|
static fromJSON() {
|
|
7
7
|
return DebuggerStatement_1.INSTANCE;
|
|
8
8
|
}
|
|
9
|
-
shareVariables(scopeList) {
|
|
10
|
-
}
|
|
11
9
|
set(stack, value) {
|
|
12
10
|
throw new Error(`DebuggerStatement#set() has no implementation.`);
|
|
13
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debugger.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/debugger.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"debugger.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/debugger.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGtD,IAAM,iBAAiB,yBAAvB,MAAM,iBAAkB,SAAQ,sBAAsB;IAE5D,MAAM,CAAC,QAAQ;QACd,OAAO,mBAAiB,CAAC,QAAQ,CAAC;IACnC,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACnE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,QAAQ,CAAC;IACV,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,EAAE,CAAC;IACX,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,EAAE,CAAC;IACX,CAAC;IACD,QAAQ;QACP,OAAO,UAAU,CAAC;IACnB,CAAC;IACD,MAAM;QACL,OAAO,EAAE,CAAC;IACX,CAAC;;AArBM,0BAAQ,GAAG,IAAI,mBAAiB,EAAE,CAAC;AAD9B,iBAAiB;IAD7B,YAAY,CAAC,mBAAmB,CAAC;GACrB,iBAAiB,CAuB7B;SAvBY,iBAAiB","sourcesContent":["import type { ExpressionNode, ExpressionEventPath } from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('DebuggerStatement')\nexport class DebuggerStatement extends AbstractExpressionNode {\n\tstatic INSTANCE = new DebuggerStatement();\n\tstatic fromJSON(): DebuggerStatement {\n\t\treturn DebuggerStatement.INSTANCE;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`DebuggerStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tdebugger;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn [];\n\t}\n\ttoString(): string {\n\t\treturn 'debugger';\n\t}\n\ttoJson(): object {\n\t\treturn {};\n\t}\n}\n"]}
|
package/api/computing/new.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../expression.js';
|
|
2
|
-
import type { Scope } from '../../scope/scope.js';
|
|
3
2
|
import type { Stack } from '../../scope/stack.js';
|
|
4
3
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
5
4
|
export declare class NewExpression extends AbstractExpressionNode {
|
|
@@ -10,7 +9,6 @@ export declare class NewExpression extends AbstractExpressionNode {
|
|
|
10
9
|
constructor(className: ExpressionNode, parameters?: ExpressionNode[]);
|
|
11
10
|
getClassName(): ExpressionNode;
|
|
12
11
|
getArguments(): ExpressionNode[] | undefined;
|
|
13
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
14
12
|
set(stack: Stack, value: any): void;
|
|
15
13
|
get(stack: Stack): any;
|
|
16
14
|
dependency(computed?: true): ExpressionNode[];
|
package/api/computing/new.js
CHANGED
|
@@ -22,9 +22,6 @@ let NewExpression = NewExpression_1 = class NewExpression extends AbstractExpres
|
|
|
22
22
|
getArguments() {
|
|
23
23
|
return this.arguments;
|
|
24
24
|
}
|
|
25
|
-
shareVariables(scopeList) {
|
|
26
|
-
this.arguments?.forEach(param => param.shareVariables(scopeList));
|
|
27
|
-
}
|
|
28
25
|
set(stack, value) {
|
|
29
26
|
throw new Error(`NewExpression#set() has no implementation.`);
|
|
30
27
|
}
|
package/api/computing/new.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/new.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/new.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { SpreadElement } from './spread.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('NewExpression')\nexport class NewExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: NewExpression, deserializer: NodeDeserializer): NewExpression {\n\t\treturn new NewExpression(deserializer(node.className), node.arguments?.map(deserializer));\n\t}\n\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(private className: ExpressionNode, parameters?: ExpressionNode[]) {\n\t\tsuper();\n\t\tthis.arguments = parameters;\n\t}\n\tgetClassName() {\n\t\treturn this.className;\n\t}\n\tgetArguments() {\n\t\treturn this.arguments;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`NewExpression#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst classRef = this.className.get(stack);\n\t\tlet value: any;\n\t\tif (this.arguments) {\n\t\t\tif (this.arguments.length > 0) {\n\t\t\t\tconst parameters: any[] = [];\n\t\t\t\tfor (const param of this.arguments) {\n\t\t\t\t\tif (param instanceof SpreadElement) {\n\t\t\t\t\t\tconst paramScope = stack.pushBlockScopeFor(parameters);\n\t\t\t\t\t\tparam.get(stack);\n\t\t\t\t\t\tstack.clearTo(paramScope);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tparameters.push(param.get(stack));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvalue = new classRef(...parameters);\n\t\t\t} else {\n\t\t\t\tvalue = new classRef();\n\t\t\t}\n\t\t} else {\n\t\t\tvalue = new classRef;\n\t\t}\n\t\treturn value;\n\t}\n\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"]}
|
package/api/computing/rest.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { DeclarationExpression, ExpressionEventPath, ExpressionNode, NodeDeserializer, VisitNodeType } from '../expression.js';
|
|
2
|
-
import type { Scope } from '../../scope/scope.js';
|
|
3
2
|
import type { Stack } from '../../scope/stack.js';
|
|
4
3
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
5
4
|
export declare class RestElement extends AbstractExpressionNode implements DeclarationExpression {
|
|
@@ -8,7 +7,6 @@ export declare class RestElement extends AbstractExpressionNode implements Decla
|
|
|
8
7
|
static visit(node: RestElement, visitNode: VisitNodeType): void;
|
|
9
8
|
constructor(argument: DeclarationExpression);
|
|
10
9
|
getArgument(): DeclarationExpression;
|
|
11
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
12
10
|
set(stack: Stack, value: any): void;
|
|
13
11
|
get(stack: Stack): void;
|
|
14
12
|
declareVariable(stack: Stack, propertyValue?: any): any;
|
package/api/computing/rest.js
CHANGED
|
@@ -16,9 +16,6 @@ let RestElement = RestElement_1 = class RestElement extends AbstractExpressionNo
|
|
|
16
16
|
getArgument() {
|
|
17
17
|
return this.argument;
|
|
18
18
|
}
|
|
19
|
-
shareVariables(scopeList) {
|
|
20
|
-
this.argument.shareVariables(scopeList);
|
|
21
|
-
}
|
|
22
19
|
set(stack, value) {
|
|
23
20
|
throw new Error('RestElement#set() Method has no implementation.');
|
|
24
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/rest.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/rest.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGtD,IAAM,WAAW,mBAAjB,MAAM,WAAY,SAAQ,sBAAsB;IAOtD,YAAoB,QAA+B;QAClD,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAuB;IAEnD,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAiB,EAAE,YAA8B;QAChE,OAAO,IAAI,aAAW,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAA0B,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAiB,EAAE,SAAwB;QACvD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAID,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACpE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACpE,CAAC;IACD,eAAe,CAAC,KAAY,EAAE,aAAmB;QAChD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACrD,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IACD,QAAQ;QACP,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;IACzC,CAAC;IACD,MAAM;QACL,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;IAC7C,CAAC;CACD,CAAA;AAlCY,WAAW;IADvB,YAAY,CAAC,aAAa,CAAC;;GACf,WAAW,CAkCvB;SAlCY,WAAW","sourcesContent":["import type { DeclarationExpression, ExpressionEventPath, ExpressionNode, NodeDeserializer, VisitNodeType } from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('RestElement')\nexport class RestElement extends AbstractExpressionNode implements DeclarationExpression {\n\tstatic fromJSON(node: RestElement, deserializer: NodeDeserializer): RestElement {\n\t\treturn new RestElement(deserializer(node.argument) as DeclarationExpression);\n\t}\n\tstatic visit(node: RestElement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.argument);\n\t}\n\tconstructor(private argument: DeclarationExpression) {\n\t\tsuper();\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('RestElement#set() Method has no implementation.');\n\t}\n\tget(stack: Stack): void {\n\t\tthrow new Error('RestElement#get() Method has no implementation.');\n\t}\n\tdeclareVariable(stack: Stack, propertyValue?: any): any {\n\t\tthis.argument.declareVariable(stack, propertyValue);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.argument.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.argument.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `...${this.argument.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn { argument: this.argument.toJSON() };\n\t}\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../expression.js';
|
|
2
|
-
import type { Scope } from '../../scope/scope.js';
|
|
3
2
|
import type { Stack } from '../../scope/stack.js';
|
|
4
3
|
import { AbstractExpressionNode, ReturnValue } from '../abstract.js';
|
|
5
4
|
/**
|
|
@@ -12,7 +11,6 @@ export declare class ReturnStatement extends AbstractExpressionNode {
|
|
|
12
11
|
static visit(node: ReturnStatement, visitNode: VisitNodeType): void;
|
|
13
12
|
constructor(argument?: ExpressionNode | undefined);
|
|
14
13
|
getArgument(): ExpressionNode | undefined;
|
|
15
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
16
14
|
set(stack: Stack, value: any): void;
|
|
17
15
|
get(stack: Stack): ReturnValue;
|
|
18
16
|
dependency(computed?: true): ExpressionNode[];
|
package/api/computing/return.js
CHANGED
|
@@ -20,9 +20,6 @@ let ReturnStatement = ReturnStatement_1 = class ReturnStatement extends Abstract
|
|
|
20
20
|
getArgument() {
|
|
21
21
|
return this.argument;
|
|
22
22
|
}
|
|
23
|
-
shareVariables(scopeList) {
|
|
24
|
-
this.argument?.shareVariables(scopeList);
|
|
25
|
-
}
|
|
26
23
|
set(stack, value) {
|
|
27
24
|
throw new Error(`ReturnStatement#set() has no implementation.`);
|
|
28
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"return.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/return.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"return.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/return.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D;;;GAGG;AAEI,IAAM,eAAe,uBAArB,MAAM,eAAgB,SAAQ,sBAAsB;IAO1D,YAAoB,QAAyB;QAC5C,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAiB;IAE7C,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,YAA8B;QACpE,OAAO,IAAI,iBAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAqB,EAAE,SAAwB;QAC3D,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAID,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACjE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAClD,qEAAqE;IACtE,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAClD,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;IACD,QAAQ;QACP,OAAO,UAAU,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;IACpD,CAAC;IACD,MAAM;QACL,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;IAC9C,CAAC;CACD,CAAA;AAhCY,eAAe;IAD3B,YAAY,CAAC,iBAAiB,CAAC;;GACnB,eAAe,CAgC3B;SAhCY,eAAe","sourcesContent":["import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode, ReturnValue } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n/**\n * The expression whose value is to be returned. \n * If omitted, undefined is returned instead.\n */\n@Deserializer('ReturnStatement')\nexport class ReturnStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: ReturnStatement, deserializer: NodeDeserializer): ReturnStatement {\n\t\treturn new ReturnStatement(node.argument ? deserializer(node.argument) : void 0);\n\t}\n\tstatic visit(node: ReturnStatement, visitNode: VisitNodeType): void {\n\t\tnode.argument && visitNode(node.argument);\n\t}\n\tconstructor(private argument?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`ReturnStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\treturn new ReturnValue(this.argument?.get(stack));\n\t\t// nothing should be written after this operation in a function body.\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.argument?.dependency(computed) || [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.argument?.dependencyPath(computed) || [];\n\t}\n\ttoString(): string {\n\t\treturn `return ${this.argument?.toString() || ''}`;\n\t}\n\ttoJson(): object {\n\t\treturn { argument: this.argument?.toJSON() };\n\t}\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { ExpressionEventPath, ExpressionNode, NodeDeserializer, VisitNodeType } from '../expression.js';
|
|
2
|
-
import type { Scope } from '../../scope/scope.js';
|
|
3
2
|
import type { Stack } from '../../scope/stack.js';
|
|
4
3
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
5
4
|
export declare class SpreadElement extends AbstractExpressionNode {
|
|
@@ -8,7 +7,6 @@ export declare class SpreadElement extends AbstractExpressionNode {
|
|
|
8
7
|
static visit(node: SpreadElement, visitNode: VisitNodeType): void;
|
|
9
8
|
constructor(argument: ExpressionNode);
|
|
10
9
|
getArgument(): ExpressionNode;
|
|
11
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
12
10
|
set(stack: Stack, value: any): void;
|
|
13
11
|
get(stack: Stack): void;
|
|
14
12
|
private spreadFromArray;
|
package/api/computing/spread.js
CHANGED
|
@@ -16,9 +16,6 @@ let SpreadElement = SpreadElement_1 = class SpreadElement extends AbstractExpres
|
|
|
16
16
|
getArgument() {
|
|
17
17
|
return this.argument;
|
|
18
18
|
}
|
|
19
|
-
shareVariables(scopeList) {
|
|
20
|
-
this.argument.shareVariables(scopeList);
|
|
21
|
-
}
|
|
22
19
|
set(stack, value) {
|
|
23
20
|
throw new Error('SpreadElement#set() Method has no implementation.');
|
|
24
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spread.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/spread.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"spread.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/spread.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGtD,IAAM,aAAa,qBAAnB,MAAM,aAAc,SAAQ,sBAAsB;IAOxD,YAAoB,QAAwB;QAC3C,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAgB;IAE5C,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAmB,EAAE,YAA8B;QAClE,OAAO,IAAI,eAAa,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAmB,EAAE,SAAwB;QACzD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAID,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACtE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACnC;aAAM,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;YAC/C,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACtC;IACF,CAAC;IACO,eAAe,CAAC,KAAY,EAAE,KAAiB;QACtD,IAAI,MAAM,GAAW,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAChE,CAAC;IACO,kBAAkB,CAAC,KAAY,EAAE,QAAuB;QAC/D,IAAI,MAAM,GAAW,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,IAAI,EAAE;YACZ,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,cAAc,CAAC,IAAI,EAAE;gBACxB,MAAM;aACN;YACD,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;SACtD;IACF,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IACD,QAAQ;QACP,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;IACzC,CAAC;IACD,MAAM;QACL,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;IAC7C,CAAC;CACD,CAAA;AAlDY,aAAa;IADzB,YAAY,CAAC,eAAe,CAAC;;GACjB,aAAa,CAkDzB;SAlDY,aAAa","sourcesContent":["import type { ExpressionEventPath, ExpressionNode, NodeDeserializer, VisitNodeType } from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('SpreadElement')\nexport class SpreadElement extends AbstractExpressionNode {\n\tstatic fromJSON(node: SpreadElement, deserializer: NodeDeserializer): SpreadElement {\n\t\treturn new SpreadElement(deserializer(node.argument));\n\t}\n\tstatic visit(node: SpreadElement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.argument);\n\t}\n\tconstructor(private argument: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\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"]}
|
package/api/computing/throw.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../expression.js';
|
|
2
|
-
import type { Scope } from '../../scope/scope.js';
|
|
3
2
|
import type { Stack } from '../../scope/stack.js';
|
|
4
3
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
5
4
|
/**
|
|
@@ -12,7 +11,6 @@ export declare class ThrowStatement extends AbstractExpressionNode {
|
|
|
12
11
|
static visit(node: ThrowStatement, visitNode: VisitNodeType): void;
|
|
13
12
|
constructor(argument: ExpressionNode);
|
|
14
13
|
getArgument(): ExpressionNode;
|
|
15
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
16
14
|
set(stack: Stack, value: any): void;
|
|
17
15
|
get(stack: Stack): void;
|
|
18
16
|
dependency(computed?: true): ExpressionNode[];
|
|
@@ -27,7 +25,6 @@ export declare class CatchClauseNode extends AbstractExpressionNode {
|
|
|
27
25
|
constructor(body: ExpressionNode, param?: ExpressionNode | undefined);
|
|
28
26
|
getParam(): ExpressionNode | undefined;
|
|
29
27
|
getBody(): ExpressionNode;
|
|
30
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
31
28
|
set(stack: Stack, error: any): void;
|
|
32
29
|
get(stack: Stack, thisContext?: any): any;
|
|
33
30
|
dependency(computed?: true): ExpressionNode[];
|
|
@@ -46,7 +43,6 @@ export declare class TryCatchNode extends AbstractExpressionNode {
|
|
|
46
43
|
getBlock(): ExpressionNode;
|
|
47
44
|
getHandler(): ExpressionNode | undefined;
|
|
48
45
|
getFinalizer(): ExpressionNode | undefined;
|
|
49
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
50
46
|
set(stack: Stack, value: any): void;
|
|
51
47
|
get(stack: Stack): void;
|
|
52
48
|
dependency(computed?: true): ExpressionNode[];
|