@engine262/engine262 0.0.1-0574c6b92a2925de851f895445b7cfd7e97cc0ba

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 (993) hide show
  1. package/LICENSE +19 -0
  2. package/README.md +149 -0
  3. package/bin/engine262.js +5 -0
  4. package/declaration/abstract-ops/all.d.mts +36 -0
  5. package/declaration/abstract-ops/all.d.mts.map +1 -0
  6. package/declaration/abstract-ops/arguments-operations.d.mts +14 -0
  7. package/declaration/abstract-ops/arguments-operations.d.mts.map +1 -0
  8. package/declaration/abstract-ops/array-objects.d.mts +15 -0
  9. package/declaration/abstract-ops/array-objects.d.mts.map +1 -0
  10. package/declaration/abstract-ops/arraybuffer-objects.d.mts +41 -0
  11. package/declaration/abstract-ops/arraybuffer-objects.d.mts.map +1 -0
  12. package/declaration/abstract-ops/async-function-operations.d.mts +7 -0
  13. package/declaration/abstract-ops/async-function-operations.d.mts.map +1 -0
  14. package/declaration/abstract-ops/async-generator-objects.d.mts +39 -0
  15. package/declaration/abstract-ops/async-generator-objects.d.mts.map +1 -0
  16. package/declaration/abstract-ops/data-types-and-values.d.mts +6 -0
  17. package/declaration/abstract-ops/data-types-and-values.d.mts.map +1 -0
  18. package/declaration/abstract-ops/dataview-objects.d.mts +32 -0
  19. package/declaration/abstract-ops/dataview-objects.d.mts.map +1 -0
  20. package/declaration/abstract-ops/date-objects.d.mts +46 -0
  21. package/declaration/abstract-ops/date-objects.d.mts.map +1 -0
  22. package/declaration/abstract-ops/error-objects.d.mts +8 -0
  23. package/declaration/abstract-ops/error-objects.d.mts.map +1 -0
  24. package/declaration/abstract-ops/execution-contexts.d.mts +22 -0
  25. package/declaration/abstract-ops/execution-contexts.d.mts.map +1 -0
  26. package/declaration/abstract-ops/function-operations.d.mts +96 -0
  27. package/declaration/abstract-ops/function-operations.d.mts.map +1 -0
  28. package/declaration/abstract-ops/generator-operations.d.mts +39 -0
  29. package/declaration/abstract-ops/generator-operations.d.mts.map +1 -0
  30. package/declaration/abstract-ops/global-object.d.mts +12 -0
  31. package/declaration/abstract-ops/global-object.d.mts.map +1 -0
  32. package/declaration/abstract-ops/immutable-prototype-objects.d.mts +7 -0
  33. package/declaration/abstract-ops/immutable-prototype-objects.d.mts.map +1 -0
  34. package/declaration/abstract-ops/import-calls.d.mts +5 -0
  35. package/declaration/abstract-ops/import-calls.d.mts.map +1 -0
  36. package/declaration/abstract-ops/iterator-operations.d.mts +54 -0
  37. package/declaration/abstract-ops/iterator-operations.d.mts.map +1 -0
  38. package/declaration/abstract-ops/keyed-collections.d.mts +4 -0
  39. package/declaration/abstract-ops/keyed-collections.d.mts.map +1 -0
  40. package/declaration/abstract-ops/module-namespace-exotic-objects.d.mts +16 -0
  41. package/declaration/abstract-ops/module-namespace-exotic-objects.d.mts.map +1 -0
  42. package/declaration/abstract-ops/module-records.d.mts +38 -0
  43. package/declaration/abstract-ops/module-records.d.mts.map +1 -0
  44. package/declaration/abstract-ops/notational-conventions.d.mts +14 -0
  45. package/declaration/abstract-ops/notational-conventions.d.mts.map +1 -0
  46. package/declaration/abstract-ops/object-operations.d.mts +91 -0
  47. package/declaration/abstract-ops/object-operations.d.mts.map +1 -0
  48. package/declaration/abstract-ops/objects.d.mts +31 -0
  49. package/declaration/abstract-ops/objects.d.mts.map +1 -0
  50. package/declaration/abstract-ops/private-names.d.mts +36 -0
  51. package/declaration/abstract-ops/private-names.d.mts.map +1 -0
  52. package/declaration/abstract-ops/promise-operations.d.mts +63 -0
  53. package/declaration/abstract-ops/promise-operations.d.mts.map +1 -0
  54. package/declaration/abstract-ops/proxy-objects.d.mts +6 -0
  55. package/declaration/abstract-ops/proxy-objects.d.mts.map +1 -0
  56. package/declaration/abstract-ops/realms.d.mts +173 -0
  57. package/declaration/abstract-ops/realms.d.mts.map +1 -0
  58. package/declaration/abstract-ops/reference-operations.d.mts +30 -0
  59. package/declaration/abstract-ops/reference-operations.d.mts.map +1 -0
  60. package/declaration/abstract-ops/regexp-objects.d.mts +40 -0
  61. package/declaration/abstract-ops/regexp-objects.d.mts.map +1 -0
  62. package/declaration/abstract-ops/shared-arraybuffer.d.mts +4 -0
  63. package/declaration/abstract-ops/shared-arraybuffer.d.mts.map +1 -0
  64. package/declaration/abstract-ops/spec-types.d.mts +34 -0
  65. package/declaration/abstract-ops/spec-types.d.mts.map +1 -0
  66. package/declaration/abstract-ops/string-objects.d.mts +8 -0
  67. package/declaration/abstract-ops/string-objects.d.mts.map +1 -0
  68. package/declaration/abstract-ops/symbol-objects.d.mts +6 -0
  69. package/declaration/abstract-ops/symbol-objects.d.mts.map +1 -0
  70. package/declaration/abstract-ops/testing-comparison.d.mts +47 -0
  71. package/declaration/abstract-ops/testing-comparison.d.mts.map +1 -0
  72. package/declaration/abstract-ops/type-conversion.d.mts +56 -0
  73. package/declaration/abstract-ops/type-conversion.d.mts.map +1 -0
  74. package/declaration/abstract-ops/typedarray-objects.d.mts +33 -0
  75. package/declaration/abstract-ops/typedarray-objects.d.mts.map +1 -0
  76. package/declaration/abstract-ops/weak-operations.d.mts +12 -0
  77. package/declaration/abstract-ops/weak-operations.d.mts.map +1 -0
  78. package/declaration/api.d.mts +71 -0
  79. package/declaration/api.d.mts.map +1 -0
  80. package/declaration/completion.d.mts +165 -0
  81. package/declaration/completion.d.mts.map +1 -0
  82. package/declaration/environment.d.mts +201 -0
  83. package/declaration/environment.d.mts.map +1 -0
  84. package/declaration/evaluator.d.mts +42 -0
  85. package/declaration/evaluator.d.mts.map +1 -0
  86. package/declaration/helpers.d.mts +103 -0
  87. package/declaration/helpers.d.mts.map +1 -0
  88. package/declaration/host-defined/debugger-eval.d.mts +3 -0
  89. package/declaration/host-defined/debugger-eval.d.mts.map +1 -0
  90. package/declaration/host-defined/debugger-util.d.mts +2 -0
  91. package/declaration/host-defined/debugger-util.d.mts.map +1 -0
  92. package/declaration/host-defined/engine.d.mts +178 -0
  93. package/declaration/host-defined/engine.d.mts.map +1 -0
  94. package/declaration/host-defined/inspect.d.mts +4 -0
  95. package/declaration/host-defined/inspect.d.mts.map +1 -0
  96. package/declaration/host-defined/test262-intrinsics.d.mts +8 -0
  97. package/declaration/host-defined/test262-intrinsics.d.mts.map +1 -0
  98. package/declaration/index.d.mts +32 -0
  99. package/declaration/index.d.mts.map +1 -0
  100. package/declaration/intrinsics/AggregateError.d.mts +3 -0
  101. package/declaration/intrinsics/AggregateError.d.mts.map +1 -0
  102. package/declaration/intrinsics/AggregateErrorPrototype.d.mts +3 -0
  103. package/declaration/intrinsics/AggregateErrorPrototype.d.mts.map +1 -0
  104. package/declaration/intrinsics/Array.d.mts +3 -0
  105. package/declaration/intrinsics/Array.d.mts.map +1 -0
  106. package/declaration/intrinsics/ArrayBuffer.d.mts +3 -0
  107. package/declaration/intrinsics/ArrayBuffer.d.mts.map +1 -0
  108. package/declaration/intrinsics/ArrayBufferPrototype.d.mts +3 -0
  109. package/declaration/intrinsics/ArrayBufferPrototype.d.mts.map +1 -0
  110. package/declaration/intrinsics/ArrayIteratorPrototype.d.mts +3 -0
  111. package/declaration/intrinsics/ArrayIteratorPrototype.d.mts.map +1 -0
  112. package/declaration/intrinsics/ArrayPrototype.d.mts +3 -0
  113. package/declaration/intrinsics/ArrayPrototype.d.mts.map +1 -0
  114. package/declaration/intrinsics/ArrayPrototypeShared.d.mts +11 -0
  115. package/declaration/intrinsics/ArrayPrototypeShared.d.mts.map +1 -0
  116. package/declaration/intrinsics/AsyncFromSyncIteratorPrototype.d.mts +6 -0
  117. package/declaration/intrinsics/AsyncFromSyncIteratorPrototype.d.mts.map +1 -0
  118. package/declaration/intrinsics/AsyncFunction.d.mts +3 -0
  119. package/declaration/intrinsics/AsyncFunction.d.mts.map +1 -0
  120. package/declaration/intrinsics/AsyncFunctionPrototype.d.mts +3 -0
  121. package/declaration/intrinsics/AsyncFunctionPrototype.d.mts.map +1 -0
  122. package/declaration/intrinsics/AsyncGeneratorFunction.d.mts +3 -0
  123. package/declaration/intrinsics/AsyncGeneratorFunction.d.mts.map +1 -0
  124. package/declaration/intrinsics/AsyncGeneratorFunctionPrototype.d.mts +3 -0
  125. package/declaration/intrinsics/AsyncGeneratorFunctionPrototype.d.mts.map +1 -0
  126. package/declaration/intrinsics/AsyncGeneratorFunctionPrototypePrototype.d.mts +3 -0
  127. package/declaration/intrinsics/AsyncGeneratorFunctionPrototypePrototype.d.mts.map +1 -0
  128. package/declaration/intrinsics/AsyncIteratorPrototype.d.mts +3 -0
  129. package/declaration/intrinsics/AsyncIteratorPrototype.d.mts.map +1 -0
  130. package/declaration/intrinsics/BigInt.d.mts +8 -0
  131. package/declaration/intrinsics/BigInt.d.mts.map +1 -0
  132. package/declaration/intrinsics/BigIntPrototype.d.mts +3 -0
  133. package/declaration/intrinsics/BigIntPrototype.d.mts.map +1 -0
  134. package/declaration/intrinsics/Boolean.d.mts +8 -0
  135. package/declaration/intrinsics/Boolean.d.mts.map +1 -0
  136. package/declaration/intrinsics/BooleanPrototype.d.mts +3 -0
  137. package/declaration/intrinsics/BooleanPrototype.d.mts.map +1 -0
  138. package/declaration/intrinsics/DataView.d.mts +11 -0
  139. package/declaration/intrinsics/DataView.d.mts.map +1 -0
  140. package/declaration/intrinsics/DataViewPrototype.d.mts +3 -0
  141. package/declaration/intrinsics/DataViewPrototype.d.mts.map +1 -0
  142. package/declaration/intrinsics/Date.d.mts +8 -0
  143. package/declaration/intrinsics/Date.d.mts.map +1 -0
  144. package/declaration/intrinsics/DatePrototype.d.mts +12 -0
  145. package/declaration/intrinsics/DatePrototype.d.mts.map +1 -0
  146. package/declaration/intrinsics/Error.d.mts +10 -0
  147. package/declaration/intrinsics/Error.d.mts.map +1 -0
  148. package/declaration/intrinsics/ErrorPrototype.d.mts +3 -0
  149. package/declaration/intrinsics/ErrorPrototype.d.mts.map +1 -0
  150. package/declaration/intrinsics/FinalizationRegistry.d.mts +16 -0
  151. package/declaration/intrinsics/FinalizationRegistry.d.mts.map +1 -0
  152. package/declaration/intrinsics/FinalizationRegistryPrototype.d.mts +3 -0
  153. package/declaration/intrinsics/FinalizationRegistryPrototype.d.mts.map +1 -0
  154. package/declaration/intrinsics/ForInIteratorPrototype.d.mts +13 -0
  155. package/declaration/intrinsics/ForInIteratorPrototype.d.mts.map +1 -0
  156. package/declaration/intrinsics/Function.d.mts +3 -0
  157. package/declaration/intrinsics/Function.d.mts.map +1 -0
  158. package/declaration/intrinsics/FunctionPrototype.d.mts +13 -0
  159. package/declaration/intrinsics/FunctionPrototype.d.mts.map +1 -0
  160. package/declaration/intrinsics/GeneratorFunction.d.mts +3 -0
  161. package/declaration/intrinsics/GeneratorFunction.d.mts.map +1 -0
  162. package/declaration/intrinsics/GeneratorFunctionPrototype.d.mts +3 -0
  163. package/declaration/intrinsics/GeneratorFunctionPrototype.d.mts.map +1 -0
  164. package/declaration/intrinsics/GeneratorFunctionPrototypePrototype.d.mts +3 -0
  165. package/declaration/intrinsics/GeneratorFunctionPrototypePrototype.d.mts.map +1 -0
  166. package/declaration/intrinsics/Iterator.d.mts +3 -0
  167. package/declaration/intrinsics/Iterator.d.mts.map +1 -0
  168. package/declaration/intrinsics/IteratorHelperPrototype.d.mts +3 -0
  169. package/declaration/intrinsics/IteratorHelperPrototype.d.mts.map +1 -0
  170. package/declaration/intrinsics/IteratorPrototype.d.mts +3 -0
  171. package/declaration/intrinsics/IteratorPrototype.d.mts.map +1 -0
  172. package/declaration/intrinsics/JSON.d.mts +9 -0
  173. package/declaration/intrinsics/JSON.d.mts.map +1 -0
  174. package/declaration/intrinsics/Map.d.mts +13 -0
  175. package/declaration/intrinsics/Map.d.mts.map +1 -0
  176. package/declaration/intrinsics/MapIteratorPrototype.d.mts +7 -0
  177. package/declaration/intrinsics/MapIteratorPrototype.d.mts.map +1 -0
  178. package/declaration/intrinsics/MapPrototype.d.mts +3 -0
  179. package/declaration/intrinsics/MapPrototype.d.mts.map +1 -0
  180. package/declaration/intrinsics/Math.d.mts +4 -0
  181. package/declaration/intrinsics/Math.d.mts.map +1 -0
  182. package/declaration/intrinsics/NativeError.d.mts +6 -0
  183. package/declaration/intrinsics/NativeError.d.mts.map +1 -0
  184. package/declaration/intrinsics/Number.d.mts +7 -0
  185. package/declaration/intrinsics/Number.d.mts.map +1 -0
  186. package/declaration/intrinsics/NumberPrototype.d.mts +3 -0
  187. package/declaration/intrinsics/NumberPrototype.d.mts.map +1 -0
  188. package/declaration/intrinsics/Object.d.mts +3 -0
  189. package/declaration/intrinsics/Object.d.mts.map +1 -0
  190. package/declaration/intrinsics/ObjectPrototype.d.mts +5 -0
  191. package/declaration/intrinsics/ObjectPrototype.d.mts.map +1 -0
  192. package/declaration/intrinsics/Promise.d.mts +16 -0
  193. package/declaration/intrinsics/Promise.d.mts.map +1 -0
  194. package/declaration/intrinsics/PromisePrototype.d.mts +3 -0
  195. package/declaration/intrinsics/PromisePrototype.d.mts.map +1 -0
  196. package/declaration/intrinsics/Proxy.d.mts +12 -0
  197. package/declaration/intrinsics/Proxy.d.mts.map +1 -0
  198. package/declaration/intrinsics/Reflect.d.mts +3 -0
  199. package/declaration/intrinsics/Reflect.d.mts.map +1 -0
  200. package/declaration/intrinsics/RegExp.d.mts +14 -0
  201. package/declaration/intrinsics/RegExp.d.mts.map +1 -0
  202. package/declaration/intrinsics/RegExpPrototype.d.mts +18 -0
  203. package/declaration/intrinsics/RegExpPrototype.d.mts.map +1 -0
  204. package/declaration/intrinsics/RegExpStringIteratorPrototype.d.mts +7 -0
  205. package/declaration/intrinsics/RegExpStringIteratorPrototype.d.mts.map +1 -0
  206. package/declaration/intrinsics/Set.d.mts +8 -0
  207. package/declaration/intrinsics/Set.d.mts.map +1 -0
  208. package/declaration/intrinsics/SetIteratorPrototype.d.mts +7 -0
  209. package/declaration/intrinsics/SetIteratorPrototype.d.mts.map +1 -0
  210. package/declaration/intrinsics/SetPrototype.d.mts +3 -0
  211. package/declaration/intrinsics/SetPrototype.d.mts.map +1 -0
  212. package/declaration/intrinsics/String.d.mts +9 -0
  213. package/declaration/intrinsics/String.d.mts.map +1 -0
  214. package/declaration/intrinsics/StringIteratorPrototype.d.mts +3 -0
  215. package/declaration/intrinsics/StringIteratorPrototype.d.mts.map +1 -0
  216. package/declaration/intrinsics/StringPrototype.d.mts +3 -0
  217. package/declaration/intrinsics/StringPrototype.d.mts.map +1 -0
  218. package/declaration/intrinsics/Symbol.d.mts +12 -0
  219. package/declaration/intrinsics/Symbol.d.mts.map +1 -0
  220. package/declaration/intrinsics/SymbolPrototype.d.mts +3 -0
  221. package/declaration/intrinsics/SymbolPrototype.d.mts.map +1 -0
  222. package/declaration/intrinsics/ThrowTypeError.d.mts +3 -0
  223. package/declaration/intrinsics/ThrowTypeError.d.mts.map +1 -0
  224. package/declaration/intrinsics/TypedArray.d.mts +182 -0
  225. package/declaration/intrinsics/TypedArray.d.mts.map +1 -0
  226. package/declaration/intrinsics/TypedArrayConstructors.d.mts +3 -0
  227. package/declaration/intrinsics/TypedArrayConstructors.d.mts.map +1 -0
  228. package/declaration/intrinsics/TypedArrayPrototype.d.mts +3 -0
  229. package/declaration/intrinsics/TypedArrayPrototype.d.mts.map +1 -0
  230. package/declaration/intrinsics/TypedArrayPrototypes.d.mts +4 -0
  231. package/declaration/intrinsics/TypedArrayPrototypes.d.mts.map +1 -0
  232. package/declaration/intrinsics/TypedArray_Uint8Array.d.mts +3 -0
  233. package/declaration/intrinsics/TypedArray_Uint8Array.d.mts.map +1 -0
  234. package/declaration/intrinsics/URIHandling.d.mts +3 -0
  235. package/declaration/intrinsics/URIHandling.d.mts.map +1 -0
  236. package/declaration/intrinsics/WeakMap.d.mts +11 -0
  237. package/declaration/intrinsics/WeakMap.d.mts.map +1 -0
  238. package/declaration/intrinsics/WeakMapPrototype.d.mts +3 -0
  239. package/declaration/intrinsics/WeakMapPrototype.d.mts.map +1 -0
  240. package/declaration/intrinsics/WeakRef.d.mts +8 -0
  241. package/declaration/intrinsics/WeakRef.d.mts.map +1 -0
  242. package/declaration/intrinsics/WeakRefPrototype.d.mts +3 -0
  243. package/declaration/intrinsics/WeakRefPrototype.d.mts.map +1 -0
  244. package/declaration/intrinsics/WeakSet.d.mts +8 -0
  245. package/declaration/intrinsics/WeakSet.d.mts.map +1 -0
  246. package/declaration/intrinsics/WeakSetPrototype.d.mts +3 -0
  247. package/declaration/intrinsics/WeakSetPrototype.d.mts.map +1 -0
  248. package/declaration/intrinsics/WrapForValidIteratorPrototype.d.mts +3 -0
  249. package/declaration/intrinsics/WrapForValidIteratorPrototype.d.mts.map +1 -0
  250. package/declaration/intrinsics/bootstrap.d.mts +18 -0
  251. package/declaration/intrinsics/bootstrap.d.mts.map +1 -0
  252. package/declaration/intrinsics/eval.d.mts +3 -0
  253. package/declaration/intrinsics/eval.d.mts.map +1 -0
  254. package/declaration/intrinsics/isFinite.d.mts +3 -0
  255. package/declaration/intrinsics/isFinite.d.mts.map +1 -0
  256. package/declaration/intrinsics/isNaN.d.mts +3 -0
  257. package/declaration/intrinsics/isNaN.d.mts.map +1 -0
  258. package/declaration/intrinsics/parseFloat.d.mts +3 -0
  259. package/declaration/intrinsics/parseFloat.d.mts.map +1 -0
  260. package/declaration/intrinsics/parseInt.d.mts +3 -0
  261. package/declaration/intrinsics/parseInt.d.mts.map +1 -0
  262. package/declaration/messages.d.mts +183 -0
  263. package/declaration/messages.d.mts.map +1 -0
  264. package/declaration/modules.d.mts +125 -0
  265. package/declaration/modules.d.mts.map +1 -0
  266. package/declaration/parse.d.mts +35 -0
  267. package/declaration/parse.d.mts.map +1 -0
  268. package/declaration/parser/BaseParser.d.mts +24 -0
  269. package/declaration/parser/BaseParser.d.mts.map +1 -0
  270. package/declaration/parser/ExpressionParser.d.mts +54 -0
  271. package/declaration/parser/ExpressionParser.d.mts.map +1 -0
  272. package/declaration/parser/FunctionParser.d.mts +43 -0
  273. package/declaration/parser/FunctionParser.d.mts.map +1 -0
  274. package/declaration/parser/IdentifierParser.d.mts +12 -0
  275. package/declaration/parser/IdentifierParser.d.mts.map +1 -0
  276. package/declaration/parser/LanguageParser.d.mts +10 -0
  277. package/declaration/parser/LanguageParser.d.mts.map +1 -0
  278. package/declaration/parser/Lexer.d.mts +69 -0
  279. package/declaration/parser/Lexer.d.mts.map +1 -0
  280. package/declaration/parser/ModuleParser.d.mts +18 -0
  281. package/declaration/parser/ModuleParser.d.mts.map +1 -0
  282. package/declaration/parser/ParseNode.d.mts +1178 -0
  283. package/declaration/parser/ParseNode.d.mts.map +1 -0
  284. package/declaration/parser/Parser.d.mts +35 -0
  285. package/declaration/parser/Parser.d.mts.map +1 -0
  286. package/declaration/parser/RegExpParser.d.mts +65 -0
  287. package/declaration/parser/RegExpParser.d.mts.map +1 -0
  288. package/declaration/parser/Scope.d.mts +106 -0
  289. package/declaration/parser/Scope.d.mts.map +1 -0
  290. package/declaration/parser/StatementParser.d.mts +49 -0
  291. package/declaration/parser/StatementParser.d.mts.map +1 -0
  292. package/declaration/parser/tokens.d.mts +32 -0
  293. package/declaration/parser/tokens.d.mts.map +1 -0
  294. package/declaration/parser/utils.d.mts +10 -0
  295. package/declaration/parser/utils.d.mts.map +1 -0
  296. package/declaration/runtime-semantics/AdditiveExpression.d.mts +3 -0
  297. package/declaration/runtime-semantics/AdditiveExpression.d.mts.map +1 -0
  298. package/declaration/runtime-semantics/ApplyStringOrNumericBinaryOperator.d.mts +11 -0
  299. package/declaration/runtime-semantics/ApplyStringOrNumericBinaryOperator.d.mts.map +1 -0
  300. package/declaration/runtime-semantics/ArgumentListEvaluation.d.mts +5 -0
  301. package/declaration/runtime-semantics/ArgumentListEvaluation.d.mts.map +1 -0
  302. package/declaration/runtime-semantics/ArrayLiteral.d.mts +5 -0
  303. package/declaration/runtime-semantics/ArrayLiteral.d.mts.map +1 -0
  304. package/declaration/runtime-semantics/ArrowFunction.d.mts +4 -0
  305. package/declaration/runtime-semantics/ArrowFunction.d.mts.map +1 -0
  306. package/declaration/runtime-semantics/AssignmentExpression.d.mts +8 -0
  307. package/declaration/runtime-semantics/AssignmentExpression.d.mts.map +1 -0
  308. package/declaration/runtime-semantics/AsyncArrowFunction.d.mts +4 -0
  309. package/declaration/runtime-semantics/AsyncArrowFunction.d.mts.map +1 -0
  310. package/declaration/runtime-semantics/AsyncFunctionExpression.d.mts +4 -0
  311. package/declaration/runtime-semantics/AsyncFunctionExpression.d.mts.map +1 -0
  312. package/declaration/runtime-semantics/AsyncGeneratorExpression.d.mts +4 -0
  313. package/declaration/runtime-semantics/AsyncGeneratorExpression.d.mts.map +1 -0
  314. package/declaration/runtime-semantics/AwaitExpression.d.mts +5 -0
  315. package/declaration/runtime-semantics/AwaitExpression.d.mts.map +1 -0
  316. package/declaration/runtime-semantics/BindingInitialization.d.mts +8 -0
  317. package/declaration/runtime-semantics/BindingInitialization.d.mts.map +1 -0
  318. package/declaration/runtime-semantics/BitwiseOperators.d.mts +5 -0
  319. package/declaration/runtime-semantics/BitwiseOperators.d.mts.map +1 -0
  320. package/declaration/runtime-semantics/Block.d.mts +8 -0
  321. package/declaration/runtime-semantics/Block.d.mts.map +1 -0
  322. package/declaration/runtime-semantics/BreakStatement.d.mts +4 -0
  323. package/declaration/runtime-semantics/BreakStatement.d.mts.map +1 -0
  324. package/declaration/runtime-semantics/BreakableStatement.d.mts +4 -0
  325. package/declaration/runtime-semantics/BreakableStatement.d.mts.map +1 -0
  326. package/declaration/runtime-semantics/CallExpression.d.mts +5 -0
  327. package/declaration/runtime-semantics/CallExpression.d.mts.map +1 -0
  328. package/declaration/runtime-semantics/ClassDeclaration.d.mts +7 -0
  329. package/declaration/runtime-semantics/ClassDeclaration.d.mts.map +1 -0
  330. package/declaration/runtime-semantics/ClassDefinitionEvaluation.d.mts +18 -0
  331. package/declaration/runtime-semantics/ClassDefinitionEvaluation.d.mts.map +1 -0
  332. package/declaration/runtime-semantics/ClassExpression.d.mts +5 -0
  333. package/declaration/runtime-semantics/ClassExpression.d.mts.map +1 -0
  334. package/declaration/runtime-semantics/ClassFieldDefinitionEvaluation.d.mts +10 -0
  335. package/declaration/runtime-semantics/ClassFieldDefinitionEvaluation.d.mts.map +1 -0
  336. package/declaration/runtime-semantics/ClassStaticBlockDefinitionEvaluation.d.mts +10 -0
  337. package/declaration/runtime-semantics/ClassStaticBlockDefinitionEvaluation.d.mts.map +1 -0
  338. package/declaration/runtime-semantics/CoalesceExpression.d.mts +5 -0
  339. package/declaration/runtime-semantics/CoalesceExpression.d.mts.map +1 -0
  340. package/declaration/runtime-semantics/CommaOperator.d.mts +5 -0
  341. package/declaration/runtime-semantics/CommaOperator.d.mts.map +1 -0
  342. package/declaration/runtime-semantics/ConditionalExpression.d.mts +5 -0
  343. package/declaration/runtime-semantics/ConditionalExpression.d.mts.map +1 -0
  344. package/declaration/runtime-semantics/ContinueStatement.d.mts +4 -0
  345. package/declaration/runtime-semantics/ContinueStatement.d.mts.map +1 -0
  346. package/declaration/runtime-semantics/CreateDynamicFunction.d.mts +10 -0
  347. package/declaration/runtime-semantics/CreateDynamicFunction.d.mts.map +1 -0
  348. package/declaration/runtime-semantics/DebuggerStatement.d.mts +5 -0
  349. package/declaration/runtime-semantics/DebuggerStatement.d.mts.map +1 -0
  350. package/declaration/runtime-semantics/DefineMethod.d.mts +10 -0
  351. package/declaration/runtime-semantics/DefineMethod.d.mts.map +1 -0
  352. package/declaration/runtime-semantics/DestructuringAssignmentEvaluation.d.mts +5 -0
  353. package/declaration/runtime-semantics/DestructuringAssignmentEvaluation.d.mts.map +1 -0
  354. package/declaration/runtime-semantics/EmptyStatement.d.mts +5 -0
  355. package/declaration/runtime-semantics/EmptyStatement.d.mts.map +1 -0
  356. package/declaration/runtime-semantics/EqualityExpression.d.mts +4 -0
  357. package/declaration/runtime-semantics/EqualityExpression.d.mts.map +1 -0
  358. package/declaration/runtime-semantics/EvaluateBody.d.mts +37 -0
  359. package/declaration/runtime-semantics/EvaluateBody.d.mts.map +1 -0
  360. package/declaration/runtime-semantics/EvaluateCall.d.mts +5 -0
  361. package/declaration/runtime-semantics/EvaluateCall.d.mts.map +1 -0
  362. package/declaration/runtime-semantics/EvaluatePropertyAccess.d.mts +9 -0
  363. package/declaration/runtime-semantics/EvaluatePropertyAccess.d.mts.map +1 -0
  364. package/declaration/runtime-semantics/EvaluateStringOrNumericBinaryExpression.d.mts +6 -0
  365. package/declaration/runtime-semantics/EvaluateStringOrNumericBinaryExpression.d.mts.map +1 -0
  366. package/declaration/runtime-semantics/ExponentiationExpression.d.mts +5 -0
  367. package/declaration/runtime-semantics/ExponentiationExpression.d.mts.map +1 -0
  368. package/declaration/runtime-semantics/ExportDeclaration.d.mts +17 -0
  369. package/declaration/runtime-semantics/ExportDeclaration.d.mts.map +1 -0
  370. package/declaration/runtime-semantics/ExpressionStatement.d.mts +5 -0
  371. package/declaration/runtime-semantics/ExpressionStatement.d.mts.map +1 -0
  372. package/declaration/runtime-semantics/FunctionDeclaration.d.mts +5 -0
  373. package/declaration/runtime-semantics/FunctionDeclaration.d.mts.map +1 -0
  374. package/declaration/runtime-semantics/FunctionDeclarationInstantiation.d.mts +6 -0
  375. package/declaration/runtime-semantics/FunctionDeclarationInstantiation.d.mts.map +1 -0
  376. package/declaration/runtime-semantics/FunctionExpression.d.mts +4 -0
  377. package/declaration/runtime-semantics/FunctionExpression.d.mts.map +1 -0
  378. package/declaration/runtime-semantics/FunctionStatementList.d.mts +4 -0
  379. package/declaration/runtime-semantics/FunctionStatementList.d.mts.map +1 -0
  380. package/declaration/runtime-semantics/GeneratorExpression.d.mts +4 -0
  381. package/declaration/runtime-semantics/GeneratorExpression.d.mts.map +1 -0
  382. package/declaration/runtime-semantics/GetSubstitution.d.mts +5 -0
  383. package/declaration/runtime-semantics/GetSubstitution.d.mts.map +1 -0
  384. package/declaration/runtime-semantics/GlobalDeclarationInstantiation.d.mts +12 -0
  385. package/declaration/runtime-semantics/GlobalDeclarationInstantiation.d.mts.map +1 -0
  386. package/declaration/runtime-semantics/HoistableDeclaration.d.mts +5 -0
  387. package/declaration/runtime-semantics/HoistableDeclaration.d.mts.map +1 -0
  388. package/declaration/runtime-semantics/IdentifierReference.d.mts +6 -0
  389. package/declaration/runtime-semantics/IdentifierReference.d.mts.map +1 -0
  390. package/declaration/runtime-semantics/IfStatement.d.mts +17 -0
  391. package/declaration/runtime-semantics/IfStatement.d.mts.map +1 -0
  392. package/declaration/runtime-semantics/ImportCall.d.mts +6 -0
  393. package/declaration/runtime-semantics/ImportCall.d.mts.map +1 -0
  394. package/declaration/runtime-semantics/ImportDeclaration.d.mts +5 -0
  395. package/declaration/runtime-semantics/ImportDeclaration.d.mts.map +1 -0
  396. package/declaration/runtime-semantics/ImportMeta.d.mts +5 -0
  397. package/declaration/runtime-semantics/ImportMeta.d.mts.map +1 -0
  398. package/declaration/runtime-semantics/InstantiateArrowFunctionExpression.d.mts +5 -0
  399. package/declaration/runtime-semantics/InstantiateArrowFunctionExpression.d.mts.map +1 -0
  400. package/declaration/runtime-semantics/InstantiateAsyncArrowFunctionExpression.d.mts +5 -0
  401. package/declaration/runtime-semantics/InstantiateAsyncArrowFunctionExpression.d.mts.map +1 -0
  402. package/declaration/runtime-semantics/InstantiateAsyncFunctionExpression.d.mts +5 -0
  403. package/declaration/runtime-semantics/InstantiateAsyncFunctionExpression.d.mts.map +1 -0
  404. package/declaration/runtime-semantics/InstantiateAsyncGeneratorFunctionExpression.d.mts +5 -0
  405. package/declaration/runtime-semantics/InstantiateAsyncGeneratorFunctionExpression.d.mts.map +1 -0
  406. package/declaration/runtime-semantics/InstantiateFunctionObject.d.mts +12 -0
  407. package/declaration/runtime-semantics/InstantiateFunctionObject.d.mts.map +1 -0
  408. package/declaration/runtime-semantics/InstantiateGeneratorFunctionExpression.d.mts +5 -0
  409. package/declaration/runtime-semantics/InstantiateGeneratorFunctionExpression.d.mts.map +1 -0
  410. package/declaration/runtime-semantics/InstantiateOrdinaryFunctionExpression.d.mts +5 -0
  411. package/declaration/runtime-semantics/InstantiateOrdinaryFunctionExpression.d.mts.map +1 -0
  412. package/declaration/runtime-semantics/IteratorBindingInitialization.d.mts +8 -0
  413. package/declaration/runtime-semantics/IteratorBindingInitialization.d.mts.map +1 -0
  414. package/declaration/runtime-semantics/KeyedBindingInitialization.d.mts +6 -0
  415. package/declaration/runtime-semantics/KeyedBindingInitialization.d.mts.map +1 -0
  416. package/declaration/runtime-semantics/LabelledEvaluation.d.mts +8 -0
  417. package/declaration/runtime-semantics/LabelledEvaluation.d.mts.map +1 -0
  418. package/declaration/runtime-semantics/LabelledStatement.d.mts +4 -0
  419. package/declaration/runtime-semantics/LabelledStatement.d.mts.map +1 -0
  420. package/declaration/runtime-semantics/LexicalDeclaration.d.mts +8 -0
  421. package/declaration/runtime-semantics/LexicalDeclaration.d.mts.map +1 -0
  422. package/declaration/runtime-semantics/Literal.d.mts +6 -0
  423. package/declaration/runtime-semantics/Literal.d.mts.map +1 -0
  424. package/declaration/runtime-semantics/LogicalANDExpression.d.mts +5 -0
  425. package/declaration/runtime-semantics/LogicalANDExpression.d.mts.map +1 -0
  426. package/declaration/runtime-semantics/LogicalORExpression.d.mts +5 -0
  427. package/declaration/runtime-semantics/LogicalORExpression.d.mts.map +1 -0
  428. package/declaration/runtime-semantics/MV.d.mts +3 -0
  429. package/declaration/runtime-semantics/MV.d.mts.map +1 -0
  430. package/declaration/runtime-semantics/MemberExpression.d.mts +5 -0
  431. package/declaration/runtime-semantics/MemberExpression.d.mts.map +1 -0
  432. package/declaration/runtime-semantics/MethodDefinitionEvaluation.d.mts +15 -0
  433. package/declaration/runtime-semantics/MethodDefinitionEvaluation.d.mts.map +1 -0
  434. package/declaration/runtime-semantics/Module.d.mts +17 -0
  435. package/declaration/runtime-semantics/Module.d.mts.map +1 -0
  436. package/declaration/runtime-semantics/ModuleBody.d.mts +4 -0
  437. package/declaration/runtime-semantics/ModuleBody.d.mts.map +1 -0
  438. package/declaration/runtime-semantics/MultiplicativeExpression.d.mts +5 -0
  439. package/declaration/runtime-semantics/MultiplicativeExpression.d.mts.map +1 -0
  440. package/declaration/runtime-semantics/NamedEvaluation.d.mts +4 -0
  441. package/declaration/runtime-semantics/NamedEvaluation.d.mts.map +1 -0
  442. package/declaration/runtime-semantics/NewExpression.d.mts +5 -0
  443. package/declaration/runtime-semantics/NewExpression.d.mts.map +1 -0
  444. package/declaration/runtime-semantics/NewTarget.d.mts +3 -0
  445. package/declaration/runtime-semantics/NewTarget.d.mts.map +1 -0
  446. package/declaration/runtime-semantics/NumberToBigInt.d.mts +10 -0
  447. package/declaration/runtime-semantics/NumberToBigInt.d.mts.map +1 -0
  448. package/declaration/runtime-semantics/ObjectLiteral.d.mts +5 -0
  449. package/declaration/runtime-semantics/ObjectLiteral.d.mts.map +1 -0
  450. package/declaration/runtime-semantics/OptionalExpression.d.mts +5 -0
  451. package/declaration/runtime-semantics/OptionalExpression.d.mts.map +1 -0
  452. package/declaration/runtime-semantics/ParenthesizedExpression.d.mts +4 -0
  453. package/declaration/runtime-semantics/ParenthesizedExpression.d.mts.map +1 -0
  454. package/declaration/runtime-semantics/PropertyBindingInitialization.d.mts +6 -0
  455. package/declaration/runtime-semantics/PropertyBindingInitialization.d.mts.map +1 -0
  456. package/declaration/runtime-semantics/PropertyDefinitionEvaluation.d.mts +6 -0
  457. package/declaration/runtime-semantics/PropertyDefinitionEvaluation.d.mts.map +1 -0
  458. package/declaration/runtime-semantics/PropertyName.d.mts +5 -0
  459. package/declaration/runtime-semantics/PropertyName.d.mts.map +1 -0
  460. package/declaration/runtime-semantics/RegExp.d.mts +36 -0
  461. package/declaration/runtime-semantics/RegExp.d.mts.map +1 -0
  462. package/declaration/runtime-semantics/RegularExpressionLiteral.d.mts +4 -0
  463. package/declaration/runtime-semantics/RegularExpressionLiteral.d.mts.map +1 -0
  464. package/declaration/runtime-semantics/RelationalExpression.d.mts +20 -0
  465. package/declaration/runtime-semantics/RelationalExpression.d.mts.map +1 -0
  466. package/declaration/runtime-semantics/RestBindingInitialization.d.mts +5 -0
  467. package/declaration/runtime-semantics/RestBindingInitialization.d.mts.map +1 -0
  468. package/declaration/runtime-semantics/ReturnStatement.d.mts +6 -0
  469. package/declaration/runtime-semantics/ReturnStatement.d.mts.map +1 -0
  470. package/declaration/runtime-semantics/Script.d.mts +5 -0
  471. package/declaration/runtime-semantics/Script.d.mts.map +1 -0
  472. package/declaration/runtime-semantics/ScriptBody.d.mts +3 -0
  473. package/declaration/runtime-semantics/ScriptBody.d.mts.map +1 -0
  474. package/declaration/runtime-semantics/ShiftExpression.d.mts +7 -0
  475. package/declaration/runtime-semantics/ShiftExpression.d.mts.map +1 -0
  476. package/declaration/runtime-semantics/StatementList.d.mts +5 -0
  477. package/declaration/runtime-semantics/StatementList.d.mts.map +1 -0
  478. package/declaration/runtime-semantics/StringIndexOf.d.mts +3 -0
  479. package/declaration/runtime-semantics/StringIndexOf.d.mts.map +1 -0
  480. package/declaration/runtime-semantics/StringPad.d.mts +5 -0
  481. package/declaration/runtime-semantics/StringPad.d.mts.map +1 -0
  482. package/declaration/runtime-semantics/SuperCall.d.mts +11 -0
  483. package/declaration/runtime-semantics/SuperCall.d.mts.map +1 -0
  484. package/declaration/runtime-semantics/SuperProperty.d.mts +5 -0
  485. package/declaration/runtime-semantics/SuperProperty.d.mts.map +1 -0
  486. package/declaration/runtime-semantics/SwitchStatement.d.mts +9 -0
  487. package/declaration/runtime-semantics/SwitchStatement.d.mts.map +1 -0
  488. package/declaration/runtime-semantics/TaggedTemplateExpression.d.mts +5 -0
  489. package/declaration/runtime-semantics/TaggedTemplateExpression.d.mts.map +1 -0
  490. package/declaration/runtime-semantics/TemplateLiteral.d.mts +5 -0
  491. package/declaration/runtime-semantics/TemplateLiteral.d.mts.map +1 -0
  492. package/declaration/runtime-semantics/This.d.mts +5 -0
  493. package/declaration/runtime-semantics/This.d.mts.map +1 -0
  494. package/declaration/runtime-semantics/ThrowStatement.d.mts +10 -0
  495. package/declaration/runtime-semantics/ThrowStatement.d.mts.map +1 -0
  496. package/declaration/runtime-semantics/TrimString.d.mts +5 -0
  497. package/declaration/runtime-semantics/TrimString.d.mts.map +1 -0
  498. package/declaration/runtime-semantics/TryStatement.d.mts +16 -0
  499. package/declaration/runtime-semantics/TryStatement.d.mts.map +1 -0
  500. package/declaration/runtime-semantics/UnaryExpression.d.mts +10 -0
  501. package/declaration/runtime-semantics/UnaryExpression.d.mts.map +1 -0
  502. package/declaration/runtime-semantics/Unicode.d.mts +161 -0
  503. package/declaration/runtime-semantics/Unicode.d.mts.map +1 -0
  504. package/declaration/runtime-semantics/UpdateExpression.d.mts +4 -0
  505. package/declaration/runtime-semantics/UpdateExpression.d.mts.map +1 -0
  506. package/declaration/runtime-semantics/VariableStatement.d.mts +7 -0
  507. package/declaration/runtime-semantics/VariableStatement.d.mts.map +1 -0
  508. package/declaration/runtime-semantics/WithStatement.d.mts +16 -0
  509. package/declaration/runtime-semantics/WithStatement.d.mts.map +1 -0
  510. package/declaration/runtime-semantics/YieldExpression.d.mts +5 -0
  511. package/declaration/runtime-semantics/YieldExpression.d.mts.map +1 -0
  512. package/declaration/runtime-semantics/all.d.mts +109 -0
  513. package/declaration/runtime-semantics/all.d.mts.map +1 -0
  514. package/declaration/static-semantics/BodyText.d.mts +4 -0
  515. package/declaration/static-semantics/BodyText.d.mts.map +1 -0
  516. package/declaration/static-semantics/BoundNames.d.mts +4 -0
  517. package/declaration/static-semantics/BoundNames.d.mts.map +1 -0
  518. package/declaration/static-semantics/CharacterValue.d.mts +6 -0
  519. package/declaration/static-semantics/CharacterValue.d.mts.map +1 -0
  520. package/declaration/static-semantics/CodePointAt.d.mts +8 -0
  521. package/declaration/static-semantics/CodePointAt.d.mts.map +1 -0
  522. package/declaration/static-semantics/CodePointsToString.d.mts +3 -0
  523. package/declaration/static-semantics/CodePointsToString.d.mts.map +1 -0
  524. package/declaration/static-semantics/ConstructorMethod.d.mts +4 -0
  525. package/declaration/static-semantics/ConstructorMethod.d.mts.map +1 -0
  526. package/declaration/static-semantics/ContainsArguments.d.mts +4 -0
  527. package/declaration/static-semantics/ContainsArguments.d.mts.map +1 -0
  528. package/declaration/static-semantics/ContainsExpression.d.mts +3 -0
  529. package/declaration/static-semantics/ContainsExpression.d.mts.map +1 -0
  530. package/declaration/static-semantics/DeclarationPart.d.mts +3 -0
  531. package/declaration/static-semantics/DeclarationPart.d.mts.map +1 -0
  532. package/declaration/static-semantics/ExpectedArgumentCount.d.mts +3 -0
  533. package/declaration/static-semantics/ExpectedArgumentCount.d.mts.map +1 -0
  534. package/declaration/static-semantics/ExportEntries.d.mts +11 -0
  535. package/declaration/static-semantics/ExportEntries.d.mts.map +1 -0
  536. package/declaration/static-semantics/ExportEntriesForModule.d.mts +5 -0
  537. package/declaration/static-semantics/ExportEntriesForModule.d.mts.map +1 -0
  538. package/declaration/static-semantics/FlagText.d.mts +4 -0
  539. package/declaration/static-semantics/FlagText.d.mts.map +1 -0
  540. package/declaration/static-semantics/HasInitializer.d.mts +5 -0
  541. package/declaration/static-semantics/HasInitializer.d.mts.map +1 -0
  542. package/declaration/static-semantics/HasName.d.mts +3 -0
  543. package/declaration/static-semantics/HasName.d.mts.map +1 -0
  544. package/declaration/static-semantics/ImportEntries.d.mts +10 -0
  545. package/declaration/static-semantics/ImportEntries.d.mts.map +1 -0
  546. package/declaration/static-semantics/ImportEntriesForModule.d.mts +4 -0
  547. package/declaration/static-semantics/ImportEntriesForModule.d.mts.map +1 -0
  548. package/declaration/static-semantics/ImportedLocalNames.d.mts +4 -0
  549. package/declaration/static-semantics/ImportedLocalNames.d.mts.map +1 -0
  550. package/declaration/static-semantics/IsAnonymousFunctionDefinition.d.mts +4 -0
  551. package/declaration/static-semantics/IsAnonymousFunctionDefinition.d.mts.map +1 -0
  552. package/declaration/static-semantics/IsComputedPropertyKey.d.mts +3 -0
  553. package/declaration/static-semantics/IsComputedPropertyKey.d.mts.map +1 -0
  554. package/declaration/static-semantics/IsConstantDeclaration.d.mts +3 -0
  555. package/declaration/static-semantics/IsConstantDeclaration.d.mts.map +1 -0
  556. package/declaration/static-semantics/IsDestructuring.d.mts +4 -0
  557. package/declaration/static-semantics/IsDestructuring.d.mts.map +1 -0
  558. package/declaration/static-semantics/IsFunctionDefinition.d.mts +6 -0
  559. package/declaration/static-semantics/IsFunctionDefinition.d.mts.map +1 -0
  560. package/declaration/static-semantics/IsIdentifierRef.d.mts +3 -0
  561. package/declaration/static-semantics/IsIdentifierRef.d.mts.map +1 -0
  562. package/declaration/static-semantics/IsInTailPosition.d.mts +3 -0
  563. package/declaration/static-semantics/IsInTailPosition.d.mts.map +1 -0
  564. package/declaration/static-semantics/IsSimpleParameterList.d.mts +3 -0
  565. package/declaration/static-semantics/IsSimpleParameterList.d.mts.map +1 -0
  566. package/declaration/static-semantics/IsStatic.d.mts +4 -0
  567. package/declaration/static-semantics/IsStatic.d.mts.map +1 -0
  568. package/declaration/static-semantics/IsStrict.d.mts +4 -0
  569. package/declaration/static-semantics/IsStrict.d.mts.map +1 -0
  570. package/declaration/static-semantics/IsStringWellFormedUnicode.d.mts +3 -0
  571. package/declaration/static-semantics/IsStringWellFormedUnicode.d.mts.map +1 -0
  572. package/declaration/static-semantics/LexicallyDeclaredNames.d.mts +4 -0
  573. package/declaration/static-semantics/LexicallyDeclaredNames.d.mts.map +1 -0
  574. package/declaration/static-semantics/LexicallyScopedDeclarations.d.mts +3 -0
  575. package/declaration/static-semantics/LexicallyScopedDeclarations.d.mts.map +1 -0
  576. package/declaration/static-semantics/ModuleRequests.d.mts +15 -0
  577. package/declaration/static-semantics/ModuleRequests.d.mts.map +1 -0
  578. package/declaration/static-semantics/NonConstructorElements.d.mts +4 -0
  579. package/declaration/static-semantics/NonConstructorElements.d.mts.map +1 -0
  580. package/declaration/static-semantics/NumericValue.d.mts +4 -0
  581. package/declaration/static-semantics/NumericValue.d.mts.map +1 -0
  582. package/declaration/static-semantics/PrivateBoundIdentifiers.d.mts +5 -0
  583. package/declaration/static-semantics/PrivateBoundIdentifiers.d.mts.map +1 -0
  584. package/declaration/static-semantics/PropName.d.mts +3 -0
  585. package/declaration/static-semantics/PropName.d.mts.map +1 -0
  586. package/declaration/static-semantics/StringToCodePoints.d.mts +3 -0
  587. package/declaration/static-semantics/StringToCodePoints.d.mts.map +1 -0
  588. package/declaration/static-semantics/StringValue.d.mts +3 -0
  589. package/declaration/static-semantics/StringValue.d.mts.map +1 -0
  590. package/declaration/static-semantics/TemplateStrings.d.mts +5 -0
  591. package/declaration/static-semantics/TemplateStrings.d.mts.map +1 -0
  592. package/declaration/static-semantics/TopLevelLexicallyDeclaredNames.d.mts +4 -0
  593. package/declaration/static-semantics/TopLevelLexicallyDeclaredNames.d.mts.map +1 -0
  594. package/declaration/static-semantics/TopLevelLexicallyScopedDeclarations.d.mts +4 -0
  595. package/declaration/static-semantics/TopLevelLexicallyScopedDeclarations.d.mts.map +1 -0
  596. package/declaration/static-semantics/TopLevelVarDeclaredNames.d.mts +4 -0
  597. package/declaration/static-semantics/TopLevelVarDeclaredNames.d.mts.map +1 -0
  598. package/declaration/static-semantics/TopLevelVarScopedDeclarations.d.mts +4 -0
  599. package/declaration/static-semantics/TopLevelVarScopedDeclarations.d.mts.map +1 -0
  600. package/declaration/static-semantics/UTF16EncodeCodePoint.d.mts +4 -0
  601. package/declaration/static-semantics/UTF16EncodeCodePoint.d.mts.map +1 -0
  602. package/declaration/static-semantics/UTF16SurrogatePairToCodePoint.d.mts +4 -0
  603. package/declaration/static-semantics/UTF16SurrogatePairToCodePoint.d.mts.map +1 -0
  604. package/declaration/static-semantics/VarDeclaredNames.d.mts +4 -0
  605. package/declaration/static-semantics/VarDeclaredNames.d.mts.map +1 -0
  606. package/declaration/static-semantics/VarScopedDeclarations.d.mts +4 -0
  607. package/declaration/static-semantics/VarScopedDeclarations.d.mts.map +1 -0
  608. package/declaration/static-semantics/all.d.mts +48 -0
  609. package/declaration/static-semantics/all.d.mts.map +1 -0
  610. package/declaration/value.d.mts +297 -0
  611. package/declaration/value.d.mts.map +1 -0
  612. package/lib/engine262.d.mts +1 -0
  613. package/lib/engine262.d.ts +1 -0
  614. package/lib/engine262.js +62868 -0
  615. package/lib/engine262.js.map +1 -0
  616. package/lib/engine262.mjs +62268 -0
  617. package/lib/engine262.mjs.map +1 -0
  618. package/lib/inspector/context.d.mts +35 -0
  619. package/lib/inspector/context.d.mts.map +1 -0
  620. package/lib/inspector/context.mjs +347 -0
  621. package/lib/inspector/context.mjs.map +1 -0
  622. package/lib/inspector/index.d.mts +16 -0
  623. package/lib/inspector/index.d.mts.map +1 -0
  624. package/lib/inspector/index.mjs +115 -0
  625. package/lib/inspector/index.mjs.map +1 -0
  626. package/lib/inspector/inspect.d.mts +11 -0
  627. package/lib/inspector/inspect.d.mts.map +1 -0
  628. package/lib/inspector/inspect.mjs +403 -0
  629. package/lib/inspector/inspect.mjs.map +1 -0
  630. package/lib/inspector/internal-utils.d.mts +4 -0
  631. package/lib/inspector/internal-utils.d.mts.map +1 -0
  632. package/lib/inspector/internal-utils.mjs +17 -0
  633. package/lib/inspector/internal-utils.mjs.map +1 -0
  634. package/lib/inspector/methods.d.mts +7 -0
  635. package/lib/inspector/methods.d.mts.map +1 -0
  636. package/lib/inspector/methods.mjs +308 -0
  637. package/lib/inspector/methods.mjs.map +1 -0
  638. package/lib/inspector/types.d.mts +220 -0
  639. package/lib/inspector/types.d.mts.map +1 -0
  640. package/lib/inspector/types.mjs +2 -0
  641. package/lib/inspector/types.mjs.map +1 -0
  642. package/lib/inspector/utils.d.mts +8 -0
  643. package/lib/inspector/utils.d.mts.map +1 -0
  644. package/lib/inspector/utils.mjs +62 -0
  645. package/lib/inspector/utils.mjs.map +1 -0
  646. package/lib/inspector.d.mts +1 -0
  647. package/lib/inspector.d.ts +1 -0
  648. package/lib/inspector.js +1495 -0
  649. package/lib/inspector.js.map +1 -0
  650. package/lib/inspector.mjs +1488 -0
  651. package/lib/inspector.mjs.map +1 -0
  652. package/lib/node/bin.d.mts +3 -0
  653. package/lib/node/bin.d.mts.map +1 -0
  654. package/lib/node/bin.mjs +223 -0
  655. package/lib/node/bin.mjs.map +1 -0
  656. package/lib/node/example.d.mts +2 -0
  657. package/lib/node/example.d.mts.map +1 -0
  658. package/lib/node/example.mjs +52 -0
  659. package/lib/node/example.mjs.map +1 -0
  660. package/lib/node/inspector.d.mts +15 -0
  661. package/lib/node/inspector.d.mts.map +1 -0
  662. package/lib/node/inspector.mjs +112 -0
  663. package/lib/node/inspector.mjs.map +1 -0
  664. package/lib/node/module.d.mts +7 -0
  665. package/lib/node/module.d.mts.map +1 -0
  666. package/lib/node/module.mjs +79 -0
  667. package/lib/node/module.mjs.map +1 -0
  668. package/lib-src/inspector/context.mts +410 -0
  669. package/lib-src/inspector/index.mts +137 -0
  670. package/lib-src/inspector/inspect.mts +474 -0
  671. package/lib-src/inspector/internal-utils.mts +18 -0
  672. package/lib-src/inspector/js_protocol.json +3288 -0
  673. package/lib-src/inspector/methods.mts +333 -0
  674. package/lib-src/inspector/tsconfig.json +17 -0
  675. package/lib-src/inspector/types.mts +225 -0
  676. package/lib-src/inspector/utils.mts +81 -0
  677. package/lib-src/node/bin.mts +240 -0
  678. package/lib-src/node/example.mts +58 -0
  679. package/lib-src/node/inspector.mts +124 -0
  680. package/lib-src/node/module.mts +85 -0
  681. package/lib-src/node/tsconfig.json +21 -0
  682. package/package.json +152 -0
  683. package/src/abstract-ops/all.mts +35 -0
  684. package/src/abstract-ops/arguments-operations.mts +245 -0
  685. package/src/abstract-ops/array-objects.mts +312 -0
  686. package/src/abstract-ops/arraybuffer-objects.mts +246 -0
  687. package/src/abstract-ops/async-function-operations.mts +46 -0
  688. package/src/abstract-ops/async-generator-objects.mts +346 -0
  689. package/src/abstract-ops/data-types-and-values.mts +43 -0
  690. package/src/abstract-ops/dataview-objects.mts +149 -0
  691. package/src/abstract-ops/date-objects.mts +232 -0
  692. package/src/abstract-ops/error-objects.mts +38 -0
  693. package/src/abstract-ops/execution-contexts.mts +80 -0
  694. package/src/abstract-ops/function-operations.mts +651 -0
  695. package/src/abstract-ops/generator-operations.mts +326 -0
  696. package/src/abstract-ops/global-object.mts +386 -0
  697. package/src/abstract-ops/immutable-prototype-objects.mts +21 -0
  698. package/src/abstract-ops/import-calls.mts +117 -0
  699. package/src/abstract-ops/iterator-operations.mts +311 -0
  700. package/src/abstract-ops/keyed-collections.mts +19 -0
  701. package/src/abstract-ops/module-namespace-exotic-objects.mts +351 -0
  702. package/src/abstract-ops/module-records.mts +588 -0
  703. package/src/abstract-ops/notational-conventions.mts +56 -0
  704. package/src/abstract-ops/object-operations.mts +599 -0
  705. package/src/abstract-ops/objects.mts +435 -0
  706. package/src/abstract-ops/private-names.mts +106 -0
  707. package/src/abstract-ops/promise-operations.mts +482 -0
  708. package/src/abstract-ops/proxy-objects.mts +579 -0
  709. package/src/abstract-ops/realms.mts +525 -0
  710. package/src/abstract-ops/reference-operations.mts +211 -0
  711. package/src/abstract-ops/regexp-objects.mts +306 -0
  712. package/src/abstract-ops/shared-arraybuffer.mts +8 -0
  713. package/src/abstract-ops/spec-types.mts +220 -0
  714. package/src/abstract-ops/string-objects.mts +156 -0
  715. package/src/abstract-ops/symbol-objects.mts +30 -0
  716. package/src/abstract-ops/testing-comparison.mts +380 -0
  717. package/src/abstract-ops/type-conversion.mts +564 -0
  718. package/src/abstract-ops/typedarray-objects.mts +396 -0
  719. package/src/abstract-ops/weak-operations.mts +79 -0
  720. package/src/api.mts +469 -0
  721. package/src/completion.mts +482 -0
  722. package/src/environment.mts +973 -0
  723. package/src/evaluator.mts +300 -0
  724. package/src/helpers.mts +591 -0
  725. package/src/host-defined/debugger-eval.mts +143 -0
  726. package/src/host-defined/debugger-util.mts +15 -0
  727. package/src/host-defined/engine.mts +604 -0
  728. package/src/host-defined/inspect.mts +246 -0
  729. package/src/host-defined/test262-intrinsics.mts +164 -0
  730. package/src/index.mts +37 -0
  731. package/src/intrinsics/AggregateError.mts +68 -0
  732. package/src/intrinsics/AggregateErrorPrototype.mts +12 -0
  733. package/src/intrinsics/Array.mts +409 -0
  734. package/src/intrinsics/ArrayBuffer.mts +48 -0
  735. package/src/intrinsics/ArrayBufferPrototype.mts +120 -0
  736. package/src/intrinsics/ArrayIteratorPrototype.mts +23 -0
  737. package/src/intrinsics/ArrayPrototype.mts +755 -0
  738. package/src/intrinsics/ArrayPrototypeShared.mts +691 -0
  739. package/src/intrinsics/AsyncFromSyncIteratorPrototype.mts +164 -0
  740. package/src/intrinsics/AsyncFunction.mts +31 -0
  741. package/src/intrinsics/AsyncFunctionPrototype.mts +8 -0
  742. package/src/intrinsics/AsyncGeneratorFunction.mts +37 -0
  743. package/src/intrinsics/AsyncGeneratorFunctionPrototype.mts +19 -0
  744. package/src/intrinsics/AsyncGeneratorFunctionPrototypePrototype.mts +148 -0
  745. package/src/intrinsics/AsyncIteratorPrototype.mts +17 -0
  746. package/src/intrinsics/BigInt.mts +69 -0
  747. package/src/intrinsics/BigIntPrototype.mts +83 -0
  748. package/src/intrinsics/Boolean.mts +47 -0
  749. package/src/intrinsics/BooleanPrototype.mts +58 -0
  750. package/src/intrinsics/DataView.mts +82 -0
  751. package/src/intrinsics/DataViewPrototype.mts +271 -0
  752. package/src/intrinsics/Date.mts +218 -0
  753. package/src/intrinsics/DatePrototype.mts +779 -0
  754. package/src/intrinsics/Error.mts +83 -0
  755. package/src/intrinsics/ErrorPrototype.mts +113 -0
  756. package/src/intrinsics/FinalizationRegistry.mts +65 -0
  757. package/src/intrinsics/FinalizationRegistryPrototype.mts +109 -0
  758. package/src/intrinsics/ForInIteratorPrototype.mts +120 -0
  759. package/src/intrinsics/Function.mts +21 -0
  760. package/src/intrinsics/FunctionPrototype.mts +274 -0
  761. package/src/intrinsics/GeneratorFunction.mts +32 -0
  762. package/src/intrinsics/GeneratorFunctionPrototype.mts +21 -0
  763. package/src/intrinsics/GeneratorFunctionPrototypePrototype.mts +59 -0
  764. package/src/intrinsics/Iterator.mts +72 -0
  765. package/src/intrinsics/IteratorHelperPrototype.mts +61 -0
  766. package/src/intrinsics/IteratorPrototype.mts +712 -0
  767. package/src/intrinsics/JSON.mts +738 -0
  768. package/src/intrinsics/Map.mts +128 -0
  769. package/src/intrinsics/MapIteratorPrototype.mts +81 -0
  770. package/src/intrinsics/MapPrototype.mts +295 -0
  771. package/src/intrinsics/Math.mts +288 -0
  772. package/src/intrinsics/NativeError.mts +88 -0
  773. package/src/intrinsics/Number.mts +131 -0
  774. package/src/intrinsics/NumberPrototype.mts +125 -0
  775. package/src/intrinsics/Object.mts +465 -0
  776. package/src/intrinsics/ObjectPrototype.mts +333 -0
  777. package/src/intrinsics/Promise.mts +700 -0
  778. package/src/intrinsics/PromisePrototype.mts +125 -0
  779. package/src/intrinsics/Proxy.mts +102 -0
  780. package/src/intrinsics/Reflect.mts +211 -0
  781. package/src/intrinsics/RegExp.mts +166 -0
  782. package/src/intrinsics/RegExpPrototype.mts +761 -0
  783. package/src/intrinsics/RegExpStringIteratorPrototype.mts +73 -0
  784. package/src/intrinsics/Set.mts +75 -0
  785. package/src/intrinsics/SetIteratorPrototype.mts +78 -0
  786. package/src/intrinsics/SetPrototype.mts +715 -0
  787. package/src/intrinsics/String.mts +135 -0
  788. package/src/intrinsics/StringIteratorPrototype.mts +23 -0
  789. package/src/intrinsics/StringPrototype.mts +858 -0
  790. package/src/intrinsics/Symbol.mts +103 -0
  791. package/src/intrinsics/SymbolPrototype.mts +83 -0
  792. package/src/intrinsics/ThrowTypeError.mts +21 -0
  793. package/src/intrinsics/TypedArray.mts +576 -0
  794. package/src/intrinsics/TypedArrayConstructors.mts +85 -0
  795. package/src/intrinsics/TypedArrayPrototype.mts +722 -0
  796. package/src/intrinsics/TypedArrayPrototypes.mts +17 -0
  797. package/src/intrinsics/TypedArray_Uint8Array.mts +446 -0
  798. package/src/intrinsics/URIHandling.mts +277 -0
  799. package/src/intrinsics/WeakMap.mts +56 -0
  800. package/src/intrinsics/WeakMapPrototype.mts +202 -0
  801. package/src/intrinsics/WeakRef.mts +42 -0
  802. package/src/intrinsics/WeakRefPrototype.mts +23 -0
  803. package/src/intrinsics/WeakSet.mts +66 -0
  804. package/src/intrinsics/WeakSetPrototype.mts +99 -0
  805. package/src/intrinsics/WrapForValidIteratorPrototype.mts +66 -0
  806. package/src/intrinsics/bootstrap.mts +152 -0
  807. package/src/intrinsics/eval.mts +25 -0
  808. package/src/intrinsics/isFinite.mts +23 -0
  809. package/src/intrinsics/isNaN.mts +23 -0
  810. package/src/intrinsics/parseFloat.mts +78 -0
  811. package/src/intrinsics/parseInt.mts +101 -0
  812. package/src/messages.mts +198 -0
  813. package/src/modules.mts +773 -0
  814. package/src/parse.mts +254 -0
  815. package/src/parser/BaseParser.mts +36 -0
  816. package/src/parser/ExpressionParser.mts +1519 -0
  817. package/src/parser/FunctionParser.mts +389 -0
  818. package/src/parser/IdentifierParser.mts +144 -0
  819. package/src/parser/LanguageParser.mts +110 -0
  820. package/src/parser/Lexer.mts +1057 -0
  821. package/src/parser/ModuleParser.mts +328 -0
  822. package/src/parser/ParseNode.mts +2728 -0
  823. package/src/parser/Parser.mts +200 -0
  824. package/src/parser/RegExpParser.mts +1413 -0
  825. package/src/parser/Scope.mts +538 -0
  826. package/src/parser/StatementParser.mts +958 -0
  827. package/src/parser/tokens.mts +212 -0
  828. package/src/parser/unicode.d.ts +20 -0
  829. package/src/parser/utils.mts +114 -0
  830. package/src/runtime-semantics/AdditiveExpression.mts +29 -0
  831. package/src/runtime-semantics/ApplyStringOrNumericBinaryOperator.mts +79 -0
  832. package/src/runtime-semantics/ArgumentListEvaluation.mts +178 -0
  833. package/src/runtime-semantics/ArrayLiteral.mts +99 -0
  834. package/src/runtime-semantics/ArrowFunction.mts +8 -0
  835. package/src/runtime-semantics/AssignmentExpression.mts +281 -0
  836. package/src/runtime-semantics/AsyncArrowFunction.mts +8 -0
  837. package/src/runtime-semantics/AsyncFunctionExpression.mts +11 -0
  838. package/src/runtime-semantics/AsyncGeneratorExpression.mts +11 -0
  839. package/src/runtime-semantics/AwaitExpression.mts +17 -0
  840. package/src/runtime-semantics/BindingInitialization.mts +93 -0
  841. package/src/runtime-semantics/BitwiseOperators.mts +14 -0
  842. package/src/runtime-semantics/Block.mts +73 -0
  843. package/src/runtime-semantics/BreakStatement.mts +18 -0
  844. package/src/runtime-semantics/BreakableStatement.mts +18 -0
  845. package/src/runtime-semantics/CallExpression.mts +59 -0
  846. package/src/runtime-semantics/ClassDeclaration.mts +38 -0
  847. package/src/runtime-semantics/ClassDefinitionEvaluation.mts +352 -0
  848. package/src/runtime-semantics/ClassExpression.mts +23 -0
  849. package/src/runtime-semantics/ClassFieldDefinitionEvaluation.mts +60 -0
  850. package/src/runtime-semantics/ClassStaticBlockDefinitionEvaluation.mts +44 -0
  851. package/src/runtime-semantics/CoalesceExpression.mts +24 -0
  852. package/src/runtime-semantics/CommaOperator.mts +18 -0
  853. package/src/runtime-semantics/ConditionalExpression.mts +31 -0
  854. package/src/runtime-semantics/ContinueStatement.mts +18 -0
  855. package/src/runtime-semantics/CreateDynamicFunction.mts +200 -0
  856. package/src/runtime-semantics/DebuggerStatement.mts +19 -0
  857. package/src/runtime-semantics/DefineMethod.mts +41 -0
  858. package/src/runtime-semantics/DestructuringAssignmentEvaluation.mts +306 -0
  859. package/src/runtime-semantics/EmptyStatement.mts +9 -0
  860. package/src/runtime-semantics/EqualityExpression.mts +60 -0
  861. package/src/runtime-semantics/EvaluateBody.mts +200 -0
  862. package/src/runtime-semantics/EvaluateCall.mts +63 -0
  863. package/src/runtime-semantics/EvaluatePropertyAccess.mts +39 -0
  864. package/src/runtime-semantics/EvaluateStringOrNumericBinaryExpression.mts +19 -0
  865. package/src/runtime-semantics/ExponentiationExpression.mts +11 -0
  866. package/src/runtime-semantics/ExportDeclaration.mts +90 -0
  867. package/src/runtime-semantics/ExpressionStatement.mts +14 -0
  868. package/src/runtime-semantics/FunctionDeclaration.mts +11 -0
  869. package/src/runtime-semantics/FunctionDeclarationInstantiation.mts +274 -0
  870. package/src/runtime-semantics/FunctionExpression.mts +11 -0
  871. package/src/runtime-semantics/FunctionStatementList.mts +11 -0
  872. package/src/runtime-semantics/GeneratorExpression.mts +11 -0
  873. package/src/runtime-semantics/GetSubstitution.mts +90 -0
  874. package/src/runtime-semantics/GlobalDeclarationInstantiation.mts +142 -0
  875. package/src/runtime-semantics/HoistableDeclaration.mts +12 -0
  876. package/src/runtime-semantics/IdentifierReference.mts +15 -0
  877. package/src/runtime-semantics/IfStatement.mts +49 -0
  878. package/src/runtime-semantics/ImportCall.mts +134 -0
  879. package/src/runtime-semantics/ImportDeclaration.mts +9 -0
  880. package/src/runtime-semantics/ImportMeta.mts +45 -0
  881. package/src/runtime-semantics/InstantiateArrowFunctionExpression.mts +35 -0
  882. package/src/runtime-semantics/InstantiateAsyncArrowFunctionExpression.mts +37 -0
  883. package/src/runtime-semantics/InstantiateAsyncFunctionExpression.mts +75 -0
  884. package/src/runtime-semantics/InstantiateAsyncGeneratorFunctionExpression.mts +90 -0
  885. package/src/runtime-semantics/InstantiateFunctionObject.mts +123 -0
  886. package/src/runtime-semantics/InstantiateGeneratorFunctionExpression.mts +82 -0
  887. package/src/runtime-semantics/InstantiateOrdinaryFunctionExpression.mts +65 -0
  888. package/src/runtime-semantics/IteratorBindingInitialization.mts +213 -0
  889. package/src/runtime-semantics/KeyedBindingInitialization.mts +61 -0
  890. package/src/runtime-semantics/LabelledEvaluation.mts +753 -0
  891. package/src/runtime-semantics/LabelledStatement.mts +11 -0
  892. package/src/runtime-semantics/LexicalDeclaration.mts +92 -0
  893. package/src/runtime-semantics/Literal.mts +36 -0
  894. package/src/runtime-semantics/LogicalANDExpression.mts +25 -0
  895. package/src/runtime-semantics/LogicalORExpression.mts +25 -0
  896. package/src/runtime-semantics/MV.mts +10 -0
  897. package/src/runtime-semantics/MemberExpression.mts +71 -0
  898. package/src/runtime-semantics/MethodDefinitionEvaluation.mts +266 -0
  899. package/src/runtime-semantics/Module.mts +15 -0
  900. package/src/runtime-semantics/ModuleBody.mts +10 -0
  901. package/src/runtime-semantics/MultiplicativeExpression.mts +18 -0
  902. package/src/runtime-semantics/NamedEvaluation.mts +96 -0
  903. package/src/runtime-semantics/NewExpression.mts +50 -0
  904. package/src/runtime-semantics/NewTarget.mts +8 -0
  905. package/src/runtime-semantics/NumberToBigInt.mts +17 -0
  906. package/src/runtime-semantics/ObjectLiteral.mts +26 -0
  907. package/src/runtime-semantics/OptionalExpression.mts +128 -0
  908. package/src/runtime-semantics/ParenthesizedExpression.mts +8 -0
  909. package/src/runtime-semantics/PropertyBindingInitialization.mts +45 -0
  910. package/src/runtime-semantics/PropertyDefinitionEvaluation.mts +121 -0
  911. package/src/runtime-semantics/PropertyName.mts +62 -0
  912. package/src/runtime-semantics/RegExp.mts +1325 -0
  913. package/src/runtime-semantics/RegularExpressionLiteral.mts +16 -0
  914. package/src/runtime-semantics/RelationalExpression.mts +152 -0
  915. package/src/runtime-semantics/RestBindingInitialization.mts +29 -0
  916. package/src/runtime-semantics/ReturnStatement.mts +32 -0
  917. package/src/runtime-semantics/Script.mts +15 -0
  918. package/src/runtime-semantics/ScriptBody.mts +7 -0
  919. package/src/runtime-semantics/ShiftExpression.mts +17 -0
  920. package/src/runtime-semantics/StatementList.mts +33 -0
  921. package/src/runtime-semantics/StringIndexOf.mts +43 -0
  922. package/src/runtime-semantics/StringPad.mts +34 -0
  923. package/src/runtime-semantics/SuperCall.mts +65 -0
  924. package/src/runtime-semantics/SuperProperty.mts +58 -0
  925. package/src/runtime-semantics/SwitchStatement.mts +221 -0
  926. package/src/runtime-semantics/TaggedTemplateExpression.mts +23 -0
  927. package/src/runtime-semantics/TemplateLiteral.mts +34 -0
  928. package/src/runtime-semantics/This.mts +9 -0
  929. package/src/runtime-semantics/ThrowStatement.mts +22 -0
  930. package/src/runtime-semantics/TrimString.mts +19 -0
  931. package/src/runtime-semantics/TryStatement.mts +120 -0
  932. package/src/runtime-semantics/UnaryExpression.mts +218 -0
  933. package/src/runtime-semantics/Unicode.mts +250 -0
  934. package/src/runtime-semantics/UpdateExpression.mts +126 -0
  935. package/src/runtime-semantics/VariableStatement.mts +72 -0
  936. package/src/runtime-semantics/WithStatement.mts +33 -0
  937. package/src/runtime-semantics/YieldExpression.mts +174 -0
  938. package/src/runtime-semantics/all.mts +108 -0
  939. package/src/static-semantics/BodyText.mts +7 -0
  940. package/src/static-semantics/BoundNames.mts +101 -0
  941. package/src/static-semantics/CharacterValue.mts +112 -0
  942. package/src/static-semantics/CodePointAt.mts +53 -0
  943. package/src/static-semantics/CodePointsToString.mts +15 -0
  944. package/src/static-semantics/ConstructorMethod.mts +10 -0
  945. package/src/static-semantics/ContainsArguments.mts +33 -0
  946. package/src/static-semantics/ContainsExpression.mts +59 -0
  947. package/src/static-semantics/DeclarationPart.mts +5 -0
  948. package/src/static-semantics/ExpectedArgumentCount.mts +26 -0
  949. package/src/static-semantics/ExportEntries.mts +129 -0
  950. package/src/static-semantics/ExportEntriesForModule.mts +63 -0
  951. package/src/static-semantics/FlagText.mts +7 -0
  952. package/src/static-semantics/HasInitializer.mts +5 -0
  953. package/src/static-semantics/HasName.mts +8 -0
  954. package/src/static-semantics/ImportEntries.mts +36 -0
  955. package/src/static-semantics/ImportEntriesForModule.mts +97 -0
  956. package/src/static-semantics/ImportedLocalNames.mts +14 -0
  957. package/src/static-semantics/IsAnonymousFunctionDefinition.mts +18 -0
  958. package/src/static-semantics/IsComputedPropertyKey.mts +7 -0
  959. package/src/static-semantics/IsConstantDeclaration.mts +5 -0
  960. package/src/static-semantics/IsDestructuring.mts +21 -0
  961. package/src/static-semantics/IsFunctionDefinition.mts +15 -0
  962. package/src/static-semantics/IsIdentifierRef.mts +5 -0
  963. package/src/static-semantics/IsInTailPosition.mts +5 -0
  964. package/src/static-semantics/IsSimpleParameterList.mts +23 -0
  965. package/src/static-semantics/IsStatic.mts +10 -0
  966. package/src/static-semantics/IsStrict.mts +7 -0
  967. package/src/static-semantics/IsStringWellFormedUnicode.mts +24 -0
  968. package/src/static-semantics/LexicallyDeclaredNames.mts +26 -0
  969. package/src/static-semantics/LexicallyScopedDeclarations.mts +82 -0
  970. package/src/static-semantics/ModuleRequests.mts +99 -0
  971. package/src/static-semantics/NonConstructorElements.mts +15 -0
  972. package/src/static-semantics/NumericValue.mts +7 -0
  973. package/src/static-semantics/PrivateBoundIdentifiers.mts +23 -0
  974. package/src/static-semantics/PropName.mts +23 -0
  975. package/src/static-semantics/StringToCodePoints.mts +22 -0
  976. package/src/static-semantics/StringValue.mts +19 -0
  977. package/src/static-semantics/TemplateStrings.mts +109 -0
  978. package/src/static-semantics/TopLevelLexicallyDeclaredNames.mts +21 -0
  979. package/src/static-semantics/TopLevelLexicallyScopedDeclarations.mts +23 -0
  980. package/src/static-semantics/TopLevelVarDeclaredNames.mts +26 -0
  981. package/src/static-semantics/TopLevelVarScopedDeclarations.mts +34 -0
  982. package/src/static-semantics/UTF16EncodeCodePoint.mts +18 -0
  983. package/src/static-semantics/UTF16SurrogatePairToCodePoint.mts +12 -0
  984. package/src/static-semantics/VarDeclaredNames.mts +109 -0
  985. package/src/static-semantics/VarScopedDeclarations.mts +115 -0
  986. package/src/static-semantics/all.mts +47 -0
  987. package/src/syntax-error.d.ts +5 -0
  988. package/src/tsconfig.json +11 -0
  989. package/src/unicode/.gitkeep +0 -0
  990. package/src/unicode/CodePointProperties.json +1 -0
  991. package/src/unicode/PropertyValueAliases.json +426 -0
  992. package/src/unicode/SequenceProperties.json +1 -0
  993. package/src/value.mts +1003 -0
