@ibyar/expressions 0.8.6 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/README.md +48 -1
  2. package/api/abstract.d.ts +1 -0
  3. package/api/abstract.d.ts.map +1 -0
  4. package/api/abstract.js +12 -0
  5. package/api/abstract.js.map +1 -1
  6. package/api/class/class.d.ts +1 -0
  7. package/api/class/class.d.ts.map +1 -0
  8. package/api/class/class.js +603 -472
  9. package/api/class/class.js.map +1 -1
  10. package/api/class/decorator.d.ts +1 -0
  11. package/api/class/decorator.d.ts.map +1 -0
  12. package/api/class/decorator.js +53 -41
  13. package/api/class/decorator.js.map +1 -1
  14. package/api/computing/call.d.ts +1 -0
  15. package/api/computing/call.d.ts.map +1 -0
  16. package/api/computing/call.js +83 -69
  17. package/api/computing/call.js.map +1 -1
  18. package/api/computing/debugger.d.ts +1 -0
  19. package/api/computing/debugger.d.ts.map +1 -0
  20. package/api/computing/debugger.js +40 -28
  21. package/api/computing/debugger.js.map +1 -1
  22. package/api/computing/new.d.ts +1 -0
  23. package/api/computing/new.d.ts.map +1 -0
  24. package/api/computing/new.js +81 -68
  25. package/api/computing/new.js.map +1 -1
  26. package/api/computing/rest.d.ts +1 -0
  27. package/api/computing/rest.d.ts.map +1 -0
  28. package/api/computing/rest.js +54 -42
  29. package/api/computing/rest.js.map +1 -1
  30. package/api/computing/return.d.ts +1 -0
  31. package/api/computing/return.d.ts.map +1 -0
  32. package/api/computing/return.js +52 -40
  33. package/api/computing/return.js.map +1 -1
  34. package/api/computing/spread.d.ts +1 -0
  35. package/api/computing/spread.d.ts.map +1 -0
  36. package/api/computing/spread.js +70 -58
  37. package/api/computing/spread.js.map +1 -1
  38. package/api/computing/throw.d.ts +1 -0
  39. package/api/computing/throw.d.ts.map +1 -0
  40. package/api/computing/throw.js +216 -175
  41. package/api/computing/throw.js.map +1 -1
  42. package/api/computing/yield.d.ts +1 -0
  43. package/api/computing/yield.d.ts.map +1 -0
  44. package/api/computing/yield.js +60 -47
  45. package/api/computing/yield.js.map +1 -1
  46. package/api/definition/array.d.ts +1 -0
  47. package/api/definition/array.d.ts.map +1 -0
  48. package/api/definition/array.js +147 -122
  49. package/api/definition/array.js.map +1 -1
  50. package/api/definition/bind.d.ts +1 -0
  51. package/api/definition/bind.d.ts.map +1 -0
  52. package/api/definition/bind.js +85 -70
  53. package/api/definition/bind.js.map +1 -1
  54. package/api/definition/comment.d.ts +1 -0
  55. package/api/definition/comment.d.ts.map +1 -0
  56. package/api/definition/comment.js +44 -32
  57. package/api/definition/comment.js.map +1 -1
  58. package/api/definition/function.d.ts +1 -0
  59. package/api/definition/function.d.ts.map +1 -0
  60. package/api/definition/function.js +500 -443
  61. package/api/definition/function.js.map +1 -1
  62. package/api/definition/member.d.ts +1 -0
  63. package/api/definition/member.d.ts.map +1 -0
  64. package/api/definition/member.js +104 -89
  65. package/api/definition/member.js.map +1 -1
  66. package/api/definition/object.d.ts +1 -0
  67. package/api/definition/object.d.ts.map +1 -0
  68. package/api/definition/object.js +243 -200
  69. package/api/definition/object.js.map +1 -1
  70. package/api/definition/statement.d.ts +1 -0
  71. package/api/definition/statement.d.ts.map +1 -0
  72. package/api/definition/statement.js +56 -44
  73. package/api/definition/statement.js.map +1 -1
  74. package/api/definition/values.d.ts +1 -0
  75. package/api/definition/values.d.ts.map +1 -0
  76. package/api/definition/values.js +228 -160
  77. package/api/definition/values.js.map +1 -1
  78. package/api/deserialize/deserialize.d.ts +2 -1
  79. package/api/deserialize/deserialize.d.ts.map +1 -0
  80. package/api/deserialize/deserialize.js +5 -7
  81. package/api/deserialize/deserialize.js.map +1 -1
  82. package/api/deserialize/type-store.d.ts +1 -0
  83. package/api/deserialize/type-store.d.ts.map +1 -0
  84. package/api/expression.d.ts +1 -0
  85. package/api/expression.d.ts.map +1 -0
  86. package/api/index.d.ts +1 -0
  87. package/api/index.d.ts.map +1 -0
  88. package/api/module/common.d.ts +1 -0
  89. package/api/module/common.d.ts.map +1 -0
  90. package/api/module/common.js +63 -50
  91. package/api/module/common.js.map +1 -1
  92. package/api/module/export.d.ts +1 -0
  93. package/api/module/export.d.ts.map +1 -0
  94. package/api/module/export.js +343 -290
  95. package/api/module/export.js.map +1 -1
  96. package/api/module/import.d.ts +1 -0
  97. package/api/module/import.d.ts.map +1 -0
  98. package/api/module/import.js +318 -253
  99. package/api/module/import.js.map +1 -1
  100. package/api/operators/assignment.d.ts +1 -0
  101. package/api/operators/assignment.d.ts.map +1 -0
  102. package/api/operators/assignment.js +88 -75
  103. package/api/operators/assignment.js.map +1 -1
  104. package/api/operators/await.d.ts +1 -0
  105. package/api/operators/await.d.ts.map +1 -0
  106. package/api/operators/await.js +54 -42
  107. package/api/operators/await.js.map +1 -1
  108. package/api/operators/binary.d.ts +1 -0
  109. package/api/operators/binary.d.ts.map +1 -0
  110. package/api/operators/binary.js +78 -64
  111. package/api/operators/binary.js.map +1 -1
  112. package/api/operators/chaining.d.ts +1 -0
  113. package/api/operators/chaining.d.ts.map +1 -0
  114. package/api/operators/chaining.js +56 -44
  115. package/api/operators/chaining.js.map +1 -1
  116. package/api/operators/comma.d.ts +1 -0
  117. package/api/operators/comma.d.ts.map +1 -0
  118. package/api/operators/comma.js +53 -41
  119. package/api/operators/comma.js.map +1 -1
  120. package/api/operators/grouping.d.ts +1 -0
  121. package/api/operators/grouping.d.ts.map +1 -0
  122. package/api/operators/grouping.js +51 -39
  123. package/api/operators/grouping.js.map +1 -1
  124. package/api/operators/logical.d.ts +1 -0
  125. package/api/operators/logical.d.ts.map +1 -0
  126. package/api/operators/logical.js +51 -37
  127. package/api/operators/logical.js.map +1 -1
  128. package/api/operators/pipeline.d.ts +1 -0
  129. package/api/operators/pipeline.d.ts.map +1 -0
  130. package/api/operators/pipeline.js +95 -81
  131. package/api/operators/pipeline.js.map +1 -1
  132. package/api/operators/ternary.d.ts +1 -0
  133. package/api/operators/ternary.d.ts.map +1 -0
  134. package/api/operators/ternary.js +69 -55
  135. package/api/operators/ternary.js.map +1 -1
  136. package/api/operators/types.d.ts +1 -0
  137. package/api/operators/types.d.ts.map +1 -0
  138. package/api/operators/unary.d.ts +1 -0
  139. package/api/operators/unary.d.ts.map +1 -0
  140. package/api/operators/unary.js +97 -82
  141. package/api/operators/unary.js.map +1 -1
  142. package/api/operators/update.d.ts +1 -0
  143. package/api/operators/update.d.ts.map +1 -0
  144. package/api/operators/update.js +78 -62
  145. package/api/operators/update.js.map +1 -1
  146. package/api/program.d.ts +1 -0
  147. package/api/program.d.ts.map +1 -0
  148. package/api/program.js +53 -40
  149. package/api/program.js.map +1 -1
  150. package/api/statement/control/block.d.ts +1 -0
  151. package/api/statement/control/block.d.ts.map +1 -0
  152. package/api/statement/control/block.js +65 -53
  153. package/api/statement/control/block.js.map +1 -1
  154. package/api/statement/control/empty.d.ts +1 -1
  155. package/api/statement/control/empty.d.ts.map +1 -0
  156. package/api/statement/control/empty.js +43 -33
  157. package/api/statement/control/empty.js.map +1 -1
  158. package/api/statement/control/if.d.ts +1 -0
  159. package/api/statement/control/if.d.ts.map +1 -0
  160. package/api/statement/control/if.js +79 -65
  161. package/api/statement/control/if.js.map +1 -1
  162. package/api/statement/control/switch.d.ts +1 -0
  163. package/api/statement/control/switch.d.ts.map +1 -0
  164. package/api/statement/control/switch.js +180 -141
  165. package/api/statement/control/switch.js.map +1 -1
  166. package/api/statement/control/terminate.d.ts +1 -2
  167. package/api/statement/control/terminate.d.ts.map +1 -0
  168. package/api/statement/control/terminate.js +117 -78
  169. package/api/statement/control/terminate.js.map +1 -1
  170. package/api/statement/control/with.d.ts +1 -0
  171. package/api/statement/control/with.d.ts.map +1 -0
  172. package/api/statement/control/with.js +72 -59
  173. package/api/statement/control/with.js.map +1 -1
  174. package/api/statement/declarations/declares.d.ts +1 -0
  175. package/api/statement/declarations/declares.d.ts.map +1 -0
  176. package/api/statement/declarations/declares.js +148 -121
  177. package/api/statement/declarations/declares.js.map +1 -1
  178. package/api/statement/iterations/for.d.ts +1 -0
  179. package/api/statement/iterations/for.d.ts.map +1 -0
  180. package/api/statement/iterations/for.js +337 -277
  181. package/api/statement/iterations/for.js.map +1 -1
  182. package/api/statement/iterations/while.d.ts +1 -0
  183. package/api/statement/iterations/while.d.ts.map +1 -0
  184. package/api/statement/iterations/while.js +152 -125
  185. package/api/statement/iterations/while.js.map +1 -1
  186. package/api/utils.d.ts +1 -0
  187. package/api/utils.d.ts.map +1 -0
  188. package/index.d.ts +1 -0
  189. package/index.d.ts.map +1 -0
  190. package/package.json +5 -5
  191. package/scope/builder.d.ts +27 -0
  192. package/scope/builder.d.ts.map +1 -0
  193. package/scope/builder.js +73 -0
  194. package/scope/builder.js.map +1 -0
  195. package/scope/event.d.ts +1 -0
  196. package/scope/event.d.ts.map +1 -0
  197. package/scope/finalizer.d.ts +1 -0
  198. package/scope/finalizer.d.ts.map +1 -0
  199. package/scope/index.d.ts +1 -0
  200. package/scope/index.d.ts.map +1 -0
  201. package/scope/pool.d.ts +1 -0
  202. package/scope/pool.d.ts.map +1 -0
  203. package/scope/proxy.d.ts +1 -0
  204. package/scope/proxy.d.ts.map +1 -0
  205. package/scope/proxy.js +1 -0
  206. package/scope/proxy.js.map +1 -1
  207. package/scope/scope.d.ts +1 -0
  208. package/scope/scope.d.ts.map +1 -0
  209. package/scope/scope.js +17 -11
  210. package/scope/scope.js.map +1 -1
  211. package/scope/stack.d.ts +1 -0
  212. package/scope/stack.d.ts.map +1 -0
  213. package/scope/stack.js +22 -14
  214. package/scope/stack.js.map +1 -1
  215. package/v8/enums.d.ts +1 -0
  216. package/v8/enums.d.ts.map +1 -0
  217. package/v8/enums.js +11 -11
  218. package/v8/enums.js.map +1 -1
  219. package/v8/factory.d.ts +1 -0
  220. package/v8/factory.d.ts.map +1 -0
  221. package/v8/factory.js +3 -1
  222. package/v8/factory.js.map +1 -1
  223. package/v8/index.d.ts +1 -0
  224. package/v8/index.d.ts.map +1 -0
  225. package/v8/inline.d.ts +1 -0
  226. package/v8/inline.d.ts.map +1 -0
  227. package/v8/inline.js +9 -5
  228. package/v8/inline.js.map +1 -1
  229. package/v8/language.d.ts +1 -0
  230. package/v8/language.d.ts.map +1 -0
  231. package/v8/node.d.ts +1 -0
  232. package/v8/node.d.ts.map +1 -0
  233. package/v8/parser.d.ts +1 -0
  234. package/v8/parser.d.ts.map +1 -0
  235. package/v8/parser.js +5 -5
  236. package/v8/parser.js.map +1 -1
  237. package/v8/stream.d.ts +1 -0
  238. package/v8/stream.d.ts.map +1 -0
  239. package/v8/stream.js +17 -7
  240. package/v8/stream.js.map +1 -1
  241. package/v8/token.d.ts +1 -0
  242. package/v8/token.d.ts.map +1 -0
  243. package/v8/token.js +363 -358
  244. package/v8/token.js.map +1 -1
  245. package/visit/index.d.ts +1 -0
  246. package/visit/index.d.ts.map +1 -0
  247. package/visit/visitor.d.ts +1 -0
  248. package/visit/visitor.d.ts.map +1 -0
  249. package/v8/nodes.d.ts +0 -0
  250. package/v8/nodes.js +0 -2
  251. package/v8/nodes.js.map +0 -1
