@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,1428 @@
1
+ import {
2
+ Table70_BinaryUnicodeProperties,
3
+ Table69_NonbinaryUnicodeProperties,
4
+ type UnicodeCharacter,
5
+ CountLeftCapturingParensWithin,
6
+ type Character,
7
+ IsCharacterClass,
8
+ type CodePoint,
9
+ Table71_BinaryPropertyOfStrings,
10
+ isLeadingSurrogate,
11
+ isTrailingSurrogate,
12
+ } from '../runtime-semantics/all.mts';
13
+ import {
14
+ CharacterValue,
15
+ UTF16SurrogatePairToCodePoint,
16
+ type CharacterValueAcceptNode,
17
+ } from '../static-semantics/all.mts';
18
+ // @ts-ignore
19
+ import PropertyValueAliases from '../unicode/PropertyValueAliases.json' with { type: 'json' };
20
+ import { __ts_cast__, OutOfRange } from '../utils/language.mts';
21
+ import {
22
+ isIdentifierStart,
23
+ isIdentifierPart,
24
+ isHexDigit,
25
+ } from './Lexer.mts';
26
+ import type { ParseNode } from './ParseNode.mts';
27
+ import {
28
+ Assert, isErrorObject, surroundingAgent, Throw, ThrowCompletion, type ErrorObject, type Mutable,
29
+ } from '#self';
30
+
31
+ export const isSyntaxCharacter = (c: string) => '^$\\.*+?()[]{}|'.includes(c);
32
+ const isClosingSyntaxCharacter = (c: string) => ')]}|'.includes(c);
33
+ const isDecimalDigit = (c: string) => /[0123456789]/u.test(c);
34
+ const isControlLetter = (c: string) => /[a-zA-Z]/u.test(c);
35
+ const isIdentifierContinue = (c: string) => c && /\p{ID_Continue}/u.test(c);
36
+ /** https://tc39.es/ecma262/#table-controlescape-code-point-values */
37
+ export const isControlEscape = (c: CodePoint) => c >= 9 && c <= 13;
38
+ export const isAsciiLetter = (c: CodePoint) => (c >= 65 && c <= 90) || (c >= 97 && c <= 122);
39
+
40
+ enum ParserContext {
41
+ None = 0,
42
+ UnicodeMode = 1 << 0,
43
+ NamedCaptureGroups = 1 << 1,
44
+ UnicodeSetMode = 1 << 2,
45
+ }
46
+
47
+ export interface RegExpParserContext { UnicodeMode?: boolean; NamedCaptureGroups?: boolean; UnicodeSetsMode?: boolean; }
48
+
49
+ export class RegExpParser {
50
+ private source: string;
51
+
52
+ private position = 0;
53
+
54
+ get debug() {
55
+ return `${this.source.slice(0, this.position)}👀${this.source.slice(this.position)}`;
56
+ }
57
+
58
+ private capturingGroups: Mutable<ParseNode.RegExp.Pattern['capturingGroups']> = [];
59
+
60
+ private leftCapturingParenthesesBefore = 0;
61
+
62
+ private decimalEscapes: { readonly value: number, readonly position: number }[] = [];
63
+
64
+ private groupNameRefs: ParseNode.RegExp.AtomEscape_CaptureGroupName[] = [];
65
+
66
+ private groupNameThatMatches: Record<string, ParseNode.RegExp.Atom_Group[]> = Object.create(null);
67
+
68
+ private getAllGroupsWithName(name: string) {
69
+ this.groupNameThatMatches[name] ??= [];
70
+ return this.groupNameThatMatches[name];
71
+ }
72
+
73
+ private state = ParserContext.None;
74
+
75
+ constructor(source: string, private decorateError?: (error: ErrorObject, position: number) => void) {
76
+ this.source = source;
77
+ }
78
+
79
+ scope<T>(flags: RegExpParserContext, f: () => T): T {
80
+ const oldState = this.state;
81
+
82
+ if (flags.UnicodeMode === true) {
83
+ this.state |= ParserContext.UnicodeMode;
84
+ } else if (flags.UnicodeMode === false) {
85
+ this.state &= ~ParserContext.UnicodeMode;
86
+ }
87
+
88
+ if (flags.NamedCaptureGroups === true) {
89
+ this.state |= ParserContext.NamedCaptureGroups;
90
+ } else if (flags.NamedCaptureGroups === false) {
91
+ this.state &= ~ParserContext.NamedCaptureGroups;
92
+ }
93
+
94
+ if (flags.UnicodeSetsMode === true) {
95
+ this.state |= ParserContext.UnicodeSetMode;
96
+ } else if (flags.UnicodeSetsMode === false) {
97
+ this.state &= ~ParserContext.UnicodeSetMode;
98
+ }
99
+
100
+ const r = f();
101
+
102
+ this.state = oldState;
103
+
104
+ return r;
105
+ }
106
+
107
+ private get inUnicodeMode() {
108
+ return (this.state & ParserContext.UnicodeMode) === ParserContext.UnicodeMode;
109
+ }
110
+
111
+ private get inNamedCaptureGroups() {
112
+ return (this.state & ParserContext.NamedCaptureGroups) === ParserContext.NamedCaptureGroups;
113
+ }
114
+
115
+ private get inUnicodeSetMode() {
116
+ return (this.state & ParserContext.UnicodeSetMode) === ParserContext.UnicodeSetMode;
117
+ }
118
+
119
+ private raise(error: ThrowCompletion, position = this.position): never {
120
+ if (isErrorObject(error.Value)) {
121
+ this.decorateError?.(error.Value, position);
122
+ }
123
+ throw error.Value;
124
+ }
125
+
126
+ private peek(length = 1) {
127
+ return this.source.slice(this.position, this.position + length);
128
+ }
129
+
130
+ private test(c: string) {
131
+ return this.source.slice(this.position, this.position + c.length) === c;
132
+ }
133
+
134
+ private eat(c: string) {
135
+ if (this.source.slice(this.position, this.position + c.length) === c) {
136
+ this.position += c.length;
137
+ return true;
138
+ }
139
+ return false;
140
+ }
141
+
142
+ private next() {
143
+ const c = this.source[this.position];
144
+ if (!c) {
145
+ this.raise(Throw.SyntaxError('Unexpected end of input'), this.position - 1);
146
+ }
147
+ this.position += 1;
148
+ return c;
149
+ }
150
+
151
+ private expect(c: string) {
152
+ if (!this.eat(c)) {
153
+ this.raise(Throw.SyntaxError('Expected $1 but got $2', c, this.peek()));
154
+ }
155
+ }
156
+
157
+ // Pattern ::
158
+ // Disjunction
159
+ parsePattern(): ParseNode.RegExp.Pattern {
160
+ const node: ParseNode.RegExp.Pattern = {
161
+ type: 'Pattern',
162
+ capturingGroups: this.capturingGroups,
163
+ Disjunction: this.parseDisjunction(),
164
+ };
165
+ if (this.position < this.source.length) {
166
+ this.raise(Throw.SyntaxError('Unexpected token'));
167
+ }
168
+ // AtomEscape :: DecimalEscape
169
+ // EE: It is a Syntax Error if the CapturingGroupNumber of DecimalEscape is strictly greater than CountLeftCapturingParensWithin(the Pattern containing AtomEscape).
170
+ this.decimalEscapes.forEach((d) => {
171
+ if (d.value > node.capturingGroups.length) {
172
+ this.raise(Throw.SyntaxError('There is no $1 capture groups', d.value), d.position);
173
+ }
174
+ });
175
+ // AtomEscape :: k GroupName
176
+ // EE: It is a Syntax Error if GroupSpecifiersThatMatch(GroupName) is empty.
177
+ this.groupNameRefs.forEach((g) => {
178
+ if (!node.capturingGroups.find((x) => g.production === 'CaptureGroupName' && x.GroupName === g.GroupName)) {
179
+ this.raise(Throw.SyntaxError('There is no capture group called $1', JSON.stringify(g.GroupName)), g.position);
180
+ }
181
+ });
182
+ // EE: It is a Syntax Error if CountLeftCapturingParensWithin(Pattern) ≥ 2**32 - 1.
183
+ if (CountLeftCapturingParensWithin(node) >= 2 ** 32 - 1) {
184
+ this.raise(Throw.SyntaxError('Too many capturing groups'));
185
+ }
186
+ return node;
187
+ }
188
+
189
+ // in case ((?<a>x)|(?<a>y))|b, after we check the inner Disjunction, we need to mark them as safe,
190
+ // so when checking the outer Disjunction, we don't make a false positive
191
+ private disjunctionCheckedCaptureGroups = new Set<unknown>();
192
+
193
+ // Disjunction ::
194
+ // Alternative
195
+ // Alternative `|` Disjunction
196
+ private parseDisjunction(): ParseNode.RegExp.Disjunction {
197
+ const beforeCaptureGroups = this.capturingGroups.length;
198
+ const Alternative = this.parseAlternative();
199
+ const node: Mutable<ParseNode.RegExp.Disjunction> = {
200
+ type: 'Disjunction',
201
+ Alternative,
202
+ Disjunction: undefined,
203
+ };
204
+ const afterAlternativeCaptureGroups = this.capturingGroups.length;
205
+ if (this.eat('|')) {
206
+ node.Disjunction = this.parseDisjunction();
207
+ }
208
+ // EE: It is a Syntax Error if Pattern contains two distinct GroupSpecifiers x and y such that the CapturingGroupName of x is the CapturingGroupName of y and such that MightBothParticipate(x, y) is true.
209
+ const alternativeSeenNameGroups = new Set();
210
+ this.capturingGroups.slice(beforeCaptureGroups, afterAlternativeCaptureGroups).forEach((x) => {
211
+ if (this.disjunctionCheckedCaptureGroups.has(x)) {
212
+ return;
213
+ }
214
+ if (x.GroupName) {
215
+ if (alternativeSeenNameGroups.has(x.GroupName)) {
216
+ this.raise(Throw.SyntaxError('Duplicated capture group $1', JSON.stringify(x.GroupName)), x.position);
217
+ }
218
+ alternativeSeenNameGroups.add(x.GroupName);
219
+ }
220
+ this.disjunctionCheckedCaptureGroups.add(x);
221
+ });
222
+
223
+ const disjunctionSeenNameGroups = new Set();
224
+ this.capturingGroups.slice(afterAlternativeCaptureGroups).forEach((x) => {
225
+ if (this.disjunctionCheckedCaptureGroups.has(x)) {
226
+ return;
227
+ }
228
+ if (x.GroupName) {
229
+ if (disjunctionSeenNameGroups.has(x.GroupName)) {
230
+ this.raise(Throw.SyntaxError('Duplicated capture group $1', JSON.stringify(x.GroupName)), x.position);
231
+ }
232
+ disjunctionSeenNameGroups.add(x.GroupName);
233
+ }
234
+ this.disjunctionCheckedCaptureGroups.add(x);
235
+ });
236
+ return node;
237
+ }
238
+
239
+
240
+ // Alternative ::
241
+ // [empty]
242
+ // Term Alternative
243
+ private parseAlternative(): ParseNode.RegExp.Alternative {
244
+ const Term: ParseNode.RegExp.Term[] = [];
245
+ const node: Mutable<ParseNode.RegExp.Alternative> = {
246
+ type: 'Alternative',
247
+ Term,
248
+ };
249
+ while (this.position < this.source.length && !isClosingSyntaxCharacter(this.peek())) {
250
+ Term.push(this.parseTerm());
251
+ }
252
+ return node;
253
+ }
254
+
255
+ // Term ::
256
+ // Assertion
257
+ // Atom
258
+ // Atom Quantifier
259
+ private parseTerm(): ParseNode.RegExp.Term {
260
+ const assertion = this.maybeParseAssertion();
261
+ if (assertion) {
262
+ return { type: 'Term', production: 'Assertion', Assertion: assertion };
263
+ }
264
+ const capturingParenthesesBefore = this.capturingGroups.length;
265
+ return {
266
+ type: 'Term',
267
+ production: 'Atom',
268
+ leftCapturingParenthesesBefore: this.leftCapturingParenthesesBefore,
269
+ Atom: this.parseAtom(),
270
+ Quantifier: this.maybeParseQuantifier(),
271
+ capturingParenthesesWithin: this.capturingGroups.length - capturingParenthesesBefore,
272
+ };
273
+ }
274
+
275
+ // Assertion ::
276
+ // `^`
277
+ // `$`
278
+ // `\` `b`
279
+ // `\` `B`
280
+ // `(` `?` `=` Disjunction `)`
281
+ // `(` `?` `!` Disjunction `)`
282
+ // `(` `?` `<=` Disjunction `)`
283
+ // `(` `?` `<!` Disjunction `)`
284
+ private maybeParseAssertion(): ParseNode.RegExp.Assertion | undefined {
285
+ if (this.eat('^')) {
286
+ return { type: 'Assertion', production: '^' };
287
+ }
288
+ if (this.eat('$')) {
289
+ return { type: 'Assertion', production: '$' };
290
+ }
291
+
292
+ const peek2 = this.peek(2);
293
+ if (peek2 === '\\b') {
294
+ this.position += 2;
295
+ return { type: 'Assertion', production: 'b' };
296
+ }
297
+ if (peek2 === '\\B') {
298
+ this.position += 2;
299
+ return { type: 'Assertion', production: 'B' };
300
+ }
301
+ if (surroundingAgent.feature('regexp-buffer-boundaries')) {
302
+ if (this.inUnicodeMode && peek2 === '\\A') {
303
+ this.position += 2;
304
+ return { type: 'Assertion', production: 'A' };
305
+ }
306
+ if (this.inUnicodeMode && peek2 === '\\z') {
307
+ this.position += 2;
308
+ return { type: 'Assertion', production: 'z' };
309
+ }
310
+ }
311
+
312
+ const peek3 = this.peek(3);
313
+ if (peek3 === '(?=') {
314
+ this.position += 3;
315
+ const d = this.parseDisjunction();
316
+ this.expect(')');
317
+ return {
318
+ type: 'Assertion',
319
+ production: '?=',
320
+ Disjunction: d,
321
+ };
322
+ }
323
+ if (peek3 === '(?!') {
324
+ this.position += 3;
325
+ const d = this.parseDisjunction();
326
+ this.expect(')');
327
+ return {
328
+ type: 'Assertion',
329
+ production: '?!',
330
+ Disjunction: d,
331
+ };
332
+ }
333
+
334
+ const peek4 = this.peek(4);
335
+ if (peek4 === '(?<=') {
336
+ this.position += 4;
337
+ const d = this.parseDisjunction();
338
+ this.expect(')');
339
+ return {
340
+ type: 'Assertion',
341
+ production: '?<=',
342
+ Disjunction: d,
343
+ };
344
+ }
345
+ if (peek4 === '(?<!') {
346
+ this.position += 4;
347
+ const d = this.parseDisjunction();
348
+ this.expect(')');
349
+ return {
350
+ type: 'Assertion',
351
+ production: '?<!',
352
+ Disjunction: d,
353
+ };
354
+ }
355
+
356
+ return undefined;
357
+ }
358
+
359
+ // Quantifier ::
360
+ // QuantifierPrefix
361
+ // QuantifierPrefix `?`
362
+ // QuantifierPrefix ::
363
+ // `*`
364
+ // `+`
365
+ // `?`
366
+ // `{` DecimalDigits `}`
367
+ // `{` DecimalDigits `,` `}`
368
+ // `{` DecimalDigits `,` DecimalDigits `}`
369
+ private maybeParseQuantifier(): ParseNode.RegExp.Quantifier | undefined {
370
+ let QuantifierPrefix: ParseNode.RegExp.Quantifier['QuantifierPrefix'];
371
+
372
+ if (this.eat('*')) {
373
+ QuantifierPrefix = { type: 'QuantifierPrefix', production: '*' };
374
+ } else if (this.eat('+')) {
375
+ QuantifierPrefix = { type: 'QuantifierPrefix', production: '+' };
376
+ } else if (this.eat('?')) {
377
+ QuantifierPrefix = { type: 'QuantifierPrefix', production: '?' };
378
+ } else if (this.eat('{')) {
379
+ const quantifierPos = this.position;
380
+ const DecimalDigits_a = Number.parseInt(this.parseDecimalDigits(), 10);
381
+ let DecimalDigits_b;
382
+ if (this.eat(',')) {
383
+ if (this.test('}')) {
384
+ DecimalDigits_b = Infinity;
385
+ } else {
386
+ DecimalDigits_b = Number.parseInt(this.parseDecimalDigits(), 10);
387
+ }
388
+ // EE: It is a Syntax Error if the MV of the first DecimalDigits is strictly greater than the MV of the second DecimalDigits.
389
+ if (DecimalDigits_a > DecimalDigits_b) {
390
+ this.raise(Throw.SyntaxError('Numbers out of order in quantifier'), quantifierPos);
391
+ }
392
+ }
393
+ QuantifierPrefix = {
394
+ type: 'QuantifierPrefix',
395
+ production: '{}',
396
+ DecimalDigits_a,
397
+ DecimalDigits_b,
398
+ };
399
+ this.expect('}');
400
+ }
401
+
402
+ if (QuantifierPrefix!) {
403
+ return {
404
+ type: 'Quantifier',
405
+ QuantifierPrefix,
406
+ QuestionMark: this.eat('?'),
407
+ };
408
+ }
409
+
410
+ return undefined;
411
+ }
412
+
413
+ // Atom ::
414
+ // PatternCharacter
415
+ // `.`
416
+ // `\` AtomEscape
417
+ // CharacterClass
418
+ // `(` GroupSpecifier Disjunction `)`
419
+ // (? RegularExpressionModifiers : Disjunction )
420
+ // (? RegularExpressionModifiers - RegularExpressionModifiers : Disjunction )
421
+ private parseAtom(): ParseNode.RegExp.Atom {
422
+ if (this.eat('.')) {
423
+ return { type: 'Atom', production: '.' };
424
+ }
425
+ if (this.eat('\\')) {
426
+ return { type: 'Atom', production: 'AtomEscape', AtomEscape: this.parseAtomEscape() };
427
+ }
428
+ if (this.eat('(')) {
429
+ let node: Mutable<ParseNode.RegExp.Atom_Group | ParseNode.RegExp.Atom_Modifier>;
430
+ if (this.eat('?')) {
431
+ if (this.peek() === '<') {
432
+ this.leftCapturingParenthesesBefore += 1;
433
+ const groupNamePos = this.position + 1;
434
+ const name = this.parseGroupName();
435
+ node = {
436
+ type: 'Atom',
437
+ production: 'Group',
438
+ leftCapturingParenthesesBefore: this.leftCapturingParenthesesBefore - 1,
439
+ GroupSpecifier: name,
440
+ Disjunction: this.parseDisjunction(),
441
+ };
442
+ this.getAllGroupsWithName(name).push(node);
443
+ this.capturingGroups.push({ GroupName: name, position: groupNamePos });
444
+ } else {
445
+ const { PlusModifiers, MinusModifiers } = this.parseAtomModifiers();
446
+ node = {
447
+ type: 'Atom',
448
+ production: 'Modifier',
449
+ leftCapturingParenthesesBefore: this.leftCapturingParenthesesBefore,
450
+ AddModifiers: PlusModifiers,
451
+ RemoveModifiers: MinusModifiers,
452
+ Disjunction: this.parseDisjunction(),
453
+ };
454
+ }
455
+ } else {
456
+ this.leftCapturingParenthesesBefore += 1;
457
+ node = {
458
+ type: 'Atom',
459
+ production: 'Group',
460
+ leftCapturingParenthesesBefore: this.leftCapturingParenthesesBefore - 1,
461
+ GroupSpecifier: undefined,
462
+ Disjunction: this.parseDisjunction(),
463
+ };
464
+ this.capturingGroups.push({ GroupName: undefined, position: this.position });
465
+ }
466
+ this.expect(')');
467
+ return node;
468
+ }
469
+ if (this.test('[')) {
470
+ return {
471
+ type: 'Atom',
472
+ production: 'CharacterClass',
473
+ CharacterClass: this.parseCharacterClass(),
474
+ };
475
+ }
476
+ if (isSyntaxCharacter(this.peek())) {
477
+ this.raise(Throw.SyntaxError('Expected a character but got $1', this.peek()));
478
+ }
479
+ return {
480
+ type: 'Atom',
481
+ production: 'PatternCharacter',
482
+ PatternCharacter: this.parseSourceCharacter(),
483
+ };
484
+ }
485
+
486
+ // WhatWeAreParsingHere :: (used in Atom, `<` is for named capture groups)
487
+ // [empty] [lookahead = `:` or `<`]
488
+ // RegularExpressionModifiers [lookahead = `:` or `<`]
489
+ // RegularExpressionModifiers `-` RegularExpressionModifiers [lookahead = `:` or `<`]
490
+ //
491
+ // RegularExpressionModifiers ::
492
+ // [empty]
493
+ // RegularExpressionModifiers RegularExpressionModifier
494
+ //
495
+ // RegularExpressionModifier :: one of `i` `m` `s`
496
+ private parseAtomModifiers(): Record<'PlusModifiers' | 'MinusModifiers', ParseNode.RegExp.RegularExpressionModifier[] | undefined> {
497
+ const modifierPos = this.position;
498
+ let modifiers: ParseNode.RegExp.RegularExpressionModifier[] | undefined;
499
+ const result = { PlusModifiers: modifiers, MinusModifiers: modifiers };
500
+
501
+ let seenMinus = false;
502
+ while (this.position < this.source.length) {
503
+ if (this.eat(':')) {
504
+ break;
505
+ } else if (this.test('<')) {
506
+ break;
507
+ } else if (this.eat('i')) {
508
+ modifiers ??= [];
509
+ modifiers.push('i');
510
+ } else if (this.eat('m')) {
511
+ modifiers ??= [];
512
+ modifiers.push('m');
513
+ } else if (this.eat('s')) {
514
+ modifiers ??= [];
515
+ modifiers.push('s');
516
+ } else if (this.eat('-')) {
517
+ modifiers ??= [];
518
+ if (seenMinus) {
519
+ this.raise(Throw.SyntaxError('Unexpected - in modifiers'), this.position - 1);
520
+ }
521
+ seenMinus = true;
522
+ result.PlusModifiers = modifiers;
523
+ modifiers = [];
524
+ result.MinusModifiers = modifiers;
525
+ } else {
526
+ this.raise(Throw.SyntaxError('$1 is not a valid modifier', JSON.stringify(this.peek())));
527
+ }
528
+ }
529
+ if (!seenMinus) {
530
+ result.PlusModifiers = modifiers;
531
+ }
532
+ const allModifiers = result.PlusModifiers?.concat(result.MinusModifiers || []);
533
+ // EE: It is a Syntax Error if the source text matched by the first RegularExpressionModifiers and the source text matched by the second RegularExpressionModifiers are both empty.
534
+ if (result.PlusModifiers && result.MinusModifiers && result.PlusModifiers.length + result.MinusModifiers.length === 0) {
535
+ this.raise(Throw.SyntaxError('PlusModifiers and MinusModifiers cannot be both empty.'), this.position - 2);
536
+ }
537
+ // EE: It is a Syntax Error if the source text matched by RegularExpressionModifiers contains the same code point more than once.
538
+ // EE: It is a Syntax Error if the source text matched by the first RegularExpressionModifiers contains the same code point more than once.
539
+ // EE: It is a Syntax Error if the source text matched by the second RegularExpressionModifiers contains the same code point more than once.
540
+ // EE: It is a Syntax Error if any code point in the source text matched by the first RegularExpressionModifiers is also contained in the source text matched by the second RegularExpressionModifiers.
541
+ if (allModifiers?.length && allModifiers.length !== new Set(allModifiers).size) {
542
+ this.raise(Throw.SyntaxError('Repeated modifiers in modifier group'), modifierPos);
543
+ }
544
+ return result;
545
+ }
546
+
547
+ // AtomEscape ::
548
+ // DecimalEscape
549
+ // CharacterClassEscape
550
+ // CharacterEscape
551
+ // [+N] `k` GroupName
552
+ private parseAtomEscape(): ParseNode.RegExp.AtomEscape {
553
+ if (this.inNamedCaptureGroups && this.eat('k')) {
554
+ const groupNamePos = this.position + 1;
555
+ const GroupName = this.parseGroupName();
556
+ const node: ParseNode.RegExp.AtomEscape = {
557
+ type: 'AtomEscape',
558
+ position: groupNamePos,
559
+ production: 'CaptureGroupName',
560
+ GroupName,
561
+ groupSpecifiersThatMatchSelf: this.getAllGroupsWithName(GroupName),
562
+ };
563
+ this.groupNameRefs.push(node);
564
+ return node;
565
+ }
566
+ const CharacterClassEscape = this.maybeParseCharacterClassEscape();
567
+ if (CharacterClassEscape) {
568
+ return {
569
+ type: 'AtomEscape',
570
+ production: 'CharacterClassEscape',
571
+ CharacterClassEscape,
572
+ };
573
+ }
574
+ const DecimalEscape = this.maybeParseDecimalEscape();
575
+ if (DecimalEscape) {
576
+ return {
577
+ type: 'AtomEscape',
578
+ production: 'DecimalEscape',
579
+ DecimalEscape,
580
+ };
581
+ }
582
+ return {
583
+ type: 'AtomEscape',
584
+ production: 'CharacterEscape',
585
+ CharacterEscape: this.parseCharacterEscape(),
586
+ };
587
+ }
588
+
589
+ // CharacterEscape ::
590
+ // ControlEscape
591
+ // `c` AsciiLetter
592
+ // `0` [lookahead ∉ DecimalDigit]
593
+ // HexEscapeSequence
594
+ // RegExpUnicodeEscapeSequence
595
+ // IdentityEscape
596
+ //
597
+ // IdentityEscape ::
598
+ // [+U] SyntaxCharacter
599
+ // [+U] `/`
600
+ // [~U] SourceCharacter but not UnicodeIDContinue
601
+ private parseCharacterEscape(): ParseNode.RegExp.CharacterEscape {
602
+ switch (this.peek()) {
603
+ case 'f':
604
+ case 'n':
605
+ case 'r':
606
+ case 't':
607
+ case 'v':
608
+ return {
609
+ type: 'CharacterEscape',
610
+ production: 'ControlEscape',
611
+ ControlEscape: this.next() as 'f' | 'n' | 'r' | 't' | 'v',
612
+ };
613
+ case 'c': {
614
+ this.next();
615
+ const c = this.next();
616
+ if (c === undefined) {
617
+ if (this.inUnicodeMode) {
618
+ this.raise(Throw.SyntaxError('Invalid identity escape'));
619
+ }
620
+ return {
621
+ type: 'CharacterEscape',
622
+ production: 'IdentityEscape',
623
+ IdentityEscape: 'c' as Character,
624
+ };
625
+ }
626
+ const p = c.codePointAt(0)!;
627
+ if ((p >= 65 && p <= 90) || (p >= 97 && p <= 122)) {
628
+ return {
629
+ type: 'CharacterEscape',
630
+ production: 'AsciiLetter',
631
+ AsciiLetter: c,
632
+ };
633
+ }
634
+ if (this.inUnicodeMode) {
635
+ this.raise(Throw.SyntaxError('Invalid identity escape'), this.position - 2);
636
+ }
637
+ return {
638
+ type: 'CharacterEscape',
639
+ production: 'IdentityEscape',
640
+ IdentityEscape: c as Character,
641
+ };
642
+ }
643
+ case 'x':
644
+ if (isHexDigit(this.source[this.position + 1]) && isHexDigit(this.source[this.position + 2])) {
645
+ return {
646
+ type: 'CharacterEscape',
647
+ production: 'HexEscapeSequence',
648
+ HexEscapeSequence: this.parseHexEscapeSequence(),
649
+ };
650
+ }
651
+ if (this.inUnicodeMode) {
652
+ this.raise(Throw.SyntaxError('Invalid identity escape'));
653
+ }
654
+ this.next();
655
+ return {
656
+ type: 'CharacterEscape',
657
+ production: 'IdentityEscape',
658
+ IdentityEscape: 'x' as Character,
659
+ };
660
+ case 'u': {
661
+ const RegExpUnicodeEscapeSequence = this.maybeParseRegExpUnicodeEscapeSequence();
662
+ if (RegExpUnicodeEscapeSequence) {
663
+ return {
664
+ type: 'CharacterEscape',
665
+ production: 'RegExpUnicodeEscapeSequence',
666
+ RegExpUnicodeEscapeSequence,
667
+ };
668
+ }
669
+ if (this.inUnicodeMode) {
670
+ this.raise(Throw.SyntaxError('Invalid identity escape'));
671
+ }
672
+ this.next();
673
+ return {
674
+ type: 'CharacterEscape',
675
+ production: 'IdentityEscape',
676
+ IdentityEscape: 'u' as Character,
677
+ };
678
+ }
679
+ default: {
680
+ const c = this.peek();
681
+ if (c === '') {
682
+ this.raise(Throw.SyntaxError('Unexpected escape'));
683
+ }
684
+ if (c === '0' && !isDecimalDigit(this.source[this.position + 1])) {
685
+ this.position += 1;
686
+ return {
687
+ type: 'CharacterEscape',
688
+ production: c,
689
+ };
690
+ }
691
+ if (this.inUnicodeMode) {
692
+ if (c !== '/' && !isSyntaxCharacter(c)) {
693
+ this.raise(Throw.SyntaxError('Invalid identity escape'));
694
+ }
695
+ } else {
696
+ if (isIdentifierContinue(c)) {
697
+ this.raise(Throw.SyntaxError('Invalid identity escape'));
698
+ }
699
+ }
700
+ return {
701
+ type: 'CharacterEscape',
702
+ production: 'IdentityEscape',
703
+ IdentityEscape: this.next() as Character,
704
+ };
705
+ }
706
+ }
707
+ }
708
+
709
+ // DecimalEscape ::
710
+ // NonZeroDigit DecimalDigits? [lookahead != DecimalDigit]
711
+ private maybeParseDecimalEscape(): ParseNode.RegExp.DecimalEscape | undefined {
712
+ if (isDecimalDigit(this.source[this.position]) && this.source[this.position] !== '0') {
713
+ const start = this.position;
714
+ let buffer = this.source[this.position];
715
+ this.position += 1;
716
+ while (isDecimalDigit(this.source[this.position])) {
717
+ buffer += this.source[this.position];
718
+ this.position += 1;
719
+ }
720
+ const node: ParseNode.RegExp.DecimalEscape = {
721
+ type: 'DecimalEscape',
722
+ position: start,
723
+ value: Number.parseInt(buffer, 10),
724
+ };
725
+ this.decimalEscapes.push(node);
726
+ return node;
727
+ }
728
+ return undefined;
729
+ }
730
+
731
+ // CharacterClassEscape ::
732
+ // `d`
733
+ // `D`
734
+ // `s`
735
+ // `S`
736
+ // `w`
737
+ // `W`
738
+ // [+U] `p{` UnicodePropertyValueExpression `}`
739
+ // [+U] `P{` UnicodePropertyValueExpression `}`
740
+ private maybeParseCharacterClassEscape(): ParseNode.RegExp.CharacterClassEscape | undefined {
741
+ const peek = this.peek();
742
+ switch (peek) {
743
+ case 'd':
744
+ case 'D':
745
+ case 's':
746
+ case 'S':
747
+ case 'w':
748
+ case 'W':
749
+ this.next();
750
+ return {
751
+ type: 'CharacterClassEscape',
752
+ production: peek,
753
+ };
754
+ case 'p':
755
+ case 'P': {
756
+ if (!this.inUnicodeMode) {
757
+ return undefined;
758
+ }
759
+ this.next();
760
+ this.expect('{');
761
+ let LoneUnicodePropertyNameOrValue = '';
762
+ const namePos = this.position;
763
+ while (true) {
764
+ if (this.position >= this.source.length) {
765
+ this.raise(Throw.SyntaxError('Invalid unicode property name or value'));
766
+ }
767
+ const c = this.source[this.position];
768
+ if (c === '_' || isDecimalDigit(c)) {
769
+ this.position += 1;
770
+ LoneUnicodePropertyNameOrValue += c;
771
+ continue;
772
+ }
773
+ if (!isControlLetter(c)) {
774
+ break;
775
+ }
776
+ this.position += 1;
777
+ LoneUnicodePropertyNameOrValue += c;
778
+ }
779
+ if (LoneUnicodePropertyNameOrValue.length === 0) {
780
+ this.raise(Throw.SyntaxError('Invalid unicode property name or value'));
781
+ }
782
+ let UnicodePropertyValue;
783
+ let valuePos;
784
+ if (this.source[this.position] === '=') {
785
+ this.position += 1;
786
+ valuePos = this.position;
787
+ UnicodePropertyValue = '';
788
+ while (true) {
789
+ if (this.position >= this.source.length) {
790
+ this.raise(Throw.SyntaxError('Invalid unicode property value'), valuePos);
791
+ }
792
+ const c = this.source[this.position];
793
+ if (!isControlLetter(c) && !isDecimalDigit(c) && c !== '_') {
794
+ break;
795
+ }
796
+ this.position += 1;
797
+ UnicodePropertyValue += c;
798
+ }
799
+ if (UnicodePropertyValue.length === 0) {
800
+ this.raise(Throw.SyntaxError('Invalid unicode property value'), valuePos);
801
+ }
802
+ }
803
+ this.expect('}');
804
+ if (UnicodePropertyValue) {
805
+ const UnicodePropertyName = LoneUnicodePropertyNameOrValue;
806
+ // EE: It is a Syntax Error if the source text matched by UnicodePropertyName is not a Unicode property name or property alias listed in the “Property name and aliases” column of Table 69.
807
+ if (!(UnicodePropertyName in Table69_NonbinaryUnicodeProperties)) {
808
+ this.raise(Throw.SyntaxError('Invalid unicode property name'), namePos);
809
+ }
810
+ __ts_cast__<keyof typeof Table69_NonbinaryUnicodeProperties>(UnicodePropertyName);
811
+ if (UnicodePropertyName !== 'Script_Extensions' && UnicodePropertyName !== 'scx') {
812
+ // EE: It is a Syntax Error if the source text matched by UnicodePropertyName is neither Script_Extensions nor scx and the source text matched by UnicodePropertyValue is not a property value or property value alias for the Unicode property or property alias given by the source text matched by UnicodePropertyName listed in PropertyValueAliases.txt.
813
+ if (!((UnicodePropertyValue in PropertyValueAliases[Table69_NonbinaryUnicodeProperties[UnicodePropertyName]]))) {
814
+ this.raise(Throw.SyntaxError('Invalid unicode property value'), valuePos);
815
+ }
816
+ } else if (!(UnicodePropertyValue in PropertyValueAliases.Script)) {
817
+ // EE: It is a Syntax Error if the source text matched by UnicodePropertyName is either Script_Extensions or scx and the source text matched by UnicodePropertyValue is not a property value or property value alias for the Unicode property Script (sc) listed in PropertyValueAliases.txt.
818
+ this.raise(Throw.SyntaxError('Invalid unicode property value'), valuePos);
819
+ }
820
+ return {
821
+ type: 'CharacterClassEscape',
822
+ production: peek,
823
+ UnicodePropertyValueExpression: {
824
+ type: 'UnicodePropertyValueExpression',
825
+ production: '=',
826
+ UnicodePropertyName,
827
+ UnicodePropertyValue,
828
+ },
829
+ };
830
+ }
831
+ // UnicodePropertyValueExpression :: LoneUnicodePropertyNameOrValue
832
+ // EE: It is a Syntax Error if the source text matched by LoneUnicodePropertyNameOrValue is not a Unicode property value or property value alias for the General_Category (gc) property listed in PropertyValueAliases.txt, nor a binary property or binary property alias listed in the “Property name and aliases” column of Table 70, nor a binary property of strings listed in the “Property name” column of Table 71.
833
+ if (
834
+ !(LoneUnicodePropertyNameOrValue in PropertyValueAliases.General_Category)
835
+ && !(LoneUnicodePropertyNameOrValue in Table70_BinaryUnicodeProperties)
836
+ && !(LoneUnicodePropertyNameOrValue in Table71_BinaryPropertyOfStrings)
837
+ ) {
838
+ this.raise(Throw.SyntaxError('Invalid unicode property'), namePos);
839
+ }
840
+ // EE: It is a Syntax Error if the enclosing Pattern does not have a [UnicodeSetsMode] parameter and the source text matched by LoneUnicodePropertyNameOrValue is a binary property of strings listed in the “Property name” column of Table 71.
841
+ if (LoneUnicodePropertyNameOrValue in Table71_BinaryPropertyOfStrings && !this.inUnicodeSetMode) {
842
+ this.raise(Throw.SyntaxError('$1 can only be used with v flag', LoneUnicodePropertyNameOrValue), namePos);
843
+ }
844
+ // EE: It is a Syntax Error if MayContainStrings of the UnicodePropertyValueExpression is true.
845
+ if (peek === 'P' && LoneUnicodePropertyNameOrValue in Table71_BinaryPropertyOfStrings) {
846
+ this.raise(Throw.SyntaxError('$1 cannot be inverted', LoneUnicodePropertyNameOrValue), namePos - 2);
847
+ }
848
+ return {
849
+ type: 'CharacterClassEscape',
850
+ production: peek,
851
+ UnicodePropertyValueExpression: {
852
+ type: 'UnicodePropertyValueExpression',
853
+ production: 'Lone',
854
+ LoneUnicodePropertyNameOrValue,
855
+ },
856
+ };
857
+ }
858
+ default:
859
+ return undefined;
860
+ }
861
+ }
862
+
863
+ // CharacterClass ::
864
+ // `[` ClassContents `]`
865
+ // `[` `^` ClassContents `]`
866
+ private parseCharacterClass(): ParseNode.RegExp.CharacterClass {
867
+ this.expect('[');
868
+ const invertPos = this.position;
869
+ const invert = this.eat('^');
870
+ const node: ParseNode.RegExp.CharacterClass = {
871
+ type: 'CharacterClass',
872
+ invert,
873
+ ClassContents: this.parseClassContents(),
874
+ };
875
+ // CharacterClass :: [^ ClassContents ]
876
+ // EE: It is a Syntax Error if MayContainStrings of the ClassContents is true.
877
+ if (invert && MayContainStrings(node.ClassContents)) {
878
+ this.raise(Throw.SyntaxError('This class cannot be inverted'), invertPos);
879
+ }
880
+ this.expect(']');
881
+ return node;
882
+ }
883
+
884
+ // ClassContents
885
+ // [empty]
886
+ // [~UnicodeSetMode] NonemptyClassRanges
887
+ // [+UnicodeSetMode] ClassSetExpression
888
+ private parseClassContents(): ParseNode.RegExp.ClassContents {
889
+ // [empty]
890
+ if (this.test(']')) {
891
+ return { type: 'ClassContents', production: 'Empty' };
892
+ }
893
+ if (this.inUnicodeSetMode) {
894
+ return {
895
+ type: 'ClassContents',
896
+ production: 'ClassSetExpression',
897
+ ClassSetExpression: this.parseClassSetExpression(),
898
+ };
899
+ } else {
900
+ return {
901
+ type: 'ClassContents',
902
+ production: 'NonEmptyClassRanges',
903
+ NonemptyClassRanges: this.parseNonemptyClassRanges(),
904
+ };
905
+ }
906
+ }
907
+
908
+ // NonemptyClassRanges ::
909
+ // ClassAtom
910
+ // ClassAtom NonemptyClassRangesNoDash
911
+ // ClassAtom `-` ClassAtom [empty]
912
+ // ClassAtom `-` ClassAtom NonemptyClassRanges
913
+ private parseNonemptyClassRanges(): ParseNode.RegExp.ClassRange[] {
914
+ Assert(!this.inUnicodeSetMode);
915
+ const ranges: Mutable<ParseNode.RegExp.NonEmptyClassRanges> = [];
916
+ while (!this.test(']')) {
917
+ if (this.position >= this.source.length) {
918
+ this.raise(Throw.SyntaxError('Unexpected end of CharacterClass'));
919
+ }
920
+ const atomPos = this.position;
921
+ const atom = this.parseClassAtom();
922
+ if (this.eat('-')) {
923
+ if (this.test(']')) {
924
+ // [\w-] is valid (\w ++ "-")
925
+ ranges.push(atom);
926
+ ranges.push({ type: 'ClassAtom', production: '-' });
927
+ } else {
928
+ // EE: It is a Syntax Error if IsCharacterClass of the first ClassAtom is true or IsCharacterClass of the second ClassAtom is true.
929
+ if (atom.production === 'ClassEscape' && atom.ClassEscape.production === 'CharacterClassEscape') {
930
+ this.raise(Throw.SyntaxError('Invalid class range'), atomPos);
931
+ }
932
+ const atom2Pos = this.position;
933
+ const atom2 = this.parseClassAtom();
934
+ // EE: It is a Syntax Error if IsCharacterClass of the first ClassAtom is false, IsCharacterClass of the second ClassAtom is false, and the CharacterValue of the first ClassAtom is strictly greater than the CharacterValue of the second ClassAtom.
935
+ // EE: It is a Syntax Error if IsCharacterClass of ClassAtomNoDash is false, IsCharacterClass of ClassAtom is false, and the CharacterValue of ClassAtomNoDash is strictly greater than the CharacterValue of ClassAtom.
936
+ if (!IsCharacterClass(atom) && !IsCharacterClass(atom2) && CharacterValue(atom as CharacterValueAcceptNode) > CharacterValue(atom2 as CharacterValueAcceptNode)) {
937
+ this.raise(Throw.SyntaxError('Invalid class range'), atomPos);
938
+ }
939
+ // EE: It is a Syntax Error if IsCharacterClass of ClassAtomNoDash is true or IsCharacterClass of ClassAtom is true.
940
+ if (IsCharacterClass(atom)) {
941
+ this.raise(Throw.SyntaxError('Invalid class range'), atomPos);
942
+ }
943
+ if (IsCharacterClass(atom2)) {
944
+ this.raise(Throw.SyntaxError('Invalid class range'), atom2Pos);
945
+ }
946
+ ranges.push([atom, atom2]);
947
+ }
948
+ } else {
949
+ ranges.push(atom);
950
+ }
951
+ }
952
+ return ranges;
953
+ }
954
+
955
+ // ClassAtom ::
956
+ // `-`
957
+ // ClassAtomNoDash
958
+ // ClassAtomNoDash ::
959
+ // SourceCharacter but not one of `\` or `]` or `-`
960
+ // `\` ClassEscape
961
+ // ClassEscape :
962
+ // `b`
963
+ // [+U] `-`
964
+ // CharacterClassEscape
965
+ // CharacterEscape
966
+ private parseClassAtom(): ParseNode.RegExp.ClassAtom {
967
+ if (this.eat('\\')) {
968
+ if (this.eat('b')) {
969
+ return { type: 'ClassAtom', production: 'ClassEscape', ClassEscape: { type: 'ClassEscape', production: 'b' } };
970
+ }
971
+ if (this.inUnicodeMode && this.eat('-')) {
972
+ return { type: 'ClassAtom', production: '-' };
973
+ }
974
+ const CharacterClassEscape = this.maybeParseCharacterClassEscape();
975
+ if (CharacterClassEscape) {
976
+ return {
977
+ type: 'ClassAtom',
978
+ production: 'ClassEscape',
979
+ ClassEscape: { type: 'ClassEscape', production: 'CharacterClassEscape', CharacterClassEscape },
980
+ };
981
+ }
982
+ return {
983
+ type: 'ClassAtom',
984
+ production: 'ClassEscape',
985
+ ClassEscape: {
986
+ type: 'ClassEscape',
987
+ production: 'CharacterEscape',
988
+ CharacterEscape: this.parseCharacterEscape(),
989
+ },
990
+ };
991
+ }
992
+ return {
993
+ type: 'ClassAtom',
994
+ production: 'SourceCharacter',
995
+ SourceCharacter: this.parseSourceCharacter(),
996
+ };
997
+ }
998
+
999
+ private parseSourceCharacter(): Character {
1000
+ if (this.inUnicodeMode || this.inUnicodeSetMode) {
1001
+ const lead = this.source.charCodeAt(this.position);
1002
+ const trail = this.source.charCodeAt(this.position + 1);
1003
+ if (trail && isLeadingSurrogate(lead) && isTrailingSurrogate(trail)) {
1004
+ return (this.next() + this.next()) as UnicodeCharacter;
1005
+ }
1006
+ }
1007
+ return this.next() as Character;
1008
+ }
1009
+
1010
+ private parseGroupName(): string {
1011
+ this.expect('<');
1012
+ const RegExpIdentifierName = this.parseRegExpIdentifierName();
1013
+ this.expect('>');
1014
+ return RegExpIdentifierName;
1015
+ }
1016
+
1017
+ // RegExpIdentifierName ::
1018
+ // RegExpIdentifierStart
1019
+ // RegExpIdentifierName RegExpIdentifierPart
1020
+ private parseRegExpIdentifierName(): string {
1021
+ let buffer = '';
1022
+ let check = isIdentifierStart;
1023
+ while (this.position < this.source.length) {
1024
+ const c = this.source[this.position];
1025
+ const code = c.charCodeAt(0);
1026
+ if (c === '\\') {
1027
+ this.position += 1;
1028
+ const RegExpUnicodeEscapeSequence = this.scope({ UnicodeMode: true }, () => this.maybeParseRegExpUnicodeEscapeSequence());
1029
+ if (!RegExpUnicodeEscapeSequence) {
1030
+ this.raise(Throw.SyntaxError('Invalid unicode escape'));
1031
+ }
1032
+ const raw = String.fromCodePoint(CharacterValue(RegExpUnicodeEscapeSequence));
1033
+ // EE: It is a Syntax Error if the CharacterValue of RegExpUnicodeEscapeSequence is not the numeric value of some code point matched by the IdentifierStartChar lexical grammar production.
1034
+ // EE: It is a Syntax Error if the CharacterValue of RegExpUnicodeEscapeSequence is not the numeric value of some code point matched by the IdentifierPartChar lexical grammar production.
1035
+ // EE: It is a Syntax Error if the RegExpIdentifierCodePoint of RegExpIdentifierPart is not matched by the UnicodeIDContinue lexical grammar production.
1036
+ if (!check(raw)) {
1037
+ this.raise(Throw.SyntaxError('Invalid identifier escape'));
1038
+ }
1039
+ buffer += raw;
1040
+ } else if (isLeadingSurrogate(code)) {
1041
+ // EE: It is a Syntax Error if the RegExpIdentifierCodePoint of RegExpIdentifierStart is not matched by the UnicodeIDStart lexical grammar production.
1042
+ const lowSurrogate = this.source.charCodeAt(this.position + 1);
1043
+ if (!isTrailingSurrogate(lowSurrogate)) {
1044
+ this.raise(Throw.SyntaxError('Invalid trailing surrogate'));
1045
+ }
1046
+ const codePoint = UTF16SurrogatePairToCodePoint(code, lowSurrogate);
1047
+ const raw = String.fromCodePoint(codePoint);
1048
+ if (!check(raw)) {
1049
+ this.raise(Throw.SyntaxError('Invalid surrogate pair'));
1050
+ }
1051
+ this.position += 2;
1052
+ buffer += raw;
1053
+ } else if (check(c)) {
1054
+ buffer += c;
1055
+ this.position += 1;
1056
+ } else {
1057
+ break;
1058
+ }
1059
+ check = isIdentifierPart;
1060
+ }
1061
+ if (buffer.length === 0) {
1062
+ this.raise(Throw.SyntaxError('Invalid empty identifier'));
1063
+ }
1064
+ return buffer;
1065
+ }
1066
+
1067
+ // DecimalDigits ::
1068
+ // DecimalDigit
1069
+ // DecimalDigits DecimalDigit
1070
+ private parseDecimalDigits(): string {
1071
+ let n = '';
1072
+ if (!isDecimalDigit(this.peek())) {
1073
+ this.raise(Throw.SyntaxError('Invalid decimal digits'));
1074
+ }
1075
+ while (isDecimalDigit(this.peek())) {
1076
+ n += this.next();
1077
+ }
1078
+ return n;
1079
+ }
1080
+
1081
+ // HexEscapeSequence ::
1082
+ // `x` HexDigit HexDigit
1083
+ private parseHexEscapeSequence(): ParseNode.RegExp.HexEscapeSequence {
1084
+ this.expect('x');
1085
+ const HexDigit_a = this.next();
1086
+ if (!isHexDigit(HexDigit_a)) {
1087
+ this.raise(Throw.SyntaxError('Not a hex digit'));
1088
+ }
1089
+ const HexDigit_b = this.next();
1090
+ if (!isHexDigit(HexDigit_b)) {
1091
+ this.raise(Throw.SyntaxError('Not a hex digit'));
1092
+ }
1093
+ return {
1094
+ type: 'HexEscapeSequence',
1095
+ HexDigit_a,
1096
+ HexDigit_b,
1097
+ };
1098
+ }
1099
+
1100
+ private scanHex(length: number) {
1101
+ if (length === 0) {
1102
+ this.raise(Throw.SyntaxError('Invalid code point'));
1103
+ }
1104
+ let n = 0;
1105
+ let oldN = 0;
1106
+ for (let i = 0; i < length; i += 1) {
1107
+ const c = this.source[this.position];
1108
+ if (isHexDigit(c)) {
1109
+ this.position += 1;
1110
+ oldN = n;
1111
+ n = (n << 4) | Number.parseInt(c, 16);
1112
+ if (oldN > n) {
1113
+ // overflow
1114
+ this.raise(Throw.SyntaxError('Invalid hex digit'));
1115
+ }
1116
+ } else {
1117
+ this.raise(Throw.SyntaxError('Invalid hex digit'));
1118
+ }
1119
+ }
1120
+ return n;
1121
+ }
1122
+
1123
+ // RegExpUnicodeEscapeSequence ::
1124
+ // [+U] `u` HexLeadSurrogate `\u` HexTrailSurrogate
1125
+ // [+U] `u` HexLeadSurrogate
1126
+ // [+U] `u` HexTrailSurrogate
1127
+ // [+U] `u` HexNonSurrogate
1128
+ // [~U] `u` Hex4Digits
1129
+ // [+U] `u{` CodePoint `}`
1130
+ private maybeParseRegExpUnicodeEscapeSequence(): ParseNode.RegExp.RegExpUnicodeEscapeSequence | undefined {
1131
+ const start = this.position;
1132
+ if (!this.eat('u')) {
1133
+ this.position = start;
1134
+ return undefined;
1135
+ }
1136
+ if (this.inUnicodeMode && this.eat('{')) {
1137
+ const end = this.source.indexOf('}' as Character, this.position);
1138
+ if (end === -1) {
1139
+ this.raise(Throw.SyntaxError('Invalid code point'));
1140
+ }
1141
+ const code = this.scanHex(end - this.position);
1142
+ if (code > 0x10FFFF) {
1143
+ this.raise(Throw.SyntaxError('Invalid code point'));
1144
+ }
1145
+ this.position += 1;
1146
+ return {
1147
+ type: 'RegExpUnicodeEscapeSequence',
1148
+ CodePoint: code,
1149
+ };
1150
+ }
1151
+ let lead;
1152
+ try {
1153
+ lead = this.scanHex(4);
1154
+ } catch {
1155
+ this.position = start;
1156
+ return undefined;
1157
+ }
1158
+ if (this.inUnicodeMode && isLeadingSurrogate(lead)) {
1159
+ const back = this.position;
1160
+ if (this.eat('\\u')) {
1161
+ let trail;
1162
+ try {
1163
+ trail = this.scanHex(4);
1164
+ if (isTrailingSurrogate(trail)) {
1165
+ return {
1166
+ type: 'RegExpUnicodeEscapeSequence',
1167
+ HexLeadSurrogate: lead,
1168
+ HexTrailSurrogate: trail,
1169
+ };
1170
+ }
1171
+ } catch {
1172
+ }
1173
+ this.position = back;
1174
+ }
1175
+ return {
1176
+ type: 'RegExpUnicodeEscapeSequence',
1177
+ HexLeadSurrogate: lead,
1178
+ };
1179
+ }
1180
+ return {
1181
+ type: 'RegExpUnicodeEscapeSequence',
1182
+ Hex4Digits: lead,
1183
+ };
1184
+ }
1185
+
1186
+ // ClassSetExpression ::
1187
+ // ClassUnion
1188
+ // ClassIntersection
1189
+ // ClassSubtraction
1190
+ private parseClassSetExpression(): ParseNode.RegExp.ClassSetExpression {
1191
+ Assert(this.inUnicodeSetMode);
1192
+
1193
+ const oldPos = this.position;
1194
+ const left = this.maybeParseClassSetCharacter();
1195
+ const peek2 = this.peek(2);
1196
+ // ClassUnion :: ClassSetRange
1197
+ if (left !== undefined && peek2 !== '--' && peek2[0] === '-') {
1198
+ this.position = oldPos;
1199
+ return this.parseClassUnion();
1200
+ }
1201
+ // ClassUnion :: ClassSetOperand ...
1202
+ // ClassIntersection :: ClassSetOperand ...
1203
+ // ClassSubtraction :: ClassSetOperand ...
1204
+ const leftReparsed = this.parseClassSetOperand(left);
1205
+ if (this.eat('&&')) {
1206
+ return this.parseClassIntersectionOrSubtraction('&&', leftReparsed);
1207
+ }
1208
+ if (this.eat('--')) {
1209
+ return this.parseClassIntersectionOrSubtraction('--', leftReparsed);
1210
+ }
1211
+ return this.parseClassUnion(leftReparsed);
1212
+ }
1213
+
1214
+ private parseClassUnion(operand?: ParseNode.RegExp.ClassSetOperand): ParseNode.RegExp.ClassUnion {
1215
+ const union: Array<ParseNode.RegExp.ClassSetOperand | ParseNode.RegExp.ClassSetRange> = operand ? [operand] : [];
1216
+ while (true) {
1217
+ const charPos = this.position;
1218
+ const char = this.maybeParseClassSetCharacter();
1219
+ if (char !== undefined) {
1220
+ // ClassSetRange
1221
+ if (this.eat('-')) {
1222
+ const char2 = this.maybeParseClassSetCharacter();
1223
+ if (char2 === undefined) {
1224
+ this.raise(Throw.SyntaxError('Unterminated range'));
1225
+ }
1226
+ // EE: It is a Syntax Error if the CharacterValue of the first ClassSetCharacter is strictly greater than the CharacterValue of the second ClassSetCharacter.
1227
+ if (CharacterValue(char) > CharacterValue(char2)) {
1228
+ this.raise(Throw.SyntaxError('Invalid range: $1 is bigger than $2', String.fromCodePoint(CharacterValue(char)), String.fromCodePoint(CharacterValue(char2))), charPos);
1229
+ }
1230
+ union.push({ type: 'ClassSetRange', left: char, right: char2 });
1231
+ continue;
1232
+ }
1233
+ // ClassSetCharacter
1234
+ union.push({ type: 'ClassSetOperand', production: 'ClassSetCharacter', ClassSetCharacter: char });
1235
+ } else if (this.peek() === '\\' || this.peek() === '[') {
1236
+ // NestedClass or ClassStringDisjunction
1237
+ union.push(this.parseClassSetOperand());
1238
+ } else {
1239
+ break;
1240
+ }
1241
+ }
1242
+ return { type: 'ClassUnion', union };
1243
+ }
1244
+
1245
+ private parseClassIntersectionOrSubtraction(type: '&&' | '--', operand?: ParseNode.RegExp.ClassSetOperand): ParseNode.RegExp.ClassIntersection | ParseNode.RegExp.ClassSubtraction {
1246
+ const tokens = operand ? [operand] : [];
1247
+ while (true) {
1248
+ tokens.push(this.parseClassSetOperand());
1249
+ if (this.eat(type)) {
1250
+ continue;
1251
+ }
1252
+ break;
1253
+ }
1254
+ Assert(tokens.length >= 2);
1255
+ return { type: type === '&&' ? 'ClassIntersection' : 'ClassSubtraction', operands: tokens };
1256
+ }
1257
+
1258
+ private parseClassSetOperand(left?: ParseNode.RegExp.ClassSetCharacter): ParseNode.RegExp.ClassSetOperand {
1259
+ Assert(this.inUnicodeSetMode);
1260
+ if (left !== undefined) {
1261
+ return { type: 'ClassSetOperand', production: 'ClassSetCharacter', ClassSetCharacter: left };
1262
+ }
1263
+ // ClassSetOperand :: NestedClass :: [ [lookahead ≠ ^] ClassContents[+UnicodeMode, +UnicodeSetsMode] ]
1264
+ // ClassSetOperand :: NestedClass :: [^ ClassContents[+UnicodeMode, +UnicodeSetsMode] ]
1265
+ if (this.eat('[')) {
1266
+ const invertPos = this.position;
1267
+ const invert = this.eat('^');
1268
+ const ClassContents = this.scope(
1269
+ { UnicodeMode: true, UnicodeSetsMode: true },
1270
+ () => this.parseClassContents(),
1271
+ );
1272
+ // NestedClass :: [^ ClassContents ]
1273
+ // EE: It is a Syntax Error if MayContainStrings of the ClassContents is true.
1274
+ if (invert && MayContainStrings(ClassContents)) {
1275
+ this.raise(Throw.SyntaxError('This class cannot be inverted'), invertPos);
1276
+ }
1277
+ this.expect(']');
1278
+ return {
1279
+ type: 'ClassSetOperand',
1280
+ production: 'NestedClass',
1281
+ NestedClass: {
1282
+ type: 'NestedClass', production: 'ClassContents', invert, ClassContents,
1283
+ },
1284
+ };
1285
+ }
1286
+ if (this.eat('\\')) {
1287
+ // ClassSetOperand :: ClassStringDisjunction :: \q{ ClassStringDisjunctionContents }
1288
+ if (this.eat('q')) {
1289
+ this.expect('{');
1290
+ const ClassStringDisjunction = this.parseClassStringDisjunctionContents();
1291
+ this.expect('}');
1292
+ return {
1293
+ type: 'ClassSetOperand',
1294
+ production: 'ClassStringDisjunction',
1295
+ ClassStringDisjunction,
1296
+ };
1297
+ }
1298
+ // ClassSetOperand :: NestedClass :: \ CharacterClassEscape[+UnicodeMode]
1299
+ const escape = this.scope(
1300
+ { UnicodeMode: true },
1301
+ () => this.maybeParseCharacterClassEscape(),
1302
+ );
1303
+ if (!escape) {
1304
+ this.raise(Throw.SyntaxError('Expect a CharacterClassEscape but $1 found', this.peek()));
1305
+ }
1306
+ return {
1307
+ type: 'ClassSetOperand',
1308
+ production: 'NestedClass',
1309
+ NestedClass: { type: 'NestedClass', production: 'CharacterClassEscape', CharacterClassEscape: escape },
1310
+ };
1311
+ }
1312
+ const ClassSetCharacter = this.maybeParseClassSetCharacter();
1313
+ if (!ClassSetCharacter) {
1314
+ this.raise(Throw.SyntaxError('Unexpected $1', this.peek()));
1315
+ }
1316
+ return { type: 'ClassSetOperand', production: 'ClassSetCharacter', ClassSetCharacter };
1317
+ }
1318
+
1319
+ // ClassSetCharacter ::
1320
+ // [lookahead ∉ ClassSetReservedDoublePunctuator] SourceCharacter but not ClassSetSyntaxCharacter
1321
+ // \ CharacterEscape[+UnicodeMode]
1322
+ // \ ClassSetReservedPunctuator
1323
+ // \b
1324
+ private maybeParseClassSetCharacter(): ParseNode.RegExp.ClassSetCharacter | undefined {
1325
+ Assert(this.inUnicodeSetMode);
1326
+ const nextTwo = this.peek(2);
1327
+ // ClassSetCharacter :: \b
1328
+ if (nextTwo === '\\b') {
1329
+ this.position += 2;
1330
+ return { type: 'ClassSetCharacter', production: 'UnicodeCharacter', UnicodeCharacter: '\\b' as UnicodeCharacter };
1331
+ }
1332
+
1333
+ // ClassSetCharacter :: [lookahead ∉ ClassSetReservedDoublePunctuator] SourceCharacter but not ClassSetSyntaxCharacter
1334
+ if (
1335
+ // [lookahead ∉ ClassSetReservedDoublePunctuator]
1336
+ !'&& !! ## $$ %% ** ++ ,, .. :: ;; << == >> ?? @@ ^^ `` ~~'.split(' ').includes(nextTwo)
1337
+ // and not ClassSetSyntaxCharacter
1338
+ && !'( ) [ ] { } / - \\ |'.split(' ').includes(nextTwo[0])
1339
+ ) {
1340
+ // parse SourceCharacter
1341
+ return { type: 'ClassSetCharacter', production: 'UnicodeCharacter', UnicodeCharacter: this.parseSourceCharacter() as UnicodeCharacter };
1342
+ }
1343
+
1344
+ // all production left requires a \ at the beginning
1345
+ if (nextTwo[0] !== '\\') {
1346
+ return undefined;
1347
+ }
1348
+
1349
+ // \ ClassSetReservedPunctuator
1350
+ if ('& - ! # % , : ; < = > @ ` ~'.split(' ').includes(nextTwo[1])) {
1351
+ this.position += 2;
1352
+ return { type: 'ClassSetCharacter', production: 'UnicodeCharacter', UnicodeCharacter: nextTwo[1] as UnicodeCharacter };
1353
+ }
1354
+
1355
+ // anything that can start a Character Escape
1356
+ if ('fnrtvc0xu/^$\\.*+?()[]{}|'.includes(nextTwo[1])) {
1357
+ this.position += 1;
1358
+ return { type: 'ClassSetCharacter', production: 'CharacterEscape', CharacterEscape: this.scope({ UnicodeMode: true }, () => this.parseCharacterEscape()) };
1359
+ }
1360
+ return undefined;
1361
+ }
1362
+
1363
+ // ClassStringDisjunctionContents is a list of ClassString that separated by |.
1364
+ private parseClassStringDisjunctionContents(): ParseNode.RegExp.ClassStringDisjunction {
1365
+ const parsed: ParseNode.RegExp.ClassSetCharacter[][] = [];
1366
+ let current: ParseNode.RegExp.ClassSetCharacter[] = [];
1367
+ while (true) {
1368
+ const parse = this.maybeParseClassSetCharacter();
1369
+ if (parse) {
1370
+ current.push(parse);
1371
+ } else if (this.eat('|')) {
1372
+ parsed.push(current);
1373
+ current = [];
1374
+ } else {
1375
+ parsed.push(current);
1376
+ break;
1377
+ }
1378
+ }
1379
+ return { type: 'ClassStringDisjunction', ClassString: parsed };
1380
+ }
1381
+ }
1382
+
1383
+ /** https://tc39.es/ecma262/#sec-static-semantics-maycontainstrings */
1384
+ function MayContainStrings(node: ParseNode.RegExp.UnicodePropertyValueExpression | ParseNode.RegExp.ClassContents | ParseNode.RegExp.ClassSetExpression | ParseNode.RegExp.ClassSetOperand | ParseNode.RegExp.ClassSetRange | ParseNode.RegExp.NestedClass): boolean {
1385
+ switch (node.type) {
1386
+ case 'ClassContents':
1387
+ if (node.production === 'ClassSetExpression') {
1388
+ return MayContainStrings(node.ClassSetExpression);
1389
+ }
1390
+ return false;
1391
+ case 'UnicodePropertyValueExpression':
1392
+ if (node.production === 'Lone') {
1393
+ if (node.LoneUnicodePropertyNameOrValue in Table71_BinaryPropertyOfStrings) {
1394
+ return true;
1395
+ }
1396
+ }
1397
+ return false;
1398
+ case 'ClassUnion':
1399
+ return node.union.some(MayContainStrings);
1400
+ case 'ClassIntersection':
1401
+ return node.operands.some(MayContainStrings);
1402
+ case 'ClassSubtraction':
1403
+ return node.operands.some(MayContainStrings);
1404
+ case 'ClassSetRange':
1405
+ return false;
1406
+ case 'ClassSetOperand':
1407
+ if (node.production === 'ClassSetCharacter') {
1408
+ return false;
1409
+ } else if (node.production === 'NestedClass') {
1410
+ return MayContainStrings(node.NestedClass);
1411
+ } else if (node.production === 'ClassStringDisjunction') {
1412
+ return node.ClassStringDisjunction.ClassString.some((x) => x.length !== 1);
1413
+ }
1414
+ throw OutOfRange.exhaustive(node);
1415
+ case 'NestedClass':
1416
+ if (node.production === 'CharacterClassEscape') {
1417
+ if (node.CharacterClassEscape.production !== 'p') {
1418
+ return false;
1419
+ }
1420
+ return MayContainStrings(node.CharacterClassEscape.UnicodePropertyValueExpression);
1421
+ } else if (node.production === 'ClassContents') {
1422
+ return MayContainStrings(node.ClassContents);
1423
+ }
1424
+ throw OutOfRange.exhaustive(node);
1425
+ default:
1426
+ throw OutOfRange.exhaustive(node);
1427
+ }
1428
+ }