@engine262/engine262 0.0.1-01e9fa95a4e8a1c042efd00492309a2de4998fd0

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 (1271) 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 +39 -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 +20 -0
  9. package/declaration/abstract-ops/array-objects.d.mts.map +1 -0
  10. package/declaration/abstract-ops/arraybuffer-objects.d.mts +43 -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 +35 -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 +20 -0
  19. package/declaration/abstract-ops/dataview-objects.d.mts.map +1 -0
  20. package/declaration/abstract-ops/date-objects.d.mts +57 -0
  21. package/declaration/abstract-ops/date-objects.d.mts.map +1 -0
  22. package/declaration/abstract-ops/disposable-operations.d.mts +19 -0
  23. package/declaration/abstract-ops/disposable-operations.d.mts.map +1 -0
  24. package/declaration/abstract-ops/error-objects.d.mts +8 -0
  25. package/declaration/abstract-ops/error-objects.d.mts.map +1 -0
  26. package/declaration/abstract-ops/execution-contexts.d.mts +3 -0
  27. package/declaration/abstract-ops/execution-contexts.d.mts.map +1 -0
  28. package/declaration/abstract-ops/function-operations.d.mts +101 -0
  29. package/declaration/abstract-ops/function-operations.d.mts.map +1 -0
  30. package/declaration/abstract-ops/generator-operations.d.mts +33 -0
  31. package/declaration/abstract-ops/generator-operations.d.mts.map +1 -0
  32. package/declaration/abstract-ops/global-object.d.mts +11 -0
  33. package/declaration/abstract-ops/global-object.d.mts.map +1 -0
  34. package/declaration/abstract-ops/immutable-prototype-objects.d.mts +7 -0
  35. package/declaration/abstract-ops/immutable-prototype-objects.d.mts.map +1 -0
  36. package/declaration/abstract-ops/import-calls.d.mts +5 -0
  37. package/declaration/abstract-ops/import-calls.d.mts.map +1 -0
  38. package/declaration/abstract-ops/iterator-operations.d.mts +53 -0
  39. package/declaration/abstract-ops/iterator-operations.d.mts.map +1 -0
  40. package/declaration/abstract-ops/keyed-collections.d.mts +4 -0
  41. package/declaration/abstract-ops/keyed-collections.d.mts.map +1 -0
  42. package/declaration/abstract-ops/math.d.mts +23 -0
  43. package/declaration/abstract-ops/math.d.mts.map +1 -0
  44. package/declaration/abstract-ops/module-namespace-exotic-objects.d.mts +13 -0
  45. package/declaration/abstract-ops/module-namespace-exotic-objects.d.mts.map +1 -0
  46. package/declaration/abstract-ops/module-records.d.mts +64 -0
  47. package/declaration/abstract-ops/module-records.d.mts.map +1 -0
  48. package/declaration/abstract-ops/notational-conventions.d.mts +19 -0
  49. package/declaration/abstract-ops/notational-conventions.d.mts.map +1 -0
  50. package/declaration/abstract-ops/object-operations.d.mts +79 -0
  51. package/declaration/abstract-ops/object-operations.d.mts.map +1 -0
  52. package/declaration/abstract-ops/objects.d.mts +32 -0
  53. package/declaration/abstract-ops/objects.d.mts.map +1 -0
  54. package/declaration/abstract-ops/private-names.d.mts +15 -0
  55. package/declaration/abstract-ops/private-names.d.mts.map +1 -0
  56. package/declaration/abstract-ops/promise-operations.d.mts +49 -0
  57. package/declaration/abstract-ops/promise-operations.d.mts.map +1 -0
  58. package/declaration/abstract-ops/proxy-objects.d.mts +6 -0
  59. package/declaration/abstract-ops/proxy-objects.d.mts.map +1 -0
  60. package/declaration/abstract-ops/realms.d.mts +181 -0
  61. package/declaration/abstract-ops/realms.d.mts.map +1 -0
  62. package/declaration/abstract-ops/reference-operations.d.mts +28 -0
  63. package/declaration/abstract-ops/reference-operations.d.mts.map +1 -0
  64. package/declaration/abstract-ops/regexp-objects.d.mts +28 -0
  65. package/declaration/abstract-ops/regexp-objects.d.mts.map +1 -0
  66. package/declaration/abstract-ops/shadow-realm.d.mts +26 -0
  67. package/declaration/abstract-ops/shadow-realm.d.mts.map +1 -0
  68. package/declaration/abstract-ops/shared-arraybuffer.d.mts +4 -0
  69. package/declaration/abstract-ops/shared-arraybuffer.d.mts.map +1 -0
  70. package/declaration/abstract-ops/spec-types.d.mts +53 -0
  71. package/declaration/abstract-ops/spec-types.d.mts.map +1 -0
  72. package/declaration/abstract-ops/string-objects.d.mts +8 -0
  73. package/declaration/abstract-ops/string-objects.d.mts.map +1 -0
  74. package/declaration/abstract-ops/symbol-objects.d.mts +11 -0
  75. package/declaration/abstract-ops/symbol-objects.d.mts.map +1 -0
  76. package/declaration/abstract-ops/temporal/addition.d.mts +62 -0
  77. package/declaration/abstract-ops/temporal/addition.d.mts.map +1 -0
  78. package/declaration/abstract-ops/temporal/all.d.mts +13 -0
  79. package/declaration/abstract-ops/temporal/all.d.mts.map +1 -0
  80. package/declaration/abstract-ops/temporal/calendar.d.mts +203 -0
  81. package/declaration/abstract-ops/temporal/calendar.d.mts.map +1 -0
  82. package/declaration/abstract-ops/temporal/duration.d.mts +126 -0
  83. package/declaration/abstract-ops/temporal/duration.d.mts.map +1 -0
  84. package/declaration/abstract-ops/temporal/instant.d.mts +25 -0
  85. package/declaration/abstract-ops/temporal/instant.d.mts.map +1 -0
  86. package/declaration/abstract-ops/temporal/not-implemented.d.mts +5 -0
  87. package/declaration/abstract-ops/temporal/not-implemented.d.mts.map +1 -0
  88. package/declaration/abstract-ops/temporal/now.d.mts +11 -0
  89. package/declaration/abstract-ops/temporal/now.d.mts.map +1 -0
  90. package/declaration/abstract-ops/temporal/plain-date-time.d.mts +36 -0
  91. package/declaration/abstract-ops/temporal/plain-date-time.d.mts.map +1 -0
  92. package/declaration/abstract-ops/temporal/plain-date.d.mts +32 -0
  93. package/declaration/abstract-ops/temporal/plain-date.d.mts.map +1 -0
  94. package/declaration/abstract-ops/temporal/plain-month-day.d.mts +10 -0
  95. package/declaration/abstract-ops/temporal/plain-month-day.d.mts.map +1 -0
  96. package/declaration/abstract-ops/temporal/plain-time.d.mts +58 -0
  97. package/declaration/abstract-ops/temporal/plain-time.d.mts.map +1 -0
  98. package/declaration/abstract-ops/temporal/plain-year-month.d.mts +19 -0
  99. package/declaration/abstract-ops/temporal/plain-year-month.d.mts.map +1 -0
  100. package/declaration/abstract-ops/temporal/temporal.d.mts +157 -0
  101. package/declaration/abstract-ops/temporal/temporal.d.mts.map +1 -0
  102. package/declaration/abstract-ops/temporal/time-zone.d.mts +26 -0
  103. package/declaration/abstract-ops/temporal/time-zone.d.mts.map +1 -0
  104. package/declaration/abstract-ops/temporal/zoned-datetime.d.mts +28 -0
  105. package/declaration/abstract-ops/temporal/zoned-datetime.d.mts.map +1 -0
  106. package/declaration/abstract-ops/testing-comparison.d.mts +35 -0
  107. package/declaration/abstract-ops/testing-comparison.d.mts.map +1 -0
  108. package/declaration/abstract-ops/type-conversion.d.mts +62 -0
  109. package/declaration/abstract-ops/type-conversion.d.mts.map +1 -0
  110. package/declaration/abstract-ops/typedarray-objects.d.mts +33 -0
  111. package/declaration/abstract-ops/typedarray-objects.d.mts.map +1 -0
  112. package/declaration/abstract-ops/weak-operations.d.mts +4 -0
  113. package/declaration/abstract-ops/weak-operations.d.mts.map +1 -0
  114. package/declaration/api.d.mts +76 -0
  115. package/declaration/api.d.mts.map +1 -0
  116. package/declaration/completion.d.mts +156 -0
  117. package/declaration/completion.d.mts.map +1 -0
  118. package/declaration/ecma402/not-implemented.d.mts +3 -0
  119. package/declaration/ecma402/not-implemented.d.mts.map +1 -0
  120. package/declaration/evaluator.d.mts +61 -0
  121. package/declaration/evaluator.d.mts.map +1 -0
  122. package/declaration/execution-context/Agent.d.mts +75 -0
  123. package/declaration/execution-context/Agent.d.mts.map +1 -0
  124. package/declaration/execution-context/Environment.d.mts +175 -0
  125. package/declaration/execution-context/Environment.d.mts.map +1 -0
  126. package/declaration/execution-context/ExecutionContext.d.mts +48 -0
  127. package/declaration/execution-context/ExecutionContext.d.mts.map +1 -0
  128. package/declaration/execution-context/Job.d.mts +23 -0
  129. package/declaration/execution-context/Job.d.mts.map +1 -0
  130. package/declaration/execution-context/PrivateEnvironment.d.mts +12 -0
  131. package/declaration/execution-context/PrivateEnvironment.d.mts.map +1 -0
  132. package/declaration/execution-context/Realm.d.mts +24 -0
  133. package/declaration/execution-context/Realm.d.mts.map +1 -0
  134. package/declaration/execution-context/WeakReference.d.mts +12 -0
  135. package/declaration/execution-context/WeakReference.d.mts.map +1 -0
  136. package/declaration/execution-context/all.d.mts +8 -0
  137. package/declaration/execution-context/all.d.mts.map +1 -0
  138. package/declaration/host-defined/base64.d.mts +10 -0
  139. package/declaration/host-defined/base64.d.mts.map +1 -0
  140. package/declaration/host-defined/debugger-util.d.mts +2 -0
  141. package/declaration/host-defined/debugger-util.d.mts.map +1 -0
  142. package/declaration/host-defined/decimal.d.mts +29 -0
  143. package/declaration/host-defined/decimal.d.mts.map +1 -0
  144. package/declaration/host-defined/devtoolsEval.d.mts +3 -0
  145. package/declaration/host-defined/devtoolsEval.d.mts.map +1 -0
  146. package/declaration/host-defined/engine.d.mts +133 -0
  147. package/declaration/host-defined/engine.d.mts.map +1 -0
  148. package/declaration/host-defined/error-messages.d.mts +45 -0
  149. package/declaration/host-defined/error-messages.d.mts.map +1 -0
  150. package/declaration/host-defined/event-loop.d.mts +92 -0
  151. package/declaration/host-defined/event-loop.d.mts.map +1 -0
  152. package/declaration/host-defined/ieee754.d.mts +7 -0
  153. package/declaration/host-defined/ieee754.d.mts.map +1 -0
  154. package/declaration/host-defined/inspect.d.mts +4 -0
  155. package/declaration/host-defined/inspect.d.mts.map +1 -0
  156. package/declaration/host-defined/job-queue.d.mts +42 -0
  157. package/declaration/host-defined/job-queue.d.mts.map +1 -0
  158. package/declaration/host-defined/sort.d.mts +14 -0
  159. package/declaration/host-defined/sort.d.mts.map +1 -0
  160. package/declaration/host-defined/test262-intrinsics.d.mts +8 -0
  161. package/declaration/host-defined/test262-intrinsics.d.mts.map +1 -0
  162. package/declaration/index.d.mts +56 -0
  163. package/declaration/index.d.mts.map +1 -0
  164. package/declaration/intrinsics/AbstractModuleSource.d.mts +5 -0
  165. package/declaration/intrinsics/AbstractModuleSource.d.mts.map +1 -0
  166. package/declaration/intrinsics/AggregateError.d.mts +3 -0
  167. package/declaration/intrinsics/AggregateError.d.mts.map +1 -0
  168. package/declaration/intrinsics/AggregateErrorPrototype.d.mts +3 -0
  169. package/declaration/intrinsics/AggregateErrorPrototype.d.mts.map +1 -0
  170. package/declaration/intrinsics/Array.d.mts +3 -0
  171. package/declaration/intrinsics/Array.d.mts.map +1 -0
  172. package/declaration/intrinsics/ArrayBuffer.d.mts +3 -0
  173. package/declaration/intrinsics/ArrayBuffer.d.mts.map +1 -0
  174. package/declaration/intrinsics/ArrayBufferPrototype.d.mts +3 -0
  175. package/declaration/intrinsics/ArrayBufferPrototype.d.mts.map +1 -0
  176. package/declaration/intrinsics/ArrayIteratorPrototype.d.mts +3 -0
  177. package/declaration/intrinsics/ArrayIteratorPrototype.d.mts.map +1 -0
  178. package/declaration/intrinsics/ArrayPrototype.d.mts +3 -0
  179. package/declaration/intrinsics/ArrayPrototype.d.mts.map +1 -0
  180. package/declaration/intrinsics/ArrayPrototypeShared.d.mts +8 -0
  181. package/declaration/intrinsics/ArrayPrototypeShared.d.mts.map +1 -0
  182. package/declaration/intrinsics/AsyncDisposableStack.d.mts +8 -0
  183. package/declaration/intrinsics/AsyncDisposableStack.d.mts.map +1 -0
  184. package/declaration/intrinsics/AsyncDisposableStackPrototype.d.mts +3 -0
  185. package/declaration/intrinsics/AsyncDisposableStackPrototype.d.mts.map +1 -0
  186. package/declaration/intrinsics/AsyncFromSyncIteratorPrototype.d.mts +6 -0
  187. package/declaration/intrinsics/AsyncFromSyncIteratorPrototype.d.mts.map +1 -0
  188. package/declaration/intrinsics/AsyncFunction.d.mts +3 -0
  189. package/declaration/intrinsics/AsyncFunction.d.mts.map +1 -0
  190. package/declaration/intrinsics/AsyncFunctionPrototype.d.mts +3 -0
  191. package/declaration/intrinsics/AsyncFunctionPrototype.d.mts.map +1 -0
  192. package/declaration/intrinsics/AsyncGeneratorFunction.d.mts +3 -0
  193. package/declaration/intrinsics/AsyncGeneratorFunction.d.mts.map +1 -0
  194. package/declaration/intrinsics/AsyncGeneratorFunctionPrototype.d.mts +3 -0
  195. package/declaration/intrinsics/AsyncGeneratorFunctionPrototype.d.mts.map +1 -0
  196. package/declaration/intrinsics/AsyncGeneratorFunctionPrototypePrototype.d.mts +3 -0
  197. package/declaration/intrinsics/AsyncGeneratorFunctionPrototypePrototype.d.mts.map +1 -0
  198. package/declaration/intrinsics/AsyncIteratorPrototype.d.mts +3 -0
  199. package/declaration/intrinsics/AsyncIteratorPrototype.d.mts.map +1 -0
  200. package/declaration/intrinsics/BigInt.d.mts +8 -0
  201. package/declaration/intrinsics/BigInt.d.mts.map +1 -0
  202. package/declaration/intrinsics/BigIntPrototype.d.mts +6 -0
  203. package/declaration/intrinsics/BigIntPrototype.d.mts.map +1 -0
  204. package/declaration/intrinsics/Boolean.d.mts +8 -0
  205. package/declaration/intrinsics/Boolean.d.mts.map +1 -0
  206. package/declaration/intrinsics/BooleanPrototype.d.mts +5 -0
  207. package/declaration/intrinsics/BooleanPrototype.d.mts.map +1 -0
  208. package/declaration/intrinsics/DataView.d.mts +12 -0
  209. package/declaration/intrinsics/DataView.d.mts.map +1 -0
  210. package/declaration/intrinsics/DataViewPrototype.d.mts +3 -0
  211. package/declaration/intrinsics/DataViewPrototype.d.mts.map +1 -0
  212. package/declaration/intrinsics/Date.d.mts +8 -0
  213. package/declaration/intrinsics/Date.d.mts.map +1 -0
  214. package/declaration/intrinsics/DatePrototype.d.mts +12 -0
  215. package/declaration/intrinsics/DatePrototype.d.mts.map +1 -0
  216. package/declaration/intrinsics/DisposableStack.d.mts +8 -0
  217. package/declaration/intrinsics/DisposableStack.d.mts.map +1 -0
  218. package/declaration/intrinsics/DisposableStackPrototype.d.mts +3 -0
  219. package/declaration/intrinsics/DisposableStackPrototype.d.mts.map +1 -0
  220. package/declaration/intrinsics/Error.d.mts +18 -0
  221. package/declaration/intrinsics/Error.d.mts.map +1 -0
  222. package/declaration/intrinsics/ErrorPrototype.d.mts +3 -0
  223. package/declaration/intrinsics/ErrorPrototype.d.mts.map +1 -0
  224. package/declaration/intrinsics/FinalizationRegistry.d.mts +16 -0
  225. package/declaration/intrinsics/FinalizationRegistry.d.mts.map +1 -0
  226. package/declaration/intrinsics/FinalizationRegistryPrototype.d.mts +3 -0
  227. package/declaration/intrinsics/FinalizationRegistryPrototype.d.mts.map +1 -0
  228. package/declaration/intrinsics/ForInIteratorPrototype.d.mts +13 -0
  229. package/declaration/intrinsics/ForInIteratorPrototype.d.mts.map +1 -0
  230. package/declaration/intrinsics/Function.d.mts +3 -0
  231. package/declaration/intrinsics/Function.d.mts.map +1 -0
  232. package/declaration/intrinsics/FunctionPrototype.d.mts +13 -0
  233. package/declaration/intrinsics/FunctionPrototype.d.mts.map +1 -0
  234. package/declaration/intrinsics/GeneratorFunction.d.mts +3 -0
  235. package/declaration/intrinsics/GeneratorFunction.d.mts.map +1 -0
  236. package/declaration/intrinsics/GeneratorFunctionPrototype.d.mts +3 -0
  237. package/declaration/intrinsics/GeneratorFunctionPrototype.d.mts.map +1 -0
  238. package/declaration/intrinsics/GeneratorFunctionPrototypePrototype.d.mts +3 -0
  239. package/declaration/intrinsics/GeneratorFunctionPrototypePrototype.d.mts.map +1 -0
  240. package/declaration/intrinsics/Iterator.d.mts +3 -0
  241. package/declaration/intrinsics/Iterator.d.mts.map +1 -0
  242. package/declaration/intrinsics/IteratorHelperPrototype.d.mts +3 -0
  243. package/declaration/intrinsics/IteratorHelperPrototype.d.mts.map +1 -0
  244. package/declaration/intrinsics/IteratorPrototype.d.mts +3 -0
  245. package/declaration/intrinsics/IteratorPrototype.d.mts.map +1 -0
  246. package/declaration/intrinsics/JSON.d.mts +9 -0
  247. package/declaration/intrinsics/JSON.d.mts.map +1 -0
  248. package/declaration/intrinsics/Map.d.mts +13 -0
  249. package/declaration/intrinsics/Map.d.mts.map +1 -0
  250. package/declaration/intrinsics/MapIteratorPrototype.d.mts +7 -0
  251. package/declaration/intrinsics/MapIteratorPrototype.d.mts.map +1 -0
  252. package/declaration/intrinsics/MapPrototype.d.mts +3 -0
  253. package/declaration/intrinsics/MapPrototype.d.mts.map +1 -0
  254. package/declaration/intrinsics/Math.d.mts +4 -0
  255. package/declaration/intrinsics/Math.d.mts.map +1 -0
  256. package/declaration/intrinsics/NativeError.d.mts +6 -0
  257. package/declaration/intrinsics/NativeError.d.mts.map +1 -0
  258. package/declaration/intrinsics/Number.d.mts +8 -0
  259. package/declaration/intrinsics/Number.d.mts.map +1 -0
  260. package/declaration/intrinsics/NumberPrototype.d.mts +5 -0
  261. package/declaration/intrinsics/NumberPrototype.d.mts.map +1 -0
  262. package/declaration/intrinsics/Object.d.mts +3 -0
  263. package/declaration/intrinsics/Object.d.mts.map +1 -0
  264. package/declaration/intrinsics/ObjectPrototype.d.mts +5 -0
  265. package/declaration/intrinsics/ObjectPrototype.d.mts.map +1 -0
  266. package/declaration/intrinsics/Promise.d.mts +18 -0
  267. package/declaration/intrinsics/Promise.d.mts.map +1 -0
  268. package/declaration/intrinsics/PromisePrototype.d.mts +3 -0
  269. package/declaration/intrinsics/PromisePrototype.d.mts.map +1 -0
  270. package/declaration/intrinsics/Proxy.d.mts +12 -0
  271. package/declaration/intrinsics/Proxy.d.mts.map +1 -0
  272. package/declaration/intrinsics/Reflect.d.mts +3 -0
  273. package/declaration/intrinsics/Reflect.d.mts.map +1 -0
  274. package/declaration/intrinsics/RegExp.d.mts +13 -0
  275. package/declaration/intrinsics/RegExp.d.mts.map +1 -0
  276. package/declaration/intrinsics/RegExpPrototype.d.mts +12 -0
  277. package/declaration/intrinsics/RegExpPrototype.d.mts.map +1 -0
  278. package/declaration/intrinsics/RegExpStringIteratorPrototype.d.mts +7 -0
  279. package/declaration/intrinsics/RegExpStringIteratorPrototype.d.mts.map +1 -0
  280. package/declaration/intrinsics/Set.d.mts +8 -0
  281. package/declaration/intrinsics/Set.d.mts.map +1 -0
  282. package/declaration/intrinsics/SetIteratorPrototype.d.mts +7 -0
  283. package/declaration/intrinsics/SetIteratorPrototype.d.mts.map +1 -0
  284. package/declaration/intrinsics/SetPrototype.d.mts +3 -0
  285. package/declaration/intrinsics/SetPrototype.d.mts.map +1 -0
  286. package/declaration/intrinsics/ShadowRealm.d.mts +8 -0
  287. package/declaration/intrinsics/ShadowRealm.d.mts.map +1 -0
  288. package/declaration/intrinsics/ShadowRealmPrototype.d.mts +3 -0
  289. package/declaration/intrinsics/ShadowRealmPrototype.d.mts.map +1 -0
  290. package/declaration/intrinsics/String.d.mts +10 -0
  291. package/declaration/intrinsics/String.d.mts.map +1 -0
  292. package/declaration/intrinsics/StringIteratorPrototype.d.mts +3 -0
  293. package/declaration/intrinsics/StringIteratorPrototype.d.mts.map +1 -0
  294. package/declaration/intrinsics/StringPrototype.d.mts +6 -0
  295. package/declaration/intrinsics/StringPrototype.d.mts.map +1 -0
  296. package/declaration/intrinsics/SuppressedError.d.mts +3 -0
  297. package/declaration/intrinsics/SuppressedError.d.mts.map +1 -0
  298. package/declaration/intrinsics/SuppressedErrorPrototype.d.mts +3 -0
  299. package/declaration/intrinsics/SuppressedErrorPrototype.d.mts.map +1 -0
  300. package/declaration/intrinsics/Symbol.d.mts +8 -0
  301. package/declaration/intrinsics/Symbol.d.mts.map +1 -0
  302. package/declaration/intrinsics/SymbolPrototype.d.mts +6 -0
  303. package/declaration/intrinsics/SymbolPrototype.d.mts.map +1 -0
  304. package/declaration/intrinsics/Temporal/Duration.d.mts +18 -0
  305. package/declaration/intrinsics/Temporal/Duration.d.mts.map +1 -0
  306. package/declaration/intrinsics/Temporal/DurationPrototype.d.mts +3 -0
  307. package/declaration/intrinsics/Temporal/DurationPrototype.d.mts.map +1 -0
  308. package/declaration/intrinsics/Temporal/Instant.d.mts +9 -0
  309. package/declaration/intrinsics/Temporal/Instant.d.mts.map +1 -0
  310. package/declaration/intrinsics/Temporal/InstantPrototype.d.mts +3 -0
  311. package/declaration/intrinsics/Temporal/InstantPrototype.d.mts.map +1 -0
  312. package/declaration/intrinsics/Temporal/Now.d.mts +3 -0
  313. package/declaration/intrinsics/Temporal/Now.d.mts.map +1 -0
  314. package/declaration/intrinsics/Temporal/PlainDate.d.mts +16 -0
  315. package/declaration/intrinsics/Temporal/PlainDate.d.mts.map +1 -0
  316. package/declaration/intrinsics/Temporal/PlainDatePrototype.d.mts +3 -0
  317. package/declaration/intrinsics/Temporal/PlainDatePrototype.d.mts.map +1 -0
  318. package/declaration/intrinsics/Temporal/PlainDateTime.d.mts +17 -0
  319. package/declaration/intrinsics/Temporal/PlainDateTime.d.mts.map +1 -0
  320. package/declaration/intrinsics/Temporal/PlainDateTimePrototype.d.mts +3 -0
  321. package/declaration/intrinsics/Temporal/PlainDateTimePrototype.d.mts.map +1 -0
  322. package/declaration/intrinsics/Temporal/PlainMonthDay.d.mts +12 -0
  323. package/declaration/intrinsics/Temporal/PlainMonthDay.d.mts.map +1 -0
  324. package/declaration/intrinsics/Temporal/PlainMonthDayPrototype.d.mts +3 -0
  325. package/declaration/intrinsics/Temporal/PlainMonthDayPrototype.d.mts.map +1 -0
  326. package/declaration/intrinsics/Temporal/PlainTime.d.mts +9 -0
  327. package/declaration/intrinsics/Temporal/PlainTime.d.mts.map +1 -0
  328. package/declaration/intrinsics/Temporal/PlainTimePrototype.d.mts +3 -0
  329. package/declaration/intrinsics/Temporal/PlainTimePrototype.d.mts.map +1 -0
  330. package/declaration/intrinsics/Temporal/PlainYearMonth.d.mts +17 -0
  331. package/declaration/intrinsics/Temporal/PlainYearMonth.d.mts.map +1 -0
  332. package/declaration/intrinsics/Temporal/PlainYearMonthPrototype.d.mts +3 -0
  333. package/declaration/intrinsics/Temporal/PlainYearMonthPrototype.d.mts.map +1 -0
  334. package/declaration/intrinsics/Temporal/Temporal.d.mts +3 -0
  335. package/declaration/intrinsics/Temporal/Temporal.d.mts.map +1 -0
  336. package/declaration/intrinsics/Temporal/ZonedDateTime.d.mts +13 -0
  337. package/declaration/intrinsics/Temporal/ZonedDateTime.d.mts.map +1 -0
  338. package/declaration/intrinsics/Temporal/ZonedDateTimePrototype.d.mts +3 -0
  339. package/declaration/intrinsics/Temporal/ZonedDateTimePrototype.d.mts.map +1 -0
  340. package/declaration/intrinsics/ThrowTypeError.d.mts +3 -0
  341. package/declaration/intrinsics/ThrowTypeError.d.mts.map +1 -0
  342. package/declaration/intrinsics/TypedArray.d.mts +196 -0
  343. package/declaration/intrinsics/TypedArray.d.mts.map +1 -0
  344. package/declaration/intrinsics/TypedArrayConstructors.d.mts +3 -0
  345. package/declaration/intrinsics/TypedArrayConstructors.d.mts.map +1 -0
  346. package/declaration/intrinsics/TypedArrayPrototype.d.mts +3 -0
  347. package/declaration/intrinsics/TypedArrayPrototype.d.mts.map +1 -0
  348. package/declaration/intrinsics/TypedArrayPrototypes.d.mts +4 -0
  349. package/declaration/intrinsics/TypedArrayPrototypes.d.mts.map +1 -0
  350. package/declaration/intrinsics/TypedArray_Uint8Array.d.mts +3 -0
  351. package/declaration/intrinsics/TypedArray_Uint8Array.d.mts.map +1 -0
  352. package/declaration/intrinsics/URIHandling.d.mts +3 -0
  353. package/declaration/intrinsics/URIHandling.d.mts.map +1 -0
  354. package/declaration/intrinsics/WeakMap.d.mts +11 -0
  355. package/declaration/intrinsics/WeakMap.d.mts.map +1 -0
  356. package/declaration/intrinsics/WeakMapPrototype.d.mts +3 -0
  357. package/declaration/intrinsics/WeakMapPrototype.d.mts.map +1 -0
  358. package/declaration/intrinsics/WeakRef.d.mts +8 -0
  359. package/declaration/intrinsics/WeakRef.d.mts.map +1 -0
  360. package/declaration/intrinsics/WeakRefPrototype.d.mts +3 -0
  361. package/declaration/intrinsics/WeakRefPrototype.d.mts.map +1 -0
  362. package/declaration/intrinsics/WeakSet.d.mts +8 -0
  363. package/declaration/intrinsics/WeakSet.d.mts.map +1 -0
  364. package/declaration/intrinsics/WeakSetPrototype.d.mts +3 -0
  365. package/declaration/intrinsics/WeakSetPrototype.d.mts.map +1 -0
  366. package/declaration/intrinsics/WrapForValidIteratorPrototype.d.mts +3 -0
  367. package/declaration/intrinsics/WrapForValidIteratorPrototype.d.mts.map +1 -0
  368. package/declaration/intrinsics/bootstrap.d.mts +19 -0
  369. package/declaration/intrinsics/bootstrap.d.mts.map +1 -0
  370. package/declaration/intrinsics/eval.d.mts +3 -0
  371. package/declaration/intrinsics/eval.d.mts.map +1 -0
  372. package/declaration/intrinsics/isFinite.d.mts +3 -0
  373. package/declaration/intrinsics/isFinite.d.mts.map +1 -0
  374. package/declaration/intrinsics/isNaN.d.mts +3 -0
  375. package/declaration/intrinsics/isNaN.d.mts.map +1 -0
  376. package/declaration/intrinsics/parseFloat.d.mts +3 -0
  377. package/declaration/intrinsics/parseFloat.d.mts.map +1 -0
  378. package/declaration/intrinsics/parseInt.d.mts +3 -0
  379. package/declaration/intrinsics/parseInt.d.mts.map +1 -0
  380. package/declaration/modules.d.mts +126 -0
  381. package/declaration/modules.d.mts.map +1 -0
  382. package/declaration/parse.d.mts +35 -0
  383. package/declaration/parse.d.mts.map +1 -0
  384. package/declaration/parser/BaseParser.d.mts +24 -0
  385. package/declaration/parser/BaseParser.d.mts.map +1 -0
  386. package/declaration/parser/ExpressionParser.d.mts +70 -0
  387. package/declaration/parser/ExpressionParser.d.mts.map +1 -0
  388. package/declaration/parser/FunctionParser.d.mts +43 -0
  389. package/declaration/parser/FunctionParser.d.mts.map +1 -0
  390. package/declaration/parser/IdentifierParser.d.mts +12 -0
  391. package/declaration/parser/IdentifierParser.d.mts.map +1 -0
  392. package/declaration/parser/LanguageParser.d.mts +10 -0
  393. package/declaration/parser/LanguageParser.d.mts.map +1 -0
  394. package/declaration/parser/Lexer.d.mts +76 -0
  395. package/declaration/parser/Lexer.d.mts.map +1 -0
  396. package/declaration/parser/ModuleParser.d.mts +19 -0
  397. package/declaration/parser/ModuleParser.d.mts.map +1 -0
  398. package/declaration/parser/ParseNode.d.mts +1323 -0
  399. package/declaration/parser/ParseNode.d.mts.map +1 -0
  400. package/declaration/parser/Parser.d.mts +30 -0
  401. package/declaration/parser/Parser.d.mts.map +1 -0
  402. package/declaration/parser/RegExpParser.d.mts +67 -0
  403. package/declaration/parser/RegExpParser.d.mts.map +1 -0
  404. package/declaration/parser/Scope.d.mts +114 -0
  405. package/declaration/parser/Scope.d.mts.map +1 -0
  406. package/declaration/parser/StatementParser.d.mts +56 -0
  407. package/declaration/parser/StatementParser.d.mts.map +1 -0
  408. package/declaration/parser/TemporalParser.d.mts +211 -0
  409. package/declaration/parser/TemporalParser.d.mts.map +1 -0
  410. package/declaration/parser/tokens.d.mts +31 -0
  411. package/declaration/parser/tokens.d.mts.map +1 -0
  412. package/declaration/parser/utils.d.mts +10 -0
  413. package/declaration/parser/utils.d.mts.map +1 -0
  414. package/declaration/runtime-semantics/AdditiveExpression.d.mts +3 -0
  415. package/declaration/runtime-semantics/AdditiveExpression.d.mts.map +1 -0
  416. package/declaration/runtime-semantics/ApplyStringOrNumericBinaryOperator.d.mts +5 -0
  417. package/declaration/runtime-semantics/ApplyStringOrNumericBinaryOperator.d.mts.map +1 -0
  418. package/declaration/runtime-semantics/ArgumentListEvaluation.d.mts +5 -0
  419. package/declaration/runtime-semantics/ArgumentListEvaluation.d.mts.map +1 -0
  420. package/declaration/runtime-semantics/ArrayLiteral.d.mts +5 -0
  421. package/declaration/runtime-semantics/ArrayLiteral.d.mts.map +1 -0
  422. package/declaration/runtime-semantics/ArrowFunction.d.mts +4 -0
  423. package/declaration/runtime-semantics/ArrowFunction.d.mts.map +1 -0
  424. package/declaration/runtime-semantics/AssignmentExpression.d.mts +8 -0
  425. package/declaration/runtime-semantics/AssignmentExpression.d.mts.map +1 -0
  426. package/declaration/runtime-semantics/AsyncArrowFunction.d.mts +4 -0
  427. package/declaration/runtime-semantics/AsyncArrowFunction.d.mts.map +1 -0
  428. package/declaration/runtime-semantics/AsyncFunctionExpression.d.mts +4 -0
  429. package/declaration/runtime-semantics/AsyncFunctionExpression.d.mts.map +1 -0
  430. package/declaration/runtime-semantics/AsyncGeneratorExpression.d.mts +4 -0
  431. package/declaration/runtime-semantics/AsyncGeneratorExpression.d.mts.map +1 -0
  432. package/declaration/runtime-semantics/AwaitExpression.d.mts +5 -0
  433. package/declaration/runtime-semantics/AwaitExpression.d.mts.map +1 -0
  434. package/declaration/runtime-semantics/BindingInitialization.d.mts +8 -0
  435. package/declaration/runtime-semantics/BindingInitialization.d.mts.map +1 -0
  436. package/declaration/runtime-semantics/BitwiseOperators.d.mts +5 -0
  437. package/declaration/runtime-semantics/BitwiseOperators.d.mts.map +1 -0
  438. package/declaration/runtime-semantics/Block.d.mts +8 -0
  439. package/declaration/runtime-semantics/Block.d.mts.map +1 -0
  440. package/declaration/runtime-semantics/BreakStatement.d.mts +4 -0
  441. package/declaration/runtime-semantics/BreakStatement.d.mts.map +1 -0
  442. package/declaration/runtime-semantics/BreakableStatement.d.mts +4 -0
  443. package/declaration/runtime-semantics/BreakableStatement.d.mts.map +1 -0
  444. package/declaration/runtime-semantics/CallExpression.d.mts +5 -0
  445. package/declaration/runtime-semantics/CallExpression.d.mts.map +1 -0
  446. package/declaration/runtime-semantics/ClassDeclaration.d.mts +8 -0
  447. package/declaration/runtime-semantics/ClassDeclaration.d.mts.map +1 -0
  448. package/declaration/runtime-semantics/ClassDefinitionEvaluation.d.mts +88 -0
  449. package/declaration/runtime-semantics/ClassDefinitionEvaluation.d.mts.map +1 -0
  450. package/declaration/runtime-semantics/ClassExpression.d.mts +5 -0
  451. package/declaration/runtime-semantics/ClassExpression.d.mts.map +1 -0
  452. package/declaration/runtime-semantics/ClassFieldDefinitionEvaluation.d.mts +21 -0
  453. package/declaration/runtime-semantics/ClassFieldDefinitionEvaluation.d.mts.map +1 -0
  454. package/declaration/runtime-semantics/ClassStaticBlockDefinitionEvaluation.d.mts +13 -0
  455. package/declaration/runtime-semantics/ClassStaticBlockDefinitionEvaluation.d.mts.map +1 -0
  456. package/declaration/runtime-semantics/CoalesceExpression.d.mts +5 -0
  457. package/declaration/runtime-semantics/CoalesceExpression.d.mts.map +1 -0
  458. package/declaration/runtime-semantics/CommaOperator.d.mts +5 -0
  459. package/declaration/runtime-semantics/CommaOperator.d.mts.map +1 -0
  460. package/declaration/runtime-semantics/ConditionalExpression.d.mts +5 -0
  461. package/declaration/runtime-semantics/ConditionalExpression.d.mts.map +1 -0
  462. package/declaration/runtime-semantics/ContinueStatement.d.mts +4 -0
  463. package/declaration/runtime-semantics/ContinueStatement.d.mts.map +1 -0
  464. package/declaration/runtime-semantics/CreateDynamicFunction.d.mts +4 -0
  465. package/declaration/runtime-semantics/CreateDynamicFunction.d.mts.map +1 -0
  466. package/declaration/runtime-semantics/DebuggerStatement.d.mts +5 -0
  467. package/declaration/runtime-semantics/DebuggerStatement.d.mts.map +1 -0
  468. package/declaration/runtime-semantics/DefineMethod.d.mts +10 -0
  469. package/declaration/runtime-semantics/DefineMethod.d.mts.map +1 -0
  470. package/declaration/runtime-semantics/DestructuringAssignmentEvaluation.d.mts +5 -0
  471. package/declaration/runtime-semantics/DestructuringAssignmentEvaluation.d.mts.map +1 -0
  472. package/declaration/runtime-semantics/EmptyStatement.d.mts +5 -0
  473. package/declaration/runtime-semantics/EmptyStatement.d.mts.map +1 -0
  474. package/declaration/runtime-semantics/EqualityExpression.d.mts +6 -0
  475. package/declaration/runtime-semantics/EqualityExpression.d.mts.map +1 -0
  476. package/declaration/runtime-semantics/EvaluateBody.d.mts +37 -0
  477. package/declaration/runtime-semantics/EvaluateBody.d.mts.map +1 -0
  478. package/declaration/runtime-semantics/EvaluateCall.d.mts +5 -0
  479. package/declaration/runtime-semantics/EvaluateCall.d.mts.map +1 -0
  480. package/declaration/runtime-semantics/EvaluatePropertyAccess.d.mts +9 -0
  481. package/declaration/runtime-semantics/EvaluatePropertyAccess.d.mts.map +1 -0
  482. package/declaration/runtime-semantics/EvaluateStringOrNumericBinaryExpression.d.mts +6 -0
  483. package/declaration/runtime-semantics/EvaluateStringOrNumericBinaryExpression.d.mts.map +1 -0
  484. package/declaration/runtime-semantics/ExponentiationExpression.d.mts +5 -0
  485. package/declaration/runtime-semantics/ExponentiationExpression.d.mts.map +1 -0
  486. package/declaration/runtime-semantics/ExportDeclaration.d.mts +11 -0
  487. package/declaration/runtime-semantics/ExportDeclaration.d.mts.map +1 -0
  488. package/declaration/runtime-semantics/ExpressionStatement.d.mts +5 -0
  489. package/declaration/runtime-semantics/ExpressionStatement.d.mts.map +1 -0
  490. package/declaration/runtime-semantics/ForDeclarationBindingInitialization.d.mts +7 -0
  491. package/declaration/runtime-semantics/ForDeclarationBindingInitialization.d.mts.map +1 -0
  492. package/declaration/runtime-semantics/FunctionDeclaration.d.mts +5 -0
  493. package/declaration/runtime-semantics/FunctionDeclaration.d.mts.map +1 -0
  494. package/declaration/runtime-semantics/FunctionDeclarationInstantiation.d.mts +6 -0
  495. package/declaration/runtime-semantics/FunctionDeclarationInstantiation.d.mts.map +1 -0
  496. package/declaration/runtime-semantics/FunctionExpression.d.mts +4 -0
  497. package/declaration/runtime-semantics/FunctionExpression.d.mts.map +1 -0
  498. package/declaration/runtime-semantics/FunctionStatementList.d.mts +5 -0
  499. package/declaration/runtime-semantics/FunctionStatementList.d.mts.map +1 -0
  500. package/declaration/runtime-semantics/GeneratorExpression.d.mts +4 -0
  501. package/declaration/runtime-semantics/GeneratorExpression.d.mts.map +1 -0
  502. package/declaration/runtime-semantics/GetSubstitution.d.mts +5 -0
  503. package/declaration/runtime-semantics/GetSubstitution.d.mts.map +1 -0
  504. package/declaration/runtime-semantics/GlobalDeclarationInstantiation.d.mts +5 -0
  505. package/declaration/runtime-semantics/GlobalDeclarationInstantiation.d.mts.map +1 -0
  506. package/declaration/runtime-semantics/HoistableDeclaration.d.mts +5 -0
  507. package/declaration/runtime-semantics/HoistableDeclaration.d.mts.map +1 -0
  508. package/declaration/runtime-semantics/IdentifierReference.d.mts +6 -0
  509. package/declaration/runtime-semantics/IdentifierReference.d.mts.map +1 -0
  510. package/declaration/runtime-semantics/IfStatement.d.mts +11 -0
  511. package/declaration/runtime-semantics/IfStatement.d.mts.map +1 -0
  512. package/declaration/runtime-semantics/ImportCall.d.mts +6 -0
  513. package/declaration/runtime-semantics/ImportCall.d.mts.map +1 -0
  514. package/declaration/runtime-semantics/ImportDeclaration.d.mts +5 -0
  515. package/declaration/runtime-semantics/ImportDeclaration.d.mts.map +1 -0
  516. package/declaration/runtime-semantics/ImportMeta.d.mts +5 -0
  517. package/declaration/runtime-semantics/ImportMeta.d.mts.map +1 -0
  518. package/declaration/runtime-semantics/InstantiateArrowFunctionExpression.d.mts +5 -0
  519. package/declaration/runtime-semantics/InstantiateArrowFunctionExpression.d.mts.map +1 -0
  520. package/declaration/runtime-semantics/InstantiateAsyncArrowFunctionExpression.d.mts +5 -0
  521. package/declaration/runtime-semantics/InstantiateAsyncArrowFunctionExpression.d.mts.map +1 -0
  522. package/declaration/runtime-semantics/InstantiateAsyncFunctionExpression.d.mts +5 -0
  523. package/declaration/runtime-semantics/InstantiateAsyncFunctionExpression.d.mts.map +1 -0
  524. package/declaration/runtime-semantics/InstantiateAsyncGeneratorFunctionExpression.d.mts +5 -0
  525. package/declaration/runtime-semantics/InstantiateAsyncGeneratorFunctionExpression.d.mts.map +1 -0
  526. package/declaration/runtime-semantics/InstantiateFunctionObject.d.mts +12 -0
  527. package/declaration/runtime-semantics/InstantiateFunctionObject.d.mts.map +1 -0
  528. package/declaration/runtime-semantics/InstantiateGeneratorFunctionExpression.d.mts +5 -0
  529. package/declaration/runtime-semantics/InstantiateGeneratorFunctionExpression.d.mts.map +1 -0
  530. package/declaration/runtime-semantics/InstantiateOrdinaryFunctionExpression.d.mts +5 -0
  531. package/declaration/runtime-semantics/InstantiateOrdinaryFunctionExpression.d.mts.map +1 -0
  532. package/declaration/runtime-semantics/IteratorBindingInitialization.d.mts +7 -0
  533. package/declaration/runtime-semantics/IteratorBindingInitialization.d.mts.map +1 -0
  534. package/declaration/runtime-semantics/KeyedBindingInitialization.d.mts +6 -0
  535. package/declaration/runtime-semantics/KeyedBindingInitialization.d.mts.map +1 -0
  536. package/declaration/runtime-semantics/LabelledEvaluation.d.mts +7 -0
  537. package/declaration/runtime-semantics/LabelledEvaluation.d.mts.map +1 -0
  538. package/declaration/runtime-semantics/LabelledStatement.d.mts +4 -0
  539. package/declaration/runtime-semantics/LabelledStatement.d.mts.map +1 -0
  540. package/declaration/runtime-semantics/LexicalDeclaration.d.mts +14 -0
  541. package/declaration/runtime-semantics/LexicalDeclaration.d.mts.map +1 -0
  542. package/declaration/runtime-semantics/Literal.d.mts +6 -0
  543. package/declaration/runtime-semantics/Literal.d.mts.map +1 -0
  544. package/declaration/runtime-semantics/LogicalANDExpression.d.mts +5 -0
  545. package/declaration/runtime-semantics/LogicalANDExpression.d.mts.map +1 -0
  546. package/declaration/runtime-semantics/LogicalORExpression.d.mts +5 -0
  547. package/declaration/runtime-semantics/LogicalORExpression.d.mts.map +1 -0
  548. package/declaration/runtime-semantics/MV.d.mts +3 -0
  549. package/declaration/runtime-semantics/MV.d.mts.map +1 -0
  550. package/declaration/runtime-semantics/MemberExpression.d.mts +5 -0
  551. package/declaration/runtime-semantics/MemberExpression.d.mts.map +1 -0
  552. package/declaration/runtime-semantics/MethodDefinitionEvaluation.d.mts +28 -0
  553. package/declaration/runtime-semantics/MethodDefinitionEvaluation.d.mts.map +1 -0
  554. package/declaration/runtime-semantics/Module.d.mts +11 -0
  555. package/declaration/runtime-semantics/Module.d.mts.map +1 -0
  556. package/declaration/runtime-semantics/ModuleBody.d.mts +4 -0
  557. package/declaration/runtime-semantics/ModuleBody.d.mts.map +1 -0
  558. package/declaration/runtime-semantics/MultiplicativeExpression.d.mts +5 -0
  559. package/declaration/runtime-semantics/MultiplicativeExpression.d.mts.map +1 -0
  560. package/declaration/runtime-semantics/NamedEvaluation.d.mts +4 -0
  561. package/declaration/runtime-semantics/NamedEvaluation.d.mts.map +1 -0
  562. package/declaration/runtime-semantics/NewExpression.d.mts +5 -0
  563. package/declaration/runtime-semantics/NewExpression.d.mts.map +1 -0
  564. package/declaration/runtime-semantics/NewTarget.d.mts +3 -0
  565. package/declaration/runtime-semantics/NewTarget.d.mts.map +1 -0
  566. package/declaration/runtime-semantics/NumberToBigInt.d.mts +4 -0
  567. package/declaration/runtime-semantics/NumberToBigInt.d.mts.map +1 -0
  568. package/declaration/runtime-semantics/ObjectLiteral.d.mts +5 -0
  569. package/declaration/runtime-semantics/ObjectLiteral.d.mts.map +1 -0
  570. package/declaration/runtime-semantics/OptionalExpression.d.mts +5 -0
  571. package/declaration/runtime-semantics/OptionalExpression.d.mts.map +1 -0
  572. package/declaration/runtime-semantics/ParenthesizedExpression.d.mts +4 -0
  573. package/declaration/runtime-semantics/ParenthesizedExpression.d.mts.map +1 -0
  574. package/declaration/runtime-semantics/PropertyBindingInitialization.d.mts +6 -0
  575. package/declaration/runtime-semantics/PropertyBindingInitialization.d.mts.map +1 -0
  576. package/declaration/runtime-semantics/PropertyDefinitionEvaluation.d.mts +6 -0
  577. package/declaration/runtime-semantics/PropertyDefinitionEvaluation.d.mts.map +1 -0
  578. package/declaration/runtime-semantics/PropertyName.d.mts +5 -0
  579. package/declaration/runtime-semantics/PropertyName.d.mts.map +1 -0
  580. package/declaration/runtime-semantics/RegExp.d.mts +36 -0
  581. package/declaration/runtime-semantics/RegExp.d.mts.map +1 -0
  582. package/declaration/runtime-semantics/RegularExpressionLiteral.d.mts +4 -0
  583. package/declaration/runtime-semantics/RegularExpressionLiteral.d.mts.map +1 -0
  584. package/declaration/runtime-semantics/RelationalExpression.d.mts +8 -0
  585. package/declaration/runtime-semantics/RelationalExpression.d.mts.map +1 -0
  586. package/declaration/runtime-semantics/RestBindingInitialization.d.mts +5 -0
  587. package/declaration/runtime-semantics/RestBindingInitialization.d.mts.map +1 -0
  588. package/declaration/runtime-semantics/ReturnStatement.d.mts +6 -0
  589. package/declaration/runtime-semantics/ReturnStatement.d.mts.map +1 -0
  590. package/declaration/runtime-semantics/Script.d.mts +5 -0
  591. package/declaration/runtime-semantics/Script.d.mts.map +1 -0
  592. package/declaration/runtime-semantics/ScriptBody.d.mts +3 -0
  593. package/declaration/runtime-semantics/ScriptBody.d.mts.map +1 -0
  594. package/declaration/runtime-semantics/ShiftExpression.d.mts +7 -0
  595. package/declaration/runtime-semantics/ShiftExpression.d.mts.map +1 -0
  596. package/declaration/runtime-semantics/StatementList.d.mts +5 -0
  597. package/declaration/runtime-semantics/StatementList.d.mts.map +1 -0
  598. package/declaration/runtime-semantics/StringIndexOf.d.mts +3 -0
  599. package/declaration/runtime-semantics/StringIndexOf.d.mts.map +1 -0
  600. package/declaration/runtime-semantics/StringPad.d.mts +5 -0
  601. package/declaration/runtime-semantics/StringPad.d.mts.map +1 -0
  602. package/declaration/runtime-semantics/SuperCall.d.mts +5 -0
  603. package/declaration/runtime-semantics/SuperCall.d.mts.map +1 -0
  604. package/declaration/runtime-semantics/SuperProperty.d.mts +5 -0
  605. package/declaration/runtime-semantics/SuperProperty.d.mts.map +1 -0
  606. package/declaration/runtime-semantics/SwitchStatement.d.mts +9 -0
  607. package/declaration/runtime-semantics/SwitchStatement.d.mts.map +1 -0
  608. package/declaration/runtime-semantics/TaggedTemplateExpression.d.mts +5 -0
  609. package/declaration/runtime-semantics/TaggedTemplateExpression.d.mts.map +1 -0
  610. package/declaration/runtime-semantics/TemplateLiteral.d.mts +5 -0
  611. package/declaration/runtime-semantics/TemplateLiteral.d.mts.map +1 -0
  612. package/declaration/runtime-semantics/This.d.mts +5 -0
  613. package/declaration/runtime-semantics/This.d.mts.map +1 -0
  614. package/declaration/runtime-semantics/ThrowStatement.d.mts +5 -0
  615. package/declaration/runtime-semantics/ThrowStatement.d.mts.map +1 -0
  616. package/declaration/runtime-semantics/TrimString.d.mts +5 -0
  617. package/declaration/runtime-semantics/TrimString.d.mts.map +1 -0
  618. package/declaration/runtime-semantics/TryStatement.d.mts +10 -0
  619. package/declaration/runtime-semantics/TryStatement.d.mts.map +1 -0
  620. package/declaration/runtime-semantics/UnaryExpression.d.mts +4 -0
  621. package/declaration/runtime-semantics/UnaryExpression.d.mts.map +1 -0
  622. package/declaration/runtime-semantics/Unicode.d.mts +166 -0
  623. package/declaration/runtime-semantics/Unicode.d.mts.map +1 -0
  624. package/declaration/runtime-semantics/UpdateExpression.d.mts +4 -0
  625. package/declaration/runtime-semantics/UpdateExpression.d.mts.map +1 -0
  626. package/declaration/runtime-semantics/VariableStatement.d.mts +7 -0
  627. package/declaration/runtime-semantics/VariableStatement.d.mts.map +1 -0
  628. package/declaration/runtime-semantics/WithStatement.d.mts +10 -0
  629. package/declaration/runtime-semantics/WithStatement.d.mts.map +1 -0
  630. package/declaration/runtime-semantics/YieldExpression.d.mts +5 -0
  631. package/declaration/runtime-semantics/YieldExpression.d.mts.map +1 -0
  632. package/declaration/runtime-semantics/all.d.mts +110 -0
  633. package/declaration/runtime-semantics/all.d.mts.map +1 -0
  634. package/declaration/static-semantics/BodyText.d.mts +4 -0
  635. package/declaration/static-semantics/BodyText.d.mts.map +1 -0
  636. package/declaration/static-semantics/BoundNames.d.mts +4 -0
  637. package/declaration/static-semantics/BoundNames.d.mts.map +1 -0
  638. package/declaration/static-semantics/CharacterValue.d.mts +6 -0
  639. package/declaration/static-semantics/CharacterValue.d.mts.map +1 -0
  640. package/declaration/static-semantics/CodePointAt.d.mts +8 -0
  641. package/declaration/static-semantics/CodePointAt.d.mts.map +1 -0
  642. package/declaration/static-semantics/CodePointsToString.d.mts +3 -0
  643. package/declaration/static-semantics/CodePointsToString.d.mts.map +1 -0
  644. package/declaration/static-semantics/ConstructorMethod.d.mts +4 -0
  645. package/declaration/static-semantics/ConstructorMethod.d.mts.map +1 -0
  646. package/declaration/static-semantics/ContainsArguments.d.mts +4 -0
  647. package/declaration/static-semantics/ContainsArguments.d.mts.map +1 -0
  648. package/declaration/static-semantics/ContainsExpression.d.mts +3 -0
  649. package/declaration/static-semantics/ContainsExpression.d.mts.map +1 -0
  650. package/declaration/static-semantics/ContainsUsing.d.mts +4 -0
  651. package/declaration/static-semantics/ContainsUsing.d.mts.map +1 -0
  652. package/declaration/static-semantics/DeclarationPart.d.mts +3 -0
  653. package/declaration/static-semantics/DeclarationPart.d.mts.map +1 -0
  654. package/declaration/static-semantics/ExpectedArgumentCount.d.mts +3 -0
  655. package/declaration/static-semantics/ExpectedArgumentCount.d.mts.map +1 -0
  656. package/declaration/static-semantics/ExportEntries.d.mts +14 -0
  657. package/declaration/static-semantics/ExportEntries.d.mts.map +1 -0
  658. package/declaration/static-semantics/ExportEntriesForModule.d.mts +5 -0
  659. package/declaration/static-semantics/ExportEntriesForModule.d.mts.map +1 -0
  660. package/declaration/static-semantics/FlagText.d.mts +4 -0
  661. package/declaration/static-semantics/FlagText.d.mts.map +1 -0
  662. package/declaration/static-semantics/HasInitializer.d.mts +5 -0
  663. package/declaration/static-semantics/HasInitializer.d.mts.map +1 -0
  664. package/declaration/static-semantics/HasName.d.mts +3 -0
  665. package/declaration/static-semantics/HasName.d.mts.map +1 -0
  666. package/declaration/static-semantics/ImportEntries.d.mts +11 -0
  667. package/declaration/static-semantics/ImportEntries.d.mts.map +1 -0
  668. package/declaration/static-semantics/ImportEntriesForModule.d.mts +4 -0
  669. package/declaration/static-semantics/ImportEntriesForModule.d.mts.map +1 -0
  670. package/declaration/static-semantics/ImportedLocalNames.d.mts +4 -0
  671. package/declaration/static-semantics/ImportedLocalNames.d.mts.map +1 -0
  672. package/declaration/static-semantics/IsAnonymousFunctionDefinition.d.mts +4 -0
  673. package/declaration/static-semantics/IsAnonymousFunctionDefinition.d.mts.map +1 -0
  674. package/declaration/static-semantics/IsAwaitUsingDeclaration.d.mts +3 -0
  675. package/declaration/static-semantics/IsAwaitUsingDeclaration.d.mts.map +1 -0
  676. package/declaration/static-semantics/IsComputedPropertyKey.d.mts +3 -0
  677. package/declaration/static-semantics/IsComputedPropertyKey.d.mts.map +1 -0
  678. package/declaration/static-semantics/IsConstantDeclaration.d.mts +3 -0
  679. package/declaration/static-semantics/IsConstantDeclaration.d.mts.map +1 -0
  680. package/declaration/static-semantics/IsDestructuring.d.mts +4 -0
  681. package/declaration/static-semantics/IsDestructuring.d.mts.map +1 -0
  682. package/declaration/static-semantics/IsFunctionDefinition.d.mts +6 -0
  683. package/declaration/static-semantics/IsFunctionDefinition.d.mts.map +1 -0
  684. package/declaration/static-semantics/IsIdentifierRef.d.mts +3 -0
  685. package/declaration/static-semantics/IsIdentifierRef.d.mts.map +1 -0
  686. package/declaration/static-semantics/IsInTailPosition.d.mts +3 -0
  687. package/declaration/static-semantics/IsInTailPosition.d.mts.map +1 -0
  688. package/declaration/static-semantics/IsSimpleParameterList.d.mts +3 -0
  689. package/declaration/static-semantics/IsSimpleParameterList.d.mts.map +1 -0
  690. package/declaration/static-semantics/IsStatic.d.mts +4 -0
  691. package/declaration/static-semantics/IsStatic.d.mts.map +1 -0
  692. package/declaration/static-semantics/IsStrict.d.mts +4 -0
  693. package/declaration/static-semantics/IsStrict.d.mts.map +1 -0
  694. package/declaration/static-semantics/IsStringWellFormedUnicode.d.mts +3 -0
  695. package/declaration/static-semantics/IsStringWellFormedUnicode.d.mts.map +1 -0
  696. package/declaration/static-semantics/IsUsingDeclaration.d.mts +3 -0
  697. package/declaration/static-semantics/IsUsingDeclaration.d.mts.map +1 -0
  698. package/declaration/static-semantics/LexicallyDeclaredNames.d.mts +4 -0
  699. package/declaration/static-semantics/LexicallyDeclaredNames.d.mts.map +1 -0
  700. package/declaration/static-semantics/LexicallyScopedDeclarations.d.mts +3 -0
  701. package/declaration/static-semantics/LexicallyScopedDeclarations.d.mts.map +1 -0
  702. package/declaration/static-semantics/ModuleRequests.d.mts +22 -0
  703. package/declaration/static-semantics/ModuleRequests.d.mts.map +1 -0
  704. package/declaration/static-semantics/NonConstructorElements.d.mts +4 -0
  705. package/declaration/static-semantics/NonConstructorElements.d.mts.map +1 -0
  706. package/declaration/static-semantics/NumericValue.d.mts +4 -0
  707. package/declaration/static-semantics/NumericValue.d.mts.map +1 -0
  708. package/declaration/static-semantics/PrivateBoundIdentifiers.d.mts +5 -0
  709. package/declaration/static-semantics/PrivateBoundIdentifiers.d.mts.map +1 -0
  710. package/declaration/static-semantics/PropName.d.mts +3 -0
  711. package/declaration/static-semantics/PropName.d.mts.map +1 -0
  712. package/declaration/static-semantics/StringToCodePoints.d.mts +3 -0
  713. package/declaration/static-semantics/StringToCodePoints.d.mts.map +1 -0
  714. package/declaration/static-semantics/StringValue.d.mts +3 -0
  715. package/declaration/static-semantics/StringValue.d.mts.map +1 -0
  716. package/declaration/static-semantics/TemplateStrings.d.mts +5 -0
  717. package/declaration/static-semantics/TemplateStrings.d.mts.map +1 -0
  718. package/declaration/static-semantics/TopLevelLexicallyDeclaredNames.d.mts +4 -0
  719. package/declaration/static-semantics/TopLevelLexicallyDeclaredNames.d.mts.map +1 -0
  720. package/declaration/static-semantics/TopLevelLexicallyScopedDeclarations.d.mts +4 -0
  721. package/declaration/static-semantics/TopLevelLexicallyScopedDeclarations.d.mts.map +1 -0
  722. package/declaration/static-semantics/TopLevelVarDeclaredNames.d.mts +4 -0
  723. package/declaration/static-semantics/TopLevelVarDeclaredNames.d.mts.map +1 -0
  724. package/declaration/static-semantics/TopLevelVarScopedDeclarations.d.mts +4 -0
  725. package/declaration/static-semantics/TopLevelVarScopedDeclarations.d.mts.map +1 -0
  726. package/declaration/static-semantics/UTF16EncodeCodePoint.d.mts +4 -0
  727. package/declaration/static-semantics/UTF16EncodeCodePoint.d.mts.map +1 -0
  728. package/declaration/static-semantics/UTF16SurrogatePairToCodePoint.d.mts +4 -0
  729. package/declaration/static-semantics/UTF16SurrogatePairToCodePoint.d.mts.map +1 -0
  730. package/declaration/static-semantics/VarDeclaredNames.d.mts +4 -0
  731. package/declaration/static-semantics/VarDeclaredNames.d.mts.map +1 -0
  732. package/declaration/static-semantics/VarScopedDeclarations.d.mts +4 -0
  733. package/declaration/static-semantics/VarScopedDeclarations.d.mts.map +1 -0
  734. package/declaration/static-semantics/all.d.mts +51 -0
  735. package/declaration/static-semantics/all.d.mts.map +1 -0
  736. package/declaration/utils/callback.d.mts +3 -0
  737. package/declaration/utils/callback.d.mts.map +1 -0
  738. package/declaration/utils/container.d.mts +54 -0
  739. package/declaration/utils/container.d.mts.map +1 -0
  740. package/declaration/utils/internal.d.mts +3 -0
  741. package/declaration/utils/internal.d.mts.map +1 -0
  742. package/declaration/utils/language.d.mts +13 -0
  743. package/declaration/utils/language.d.mts.map +1 -0
  744. package/declaration/utils/module-loader.d.mts +15 -0
  745. package/declaration/utils/module-loader.d.mts.map +1 -0
  746. package/declaration/utils/module-loaders/builtin-loader.d.mts +13 -0
  747. package/declaration/utils/module-loaders/builtin-loader.d.mts.map +1 -0
  748. package/declaration/utils/module.d.mts +15 -0
  749. package/declaration/utils/module.d.mts.map +1 -0
  750. package/declaration/utils/stack.d.mts +49 -0
  751. package/declaration/utils/stack.d.mts.map +1 -0
  752. package/declaration/value.d.mts +276 -0
  753. package/declaration/value.d.mts.map +1 -0
  754. package/lib/engine262.d.mts +1 -0
  755. package/lib/engine262.d.ts +1 -0
  756. package/lib/engine262.js +80493 -0
  757. package/lib/engine262.js.map +1 -0
  758. package/lib/engine262.mjs +79570 -0
  759. package/lib/engine262.mjs.map +1 -0
  760. package/lib/inspector/context.d.mts +39 -0
  761. package/lib/inspector/context.d.mts.map +1 -0
  762. package/lib/inspector/context.mjs +307 -0
  763. package/lib/inspector/context.mjs.map +1 -0
  764. package/lib/inspector/evaluator.d.mts +4 -0
  765. package/lib/inspector/evaluator.d.mts.map +1 -0
  766. package/lib/inspector/evaluator.mjs +16 -0
  767. package/lib/inspector/evaluator.mjs.map +1 -0
  768. package/lib/inspector/index.d.mts +17 -0
  769. package/lib/inspector/index.d.mts.map +1 -0
  770. package/lib/inspector/index.mjs +180 -0
  771. package/lib/inspector/index.mjs.map +1 -0
  772. package/lib/inspector/internal-utils.d.mts +4 -0
  773. package/lib/inspector/internal-utils.d.mts.map +1 -0
  774. package/lib/inspector/internal-utils.mjs +17 -0
  775. package/lib/inspector/internal-utils.mjs.map +1 -0
  776. package/lib/inspector/methods.d.mts +7 -0
  777. package/lib/inspector/methods.d.mts.map +1 -0
  778. package/lib/inspector/methods.mjs +368 -0
  779. package/lib/inspector/methods.mjs.map +1 -0
  780. package/lib/inspector/objects/RegExp.d.mts +4 -0
  781. package/lib/inspector/objects/RegExp.d.mts.map +1 -0
  782. package/lib/inspector/objects/RegExp.mjs +3 -0
  783. package/lib/inspector/objects/RegExp.mjs.map +1 -0
  784. package/lib/inspector/objects/arrays.d.mts +8 -0
  785. package/lib/inspector/objects/arrays.d.mts.map +1 -0
  786. package/lib/inspector/objects/arrays.mjs +72 -0
  787. package/lib/inspector/objects/arrays.mjs.map +1 -0
  788. package/lib/inspector/objects/collections.d.mts +7 -0
  789. package/lib/inspector/objects/collections.d.mts.map +1 -0
  790. package/lib/inspector/objects/collections.mjs +32 -0
  791. package/lib/inspector/objects/collections.mjs.map +1 -0
  792. package/lib/inspector/objects/dates.d.mts +12 -0
  793. package/lib/inspector/objects/dates.d.mts.map +1 -0
  794. package/lib/inspector/objects/dates.mjs +18 -0
  795. package/lib/inspector/objects/dates.mjs.map +1 -0
  796. package/lib/inspector/objects/errors.d.mts +4 -0
  797. package/lib/inspector/objects/errors.d.mts.map +1 -0
  798. package/lib/inspector/objects/errors.mjs +51 -0
  799. package/lib/inspector/objects/errors.mjs.map +1 -0
  800. package/lib/inspector/objects/function.d.mts +4 -0
  801. package/lib/inspector/objects/function.d.mts.map +1 -0
  802. package/lib/inspector/objects/function.mjs +137 -0
  803. package/lib/inspector/objects/function.mjs.map +1 -0
  804. package/lib/inspector/objects/index.d.mts +13 -0
  805. package/lib/inspector/objects/index.d.mts.map +1 -0
  806. package/lib/inspector/objects/index.mjs +84 -0
  807. package/lib/inspector/objects/index.mjs.map +1 -0
  808. package/lib/inspector/objects/modules.d.mts +4 -0
  809. package/lib/inspector/objects/modules.d.mts.map +1 -0
  810. package/lib/inspector/objects/modules.mjs +57 -0
  811. package/lib/inspector/objects/modules.mjs.map +1 -0
  812. package/lib/inspector/objects/objects.d.mts +31 -0
  813. package/lib/inspector/objects/objects.d.mts.map +1 -0
  814. package/lib/inspector/objects/objects.mjs +166 -0
  815. package/lib/inspector/objects/objects.mjs.map +1 -0
  816. package/lib/inspector/objects/primitives.d.mts +9 -0
  817. package/lib/inspector/objects/primitives.d.mts.map +1 -0
  818. package/lib/inspector/objects/primitives.mjs +105 -0
  819. package/lib/inspector/objects/primitives.mjs.map +1 -0
  820. package/lib/inspector/objects/promises.d.mts +4 -0
  821. package/lib/inspector/objects/promises.d.mts.map +1 -0
  822. package/lib/inspector/objects/promises.mjs +6 -0
  823. package/lib/inspector/objects/promises.mjs.map +1 -0
  824. package/lib/inspector/objects/proxies.d.mts +4 -0
  825. package/lib/inspector/objects/proxies.d.mts.map +1 -0
  826. package/lib/inspector/objects/proxies.mjs +12 -0
  827. package/lib/inspector/objects/proxies.mjs.map +1 -0
  828. package/lib/inspector/objects/shadow-realms.d.mts +4 -0
  829. package/lib/inspector/objects/shadow-realms.d.mts.map +1 -0
  830. package/lib/inspector/objects/shadow-realms.mjs +5 -0
  831. package/lib/inspector/objects/shadow-realms.mjs.map +1 -0
  832. package/lib/inspector/types.d.mts +223 -0
  833. package/lib/inspector/types.d.mts.map +1 -0
  834. package/lib/inspector/types.mjs +2 -0
  835. package/lib/inspector/types.mjs.map +1 -0
  836. package/lib/inspector/utils.d.mts +8 -0
  837. package/lib/inspector/utils.d.mts.map +1 -0
  838. package/lib/inspector/utils.mjs +61 -0
  839. package/lib/inspector/utils.mjs.map +1 -0
  840. package/lib/inspector.d.mts +1 -0
  841. package/lib/inspector.d.ts +1 -0
  842. package/lib/inspector.js +1888 -0
  843. package/lib/inspector.js.map +1 -0
  844. package/lib/inspector.mjs +1881 -0
  845. package/lib/inspector.mjs.map +1 -0
  846. package/lib/node/bin.d.mts +3 -0
  847. package/lib/node/bin.d.mts.map +1 -0
  848. package/lib/node/bin.mjs +312 -0
  849. package/lib/node/bin.mjs.map +1 -0
  850. package/lib/node/example.d.mts +2 -0
  851. package/lib/node/example.d.mts.map +1 -0
  852. package/lib/node/example.mjs +153 -0
  853. package/lib/node/example.mjs.map +1 -0
  854. package/lib/node/inspector.d.mts +17 -0
  855. package/lib/node/inspector.d.mts.map +1 -0
  856. package/lib/node/inspector.mjs +138 -0
  857. package/lib/node/inspector.mjs.map +1 -0
  858. package/lib/node/module.d.mts +23 -0
  859. package/lib/node/module.d.mts.map +1 -0
  860. package/lib/node/module.mjs +205 -0
  861. package/lib/node/module.mjs.map +1 -0
  862. package/lib/test262-harness.json +45 -0
  863. package/lib-src/inspector/context.mts +361 -0
  864. package/lib-src/inspector/evaluator.mts +19 -0
  865. package/lib-src/inspector/index.mts +209 -0
  866. package/lib-src/inspector/internal-utils.mts +18 -0
  867. package/lib-src/inspector/js_protocol.json +3288 -0
  868. package/lib-src/inspector/methods.mts +400 -0
  869. package/lib-src/inspector/objects/RegExp.mts +4 -0
  870. package/lib-src/inspector/objects/arrays.mts +78 -0
  871. package/lib-src/inspector/objects/collections.mts +37 -0
  872. package/lib-src/inspector/objects/dates.mts +49 -0
  873. package/lib-src/inspector/objects/errors.mts +58 -0
  874. package/lib-src/inspector/objects/function.mts +154 -0
  875. package/lib-src/inspector/objects/index.mts +134 -0
  876. package/lib-src/inspector/objects/modules.mts +60 -0
  877. package/lib-src/inspector/objects/objects.mts +211 -0
  878. package/lib-src/inspector/objects/primitives.mts +119 -0
  879. package/lib-src/inspector/objects/promises.mts +6 -0
  880. package/lib-src/inspector/objects/proxies.mts +12 -0
  881. package/lib-src/inspector/objects/shadow-realms.mts +6 -0
  882. package/lib-src/inspector/tsconfig.json +17 -0
  883. package/lib-src/inspector/types.mts +228 -0
  884. package/lib-src/inspector/utils.mts +83 -0
  885. package/lib-src/node/bin.mts +339 -0
  886. package/lib-src/node/example.mts +173 -0
  887. package/lib-src/node/inspector.mts +152 -0
  888. package/lib-src/node/module.mts +233 -0
  889. package/lib-src/node/tsconfig.json +21 -0
  890. package/package.json +147 -0
  891. package/src/abstract-ops/all.mts +38 -0
  892. package/src/abstract-ops/arguments-operations.mts +246 -0
  893. package/src/abstract-ops/array-objects.mts +311 -0
  894. package/src/abstract-ops/arraybuffer-objects.mts +361 -0
  895. package/src/abstract-ops/async-function-operations.mts +46 -0
  896. package/src/abstract-ops/async-generator-objects.mts +320 -0
  897. package/src/abstract-ops/data-types-and-values.mts +43 -0
  898. package/src/abstract-ops/dataview-objects.mts +147 -0
  899. package/src/abstract-ops/date-objects.mts +226 -0
  900. package/src/abstract-ops/disposable-operations.mts +166 -0
  901. package/src/abstract-ops/error-objects.mts +38 -0
  902. package/src/abstract-ops/execution-contexts.mts +18 -0
  903. package/src/abstract-ops/function-operations.mts +740 -0
  904. package/src/abstract-ops/generator-operations.mts +298 -0
  905. package/src/abstract-ops/global-object.mts +394 -0
  906. package/src/abstract-ops/immutable-prototype-objects.mts +21 -0
  907. package/src/abstract-ops/import-calls.mts +153 -0
  908. package/src/abstract-ops/iterator-operations.mts +409 -0
  909. package/src/abstract-ops/keyed-collections.mts +15 -0
  910. package/src/abstract-ops/math.mts +72 -0
  911. package/src/abstract-ops/module-namespace-exotic-objects.mts +277 -0
  912. package/src/abstract-ops/module-records.mts +1044 -0
  913. package/src/abstract-ops/notational-conventions.mts +67 -0
  914. package/src/abstract-ops/object-operations.mts +623 -0
  915. package/src/abstract-ops/objects.mts +453 -0
  916. package/src/abstract-ops/private-names.mts +170 -0
  917. package/src/abstract-ops/promise-operations.mts +444 -0
  918. package/src/abstract-ops/proxy-objects.mts +580 -0
  919. package/src/abstract-ops/realms.mts +209 -0
  920. package/src/abstract-ops/reference-operations.mts +211 -0
  921. package/src/abstract-ops/regexp-objects.mts +310 -0
  922. package/src/abstract-ops/shadow-realm.mts +216 -0
  923. package/src/abstract-ops/shared-arraybuffer.mts +8 -0
  924. package/src/abstract-ops/spec-types.mts +251 -0
  925. package/src/abstract-ops/string-objects.mts +156 -0
  926. package/src/abstract-ops/symbol-objects.mts +35 -0
  927. package/src/abstract-ops/temporal/addition.mts +221 -0
  928. package/src/abstract-ops/temporal/all.mts +12 -0
  929. package/src/abstract-ops/temporal/calendar.mts +801 -0
  930. package/src/abstract-ops/temporal/duration.mts +1015 -0
  931. package/src/abstract-ops/temporal/instant.mts +174 -0
  932. package/src/abstract-ops/temporal/not-implemented.mts +15 -0
  933. package/src/abstract-ops/temporal/now.mts +46 -0
  934. package/src/abstract-ops/temporal/plain-date-time.mts +242 -0
  935. package/src/abstract-ops/temporal/plain-date.mts +249 -0
  936. package/src/abstract-ops/temporal/plain-month-day.mts +86 -0
  937. package/src/abstract-ops/temporal/plain-time.mts +331 -0
  938. package/src/abstract-ops/temporal/plain-year-month.mts +195 -0
  939. package/src/abstract-ops/temporal/temporal.mts +837 -0
  940. package/src/abstract-ops/temporal/time-zone.mts +304 -0
  941. package/src/abstract-ops/temporal/zoned-datetime.mts +373 -0
  942. package/src/abstract-ops/testing-comparison.mts +376 -0
  943. package/src/abstract-ops/type-conversion.mts +514 -0
  944. package/src/abstract-ops/typedarray-objects.mts +385 -0
  945. package/src/abstract-ops/weak-operations.mts +20 -0
  946. package/src/api.mts +359 -0
  947. package/src/completion.mts +477 -0
  948. package/src/ecma402/not-implemented.mts +4 -0
  949. package/src/evaluator.mts +384 -0
  950. package/src/execution-context/Agent.mts +481 -0
  951. package/src/execution-context/Environment.mts +994 -0
  952. package/src/execution-context/ExecutionContext.mts +248 -0
  953. package/src/execution-context/Job.mts +64 -0
  954. package/src/execution-context/PrivateEnvironment.mts +41 -0
  955. package/src/execution-context/Realm.mts +378 -0
  956. package/src/execution-context/WeakReference.mts +86 -0
  957. package/src/execution-context/all.mts +7 -0
  958. package/src/host-defined/base64.mts +58 -0
  959. package/src/host-defined/debugger-util.mts +15 -0
  960. package/src/host-defined/decimal.mts +117 -0
  961. package/src/host-defined/devtoolsEval.mts +150 -0
  962. package/src/host-defined/engine.mts +283 -0
  963. package/src/host-defined/error-messages.mts +637 -0
  964. package/src/host-defined/event-loop.mts +311 -0
  965. package/src/host-defined/ieee754.mts +212 -0
  966. package/src/host-defined/inspect.mts +250 -0
  967. package/src/host-defined/job-queue.mts +191 -0
  968. package/src/host-defined/sort.mts +860 -0
  969. package/src/host-defined/test262-intrinsics.mts +167 -0
  970. package/src/index.mts +66 -0
  971. package/src/intrinsics/AbstractModuleSource.mts +47 -0
  972. package/src/intrinsics/AggregateError.mts +66 -0
  973. package/src/intrinsics/AggregateErrorPrototype.mts +12 -0
  974. package/src/intrinsics/Array.mts +302 -0
  975. package/src/intrinsics/ArrayBuffer.mts +48 -0
  976. package/src/intrinsics/ArrayBufferPrototype.mts +189 -0
  977. package/src/intrinsics/ArrayIteratorPrototype.mts +23 -0
  978. package/src/intrinsics/ArrayPrototype.mts +688 -0
  979. package/src/intrinsics/ArrayPrototypeShared.mts +572 -0
  980. package/src/intrinsics/AsyncDisposableStack.mts +36 -0
  981. package/src/intrinsics/AsyncDisposableStackPrototype.mts +103 -0
  982. package/src/intrinsics/AsyncFromSyncIteratorPrototype.mts +165 -0
  983. package/src/intrinsics/AsyncFunction.mts +33 -0
  984. package/src/intrinsics/AsyncFunctionPrototype.mts +8 -0
  985. package/src/intrinsics/AsyncGeneratorFunction.mts +39 -0
  986. package/src/intrinsics/AsyncGeneratorFunctionPrototype.mts +19 -0
  987. package/src/intrinsics/AsyncGeneratorFunctionPrototypePrototype.mts +148 -0
  988. package/src/intrinsics/AsyncIteratorPrototype.mts +56 -0
  989. package/src/intrinsics/BigInt.mts +69 -0
  990. package/src/intrinsics/BigIntPrototype.mts +64 -0
  991. package/src/intrinsics/Boolean.mts +47 -0
  992. package/src/intrinsics/BooleanPrototype.mts +56 -0
  993. package/src/intrinsics/DataView.mts +81 -0
  994. package/src/intrinsics/DataViewPrototype.mts +284 -0
  995. package/src/intrinsics/Date.mts +243 -0
  996. package/src/intrinsics/DatePrototype.mts +771 -0
  997. package/src/intrinsics/DisposableStack.mts +41 -0
  998. package/src/intrinsics/DisposableStackPrototype.mts +103 -0
  999. package/src/intrinsics/Error.mts +106 -0
  1000. package/src/intrinsics/ErrorPrototype.mts +100 -0
  1001. package/src/intrinsics/FinalizationRegistry.mts +69 -0
  1002. package/src/intrinsics/FinalizationRegistryPrototype.mts +110 -0
  1003. package/src/intrinsics/ForInIteratorPrototype.mts +120 -0
  1004. package/src/intrinsics/Function.mts +24 -0
  1005. package/src/intrinsics/FunctionPrototype.mts +232 -0
  1006. package/src/intrinsics/GeneratorFunction.mts +38 -0
  1007. package/src/intrinsics/GeneratorFunctionPrototype.mts +22 -0
  1008. package/src/intrinsics/GeneratorFunctionPrototypePrototype.mts +59 -0
  1009. package/src/intrinsics/Iterator.mts +302 -0
  1010. package/src/intrinsics/IteratorHelperPrototype.mts +61 -0
  1011. package/src/intrinsics/IteratorPrototype.mts +700 -0
  1012. package/src/intrinsics/JSON.mts +740 -0
  1013. package/src/intrinsics/Map.mts +129 -0
  1014. package/src/intrinsics/MapIteratorPrototype.mts +81 -0
  1015. package/src/intrinsics/MapPrototype.mts +295 -0
  1016. package/src/intrinsics/Math.mts +605 -0
  1017. package/src/intrinsics/NativeError.mts +86 -0
  1018. package/src/intrinsics/Number.mts +135 -0
  1019. package/src/intrinsics/NumberPrototype.mts +116 -0
  1020. package/src/intrinsics/Object.mts +466 -0
  1021. package/src/intrinsics/ObjectPrototype.mts +333 -0
  1022. package/src/intrinsics/Promise.mts +807 -0
  1023. package/src/intrinsics/PromisePrototype.mts +126 -0
  1024. package/src/intrinsics/Proxy.mts +101 -0
  1025. package/src/intrinsics/Reflect.mts +211 -0
  1026. package/src/intrinsics/RegExp.mts +166 -0
  1027. package/src/intrinsics/RegExpPrototype.mts +762 -0
  1028. package/src/intrinsics/RegExpStringIteratorPrototype.mts +73 -0
  1029. package/src/intrinsics/Set.mts +75 -0
  1030. package/src/intrinsics/SetIteratorPrototype.mts +78 -0
  1031. package/src/intrinsics/SetPrototype.mts +684 -0
  1032. package/src/intrinsics/ShadowRealm.mts +71 -0
  1033. package/src/intrinsics/ShadowRealmPrototype.mts +47 -0
  1034. package/src/intrinsics/String.mts +138 -0
  1035. package/src/intrinsics/StringIteratorPrototype.mts +23 -0
  1036. package/src/intrinsics/StringPrototype.mts +813 -0
  1037. package/src/intrinsics/SuppressedError.mts +53 -0
  1038. package/src/intrinsics/SuppressedErrorPrototype.mts +11 -0
  1039. package/src/intrinsics/Symbol.mts +99 -0
  1040. package/src/intrinsics/SymbolPrototype.mts +81 -0
  1041. package/src/intrinsics/Temporal/Duration.mts +140 -0
  1042. package/src/intrinsics/Temporal/DurationPrototype.mts +425 -0
  1043. package/src/intrinsics/Temporal/Instant.mts +90 -0
  1044. package/src/intrinsics/Temporal/InstantPrototype.mts +211 -0
  1045. package/src/intrinsics/Temporal/Now.mts +66 -0
  1046. package/src/intrinsics/Temporal/PlainDate.mts +79 -0
  1047. package/src/intrinsics/Temporal/PlainDatePrototype.mts +331 -0
  1048. package/src/intrinsics/Temporal/PlainDateTime.mts +113 -0
  1049. package/src/intrinsics/Temporal/PlainDateTimePrototype.mts +418 -0
  1050. package/src/intrinsics/Temporal/PlainMonthDay.mts +81 -0
  1051. package/src/intrinsics/Temporal/PlainMonthDayPrototype.mts +139 -0
  1052. package/src/intrinsics/Temporal/PlainTime.mts +74 -0
  1053. package/src/intrinsics/Temporal/PlainTimePrototype.mts +224 -0
  1054. package/src/intrinsics/Temporal/PlainYearMonth.mts +96 -0
  1055. package/src/intrinsics/Temporal/PlainYearMonthPrototype.mts +223 -0
  1056. package/src/intrinsics/Temporal/Temporal.mts +30 -0
  1057. package/src/intrinsics/Temporal/ZonedDateTime.mts +103 -0
  1058. package/src/intrinsics/Temporal/ZonedDateTimePrototype.mts +601 -0
  1059. package/src/intrinsics/ThrowTypeError.mts +21 -0
  1060. package/src/intrinsics/TypedArray.mts +585 -0
  1061. package/src/intrinsics/TypedArrayConstructors.mts +85 -0
  1062. package/src/intrinsics/TypedArrayPrototype.mts +600 -0
  1063. package/src/intrinsics/TypedArrayPrototypes.mts +17 -0
  1064. package/src/intrinsics/TypedArray_Uint8Array.mts +438 -0
  1065. package/src/intrinsics/URIHandling.mts +277 -0
  1066. package/src/intrinsics/WeakMap.mts +56 -0
  1067. package/src/intrinsics/WeakMapPrototype.mts +203 -0
  1068. package/src/intrinsics/WeakRef.mts +43 -0
  1069. package/src/intrinsics/WeakRefPrototype.mts +23 -0
  1070. package/src/intrinsics/WeakSet.mts +66 -0
  1071. package/src/intrinsics/WeakSetPrototype.mts +100 -0
  1072. package/src/intrinsics/WrapForValidIteratorPrototype.mts +65 -0
  1073. package/src/intrinsics/bootstrap.mts +153 -0
  1074. package/src/intrinsics/eval.mts +16 -0
  1075. package/src/intrinsics/isFinite.mts +23 -0
  1076. package/src/intrinsics/isNaN.mts +23 -0
  1077. package/src/intrinsics/parseFloat.mts +78 -0
  1078. package/src/intrinsics/parseInt.mts +85 -0
  1079. package/src/modules.mts +1088 -0
  1080. package/src/parse.mts +267 -0
  1081. package/src/parser/BaseParser.mts +36 -0
  1082. package/src/parser/ExpressionParser.mts +1697 -0
  1083. package/src/parser/FunctionParser.mts +398 -0
  1084. package/src/parser/IdentifierParser.mts +149 -0
  1085. package/src/parser/LanguageParser.mts +140 -0
  1086. package/src/parser/Lexer.mts +1190 -0
  1087. package/src/parser/ModuleParser.mts +429 -0
  1088. package/src/parser/ParseNode.mts +2923 -0
  1089. package/src/parser/Parser.mts +88 -0
  1090. package/src/parser/RegExpParser.mts +1428 -0
  1091. package/src/parser/Scope.mts +571 -0
  1092. package/src/parser/StatementParser.mts +1160 -0
  1093. package/src/parser/TemporalParser.mts +1245 -0
  1094. package/src/parser/tokens.mts +210 -0
  1095. package/src/parser/unicode.d.ts +20 -0
  1096. package/src/parser/utils.mts +114 -0
  1097. package/src/runtime-semantics/AdditiveExpression.mts +29 -0
  1098. package/src/runtime-semantics/ApplyStringOrNumericBinaryOperator.mts +78 -0
  1099. package/src/runtime-semantics/ArgumentListEvaluation.mts +178 -0
  1100. package/src/runtime-semantics/ArrayLiteral.mts +99 -0
  1101. package/src/runtime-semantics/ArrowFunction.mts +8 -0
  1102. package/src/runtime-semantics/AssignmentExpression.mts +284 -0
  1103. package/src/runtime-semantics/AsyncArrowFunction.mts +8 -0
  1104. package/src/runtime-semantics/AsyncFunctionExpression.mts +11 -0
  1105. package/src/runtime-semantics/AsyncGeneratorExpression.mts +11 -0
  1106. package/src/runtime-semantics/AwaitExpression.mts +16 -0
  1107. package/src/runtime-semantics/BindingInitialization.mts +91 -0
  1108. package/src/runtime-semantics/BitwiseOperators.mts +14 -0
  1109. package/src/runtime-semantics/Block.mts +73 -0
  1110. package/src/runtime-semantics/BreakStatement.mts +18 -0
  1111. package/src/runtime-semantics/BreakableStatement.mts +18 -0
  1112. package/src/runtime-semantics/CallExpression.mts +57 -0
  1113. package/src/runtime-semantics/ClassDeclaration.mts +41 -0
  1114. package/src/runtime-semantics/ClassDefinitionEvaluation.mts +811 -0
  1115. package/src/runtime-semantics/ClassExpression.mts +24 -0
  1116. package/src/runtime-semantics/ClassFieldDefinitionEvaluation.mts +189 -0
  1117. package/src/runtime-semantics/ClassStaticBlockDefinitionEvaluation.mts +48 -0
  1118. package/src/runtime-semantics/CoalesceExpression.mts +24 -0
  1119. package/src/runtime-semantics/CommaOperator.mts +18 -0
  1120. package/src/runtime-semantics/ConditionalExpression.mts +31 -0
  1121. package/src/runtime-semantics/ContinueStatement.mts +18 -0
  1122. package/src/runtime-semantics/CreateDynamicFunction.mts +161 -0
  1123. package/src/runtime-semantics/DebuggerStatement.mts +20 -0
  1124. package/src/runtime-semantics/DefineMethod.mts +42 -0
  1125. package/src/runtime-semantics/DestructuringAssignmentEvaluation.mts +306 -0
  1126. package/src/runtime-semantics/EmptyStatement.mts +9 -0
  1127. package/src/runtime-semantics/EqualityExpression.mts +60 -0
  1128. package/src/runtime-semantics/EvaluateBody.mts +211 -0
  1129. package/src/runtime-semantics/EvaluateCall.mts +67 -0
  1130. package/src/runtime-semantics/EvaluatePropertyAccess.mts +39 -0
  1131. package/src/runtime-semantics/EvaluateStringOrNumericBinaryExpression.mts +19 -0
  1132. package/src/runtime-semantics/ExponentiationExpression.mts +11 -0
  1133. package/src/runtime-semantics/ExportDeclaration.mts +100 -0
  1134. package/src/runtime-semantics/ExpressionStatement.mts +14 -0
  1135. package/src/runtime-semantics/ForDeclarationBindingInitialization.mts +21 -0
  1136. package/src/runtime-semantics/FunctionDeclaration.mts +10 -0
  1137. package/src/runtime-semantics/FunctionDeclarationInstantiation.mts +273 -0
  1138. package/src/runtime-semantics/FunctionExpression.mts +10 -0
  1139. package/src/runtime-semantics/FunctionStatementList.mts +17 -0
  1140. package/src/runtime-semantics/GeneratorExpression.mts +11 -0
  1141. package/src/runtime-semantics/GetSubstitution.mts +90 -0
  1142. package/src/runtime-semantics/GlobalDeclarationInstantiation.mts +140 -0
  1143. package/src/runtime-semantics/HoistableDeclaration.mts +12 -0
  1144. package/src/runtime-semantics/IdentifierReference.mts +15 -0
  1145. package/src/runtime-semantics/IfStatement.mts +49 -0
  1146. package/src/runtime-semantics/ImportCall.mts +137 -0
  1147. package/src/runtime-semantics/ImportDeclaration.mts +9 -0
  1148. package/src/runtime-semantics/ImportMeta.mts +45 -0
  1149. package/src/runtime-semantics/InstantiateArrowFunctionExpression.mts +36 -0
  1150. package/src/runtime-semantics/InstantiateAsyncArrowFunctionExpression.mts +38 -0
  1151. package/src/runtime-semantics/InstantiateAsyncFunctionExpression.mts +75 -0
  1152. package/src/runtime-semantics/InstantiateAsyncGeneratorFunctionExpression.mts +90 -0
  1153. package/src/runtime-semantics/InstantiateFunctionObject.mts +123 -0
  1154. package/src/runtime-semantics/InstantiateGeneratorFunctionExpression.mts +82 -0
  1155. package/src/runtime-semantics/InstantiateOrdinaryFunctionExpression.mts +64 -0
  1156. package/src/runtime-semantics/IteratorBindingInitialization.mts +212 -0
  1157. package/src/runtime-semantics/KeyedBindingInitialization.mts +61 -0
  1158. package/src/runtime-semantics/LabelledEvaluation.mts +749 -0
  1159. package/src/runtime-semantics/LabelledStatement.mts +11 -0
  1160. package/src/runtime-semantics/LexicalDeclaration.mts +114 -0
  1161. package/src/runtime-semantics/Literal.mts +36 -0
  1162. package/src/runtime-semantics/LogicalANDExpression.mts +25 -0
  1163. package/src/runtime-semantics/LogicalORExpression.mts +25 -0
  1164. package/src/runtime-semantics/MV.mts +10 -0
  1165. package/src/runtime-semantics/MemberExpression.mts +71 -0
  1166. package/src/runtime-semantics/MethodDefinitionEvaluation.mts +364 -0
  1167. package/src/runtime-semantics/Module.mts +15 -0
  1168. package/src/runtime-semantics/ModuleBody.mts +10 -0
  1169. package/src/runtime-semantics/MultiplicativeExpression.mts +18 -0
  1170. package/src/runtime-semantics/NamedEvaluation.mts +97 -0
  1171. package/src/runtime-semantics/NewExpression.mts +51 -0
  1172. package/src/runtime-semantics/NewTarget.mts +8 -0
  1173. package/src/runtime-semantics/NumberToBigInt.mts +16 -0
  1174. package/src/runtime-semantics/ObjectLiteral.mts +25 -0
  1175. package/src/runtime-semantics/OptionalExpression.mts +129 -0
  1176. package/src/runtime-semantics/ParenthesizedExpression.mts +8 -0
  1177. package/src/runtime-semantics/PropertyBindingInitialization.mts +45 -0
  1178. package/src/runtime-semantics/PropertyDefinitionEvaluation.mts +132 -0
  1179. package/src/runtime-semantics/PropertyName.mts +62 -0
  1180. package/src/runtime-semantics/RegExp.mts +1344 -0
  1181. package/src/runtime-semantics/RegularExpressionLiteral.mts +16 -0
  1182. package/src/runtime-semantics/RelationalExpression.mts +150 -0
  1183. package/src/runtime-semantics/RestBindingInitialization.mts +29 -0
  1184. package/src/runtime-semantics/ReturnStatement.mts +32 -0
  1185. package/src/runtime-semantics/Script.mts +15 -0
  1186. package/src/runtime-semantics/ScriptBody.mts +7 -0
  1187. package/src/runtime-semantics/ShiftExpression.mts +17 -0
  1188. package/src/runtime-semantics/StatementList.mts +33 -0
  1189. package/src/runtime-semantics/StringIndexOf.mts +43 -0
  1190. package/src/runtime-semantics/StringPad.mts +34 -0
  1191. package/src/runtime-semantics/SuperCall.mts +65 -0
  1192. package/src/runtime-semantics/SuperProperty.mts +58 -0
  1193. package/src/runtime-semantics/SwitchStatement.mts +214 -0
  1194. package/src/runtime-semantics/TaggedTemplateExpression.mts +23 -0
  1195. package/src/runtime-semantics/TemplateLiteral.mts +34 -0
  1196. package/src/runtime-semantics/This.mts +9 -0
  1197. package/src/runtime-semantics/ThrowStatement.mts +23 -0
  1198. package/src/runtime-semantics/TrimString.mts +19 -0
  1199. package/src/runtime-semantics/TryStatement.mts +119 -0
  1200. package/src/runtime-semantics/UnaryExpression.mts +218 -0
  1201. package/src/runtime-semantics/Unicode.mts +268 -0
  1202. package/src/runtime-semantics/UpdateExpression.mts +126 -0
  1203. package/src/runtime-semantics/VariableStatement.mts +72 -0
  1204. package/src/runtime-semantics/WithStatement.mts +33 -0
  1205. package/src/runtime-semantics/YieldExpression.mts +175 -0
  1206. package/src/runtime-semantics/all.mts +109 -0
  1207. package/src/static-semantics/BodyText.mts +7 -0
  1208. package/src/static-semantics/BoundNames.mts +108 -0
  1209. package/src/static-semantics/CharacterValue.mts +112 -0
  1210. package/src/static-semantics/CodePointAt.mts +53 -0
  1211. package/src/static-semantics/CodePointsToString.mts +15 -0
  1212. package/src/static-semantics/ConstructorMethod.mts +10 -0
  1213. package/src/static-semantics/ContainsArguments.mts +33 -0
  1214. package/src/static-semantics/ContainsExpression.mts +59 -0
  1215. package/src/static-semantics/ContainsUsing.mts +15 -0
  1216. package/src/static-semantics/DeclarationPart.mts +5 -0
  1217. package/src/static-semantics/ExpectedArgumentCount.mts +26 -0
  1218. package/src/static-semantics/ExportEntries.mts +183 -0
  1219. package/src/static-semantics/ExportEntriesForModule.mts +79 -0
  1220. package/src/static-semantics/FlagText.mts +7 -0
  1221. package/src/static-semantics/HasInitializer.mts +5 -0
  1222. package/src/static-semantics/HasName.mts +8 -0
  1223. package/src/static-semantics/ImportEntries.mts +49 -0
  1224. package/src/static-semantics/ImportEntriesForModule.mts +110 -0
  1225. package/src/static-semantics/ImportedLocalNames.mts +14 -0
  1226. package/src/static-semantics/IsAnonymousFunctionDefinition.mts +18 -0
  1227. package/src/static-semantics/IsAwaitUsingDeclaration.mts +12 -0
  1228. package/src/static-semantics/IsComputedPropertyKey.mts +7 -0
  1229. package/src/static-semantics/IsConstantDeclaration.mts +11 -0
  1230. package/src/static-semantics/IsDestructuring.mts +21 -0
  1231. package/src/static-semantics/IsFunctionDefinition.mts +15 -0
  1232. package/src/static-semantics/IsIdentifierRef.mts +5 -0
  1233. package/src/static-semantics/IsInTailPosition.mts +5 -0
  1234. package/src/static-semantics/IsSimpleParameterList.mts +23 -0
  1235. package/src/static-semantics/IsStatic.mts +10 -0
  1236. package/src/static-semantics/IsStrict.mts +7 -0
  1237. package/src/static-semantics/IsStringWellFormedUnicode.mts +24 -0
  1238. package/src/static-semantics/IsUsingDeclaration.mts +12 -0
  1239. package/src/static-semantics/LexicallyDeclaredNames.mts +26 -0
  1240. package/src/static-semantics/LexicallyScopedDeclarations.mts +84 -0
  1241. package/src/static-semantics/ModuleRequests.mts +185 -0
  1242. package/src/static-semantics/NonConstructorElements.mts +15 -0
  1243. package/src/static-semantics/NumericValue.mts +7 -0
  1244. package/src/static-semantics/PrivateBoundIdentifiers.mts +23 -0
  1245. package/src/static-semantics/PropName.mts +23 -0
  1246. package/src/static-semantics/StringToCodePoints.mts +22 -0
  1247. package/src/static-semantics/StringValue.mts +19 -0
  1248. package/src/static-semantics/TemplateStrings.mts +109 -0
  1249. package/src/static-semantics/TopLevelLexicallyDeclaredNames.mts +23 -0
  1250. package/src/static-semantics/TopLevelLexicallyScopedDeclarations.mts +27 -0
  1251. package/src/static-semantics/TopLevelVarDeclaredNames.mts +28 -0
  1252. package/src/static-semantics/TopLevelVarScopedDeclarations.mts +36 -0
  1253. package/src/static-semantics/UTF16EncodeCodePoint.mts +19 -0
  1254. package/src/static-semantics/UTF16SurrogatePairToCodePoint.mts +12 -0
  1255. package/src/static-semantics/VarDeclaredNames.mts +109 -0
  1256. package/src/static-semantics/VarScopedDeclarations.mts +115 -0
  1257. package/src/static-semantics/all.mts +50 -0
  1258. package/src/tsconfig.json +12 -0
  1259. package/src/unicode/.gitkeep +0 -0
  1260. package/src/unicode/CodePointProperties.json +1 -0
  1261. package/src/unicode/PropertyValueAliases.json +434 -0
  1262. package/src/unicode/SequenceProperties.json +1 -0
  1263. package/src/utils/callback.mts +7 -0
  1264. package/src/utils/container.mts +284 -0
  1265. package/src/utils/internal.mts +2 -0
  1266. package/src/utils/language.mts +35 -0
  1267. package/src/utils/module-loader.mts +73 -0
  1268. package/src/utils/module-loaders/builtin-loader.mts +84 -0
  1269. package/src/utils/module.mts +75 -0
  1270. package/src/utils/stack.mts +324 -0
  1271. package/src/value.mts +996 -0