@@ -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, SourceLocation, VisitNodeType\n} from '../expression.js';\nimport { Stack } from '../../scope/stack.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('AssignmentPattern')\nexport class AssignmentPattern extends AbstractExpressionNode implements DeclarationExpression {\n\tstatic fromJSON(node: AssignmentPattern, deserializer: NodeDeserializer): AssignmentPattern {\n\t\treturn new AssignmentPattern(\n\t\t\tdeserializer(node.left) as DeclarationExpression,\n\t\t\tdeserializer(node.right),\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: AssignmentPattern, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.left);\n\t\tvisitNode(node.right);\n\t}\n\tconstructor(\n\t\tprivate left: DeclarationExpression,\n\t\tprivate right: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetLeft() {\n\t\treturn this.left;\n\t}\n\tgetRight() {\n\t\treturn this.right;\n\t}\n\tset(stack: Stack, value?: Function) {\n\t\tthrow new Error('AssignmentPattern#set() has no implementation.');\n\t}\n\tget(stack: Stack) {\n\t\tthrow new Error('AssignmentPattern#get() has no implementation.');\n\t}\n\tdeclareVariable(stack: Stack, value?: any) {\n\t\tif (value === undefined) {\n\t\t\tvalue = this.right.get(stack);\n\t\t}\n\t\tthis.left.declareVariable(stack, value);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn [this.right];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.right.dependencyPath(computed) || [];\n\t}\n\ttoString(): string {\n\t\treturn `${this.left.toString()} = ${this.right.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tleft: this.left.toJSON(),\n\t\t\tright: this.right.toJSON()\n\t\t};\n\t}\n}\n\n@Deserializer('FunctionExpression')\nexport class FunctionExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: FunctionExpression, deserializer: NodeDeserializer): FunctionExpression {\n\t\treturn new FunctionExpression(\n\t\t\tnode.params.map(deserializer) as DeclarationExpression[],\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\tnode.range,\n\t\t\tnode.loc\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: DeclarationExpression[],\n\t\tprotected body: ExpressionNode,\n\t\tprotected async: boolean,\n\t\tprotected generator: boolean,\n\t\tprotected id?: Identifier,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\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\tdefineFunctionArguments(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].declareVariable(stack, args[i]);\n\t\t}\n\t\tif (rest) {\n\t\t\tthis.params[limit].declareVariable(stack, args.slice(limit));\n\t\t}\n\t}\n\tget(stack: Stack) {\n\t\t// freeze scopes\n\t\tstack = stack.copyStack();\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(gStack: Stack) {\n\t\tconst self = this;\n\t\treturn async function (this: any, ...args: any[]) {\n\t\t\tconst stack = gStack.copyStack();\n\t\t\tstack.pushBlockScope();\n\t\t\tstack.declareVariable('this', this);\n\t\t\tstack.declareVariable('super', this?.constructor?.prototype);\n\t\t\tself.defineFunctionArguments(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\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\treturn returnValue;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t}\n\tprivate getGeneratorFunction(gStack: Stack) {\n\t\tconst self = this;\n\t\treturn function* (this: any, ...args: any[]) {\n\t\t\tconst stack = gStack.copyStack();\n\t\t\tstack.pushBlockScope();\n\t\t\tstack.declareVariable('this', this);\n\t\t\tstack.declareVariable('super', this?.constructor?.prototype);\n\t\t\tself.defineFunctionArguments(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\treturnValue = statement.get(stack);\n\t\t\t\tif (returnValue instanceof ReturnValue) {\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};\n\t}\n\tprivate getAsyncGeneratorFunction(gStack: Stack) {\n\t\tconst self = this;\n\t\treturn async function* (this: any, ...args: any[]) {\n\t\t\tconst stack = gStack.copyStack();\n\t\t\tstack.pushBlockScope();\n\t\t\tstack.declareVariable('this', this);\n\t\t\tstack.declareVariable('super', this?.constructor?.prototype);\n\t\t\tself.defineFunctionArguments(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\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 = 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};\n\t}\n\tprivate getFunction(gStack: Stack) {\n\t\tconst self = this;\n\t\treturn function (this: any, ...args: any[]) {\n\t\t\tconst stack = gStack.copyStack();\n\t\t\tstack.pushBlockScope();\n\t\t\tstack.declareVariable('this', this);\n\t\t\tstack.declareVariable('super', this?.constructor?.prototype);\n\t\t\tself.defineFunctionArguments(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\treturnValue = statement.get(stack);\n\t\t\t\tif (returnValue instanceof ReturnValue) {\n\t\t\t\t\treturn returnValue.value;\n\t\t\t\t}\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 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) as DeclarationExpression[],\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\tnode.range,\n\t\t\tnode.loc\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: DeclarationExpression[],\n\t\tbody: ExpressionNode,\n\t\tasync: boolean,\n\t\tgenerator: boolean,\n\t\tid: Identifier,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(params, body, async, generator, id, range, loc);\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 AbstractExpressionNode {\n\tstatic fromJSON(node: ArrowFunctionExpression, deserializer: NodeDeserializer): ArrowFunctionExpression {\n\t\treturn new ArrowFunctionExpression(\n\t\t\tnode.params.map(deserializer) as DeclarationExpression[],\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\tnode.range,\n\t\t\tnode.loc\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: DeclarationExpression[],\n\t\tprivate body: ExpressionNode | ExpressionNode[],\n\t\tprivate expression: boolean,\n\t\tprivate async: boolean,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\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].declareVariable(stack, args[i]);\n\t\t}\n\t\tif (rest) {\n\t\t\tthis.params[limit].declareVariable(stack, args.slice(limit));\n\t\t}\n\t}\n\tget(stack: Stack) {\n\t\t// freeze stack\n\t\tstack = stack.copyStack();\n\t\treturn this.async ? this.getAsyncArrowFunction(stack) : this.getArrowFunction(stack);\n\t}\n\tprivate getAsyncArrowFunction(gStack: Stack) {\n\t\tasync (...args: any[]) => {\n\t\t\tconst stack = gStack.copyStack();\n\t\t\tstack.pushBlockScope();\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\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\treturn await returnValue.promise;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.expression) {\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t};\n\t}\n\tprivate getArrowFunction(gStack: Stack) {\n\t\treturn (...args: any[]) => {\n\t\t\tconst stack = gStack.copyStack();\n\t\t\tstack.pushBlockScope();\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\treturnValue = statement.get(stack);\n\t\t\t\tif (returnValue instanceof ReturnValue) {\n\t\t\t\t\treturn returnValue.value;\n\t\t\t\t}\n\t\t\t}\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, SourceLocation, VisitNodeType\n} from '../expression.js';\nimport { Stack } from '../../scope/stack.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('AssignmentPattern')\nexport class AssignmentPattern extends AbstractExpressionNode implements DeclarationExpression {\n\tstatic fromJSON(node: AssignmentPattern, deserializer: NodeDeserializer): AssignmentPattern {\n\t\treturn new AssignmentPattern(\n\t\t\tdeserializer(node.left) as DeclarationExpression,\n\t\t\tdeserializer(node.right),\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: AssignmentPattern, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.left);\n\t\tvisitNode(node.right);\n\t}\n\tconstructor(\n\t\tprivate left: DeclarationExpression,\n\t\tprivate right: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetLeft() {\n\t\treturn this.left;\n\t}\n\tgetRight() {\n\t\treturn this.right;\n\t}\n\tset(stack: Stack, value?: Function) {\n\t\tthrow new Error('AssignmentPattern#set() has no implementation.');\n\t}\n\tget(stack: Stack) {\n\t\tthrow new Error('AssignmentPattern#get() has no implementation.');\n\t}\n\tdeclareVariable(stack: Stack, value?: any) {\n\t\tif (value === undefined) {\n\t\t\tvalue = this.right.get(stack);\n\t\t}\n\t\tthis.left.declareVariable(stack, value);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn [this.right];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.right.dependencyPath(computed) || [];\n\t}\n\ttoString(): string {\n\t\treturn `${this.left.toString()} = ${this.right.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tleft: this.left.toJSON(),\n\t\t\tright: this.right.toJSON()\n\t\t};\n\t}\n}\n\n@Deserializer('FunctionExpression')\nexport class FunctionExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: FunctionExpression, deserializer: NodeDeserializer): FunctionExpression {\n\t\treturn new FunctionExpression(\n\t\t\tnode.params.map(deserializer) as DeclarationExpression[],\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\tnode.range,\n\t\t\tnode.loc\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: DeclarationExpression[],\n\t\tprotected body: ExpressionNode,\n\t\tprotected async: boolean,\n\t\tprotected generator: boolean,\n\t\tprotected id?: Identifier,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\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\tdefineFunctionArguments(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].declareVariable(stack, args[i]);\n\t\t}\n\t\tif (rest) {\n\t\t\tthis.params[limit].declareVariable(stack, args.slice(limit));\n\t\t}\n\t}\n\tget(stack: Stack) {\n\t\t// freeze scopes\n\t\tstack = stack.copyStack();\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(gStack: Stack) {\n\t\tconst self = this;\n\t\treturn async function (this: any, ...args: any[]) {\n\t\t\tconst stack = gStack.copyStack();\n\t\t\tstack.pushBlockScope();\n\t\t\tstack.declareVariable('this', this);\n\t\t\tstack.declareVariable('super', this?.constructor?.prototype);\n\t\t\tself.defineFunctionArguments(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\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\treturn returnValue;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t}\n\tprivate getGeneratorFunction(gStack: Stack) {\n\t\tconst self = this;\n\t\treturn function* (this: any, ...args: any[]) {\n\t\t\tconst stack = gStack.copyStack();\n\t\t\tstack.pushBlockScope();\n\t\t\tstack.declareVariable('this', this);\n\t\t\tstack.declareVariable('super', this?.constructor?.prototype);\n\t\t\tself.defineFunctionArguments(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\treturnValue = statement.get(stack);\n\t\t\t\tif (returnValue instanceof ReturnValue) {\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};\n\t}\n\tprivate getAsyncGeneratorFunction(gStack: Stack) {\n\t\tconst self = this;\n\t\treturn async function* (this: any, ...args: any[]) {\n\t\t\tconst stack = gStack.copyStack();\n\t\t\tstack.pushBlockScope();\n\t\t\tstack.declareVariable('this', this);\n\t\t\tstack.declareVariable('super', this?.constructor?.prototype);\n\t\t\tself.defineFunctionArguments(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\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 = 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};\n\t}\n\tprivate getFunction(gStack: Stack) {\n\t\tconst self = this;\n\t\treturn function (this: any, ...args: any[]) {\n\t\t\tconst stack = gStack.copyStack();\n\t\t\tstack.pushBlockScope();\n\t\t\tstack.declareVariable('this', this);\n\t\t\tstack.declareVariable('super', this?.constructor?.prototype);\n\t\t\tself.defineFunctionArguments(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\treturnValue = statement.get(stack);\n\t\t\t\tif (returnValue instanceof ReturnValue) {\n\t\t\t\t\treturn returnValue.value;\n\t\t\t\t}\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 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) as DeclarationExpression[],\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\tnode.range,\n\t\t\tnode.loc\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: DeclarationExpression[],\n\t\tbody: ExpressionNode,\n\t\tasync: boolean,\n\t\tgenerator: boolean,\n\t\tid: Identifier,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(params, body, async, generator, id, range, loc);\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 AbstractExpressionNode {\n\tstatic fromJSON(node: ArrowFunctionExpression, deserializer: NodeDeserializer): ArrowFunctionExpression {\n\t\treturn new ArrowFunctionExpression(\n\t\t\tnode.params.map(deserializer) as DeclarationExpression[],\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\tnode.range,\n\t\t\tnode.loc\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: DeclarationExpression[],\n\t\tprivate body: ExpressionNode | ExpressionNode[],\n\t\tprivate expression: boolean,\n\t\tprivate async: boolean,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\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].declareVariable(stack, args[i]);\n\t\t}\n\t\tif (rest) {\n\t\t\tthis.params[limit].declareVariable(stack, args.slice(limit));\n\t\t}\n\t}\n\tget(stack: Stack) {\n\t\t// freeze stack\n\t\tstack = stack.copyStack();\n\t\treturn this.async ? this.getAsyncArrowFunction(stack) : this.getArrowFunction(stack);\n\t}\n\tprivate getAsyncArrowFunction(gStack: Stack) {\n\t\tasync (...args: any[]) => {\n\t\t\tconst stack = gStack.copyStack();\n\t\t\tstack.pushBlockScope();\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\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\treturn await returnValue.promise;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.expression) {\n\t\t\t\treturn returnValue;\n\t\t\t}\n\t\t};\n\t}\n\tprivate getArrowFunction(gStack: Stack) {\n\t\treturn (...args: any[]) => {\n\t\t\tconst stack = gStack.copyStack();\n\t\t\tstack.pushBlockScope();\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\treturnValue = statement.get(stack);\n\t\t\t\tif (returnValue instanceof ReturnValue) {\n\t\t\t\t\treturn returnValue.value;\n\t\t\t\t}\n\t\t\t}\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"]}
@@ -21,3 +21,4 @@ export declare class MemberExpression extends AbstractExpressionNode implements
21
21
  toString(): string;