@@ -0,0 +1,973 @@
1
+ import { AbstractModuleRecord } from './modules.mts';
2
+ import {
3
+ Descriptor,
4
+ ReferenceRecord,
5
+ UndefinedValue,
6
+ ObjectValue,
7
+ Value,
8
+ wellKnownSymbols,
9
+ BooleanValue,
10
+ JSStringValue,
11
+ PrivateName,
12
+ NullValue,
13
+ } from './value.mts';
14
+ import { surroundingAgent, type GCMarker } from './host-defined/engine.mts';
15
+ import {
16
+ Assert,
17
+ DefinePropertyOrThrow,
18
+ Get,
19
+ HasOwnProperty,
20
+ HasProperty,
21
+ IsDataDescriptor,
22
+ IsExtensible,
23
+ IsPropertyKey,
24
+ Set,
25
+ ToBoolean,
26
+ isECMAScriptFunctionObject,
27
+ type ECMAScriptFunctionObject,
28
+ } from './abstract-ops/all.mts';
29
+ import {
30
+ NormalCompletion, Q, X,
31
+ type ValueEvaluator,
32
+ } from './completion.mts';
33
+ import { JSStringMap, skipDebugger } from './helpers.mts';
34
+ import type { PlainEvaluator } from './evaluator.mts';
35
+
36
+ /** https://tc39.es/ecma262/#sec-environment-records */
37
+ export abstract class EnvironmentRecord {
38
+ readonly OuterEnv: EnvironmentRecord | NullValue;
39
+
40
+ constructor(outerEnv: EnvironmentRecord | NullValue) {
41
+ this.OuterEnv = outerEnv;
42
+ }
43
+
44
+ abstract HasBinding(N: JSStringValue): ValueEvaluator<BooleanValue>;
45
+
46
+ abstract CreateMutableBinding(N: JSStringValue, D: BooleanValue): PlainEvaluator;
47
+
48
+ abstract CreateImmutableBinding(N: JSStringValue, S: BooleanValue): void;
49
+
50
+ abstract InitializeBinding(N: JSStringValue, V: Value): PlainEvaluator;
51
+
52
+ abstract SetMutableBinding(N: JSStringValue, V: Value, S: BooleanValue): PlainEvaluator;
53
+
54
+ abstract GetBindingValue(N: JSStringValue, S: BooleanValue): ValueEvaluator;
55
+
56
+ abstract DeleteBinding(N: JSStringValue): ValueEvaluator<BooleanValue>;
57
+
58
+ abstract HasThisBinding(): BooleanValue;
59
+
60
+ abstract HasSuperBinding(): BooleanValue;
61
+
62
+ abstract WithBaseObject(): ObjectValue | UndefinedValue;
63
+
64
+ // NON-SPEC
65
+ mark(m: GCMarker) {
66
+ m(this.OuterEnv);
67
+ }
68
+ }
69
+
70
+ interface DeclarativeEnvironmentBinding {
71
+ readonly indirect: boolean;
72
+ initialized: boolean;
73
+ readonly mutable?: boolean;
74
+ readonly strict?: boolean;
75
+ readonly deletable?: boolean;
76
+ value?: Value | undefined;
77
+
78
+ mark(m: GCMarker): void;
79
+ }
80
+
81
+ interface ModuleEnvironmentBinding extends DeclarativeEnvironmentBinding {
82
+ readonly target: [AbstractModuleRecord, JSStringValue];
83
+ }
84
+ /** https://tc39.es/ecma262/#sec-declarative-environment-records */
85
+ export class DeclarativeEnvironmentRecord extends EnvironmentRecord {
86
+ readonly bindings = new JSStringMap<DeclarativeEnvironmentBinding>();
87
+
88
+ /** https://tc39.es/ecma262/#sec-declarative-environment-records-hasbinding-n */
89
+ * HasBinding(N: JSStringValue) {
90
+ // 1. Let envRec be the declarative Environment Record for which the method was invoked.
91
+ const envRec = this;
92
+ // 2. If envRec has a binding for the name that is the value of N, return true.
93
+ if (envRec.bindings.has(N)) {
94
+ return Value.true;
95
+ }
96
+ // 3. Return false.
97
+ return Value.false;
98
+ }
99
+
100
+ /** https://tc39.es/ecma262/#sec-declarative-environment-records-createmutablebinding-n-d */
101
+ * CreateMutableBinding(N: JSStringValue, D: BooleanValue) {
102
+ // 1. Let envRec be the declarative Environment Record for which the method was invoked.
103
+ const envRec = this;
104
+ // 2. Assert: envRec does not already have a binding for N.
105
+ Assert(!envRec.bindings.has(N));
106
+ // 3. Create a mutable binding in envRec for N and record that it is uninitialized. If D
107
+ // is true, record that the newly created binding may be deleted by a subsequent
108
+ // DeleteBinding call.
109
+ this.bindings.set(N, {
110
+ indirect: false,
111
+ initialized: false,
112
+ mutable: true,
113
+ strict: undefined,
114
+ deletable: D === Value.true,
115
+ value: undefined,
116
+ mark(m: GCMarker) {
117
+ m(this.value);
118
+ },
119
+ });
120
+ // 4. Return NormalCompletion(empty).
121
+ return NormalCompletion(undefined);
122
+ }
123
+
124
+ /** https://tc39.es/ecma262/#sec-declarative-environment-records-createimmutablebinding-n-s */
125
+ CreateImmutableBinding(N: JSStringValue, S: BooleanValue) {
126
+ // 1. Let envRec be the declarative Environment Record for which the method was invoked.
127
+ const envRec = this;
128
+ // 2. Assert: envRec does not already have a binding for N.
129
+ Assert(!envRec.bindings.has(N));
130
+ // 3. Create an immutable binding in envRec for N and record that it is uninitialized. If
131
+ // S is true, record that the newly created binding is a strict binding.
132
+ this.bindings.set(N, {
133
+ indirect: false,
134
+ initialized: false,
135
+ mutable: false,
136
+ strict: S === Value.true,
137
+ deletable: false,
138
+ value: undefined,
139
+ mark(m) {
140
+ m(this.value);
141
+ },
142
+ });
143
+ // 4. Return NormalCompletion(empty).
144
+ return NormalCompletion(undefined);
145
+ }
146
+
147
+ /** https://tc39.es/ecma262/#sec-declarative-environment-records-initializebinding-n-v */
148
+ * InitializeBinding(N: JSStringValue, V: Value) {
149
+ // 1. Let envRec be the declarative Environment Record for which the method was invoked.
150
+ const envRec = this;
151
+ // 2. Assert: envRec must have an uninitialized binding for N.
152
+ const binding = envRec.bindings.get(N);
153
+ Assert(binding !== undefined && binding.initialized === false);
154
+ // 3. Set the bound value for N in envRec to V.
155
+ binding.value = V;
156
+ // 4. Record that the binding for N in envRec has been initialized.
157
+ binding.initialized = true;
158
+ // 5. Return NormalCompletion(empty).
159
+ return NormalCompletion(undefined);
160
+ }
161
+
162
+ /** https://tc39.es/ecma262/#sec-declarative-environment-records-setmutablebinding-n-v-s */
163
+ * SetMutableBinding(N: JSStringValue, V: Value, S: BooleanValue): PlainEvaluator {
164
+ Assert(IsPropertyKey(N));
165
+ // 1. Let envRec be the declarative Environment Record for which the method was invoked.
166
+ const envRec = this;
167
+ // 2. If envRec does not have a binding for N, then
168
+ if (!envRec.bindings.has(N)) {
169
+ // a. If S is true, throw a ReferenceError exception.
170
+ if (S === Value.true) {
171
+ return surroundingAgent.Throw('ReferenceError', 'NotDefined', N);
172
+ }
173
+ // b. Perform envRec.CreateMutableBinding(N, true).
174
+ yield* envRec.CreateMutableBinding(N, Value.true);
175
+ // c. Perform envRec.InitializeBinding(N, V).
176
+ yield* envRec.InitializeBinding(N, V);
177
+ // d. Return NormalCompletion(empty).
178
+ return NormalCompletion(undefined);
179
+ }
180
+ const binding = this.bindings.get(N)!;
181
+ // 3. If the binding for N in envRec is a strict binding, set S to true.
182
+ if (binding.strict === true) {
183
+ S = Value.true;
184
+ }
185
+ // 4. If the binding for N in envRec has not yet been initialized, throw a ReferenceError exception.
186
+ if (binding.initialized === false) {
187
+ return surroundingAgent.Throw('ReferenceError', 'NotInitialized', N);
188
+ }
189
+ // 5. Else if the binding for N in envRec is a mutable binding, change its bound value to V.
190
+ if (binding.mutable === true) {
191
+ binding.value = V;
192
+ } else {
193
+ // a. Assert: This is an attempt to change the value of an immutable binding.
194
+ // b. If S is true, throw a TypeError exception.
195
+ if (S === Value.true) {
196
+ return surroundingAgent.Throw('TypeError', 'AssignmentToConstant', N);
197
+ }
198
+ }
199
+ // 7. Return NormalCompletion(empty).
200
+ return NormalCompletion(undefined);
201
+ }
202
+
203
+ /** https://tc39.es/ecma262/#sec-declarative-environment-records-getbindingvalue-n-s */
204
+ * GetBindingValue(N: JSStringValue, _S: BooleanValue): ValueEvaluator {
205
+ // 1. Let envRec be the declarative Environment Record for which the method was invoked.
206
+ const envRec = this;
207
+ // 2. Assert: envRec has a binding for N.
208
+ const binding = envRec.bindings.get(N);
209
+ Assert(binding !== undefined);
210
+ // 3. If the binding for N in envRec is an uninitialized binding, throw a ReferenceError exception.
211
+ if (binding.initialized === false) {
212
+ return surroundingAgent.Throw('ReferenceError', 'NotInitialized', N);
213
+ }
214
+ // 4. Return the value currently bound to N in envRec.
215
+ return NormalCompletion(binding.value!);
216
+ }
217
+
218
+ /** https://tc39.es/ecma262/#sec-declarative-environment-records-deletebinding-n */
219
+ * DeleteBinding(N: JSStringValue) {
220
+ // 1. Let envRec be the declarative Environment Record for which the method was invoked.
221
+ const envRec = this;
222
+ // 2. Assert: envRec has a binding for the name that is the value of N.
223
+ const binding = envRec.bindings.get(N);
224
+ Assert(binding !== undefined);
225
+ // 3. If the binding for N in envRec cannot be deleted, return false.
226
+ if (binding.deletable === false) {
227
+ return Value.false;
228
+ }
229
+ // 4. Remove the binding for N from envRec.
230
+ envRec.bindings.delete(N);
231
+ // 5. Return true.
232
+ return Value.true;
233
+ }
234
+
235
+ /** https://tc39.es/ecma262/#sec-declarative-environment-records-hasthisbinding */
236
+ HasThisBinding(): BooleanValue {
237
+ // 1. Return false.
238
+ return Value.false;
239
+ }
240
+
241
+ /** https://tc39.es/ecma262/#sec-declarative-environment-records-hassuperbinding */
242
+ HasSuperBinding(): BooleanValue {
243
+ // 1. Return false.
244
+ return Value.false;
245
+ }
246
+
247
+ /** https://tc39.es/ecma262/#sec-declarative-environment-records-withbaseobject */
248
+ WithBaseObject() {
249
+ // 1. Return undefined.
250
+ return Value.undefined;
251
+ }
252
+
253
+ // NON-SPEC
254
+ override mark(m: GCMarker) {
255
+ // TODO(ts): this function does not call super.mark(). is it a mistake?
256
+ m(this.bindings);
257
+ }
258
+ }
259
+
260
+ /** https://tc39.es/ecma262/#sec-object-environment-records */
261
+ export class ObjectEnvironmentRecord extends EnvironmentRecord {
262
+ BindingObject: ObjectValue;
263
+
264
+ IsWithEnvironment: BooleanValue;
265
+
266
+ /** https://tc39.es/ecma262/#sec-newobjectenvironment */
267
+ constructor(O: ObjectValue, W: BooleanValue, E: EnvironmentRecord | NullValue) {
268
+ super(E);
269
+ this.BindingObject = O;
270
+ this.IsWithEnvironment = W;
271
+ }
272
+
273
+ /** https://tc39.es/ecma262/#sec-object-environment-records-hasbinding-n */
274
+ * HasBinding(N: JSStringValue): ValueEvaluator<BooleanValue> {
275
+ // 1. Let envRec be the object Environment Record for which the method was invoked.
276
+ const envRec = this;
277
+ // 2. Let bindings be the binding object for envRec.
278
+ const bindings = envRec.BindingObject;
279
+ // 3. Let foundBinding be ? HasProperty(bindings, N).
280
+ const foundBinding = Q(yield* HasProperty(bindings, N));
281
+ // 4. If foundBinding is false, return false.
282
+ if (foundBinding === Value.false) {
283
+ return Value.false;
284
+ }
285
+ // 5. If the IsWithEnvironment flag of envRec i s false, return true.
286
+ if (envRec.IsWithEnvironment === Value.false) {
287
+ return Value.true;
288
+ }
289
+ // 6. Let unscopables be ? Get(bindings, @@unscopables).
290
+ const unscopables = Q(yield* Get(bindings, wellKnownSymbols.unscopables));
291
+ // 7. If Type(unscopables) is Object, then
292
+ if (unscopables instanceof ObjectValue) {
293
+ // a. Let blocked be ! ToBoolean(? Get(unscopables, N)).
294
+ const blocked = X(ToBoolean(Q(yield* Get(unscopables, N))));
295
+ // b. If blocked is true, return false.
296
+ if (blocked === Value.true) {
297
+ return Value.false;
298
+ }
299
+ }
300
+ // 8. Return true.
301
+ return Value.true;
302
+ }
303
+
304
+ /** https://tc39.es/ecma262/#sec-object-environment-records-createmutablebinding-n-d */
305
+ * CreateMutableBinding(N: JSStringValue, D: BooleanValue): PlainEvaluator {
306
+ // 1. Let envRec be the object Environment Record for which the method was invoked.
307
+ const envRec = this;
308
+ // 2. Let envRec be the object Environment Record for which the method was invoked.
309
+ const bindings = envRec.BindingObject;
310
+ // 3. Return ? DefinePropertyOrThrow(bindings, N, PropertyDescriptor { [[Value]]: undefined, [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: D }).
311
+ Q(yield* DefinePropertyOrThrow(bindings, N, Descriptor({
312
+ Value: Value.undefined,
313
+ Writable: Value.true,
314
+ Enumerable: Value.true,
315
+ Configurable: D,
316
+ })));
317
+ }
318
+
319
+ /** https://tc39.es/ecma262/#sec-object-environment-records-createimmutablebinding-n-s */
320
+ CreateImmutableBinding(_N: JSStringValue, _S: BooleanValue) {
321
+ Assert(false, 'CreateImmutableBinding called on an Object Environment Record');
322
+ }
323
+
324
+ /** https://tc39.es/ecma262/#sec-object-environment-records-initializebinding-n-v */
325
+ * InitializeBinding(N: JSStringValue, V: Value): PlainEvaluator {
326
+ // 1. Let envRec be the object Environment Record for which the method was invoked.
327
+ const envRec = this;
328
+ // 2. Assert: envRec must have an uninitialized binding for N.
329
+ // 3. Record that the binding for N in envRec has been initialized.
330
+ // 4. Return ? envRec.SetMutableBinding(N, V, false).
331
+ Q(yield* envRec.SetMutableBinding(N, V, Value.false));
332
+ }
333
+
334
+ /** https://tc39.es/ecma262/#sec-object-environment-records-setmutablebinding-n-v-s */
335
+ * SetMutableBinding(N: JSStringValue, V: Value, S: BooleanValue): PlainEvaluator {
336
+ // 1. Let envRec be the object Environment Record for which the method was invoked.
337
+ const envRec = this;
338
+ // 2. Let bindings be the binding object for envRec.
339
+ const bindings = envRec.BindingObject;
340
+ // 3. Let stillExists be ? HasProperty(bindings, N).
341
+ const stillExists = Q(yield* HasProperty(bindings, N));
342
+ // 4. If stillExists is false and S is true, throw a ReferenceError exception.
343
+ if (stillExists === Value.false && S === Value.true) {
344
+ return surroundingAgent.Throw('ReferenceError', 'NotDefined', N);
345
+ }
346
+ // 5. Return ? Set(bindings, N, V, S).
347
+ Q(yield* Set(bindings, N, V, S));
348
+ return undefined;
349
+ }
350
+
351
+ /** https://tc39.es/ecma262/#sec-object-environment-records-getbindingvalue-n-s */
352
+ * GetBindingValue(N: JSStringValue, S: BooleanValue): ValueEvaluator {
353
+ // 1. Let envRec be the object Environment Record for which the method was invoked.
354
+ const envRec = this;
355
+ // 2. Let bindings be the binding object for envRec.
356
+ const bindings = envRec.BindingObject;
357
+ // 3. Let value be ? HasProperty(bindings, N).
358
+ const value = Q(yield* HasProperty(bindings, N));
359
+ // 4. If value is false, then
360
+ if (value === Value.false) {
361
+ // a. If S is false, return the value undefined; otherwise throw a ReferenceError exception.
362
+ if (S === Value.false) {
363
+ return NormalCompletion(Value.undefined);
364
+ } else {
365
+ return surroundingAgent.Throw('ReferenceError', 'NotDefined', N);
366
+ }
367
+ }
368
+ // 5. Return Get(bindings, N).
369
+ return yield* Get(bindings, N);
370
+ }
371
+
372
+ /** https://tc39.es/ecma262/#sec-object-environment-records-deletebinding-n */
373
+ * DeleteBinding(N: JSStringValue): ValueEvaluator<BooleanValue> {
374
+ // 1. Let envRec be the object Environment Record for which the method was invoked.
375
+ const envRec = this;
376
+ // 2. Let bindings be the binding object for envRec.
377
+ const bindings = envRec.BindingObject;
378
+ // 3. Return ? bindings.[[Delete]](N).
379
+ return Q(yield* bindings.Delete(N));
380
+ }
381
+
382
+ /** https://tc39.es/ecma262/#sec-object-environment-records-hasthisbinding */
383
+ HasThisBinding() {
384
+ // 1. Return false.
385
+ return Value.false;
386
+ }
387
+
388
+ /** https://tc39.es/ecma262/#sec-object-environment-records-hassuperbinding */
389
+ HasSuperBinding() {
390
+ // 1. Return falase.
391
+ return Value.false;
392
+ }
393
+
394
+ /** https://tc39.es/ecma262/#sec-object-environment-records-withbaseobject */
395
+ WithBaseObject() {
396
+ // 1. Let envRec be the object Environment Record for which the method was invoked.
397
+ const envRec = this;
398
+ // 2. If the IsWithEnvironment flag of envRec is true, return the binding object for envRec.
399
+ if (envRec.IsWithEnvironment === Value.true) {
400
+ return envRec.BindingObject;
401
+ }
402
+ // 3. Otherwise, return undefined.
403
+ return Value.undefined;
404
+ }
405
+
406
+ // NON-SPEC
407
+ override mark(m: GCMarker) {
408
+ // TODO(ts): this function does not call super.mark(). is it a mistake?
409
+ m(this.BindingObject);
410
+ }
411
+ }
412
+
413
+ /** https://tc39.es/ecma262/#sec-function-environment-records */
414
+ export class FunctionEnvironmentRecord extends DeclarativeEnvironmentRecord {
415
+ /** https://tc39.es/ecma262/#sec-newfunctionenvironment */
416
+ constructor(F: ECMAScriptFunctionObject, newTarget: UndefinedValue | ObjectValue) {
417
+ // 1. Assert: F is an ECMAScript function.
418
+ Assert(isECMAScriptFunctionObject(F));
419
+ // 2. Assert: Type(newTarget) is Undefined or Object.
420
+ Assert(newTarget instanceof UndefinedValue || newTarget instanceof ObjectValue);
421
+ // 3. Let env be a new function Environment Record containing no bindings.
422
+ super(F.Environment);
423
+ // 4. Set env.[[FunctionObject]] to F.
424
+ this.FunctionObject = F;
425
+ // 5. If F.[[ThisMode]] is lexical, set env.[[ThisBindingStatus]] to lexical.
426
+
427
+ if (F.ThisMode === 'lexical') {
428
+ this.ThisBindingStatus = 'lexical';
429
+ } else { // 6. Else, set env.[[ThisBindingStatus]] to uninitialized.
430
+ this.ThisBindingStatus = 'uninitialized';
431
+ }
432
+ // 7. Set env.[[NewTarget]] to newTarget.
433
+ this.NewTarget = newTarget;
434
+ // 8. Set env.[[OuterEnv]] to F.[[Environment]].
435
+ // 9. Return env.
436
+ }
437
+
438
+ protected ThisValue!: Value;
439
+
440
+ ThisBindingStatus: 'lexical' | 'uninitialized' | 'initialized';
441
+
442
+ readonly FunctionObject: ECMAScriptFunctionObject;
443
+
444
+ readonly NewTarget: UndefinedValue | ObjectValue;
445
+
446
+ /** https://tc39.es/ecma262/#sec-bindthisvalue */
447
+ BindThisValue(V: Value) {
448
+ // 1. Let envRec be the function Environment Record for which the method was invoked.
449
+ const envRec = this;
450
+ // 2. Assert: envRec.[[ThisBindingStatus]] is not lexical.
451
+ Assert(envRec.ThisBindingStatus !== 'lexical');
452
+ // 3. If envRec.[[ThisBindingStatus]] is initialized, throw a ReferenceError exception.
453
+ if (envRec.ThisBindingStatus === 'initialized') {
454
+ return surroundingAgent.Throw('ReferenceError', 'InvalidThis');
455
+ }
456
+ // 4. Set envRec.[[ThisValue]] to V.
457
+ envRec.ThisValue = V;
458
+ // 5. Set envRec.[[ThisBindingStatus]] to initialized.
459
+ envRec.ThisBindingStatus = 'initialized';
460
+ // 6. Return V.
461
+ return V;
462
+ }
463
+
464
+ /** https://tc39.es/ecma262/#sec-function-environment-records-hasthisbinding */
465
+ override HasThisBinding() {
466
+ // 1. Let envRec be the function Environment Record for which the method was invoked.
467
+ const envRec = this;
468
+ // 2. If envRec.[[ThisBindingStatus]] is lexical, return false; otherwise, return true.
469
+ if (envRec.ThisBindingStatus === 'lexical') {
470
+ return Value.false;
471
+ } else {
472
+ return Value.true;
473
+ }
474
+ }
475
+
476
+ /** https://tc39.es/ecma262/#sec-function-environment-records-hassuperbinding */
477
+ override HasSuperBinding() {
478
+ const envRec = this;
479
+ // 1. If envRec.[[ThisBindingStatus]] is lexical, return false.
480
+ if (envRec.ThisBindingStatus === 'lexical') {
481
+ return Value.false;
482
+ }
483
+ // 2. If envRec.[[FunctionObject]].[[HomeObject]] has the value undefined, return false; otherwise, return true.
484
+ if (envRec.FunctionObject.HomeObject === Value.undefined) {
485
+ return Value.false;
486
+ } else {
487
+ return Value.true;
488
+ }
489
+ }
490
+
491
+ /** https://tc39.es/ecma262/#sec-function-environment-records-getthisbinding */
492
+ GetThisBinding() {
493
+ // 1. Let envRec be the function Environment Record for which the method was invoked.
494
+ const envRec = this;
495
+ // 2. Assert: envRec.[[ThisBindingStatus]] is not lexical.
496
+ Assert(envRec.ThisBindingStatus !== 'lexical');
497
+ // 3. If envRec.[[ThisBindingStatus]] is uninitialized, throw a ReferenceError exception.
498
+ if (envRec.ThisBindingStatus === 'uninitialized') {
499
+ return surroundingAgent.Throw('ReferenceError', 'InvalidThis');
500
+ }
501
+ // 4. Return envRec.[[ThisValue]].
502
+ return envRec.ThisValue;
503
+ }
504
+
505
+ /** https://tc39.es/ecma262/#sec-getsuperbase */
506
+ GetSuperBase() {
507
+ const envRec = this;
508
+ // 1. Let home be envRec.[[FunctionObject]].[[HomeObject]].
509
+ const home = envRec.FunctionObject.HomeObject;
510
+ // 2. If home has the value undefined, return undefined.
511
+ if (home === Value.undefined) {
512
+ return Value.undefined;
513
+ }
514
+ // 3. Assert: Type(home) is Object.
515
+ Assert(home instanceof ObjectValue);
516
+ // 4. Return ! home.[[GetPrototypeOf]]().
517
+ return X(home.GetPrototypeOf());
518
+ }
519
+
520
+ override mark(m: GCMarker) {
521
+ super.mark(m);
522
+ m(this.ThisValue);
523
+ m(this.FunctionObject);
524
+ m(this.NewTarget);
525
+ }
526
+ }
527
+
528
+ /** https://tc39.es/ecma262/#sec-global-environment-records */
529
+ export class GlobalEnvironmentRecord extends EnvironmentRecord {
530
+ readonly ObjectRecord: ObjectEnvironmentRecord;
531
+
532
+ readonly GlobalThisValue: ObjectValue;
533
+
534
+ readonly DeclarativeRecord: DeclarativeEnvironmentRecord;
535
+
536
+ /** https://tc39.es/ecma262/#sec-newglobalenvironment */
537
+ constructor(G: ObjectValue, thisValue: ObjectValue) {
538
+ // 1. Let objRec be NewObjectEnvironment(G, false, null).
539
+ const objRec = new ObjectEnvironmentRecord(G, Value.false, Value.null);
540
+ // 2. Let dclRec be a new declarative Environment Record containing no bindings.
541
+ const dclRec = new DeclarativeEnvironmentRecord(Value.null);
542
+ // 3. Let env be a new global Environment Record.
543
+ super(Value.null);
544
+ // 4. Set env.[[ObjectRecord]] to objRec.
545
+ this.ObjectRecord = objRec;
546
+ // 5. Set env.[[GlobalThisValue]] to thisValue.
547
+ this.GlobalThisValue = thisValue;
548
+ // 6. Set env.[[DeclarativeRecord]] to dclRec.
549
+ this.DeclarativeRecord = dclRec;
550
+ // 8. Set env.[[OuterEnv]] to null.
551
+ // 9. Return env.
552
+ }
553
+
554
+ /** https://tc39.es/ecma262/#sec-global-environment-records-hasbinding-n */
555
+ * HasBinding(N: JSStringValue) {
556
+ // 1. Let envRec be the global Environment Record for which the method was invoked.
557
+ const envRec = this;
558
+ // 2. Let DclRec be envRec.[[DeclarativeRecord]].
559
+ const DclRec = envRec.DeclarativeRecord;
560
+ // 3. If DclRec.HasBinding(N) is true, return true.
561
+ if ((yield* DclRec.HasBinding(N)) === Value.true) {
562
+ return Value.true;
563
+ }
564
+ // 4. If DclRec.HasBinding(N) is true, return true.
565
+ const ObjRec = envRec.ObjectRecord;
566
+ // 5. Let ObjRec be envRec.[[ObjectRecord]].
567
+ return yield* ObjRec.HasBinding(N);
568
+ }
569
+
570
+ /** https://tc39.es/ecma262/#sec-global-environment-records-createmutablebinding-n-d */
571
+ * CreateMutableBinding(N: JSStringValue, D: BooleanValue) {
572
+ // 1. Let envRec be the global Environment Record for which the method was invoked.
573
+ const envRec = this;
574
+ // 2. Let DclRec be envRec.[[DeclarativeRecord]].
575
+ const DclRec = envRec.DeclarativeRecord;
576
+ // 3. If DclRec.HasBinding(N) is true, throw a TypeError exception.
577
+ if ((yield* DclRec.HasBinding(N)) === Value.true) {
578
+ return surroundingAgent.Throw('TypeError', 'AlreadyDeclared', N);
579
+ }
580
+ // 4. Return DclRec.CreateMutableBinding(N, D).
581
+ return yield* DclRec.CreateMutableBinding(N, D);
582
+ }
583
+
584
+ /** https://tc39.es/ecma262/#sec-global-environment-records-createimmutablebinding-n-s */
585
+ CreateImmutableBinding(N: JSStringValue, S: BooleanValue) {
586
+ // 1. Let envRec be the global Environment Record for which the method was invoked.
587
+ const envRec = this;
588
+ // 2. Let DclRec be envRec.[[DeclarativeRecord]].
589
+ const DclRec = envRec.DeclarativeRecord;
590
+ // 3. If DclRec.HasBinding(N) is true, throw a TypeError exception.
591
+ // TODO: remove skipDebugger
592
+ if (skipDebugger(DclRec.HasBinding(N)) === Value.true) {
593
+ return surroundingAgent.Throw('TypeError', 'AlreadyDeclared', N);
594
+ }
595
+ // Return DclRec.CreateImmutableBinding(N, S).
596
+ return DclRec.CreateImmutableBinding(N, S);
597
+ }
598
+
599
+ /** https://tc39.es/ecma262/#sec-global-environment-records-initializebinding-n-v */
600
+ * InitializeBinding(N: JSStringValue, V: Value) {
601
+ // 1. Let envRec be the global Environment Record for which the method was invoked.
602
+ const envRec = this;
603
+ // 2. Let DclRec be envRec.[[DeclarativeRecord]].
604
+ const DclRec = envRec.DeclarativeRecord;
605
+ // 3. If DclRec.HasBinding(N) is true, then
606
+ // TODO: remove skipDebugger
607
+ if (skipDebugger(DclRec.HasBinding(N)) === Value.true) {
608
+ // a. Return DclRec.InitializeBinding(N, V).
609
+ return yield* DclRec.InitializeBinding(N, V);
610
+ }
611
+ // 4. Assert: If the binding exists, it must be in the object Environment Record.
612
+ // 5. Let ObjRec be envRec.[[ObjectRecord]].
613
+ const ObjRec = envRec.ObjectRecord;
614
+ // 6. Return ? ObjRec.InitializeBinding(N, V).
615
+ return yield* ObjRec.InitializeBinding(N, V);
616
+ }
617
+
618
+ /** https://tc39.es/ecma262/#sec-global-environment-records-setmutablebinding-n-v-s */
619
+ * SetMutableBinding(N: JSStringValue, V: Value, S: BooleanValue): PlainEvaluator {
620
+ // 1. Let envRec be the global Environment Record for which the method was invoked.
621
+ const envRec = this;
622
+ // 2. Let DclRec be envRec.[[DeclarativeRecord]].
623
+ const DclRec = envRec.DeclarativeRecord;
624
+ // 3. If DclRec.HasBinding(N) is true, then
625
+ if ((yield* DclRec.HasBinding(N)) === Value.true) {
626
+ // a. Return DclRec.SetMutableBinding(N, V, S).
627
+ return yield* DclRec.SetMutableBinding(N, V, S);
628
+ }
629
+ // 4. Let ObjRec be envRec.[[ObjectRecord]].
630
+ const ObjRec = envRec.ObjectRecord;
631
+ // 5. Return ? ObjRec.SetMutableBinding(N, V, S).
632
+ Q(yield* ObjRec.SetMutableBinding(N, V, S));
633
+ return undefined;
634
+ }
635
+
636
+ /** https://tc39.es/ecma262/#sec-global-environment-records-getbindingvalue-n-s */
637
+ * GetBindingValue(N: JSStringValue, S: BooleanValue): ValueEvaluator {
638
+ // 1. Let envRec be the global Environment Record for which the method was invoked.
639
+ const envRec = this;
640
+ // 2. Let DclRec be envRec.[[DeclarativeRecord]].
641
+ const DclRec = envRec.DeclarativeRecord;
642
+ // 3. If DclRec.HasBinding(N) is true, then
643
+ if ((yield* DclRec.HasBinding(N)) === Value.true) {
644
+ // a. Return DclRec.GetBindingValue(N, S).
645
+ return yield* DclRec.GetBindingValue(N, S);
646
+ }
647
+ // 4. Let ObjRec be envRec.[[ObjectRecord]].
648
+ const ObjRec = envRec.ObjectRecord;
649
+ // 5. Return ObjRec.GetBindingValue(N, S).
650
+ return yield* ObjRec.GetBindingValue(N, S);
651
+ }
652
+
653
+ /** https://tc39.es/ecma262/#sec-global-environment-records-deletebinding-n */
654
+ * DeleteBinding(N: JSStringValue): PlainEvaluator<BooleanValue> {
655
+ // 1. Let envRec be the global Environment Record for which the method was invoked.
656
+ const envRec = this;
657
+ // 2. Let DclRec be envRec.[[DeclarativeRecord]].
658
+ const DclRec = this.DeclarativeRecord;
659
+ // 3. Let DclRec be envRec.[[DeclarativeRecord]].
660
+ if ((yield* DclRec.HasBinding(N)) === Value.true) {
661
+ // a. Return DclRec.DeleteBinding(N).
662
+ return Q(yield* DclRec.DeleteBinding(N));
663
+ }
664
+ // 4. Let ObjRec be envRec.[[ObjectRecord]].
665
+ const ObjRec = envRec.ObjectRecord;
666
+ // 5. Let globalObject be the binding object for ObjRec.
667
+ const globalObject = ObjRec.BindingObject;
668
+ // 6. Let existingProp be ? HasOwnProperty(globalObject, N).
669
+ const existingProp = Q(yield* HasOwnProperty(globalObject, N));
670
+ // 7. If existingProp is true, then
671
+ if (existingProp === Value.true) {
672
+ // a. Return ? ObjRec.DeleteBinding(N).
673
+ return Q(yield* ObjRec.DeleteBinding(N));
674
+ }
675
+ // 8. Return true.
676
+ return Value.true;
677
+ }
678
+
679
+ /** https://tc39.es/ecma262/#sec-global-environment-records-hasthisbinding */
680
+ HasThisBinding() {
681
+ // Return true.
682
+ return Value.true;
683
+ }
684
+
685
+ /** https://tc39.es/ecma262/#sec-global-environment-records-hassuperbinding */
686
+ HasSuperBinding() {
687
+ // 1. Return false.
688
+ return Value.false;
689
+ }
690
+
691
+ /** https://tc39.es/ecma262/#sec-global-environment-records-withbaseobject */
692
+ WithBaseObject() {
693
+ // 1. Return undefined.
694
+ return Value.undefined;
695
+ }
696
+
697
+ /** https://tc39.es/ecma262/#sec-global-environment-records-getthisbinding */
698
+ GetThisBinding() {
699
+ // 1. Let envRec be the global Environment Record for which the method was invoked.
700
+ const envRec = this;
701
+ // 2. Return envRec.[[GlobalThisValue]].
702
+ return envRec.GlobalThisValue;
703
+ }
704
+
705
+ /** https://tc39.es/ecma262/#sec-haslexicaldeclaration */
706
+ * HasLexicalDeclaration(N: JSStringValue) {
707
+ // 1. Let envRec be the global Environment Record for which the method was invoked.
708
+ const envRec = this;
709
+ // 2. Let envRec be the global Environment Record for which the method was invoked.
710
+ const DclRec = envRec.DeclarativeRecord;
711
+ // 3. Let DclRec be envRec.[[DeclarativeRecord]].
712
+ return yield* DclRec.HasBinding(N);
713
+ }
714
+
715
+ /** https://tc39.es/ecma262/#sec-hasrestrictedglobalproperty */
716
+ * HasRestrictedGlobalProperty(N: JSStringValue): ValueEvaluator<BooleanValue> {
717
+ // 1. Let envRec be the global Environment Record for which the method was invoked.
718
+ const envRec = this;
719
+ // 2. Let ObjRec be envRec.[[ObjectRecord]].
720
+ const ObjRec = envRec.ObjectRecord;
721
+ // 3. Let globalObject be the binding object for ObjRec.
722
+ const globalObject = ObjRec.BindingObject;
723
+ // 4. Let existingProp be ? globalObject.[[GetOwnProperty]](N).
724
+ const existingProp = Q(yield* globalObject.GetOwnProperty(N));
725
+ // 5. If existingProp is undefined, return false.
726
+ if (existingProp instanceof UndefinedValue) {
727
+ return Value.false;
728
+ }
729
+ // 6. If existingProp.[[Configurable]] is true, return false.
730
+ if (existingProp.Configurable === Value.true) {
731
+ return Value.false;
732
+ }
733
+ // Return true.
734
+ return Value.true;
735
+ }
736
+
737
+ /** https://tc39.es/ecma262/#sec-candeclareglobalvar */
738
+ * CanDeclareGlobalVar(N: JSStringValue): ValueEvaluator<BooleanValue> {
739
+ // 1. Let envRec be the global Environment Record for which the method was invoked.
740
+ const envRec = this;
741
+ // 2. Let ObjRec be envRec.[[ObjectRecord]].
742
+ const ObjRec = envRec.ObjectRecord;
743
+ // 3. Let globalObject be the binding object for ObjRec.
744
+ const globalObject = ObjRec.BindingObject;
745
+ // 4. Let hasProperty be ? HasOwnProperty(globalObject, N).
746
+ const hasProperty = Q(yield* HasOwnProperty(globalObject, N));
747
+ // 5. If hasProperty is true, return true.
748
+ if (hasProperty === Value.true) {
749
+ return Value.true;
750
+ }
751
+ // 6. Return ? IsExtensible(globalObject).
752
+ return Q(yield* IsExtensible(globalObject));
753
+ }
754
+
755
+ /** https://tc39.es/ecma262/#sec-candeclareglobalfunction */
756
+ * CanDeclareGlobalFunction(N: JSStringValue): ValueEvaluator<BooleanValue> {
757
+ // 1. Let envRec be the global Environment Record for which the method was invoked.
758
+ const envRec = this;
759
+ // 2. Let ObjRec be envRec.[[ObjectRecord]].
760
+ const ObjRec = envRec.ObjectRecord;
761
+ // 3. Let globalObject be the binding object for ObjRec.
762
+ const globalObject = ObjRec.BindingObject;
763
+ // 4. Let existingProp be ? globalObject.[[GetOwnProperty]](N).
764
+ const existingProp = Q(yield* globalObject.GetOwnProperty(N));
765
+ // 5. If existingProp is undefined, return ? IsExtensible(globalObject).
766
+ if (existingProp instanceof UndefinedValue) {
767
+ return Q(yield* IsExtensible(globalObject));
768
+ }
769
+ // 6. If existingProp.[[Configurable]] is true, return true.
770
+ if (existingProp.Configurable === Value.true) {
771
+ return Value.true;
772
+ }
773
+ // 7. If IsDataDescriptor(existingProp) is true and existingProp has attribute values
774
+ // { [[Writable]]: true, [[Enumerable]]: true }, return true.
775
+ if (IsDataDescriptor(existingProp) === true
776
+ && existingProp.Writable === Value.true
777
+ && existingProp.Enumerable === Value.true) {
778
+ return Value.true;
779
+ }
780
+ // 8. Return false.
781
+ return Value.false;
782
+ }
783
+
784
+ /** https://tc39.es/ecma262/#sec-createglobalvarbinding */
785
+ * CreateGlobalVarBinding(N: JSStringValue, D: BooleanValue): PlainEvaluator {
786
+ // 1. Let envRec be the global Environment Record for which the method was invoked.
787
+ const envRec = this;
788
+ // 2. Let ObjRec be envRec.[[ObjectRecord]].
789
+ const ObjRec = envRec.ObjectRecord;
790
+ // 3. Let globalObject be the binding object for ObjRec.
791
+ const globalObject = ObjRec.BindingObject;
792
+ // 4. Let hasProperty be ? HasOwnProperty(globalObject, N).
793
+ const hasProperty = Q(yield* HasOwnProperty(globalObject, N));
794
+ // 5. Let extensible be ? IsExtensible(globalObject).
795
+ const extensible = Q(yield* IsExtensible(globalObject));
796
+ // 6. If hasProperty is false and extensible is true, then
797
+ if (hasProperty === Value.false && extensible === Value.true) {
798
+ // a. Perform ? ObjRec.CreateMutableBinding(N, D).
799
+ Q(yield* ObjRec.CreateMutableBinding(N, D));
800
+ // b. Perform ? ObjRec.InitializeBinding(N, undefined).
801
+ Q(yield* ObjRec.InitializeBinding(N, Value.undefined));
802
+ }
803
+ // return NormalCompletion(empty).
804
+ return NormalCompletion(undefined);
805
+ }
806
+
807
+ /** https://tc39.es/ecma262/#sec-createglobalfunctionbinding */
808
+ * CreateGlobalFunctionBinding(N: JSStringValue, V: Value, D: BooleanValue): PlainEvaluator {
809
+ // 1. Let envRec be the global Environment Record for which the method was invoked.
810
+ const envRec = this;
811
+ // 2. Let ObjRec be envRec.[[ObjectRecord]].
812
+ const ObjRec = envRec.ObjectRecord;
813
+ // 3. Let globalObject be the binding object for ObjRec.
814
+ const globalObject = ObjRec.BindingObject;
815
+ // 4. Let existingProp be ? globalObject.[[GetOwnProperty]](N).
816
+ const existingProp = Q(yield* globalObject.GetOwnProperty(N));
817
+ // 5. If existingProp is undefined or existingProp.[[Configurable]] is true, then
818
+ let desc;
819
+ if (existingProp instanceof UndefinedValue || existingProp.Configurable === Value.true) {
820
+ // a. Let desc be the PropertyDescriptor { [[Value]]: V, [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: D }.
821
+ desc = Descriptor({
822
+ Value: V,
823
+ Writable: Value.true,
824
+ Enumerable: Value.true,
825
+ Configurable: D,
826
+ });
827
+ } else {
828
+ // a. Let desc be the PropertyDescriptor { [[Value]]: V }.
829
+ desc = Descriptor({
830
+ Value: V,
831
+ });
832
+ }
833
+ // 7. Perform ? DefinePropertyOrThrow(globalObject, N, desc).
834
+ Q(yield* DefinePropertyOrThrow(globalObject, N, desc));
835
+ // 8. Record that the binding for N in ObjRec has been initialized.
836
+ // 9. Perform ? Set(globalObject, N, V, false).
837
+ Q(yield* Set(globalObject, N, V, Value.false));
838
+ // 1. Return NormalCompletion(empty).
839
+ return NormalCompletion(undefined);
840
+ }
841
+
842
+ override mark(m: GCMarker) {
843
+ // TODO(ts): this function does not call super.mark(). is it a mistake?
844
+ m(this.ObjectRecord);
845
+ m(this.GlobalThisValue);
846
+ m(this.DeclarativeRecord);
847
+ }
848
+ }
849
+
850
+ /** https://tc39.es/ecma262/#sec-module-environment-records */
851
+ export class ModuleEnvironmentRecord extends DeclarativeEnvironmentRecord {
852
+ declare readonly bindings: JSStringMap<ModuleEnvironmentBinding>;
853
+
854
+ /** https://tc39.es/ecma262/#sec-module-environment-records-getbindingvalue-n-s */
855
+ override* GetBindingValue(N: JSStringValue, S: BooleanValue): ValueEvaluator {
856
+ // 1. Assert: S is true.
857
+ Assert(S === Value.true);
858
+ // 2. Let envRec be the module Environment Record for which the method was invoked.
859
+ const envRec = this;
860
+ // 3. Assert: envRec has a binding for N.
861
+ const binding = envRec.bindings.get(N);
862
+ Assert(binding !== undefined);
863
+ // 4. If the binding for N is an indirect binding, then
864
+ if (binding.indirect === true) {
865
+ // a. Let M and N2 be the indirection values provided when this binding for N was created.
866
+ const [M, N2] = binding.target;
867
+ // b.Let targetEnv be M.[[Environment]].
868
+ const targetEnv = M.Environment;
869
+ // c. If targetEnv is undefined, throw a ReferenceError exception.
870
+ if (!targetEnv) {
871
+ return surroundingAgent.Throw('ReferenceError', 'NotDefined', N);
872
+ }
873
+ // d. Return ? targetEnv.GetBindingValue(N2, true).
874
+ return yield* targetEnv.GetBindingValue(N2, Value.true);
875
+ }
876
+ // 5. If the binding for N in envRec is an uninitialized binding, throw a ReferenceError exception.
877
+ if (binding.initialized === false) {
878
+ return surroundingAgent.Throw('ReferenceError', 'NotInitialized', N);
879
+ }
880
+ // 6. Return the value currently bound to N in envRec.
881
+ return NormalCompletion(binding.value!);
882
+ }
883
+
884
+ /** https://tc39.es/ecma262/#sec-module-environment-records-deletebinding-n */
885
+ override DeleteBinding(): never {
886
+ Assert(false, 'This method is never invoked. See #sec-delete-operator-static-semantics-early-errors');
887
+ }
888
+
889
+ /** https://tc39.es/ecma262/#sec-module-environment-records-hasthisbinding */
890
+ override HasThisBinding() {
891
+ // Return true.
892
+ return Value.true;
893
+ }
894
+
895
+ /** https://tc39.es/ecma262/#sec-module-environment-records-getthisbinding */
896
+ GetThisBinding() {
897
+ // Return undefined.
898
+ return Value.undefined;
899
+ }
900
+
901
+ /** https://tc39.es/ecma262/#sec-createimportbinding */
902
+ CreateImportBinding(N: JSStringValue, M: AbstractModuleRecord, N2: JSStringValue) {
903
+ // 1. Let envRec be the module Environment Record for which the method was invoked.
904
+ const envRec = this;
905
+ // 2. Assert: envRec does not already have a binding for N.
906
+ Assert(skipDebugger(envRec.HasBinding(N)) === Value.false);
907
+ // 3. Assert: M is a Module Record.
908
+ Assert(M instanceof AbstractModuleRecord);
909
+ // 4. Assert: When M.[[Environment]] is instantiated it will have a direct binding for N2.
910
+ // 5. Create an immutable indirect binding in envRec for N that references M and N2 as its target binding and record that the binding is initialized.
911
+ envRec.bindings.set(N, {
912
+ indirect: true,
913
+ target: [M, N2],
914
+ initialized: true,
915
+ mark(m: GCMarker) {
916
+ m(this.target[0]);
917
+ m(this.target[1]);
918
+ },
919
+ });
920
+ // 6. Return NormalCompletion(empty).
921
+ return NormalCompletion(undefined);
922
+ }
923
+ }
924
+
925
+ /** https://tc39.es/ecma262/#sec-getidentifierreference */
926
+ export function* GetIdentifierReference(env: EnvironmentRecord | NullValue, name: JSStringValue, strict: BooleanValue): PlainEvaluator<ReferenceRecord> {
927
+ // 1. If lex is the value null, then
928
+ if (env instanceof NullValue) {
929
+ // a. Return the Reference Record { [[Base]]: unresolvable, [[ReferencedName]]: name, [[Strict]]: strict, [[ThisValue]]: empty }.
930
+ return NormalCompletion(new ReferenceRecord({
931
+ Base: 'unresolvable',
932
+ ReferencedName: name,
933
+ Strict: strict,
934
+ ThisValue: undefined,
935
+ }));
936
+ }
937
+ // 2. Let exists be ? envRec.HasBinding(name).
938
+ const exists = Q(yield* env.HasBinding(name));
939
+ // 3. If exists is true, then
940
+ if (exists === Value.true) {
941
+ // a. Return the Reference Record { [[Base]]: env, [[ReferencedName]]: name, [[Strict]]: strict, [[ThisValue]]: empty }.
942
+ return NormalCompletion(new ReferenceRecord({
943
+ Base: env,
944
+ ReferencedName: name,
945
+ Strict: strict,
946
+ ThisValue: undefined,
947
+ }));
948
+ } else {
949
+ // a. Let outer be env.[[OuterEnv]].
950
+ const outer = env.OuterEnv;
951
+ // b. Return ? GetIdentifierReference(outer, name, strict).
952
+ return yield* GetIdentifierReference(outer, name, strict);
953
+ }
954
+ }
955
+
956
+ export class PrivateEnvironmentRecord {
957
+ readonly OuterPrivateEnvironment: PrivateEnvironmentRecord | NullValue;
958
+
959
+ readonly Names: PrivateName[] = [];
960
+
961
+ /** https://tc39.es/ecma262/#sec-newprivateenvironment */
962
+ constructor(outerEnv: PrivateEnvironmentRecord | NullValue) {
963
+ this.OuterPrivateEnvironment = outerEnv;
964
+ }
965
+
966
+ mark(m: GCMarker) {
967
+ this.Names.forEach((name) => {
968
+ m(name);
969
+ });
970
+ }
971
+ }
972
+
973
+ export type EnvironmentRecordWithThisBinding = FunctionEnvironmentRecord | GlobalEnvironmentRecord | ModuleEnvironmentRecord;