@ibyar/expressions 0.6.1 → 0.8.2-dev.20221008
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/README.md +7 -2
- package/api/class/class.js +30 -31
- package/api/class/class.js.map +1 -1
- package/api/class/decorator.js.map +1 -1
- package/api/computing/call.js.map +1 -1
- package/api/computing/debugger.js.map +1 -1
- package/api/computing/new.js.map +1 -1
- package/api/computing/rest.js.map +1 -1
- package/api/computing/return.js.map +1 -1
- package/api/computing/spread.js.map +1 -1
- package/api/computing/throw.js.map +1 -1
- package/api/computing/yield.js.map +1 -1
- package/api/definition/array.js.map +1 -1
- package/api/definition/bind.js.map +1 -1
- package/api/definition/comment.js.map +1 -1
- package/api/definition/function.js.map +1 -1
- package/api/definition/member.js.map +1 -1
- package/api/definition/object.js.map +1 -1
- package/api/definition/statement.js.map +1 -1
- package/api/definition/values.d.ts +6 -6
- package/api/definition/values.js +9 -15
- package/api/definition/values.js.map +1 -1
- package/api/module/common.js.map +1 -1
- package/api/module/export.js.map +1 -1
- package/api/module/import.js.map +1 -1
- package/api/operators/assignment.js.map +1 -1
- package/api/operators/await.js.map +1 -1
- package/api/operators/binary.js.map +1 -1
- package/api/operators/chaining.js.map +1 -1
- package/api/operators/comma.js.map +1 -1
- package/api/operators/grouping.js.map +1 -1
- package/api/operators/logical.js.map +1 -1
- package/api/operators/pipeline.js.map +1 -1
- package/api/operators/ternary.js.map +1 -1
- package/api/operators/unary.js.map +1 -1
- package/api/operators/update.js.map +1 -1
- package/api/program.js.map +1 -1
- package/api/statement/control/block.js.map +1 -1
- package/api/statement/control/empty.js.map +1 -1
- package/api/statement/control/if.js.map +1 -1
- package/api/statement/control/switch.js.map +1 -1
- package/api/statement/control/terminate.js.map +1 -1
- package/api/statement/declarations/declares.js.map +1 -1
- package/api/statement/iterations/for.js.map +1 -1
- package/api/statement/iterations/while.js.map +1 -1
- package/package.json +3 -3
- package/v8/enums.d.ts +0 -7
- package/v8/enums.js +0 -15
- package/v8/enums.js.map +1 -1
- package/v8/index.d.ts +1 -0
- package/v8/index.js +1 -0
- package/v8/index.js.map +1 -1
- package/v8/inline.d.ts +2 -1
- package/v8/inline.js +2 -1
- package/v8/inline.js.map +1 -1
- package/v8/language.d.ts +7 -0
- package/v8/language.js +16 -0
- package/v8/language.js.map +1 -0
- package/v8/parser.d.ts +2 -1
- package/v8/parser.js +2 -1
- package/v8/parser.js.map +1 -1
- package/v8/stream.d.ts +1 -1
- package/v8/stream.js +1 -1
- package/v8/stream.js.map +1 -1
- package/v8/token.d.ts +1 -1
- package/v8/token.js +1 -1
- package/v8/token.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/array.ts"],"names":[],"mappings":";;AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/array.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, DeclarationExpression,\n\tExpressionEventPath, VisitNodeType\n} from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { RestElement } from '../computing/rest.js';\nimport { SpreadElement } from '../computing/spread.js';\n\n@Deserializer('ArrayExpression')\nexport class ArrayExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: ArrayExpression, deserializer: NodeDeserializer): ArrayExpression {\n\t\treturn new ArrayExpression(node.elements.map(element => element ? deserializer(element) : null));\n\t}\n\tstatic visit(node: ArrayExpression, visitNode: VisitNodeType): void {\n\t\tnode.elements.forEach(element => element && visitNode(element));\n\t}\n\tconstructor(private elements: (ExpressionNode | SpreadElement | null)[]) {\n\t\tsuper();\n\t}\n\tgetElements() {\n\t\treturn this.elements;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.elements.forEach(item => item?.shareVariables(scopeList));\n\t}\n\tset(stack: Stack) {\n\t\tthrow new Error(\"ArrayExpression#set() has no implementation.\");\n\t}\n\tget(stack: Stack) {\n\t\treturn this.elements.map(item => item?.get(stack));\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.elements.filter(item => item).flatMap(item => item!.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.elements.filter(item => item).flatMap(item => item!.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\treturn this.elements.map(item => item?.toString()).toString();\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\telements: this.elements.map(item => item?.toJSON())\n\t\t};\n\t}\n}\n\n\n@Deserializer('ArrayPattern')\nexport class ArrayPattern extends AbstractExpressionNode implements DeclarationExpression {\n\tstatic fromJSON(node: ArrayPattern, deserializer: NodeDeserializer): ArrayPattern {\n\t\treturn new ArrayPattern(node.elements.map(expression => expression ? deserializer(expression) : null) as DeclarationExpression[]);\n\t}\n\tstatic visit(node: ArrayPattern, visitNode: VisitNodeType): void {\n\t\tnode.elements.forEach(expression => expression && visitNode(expression));\n\t}\n\tconstructor(private elements: (DeclarationExpression | null)[]) {\n\t\tsuper();\n\t}\n\tgetElements() {\n\t\treturn this.elements;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, values: any) {\n\t\tthrow new Error('ArrayPattern#set() has no implementation.');\n\t}\n\tget(scopeProvider: Stack) {\n\t\tthrow new Error('ArrayPattern#get() has no implementation.');\n\t}\n\tdeclareVariable(stack: Stack, values: any) {\n\t\tif (Array.isArray(values)) {\n\t\t\tthis.declareVariableFromArray(stack, values);\n\t\t} else if (Reflect.has(values, Symbol.iterator)) {\n\t\t\tthis.declareVariableFromIterator(stack, values);\n\t\t}\n\t}\n\tdeclareVariableFromArray(stack: Stack, values: any[]) {\n\t\tfor (let index = 0; index < this.elements.length; index++) {\n\t\t\tconst elem = this.elements[index];\n\t\t\tif (elem == null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (elem instanceof RestElement) {\n\t\t\t\tconst rest = values.slice(index);\n\t\t\t\telem.declareVariable(stack, rest);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telem.declareVariable(stack, values[index]);\n\t\t}\n\t}\n\tdeclareVariableFromIterator(stack: Stack, iterator: Iterator<any>) {\n\t\tlet index = 0;\n\t\twhile (true) {\n\t\t\tlet iteratorResult = iterator.next();\n\t\t\tif (iteratorResult.done) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst elem = this.elements[index++];\n\t\t\tif (elem == null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (elem instanceof RestElement) {\n\t\t\t\tconst rest = [iteratorResult.value];\n\t\t\t\twhile (!iteratorResult.done) {\n\t\t\t\t\titeratorResult = iterator.next();\n\t\t\t\t\trest.push(iteratorResult.value);\n\t\t\t\t}\n\t\t\t\telem.declareVariable(stack, rest);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telem.declareVariable(stack, iteratorResult.value);\n\t\t\tif (index >= this.elements.length) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.elements.filter(item => item).flatMap(item => item!.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.elements.filter(item => item).flatMap(item => item!.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\treturn this.elements.map(item => item?.toString()).toString();\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\telements: this.elements.map(item => item?.toJSON())\n\t\t};\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bind.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/bind.ts"],"names":[],"mappings":";;AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAExD;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"bind.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/bind.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, CanFindScope,\n\tExpressionEventPath, VisitNodeType\n} from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { AbstractExpressionNode } from '../abstract.js';\n\n/**\n * ```js\n * const x = {method: function(){...}};\n * const z = x::method;\n * ```\n */\n@Deserializer('BindExpression')\nexport class BindExpression extends AbstractExpressionNode implements CanFindScope {\n\tstatic fromJSON(node: BindExpression, deserializer: NodeDeserializer): BindExpression {\n\t\treturn new BindExpression(\n\t\t\tdeserializer(node.object),\n\t\t\tdeserializer(node.property),\n\t\t\tnode.computed,\n\t\t\tnode.optional\n\t\t);\n\t}\n\tstatic visit(node: BindExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.object);\n\t\tvisitNode(node.property);\n\t}\n\tconstructor(\n\t\tprotected object: ExpressionNode,\n\t\tprotected property: ExpressionNode,\n\t\tprivate computed: boolean,\n\t\tprivate optional: boolean = false) {\n\t\tsuper();\n\t}\n\tgetObject() {\n\t\treturn this.object;\n\t}\n\tgetProperty() {\n\t\treturn this.property;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack) {\n\t\tthrow new Error(\"BindExpression#set() has no implementation.\");\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\tconst objectRef = thisContext ?? this.object.get(stack);\n\t\tif (typeof objectRef === 'undefined') {\n\t\t\tthrow new TypeError(`Cannot read property '${this.property.toString()}' of undefined`);\n\t\t}\n\t\tlet value;\n\t\tif (this.computed) {\n\t\t\tvalue = objectRef[this.property.get(stack)];\n\t\t} else {\n\t\t\tvalue = this.property.get(stack, objectRef);\n\t\t}\n\t\tif (this.optional && (value === undefined || value === null)) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof value !== 'function') {\n\t\t\tthrow new Error(`can't bind to non-function type ${value}`);\n\t\t}\n\t\treturn (<Function>value).bind(objectRef);\n\t}\n\tfindScope<T extends object>(stack: Stack): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, scope: Scope<any>): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, objectScope?: Scope<any>): Scope<T> | undefined {\n\t\tif (!objectScope) {\n\t\t\tobjectScope = (this.object as ExpressionNode & CanFindScope).findScope(stack);\n\t\t}\n\t\treturn (this.property as ExpressionNode & CanFindScope).findScope(stack, objectScope);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.object.dependency(computed).concat(this.property.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.object.dependencyPath(computed).concat(this.property.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\tif (this.computed) {\n\t\t\treturn `${this.object.toString()}${this.optional ? '?::' : '::'}[${this.property.toString()}]`;\n\t\t}\n\t\treturn `${this.object.toString()}${this.optional ? '?::' : '::'}${this.property.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tobject: this.object.toJSON(),\n\t\t\tproperty: this.property.toJSON(),\n\t\t\tcomputed: this.computed,\n\t\t\toptional: this.optional\n\t\t};\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comment.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/comment.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"comment.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/comment.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGtD,IAAM,iBAAiB,yBAAvB,MAAM,iBAAkB,SAAQ,sBAAsB;IAI5D,YAAoB,OAAe;QAClC,KAAK,EAAE,CAAC;QADW,YAAO,GAAP,OAAO,CAAQ;IAEnC,CAAC;IALD,MAAM,CAAC,QAAQ,CAAC,OAA0B;QACzC,OAAO,IAAI,mBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAID,UAAU;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IACD,cAAc,CAAC,SAAuB,IAAU,CAAC;IACjD,GAAG,CAAC,KAAY,EAAE,GAAG,MAAa,IAAI,CAAC;IACvC,GAAG,CAAC,KAAY,IAAI,CAAC;IACrB,UAAU,CAAC,QAAe;QACzB,OAAO,EAAE,CAAC;IACX,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,EAAE,CAAC;IACX,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IACD,MAAM;QACL,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;CACD,CAAA;AAzBY,iBAAiB;IAD7B,YAAY,CAAC,mBAAmB,CAAC;;GACrB,iBAAiB,CAyB7B;SAzBY,iBAAiB","sourcesContent":["import type { ExpressionEventPath, ExpressionNode } from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('CommentExpression')\nexport class CommentExpression extends AbstractExpressionNode {\n\tstatic fromJSON(nodeExp: CommentExpression): CommentExpression {\n\t\treturn new CommentExpression(nodeExp.comment);\n\t}\n\tconstructor(private comment: string) {\n\t\tsuper();\n\t}\n\tgetComment() {\n\t\treturn this.comment;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, ...values: any[]) { }\n\tget(stack: Stack) { }\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn [];\n\t}\n\ttoString(): string {\n\t\treturn this.comment;\n\t}\n\ttoJson(): object {\n\t\treturn { comment: this.comment };\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/function.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tDeclarationExpression, ExpressionEventPath, ExpressionNode,\n\tNodeDeserializer, VisitNodeType\n} from '../expression.js';\nimport { Stack } from '../../scope/stack.js';\nimport { Scope } from '../../scope/scope.js';\nimport {\n\tAbstractExpressionNode, AwaitPromise, ReturnValue,\n\tYieldDelegateValue, YieldValue\n} from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { Identifier } from './values.js';\nimport { TerminateReturnType } from '../statement/control/terminate.js';\nimport { RestElement } from '../computing/rest.js';\nimport { BlockStatement } from '../statement/control/block.js';\n\n@Deserializer('Param')\nexport class Param extends AbstractExpressionNode {\n\tstatic fromJSON(node: Param, deserializer: NodeDeserializer): Param {\n\t\treturn new Param(\n\t\t\tdeserializer(node.identifier) as DeclarationExpression,\n\t\t\tnode.defaultValue ? deserializer(node.defaultValue) as Identifier : void 0\n\t\t);\n\t}\n\tstatic visit(node: Param, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.identifier);\n\t\tnode.defaultValue && visitNode(node.defaultValue);\n\t}\n\tconstructor(private identifier: DeclarationExpression, private defaultValue?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetIdentifier() {\n\t\treturn this.identifier;\n\t}\n\tgetDefaultValue() {\n\t\treturn this.defaultValue;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.defaultValue?.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: Function) {\n\t\tthis.identifier.declareVariable?.(stack, value);\n\t}\n\tget(stack: Stack) {\n\t\tthrow new Error('Param#get() has no implementation.');\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.defaultValue ? [this.defaultValue] : [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.defaultValue?.dependencyPath(computed) || [];\n\t}\n\ttoString(): string {\n\t\tlet init = this.defaultValue ? (' = ' + this.defaultValue.toString()) : '';\n\t\treturn this.identifier.toString() + init;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tidentifier: this.identifier.toJSON(),\n\t\t\tdefaultValue: this.defaultValue?.toJSON()\n\t\t};\n\t}\n}\n\nexport abstract class BaseFunctionExpression extends AbstractExpressionNode {\n\tprivate sharedVariables: Scope<any>[];\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.sharedVariables = scopeList;\n\t}\n\tinitFunctionScope(stack: Stack) {\n\t\tconst scope = Scope.blockScope<object>();\n\t\tconst innerScopes = this.sharedVariables ? this.sharedVariables.slice() : [];\n\t\tinnerScopes.push(scope);\n\t\tinnerScopes.forEach(variableScope => stack.pushScope(variableScope));\n\t\treturn innerScopes;\n\t}\n\tclearFunctionScope(stack: Stack, innerScopes: Scope<any>[]) {\n\t\tstack.clearTo(innerScopes[0]);\n\t}\n}\n\n@Deserializer('FunctionExpression')\nexport class FunctionExpression extends BaseFunctionExpression {\n\tstatic fromJSON(node: FunctionExpression, deserializer: NodeDeserializer): FunctionExpression {\n\t\treturn new FunctionExpression(\n\t\t\tnode.params.map(deserializer),\n\t\t\tdeserializer(node.body),\n\t\t\tnode.async,\n\t\t\tnode.generator,\n\t\t\tnode.id ? deserializer(node.id) as Identifier : void 0,\n\t\t);\n\t}\n\tstatic visit(node: FunctionExpression, visitNode: VisitNodeType): void {\n\t\tnode.id && visitNode(node.id);\n\t\tnode.params.forEach(visitNode);\n\t\tvisitNode(node.body);\n\t}\n\tconstructor(\n\t\tprotected params: ExpressionNode[], protected body: ExpressionNode,\n\t\tprotected async: boolean, protected generator: boolean,\n\t\tprotected id?: Identifier,\n\t) {\n\t\tsuper();\n\t}\n\tgetParams() {\n\t\treturn this.params;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tgetGenerator() {\n\t\treturn this.generator;\n\t}\n\tgetId() {\n\t\treturn this.id;\n\t}\n\tgetAsync() {\n\t\treturn this.async;\n\t}\n\tset(stack: Stack, value: Function) {\n\t\tthrow new Error(`${this.constructor.name}#set() has no implementation.`);\n\t}\n\tsetParameter(stack: Stack, args: any[]) {\n\t\tconst rest = this.params[this.params.length - 1] instanceof RestElement;\n\t\tconst limit = rest ? this.params.length - 1 : this.params.length;\n\t\tfor (let i = 0; i < limit; i++) {\n\t\t\tthis.params[i].set(stack, args[i]);\n\t\t}\n\t\tif (rest) {\n\t\t\tthis.params[limit].set(stack, args.slice(limit));\n\t\t}\n\t}\n\tget(stack: Stack) {\n\t\tlet func: Function;\n\t\tif (this.async && this.generator) {\n\t\t\tfunc = this.getAsyncGeneratorFunction(stack);\n\t\t} else if (this.async) {\n\t\t\tfunc = this.getAsyncFunction(stack);\n\t\t} else if (this.generator) {\n\t\t\tfunc = this.getGeneratorFunction(stack);\n\t\t} else {\n\t\t\tfunc = this.getFunction(stack);\n\t\t}\n\t\t// this.id?.declareVariable(stack, func);\n\t\treturn func;\n\t}\n\tprivate getAsyncFunction(stack: Stack) {\n\t\tconst self = this;\n\t\treturn async function (this: any, ...args: any[]) {\n\t\t\tconst innerScopes = self.initFunctionScope(stack);\n\t\t\tstack.declareVariable('this', this);\n\t\t\tself.setParameter(stack, args);\n\t\t\tlet returnValue: any;\n\t\t\tconst statements = (self.body as BlockStatement).getBody();\n\t\t\tfor (const statement of statements) {\n\t\t\t\tstatement.shareVariables(innerScopes);\n\t\t\t\treturnValue = statement.get(stack);\n\t\t\t\tif (stack.awaitPromise?.length > 0) {\n\t\t\t\t\tfor (const awaitRef of stack.awaitPromise) {\n\t\t\t\t\t\tconst awaitValue = await awaitRef.promise;\n\t\t\t\t\t\tif (awaitRef.declareVariable) {\n\t\t\t\t\t\t\tawaitRef.node.declareVariable(stack, awaitValue);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tawaitRef.node.set(stack, awaitValue);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tstack.awaitPromise.splice(0);\n\t\t\t\t}\n\t\t\t\telse if (stack.forAwaitAsyncIterable) {\n\t\t\t\t\tfor await (let iterator of stack.forAwaitAsyncIterable.iterable) {\n\t\t\t\t\t\tconst result = stack.forAwaitAsyncIterable.forAwaitBody(iterator);\n\t\t\t\t\t\tif (result instanceof TerminateReturnType) {\n\t\t\t\t\t\t\tif (result.type === 'continue') {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (result instanceof ReturnValue) {\n\t\t\t\t\t\t\treturnValue = result;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tstack.forAwaitAsyncIterable = undefined;\n\t\t\t\t}\n\t\t\t\tif (returnValue instanceof ReturnValue) {\n\t\t\t\t\treturnValue = returnValue.value;\n\t\t\t\t\tif (returnValue instanceof AwaitPromise) {\n\t\t\t\t\t\treturnValue = await returnValue.promise;\n\t\t\t\t\t}\n\t\t\t\t\tself.clearFunctionScope(stack, innerScopes);\n\t\t\t\t\treturn returnValue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tself.clearFunctionScope(stack, innerScopes);\n\t\t};\n\n\t}\n\tprivate getGeneratorFunction(stack: Stack) {\n\t\tconst self = this;\n\t\treturn function* (this: any, ...args: any[]) {\n\t\t\tconst innerScopes = self.initFunctionScope(stack);\n\t\t\tstack.declareVariable('this', this);\n\t\t\tself.setParameter(stack, args);\n\t\t\tlet returnValue: any;\n\t\t\tconst statements = (self.body as BlockStatement).getBody();\n\t\t\tfor (const statement of statements) {\n\t\t\t\tstatement.shareVariables(innerScopes);\n\t\t\t\treturnValue = statement.get(stack);\n\t\t\t\tif (returnValue instanceof ReturnValue) {\n\t\t\t\t\tself.clearFunctionScope(stack, innerScopes);\n\t\t\t\t\treturn returnValue.value;\n\t\t\t\t} else if (returnValue instanceof YieldValue) {\n\t\t\t\t\tyield returnValue.value;\n\t\t\t\t} else if (returnValue instanceof YieldDelegateValue) {\n\t\t\t\t\tyield* returnValue.value;\n\t\t\t\t}\n\t\t\t}\n\t\t\tself.clearFunctionScope(stack, innerScopes);\n\t\t};\n\t}\n\tprivate getAsyncGeneratorFunction(stack: Stack) {\n\t\tconst self = this;\n\t\treturn async function* (this: any, ...args: any[]) {\n\t\t\tconst innerScopes = self.initFunctionScope(stack);\n\t\t\tstack.declareVariable('this', this);\n\t\t\tself.setParameter(stack, args);\n\t\t\tlet returnValue: any;\n\t\t\tconst statements = (self.body as BlockStatement).getBody();\n\t\t\tfor (const statement of statements) {\n\t\t\t\tstatement.shareVariables(innerScopes);\n\t\t\t\treturnValue = statement.get(stack);\n\t\t\t\tif (stack.awaitPromise?.length > 0) {\n\t\t\t\t\tfor (const awaitRef of stack.awaitPromise) {\n\t\t\t\t\t\tconst awaitValue = await awaitRef.promise;\n\t\t\t\t\t\tif (awaitRef.declareVariable) {\n\t\t\t\t\t\t\tawaitRef.node.declareVariable(stack, awaitValue);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tawaitRef.node.set(stack, awaitValue);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tstack.awaitPromise.splice(0);\n\t\t\t\t}\n\t\t\t\telse if (stack.forAwaitAsyncIterable) {\n\t\t\t\t\tfor await (let iterator of stack.forAwaitAsyncIterable.iterable) {\n\t\t\t\t\t\tconst result = stack.forAwaitAsyncIterable.forAwaitBody(iterator);\n\t\t\t\t\t\tif (result instanceof TerminateReturnType) {\n\t\t\t\t\t\t\tif (result.type === 'continue') {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (result instanceof ReturnValue) {\n\t\t\t\t\t\t\tself.clearFunctionScope(stack, innerScopes);\n\t\t\t\t\t\t\treturnValue = returnValue.value;\n\t\t\t\t\t\t\tif (returnValue instanceof AwaitPromise) {\n\t\t\t\t\t\t\t\treturn await returnValue.promise;\n\t\t\t\t\t\t\t} else if (returnValue instanceof YieldValue) {\n\t\t\t\t\t\t\t\tyield returnValue.value;\n\t\t\t\t\t\t\t} else if (returnValue instanceof YieldDelegateValue) {\n\t\t\t\t\t\t\t\tyield* returnValue.value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn returnValue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tstack.forAwaitAsyncIterable = undefined;\n\t\t\t\t}\n\t\t\t\tif (returnValue instanceof ReturnValue) {\n\t\t\t\t\treturnValue = returnValue.value;\n\t\t\t\t\tif (returnValue instanceof AwaitPromise) {\n\t\t\t\t\t\treturn await returnValue.promise;\n\t\t\t\t\t}\n\t\t\t\t\treturn returnValue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tself.clearFunctionScope(stack, innerScopes);\n\t\t};\n\t}\n\tprivate getFunction(stack: Stack) {\n\t\tconst self = this;\n\t\treturn function (this: any, ...args: any[]) {\n\t\t\tconst innerScopes = self.initFunctionScope(stack);\n\t\t\tstack.declareVariable('this', this);\n\t\t\tself.setParameter(stack, args);\n\t\t\tlet returnValue: any;\n\t\t\tconst statements = (self.body as BlockStatement).getBody();\n\t\t\tfor (const statement of statements) {\n\t\t\t\tstatement.shareVariables(innerScopes);\n\t\t\t\treturnValue = statement.get(stack);\n\t\t\t\tif (returnValue instanceof ReturnValue) {\n\t\t\t\t\tself.clearFunctionScope(stack, innerScopes);\n\t\t\t\t\treturn returnValue.value;\n\t\t\t\t}\n\t\t\t}\n\t\t\tself.clearFunctionScope(stack, innerScopes);\n\t\t};\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.params.flatMap(param => param.dependency());\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.params.flatMap(param => param.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\tlet declare: string = 'function ';\n\t\tif (this.async && this.generator) {\n\t\t\tdeclare = 'async function* ';\n\t\t} else if (this.async) {\n\t\t\tdeclare = 'async function ';\n\t\t} else if (this.generator) {\n\t\t\tdeclare = 'function* ';\n\t\t}\n\t\treturn `${declare}${this.id?.toString() || ''}${this.paramsAndBodyToString()}`;\n\t}\n\tparamsAndBodyToString() {\n\t\treturn `(${this.params.map(param => param.toString()).join(', ')}) ${this.body.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tparams: this.params.map(param => param.toJSON()),\n\t\t\tbody: this.body.toJSON(),\n\t\t\tasync: this.async,\n\t\t\tid: this.id?.toJSON(),\n\t\t\tgenerator: this.generator\n\t\t};\n\t}\n}\n\n@Deserializer('FunctionDeclaration')\nexport class FunctionDeclaration extends FunctionExpression implements DeclarationExpression {\n\tstatic fromJSON(node: FunctionDeclaration, deserializer: NodeDeserializer): FunctionDeclaration {\n\t\treturn new FunctionDeclaration(\n\t\t\tnode.params.map(deserializer),\n\t\t\tdeserializer(node.body),\n\t\t\tnode.async,\n\t\t\tnode.generator,\n\t\t\tdeserializer(node.id) as Identifier\n\t\t);\n\t}\n\tstatic visit(node: FunctionDeclaration, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.id);\n\t\tnode.params.forEach(visitNode);\n\t\tvisitNode(node.body);\n\t}\n\tdeclare protected id: Identifier;\n\tconstructor(\n\t\tparams: ExpressionNode[],\n\t\tbody: ExpressionNode,\n\t\tasync: boolean,\n\t\tgenerator: boolean,\n\t\tid: Identifier) {\n\t\tsuper(params, body, async, generator, id);\n\t}\n\toverride get(stack: Stack): Function {\n\t\tconst func = super.get(stack);\n\t\tthis.declareVariable(stack, func);\n\t\treturn func;\n\t}\n\tdeclareVariable(stack: Stack, value: Function) {\n\t\tthis.id.declareVariable(stack, value);\n\t}\n}\n\n\n@Deserializer('ArrowFunctionExpression')\nexport class ArrowFunctionExpression extends BaseFunctionExpression {\n\tstatic fromJSON(node: ArrowFunctionExpression, deserializer: NodeDeserializer): ArrowFunctionExpression {\n\t\treturn new ArrowFunctionExpression(\n\t\t\tnode.params.map(deserializer),\n\t\t\tArray.isArray(node.body)\n\t\t\t\t? node.body.map(deserializer)\n\t\t\t\t: deserializer(node.body),\n\t\t\tnode.expression,\n\t\t\tnode.async\n\t\t);\n\t}\n\tstatic visit(node: ArrowFunctionExpression, visitNode: VisitNodeType): void {\n\t\tnode.params.forEach(visitNode);\n\t\tArray.isArray(node.body)\n\t\t\t? node.body.forEach(visitNode)\n\t\t\t: visitNode(node.body);\n\t}\n\tprivate generator = false;\n\tconstructor(\n\t\tprivate params: ExpressionNode[],\n\t\tprivate body: ExpressionNode | ExpressionNode[],\n\t\tprivate expression: boolean,\n\t\tprivate async: boolean,) {\n\t\tsuper();\n\t}\n\tgetParams() {\n\t\treturn this.params;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tgetExpression() {\n\t\treturn this.expression;\n\t}\n\tset(stack: Stack, value: Function) {\n\t\tthrow new Error('ArrowFunctionExpression#set() has no implementation.');\n\t}\n\tprivate setParameter(stack: Stack, args: any[]) {\n\t\tconst rest = this.params[this.params.length - 1] instanceof RestElement;\n\t\tconst limit = rest ? this.params.length - 1 : this.params.length;\n\t\tfor (let i = 0; i < limit; i++) {\n\t\t\tthis.params[i].set(stack, args[i]);\n\t\t}\n\t\tif (rest) {\n\t\t\tthis.params[limit].set(stack, args.slice(limit));\n\t\t}\n\t}\n\tget(stack: Stack) {\n\t\treturn this.async ? this.getAsyncArrowFunction(stack) : this.getArrowFunction(stack);\n\t}\n\tprivate getAsyncArrowFunction(stack: Stack) {\n\t\tasync (...args: any[]) => {\n\t\t\tconst innerScopes = this.initFunctionScope(stack);\n\t\t\tthis.setParameter(stack, args);\n\t\t\tlet returnValue: any;\n\t\t\tconst statements = Array.isArray(this.body) ? this.body : [this.body];\n\t\t\tfor (const state of statements) {\n\t\t\t\tstate.shareVariables(innerScopes);\n\t\t\t\treturnValue = state.get(stack);\n\t\t\t\tif (stack.awaitPromise?.length > 0) {\n\t\t\t\t\tfor (const awaitRef of stack.awaitPromise) {\n\t\t\t\t\t\tconst awaitValue = await awaitRef.promise;\n\t\t\t\t\t\tif (awaitRef.declareVariable) {\n\t\t\t\t\t\t\tawaitRef.node.declareVariable(stack, awaitValue);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tawaitRef.node.set(stack, awaitValue);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tstack.awaitPromise.splice(0);\n\t\t\t\t}\n\t\t\t\telse if (stack.forAwaitAsyncIterable) {\n\t\t\t\t\tfor await (let iterator of stack.forAwaitAsyncIterable.iterable) {\n\t\t\t\t\t\tconst result = stack.forAwaitAsyncIterable.forAwaitBody(iterator);\n\t\t\t\t\t\tif (result instanceof TerminateReturnType) {\n\t\t\t\t\t\t\tif (result.type === 'continue') {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (result instanceof ReturnValue) {\n\t\t\t\t\t\t\treturnValue = result;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tstack.forAwaitAsyncIterable = undefined;\n\t\t\t\t}\n\t\t\t\tif (returnValue instanceof ReturnValue) {\n\t\t\t\t\treturnValue = returnValue.value;\n\t\t\t\t\tif (returnValue instanceof AwaitPromise) {\n\t\t\t\t\t\tthis.clearFunctionScope(stack, innerScopes);\n\t\t\t\t\t\treturn await returnValue.promise;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.clearFunctionScope(stack, innerScopes);\n\t\t\tif (this.expression) {\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t};\n\t}\n\tprivate getArrowFunction(stack: Stack) {\n\t\treturn (...args: any[]) => {\n\t\t\tconst innerScopes = this.initFunctionScope(stack);\n\t\t\tthis.setParameter(stack, args);\n\t\t\tlet returnValue: any;\n\t\t\tconst statements = Array.isArray(this.body) ? this.body : [this.body];\n\t\t\tfor (const statement of statements) {\n\t\t\t\tstatement.shareVariables(innerScopes);\n\t\t\t\treturnValue = statement.get(stack);\n\t\t\t\tif (returnValue instanceof ReturnValue) {\n\t\t\t\t\tthis.clearFunctionScope(stack, innerScopes);\n\t\t\t\t\treturn returnValue.value;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.clearFunctionScope(stack, innerScopes);\n\t\t\tif (this.expression) {\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t};\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.params.flatMap(param => param.dependency());\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.params.flatMap(param => param.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\tlet str = this.async ? 'async ' : '';\n\t\tif (this.params.length === 1) {\n\t\t\tstr += this.params[0].toString();\n\t\t} else {\n\t\t\tstr += `(${this.params.map(param => param.toString()).join(', ')})`;\n\t\t}\n\t\tstr += ' => ';\n\t\tstr += this.body.toString();\n\t\treturn str;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tparams: this.params.map(param => param.toJSON()),\n\t\t\tbody: Array.isArray(this.body) ? this.body.map(item => item.toJSON()) : this.body.toJSON(),\n\t\t\texpression: true,\n\t\t\tasync: this.async,\n\t\t\tgenerator: this.generator\n\t\t};\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"function.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/function.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tDeclarationExpression, ExpressionEventPath, ExpressionNode,\n\tNodeDeserializer, VisitNodeType\n} from '../expression.js';\nimport { Stack } from '../../scope/stack.js';\nimport { Scope } from '../../scope/scope.js';\nimport {\n\tAbstractExpressionNode, AwaitPromise, ReturnValue,\n\tYieldDelegateValue, YieldValue\n} from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { Identifier } from './values.js';\nimport { TerminateReturnType } from '../statement/control/terminate.js';\nimport { RestElement } from '../computing/rest.js';\nimport { BlockStatement } from '../statement/control/block.js';\n\n@Deserializer('Param')\nexport class Param extends AbstractExpressionNode {\n\tstatic fromJSON(node: Param, deserializer: NodeDeserializer): Param {\n\t\treturn new Param(\n\t\t\tdeserializer(node.identifier) as DeclarationExpression,\n\t\t\tnode.defaultValue ? deserializer(node.defaultValue) as Identifier : void 0\n\t\t);\n\t}\n\tstatic visit(node: Param, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.identifier);\n\t\tnode.defaultValue && visitNode(node.defaultValue);\n\t}\n\tconstructor(private identifier: DeclarationExpression, private defaultValue?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetIdentifier() {\n\t\treturn this.identifier;\n\t}\n\tgetDefaultValue() {\n\t\treturn this.defaultValue;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.defaultValue?.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: Function) {\n\t\tthis.identifier.declareVariable?.(stack, value);\n\t}\n\tget(stack: Stack) {\n\t\tthrow new Error('Param#get() has no implementation.');\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.defaultValue ? [this.defaultValue] : [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.defaultValue?.dependencyPath(computed) || [];\n\t}\n\ttoString(): string {\n\t\tlet init = this.defaultValue ? (' = ' + this.defaultValue.toString()) : '';\n\t\treturn this.identifier.toString() + init;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tidentifier: this.identifier.toJSON(),\n\t\t\tdefaultValue: this.defaultValue?.toJSON()\n\t\t};\n\t}\n}\n\nexport abstract class BaseFunctionExpression extends AbstractExpressionNode {\n\tprivate sharedVariables: Scope<any>[];\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.sharedVariables = scopeList;\n\t}\n\tinitFunctionScope(stack: Stack) {\n\t\tconst scope = Scope.blockScope<object>();\n\t\tconst innerScopes = this.sharedVariables ? this.sharedVariables.slice() : [];\n\t\tinnerScopes.push(scope);\n\t\tinnerScopes.forEach(variableScope => stack.pushScope(variableScope));\n\t\treturn innerScopes;\n\t}\n\tclearFunctionScope(stack: Stack, innerScopes: Scope<any>[]) {\n\t\tstack.clearTo(innerScopes[0]);\n\t}\n}\n\n@Deserializer('FunctionExpression')\nexport class FunctionExpression extends BaseFunctionExpression {\n\tstatic fromJSON(node: FunctionExpression, deserializer: NodeDeserializer): FunctionExpression {\n\t\treturn new FunctionExpression(\n\t\t\tnode.params.map(deserializer),\n\t\t\tdeserializer(node.body),\n\t\t\tnode.async,\n\t\t\tnode.generator,\n\t\t\tnode.id ? deserializer(node.id) as Identifier : void 0,\n\t\t);\n\t}\n\tstatic visit(node: FunctionExpression, visitNode: VisitNodeType): void {\n\t\tnode.id && visitNode(node.id);\n\t\tnode.params.forEach(visitNode);\n\t\tvisitNode(node.body);\n\t}\n\tconstructor(\n\t\tprotected params: ExpressionNode[], protected body: ExpressionNode,\n\t\tprotected async: boolean, protected generator: boolean,\n\t\tprotected id?: Identifier,\n\t) {\n\t\tsuper();\n\t}\n\tgetParams() {\n\t\treturn this.params;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tgetGenerator() {\n\t\treturn this.generator;\n\t}\n\tgetId() {\n\t\treturn this.id;\n\t}\n\tgetAsync() {\n\t\treturn this.async;\n\t}\n\tset(stack: Stack, value: Function) {\n\t\tthrow new Error(`${this.constructor.name}#set() has no implementation.`);\n\t}\n\tsetParameter(stack: Stack, args: any[]) {\n\t\tconst rest = this.params[this.params.length - 1] instanceof RestElement;\n\t\tconst limit = rest ? this.params.length - 1 : this.params.length;\n\t\tfor (let i = 0; i < limit; i++) {\n\t\t\tthis.params[i].set(stack, args[i]);\n\t\t}\n\t\tif (rest) {\n\t\t\tthis.params[limit].set(stack, args.slice(limit));\n\t\t}\n\t}\n\tget(stack: Stack) {\n\t\tlet func: Function;\n\t\tif (this.async && this.generator) {\n\t\t\tfunc = this.getAsyncGeneratorFunction(stack);\n\t\t} else if (this.async) {\n\t\t\tfunc = this.getAsyncFunction(stack);\n\t\t} else if (this.generator) {\n\t\t\tfunc = this.getGeneratorFunction(stack);\n\t\t} else {\n\t\t\tfunc = this.getFunction(stack);\n\t\t}\n\t\t// this.id?.declareVariable(stack, func);\n\t\treturn func;\n\t}\n\tprivate getAsyncFunction(stack: Stack) {\n\t\tconst self = this;\n\t\treturn async function (this: any, ...args: any[]) {\n\t\t\tconst innerScopes = self.initFunctionScope(stack);\n\t\t\tstack.declareVariable('this', this);\n\t\t\tself.setParameter(stack, args);\n\t\t\tlet returnValue: any;\n\t\t\tconst statements = (self.body as BlockStatement).getBody();\n\t\t\tfor (const statement of statements) {\n\t\t\t\tstatement.shareVariables(innerScopes);\n\t\t\t\treturnValue = statement.get(stack);\n\t\t\t\tif (stack.awaitPromise?.length > 0) {\n\t\t\t\t\tfor (const awaitRef of stack.awaitPromise) {\n\t\t\t\t\t\tconst awaitValue = await awaitRef.promise;\n\t\t\t\t\t\tif (awaitRef.declareVariable) {\n\t\t\t\t\t\t\tawaitRef.node.declareVariable(stack, awaitValue);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tawaitRef.node.set(stack, awaitValue);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tstack.awaitPromise.splice(0);\n\t\t\t\t}\n\t\t\t\telse if (stack.forAwaitAsyncIterable) {\n\t\t\t\t\tfor await (let iterator of stack.forAwaitAsyncIterable.iterable) {\n\t\t\t\t\t\tconst result = stack.forAwaitAsyncIterable.forAwaitBody(iterator);\n\t\t\t\t\t\tif (result instanceof TerminateReturnType) {\n\t\t\t\t\t\t\tif (result.type === 'continue') {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (result instanceof ReturnValue) {\n\t\t\t\t\t\t\treturnValue = result;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tstack.forAwaitAsyncIterable = undefined;\n\t\t\t\t}\n\t\t\t\tif (returnValue instanceof ReturnValue) {\n\t\t\t\t\treturnValue = returnValue.value;\n\t\t\t\t\tif (returnValue instanceof AwaitPromise) {\n\t\t\t\t\t\treturnValue = await returnValue.promise;\n\t\t\t\t\t}\n\t\t\t\t\tself.clearFunctionScope(stack, innerScopes);\n\t\t\t\t\treturn returnValue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tself.clearFunctionScope(stack, innerScopes);\n\t\t};\n\n\t}\n\tprivate getGeneratorFunction(stack: Stack) {\n\t\tconst self = this;\n\t\treturn function* (this: any, ...args: any[]) {\n\t\t\tconst innerScopes = self.initFunctionScope(stack);\n\t\t\tstack.declareVariable('this', this);\n\t\t\tself.setParameter(stack, args);\n\t\t\tlet returnValue: any;\n\t\t\tconst statements = (self.body as BlockStatement).getBody();\n\t\t\tfor (const statement of statements) {\n\t\t\t\tstatement.shareVariables(innerScopes);\n\t\t\t\treturnValue = statement.get(stack);\n\t\t\t\tif (returnValue instanceof ReturnValue) {\n\t\t\t\t\tself.clearFunctionScope(stack, innerScopes);\n\t\t\t\t\treturn returnValue.value;\n\t\t\t\t} else if (returnValue instanceof YieldValue) {\n\t\t\t\t\tyield returnValue.value;\n\t\t\t\t} else if (returnValue instanceof YieldDelegateValue) {\n\t\t\t\t\tyield* returnValue.value;\n\t\t\t\t}\n\t\t\t}\n\t\t\tself.clearFunctionScope(stack, innerScopes);\n\t\t};\n\t}\n\tprivate getAsyncGeneratorFunction(stack: Stack) {\n\t\tconst self = this;\n\t\treturn async function* (this: any, ...args: any[]) {\n\t\t\tconst innerScopes = self.initFunctionScope(stack);\n\t\t\tstack.declareVariable('this', this);\n\t\t\tself.setParameter(stack, args);\n\t\t\tlet returnValue: any;\n\t\t\tconst statements = (self.body as BlockStatement).getBody();\n\t\t\tfor (const statement of statements) {\n\t\t\t\tstatement.shareVariables(innerScopes);\n\t\t\t\treturnValue = statement.get(stack);\n\t\t\t\tif (stack.awaitPromise?.length > 0) {\n\t\t\t\t\tfor (const awaitRef of stack.awaitPromise) {\n\t\t\t\t\t\tconst awaitValue = await awaitRef.promise;\n\t\t\t\t\t\tif (awaitRef.declareVariable) {\n\t\t\t\t\t\t\tawaitRef.node.declareVariable(stack, awaitValue);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tawaitRef.node.set(stack, awaitValue);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tstack.awaitPromise.splice(0);\n\t\t\t\t}\n\t\t\t\telse if (stack.forAwaitAsyncIterable) {\n\t\t\t\t\tfor await (let iterator of stack.forAwaitAsyncIterable.iterable) {\n\t\t\t\t\t\tconst result = stack.forAwaitAsyncIterable.forAwaitBody(iterator);\n\t\t\t\t\t\tif (result instanceof TerminateReturnType) {\n\t\t\t\t\t\t\tif (result.type === 'continue') {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (result instanceof ReturnValue) {\n\t\t\t\t\t\t\tself.clearFunctionScope(stack, innerScopes);\n\t\t\t\t\t\t\treturnValue = returnValue.value;\n\t\t\t\t\t\t\tif (returnValue instanceof AwaitPromise) {\n\t\t\t\t\t\t\t\treturn await returnValue.promise;\n\t\t\t\t\t\t\t} else if (returnValue instanceof YieldValue) {\n\t\t\t\t\t\t\t\tyield returnValue.value;\n\t\t\t\t\t\t\t} else if (returnValue instanceof YieldDelegateValue) {\n\t\t\t\t\t\t\t\tyield* returnValue.value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn returnValue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tstack.forAwaitAsyncIterable = undefined;\n\t\t\t\t}\n\t\t\t\tif (returnValue instanceof ReturnValue) {\n\t\t\t\t\treturnValue = returnValue.value;\n\t\t\t\t\tif (returnValue instanceof AwaitPromise) {\n\t\t\t\t\t\treturn await returnValue.promise;\n\t\t\t\t\t}\n\t\t\t\t\treturn returnValue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tself.clearFunctionScope(stack, innerScopes);\n\t\t};\n\t}\n\tprivate getFunction(stack: Stack) {\n\t\tconst self = this;\n\t\treturn function (this: any, ...args: any[]) {\n\t\t\tconst innerScopes = self.initFunctionScope(stack);\n\t\t\tstack.declareVariable('this', this);\n\t\t\tself.setParameter(stack, args);\n\t\t\tlet returnValue: any;\n\t\t\tconst statements = (self.body as BlockStatement).getBody();\n\t\t\tfor (const statement of statements) {\n\t\t\t\tstatement.shareVariables(innerScopes);\n\t\t\t\treturnValue = statement.get(stack);\n\t\t\t\tif (returnValue instanceof ReturnValue) {\n\t\t\t\t\tself.clearFunctionScope(stack, innerScopes);\n\t\t\t\t\treturn returnValue.value;\n\t\t\t\t}\n\t\t\t}\n\t\t\tself.clearFunctionScope(stack, innerScopes);\n\t\t};\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.params.flatMap(param => param.dependency());\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.params.flatMap(param => param.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\tlet declare: string = 'function ';\n\t\tif (this.async && this.generator) {\n\t\t\tdeclare = 'async function* ';\n\t\t} else if (this.async) {\n\t\t\tdeclare = 'async function ';\n\t\t} else if (this.generator) {\n\t\t\tdeclare = 'function* ';\n\t\t}\n\t\treturn `${declare}${this.id?.toString() || ''}${this.paramsAndBodyToString()}`;\n\t}\n\tparamsAndBodyToString() {\n\t\treturn `(${this.params.map(param => param.toString()).join(', ')}) ${this.body.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tparams: this.params.map(param => param.toJSON()),\n\t\t\tbody: this.body.toJSON(),\n\t\t\tasync: this.async,\n\t\t\tid: this.id?.toJSON(),\n\t\t\tgenerator: this.generator\n\t\t};\n\t}\n}\n\n@Deserializer('FunctionDeclaration')\nexport class FunctionDeclaration extends FunctionExpression implements DeclarationExpression {\n\tstatic fromJSON(node: FunctionDeclaration, deserializer: NodeDeserializer): FunctionDeclaration {\n\t\treturn new FunctionDeclaration(\n\t\t\tnode.params.map(deserializer),\n\t\t\tdeserializer(node.body),\n\t\t\tnode.async,\n\t\t\tnode.generator,\n\t\t\tdeserializer(node.id) as Identifier\n\t\t);\n\t}\n\tstatic visit(node: FunctionDeclaration, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.id);\n\t\tnode.params.forEach(visitNode);\n\t\tvisitNode(node.body);\n\t}\n\tdeclare protected id: Identifier;\n\tconstructor(\n\t\tparams: ExpressionNode[],\n\t\tbody: ExpressionNode,\n\t\tasync: boolean,\n\t\tgenerator: boolean,\n\t\tid: Identifier) {\n\t\tsuper(params, body, async, generator, id);\n\t}\n\toverride get(stack: Stack): Function {\n\t\tconst func = super.get(stack);\n\t\tthis.declareVariable(stack, func);\n\t\treturn func;\n\t}\n\tdeclareVariable(stack: Stack, value: Function) {\n\t\tthis.id.declareVariable(stack, value);\n\t}\n}\n\n\n@Deserializer('ArrowFunctionExpression')\nexport class ArrowFunctionExpression extends BaseFunctionExpression {\n\tstatic fromJSON(node: ArrowFunctionExpression, deserializer: NodeDeserializer): ArrowFunctionExpression {\n\t\treturn new ArrowFunctionExpression(\n\t\t\tnode.params.map(deserializer),\n\t\t\tArray.isArray(node.body)\n\t\t\t\t? node.body.map(deserializer)\n\t\t\t\t: deserializer(node.body),\n\t\t\tnode.expression,\n\t\t\tnode.async\n\t\t);\n\t}\n\tstatic visit(node: ArrowFunctionExpression, visitNode: VisitNodeType): void {\n\t\tnode.params.forEach(visitNode);\n\t\tArray.isArray(node.body)\n\t\t\t? node.body.forEach(visitNode)\n\t\t\t: visitNode(node.body);\n\t}\n\tprivate generator = false;\n\tconstructor(\n\t\tprivate params: ExpressionNode[],\n\t\tprivate body: ExpressionNode | ExpressionNode[],\n\t\tprivate expression: boolean,\n\t\tprivate async: boolean,) {\n\t\tsuper();\n\t}\n\tgetParams() {\n\t\treturn this.params;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tgetExpression() {\n\t\treturn this.expression;\n\t}\n\tset(stack: Stack, value: Function) {\n\t\tthrow new Error('ArrowFunctionExpression#set() has no implementation.');\n\t}\n\tprivate setParameter(stack: Stack, args: any[]) {\n\t\tconst rest = this.params[this.params.length - 1] instanceof RestElement;\n\t\tconst limit = rest ? this.params.length - 1 : this.params.length;\n\t\tfor (let i = 0; i < limit; i++) {\n\t\t\tthis.params[i].set(stack, args[i]);\n\t\t}\n\t\tif (rest) {\n\t\t\tthis.params[limit].set(stack, args.slice(limit));\n\t\t}\n\t}\n\tget(stack: Stack) {\n\t\treturn this.async ? this.getAsyncArrowFunction(stack) : this.getArrowFunction(stack);\n\t}\n\tprivate getAsyncArrowFunction(stack: Stack) {\n\t\tasync (...args: any[]) => {\n\t\t\tconst innerScopes = this.initFunctionScope(stack);\n\t\t\tthis.setParameter(stack, args);\n\t\t\tlet returnValue: any;\n\t\t\tconst statements = Array.isArray(this.body) ? this.body : [this.body];\n\t\t\tfor (const state of statements) {\n\t\t\t\tstate.shareVariables(innerScopes);\n\t\t\t\treturnValue = state.get(stack);\n\t\t\t\tif (stack.awaitPromise?.length > 0) {\n\t\t\t\t\tfor (const awaitRef of stack.awaitPromise) {\n\t\t\t\t\t\tconst awaitValue = await awaitRef.promise;\n\t\t\t\t\t\tif (awaitRef.declareVariable) {\n\t\t\t\t\t\t\tawaitRef.node.declareVariable(stack, awaitValue);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tawaitRef.node.set(stack, awaitValue);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tstack.awaitPromise.splice(0);\n\t\t\t\t}\n\t\t\t\telse if (stack.forAwaitAsyncIterable) {\n\t\t\t\t\tfor await (let iterator of stack.forAwaitAsyncIterable.iterable) {\n\t\t\t\t\t\tconst result = stack.forAwaitAsyncIterable.forAwaitBody(iterator);\n\t\t\t\t\t\tif (result instanceof TerminateReturnType) {\n\t\t\t\t\t\t\tif (result.type === 'continue') {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (result instanceof ReturnValue) {\n\t\t\t\t\t\t\treturnValue = result;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tstack.forAwaitAsyncIterable = undefined;\n\t\t\t\t}\n\t\t\t\tif (returnValue instanceof ReturnValue) {\n\t\t\t\t\treturnValue = returnValue.value;\n\t\t\t\t\tif (returnValue instanceof AwaitPromise) {\n\t\t\t\t\t\tthis.clearFunctionScope(stack, innerScopes);\n\t\t\t\t\t\treturn await returnValue.promise;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.clearFunctionScope(stack, innerScopes);\n\t\t\tif (this.expression) {\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t};\n\t}\n\tprivate getArrowFunction(stack: Stack) {\n\t\treturn (...args: any[]) => {\n\t\t\tconst innerScopes = this.initFunctionScope(stack);\n\t\t\tthis.setParameter(stack, args);\n\t\t\tlet returnValue: any;\n\t\t\tconst statements = Array.isArray(this.body) ? this.body : [this.body];\n\t\t\tfor (const statement of statements) {\n\t\t\t\tstatement.shareVariables(innerScopes);\n\t\t\t\treturnValue = statement.get(stack);\n\t\t\t\tif (returnValue instanceof ReturnValue) {\n\t\t\t\t\tthis.clearFunctionScope(stack, innerScopes);\n\t\t\t\t\treturn returnValue.value;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.clearFunctionScope(stack, innerScopes);\n\t\t\tif (this.expression) {\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t};\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.params.flatMap(param => param.dependency());\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.params.flatMap(param => param.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\tlet str = this.async ? 'async ' : '';\n\t\tif (this.params.length === 1) {\n\t\t\tstr += this.params[0].toString();\n\t\t} else {\n\t\t\tstr += `(${this.params.map(param => param.toString()).join(', ')})`;\n\t\t}\n\t\tstr += ' => ';\n\t\tstr += this.body.toString();\n\t\treturn str;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tparams: this.params.map(param => param.toJSON()),\n\t\t\tbody: Array.isArray(this.body) ? this.body.map(item => item.toJSON()) : this.body.toJSON(),\n\t\t\texpression: true,\n\t\t\tasync: this.async,\n\t\t\tgenerator: this.generator\n\t\t};\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"member.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/member.ts"],"names":[],"mappings":";;AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"member.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/member.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, CanFindScope,\n\tExpressionEventPath, VisitNodeType\n} from '../expression.js';\nimport type { Scope, Context } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { AbstractExpressionNode } from '../abstract.js';\n\n@Deserializer('MemberExpression')\nexport class MemberExpression extends AbstractExpressionNode implements CanFindScope {\n\tstatic fromJSON(node: MemberExpression, deserializer: NodeDeserializer): MemberExpression {\n\t\treturn new MemberExpression(\n\t\t\tdeserializer(node.object),\n\t\t\tdeserializer(node.property),\n\t\t\tnode.computed,\n\t\t\tnode.optional\n\t\t);\n\t}\n\tstatic visit(node: MemberExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.object);\n\t\tvisitNode(node.property);\n\t}\n\tconstructor(\n\t\tprotected object: ExpressionNode,\n\t\tprotected property: ExpressionNode,\n\t\tprivate computed: boolean,\n\t\tprivate optional: boolean = false) {\n\t\tsuper();\n\t}\n\tgetObject() {\n\t\treturn this.object;\n\t}\n\tgetProperty() {\n\t\treturn this.property;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, value: any) {\n\t\tconst objectScope = (this.object as ExpressionNode & CanFindScope).findScope<Context>(stack);\n\t\tlet propertyKey: PropertyKey;\n\t\tif (this.computed) {\n\t\t\tpropertyKey = this.property.get(stack);\n\t\t\tobjectScope.set(propertyKey, value);\n\t\t} else {\n\t\t\tstack.pushScope(objectScope);\n\t\t\tthis.property.set(stack, value);\n\t\t\tstack.clearTo(objectScope);\n\t\t}\n\t\treturn value;\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\tconst objectRef = thisContext ?? this.object.get(stack);\n\t\tif (objectRef === undefined || objectRef === null) {\n\t\t\tif (this.optional) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthrow new TypeError(`Cannot read property '${this.property.toString()}' of ${objectRef}`);\n\t\t}\n\t\tlet value;\n\t\tif (this.computed) {\n\t\t\tvalue = objectRef[this.property.get(stack)];\n\t\t} else {\n\t\t\tvalue = this.property.get(stack, objectRef);\n\t\t}\n\t\treturn value;\n\t}\n\tfindScope<T extends object>(stack: Stack): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, scope: Scope<any>): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, objectScope?: Scope<any>): Scope<T> | undefined {\n\t\tif (!objectScope) {\n\t\t\tobjectScope = (this.object as ExpressionNode & CanFindScope).findScope(stack);\n\t\t}\n\t\treturn (this.property as ExpressionNode & CanFindScope).findScope(stack, objectScope);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn [this];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\tif (this.computed) {\n\t\t\tconst objPath = this.object.dependencyPath(computed);\n\t\t\tconst propertyDependency = this.property.dependency(true);\n\t\t\tconst propertyDependencyPath = propertyDependency.map(exp => exp.dependencyPath(true));\n\n\t\t\tconst computedPath: ExpressionEventPath = {\n\t\t\t\tcomputed: true,\n\t\t\t\tpath: ':' + propertyDependencyPath.flatMap(paths => paths).map(prop => prop.path).join(':'),\n\t\t\t\tcomputedPath: propertyDependencyPath.flatMap(paths => paths.flatMap(prop => prop.computed ? prop.computedPath : [])),\n\t\t\t};\n\t\t\treturn objPath.concat(computedPath);\n\t\t}\n\t\treturn this.object.dependencyPath(computed).concat(this.property.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\tif (this.computed) {\n\t\t\treturn `${this.object.toString()}${this.optional ? '?.' : ''}[${this.property.toString()}]`;\n\t\t}\n\t\treturn `${this.object.toString()}${this.optional ? '?.' : '.'}${this.property.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tobject: this.object.toJSON(),\n\t\t\tproperty: this.property.toJSON(),\n\t\t\tcomputed: this.computed,\n\t\t\toptional: this.optional\n\t\t};\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/object.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, DeclarationExpression,\n\tExpressionEventPath, VisitNodeType\n} from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport type { Identifier } from './values.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { RestElement } from '../computing/rest.js';\nimport { FunctionDeclaration } from './function.js';\n\n@Deserializer('Property')\nexport class Property extends AbstractExpressionNode implements DeclarationExpression {\n\tstatic fromJSON(node: Property, deserializer: NodeDeserializer): Property {\n\t\treturn new Property(\n\t\t\tdeserializer(node.key),\n\t\t\tdeserializer(node.value) as DeclarationExpression,\n\t\t\tnode.kind,\n\t\t\tnode.method,\n\t\t\tnode.shorthand,\n\t\t\tnode.computed,\n\t\t);\n\t}\n\tstatic visit(node: Property, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.key);\n\t\tvisitNode(node.value);\n\t}\n\tconstructor(\n\t\tprotected key: ExpressionNode,\n\t\tprotected value: DeclarationExpression | ExpressionNode,\n\t\tprotected kind: 'init' | 'get' | 'set',\n\t\tprotected method: boolean,\n\t\tprotected shorthand: boolean,\n\t\tprotected computed: boolean,) {\n\t\tsuper();\n\t}\n\tgetKey() {\n\t\treturn this.key;\n\t}\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthis.key.set(stack, value);\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.value.shareVariables(scopeList);\n\t}\n\tget(stack: Stack, thisContext: ThisType<any>): any {\n\t\tconst name = this.key.get(stack);\n\t\tlet value: any;\n\t\tswitch (this.kind) {\n\t\t\tcase 'get':\n\t\t\t\tconst get: () => any = this.value.get(stack);\n\t\t\t\tObject.defineProperty(thisContext, name, { get, configurable: true, enumerable: true });\n\t\t\t\tvalue = get;\n\t\t\t\tbreak;\n\t\t\tcase 'set':\n\t\t\t\tconst set: (v: any) => void = this.value.get(stack);\n\t\t\t\tObject.defineProperty(thisContext, name, { set, configurable: true, enumerable: true });\n\t\t\t\tvalue = set;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\tcase 'init':\n\t\t\t\tvalue = this.value.get(stack);\n\t\t\t\tObject.defineProperty(thisContext, name, { value, configurable: true, enumerable: true, writable: true });\n\t\t\t\tbreak;\n\t\t}\n\t\treturn value;\n\t}\n\tdeclareVariable(stack: Stack, objectValue: any): void {\n\t\tconst propertyName = this.shorthand ? (this.key as Identifier).getName() : this.key.get(stack);\n\t\tconst propertyValue = objectValue[propertyName];\n\t\t(this.value as DeclarationExpression).declareVariable(stack, propertyValue);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.key.dependency(computed).concat(this.value.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.key.dependencyPath(computed).concat(this.value.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\tconst key = this.computed ? `[${this.key.toString()}]` : this.key.toString();\n\t\tif (this.shorthand) {\n\t\t\treturn key;\n\t\t}\n\t\tlet value = '';\n\t\tswitch (this.kind) {\n\t\t\tcase 'get':\n\t\t\tcase 'set':\n\t\t\t\tconst expression = (this.value as FunctionDeclaration);\n\t\t\t\tvalue += this.kind;\n\t\t\t\tvalue += ' ' + key\n\t\t\t\tvalue += expression.paramsAndBodyToString();\n\t\t\t\tbreak;\n\t\t\tcase 'init':\n\t\t\t\tif (this.method) {\n\t\t\t\t\tconst expression = (this.value as FunctionDeclaration);\n\t\t\t\t\tvalue += ' ' + key\n\t\t\t\t\tvalue += expression.paramsAndBodyToString();\n\t\t\t\t} else {\n\t\t\t\t\tvalue += this.value.toString();\n\t\t\t\t\treturn `${key}: ${value}`;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\treturn value;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tkey: this.key.toJSON(),\n\t\t\tvalue: this.value.toJSON(),\n\t\t\tkind: this.kind\n\t\t};\n\t}\n}\n\n@Deserializer('ObjectExpression')\nexport class ObjectExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: ObjectExpression, deserializer: NodeDeserializer): ObjectExpression {\n\t\treturn new ObjectExpression(node.properties.map(deserializer) as Property[]);\n\t}\n\tstatic visit(node: ObjectExpression, visitNode: VisitNodeType): void {\n\t\tnode.properties.forEach(visitNode);\n\t}\n\tconstructor(private properties: Property[]) {\n\t\tsuper();\n\t}\n\tgetProperties() {\n\t\treturn this.properties;\n\t}\n\tset(stack: Stack) {\n\t\tthrow new Error('ObjectExpression#set() has no implementation.');\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.properties.forEach(prop => prop.shareVariables(scopeList));\n\t}\n\tget(stack: Stack) {\n\t\tconst newObject = {};\n\t\tfor (const property of this.properties) {\n\t\t\tproperty.get(stack, newObject);\n\t\t}\n\t\treturn newObject;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.properties.flatMap(property => property.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.properties.flatMap(property => property.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\treturn `{ ${this.properties.map(item => item.toString()).join(', ')} }`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tproperties: this.properties.map(item => item.toJSON())\n\t\t};\n\t}\n}\n\n@Deserializer('ObjectPattern')\nexport class ObjectPattern extends AbstractExpressionNode implements DeclarationExpression {\n\tstatic fromJSON(node: ObjectPattern, deserializer: NodeDeserializer): ObjectPattern {\n\t\treturn new ObjectPattern(node.properties.map(deserializer) as (Property | RestElement)[]);\n\t}\n\tstatic visit(node: ObjectPattern, visitNode: VisitNodeType): void {\n\t\tnode.properties.forEach(visitNode);\n\t}\n\tconstructor(private properties: (Property | RestElement)[]) {\n\t\tsuper();\n\t}\n\tgetProperties() {\n\t\treturn this.properties;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, objectValue: any) {\n\t\tthrow new Error('ObjectPattern#set() has no implementation.');\n\t}\n\tget(scopeProvider: Stack) {\n\t\tthrow new Error('ObjectPattern#get() has no implementation.');\n\t}\n\tdeclareVariable(stack: Stack, objectValue: any): void {\n\t\tfor (const property of this.properties) {\n\t\t\tif (property instanceof RestElement) {\n\t\t\t\tobjectValue = this.getFromObject(stack, objectValue);\n\t\t\t}\n\t\t\tproperty.declareVariable(stack, objectValue);\n\t\t}\n\t}\n\tprivate getFromObject(stack: Stack, objectValue: { [key: PropertyKey]: any }) {\n\t\tconst keys: PropertyKey[] = [];\n\t\tkeys.push(...Object.keys(objectValue));\n\t\tkeys.push(...Object.getOwnPropertySymbols(objectValue));\n\t\tconst restObject: typeof objectValue = {};\n\t\tconst context = stack.lastScope<typeof objectValue>().getContext()!;\n\t\tfor (const key of keys) {\n\t\t\tif (!(key in context)) {\n\t\t\t\trestObject[key] = objectValue[key];\n\t\t\t}\n\t\t}\n\t\treturn restObject;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.properties.flatMap(property => property.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.properties.flatMap(property => property.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\treturn `{ ${this.properties.map(item => item.toString()).join(', ')} }`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tproperties: this.properties.map(item => item.toJSON())\n\t\t};\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/object.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, DeclarationExpression,\n\tExpressionEventPath, VisitNodeType\n} from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport type { Identifier } from './values.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { RestElement } from '../computing/rest.js';\nimport { FunctionDeclaration } from './function.js';\n\n@Deserializer('Property')\nexport class Property extends AbstractExpressionNode implements DeclarationExpression {\n\tstatic fromJSON(node: Property, deserializer: NodeDeserializer): Property {\n\t\treturn new Property(\n\t\t\tdeserializer(node.key),\n\t\t\tdeserializer(node.value) as DeclarationExpression,\n\t\t\tnode.kind,\n\t\t\tnode.method,\n\t\t\tnode.shorthand,\n\t\t\tnode.computed,\n\t\t);\n\t}\n\tstatic visit(node: Property, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.key);\n\t\tvisitNode(node.value);\n\t}\n\tconstructor(\n\t\tprotected key: ExpressionNode,\n\t\tprotected value: DeclarationExpression | ExpressionNode,\n\t\tprotected kind: 'init' | 'get' | 'set',\n\t\tprotected method: boolean,\n\t\tprotected shorthand: boolean,\n\t\tprotected computed: boolean,) {\n\t\tsuper();\n\t}\n\tgetKey() {\n\t\treturn this.key;\n\t}\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthis.key.set(stack, value);\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.value.shareVariables(scopeList);\n\t}\n\tget(stack: Stack, thisContext: ThisType<any>): any {\n\t\tconst name = this.key.get(stack);\n\t\tlet value: any;\n\t\tswitch (this.kind) {\n\t\t\tcase 'get':\n\t\t\t\tconst get: () => any = this.value.get(stack);\n\t\t\t\tObject.defineProperty(thisContext, name, { get, configurable: true, enumerable: true });\n\t\t\t\tvalue = get;\n\t\t\t\tbreak;\n\t\t\tcase 'set':\n\t\t\t\tconst set: (v: any) => void = this.value.get(stack);\n\t\t\t\tObject.defineProperty(thisContext, name, { set, configurable: true, enumerable: true });\n\t\t\t\tvalue = set;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\tcase 'init':\n\t\t\t\tvalue = this.value.get(stack);\n\t\t\t\tObject.defineProperty(thisContext, name, { value, configurable: true, enumerable: true, writable: true });\n\t\t\t\tbreak;\n\t\t}\n\t\treturn value;\n\t}\n\tdeclareVariable(stack: Stack, objectValue: any): void {\n\t\tconst propertyName = this.shorthand ? (this.key as Identifier).getName() : this.key.get(stack);\n\t\tconst propertyValue = objectValue[propertyName];\n\t\t(this.value as DeclarationExpression).declareVariable(stack, propertyValue);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.key.dependency(computed).concat(this.value.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.key.dependencyPath(computed).concat(this.value.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\tconst key = this.computed ? `[${this.key.toString()}]` : this.key.toString();\n\t\tif (this.shorthand) {\n\t\t\treturn key;\n\t\t}\n\t\tlet value = '';\n\t\tswitch (this.kind) {\n\t\t\tcase 'get':\n\t\t\tcase 'set':\n\t\t\t\tconst expression = (this.value as FunctionDeclaration);\n\t\t\t\tvalue += this.kind;\n\t\t\t\tvalue += ' ' + key\n\t\t\t\tvalue += expression.paramsAndBodyToString();\n\t\t\t\tbreak;\n\t\t\tcase 'init':\n\t\t\t\tif (this.method) {\n\t\t\t\t\tconst expression = (this.value as FunctionDeclaration);\n\t\t\t\t\tvalue += ' ' + key\n\t\t\t\t\tvalue += expression.paramsAndBodyToString();\n\t\t\t\t} else {\n\t\t\t\t\tvalue += this.value.toString();\n\t\t\t\t\treturn `${key}: ${value}`;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\treturn value;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tkey: this.key.toJSON(),\n\t\t\tvalue: this.value.toJSON(),\n\t\t\tkind: this.kind\n\t\t};\n\t}\n}\n\n@Deserializer('ObjectExpression')\nexport class ObjectExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: ObjectExpression, deserializer: NodeDeserializer): ObjectExpression {\n\t\treturn new ObjectExpression(node.properties.map(deserializer) as Property[]);\n\t}\n\tstatic visit(node: ObjectExpression, visitNode: VisitNodeType): void {\n\t\tnode.properties.forEach(visitNode);\n\t}\n\tconstructor(private properties: Property[]) {\n\t\tsuper();\n\t}\n\tgetProperties() {\n\t\treturn this.properties;\n\t}\n\tset(stack: Stack) {\n\t\tthrow new Error('ObjectExpression#set() has no implementation.');\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.properties.forEach(prop => prop.shareVariables(scopeList));\n\t}\n\tget(stack: Stack) {\n\t\tconst newObject = {};\n\t\tfor (const property of this.properties) {\n\t\t\tproperty.get(stack, newObject);\n\t\t}\n\t\treturn newObject;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.properties.flatMap(property => property.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.properties.flatMap(property => property.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\treturn `{ ${this.properties.map(item => item.toString()).join(', ')} }`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tproperties: this.properties.map(item => item.toJSON())\n\t\t};\n\t}\n}\n\n@Deserializer('ObjectPattern')\nexport class ObjectPattern extends AbstractExpressionNode implements DeclarationExpression {\n\tstatic fromJSON(node: ObjectPattern, deserializer: NodeDeserializer): ObjectPattern {\n\t\treturn new ObjectPattern(node.properties.map(deserializer) as (Property | RestElement)[]);\n\t}\n\tstatic visit(node: ObjectPattern, visitNode: VisitNodeType): void {\n\t\tnode.properties.forEach(visitNode);\n\t}\n\tconstructor(private properties: (Property | RestElement)[]) {\n\t\tsuper();\n\t}\n\tgetProperties() {\n\t\treturn this.properties;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, objectValue: any) {\n\t\tthrow new Error('ObjectPattern#set() has no implementation.');\n\t}\n\tget(scopeProvider: Stack) {\n\t\tthrow new Error('ObjectPattern#get() has no implementation.');\n\t}\n\tdeclareVariable(stack: Stack, objectValue: any): void {\n\t\tfor (const property of this.properties) {\n\t\t\tif (property instanceof RestElement) {\n\t\t\t\tobjectValue = this.getFromObject(stack, objectValue);\n\t\t\t}\n\t\t\tproperty.declareVariable(stack, objectValue);\n\t\t}\n\t}\n\tprivate getFromObject(stack: Stack, objectValue: { [key: PropertyKey]: any }) {\n\t\tconst keys: PropertyKey[] = [];\n\t\tkeys.push(...Object.keys(objectValue));\n\t\tkeys.push(...Object.getOwnPropertySymbols(objectValue));\n\t\tconst restObject: typeof objectValue = {};\n\t\tconst context = stack.lastScope<typeof objectValue>().getContext()!;\n\t\tfor (const key of keys) {\n\t\t\tif (!(key in context)) {\n\t\t\t\trestObject[key] = objectValue[key];\n\t\t\t}\n\t\t}\n\t\treturn restObject;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.properties.flatMap(property => property.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.properties.flatMap(property => property.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\treturn `{ ${this.properties.map(item => item.toString()).join(', ')} }`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tproperties: this.properties.map(item => item.toJSON())\n\t\t};\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/statement.ts"],"names":[],"mappings":";;AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/statement.ts"],"names":[],"mappings":";;AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAG/C,IAAM,mBAAmB,2BAAzB,MAAM,mBAAoB,SAAQ,sBAAsB;IAO9D,YAAoB,IAAsB;QACzC,KAAK,EAAE,CAAC;QADW,SAAI,GAAJ,IAAI,CAAkB;IAE1C,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAyB,EAAE,YAA8B;QACxE,OAAO,IAAI,qBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAyB,EAAE,SAAwB;QAC/D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAID,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IACD,cAAc,CAAC,SAAuB;QACrC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACrE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,IAAI,KAAK,CAAC;QACV,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,OAAO,KAAK,CAAC;IACd,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,IAAI;aACd,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;aAClF,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;aACnD,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IACD,MAAM;QACL,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;IACrD,CAAC;CACD,CAAA;AAvCY,mBAAmB;IAD/B,YAAY,CAAC,qBAAqB,CAAC;;GACvB,mBAAmB,CAuC/B;SAvCY,mBAAmB","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode,\n\tExpressionEventPath, VisitNodeType,\n} from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { isDeclarationExpression } from '../utils.js';\n\n@Deserializer('ExpressionStatement')\nexport class ExpressionStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: ExpressionStatement, deserializer: NodeDeserializer): ExpressionStatement {\n\t\treturn new ExpressionStatement(node.body.map(line => deserializer(line)));\n\t}\n\tstatic visit(node: ExpressionStatement, visitNode: VisitNodeType): void {\n\t\tnode.body.forEach(visitNode);\n\t}\n\tconstructor(private body: ExpressionNode[]) {\n\t\tsuper();\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.body.forEach(statement => statement.shareVariables(scopeList));\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`ExpressionStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tlet value;\n\t\tthis.body.forEach(node => value = node.get(stack));\n\t\treturn value;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.body.flatMap(exp => exp.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.body.flatMap(node => node.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\treturn this.body\n\t\t\t.map(node => ({ insert: !isDeclarationExpression(node), string: node.toString() }))\n\t\t\t.map(ref => `${ref.string}${ref.insert ? ';' : ''}`)\n\t\t\t.join('\\n');\n\t}\n\ttoJson(): object {\n\t\treturn { body: this.body.map(exp => exp.toJSON()) };\n\t}\n}\n"]}
|
|
@@ -34,17 +34,17 @@ export declare class ThisExpression extends Identifier {
|
|
|
34
34
|
}
|
|
35
35
|
export declare class Literal<T> extends AbstractExpressionNode implements CanFindScope {
|
|
36
36
|
protected value: T;
|
|
37
|
-
|
|
37
|
+
static fromJSON(node: Literal<any>): Literal<string> | Literal<number> | Literal<boolean> | Literal<RegExp> | Literal<bigint> | Literal<null> | Literal<undefined>;
|
|
38
38
|
protected regex?: {
|
|
39
39
|
pattern: string;
|
|
40
40
|
flags: string;
|
|
41
|
-
}
|
|
42
|
-
protected bigint?: string
|
|
43
|
-
|
|
44
|
-
constructor(value: T, raw?: string
|
|
41
|
+
};
|
|
42
|
+
protected bigint?: string;
|
|
43
|
+
protected raw?: string;
|
|
44
|
+
constructor(value: T, raw?: string, regex?: {
|
|
45
45
|
pattern: string;
|
|
46
46
|
flags: string;
|
|
47
|
-
}
|
|
47
|
+
}, bigint?: string);
|
|
48
48
|
getValue(): T;
|
|
49
49
|
getRegex(): {
|
|
50
50
|
pattern: string;
|
package/api/definition/values.js
CHANGED
|
@@ -81,9 +81,15 @@ let Literal = Literal_1 = class Literal extends AbstractExpressionNode {
|
|
|
81
81
|
constructor(value, raw, regex, bigint) {
|
|
82
82
|
super();
|
|
83
83
|
this.value = value;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
84
|
+
if (raw) {
|
|
85
|
+
this.raw = raw;
|
|
86
|
+
}
|
|
87
|
+
if (regex) {
|
|
88
|
+
this.regex = regex;
|
|
89
|
+
}
|
|
90
|
+
if (bigint) {
|
|
91
|
+
this.bigint = bigint;
|
|
92
|
+
}
|
|
87
93
|
}
|
|
88
94
|
static fromJSON(node) {
|
|
89
95
|
if (node.bigint) {
|
|
@@ -246,18 +252,6 @@ TaggedTemplateExpression = __decorate([
|
|
|
246
252
|
__metadata("design:paramtypes", [Object, Array, Array])
|
|
247
253
|
], TaggedTemplateExpression);
|
|
248
254
|
export { TaggedTemplateExpression };
|
|
249
|
-
// @Deserializer('BigIntLiteral')
|
|
250
|
-
// export class BigIntLiteral extends Literal<bigint> {
|
|
251
|
-
// static fromJSON(node: BigIntLiteral): BigIntLiteral {
|
|
252
|
-
// return new BigIntLiteral(BigInt(String(node.value)));
|
|
253
|
-
// }
|
|
254
|
-
// toString(): string {
|
|
255
|
-
// return `${this.value}n`;
|
|
256
|
-
// }
|
|
257
|
-
// toJson(): object {
|
|
258
|
-
// return { value: this.value.toString() };
|
|
259
|
-
// }
|
|
260
|
-
// }
|
|
261
255
|
export const TRUE = String(true);
|
|
262
256
|
export const FALSE = String(false);
|
|
263
257
|
export const NULL = String(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"values.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/values.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tDeclarationExpression, ExpressionNode, NodeDeserializer,\n\tCanFindScope, ExpressionEventPath, VisitNodeType\n} from '../expression.js';\nimport type { Context, Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { AbstractExpressionNode } from '../abstract.js';\n\n/**\n * An identifier is a sequence of characters in the code that identifies a variable, function, or property.\n * In JavaScript, identifiers are case-sensitive and can contain Unicode letters, $, _, and digits (0-9),\n * but may not start with a digit.\n * An identifier differs from a string in that a string is data,\n * while an identifier is part of the code. In JavaScript,\n * there is no way to convert identifiers to strings,\n * but sometimes it is possible to parse strings into identifiers.\n */\n@Deserializer('Identifier')\nexport class Identifier extends AbstractExpressionNode implements DeclarationExpression, CanFindScope {\n\tstatic fromJSON(node: Identifier): Identifier {\n\t\treturn new Identifier(node.name);\n\t}\n\tconstructor(protected name: string | number) {\n\t\tsuper();\n\t}\n\tgetName() {\n\t\treturn this.name;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, value: any) {\n\t\treturn stack.set(this.name, value) ? value : void 0;\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\tif (thisContext) {\n\t\t\treturn thisContext[this.name];\n\t\t}\n\t\treturn stack.get(this.name);\n\t}\n\tfindScope<T extends object>(stack: Stack): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, scope: Scope<any>): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, scope?: Scope<any>): Scope<T> | undefined {\n\t\tif (scope) {\n\t\t\treturn scope.getInnerScope(this.name);\n\t\t}\n\t\tscope = stack.findScope(this.name);\n\t\treturn scope.getInnerScope(this.name);\n\t}\n\tdeclareVariable(stack: Stack, propertyValue: any): any {\n\t\treturn stack.declareVariable(this.name, propertyValue);\n\t}\n\tgetDeclarationName(): string {\n\t\treturn this.toString();\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn [this];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\tconst path: ExpressionEventPath[] = [{ computed: false, path: this.toString() }];\n\t\treturn computed ? [{ computed, path: this.toString(), computedPath: [path] }] : path;\n\t}\n\ttoString(): string {\n\t\treturn String(this.name);\n\t}\n\ttoJson(): object {\n\t\treturn { name: this.name };\n\t}\n}\n\n@Deserializer('ThisExpression')\nexport class ThisExpression extends Identifier {\n\tstatic fromJSON(node: ThisExpression): ThisExpression {\n\t\treturn ThisNode;\n\t}\n\tconstructor() {\n\t\tsuper('this');\n\t}\n}\n\n@Deserializer('Literal')\nexport class Literal<T> extends AbstractExpressionNode implements CanFindScope {\n\tstatic fromJSON(node: Literal<any>):\n\t\tLiteral<string>\n\t\t| Literal<number>\n\t\t| Literal<boolean>\n\t\t| Literal<RegExp>\n\t\t| Literal<bigint>\n\t\t| Literal<null>\n\t\t| Literal<undefined> {\n\t\tif (node.bigint) {\n\t\t\treturn new Literal(BigInt(node.bigint), node.raw, undefined, node.bigint);\n\t\t} else if (node.regex) {\n\t\t\treturn new Literal(RegExp(node.regex.pattern, node.regex.flags), node.raw, node.regex);\n\t\t}\n\t\treturn new Literal(node.value, node.raw);\n\t}\n\tconstructor(protected value: T, protected raw?: string, protected regex?: { pattern: string, flags: string }, protected bigint?: string) {\n\t\tsuper();\n\t}\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\tgetRegex() {\n\t\treturn this.regex;\n\t}\n\tgetBigint() {\n\t\treturn this.bigint;\n\t}\n\tgeRaw() {\n\t\treturn this.raw;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset() {\n\t\tthrow new Error(`${this.constructor.name}#set() has no implementation.`);\n\t}\n\tget(): T {\n\t\treturn this.value;\n\t}\n\tfindScope<V extends Context>(stack: Stack): Scope<V>;\n\tfindScope<V extends Context>(stack: Stack, scope: Scope<Record<PropertyKey, V>>): Scope<V>;\n\tfindScope<V extends Context>(stack: Stack, scope?: Scope<Record<PropertyKey, V>>): Scope<V> | undefined {\n\t\tif (scope) {\n\t\t\treturn scope.getInnerScope(this.value as any);\n\t\t}\n\t\tscope = stack.findScope(this.value as any);\n\t\treturn scope.getInnerScope(this.value as any);\n\t}\n\tdependency(computed: true): ExpressionNode[] {\n\t\treturn computed ? [this] : [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn computed ? [{ computed: false, path: this.toString() }] : [];\n\t}\n\ttoString(): string {\n\t\treturn this.raw ?? String(this.value);\n\t}\n\ttoJson(): object {\n\t\tif (this.bigint) {\n\t\t\treturn {\n\t\t\t\tbigint: this.bigint,\n\t\t\t\traw: this.raw,\n\t\t\t};\n\t\t} else if (this.regex) {\n\t\t\treturn {\n\t\t\t\tregex: { pattern: this.regex?.pattern, flags: this.regex?.flags },\n\t\t\t\traw: this.raw,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tvalue: this.value,\n\t\t\traw: this.raw,\n\t\t};\n\t}\n}\n\nclass TemplateArray extends Array<string> implements TemplateStringsArray {\n\traw: readonly string[];\n\tconstructor(strings: string[]) {\n\t\tsuper(...strings);\n\t\tthis.raw = strings;\n\t}\n}\n\nexport class TemplateLiteralExpressionNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: TemplateLiteralExpressionNode, deserializer: NodeDeserializer): TemplateLiteralExpressionNode {\n\t\treturn new TemplateLiteralExpressionNode(\n\t\t\tnode.quasis,\n\t\t\tnode.expressions.map(deserializer),\n\t\t\tnode.tag ? deserializer(node.tag) : void 0\n\t\t);\n\t}\n\tstatic visit(node: TemplateLiteralExpressionNode, visitNode: VisitNodeType): void {\n\t\tnode.tag && visitNode(node.tag);\n\t\tnode.expressions.forEach(visitNode);\n\t}\n\tconstructor(protected quasis: string[], protected expressions: ExpressionNode[], protected tag?: ExpressionNode,) {\n\t\tsuper();\n\t}\n\tgetTag() {\n\t\treturn this.tag;\n\t}\n\tgetExpressions() {\n\t\treturn this.expressions;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.expressions.forEach(value => value.shareVariables(scopeList));\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`TemplateLiteralExpressionNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst tagged: Function = this.tag?.get(stack) || String.raw;\n\t\tconst templateStringsArray = new TemplateArray(this.quasis);\n\t\ttemplateStringsArray.raw = templateStringsArray;\n\t\tconst values = this.expressions.map(expr => expr.get(stack));\n\t\treturn tagged(templateStringsArray, ...values);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.expressions.flatMap(exp => exp.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.expressions.flatMap(exp => exp.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\tlet str = this.tag?.toString() || '';\n\t\tstr += '`';\n\t\tlet i = 0;\n\t\tfor (; i < this.quasis.length - 1; i++) {\n\t\t\tstr += this.quasis[i];\n\t\t\tstr += '${';\n\t\t\tstr += this.expressions[i].toString();\n\t\t\tstr += '}';\n\t\t}\n\t\tstr += this.quasis[i];\n\t\tstr += '`';\n\t\treturn str;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tquasis: this.quasis,\n\t\t\texpressions: this.expressions.map(expr => expr.toJSON()),\n\t\t\ttag: this.tag?.toJSON(),\n\t\t};\n\t}\n}\n\n@Deserializer('TemplateLiteral')\nexport class TemplateLiteral extends TemplateLiteralExpressionNode {\n\tdeclare protected tag: undefined;\n\tconstructor(quasis: string[], expressions: ExpressionNode[]) {\n\t\tsuper(quasis, expressions);\n\t}\n\toverride getTag(): undefined {\n\t\treturn undefined;\n\t}\n}\n\n@Deserializer('TaggedTemplateExpression')\nexport class TaggedTemplateExpression extends TemplateLiteralExpressionNode {\n\tdeclare protected tag: ExpressionNode;\n\tconstructor(tag: ExpressionNode, quasis: string[], expressions: ExpressionNode[]) {\n\t\tsuper(quasis, expressions, tag);\n\t}\n\toverride getTag(): ExpressionNode {\n\t\treturn super.getTag()!;\n\t}\n}\n\n\n// @Deserializer('BigIntLiteral')\n// export class BigIntLiteral extends Literal<bigint> {\n// \tstatic fromJSON(node: BigIntLiteral): BigIntLiteral {\n// \t\treturn new BigIntLiteral(BigInt(String(node.value)));\n// \t}\n// \ttoString(): string {\n// \t\treturn `${this.value}n`;\n// \t}\n// \ttoJson(): object {\n// \t\treturn { value: this.value.toString() };\n// \t}\n// }\n\n\nexport const TRUE = String(true);\nexport const FALSE = String(false);\n\nexport const NULL = String(null);\nexport const UNDEFINED = String(undefined);\n\nexport const NullNode = Object.freeze(new Literal<null>(null)) as Literal<null>;\nexport const UndefinedNode = Object.freeze(new Literal<undefined>(undefined)) as Literal<undefined>;\nexport const TrueNode = Object.freeze(new Literal<boolean>(true)) as Literal<boolean>;\nexport const FalseNode = Object.freeze(new Literal<boolean>(false)) as Literal<boolean>;\nexport const ThisNode = Object.freeze(new ThisExpression()) as ThisExpression;\nexport const GlobalThisNode = Object.freeze(new Identifier('globalThis')) as Identifier;\nexport const SymbolNode = Object.freeze(new Identifier('Symbol')) as Identifier;\nexport const OfNode = Object.freeze(new Identifier('of')) as Identifier;\nexport const AsNode = Object.freeze(new Identifier('as')) as Identifier;\nexport const DefaultNode = Object.freeze(new Identifier('default')) as Identifier;\nexport const GetIdentifier = Object.freeze(new Identifier('get')) as Identifier;\nexport const SetIdentifier = Object.freeze(new Identifier('set')) as Identifier;\nexport const AsyncIdentifier = Object.freeze(new Identifier('async')) as Identifier;\nexport const AwaitIdentifier = Object.freeze(new Identifier('await')) as Identifier;\nexport const ConstructorIdentifier = Object.freeze(new Identifier('constructor')) as Identifier;\nexport const NameIdentifier = Object.freeze(new Identifier('name')) as Identifier;\nexport const EvalIdentifier = Object.freeze(new Identifier('eval')) as Identifier;\nexport const ArgumentsIdentifier = Object.freeze(new Identifier('arguments')) as Identifier;\nexport const YieldIdentifier = Object.freeze(new Identifier('yield')) as Identifier;\nexport const SuperIdentifier = Object.freeze(new Identifier('super')) as Identifier;\nexport const LetIdentifier = Object.freeze(new Identifier('let')) as Identifier;\n"]}
|
|
1
|
+
{"version":3,"file":"values.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/values.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tDeclarationExpression, ExpressionNode, NodeDeserializer,\n\tCanFindScope, ExpressionEventPath, VisitNodeType\n} from '../expression.js';\nimport type { Context, Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { AbstractExpressionNode } from '../abstract.js';\n\n/**\n * An identifier is a sequence of characters in the code that identifies a variable, function, or property.\n * In JavaScript, identifiers are case-sensitive and can contain Unicode letters, $, _, and digits (0-9),\n * but may not start with a digit.\n * An identifier differs from a string in that a string is data,\n * while an identifier is part of the code. In JavaScript,\n * there is no way to convert identifiers to strings,\n * but sometimes it is possible to parse strings into identifiers.\n */\n@Deserializer('Identifier')\nexport class Identifier extends AbstractExpressionNode implements DeclarationExpression, CanFindScope {\n\tstatic fromJSON(node: Identifier): Identifier {\n\t\treturn new Identifier(node.name);\n\t}\n\tconstructor(protected name: string | number) {\n\t\tsuper();\n\t}\n\tgetName() {\n\t\treturn this.name;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, value: any) {\n\t\treturn stack.set(this.name, value) ? value : void 0;\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\tif (thisContext) {\n\t\t\treturn thisContext[this.name];\n\t\t}\n\t\treturn stack.get(this.name);\n\t}\n\tfindScope<T extends object>(stack: Stack): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, scope: Scope<any>): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, scope?: Scope<any>): Scope<T> | undefined {\n\t\tif (scope) {\n\t\t\treturn scope.getInnerScope(this.name);\n\t\t}\n\t\tscope = stack.findScope(this.name);\n\t\treturn scope.getInnerScope(this.name);\n\t}\n\tdeclareVariable(stack: Stack, propertyValue: any): any {\n\t\treturn stack.declareVariable(this.name, propertyValue);\n\t}\n\tgetDeclarationName(): string {\n\t\treturn this.toString();\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn [this];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\tconst path: ExpressionEventPath[] = [{ computed: false, path: this.toString() }];\n\t\treturn computed ? [{ computed, path: this.toString(), computedPath: [path] }] : path;\n\t}\n\ttoString(): string {\n\t\treturn String(this.name);\n\t}\n\ttoJson(): object {\n\t\treturn { name: this.name };\n\t}\n}\n\n@Deserializer('ThisExpression')\nexport class ThisExpression extends Identifier {\n\tstatic fromJSON(node: ThisExpression): ThisExpression {\n\t\treturn ThisNode;\n\t}\n\tconstructor() {\n\t\tsuper('this');\n\t}\n}\n\n@Deserializer('Literal')\nexport class Literal<T> extends AbstractExpressionNode implements CanFindScope {\n\tstatic fromJSON(node: Literal<any>):\n\t\tLiteral<string>\n\t\t| Literal<number>\n\t\t| Literal<boolean>\n\t\t| Literal<RegExp>\n\t\t| Literal<bigint>\n\t\t| Literal<null>\n\t\t| Literal<undefined> {\n\t\tif (node.bigint) {\n\t\t\treturn new Literal(BigInt(node.bigint), node.raw, undefined, node.bigint);\n\t\t} else if (node.regex) {\n\t\t\treturn new Literal(RegExp(node.regex.pattern, node.regex.flags), node.raw, node.regex);\n\t\t}\n\t\treturn new Literal(node.value, node.raw);\n\t}\n\tprotected regex?: { pattern: string, flags: string };\n\tprotected bigint?: string;\n\tprotected raw?: string\n\tconstructor(protected value: T, raw?: string, regex?: { pattern: string, flags: string }, bigint?: string) {\n\t\tsuper();\n\t\tif (raw) {\n\t\t\tthis.raw = raw;\n\t\t}\n\t\tif (regex) {\n\t\t\tthis.regex = regex;\n\t\t}\n\t\tif (bigint) {\n\t\t\tthis.bigint = bigint;\n\t\t}\n\t}\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\tgetRegex() {\n\t\treturn this.regex;\n\t}\n\tgetBigint() {\n\t\treturn this.bigint;\n\t}\n\tgeRaw() {\n\t\treturn this.raw;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset() {\n\t\tthrow new Error(`${this.constructor.name}#set() has no implementation.`);\n\t}\n\tget(): T {\n\t\treturn this.value;\n\t}\n\tfindScope<V extends Context>(stack: Stack): Scope<V>;\n\tfindScope<V extends Context>(stack: Stack, scope: Scope<Record<PropertyKey, V>>): Scope<V>;\n\tfindScope<V extends Context>(stack: Stack, scope?: Scope<Record<PropertyKey, V>>): Scope<V> | undefined {\n\t\tif (scope) {\n\t\t\treturn scope.getInnerScope(this.value as any);\n\t\t}\n\t\tscope = stack.findScope(this.value as any);\n\t\treturn scope.getInnerScope(this.value as any);\n\t}\n\tdependency(computed: true): ExpressionNode[] {\n\t\treturn computed ? [this] : [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn computed ? [{ computed: false, path: this.toString() }] : [];\n\t}\n\ttoString(): string {\n\t\treturn this.raw ?? String(this.value);\n\t}\n\ttoJson(): object {\n\t\tif (this.bigint) {\n\t\t\treturn {\n\t\t\t\tbigint: this.bigint,\n\t\t\t\traw: this.raw,\n\t\t\t};\n\t\t} else if (this.regex) {\n\t\t\treturn {\n\t\t\t\tregex: { pattern: this.regex?.pattern, flags: this.regex?.flags },\n\t\t\t\traw: this.raw,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tvalue: this.value,\n\t\t\traw: this.raw,\n\t\t};\n\t}\n}\n\nclass TemplateArray extends Array<string> implements TemplateStringsArray {\n\traw: readonly string[];\n\tconstructor(strings: string[]) {\n\t\tsuper(...strings);\n\t\tthis.raw = strings;\n\t}\n}\n\nexport class TemplateLiteralExpressionNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: TemplateLiteralExpressionNode, deserializer: NodeDeserializer): TemplateLiteralExpressionNode {\n\t\treturn new TemplateLiteralExpressionNode(\n\t\t\tnode.quasis,\n\t\t\tnode.expressions.map(deserializer),\n\t\t\tnode.tag ? deserializer(node.tag) : void 0\n\t\t);\n\t}\n\tstatic visit(node: TemplateLiteralExpressionNode, visitNode: VisitNodeType): void {\n\t\tnode.tag && visitNode(node.tag);\n\t\tnode.expressions.forEach(visitNode);\n\t}\n\tconstructor(protected quasis: string[], protected expressions: ExpressionNode[], protected tag?: ExpressionNode,) {\n\t\tsuper();\n\t}\n\tgetTag() {\n\t\treturn this.tag;\n\t}\n\tgetExpressions() {\n\t\treturn this.expressions;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.expressions.forEach(value => value.shareVariables(scopeList));\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`TemplateLiteralExpressionNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst tagged: Function = this.tag?.get(stack) || String.raw;\n\t\tconst templateStringsArray = new TemplateArray(this.quasis);\n\t\ttemplateStringsArray.raw = templateStringsArray;\n\t\tconst values = this.expressions.map(expr => expr.get(stack));\n\t\treturn tagged(templateStringsArray, ...values);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.expressions.flatMap(exp => exp.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.expressions.flatMap(exp => exp.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\tlet str = this.tag?.toString() || '';\n\t\tstr += '`';\n\t\tlet i = 0;\n\t\tfor (; i < this.quasis.length - 1; i++) {\n\t\t\tstr += this.quasis[i];\n\t\t\tstr += '${';\n\t\t\tstr += this.expressions[i].toString();\n\t\t\tstr += '}';\n\t\t}\n\t\tstr += this.quasis[i];\n\t\tstr += '`';\n\t\treturn str;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tquasis: this.quasis,\n\t\t\texpressions: this.expressions.map(expr => expr.toJSON()),\n\t\t\ttag: this.tag?.toJSON(),\n\t\t};\n\t}\n}\n\n@Deserializer('TemplateLiteral')\nexport class TemplateLiteral extends TemplateLiteralExpressionNode {\n\tdeclare protected tag: undefined;\n\tconstructor(quasis: string[], expressions: ExpressionNode[]) {\n\t\tsuper(quasis, expressions);\n\t}\n\toverride getTag(): undefined {\n\t\treturn undefined;\n\t}\n}\n\n@Deserializer('TaggedTemplateExpression')\nexport class TaggedTemplateExpression extends TemplateLiteralExpressionNode {\n\tdeclare protected tag: ExpressionNode;\n\tconstructor(tag: ExpressionNode, quasis: string[], expressions: ExpressionNode[]) {\n\t\tsuper(quasis, expressions, tag);\n\t}\n\toverride getTag(): ExpressionNode {\n\t\treturn super.getTag()!;\n\t}\n}\n\n\nexport const TRUE = String(true);\nexport const FALSE = String(false);\n\nexport const NULL = String(null);\nexport const UNDEFINED = String(undefined);\n\nexport const NullNode = Object.freeze(new Literal<null>(null)) as Literal<null>;\nexport const UndefinedNode = Object.freeze(new Literal<undefined>(undefined)) as Literal<undefined>;\nexport const TrueNode = Object.freeze(new Literal<boolean>(true)) as Literal<boolean>;\nexport const FalseNode = Object.freeze(new Literal<boolean>(false)) as Literal<boolean>;\nexport const ThisNode = Object.freeze(new ThisExpression()) as ThisExpression;\nexport const GlobalThisNode = Object.freeze(new Identifier('globalThis')) as Identifier;\nexport const SymbolNode = Object.freeze(new Identifier('Symbol')) as Identifier;\nexport const OfNode = Object.freeze(new Identifier('of')) as Identifier;\nexport const AsNode = Object.freeze(new Identifier('as')) as Identifier;\nexport const DefaultNode = Object.freeze(new Identifier('default')) as Identifier;\nexport const GetIdentifier = Object.freeze(new Identifier('get')) as Identifier;\nexport const SetIdentifier = Object.freeze(new Identifier('set')) as Identifier;\nexport const AsyncIdentifier = Object.freeze(new Identifier('async')) as Identifier;\nexport const AwaitIdentifier = Object.freeze(new Identifier('await')) as Identifier;\nexport const ConstructorIdentifier = Object.freeze(new Identifier('constructor')) as Identifier;\nexport const NameIdentifier = Object.freeze(new Identifier('name')) as Identifier;\nexport const EvalIdentifier = Object.freeze(new Identifier('eval')) as Identifier;\nexport const ArgumentsIdentifier = Object.freeze(new Identifier('arguments')) as Identifier;\nexport const YieldIdentifier = Object.freeze(new Identifier('yield')) as Identifier;\nexport const SuperIdentifier = Object.freeze(new Identifier('super')) as Identifier;\nexport const LetIdentifier = Object.freeze(new Identifier('let')) as Identifier;\n"]}
|
package/api/module/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/expressions/api/module/common.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAc,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,MAAM,OAAgB,eAAgB,SAAQ,sBAAsB;IACnE,YAAsB,KAAiB;QACtC,KAAK,EAAE,CAAC;QADa,UAAK,GAAL,KAAK,CAAY;IAEvC,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IACD,MAAM;QACL,OAAO;YACN,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;SAC1B,CAAC;IACH,CAAC;CACD;
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/expressions/api/module/common.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAc,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,MAAM,OAAgB,eAAgB,SAAQ,sBAAsB;IACnE,YAAsB,KAAiB;QACtC,KAAK,EAAE,CAAC;QADa,UAAK,GAAL,KAAK,CAAY;IAEvC,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IACD,MAAM;QACL,OAAO;YACN,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;SAC1B,CAAC;IACH,CAAC;CACD;AAKM,IAAM,eAAe,uBAArB,MAAM,eAAgB,SAAQ,sBAAsB;IAY1D,YAAoB,GAAiC,EAAU,KAAsB;QACpF,KAAK,EAAE,CAAC;QADW,QAAG,GAAH,GAAG,CAA8B;QAAU,UAAK,GAAL,KAAK,CAAiB;IAErF,CAAC;IAbD,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,YAA8B;QACpE,OAAO,IAAI,iBAAe,CACzB,YAAY,CAAC,IAAI,CAAC,GAAG,CAAe,EACpC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAoB,CAC3C,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAqB,EAAE,SAAwB;QAC3D,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAKD,MAAM;QACL,OAAO,IAAI,CAAC,GAAG,CAAC;IACjB,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IACD,cAAc,CAAC,SAAuB;QACrC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC5C,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC5C,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,WAAiB;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;IACzB,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,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC3D,CAAC;IACD,MAAM;QACL,OAAO;YACN,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YACtB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;SAC1B,CAAC;IACH,CAAC;CACD,CAAA;AA/CY,eAAe;IAD3B,YAAY,CAAC,iBAAiB,CAAC;6CAauC,OAAO;GAZjE,eAAe,CA+C3B;SA/CY,eAAe","sourcesContent":["import { Scope } from '../../scope/scope.js';\nimport { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Identifier, Literal } from '../definition/values.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { ExpressionEventPath, ExpressionNode, NodeDeserializer, VisitNodeType } from '../expression.js';\n\nexport abstract class ModuleSpecifier extends AbstractExpressionNode {\n\tconstructor(protected local: Identifier) {\n\t\tsuper();\n\t}\n\tgetLocal() {\n\t\treturn this.local;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tlocal: this.local.toJSON()\n\t\t};\n\t}\n}\n\n\n\n@Deserializer('ImportAttribute')\nexport class ImportAttribute extends AbstractExpressionNode {\n\tstatic fromJSON(node: ImportAttribute, deserializer: NodeDeserializer): ImportAttribute {\n\t\treturn new ImportAttribute(\n\t\t\tdeserializer(node.key) as Identifier,\n\t\t\tdeserializer(node.value) as Literal<string>\n\t\t);\n\t}\n\tstatic visit(node: ImportAttribute, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.key);\n\t\tvisitNode(node.value);\n\t}\n\n\tconstructor(private key: Identifier | Literal<string>, private value: Literal<string>) {\n\t\tsuper();\n\t}\n\tgetKey() {\n\t\treturn this.key;\n\t}\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthrow new Error('Method not implemented.');\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('Method not implemented.');\n\t}\n\tget(stack: Stack, thisContext?: any): { [key: string]: string } {\n\t\tconst key = this.key.get(stack);\n\t\tconst value = this.value.get();\n\t\treturn { [key]: value };\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn [];\n\t}\n\ttoString(): string {\n\t\treturn `${this.key.toString()}: ${this.value.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tkey: this.key.toJSON(),\n\t\t\tvalue: this.value.toJSON(),\n\t\t};\n\t}\n}\n"]}
|