22
22
  toJson(): object;
23
23
  }
24
+ //# sourceMappingURL=member.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"member.d.ts","sourceRoot":"","sources":["../../../../src/expressions/api/definition/member.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAC9C,mBAAmB,EAAE,aAAa,EAAE,cAAc,EAClD,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,KAAK,EAAW,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAGxD,qBACa,gBAAiB,SAAQ,sBAAuB,YAAW,YAAY;IAgBlF,SAAS,CAAC,MAAM,EAAE,cAAc;IAChC,SAAS,CAAC,QAAQ,EAAE,cAAc;IAClC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ;IAlBjB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,GAAG,gBAAgB;IAUzF,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,GAAG,IAAI;gBAKzD,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,cAAc,EAC1B,QAAQ,EAAE,OAAO,EACjB,QAAQ,GAAE,OAAe,EACjC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACxB,GAAG,CAAC,EAAE,cAAc;IAGrB,SAAS;IAGT,WAAW;IAGX,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG;IAe5B,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,GAAG;IAgBnC,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;IACnD,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAOtE,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,cAAc,EAAE;IAG7C,cAAc,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,mBAAmB,EAAE;IAetD,QAAQ;IAMR,MAAM,IAAI,MAAM;CAQhB"}
@@ -1,104 +1,119 @@
1
- var MemberExpression_1;
2
- import { __decorate, __metadata } from "tslib";
1
+ import { __esDecorate, __runInitializers } from "tslib";
3
2
  import { Deserializer } from '../deserialize/deserialize.js';