@@ -0,0 +1,1344 @@
1
+ /* eslint-disable prefer-arrow-callback */
2
+ // use function name for better debug
3
+
4
+ /* https://tc39.es/ecma262/#sec-pattern */
5
+ import { CharacterValue, CodePointsToString } from '../static-semantics/all.mts';
6
+ import { isLineTerminator, isWhitespace } from '../parser/Lexer.mts';
7
+ import {
8
+ __ts_cast__, isArray, OutOfRange, type Mutable,
9
+ } from '../utils/language.mts';
10
+ import type { ParseNode } from '../parser/ParseNode.mts';
11
+ // @ts-ignore
12
+ import PropertyValueAliases from '../unicode/PropertyValueAliases.json' with { type: 'json' };
13
+ import {
14
+ Table70_BinaryUnicodeProperties,
15
+ Table69_NonbinaryUnicodeProperties,
16
+ Table71_BinaryPropertyOfStrings,
17
+ Unicode,
18
+ type Character,
19
+ type ListOfCharacter,
20
+ type CodePoint,
21
+ type Table69_NonbinaryUnicodePropertiesCanonicalized,
22
+ } from './all.mts';
23
+ import { Assert } from '#self';
24
+
25
+ enum Direction {
26
+ Forward = 1,
27
+ Backward = -1,
28
+ }
29
+
30
+ export type RegExpMatchingSource = (readonly string[]) & { readonly raw: string };
31
+ /** https://tc39.es/ecma262/#pattern-matchstate */
32
+ class MatchState {
33
+ readonly input: RegExpMatchingSource;
34
+
35
+ readonly endIndex: number;
36
+
37
+ readonly captures;
38
+
39
+ constructor(input: RegExpMatchingSource, endIndex: number, captures: readonly (undefined | Range)[]) {
40
+ this.input = input;
41
+ this.endIndex = endIndex;
42
+ this.captures = captures;
43
+ }
44
+
45
+ static createRegExpMatchingSource(input: readonly string[], raw: string) {
46
+ (input as Mutable<RegExpMatchingSource>).raw = raw;
47
+ return input as RegExpMatchingSource;
48
+ }
49
+ }
50
+ export { MatchState as RegExpState };
51
+
52
+ type MatcherResult = MatchState | 'failure';
53
+ export type RegExpMatcher = (input: RegExpMatchingSource, index: number) => MatcherResult;
54
+
55
+ // Note: A strict spec implementation cannot pass test262 because of stack overflow. We use generator to lift all calls to the top level.
56
+ type NonSpecFlattenedRegExpMatchingProcess = Generator<() => NonSpecFlattenedRegExpMatchingProcess, MatcherResult, MatcherResult>;
57
+ function runMatcher(matcher: NonSpecFlattenedRegExpMatchingProcess): MatcherResult {
58
+ // when debug, uncomment to use this version might be easier.
59
+
60
+ // if (1 + 1 === 2) {
61
+ // let next: MatcherResult;
62
+ // while (true) {
63
+ // const iter = iterator.next(next!);
64
+ // if (iter.done) {
65
+ // const ret = iter.value;
66
+ // return ret;
67
+ // }
68
+ // const nextCall = iter.value();
69
+ // const callResult = runMatcher(nextCall);
70
+ // next = callResult;
71
+ // }
72
+ // }
73
+
74
+ const stack: NonSpecFlattenedRegExpMatchingProcess[] = [];
75
+ let next: MatcherResult | undefined;
76
+ while (true) {
77
+ const iter = matcher.next(next!);
78
+ if (iter.done) {
79
+ const ret = iter.value;
80
+ // return ret;
81
+ matcher = stack.pop()!;
82
+ if (matcher) {
83
+ // next = callResult (of upper call)
84
+ next = ret;
85
+ continue;
86
+ } else {
87
+ // outmost call
88
+ return ret;
89
+ }
90
+ }
91
+ const nextCall = iter.value();
92
+ // const callResult = runMatcher(nextCall);
93
+ stack.push(matcher);
94
+ matcher = nextCall;
95
+ next = undefined;
96
+ }
97
+ }
98
+ /** https://tc39.es/ecma262/#pattern-matcher */
99
+ type Matcher = (x: MatchState, c: MatcherContinuation) => NonSpecFlattenedRegExpMatchingProcess;
100
+ /** https://tc39.es/ecma262/#pattern-matchercontinuation */
101
+ type MatcherContinuation = (y: MatchState) => NonSpecFlattenedRegExpMatchingProcess;
102
+
103
+ type CharTester = (char: Character, canonicalize: RegExpRecord | undefined) => boolean;
104
+ /** https://tc39.es/ecma262/#pattern-charset */
105
+ abstract class CharSet {
106
+ abstract has(c: Character, rer: RegExpRecord | undefined): boolean;
107
+
108
+ abstract hasList(c: ListOfCharacter): boolean;
109
+
110
+ getStrings() {
111
+ return [...this.strings || []];
112
+ }
113
+
114
+ /**
115
+ * Return false if the Pattern is compiled in UnicodeSetMode and contains the empty sequence or sequences of more than one character.
116
+ */
117
+ abstract characterModeOnly: boolean;
118
+
119
+ declare protected chars: Set<Character> | undefined;
120
+
121
+ declare protected strings: Set<ListOfCharacter> | undefined;
122
+
123
+ declare protected charTester: CharTester[] | undefined;
124
+
125
+ static union(...sets: CharSet[]) {
126
+ const unionChars = new Set<Character>();
127
+ const unionStrings = new Set<ListOfCharacter>();
128
+ let unionCharTesters: CharTester[] = [];
129
+ sets.forEach((set) => {
130
+ if (set.chars) {
131
+ set.chars.forEach((c) => unionChars.add(c));
132
+ }
133
+ if (set.strings) {
134
+ set.strings.forEach((s) => unionStrings.add(s));
135
+ }
136
+ if (set.charTester) {
137
+ unionCharTesters = unionCharTesters.concat(set.charTester);
138
+ }
139
+ });
140
+
141
+ if (!unionCharTesters.length) {
142
+ if (!unionStrings.size) {
143
+ return new ConcreteCharSet(unionChars);
144
+ }
145
+ if (!unionChars.size) {
146
+ return ConcreteStringSet.of(unionStrings);
147
+ }
148
+ }
149
+ if (!unionChars.size && !unionStrings.size && unionCharTesters.length === 1) {
150
+ return new VirtualCharSet(unionCharTesters[0]);
151
+ }
152
+ return new UnionCharSet(unionChars, unionStrings, unionCharTesters);
153
+ }
154
+
155
+ static intersection(...sets: CharSet[]): CharSet {
156
+ let intersectionChars: Set<Character>;
157
+ const setChars = sets.filter((x) => x.chars);
158
+ if (setChars.length === 0) {
159
+ intersectionChars = new Set<Character>();
160
+ } else if (setChars.length === 1) {
161
+ intersectionChars = setChars[0].chars!;
162
+ } else {
163
+ const smallestSet = setChars.reduce((a, b) => (a.chars!.size < b.chars!.size ? a : b));
164
+ intersectionChars = new Set();
165
+ smallestSet.chars!.forEach((c) => {
166
+ if (setChars.every((s) => s.chars!.has(c))) {
167
+ intersectionChars.add(c);
168
+ }
169
+ });
170
+ }
171
+
172
+ let intersectionStrings: Set<ListOfCharacter>;
173
+ const setStrings = sets.filter((x) => x.strings);
174
+ if (setStrings.length === 0) {
175
+ intersectionStrings = new Set<ListOfCharacter>();
176
+ } else if (setStrings.length === 1) {
177
+ intersectionStrings = setStrings[0].strings!;
178
+ } else {
179
+ const smallestSet = setStrings.reduce((a, b) => (a.strings!.size < b.strings!.size ? a : b));
180
+ intersectionStrings = new Set();
181
+ smallestSet.strings!.forEach((s) => {
182
+ if (setStrings.every((c) => c.strings!.has(s))) {
183
+ intersectionStrings.add(s);
184
+ }
185
+ });
186
+ }
187
+
188
+ let allCharTesters: CharTester[] = [];
189
+ sets.forEach((set) => {
190
+ if (set.charTester) {
191
+ allCharTesters = allCharTesters.concat(set.charTester);
192
+ }
193
+ });
194
+
195
+ if (!allCharTesters.length) {
196
+ if (!intersectionStrings.size) {
197
+ return new ConcreteCharSet(intersectionChars);
198
+ }
199
+ if (!intersectionChars.size) {
200
+ return ConcreteStringSet.of(intersectionStrings);
201
+ }
202
+ return new UnionCharSet(intersectionChars, intersectionStrings, undefined);
203
+ }
204
+ return new UnionCharSet(intersectionChars, intersectionStrings, allCharTesters.length ? [(char, canonicalize) => allCharTesters.every((f) => f(char, canonicalize))] : undefined);
205
+ }
206
+
207
+ static subtract(maxSet: CharSet, subtractAllStrings: boolean, ...subtracts: readonly CharSet[]): CharSet {
208
+ const maxChars = maxSet.chars;
209
+ const maxStrings = subtractAllStrings ? undefined : maxSet.strings;
210
+ let allSubtractCharTesters: CharTester[] = [];
211
+ subtracts.forEach((subtract) => {
212
+ if (maxChars) {
213
+ subtract.chars?.forEach((c) => maxChars.delete(c));
214
+ }
215
+ if (maxStrings) {
216
+ subtract.strings?.forEach((s) => maxStrings.delete(s));
217
+ }
218
+ if (subtract.charTester) {
219
+ allSubtractCharTesters = allSubtractCharTesters.concat(subtract.charTester);
220
+ }
221
+ });
222
+ if (!maxSet.charTester?.length && !allSubtractCharTesters.length) {
223
+ if (!maxStrings?.size) {
224
+ return new ConcreteCharSet(maxChars || []);
225
+ }
226
+ if (!maxChars?.size) {
227
+ return ConcreteStringSet.of(maxStrings);
228
+ }
229
+ return new UnionCharSet(maxChars, maxStrings, undefined);
230
+ }
231
+ return new UnionCharSet(
232
+ undefined,
233
+ maxStrings,
234
+ [(char, canonicalize) => {
235
+ if (!(maxChars?.has(char) || maxSet.charTester?.some((f) => f(char, canonicalize)))) {
236
+ return false;
237
+ }
238
+ if (allSubtractCharTesters.some((f) => f(char, canonicalize))) {
239
+ return false;
240
+ }
241
+ return true;
242
+ }],
243
+ );
244
+ }
245
+ }
246
+
247
+ class VirtualCharSet extends CharSet {
248
+ #f: CharTester;
249
+
250
+ protected override charTester;
251
+
252
+ constructor(f: CharTester) {
253
+ super();
254
+ this.#f = f;
255
+ this.charTester = [f];
256
+ }
257
+
258
+ override has(c: Character, rer: RegExpRecord | undefined): boolean {
259
+ return this.#f(c, rer);
260
+ }
261
+
262
+ override hasList(_c: ListOfCharacter): boolean {
263
+ return false;
264
+ }
265
+
266
+ override characterModeOnly = true;
267
+ }
268
+
269
+ class ConcreteCharSet extends CharSet {
270
+ protected override chars;
271
+
272
+ #canonicalize: Record<string, Set<Character>> | undefined;
273
+
274
+ protected get debuggerGetCodePoints() {
275
+ return [...this.chars].map((char) => Unicode.toCodePoint(char));
276
+ }
277
+
278
+ constructor(chars: Iterable<Character>) {
279
+ super();
280
+ this.chars = new Set(chars);
281
+ }
282
+
283
+ override has(c: Character, rer: RegExpRecord): boolean {
284
+ const canonicalizeKey = JSON.stringify(rer);
285
+ this.#canonicalize ??= {};
286
+ if (!this.#canonicalize[canonicalizeKey]) {
287
+ this.#canonicalize[canonicalizeKey] = new Set();
288
+ const set = this.#canonicalize[canonicalizeKey];
289
+ for (const c of this.chars) {
290
+ const ch = Canonicalize(rer, c);
291
+ set.add(ch);
292
+ }
293
+ }
294
+ return this.#canonicalize[canonicalizeKey].has(c);
295
+ }
296
+
297
+ override hasList(_c: ListOfCharacter): boolean {
298
+ return false;
299
+ }
300
+
301
+ override characterModeOnly = true;
302
+
303
+ soleChar() {
304
+ Assert(this.chars.size === 1);
305
+ return this.chars.values().next().value!;
306
+ }
307
+ }
308
+
309
+ class ConcreteStringSet extends CharSet {
310
+ protected override strings;
311
+
312
+ private constructor(strings: Iterable<ListOfCharacter>) {
313
+ super();
314
+ this.strings = new Set(strings);
315
+ }
316
+
317
+ static of(charOrStrings: Iterable<ListOfCharacter>): CharSet {
318
+ const chars = new Set<Character>();
319
+ const strings = new Set<ListOfCharacter>();
320
+ for (const charOrString of charOrStrings) {
321
+ if (charOrString.length <= 1 || (charOrString.length === 2 && Array.from(charOrString).length === 1)) {
322
+ chars.add(charOrString as unknown as Character);
323
+ } else {
324
+ strings.add(charOrString);
325
+ }
326
+ }
327
+ if (chars.size && !strings.size) {
328
+ return new ConcreteCharSet(chars);
329
+ } else if (strings.size && !chars.size) {
330
+ return new ConcreteStringSet(strings);
331
+ }
332
+ return new UnionCharSet(chars, strings, undefined);
333
+ }
334
+
335
+ override has(_c: Character): boolean {
336
+ return false;
337
+ }
338
+
339
+ override hasList(c: ListOfCharacter): boolean {
340
+ return this.strings.has(c);
341
+ }
342
+
343
+ override characterModeOnly = false;
344
+ }
345
+
346
+ class UnionCharSet extends CharSet {
347
+ constructor(chars: Set<Character> | undefined, strings: Set<ListOfCharacter> | undefined, charTesters: CharTester[] | undefined) {
348
+ super();
349
+ this.chars = chars;
350
+ this.strings = strings;
351
+ this.charTester = charTesters;
352
+ }
353
+
354
+ override has(c: Character, rer: RegExpRecord): boolean {
355
+ if (this.chars && new ConcreteCharSet(this.chars).has(c, rer)) {
356
+ return true;
357
+ }
358
+ if (this.charTester?.some((f) => f(c, rer))) {
359
+ return true;
360
+ }
361
+ return false;
362
+ }
363
+
364
+ override hasList(c: ListOfCharacter): boolean {
365
+ return !!this.strings?.has(c);
366
+ }
367
+
368
+ get characterModeOnly() {
369
+ return !this.strings?.size;
370
+ }
371
+ }
372
+
373
+ /** https://tc39.es/ecma262/#sec-regexp-records */
374
+ export interface RegExpRecord {
375
+ readonly IgnoreCase: boolean;
376
+ readonly Multiline: boolean;
377
+ readonly DotAll: boolean;
378
+ readonly Unicode: boolean;
379
+ readonly UnicodeSets: boolean;
380
+ readonly CapturingGroupsCount: number;
381
+ }
382
+
383
+ interface Range {
384
+ readonly startIndex: number;
385
+ readonly endIndex: number;
386
+ }
387
+
388
+ /** https://tc39.es/ecma262/#sec-compilepattern */
389
+ export function CompilePattern(pattern: ParseNode.RegExp.Pattern, rer: RegExpRecord): RegExpMatcher {
390
+ const m = CompileSubPattern(pattern.Disjunction, rer, Direction.Forward);
391
+ annotateMatcher(m, pattern.Disjunction);
392
+ return (input, index) => {
393
+ Assert(index >= 0 && index <= input.length);
394
+ const c: MatcherContinuation = function* MatchSuccess(y: MatchState) {
395
+ return y;
396
+ };
397
+ // Let cap be a List of rer.[[CapturingGroupsCount]] undefined values, indexed 1 through rer.[[CapturingGroupsCount]].
398
+ const cap = [];
399
+ for (let index = 1; index <= rer.CapturingGroupsCount; index += 1) {
400
+ cap[index] = undefined;
401
+ }
402
+ const x = new MatchState(input, index, cap);
403
+ return runMatcher(m(x, c));
404
+ };
405
+ }
406
+
407
+ /** https://tc39.es/ecma262/#sec-compilesubpattern */
408
+ function CompileSubPattern(
409
+ node:
410
+ ParseNode.RegExp.Disjunction | ParseNode.RegExp.Alternative | ParseNode.RegExp.Term,
411
+ rer: RegExpRecord,
412
+ direction: Direction,
413
+ ): Matcher {
414
+ switch (node.type) {
415
+ // Disjunction :: Alternative | Disjunction
416
+ case 'Disjunction': {
417
+ if (node.Alternative && node.Disjunction) {
418
+ const m1 = CompileSubPattern(node.Alternative, rer, direction);
419
+ const m2 = CompileSubPattern(node.Disjunction, rer, direction);
420
+ return MatchTwoAlternatives(m1, m2);
421
+ }
422
+ // Disjunction :: Alternative
423
+ return CompileSubPattern(node.Alternative, rer, direction);
424
+ }
425
+ // Alternative :: [empty]
426
+ // Alternative :: Alternative Term
427
+ case 'Alternative': {
428
+ if (!node.Term.length) {
429
+ return EmptyMatcher;
430
+ }
431
+ if (node.Term.length === 1) {
432
+ return CompileSubPattern(node.Term[0], rer, direction);
433
+ }
434
+ return node.Term.reduceRight<Matcher>((m2, term) => {
435
+ const m1 = CompileSubPattern(term, rer, direction);
436
+ if (!m2) {
437
+ return m1;
438
+ }
439
+ return MatchSequence(m1, m2, direction);
440
+ }, undefined!);
441
+ }
442
+ // Term :: Assertion
443
+ // Term :: Atom
444
+ // Term :: Atom Quantifier
445
+ case 'Term': {
446
+ switch (node.production) {
447
+ case 'Assertion':
448
+ return annotateMatcher(CompileAssertion(node.Assertion, rer), node.Assertion);
449
+ case 'Atom':
450
+ if (node.Quantifier) {
451
+ const m = CompileAtom(node.Atom, rer, direction);
452
+ const q = CompileQuantifier(node.Quantifier);
453
+ Assert(q.Min <= q.Max);
454
+ const parenIndex = CountLeftCapturingParensBefore(node);
455
+ const parenCount = CountLeftCapturingParensWithin(node);
456
+ return (x, c) => RepeatMatcher(m, q.Min, q.Max, q.Greedy, x, c, parenIndex, parenCount);
457
+ } else {
458
+ return CompileAtom(node.Atom, rer, direction);
459
+ }
460
+ default:
461
+ throw OutOfRange.exhaustive(node);
462
+ }
463
+ }
464
+ default:
465
+ }
466
+ throw OutOfRange.exhaustive(node);
467
+ }
468
+
469
+ /** https://tc39.es/ecma262/#sec-runtime-semantics-repeatmatcher-abstract-operation */
470
+ function* RepeatMatcher(m: Matcher, min: number, max: number, greedy: boolean, x: MatchState, c: MatcherContinuation, parenIndex: number, parenCount: number): NonSpecFlattenedRegExpMatchingProcess {
471
+ if (max === 0) {
472
+ return yield () => c(x);
473
+ }
474
+ const d: MatcherContinuation = function* RepeatMatcher_d(y) {
475
+ if (min === 0 && y.endIndex === x.endIndex) {
476
+ return 'failure';
477
+ }
478
+ const min2 = min === 0 ? 0 : min - 1;
479
+ const max2 = max === Infinity ? Infinity : max - 1;
480
+ return yield () => RepeatMatcher(m, min2, max2, greedy, y, c, parenIndex, parenCount);
481
+ };
482
+ const cap = [...x.captures];
483
+ for (let k = parenIndex + 1; k <= parenIndex + parenCount; k += 1) {
484
+ cap[k] = undefined;
485
+ }
486
+ const input = x.input;
487
+ const e = x.endIndex;
488
+ const xr = new MatchState(input, e, cap);
489
+ if (min !== 0) {
490
+ return yield () => m(xr, d);
491
+ }
492
+ if (!greedy) {
493
+ const z = yield () => c(x);
494
+ if (z !== 'failure') {
495
+ return z;
496
+ }
497
+ return yield () => m(xr, d);
498
+ }
499
+ const z = yield () => m(xr, d);
500
+ if (z !== 'failure') {
501
+ return z;
502
+ }
503
+ return yield () => c(x);
504
+ }
505
+
506
+ /** https://tc39.es/ecma262/#sec-emptymatcher */
507
+ const EmptyMatcher: Matcher = (x, c) => c(x);
508
+ annotateMatcher(EmptyMatcher, 'EmptyMatcher');
509
+
510
+ /** https://tc39.es/ecma262/#sec-matchtwoalternatives */
511
+ function MatchTwoAlternatives(m1: Matcher, m2: Matcher): Matcher {
512
+ return annotateMatcher(function* TwoAlternatives(x, c) {
513
+ const r = yield () => m1(x, c);
514
+ if (r !== 'failure') {
515
+ return r;
516
+ }
517
+ return yield () => m2(x, c);
518
+ }, [(m1 as MatcherWithComment).comment || m1, '|', (m2 as MatcherWithComment).comment || m2]);
519
+ }
520
+
521
+ /** https://tc39.es/ecma262/#sec-matchsequence */
522
+ function MatchSequence(m1: Matcher, m2: Matcher, direction: Direction): Matcher {
523
+ if (direction === Direction.Forward) {
524
+ return annotateMatcher(function Seq(x, c) {
525
+ const d: MatcherContinuation = (y) => m2(y, c);
526
+ return m1(x, d);
527
+ }, [(m1 as MatcherWithComment).comment || m1, '|', (m2 as MatcherWithComment).comment || m2]);
528
+ } else {
529
+ return annotateMatcher(function Seq_Backword(x, c) {
530
+ const d: MatcherContinuation = (y) => m1(y, c);
531
+ return m2(x, d);
532
+ }, [(m2 as MatcherWithComment).comment || m2, '|', (m1 as MatcherWithComment).comment || m1]);
533
+ }
534
+ }
535
+
536
+ /** https://tc39.es/ecma262/#sec-compileassertion */
537
+ function CompileAssertion(node: ParseNode.RegExp.Assertion, rer: RegExpRecord): Matcher {
538
+ if (node.production === '^') {
539
+ return function* Assertion_Start(x, c) {
540
+ const Input = x.input;
541
+ const e = x.endIndex;
542
+ if (e === 0 || (rer.Multiline && isLineTerminator(Input[e - 1]))) {
543
+ return yield () => c(x);
544
+ }
545
+ return 'failure';
546
+ };
547
+ } else if (node.production === '$') {
548
+ return function* Assertion_End(x, c) {
549
+ const Input = x.input;
550
+ const e = x.endIndex;
551
+ if (e === Input.length || (rer.Multiline && isLineTerminator(Input[e]))) {
552
+ return yield () => c(x);
553
+ }
554
+ return 'failure';
555
+ };
556
+ } else if (node.production === 'b') {
557
+ return function* Assertion_WordBoundary(x, c) {
558
+ const Input = x.input;
559
+ const e = x.endIndex;
560
+ const a = IsWordChar(rer, Input.raw, e - 1);
561
+ const b = IsWordChar(rer, Input.raw, e);
562
+ if ((a && !b) || (!a && b)) {
563
+ return yield () => c(x);
564
+ }
565
+ return 'failure';
566
+ };
567
+ } else if (node.production === 'B') {
568
+ return function* Assertion_NotWordBoundary(x, c) {
569
+ const Input = x.input;
570
+ const e = x.endIndex;
571
+ const a = IsWordChar(rer, Input.raw, e - 1);
572
+ const b = IsWordChar(rer, Input.raw, e);
573
+ if ((a && b) || (!a && !b)) {
574
+ return yield () => c(x);
575
+ }
576
+ return 'failure';
577
+ };
578
+ } else if (node.production === 'A') {
579
+ return function* Assertion_BufferStart(x, c) {
580
+ const e = x.endIndex;
581
+ if (e === 0) {
582
+ return yield () => c(x);
583
+ }
584
+ return 'failure';
585
+ };
586
+ } else if (node.production === 'z') {
587
+ return function* Assertion_BufferEnd(x, c) {
588
+ const Input = x.input;
589
+ const e = x.endIndex;
590
+ if (e === Input.length) {
591
+ return yield () => c(x);
592
+ }
593
+ return 'failure';
594
+ };
595
+ } else if (node.production === '?=') {
596
+ const m = CompileSubPattern(node.Disjunction, rer, Direction.Forward);
597
+ return function* Assertion_PositiveLookahead(x, c) {
598
+ const d: MatcherContinuation = function* Assertion_PositiveLookahead_Success(y) {
599
+ return y;
600
+ };
601
+ const r = yield () => m(x, d);
602
+ if (r === 'failure') {
603
+ return 'failure';
604
+ }
605
+ const cap = r.captures;
606
+ const input = x.input;
607
+ const xe = x.endIndex;
608
+ const z = new MatchState(input, xe, cap);
609
+ return yield () => c(z);
610
+ };
611
+ } else if (node.production === '?!') {
612
+ const m = CompileSubPattern(node.Disjunction, rer, Direction.Forward);
613
+ return function* Assertion_NegativeLookahead(x, c) {
614
+ const d: MatcherContinuation = function* Assertion_NegativeLookahead_Success(y) {
615
+ return y;
616
+ };
617
+ const r = yield () => m(x, d);
618
+ if (r !== 'failure') {
619
+ return 'failure';
620
+ }
621
+ return yield () => c(x);
622
+ };
623
+ } else if (node.production === '?<=') {
624
+ const m = CompileSubPattern(node.Disjunction, rer, Direction.Backward);
625
+ return function* Assertion_PositiveLookBehind(x, c) {
626
+ const d: MatcherContinuation = function* Assertion_PositiveLookBehind_Success(y) {
627
+ return y;
628
+ };
629
+ const r = yield () => m(x, d);
630
+ if (r === 'failure') {
631
+ return 'failure';
632
+ }
633
+ const cap = r.captures;
634
+ const input = x.input;
635
+ const xe = x.endIndex;
636
+ const z = new MatchState(input, xe, cap);
637
+ return yield () => c(z);
638
+ };
639
+ } else if (node.production === '?<!') {
640
+ const m = CompileSubPattern(node.Disjunction, rer, Direction.Backward);
641
+ return function* Assertion_NegativeLookBehind(x, c) {
642
+ const d: MatcherContinuation = function* Assertion_NegativeLookBehind_Success(y) {
643
+ return y;
644
+ };
645
+ const r = yield () => m(x, d);
646
+ if (r !== 'failure') {
647
+ return 'failure';
648
+ }
649
+ return yield () => c(x);
650
+ };
651
+ }
652
+ throw OutOfRange.exhaustive(node.production);
653
+ }
654
+
655
+ /** https://tc39.es/ecma262/#sec-runtime-semantics-iswordchar-abstract-operation */
656
+ function IsWordChar(rer: RegExpRecord, Input: string, e: number): boolean {
657
+ const inputLength = Input.length;
658
+ if (e === -1 || e === inputLength) {
659
+ return false;
660
+ }
661
+ const c = Input[e];
662
+ return WordCharacters(rer).has(c as Character, rer);
663
+ }
664
+
665
+ /** https://tc39.es/ecma262/#sec-compilequantifier */
666
+ function CompileQuantifier(node: ParseNode.RegExp.Quantifier): { Min: number, Max: number, Greedy: boolean } {
667
+ const [Min, Max] = CompileQuantifierPrefix(node.QuantifierPrefix);
668
+ return { Min, Max, Greedy: !node.QuestionMark };
669
+ }
670
+
671
+ /** https://tc39.es/ecma262/#sec-compilequantifierprefix */
672
+ function CompileQuantifierPrefix(node: ParseNode.RegExp.Quantifier['QuantifierPrefix']): [Min: number, Max: number] {
673
+ switch (node.production) {
674
+ case '*':
675
+ return [0, Infinity];
676
+ case '+':
677
+ return [1, Infinity];
678
+ case '?':
679
+ return [0, 1];
680
+ default: {
681
+ return [node.DecimalDigits_a, node.DecimalDigits_b || node.DecimalDigits_a];
682
+ }
683
+ }
684
+ }
685
+
686
+ /** https://tc39.es/ecma262/#sec-compileatom */
687
+ function CompileAtom(node: ParseNode.RegExp.Atom | ParseNode.RegExp.AtomEscape, rer: RegExpRecord, direction: Direction): Matcher {
688
+ if (node.type === 'Atom') {
689
+ switch (node.production) {
690
+ // Atom :: PatternCharacter
691
+ case 'PatternCharacter': {
692
+ const ch = node.PatternCharacter;
693
+ const A = new ConcreteCharSet([ch]);
694
+ return CharacterSetMatcher(rer, A, false, direction);
695
+ }
696
+ // Atom :: .
697
+ case '.': {
698
+ let A: CharSet = AllCharacters(rer);
699
+ if (!rer.DotAll) {
700
+ // Remove from A all characters corresponding to a code point on the right-hand side of the LineTerminator production.
701
+ A = CharSet.subtract(A, false, new VirtualCharSet(isLineTerminator));
702
+ }
703
+ return CharacterSetMatcher(rer, A, false, direction);
704
+ }
705
+ // Atom :: CharacterClass
706
+ case 'CharacterClass': {
707
+ const cc = CompileCharacterClass(node.CharacterClass, rer);
708
+ const cs = cc.CharSet;
709
+ // If rer.[[UnicodeSets]] is false, or if every CharSetElement of cs consists of a single character (including if cs is empty), return CharacterSetMatcher(rer, cs, cc.[[Invert]], direction).
710
+ if (!rer.UnicodeSets || cs.characterModeOnly) {
711
+ return CharacterSetMatcher(rer, cs, cc.Invert, direction);
712
+ }
713
+ Assert(!cc.Invert);
714
+ const lm: Matcher[] = [];
715
+ // For each CharSetElement s in cs containing more than 1 character, iterating in descending order of length, do
716
+ for (const s of cs.getStrings().sort((a, b) => b.length - a.length)) {
717
+ // Let cs2 be a one-element CharSet containing the last code point of s.
718
+ const cs2 = new ConcreteCharSet([s.at(-1)! as Character]);
719
+ let m2 = CharacterSetMatcher(rer, cs2, false, direction);
720
+ // For each code point c1 in s, iterating backwards from its second-to-last code point, do
721
+ for (const c1 of Unicode.iterateByCodePoint(s).reverse().slice(1)) {
722
+ const cs1 = new ConcreteCharSet([c1 as unknown as Character]);
723
+ const m1 = CharacterSetMatcher(rer, cs1, false, direction);
724
+ m2 = MatchSequence(m1, m2, direction);
725
+ }
726
+ lm.push(m2);
727
+ }
728
+ // Let singles be the CharSet containing every CharSetElement of cs that consists of a single character.
729
+ const singles = CharSet.subtract(cs, true);
730
+ lm.push(CharacterSetMatcher(rer, singles, false, direction));
731
+ // If cs contains the empty sequence of characters, append EmptyMatcher() to lm.
732
+ if (cs.hasList('' as ListOfCharacter)) {
733
+ lm.push(EmptyMatcher);
734
+ }
735
+ let m2 = lm.at(-1)!;
736
+ // For each Matcher m1 of lm, iterating backwards from its second-to-last element, do
737
+ for (const m1 of lm.toReversed().slice(1)) {
738
+ m2 = MatchTwoAlternatives(m1, m2);
739
+ }
740
+ return m2;
741
+ }
742
+ case 'Group': {
743
+ const m = CompileSubPattern(node.Disjunction, rer, direction);
744
+ const parenIndex = CountLeftCapturingParensBefore(node);
745
+ return annotateMatcher(function GroupMatcher(x, c) {
746
+ const d: MatcherContinuation = (y) => {
747
+ const cap = [...y.captures];
748
+ const Input = x.input;
749
+ const xe = x.endIndex;
750
+ const ye = y.endIndex;
751
+ let r: Range;
752
+ if (direction === Direction.Forward) {
753
+ Assert(xe <= ye);
754
+ r = { startIndex: xe, endIndex: ye };
755
+ } else {
756
+ Assert(direction === Direction.Backward);
757
+ Assert(ye <= xe);
758
+ r = { startIndex: ye, endIndex: xe };
759
+ }
760
+ cap[parenIndex + 1] = r;
761
+ const z = new MatchState(Input, ye, cap);
762
+ return c(z);
763
+ };
764
+ return m(x, d);
765
+ }, node);
766
+ }
767
+ case 'Modifier': {
768
+ const addModifiers = node.AddModifiers;
769
+ const removeModifiers = node.RemoveModifiers;
770
+ const modifiedRer = UpdateModifiers(rer, addModifiers?.join('') || '', removeModifiers?.join('') || '');
771
+ return CompileSubPattern(node.Disjunction, modifiedRer, direction);
772
+ }
773
+ case 'AtomEscape':
774
+ return CompileAtom(node.AtomEscape, rer, direction);
775
+ default:
776
+ throw OutOfRange.exhaustive(node);
777
+ }
778
+ // Atom :: ( GroupSpecifieropt Disjunction )
779
+ } else if (node.type === 'AtomEscape') {
780
+ switch (node.production) {
781
+ case 'DecimalEscape': {
782
+ const n = CapturingGroupNumber(node.DecimalEscape);
783
+ Assert(n <= rer.CapturingGroupsCount);
784
+ return BackreferenceMatcher(rer, [n], direction);
785
+ }
786
+ case 'CharacterEscape': {
787
+ const cv = CharacterValue(node.CharacterEscape);
788
+ const ch = Unicode.toCharacter(cv);
789
+ const A = new ConcreteCharSet([ch]);
790
+ return CharacterSetMatcher(rer, A, false, direction);
791
+ }
792
+ case 'CharacterClassEscape': {
793
+ const cs = CompileToCharSet(node.CharacterClassEscape, rer);
794
+ // If rer.[[UnicodeSets]] is false, or if every CharSetElement of cs consists of a single character (including if cs is empty), return CharacterSetMatcher(rer, cs, cc.[[Invert]], direction).
795
+ if (!rer.UnicodeSets || cs.characterModeOnly) {
796
+ return CharacterSetMatcher(rer, cs, false, direction);
797
+ }
798
+ const lm: Matcher[] = [];
799
+ // For each CharSetElement s in cs containing more than 1 character, iterating in descending order of length, do
800
+ for (const s of cs.getStrings().sort((a, b) => b.length - a.length)) {
801
+ const codePointOfS = Unicode.iterateByCodePoint(s);
802
+ // Let cs2 be a one-element CharSet containing the last code point of s.
803
+ const cs2 = new ConcreteCharSet([codePointOfS.at(-1)!]);
804
+ let m2 = CharacterSetMatcher(rer, cs2, false, direction);
805
+ // For each code point c1 in s, iterating backwards from its second-to-last code point, do
806
+ for (const c1 of codePointOfS.reverse().slice(1)) {
807
+ const cs1 = new ConcreteCharSet([c1]);
808
+ const m1 = CharacterSetMatcher(rer, cs1, false, direction);
809
+ m2 = MatchSequence(m1, m2, direction);
810
+ }
811
+ lm.push(m2);
812
+ }
813
+ // Let singles be the CharSet containing every CharSetElement of cs that consists of a single character.
814
+ const singles = CharSet.subtract(cs, true);
815
+ lm.push(CharacterSetMatcher(rer, singles, false, direction));
816
+ // If cs contains the empty sequence of characters, append EmptyMatcher() to lm.
817
+ if (cs.hasList('' as ListOfCharacter)) {
818
+ lm.push(EmptyMatcher);
819
+ }
820
+ let m2 = lm.at(-1)!;
821
+ // For each Matcher m1 of lm, iterating backwards from its second-to-last element, do
822
+ for (const m1 of lm.toReversed().slice(1)) {
823
+ m2 = MatchTwoAlternatives(m1, m2);
824
+ }
825
+ return m2;
826
+ }
827
+ case 'CaptureGroupName': {
828
+ const matchingGroupSpecifiers = GroupSpecifiersThatMatch(node);
829
+ const parenIndices = [];
830
+ for (const atom_Group of matchingGroupSpecifiers) {
831
+ // Let parenIndex be CountLeftCapturingParensBefore(groupSpecifier).
832
+ // groupSpecifier is in a Atom_Group, the CountLeftCapturingParensBefore does not count for itself so add 1
833
+ const parenIndex = CountLeftCapturingParensBefore(atom_Group) + 1;
834
+ parenIndices.push(parenIndex);
835
+ }
836
+ return BackreferenceMatcher(rer, parenIndices, direction);
837
+ }
838
+ default:
839
+ throw OutOfRange.exhaustive(node);
840
+ }
841
+ }
842
+ throw OutOfRange.exhaustive(node);
843
+ }
844
+
845
+ /** https://tc39.es/ecma262/#sec-runtime-semantics-charactersetmatcher-abstract-operation */
846
+ function CharacterSetMatcher(rer: RegExpRecord, A: CharSet, invert: boolean, direction: Direction): Matcher {
847
+ if (rer.UnicodeSets) {
848
+ Assert(!invert);
849
+ // Assert: Every CharSetElement of A consists of a single character.
850
+ Assert(A.characterModeOnly);
851
+ }
852
+ return annotateMatcher(function* CharacterSetMatcher(x, c) {
853
+ const Input = x.input;
854
+ const e = x.endIndex;
855
+ const f = direction === Direction.Forward ? e + 1 : e - 1;
856
+ const InputLength = Input.length;
857
+ if (f < 0 || f > InputLength) {
858
+ return 'failure';
859
+ }
860
+ const index = Math.min(e, f);
861
+ const ch = Input[index] as Character;
862
+ const cc = Canonicalize(rer, ch);
863
+ // If there exists a CharSetElement in A containing exactly one character a such that Canonicalize(rer, a) is cc, let found be true. Otherwise, let found be false.
864
+ const found = A.has(cc, rer);
865
+
866
+ if ((!invert && !found) || (invert && found)) {
867
+ return 'failure';
868
+ }
869
+ const cap = x.captures;
870
+ const y = new MatchState(Input, f, cap);
871
+ return yield () => c(y);
872
+ }, [A, invert]);
873
+ }
874
+
875
+ /** https://tc39.es/ecma262/#sec-backreference-matcher */
876
+ function BackreferenceMatcher(rer: RegExpRecord, ns: readonly number[], direction: Direction): Matcher {
877
+ return annotateMatcher(function* BackreferenceMatcher(x, c) {
878
+ const Input = x.input;
879
+ const cap = x.captures;
880
+ let r;
881
+ for (const n of ns) {
882
+ if (cap[n] !== undefined) {
883
+ Assert(r === undefined);
884
+ r = cap[n];
885
+ }
886
+ }
887
+ if (r === undefined) {
888
+ return yield () => c(x);
889
+ }
890
+ const e = x.endIndex;
891
+ const rs = r.startIndex;
892
+ const re = r.endIndex;
893
+ const len = re - rs;
894
+ const f = direction === Direction.Forward ? e + len : e - len;
895
+ const InputLength = Input.length;
896
+ if (f < 0 || f > InputLength) {
897
+ return 'failure';
898
+ }
899
+ const g = Math.min(e, f);
900
+ for (let i = 0; i < len; i += 1) {
901
+ if (Canonicalize(rer, Input[rs + i] as Character) !== Canonicalize(rer, Input[g + i] as Character)) {
902
+ return 'failure';
903
+ }
904
+ }
905
+ const y = new MatchState(Input, f, cap);
906
+ return yield () => c(y);
907
+ }, ['BackreferenceMatcher', ns, rer]);
908
+ }
909
+
910
+ /** https://tc39.es/ecma262/#sec-runtime-semantics-canonicalize-ch */
911
+ export function Canonicalize(rer: RegExpRecord, char: Character): Character {
912
+ if (HasEitherUnicodeFlag(rer) && rer.IgnoreCase) {
913
+ // If the file CaseFolding.txt of the Unicode Character Database provides a simple or common case folding mapping for ch, return the result of applying that mapping to ch.
914
+ const mapped = Unicode.SimpleOrCommonCaseFoldingMapping(char);
915
+ if (mapped) {
916
+ return mapped;
917
+ } else {
918
+ return char;
919
+ }
920
+ }
921
+ if (!rer.IgnoreCase) {
922
+ return char;
923
+ }
924
+ Assert(char.length === 1, 'ch is a UTF-16 code unit');
925
+ const codePoint = Unicode.toCodePoint(char);
926
+ const mappedCodePoints = Unicode.toUppercase(codePoint);
927
+ if (CodePointsToString(mappedCodePoints).length !== 1) {
928
+ return char;
929
+ }
930
+ // Assert: The number of elements in mappedCodePoints is 1.
931
+ Assert([...mappedCodePoints].length === 1);
932
+ const mappedCodePoint = mappedCodePoints.codePointAt(0)! as CodePoint;
933
+ if (codePoint >= 128 && mappedCodePoint < 128) {
934
+ return char;
935
+ }
936
+ // Return the code unit whose numeric value is the numeric value of mappedCodePoint.
937
+ return String.fromCharCode(mappedCodePoint) as Character;
938
+ }
939
+
940
+ /** https://tc39.es/ecma262/#sec-updatemodifiers */
941
+ function UpdateModifiers(rer: RegExpRecord, add: string, remove: string): RegExpRecord {
942
+ Assert(new Set([...add, ...remove]).size === (add + remove).length);
943
+ const next = { ...rer };
944
+ if (remove.includes('i')) {
945
+ next.IgnoreCase = false;
946
+ } else if (add.includes('i')) {
947
+ next.IgnoreCase = true;
948
+ }
949
+ if (remove.includes('m')) {
950
+ next.Multiline = false;
951
+ } else if (add.includes('m')) {
952
+ next.Multiline = true;
953
+ }
954
+ if (remove.includes('s')) {
955
+ next.DotAll = false;
956
+ } else if (add.includes('s')) {
957
+ next.DotAll = true;
958
+ }
959
+ return next;
960
+ }
961
+
962
+ /** https://tc39.es/ecma262/#sec-compilecharacterclass */
963
+ function CompileCharacterClass(node: ParseNode.RegExp.CharacterClass, rer: RegExpRecord): { CharSet: CharSet, Invert: boolean } {
964
+ const A = CompileToCharSet(node.ClassContents, rer);
965
+ return {
966
+ CharSet: rer.UnicodeSets && node.invert ? CharacterComplement(rer, A) : A,
967
+ Invert: rer.UnicodeSets ? false : node.invert,
968
+ };
969
+ }
970
+
971
+ /** https://tc39.es/ecma262/#sec-compiletocharset */
972
+ function CompileToCharSet(
973
+ node:
974
+ | ParseNode.RegExp.ClassContents
975
+ | ParseNode.RegExp.ClassAtom
976
+ | ParseNode.RegExp.ClassEscape
977
+ | ParseNode.RegExp.CharacterClassEscape
978
+ | ParseNode.RegExp.UnicodePropertyValueExpression
979
+ | ParseNode.RegExp.ClassUnion
980
+ | ParseNode.RegExp.ClassIntersection
981
+ | ParseNode.RegExp.ClassSubtraction
982
+ | ParseNode.RegExp.ClassSetRange
983
+ | ParseNode.RegExp.ClassSetOperand
984
+ | ParseNode.RegExp.NestedClass
985
+ | ParseNode.RegExp.ClassSetCharacter
986
+ | ParseNode.RegExp.ClassStringDisjunction
987
+ // eslint-disable-next-line comma-style
988
+ , rer: RegExpRecord,
989
+ ): CharSet {
990
+ switch (node.type) {
991
+ // ClassContents :: [empty]
992
+ // NonemptyClassRanges :: ClassAtom NonemptyClassRangesNoDash
993
+ // NonemptyClassRanges :: ClassAtom - ClassAtom ClassContents
994
+ // NonemptyClassRangesNoDash :: ClassAtomNoDash NonemptyClassRangesNoDash
995
+ // NonemptyClassRangesNoDash :: ClassAtomNoDash - ClassAtom ClassContents
996
+ case 'ClassContents': {
997
+ if (node.production === 'Empty') {
998
+ return new ConcreteCharSet([]);
999
+ } else if (node.production === 'NonEmptyClassRanges') {
1000
+ let allSet: CharSet = new ConcreteCharSet([]);
1001
+ for (const range of node.NonemptyClassRanges) {
1002
+ if (isArray(range)) {
1003
+ const [A, B] = range;
1004
+ const a = CompileToCharSet(A, rer);
1005
+ const b = CompileToCharSet(B, rer);
1006
+ Assert(a instanceof ConcreteCharSet && b instanceof ConcreteCharSet);
1007
+ const set = CharacterRange(a, b);
1008
+ allSet = CharSet.union(allSet, set);
1009
+ } else {
1010
+ const set = CompileToCharSet(range, rer);
1011
+ allSet = CharSet.union(allSet, set);
1012
+ }
1013
+ }
1014
+ return allSet!;
1015
+ } else if (node.production === 'ClassSetExpression') {
1016
+ return CompileToCharSet(node.ClassSetExpression, rer);
1017
+ }
1018
+ throw OutOfRange.exhaustive(node);
1019
+ }
1020
+ // ClassAtom :: -
1021
+ // ClassAtomNoDash :: SourceCharacter but not one of \ or ] or -
1022
+ case 'ClassAtom': {
1023
+ if (node.production === '-') {
1024
+ return new ConcreteCharSet(['-' as Character]);
1025
+ } else if (node.production === 'SourceCharacter') {
1026
+ return new ConcreteCharSet([node.SourceCharacter as Character]);
1027
+ } else if (node.production === 'ClassEscape') {
1028
+ return CompileToCharSet(node.ClassEscape, rer);
1029
+ }
1030
+ throw OutOfRange.exhaustive(node);
1031
+ }
1032
+ // ClassEscape :: -
1033
+ // ClassEscape :: CharacterEscape
1034
+ case 'ClassEscape': {
1035
+ if (node.production === 'CharacterClassEscape') {
1036
+ return CompileToCharSet(node.CharacterClassEscape, rer);
1037
+ }
1038
+ const cv = CharacterValue(node);
1039
+ return new ConcreteCharSet([Unicode.toCharacter(cv)]);
1040
+ }
1041
+ // CharacterClassEscape :: d d s S w W
1042
+ // CharacterClassEscape :: p{ UnicodePropertyValueExpression }
1043
+ // CharacterClassEscape :: P{ UnicodePropertyValueExpression }
1044
+ case 'CharacterClassEscape': {
1045
+ switch (node.production) {
1046
+ case 'd':
1047
+ return new ConcreteCharSet('0123456789' as Iterable<Character>);
1048
+ case 'D':
1049
+ return CharacterComplement(rer, new ConcreteCharSet('0123456789' as Iterable<Character>));
1050
+ case 's':
1051
+ return new VirtualCharSet((char) => isWhitespace(char) || isLineTerminator(char));
1052
+ case 'S':
1053
+ return new VirtualCharSet(((char) => !isWhitespace(char) && !isLineTerminator(char)));
1054
+ case 'w':
1055
+ return MaybeSimpleCaseFolding(rer, WordCharacters(rer));
1056
+ case 'W':
1057
+ return CharacterComplement(rer, MaybeSimpleCaseFolding(rer, WordCharacters(rer)));
1058
+ case 'p':
1059
+ return CompileToCharSet(node.UnicodePropertyValueExpression!, rer);
1060
+ case 'P': {
1061
+ const S = CompileToCharSet(node.UnicodePropertyValueExpression!, rer);
1062
+ // Cannot implement: Assert: S contains only single code points.
1063
+ return CharacterComplement(rer, S);
1064
+ }
1065
+ default:
1066
+ throw OutOfRange.exhaustive(node);
1067
+ }
1068
+ }
1069
+ // UnicodePropertyValueExpression :: UnicodePropertyName = UnicodePropertyValue
1070
+ // UnicodePropertyValueExpression :: LoneUnicodePropertyNameOrValue
1071
+ case 'UnicodePropertyValueExpression': {
1072
+ if (node.production === '=') {
1073
+ const ps = node.UnicodePropertyName;
1074
+ const p = UnicodeMatchProperty(rer, ps);
1075
+ Assert(p in Table69_NonbinaryUnicodeProperties);
1076
+ __ts_cast__<Table69_NonbinaryUnicodePropertiesCanonicalized>(p);
1077
+ const vs = node.UnicodePropertyValue;
1078
+ let v: string;
1079
+ let A: CharSet;
1080
+ if (p === 'Script_Extensions') {
1081
+ Assert(vs in PropertyValueAliases.Script);
1082
+ // Let v be the Set containing the “short name”, “long name”, and any other aliases corresponding with value vs for property “Script” in PropertyValueAliases.txt.
1083
+ v = UnicodeMatchPropertyValue('Script', vs);
1084
+ // Return the CharSet containing all Unicode code points whose character database definition includes the property “Script_Extensions” with value having a non-empty intersection with v.
1085
+ A = new VirtualCharSet((ch, rer) => Unicode.characterMatchPropertyValue(ch, p, v, rer));
1086
+ } else {
1087
+ v = UnicodeMatchPropertyValue(p, vs);
1088
+ // Let A be the CharSet containing all Unicode code points whose character database definition includes the property p with value v.
1089
+ A = new VirtualCharSet((ch, rer) => Unicode.characterMatchPropertyValue(ch, p, v, rer));
1090
+ }
1091
+ return MaybeSimpleCaseFolding(rer, A);
1092
+ } else {
1093
+ const s = node.LoneUnicodePropertyNameOrValue;
1094
+ if (s in PropertyValueAliases.General_Category) {
1095
+ const v = UnicodeMatchPropertyValue('General_Category', s);
1096
+ // Return the CharSet containing all Unicode code points whose character database definition includes the property “General_Category” with value v.
1097
+ return new VirtualCharSet((ch, rer) => Unicode.characterMatchPropertyValue(ch, 'General_Category', v, rer));
1098
+ }
1099
+ const p = UnicodeMatchProperty(rer, s);
1100
+ Assert(p in Table70_BinaryUnicodeProperties || p in Table71_BinaryPropertyOfStrings);
1101
+ // Let A be the CharSet containing all CharSetElements whose character database definition includes the property p with value “True”.
1102
+ if (p in Table71_BinaryPropertyOfStrings) {
1103
+ const A = ConcreteStringSet.of(Unicode.getStringPropertySet(p as keyof typeof Table71_BinaryPropertyOfStrings));
1104
+ return MaybeSimpleCaseFolding(rer, A);
1105
+ }
1106
+ const A = new VirtualCharSet((ch, rer) => Unicode.characterMatchPropertyValue(ch, p as Table69_NonbinaryUnicodePropertiesCanonicalized, undefined, rer));
1107
+ return MaybeSimpleCaseFolding(rer, A);
1108
+ }
1109
+ }
1110
+ // ClassUnion :: ClassSetRange ClassUnion
1111
+ // ClassUnion :: ClassSetOperand ClassUnion
1112
+ case 'ClassUnion': {
1113
+ return CharSet.union(...node.union.map((part): CharSet => CompileToCharSet(part, rer)));
1114
+ }
1115
+ // ClassIntersection :: ClassSetOperand && ClassSetOperand
1116
+ // ClassIntersection :: ClassIntersection && ClassSetOperand
1117
+ case 'ClassIntersection': {
1118
+ return CharSet.intersection(...node.operands.map((part): CharSet => CompileToCharSet(part, rer)));
1119
+ }
1120
+ // ClassSubtraction :: ClassSetOperand -- ClassSetOperand
1121
+ // ClassSubtraction :: ClassSubtraction -- ClassSetOperand
1122
+ case 'ClassSubtraction': {
1123
+ const mainSet = CompileToCharSet(node.operands[0], rer);
1124
+ return CharSet.subtract(mainSet, false, ...node.operands.slice(1).map((part) => CompileToCharSet(part, rer)));
1125
+ }
1126
+ // ClassSetRange :: ClassSetCharacter - ClassSetCharacter
1127
+ case 'ClassSetRange': {
1128
+ const A = CompileToCharSet(node.left, rer);
1129
+ const B = CompileToCharSet(node.right, rer);
1130
+ Assert(A instanceof ConcreteCharSet && B instanceof ConcreteCharSet);
1131
+ return MaybeSimpleCaseFolding(rer, CharacterRange(A, B));
1132
+ }
1133
+ // ClassSetOperand :: ClassSetCharacter
1134
+ // ClassSetOperand :: ClassStringDisjunction
1135
+ // ClassSetOperand :: NestedClass
1136
+ case 'ClassSetOperand': {
1137
+ if (node.production === 'NestedClass') {
1138
+ return CompileToCharSet(node.NestedClass, rer);
1139
+ } else if (node.production === 'ClassSetCharacter') {
1140
+ const A = CompileToCharSet(node.ClassSetCharacter, rer);
1141
+ return MaybeSimpleCaseFolding(rer, A);
1142
+ } else if (node.production === 'ClassStringDisjunction') {
1143
+ const A = CompileToCharSet(node.ClassStringDisjunction, rer);
1144
+ return MaybeSimpleCaseFolding(rer, A);
1145
+ }
1146
+ throw OutOfRange.exhaustive(node);
1147
+ }
1148
+ // NestedClass :: [ ClassContents ]
1149
+ // NestedClass :: [^ ClassContents ]
1150
+ // NestedClass :: \ CharacterClassEscape
1151
+ case 'NestedClass': {
1152
+ if (node.production === 'ClassContents') {
1153
+ const A = CompileToCharSet(node.ClassContents, rer);
1154
+ if (node.invert) {
1155
+ return CharacterComplement(rer, A);
1156
+ }
1157
+ return A;
1158
+ }
1159
+ if (node.CharacterClassEscape) {
1160
+ return CompileToCharSet(node.CharacterClassEscape, rer);
1161
+ }
1162
+ throw new Assert.Error('Invalid AST');
1163
+ }
1164
+ // ClassStringDisjunction :: \q{ ClassStringDisjunctionContents }
1165
+ // ClassStringDisjunctionContents :: ClassString
1166
+ // ClassStringDisjunctionContents :: ClassString | ClassStringDisjunctionContents
1167
+ case 'ClassStringDisjunction': {
1168
+ const s = node.ClassString.map((node) => CompileClassSetString(node, rer));
1169
+ const A = ConcreteStringSet.of(s);
1170
+ return A;
1171
+ }
1172
+ // ClassSetCharacter ::
1173
+ // SourceCharacter but not ClassSetSyntaxCharacter
1174
+ // \ CharacterEscape
1175
+ // \ ClassSetReservedPunctuator
1176
+ case 'ClassSetCharacter': {
1177
+ const cv = CharacterValue(node);
1178
+ const A = new ConcreteCharSet([Unicode.toCharacter(cv)]);
1179
+ return A;
1180
+ }
1181
+ default:
1182
+ throw OutOfRange.exhaustive(node);
1183
+ }
1184
+ }
1185
+
1186
+ /** https://tc39.es/ecma262/#sec-runtime-semantics-characterrange-abstract-operation */
1187
+ function CharacterRange(A: ConcreteCharSet, B: ConcreteCharSet): CharSet {
1188
+ const a = A.soleChar();
1189
+ const b = B.soleChar();
1190
+ const i = Unicode.toCodePoint(a);
1191
+ const j = Unicode.toCodePoint(b);
1192
+ Assert(i <= j);
1193
+
1194
+ const canonicalized: Record<string, Set<Character>> = {};
1195
+ // Return the CharSet containing all characters with a character value in the inclusive interval from i to j.
1196
+ return new VirtualCharSet((ch, rer) => {
1197
+ const cp = Unicode.toCodePoint(ch);
1198
+ if (rer) {
1199
+ const canonicalizedKey = JSON.stringify(rer);
1200
+ if (canonicalized[canonicalizedKey] === undefined) {
1201
+ canonicalized[canonicalizedKey] = new Set();
1202
+ const set = canonicalized[canonicalizedKey];
1203
+ for (let index = i; index <= j; index = index + 1 as CodePoint) {
1204
+ const ch = Unicode.toCharacter(index);
1205
+ set.add(Canonicalize(rer, ch));
1206
+ }
1207
+ }
1208
+ return canonicalized[canonicalizedKey].has(ch);
1209
+ }
1210
+ return cp >= i && cp <= j;
1211
+ });
1212
+ }
1213
+
1214
+ /** https://tc39.es/ecma262/#sec-runtime-semantics-haseitherunicodeflag-abstract-operation */
1215
+ function HasEitherUnicodeFlag(rer: RegExpRecord) {
1216
+ return rer.Unicode || rer.UnicodeSets;
1217
+ }
1218
+
1219
+ /** https://tc39.es/ecma262/#sec-wordcharacters */
1220
+ function WordCharacters(rer: RegExpRecord): CharSet {
1221
+ const basicWordChars = new ConcreteCharSet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_' as Iterable<Character>);
1222
+ const extraWordChars = new VirtualCharSet((c) => Unicode.isCharacter(c) && !basicWordChars.has(c, rer) && basicWordChars.has(Canonicalize(rer, c), rer));
1223
+ return CharSet.union(basicWordChars, extraWordChars);
1224
+ }
1225
+
1226
+ /** https://tc39.es/ecma262/#sec-allcharacters */
1227
+ function AllCharacters(rer: RegExpRecord): VirtualCharSet {
1228
+ if (rer.UnicodeSets && rer.IgnoreCase) {
1229
+ // Return the CharSet containing all Unicode code points c that do not have a Simple Case Folding mapping (that is, scf(c)=c).
1230
+ return new VirtualCharSet((char) => Unicode.isCharacter(char) && Unicode.SimpleOrCommonCaseFoldingMapping(char) !== char);
1231
+ } else if (HasEitherUnicodeFlag(rer)) {
1232
+ // Return the CharSet containing all code point values.
1233
+ return new VirtualCharSet((char) => Unicode.isCharacter(char));
1234
+ } else {
1235
+ // Return the CharSet containing all code unit values.
1236
+ return new VirtualCharSet((ch) => ch.length === 1);
1237
+ }
1238
+ }
1239
+
1240
+ /** https://tc39.es/ecma262/#sec-maybesimplecasefolding */
1241
+ function MaybeSimpleCaseFolding(rer: RegExpRecord, A: CharSet): CharSet {
1242
+ if (!rer.UnicodeSets || !rer.IgnoreCase) {
1243
+ return A;
1244
+ }
1245
+ const strings = A.getStrings();
1246
+ const scfString = strings.map((s) => Array.from(Unicode.iterateCharacterByCodePoint(s)).map(Unicode.SimpleOrCommonCaseFoldingMapping).join('') as ListOfCharacter);
1247
+
1248
+ const scfChar: CharTester = (ch, rer) => {
1249
+ // before optimized:
1250
+ // a. Let t be an empty sequence of characters.
1251
+ // b. For each single code point cp in s, do
1252
+ // i. Append scf(cp) to t.
1253
+ // c. Add t to B.
1254
+
1255
+ // it means B only contains scf(A)
1256
+ // we optimized it as:
1257
+ // if scf(ch) !== ch, it means ch is impossible to appear in scf(A).
1258
+ let scf = '';
1259
+ for (const cp of Unicode.iterateCharacterByCodePoint(ch)) {
1260
+ scf += Unicode.SimpleOrCommonCaseFoldingMapping(cp);
1261
+ }
1262
+ if (scf !== ch) {
1263
+ return false;
1264
+ }
1265
+ return A.has(ch, rer);
1266
+ };
1267
+ return CharSet.union(ConcreteStringSet.of(scfString), new VirtualCharSet(scfChar));
1268
+ }
1269
+
1270
+ /** https://tc39.es/ecma262/#sec-charactercomplement */
1271
+ function CharacterComplement(rer: RegExpRecord, S: CharSet): VirtualCharSet {
1272
+ const A = AllCharacters(rer);
1273
+ // Return the CharSet containing the CharSetElements of A which are not also CharSetElements of S.
1274
+ return new VirtualCharSet((ch, rer) => A.has(ch, rer) && !S.has(ch, rer));
1275
+ }
1276
+
1277
+ /** https://tc39.es/ecma262/#sec-runtime-semantics-unicodematchproperty-p */
1278
+ function UnicodeMatchProperty(rer: RegExpRecord, p: string): string {
1279
+ // If rer.[[UnicodeSets]] is true and _p_ is listed in the “Property name” column of Table 71, then, then
1280
+ if (rer.UnicodeSets && p in Table71_BinaryPropertyOfStrings) {
1281
+ return p;
1282
+ }
1283
+ // Assert: p is listed in the “Property name and aliases” column of Table 69 or Table 70.
1284
+ // Return the “canonical property name” corresponding to the property name or property alias p in Table 69 or Table 70.
1285
+ if (p in Table69_NonbinaryUnicodeProperties) {
1286
+ return Table69_NonbinaryUnicodeProperties[p as keyof typeof Table69_NonbinaryUnicodeProperties];
1287
+ }
1288
+ if (p in Table70_BinaryUnicodeProperties) {
1289
+ return Table70_BinaryUnicodeProperties[p as keyof typeof Table70_BinaryUnicodeProperties];
1290
+ }
1291
+ Assert(false, 'p in Table69_NonbinaryUnicodeProperties || p in Table70_BinaryUnicodeProperties');
1292
+ }
1293
+
1294
+ /** https://tc39.es/ecma262/#sec-runtime-semantics-unicodematchpropertyvalue-p-v */
1295
+ function UnicodeMatchPropertyValue(p: string, v: string): string {
1296
+ // Assert: p is a canonical, unaliased Unicode property name listed in the “Canonical property name” column of Table 69.
1297
+ const CanonicalizedP = Table69_NonbinaryUnicodeProperties[p as keyof typeof Table69_NonbinaryUnicodeProperties];
1298
+ Assert(p in Table69_NonbinaryUnicodeProperties && CanonicalizedP === p);
1299
+
1300
+ const table = PropertyValueAliases[CanonicalizedP];
1301
+ // Assert: v is a property value or property value alias for the Unicode property p listed in PropertyValueAliases.txt.
1302
+ Assert(v in table);
1303
+ // If v is a “short name” or other alias associated with some “long name” l for property name p in PropertyValueAliases.txt, return l; otherwise, return v.
1304
+ return table[v as keyof typeof table] as string;
1305
+ }
1306
+
1307
+ /** https://tc39.es/ecma262/#sec-compileclasssetstring */
1308
+ function CompileClassSetString(node: ParseNode.RegExp.ClassSetCharacter[], rer: RegExpRecord): ListOfCharacter {
1309
+ let str = '';
1310
+ for (const char of node) {
1311
+ const cs = CompileToCharSet(char, rer);
1312
+ Assert(cs instanceof ConcreteCharSet);
1313
+ const s1 = cs.soleChar();
1314
+ str += s1;
1315
+ }
1316
+ return str as ListOfCharacter;
1317
+ }
1318
+
1319
+ // SS:
1320
+ export function CountLeftCapturingParensWithin(node: ParseNode.RegExp.Term_Atom | ParseNode.RegExp.Pattern): number {
1321
+ if (node.type === 'Pattern') {
1322
+ return node.capturingGroups.length;
1323
+ }
1324
+ return node.capturingParenthesesWithin;
1325
+ }
1326
+ function CountLeftCapturingParensBefore(node: ParseNode.RegExp.Term_Atom | ParseNode.RegExp.Atom_Group): number {
1327
+ return node.leftCapturingParenthesesBefore;
1328
+ }
1329
+ export function IsCharacterClass(node: ParseNode.RegExp.ClassAtom) {
1330
+ return node.production === 'ClassEscape' && node.ClassEscape.production === 'CharacterClassEscape';
1331
+ }
1332
+ function CapturingGroupNumber(node: ParseNode.RegExp.DecimalEscape): number {
1333
+ return node.value;
1334
+ }
1335
+ function GroupSpecifiersThatMatch(node: ParseNode.RegExp.AtomEscape_CaptureGroupName) {
1336
+ return node.groupSpecifiersThatMatchSelf;
1337
+ }
1338
+
1339
+ // for debugging purpose
1340
+ type MatcherWithComment = Matcher & { comment: unknown };
1341
+ function annotateMatcher(matcher: Matcher, comment: unknown): Matcher {
1342
+ Object.assign(matcher, { comment });
1343
+ return matcher;
1344
+ }