4
3
  import { AbstractExpressionNode } from '../abstract.js';
5
4
  import { Identifier } from './values.js';
6
- let MemberExpression = MemberExpression_1 = class MemberExpression extends AbstractExpressionNode {
7
- static fromJSON(node, deserializer) {
8
- return new MemberExpression_1(deserializer(node.object), deserializer(node.property), node.computed, node.optional, node.range, node.loc);
9
- }
10
- static visit(node, visitNode) {
11
- visitNode(node.object);
12
- visitNode(node.property);
13
- }
14
- constructor(object, property, computed, optional = false, range, loc) {
15
- super(range, loc);
16
- this.object = object;
17
- this.property = property;
18
- this.computed = computed;
19
- this.optional = optional;
20
- }
21
- getObject() {
22
- return this.object;
23
- }
24
- getProperty() {
25
- return this.property;
26
- }
27
- set(stack, value) {
28
- const objectScope = this.object.findScope(stack);
29
- let propertyKey;
30
- if (this.computed) {
31
- propertyKey = this.property.get(stack);
32
- objectScope.set(propertyKey, value);
5
+ let MemberExpression = (() => {
6
+ let _classDecorators = [Deserializer('MemberExpression')];
7
+ let _classDescriptor;
8
+ let _classExtraInitializers = [];
9
+ let _classThis;
10
+ let _classSuper = AbstractExpressionNode;
11
+ var MemberExpression = class extends _classSuper {
12
+ static { _classThis = this; }
13
+ static {
14
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
15
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
16
+ MemberExpression = _classThis = _classDescriptor.value;
17
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
18
+ __runInitializers(_classThis, _classExtraInitializers);
33
19
  }
34
- else if (this.property instanceof Identifier) {
35
- objectScope.set(this.property.getName(), value);
20
+ object;
21
+ property;
22
+ computed;
23
+ optional;
24
+ static fromJSON(node, deserializer) {
25
+ return new MemberExpression(deserializer(node.object), deserializer(node.property), node.computed, node.optional, node.range, node.loc);
36
26
  }
37
- else {
38
- stack.pushScope(objectScope);
39
- this.property.set(stack, value);
40
- stack.clearTo(objectScope);
27
+ static visit(node, visitNode) {
28
+ visitNode(node.object);
29
+ visitNode(node.property);
41
30
  }
42
- return value;
43
- }
44
- get(stack, thisContext) {
45
- const objectRef = thisContext ?? this.object.get(stack);
46
- if (objectRef === undefined || objectRef === null) {
47
- if (this.optional) {
48
- return;
31
+ constructor(object, property, computed, optional = false, range, loc) {
32
+ super(range, loc);
33
+ this.object = object;
34
+ this.property = property;
35
+ this.computed = computed;
36
+ this.optional = optional;
37
+ }
38
+ getObject() {
39
+ return this.object;
40
+ }
41
+ getProperty() {
42
+ return this.property;
43
+ }
44
+ set(stack, value) {
45
+ const objectScope = this.object.findScope(stack);
46
+ let propertyKey;
47
+ if (this.computed) {
48
+ propertyKey = this.property.get(stack);
49
+ objectScope.set(propertyKey, value);
50
+ }
51
+ else if (this.property instanceof Identifier) {
52
+ objectScope.set(this.property.getName(), value);
53
+ }
54
+ else {
55
+ stack.pushScope(objectScope);
56
+ this.property.set(stack, value);
57
+ stack.clearTo(objectScope);
58
+ }
59
+ return value;
60
+ }
61
+ get(stack, thisContext) {
62
+ const objectRef = thisContext ?? this.object.get(stack);
63
+ if (objectRef === undefined || objectRef === null) {
64
+ if (this.optional) {
65
+ return;
66
+ }
67
+ throw new TypeError(`Cannot read property '${this.property.toString()}' of ${objectRef}, reading [${this.toString()}]`);
49
68
  }
50
- throw new TypeError(`Cannot read property '${this.property.toString()}' of ${objectRef}, reading [${this.toString()}]`);
69
+ let value;
70
+ if (this.computed) {
71
+ value = objectRef[this.property.get(stack)];
72
+ }
73
+ else {
74
+ value = this.property.get(stack, objectRef);
75
+ }
76
+ return value;
51
77
  }
52
- let value;
53
- if (this.computed) {
54
- value = objectRef[this.property.get(stack)];
78
+ findScope(stack, objectScope) {
79
+ if (!objectScope) {
80
+ objectScope = this.object.findScope(stack);
81
+ }
82
+ return this.property.findScope(stack, objectScope);
55
83
  }
56
- else {
57
- value = this.property.get(stack, objectRef);
84
+ dependency(computed) {
85
+ return [this];
58
86
  }
59
- return value;
60
- }
61
- findScope(stack, objectScope) {
62
- if (!objectScope) {
63
- objectScope = this.object.findScope(stack);
87
+ dependencyPath(computed) {
88
+ if (this.computed) {
89
+ const objPath = this.object.dependencyPath(computed);
90
+ const propertyDependency = this.property.dependency(true);
91
+ const propertyDependencyPath = propertyDependency.map(exp => exp.dependencyPath(true));
92
+ const computedPath = {
93
+ computed: true,
94
+ path: ':' + propertyDependencyPath.flatMap(paths => paths).map(prop => prop.path).join(':'),
95
+ computedPath: propertyDependencyPath.flatMap(paths => paths.flatMap(prop => prop.computed ? prop.computedPath : [])),
96
+ };
97
+ return objPath.concat(computedPath);
98
+ }
99
+ return this.object.dependencyPath(computed).concat(this.property.dependencyPath(computed));
64
100
  }
65
- return this.property.findScope(stack, objectScope);
66
- }
67
- dependency(computed) {
68
- return [this];
69
- }
70
- dependencyPath(computed) {
71
- if (this.computed) {
72
- const objPath = this.object.dependencyPath(computed);
73
- const propertyDependency = this.property.dependency(true);
74
- const propertyDependencyPath = propertyDependency.map(exp => exp.dependencyPath(true));
75
- const computedPath = {
76
- computed: true,
77
- path: ':' + propertyDependencyPath.flatMap(paths => paths).map(prop => prop.path).join(':'),
78
- computedPath: propertyDependencyPath.flatMap(paths => paths.flatMap(prop => prop.computed ? prop.computedPath : [])),
79
- };
80
- return objPath.concat(computedPath);
101
+ toString() {
102
+ if (this.computed) {
103
+ return `${this.object.toString()}${this.optional ? '?.' : ''}[${this.property.toString()}]`;
104
+ }
105
+ return `${this.object.toString()}${this.optional ? '?.' : '.'}${this.property.toString()}`;
81
106
  }
82
- return this.object.dependencyPath(computed).concat(this.property.dependencyPath(computed));
83
- }
84
- toString() {
85
- if (this.computed) {
86
- return `${this.object.toString()}${this.optional ? '?.' : ''}[${this.property.toString()}]`;
107
+ toJson() {
108
+ return {
109
+ object: this.object.toJSON(),
110
+ property: this.property.toJSON(),
111
+ computed: this.computed,
112
+ optional: this.optional
113
+ };
87
114
  }
88
- return `${this.object.toString()}${this.optional ? '?.' : '.'}${this.property.toString()}`;
89
- }
90
- toJson() {
91
- return {
92
- object: this.object.toJSON(),
93
- property: this.property.toJSON(),
94
- computed: this.computed,
95
- optional: this.optional
96
- };
97
- }
98
- };
99
- MemberExpression = MemberExpression_1 = __decorate([
100
- Deserializer('MemberExpression'),
101
- __metadata("design:paramtypes", [Object, Object, Boolean, Boolean, Array, Object])
102
- ], MemberExpression);
115
+ };
116
+ return MemberExpression = _classThis;
117
+ })();
103
118
  export { MemberExpression };
104
119
  //# sourceMappingURL=member.js.map
@@ -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;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGlC,IAAM,gBAAgB,wBAAtB,MAAM,gBAAiB,SAAQ,sBAAsB;IAC3D,MAAM,CAAC,QAAQ,CAAC,IAAsB,EAAE,YAA8B;QACrE,OAAO,IAAI,kBAAgB,CAC1B,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EACzB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC3B,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,CACR,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAsB,EAAE,SAAwB;QAC5D,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IACD,YACW,MAAsB,EACtB,QAAwB,EAC1B,QAAiB,EACjB,WAAoB,KAAK,EACjC,KAAwB,EACxB,GAAoB;QACpB,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QANR,WAAM,GAAN,MAAM,CAAgB;QACtB,aAAQ,GAAR,QAAQ,CAAgB;QAC1B,aAAQ,GAAR,QAAQ,CAAS;QACjB,aAAQ,GAAR,QAAQ,CAAiB;IAIlC,CAAC;IACD,SAAS;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,WAAW,GAAI,IAAI,CAAC,MAAwC,CAAC,SAAS,CAAU,KAAK,CAAC,CAAC;QAC7F,IAAI,WAAwB,CAAC;QAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;SACpC;aAAM,IAAI,IAAI,CAAC,QAAQ,YAAY,UAAU,EAAE;YAC/C,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;SAChD;aAAM;YACN,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAC7B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAChC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;SAC3B;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,WAAiB;QAClC,MAAM,SAAS,GAAG,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE;YAClD,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAClB,OAAO;aACP;YACD,MAAM,IAAI,SAAS,CAAC,yBAAyB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,SAAS,cAAc,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;SACxH;QACD,IAAI,KAAK,CAAC;QACV,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;SAC5C;aAAM;YACN,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;SAC5C;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAGD,SAAS,CAAmB,KAAY,EAAE,WAAwB;QACjE,IAAI,CAAC,WAAW,EAAE;YACjB,WAAW,GAAI,IAAI,CAAC,MAAwC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAC9E;QACD,OAAQ,IAAI,CAAC,QAA0C,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACvF,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC1D,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;YAEvF,MAAM,YAAY,GAAwB;gBACzC,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC3F,YAAY,EAAE,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aACpH,CAAC;YACF,OAAO,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SACpC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5F,CAAC;IACD,QAAQ;QACP,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC;SAC5F;QACD,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC5F,CAAC;IACD,MAAM;QACL,OAAO;YACN,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC;IACH,CAAC;CACD,CAAA;AArGY,gBAAgB;IAD5B,YAAY,CAAC,kBAAkB,CAAC;;GACpB,gBAAgB,CAqG5B;SArGY,gBAAgB","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, CanFindScope,\n\tExpressionEventPath, VisitNodeType, SourceLocation\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';\nimport { Identifier } from './values.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\tnode.range,\n\t\t\tnode.loc\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\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetObject() {\n\t\treturn this.object;\n\t}\n\tgetProperty() {\n\t\treturn this.property;\n\t}\n\tset(stack: Stack, 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 if (this.property instanceof Identifier) {\n\t\t\tobjectScope.set(this.property.getName(), 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}, reading [${this.toString()}]`);\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
+ {"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, SourceLocation\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';\nimport { Identifier } from './values.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\tnode.range,\n\t\t\tnode.loc\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\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetObject() {\n\t\treturn this.object;\n\t}\n\tgetProperty() {\n\t\treturn this.property;\n\t}\n\tset(stack: Stack, 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 if (this.property instanceof Identifier) {\n\t\t\tobjectScope.set(this.property.getName(), 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}, reading [${this.toString()}]`);\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"]}
@@ -50,3 +50,4 @@ export declare class ObjectPattern extends AbstractExpressionNode implements Dec
50
50
  toString(): string;
51
51
  toJson(): object;
52
52
  }
53
+ //# sourceMappingURL=object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../../../src/expressions/api/definition/object.ts"],"names":[],"mappings":"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"}