@engine262/engine262 0.0.1-07c72085c73f960bcf0aa06db807321f3b446518

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 (941) hide show
  1. package/LICENSE +19 -0
  2. package/README.md +179 -0
  3. package/bin/engine262.js +6 -0
  4. package/declaration/abstract-ops/all.d.mts +35 -0
  5. package/declaration/abstract-ops/all.d.mts.map +1 -0
  6. package/declaration/abstract-ops/arguments-operations.d.mts +17 -0
  7. package/declaration/abstract-ops/arguments-operations.d.mts.map +1 -0
  8. package/declaration/abstract-ops/array-objects.d.mts +23 -0
  9. package/declaration/abstract-ops/array-objects.d.mts.map +1 -0
  10. package/declaration/abstract-ops/arraybuffer-objects.d.mts +44 -0
  11. package/declaration/abstract-ops/arraybuffer-objects.d.mts.map +1 -0
  12. package/declaration/abstract-ops/async-function-operations.d.mts +9 -0
  13. package/declaration/abstract-ops/async-function-operations.d.mts.map +1 -0
  14. package/declaration/abstract-ops/async-generator-objects.d.mts +42 -0
  15. package/declaration/abstract-ops/async-generator-objects.d.mts.map +1 -0
  16. package/declaration/abstract-ops/data-types-and-values.d.mts +6 -0
  17. package/declaration/abstract-ops/data-types-and-values.d.mts.map +1 -0
  18. package/declaration/abstract-ops/dataview-objects.d.mts +32 -0
  19. package/declaration/abstract-ops/dataview-objects.d.mts.map +1 -0
  20. package/declaration/abstract-ops/date-objects.d.mts +46 -0
  21. package/declaration/abstract-ops/date-objects.d.mts.map +1 -0
  22. package/declaration/abstract-ops/error-objects.d.mts +5 -0
  23. package/declaration/abstract-ops/error-objects.d.mts.map +1 -0
  24. package/declaration/abstract-ops/execution-contexts.d.mts +22 -0
  25. package/declaration/abstract-ops/execution-contexts.d.mts.map +1 -0
  26. package/declaration/abstract-ops/function-operations.d.mts +85 -0
  27. package/declaration/abstract-ops/function-operations.d.mts.map +1 -0
  28. package/declaration/abstract-ops/generator-operations.d.mts +37 -0
  29. package/declaration/abstract-ops/generator-operations.d.mts.map +1 -0
  30. package/declaration/abstract-ops/global-object.d.mts +7 -0
  31. package/declaration/abstract-ops/global-object.d.mts.map +1 -0
  32. package/declaration/abstract-ops/immutable-prototype-objects.d.mts +7 -0
  33. package/declaration/abstract-ops/immutable-prototype-objects.d.mts.map +1 -0
  34. package/declaration/abstract-ops/import-calls.d.mts +5 -0
  35. package/declaration/abstract-ops/import-calls.d.mts.map +1 -0
  36. package/declaration/abstract-ops/iterator-operations.d.mts +56 -0
  37. package/declaration/abstract-ops/iterator-operations.d.mts.map +1 -0
  38. package/declaration/abstract-ops/module-namespace-exotic-objects.d.mts +13 -0
  39. package/declaration/abstract-ops/module-namespace-exotic-objects.d.mts.map +1 -0
  40. package/declaration/abstract-ops/module-records.d.mts +34 -0
  41. package/declaration/abstract-ops/module-records.d.mts.map +1 -0
  42. package/declaration/abstract-ops/notational-conventions.d.mts +8 -0
  43. package/declaration/abstract-ops/notational-conventions.d.mts.map +1 -0
  44. package/declaration/abstract-ops/object-operations.d.mts +96 -0
  45. package/declaration/abstract-ops/object-operations.d.mts.map +1 -0
  46. package/declaration/abstract-ops/objects.d.mts +31 -0
  47. package/declaration/abstract-ops/objects.d.mts.map +1 -0
  48. package/declaration/abstract-ops/private-names.d.mts +36 -0
  49. package/declaration/abstract-ops/private-names.d.mts.map +1 -0
  50. package/declaration/abstract-ops/promise-operations.d.mts +62 -0
  51. package/declaration/abstract-ops/promise-operations.d.mts.map +1 -0
  52. package/declaration/abstract-ops/proxy-objects.d.mts +7 -0
  53. package/declaration/abstract-ops/proxy-objects.d.mts.map +1 -0
  54. package/declaration/abstract-ops/realms.d.mts +174 -0
  55. package/declaration/abstract-ops/realms.d.mts.map +1 -0
  56. package/declaration/abstract-ops/reference-operations.d.mts +27 -0
  57. package/declaration/abstract-ops/reference-operations.d.mts.map +1 -0
  58. package/declaration/abstract-ops/regexp-objects.d.mts +40 -0
  59. package/declaration/abstract-ops/regexp-objects.d.mts.map +1 -0
  60. package/declaration/abstract-ops/spec-types.d.mts +39 -0
  61. package/declaration/abstract-ops/spec-types.d.mts.map +1 -0
  62. package/declaration/abstract-ops/string-objects.d.mts +8 -0
  63. package/declaration/abstract-ops/string-objects.d.mts.map +1 -0
  64. package/declaration/abstract-ops/symbol-objects.d.mts +6 -0
  65. package/declaration/abstract-ops/symbol-objects.d.mts.map +1 -0
  66. package/declaration/abstract-ops/testing-comparison.d.mts +46 -0
  67. package/declaration/abstract-ops/testing-comparison.d.mts.map +1 -0
  68. package/declaration/abstract-ops/type-conversion.d.mts +55 -0
  69. package/declaration/abstract-ops/type-conversion.d.mts.map +1 -0
  70. package/declaration/abstract-ops/typedarray-objects.d.mts +33 -0
  71. package/declaration/abstract-ops/typedarray-objects.d.mts.map +1 -0
  72. package/declaration/abstract-ops/weak-operations.d.mts +16 -0
  73. package/declaration/abstract-ops/weak-operations.d.mts.map +1 -0
  74. package/declaration/api-types.d.mts +3 -0
  75. package/declaration/api-types.d.mts.map +1 -0
  76. package/declaration/api.d.mts +63 -0
  77. package/declaration/api.d.mts.map +1 -0
  78. package/declaration/completion.d.mts +163 -0
  79. package/declaration/completion.d.mts.map +1 -0
  80. package/declaration/engine.d.mts +143 -0
  81. package/declaration/engine.d.mts.map +1 -0
  82. package/declaration/environment.d.mts +209 -0
  83. package/declaration/environment.d.mts.map +1 -0
  84. package/declaration/evaluator.d.mts +14 -0
  85. package/declaration/evaluator.d.mts.map +1 -0
  86. package/declaration/helpers.d.mts +92 -0
  87. package/declaration/helpers.d.mts.map +1 -0
  88. package/declaration/inspect.d.mts +4 -0
  89. package/declaration/inspect.d.mts.map +1 -0
  90. package/declaration/intrinsics/AggregateError.d.mts +3 -0
  91. package/declaration/intrinsics/AggregateError.d.mts.map +1 -0
  92. package/declaration/intrinsics/AggregateErrorPrototype.d.mts +3 -0
  93. package/declaration/intrinsics/AggregateErrorPrototype.d.mts.map +1 -0
  94. package/declaration/intrinsics/Array.d.mts +3 -0
  95. package/declaration/intrinsics/Array.d.mts.map +1 -0
  96. package/declaration/intrinsics/ArrayBuffer.d.mts +3 -0
  97. package/declaration/intrinsics/ArrayBuffer.d.mts.map +1 -0
  98. package/declaration/intrinsics/ArrayBufferPrototype.d.mts +3 -0
  99. package/declaration/intrinsics/ArrayBufferPrototype.d.mts.map +1 -0
  100. package/declaration/intrinsics/ArrayIteratorPrototype.d.mts +3 -0
  101. package/declaration/intrinsics/ArrayIteratorPrototype.d.mts.map +1 -0
  102. package/declaration/intrinsics/ArrayPrototype.d.mts +3 -0
  103. package/declaration/intrinsics/ArrayPrototype.d.mts.map +1 -0
  104. package/declaration/intrinsics/ArrayPrototypeShared.d.mts +10 -0
  105. package/declaration/intrinsics/ArrayPrototypeShared.d.mts.map +1 -0
  106. package/declaration/intrinsics/AsyncFromSyncIteratorPrototype.d.mts +6 -0
  107. package/declaration/intrinsics/AsyncFromSyncIteratorPrototype.d.mts.map +1 -0
  108. package/declaration/intrinsics/AsyncFunction.d.mts +3 -0
  109. package/declaration/intrinsics/AsyncFunction.d.mts.map +1 -0
  110. package/declaration/intrinsics/AsyncFunctionPrototype.d.mts +3 -0
  111. package/declaration/intrinsics/AsyncFunctionPrototype.d.mts.map +1 -0
  112. package/declaration/intrinsics/AsyncGeneratorFunction.d.mts +3 -0
  113. package/declaration/intrinsics/AsyncGeneratorFunction.d.mts.map +1 -0
  114. package/declaration/intrinsics/AsyncGeneratorFunctionPrototype.d.mts +3 -0
  115. package/declaration/intrinsics/AsyncGeneratorFunctionPrototype.d.mts.map +1 -0
  116. package/declaration/intrinsics/AsyncGeneratorFunctionPrototypePrototype.d.mts +3 -0
  117. package/declaration/intrinsics/AsyncGeneratorFunctionPrototypePrototype.d.mts.map +1 -0
  118. package/declaration/intrinsics/AsyncIteratorPrototype.d.mts +3 -0
  119. package/declaration/intrinsics/AsyncIteratorPrototype.d.mts.map +1 -0
  120. package/declaration/intrinsics/BigInt.d.mts +8 -0
  121. package/declaration/intrinsics/BigInt.d.mts.map +1 -0
  122. package/declaration/intrinsics/BigIntPrototype.d.mts +3 -0
  123. package/declaration/intrinsics/BigIntPrototype.d.mts.map +1 -0
  124. package/declaration/intrinsics/Boolean.d.mts +8 -0
  125. package/declaration/intrinsics/Boolean.d.mts.map +1 -0
  126. package/declaration/intrinsics/BooleanPrototype.d.mts +3 -0
  127. package/declaration/intrinsics/BooleanPrototype.d.mts.map +1 -0
  128. package/declaration/intrinsics/DataView.d.mts +11 -0
  129. package/declaration/intrinsics/DataView.d.mts.map +1 -0
  130. package/declaration/intrinsics/DataViewPrototype.d.mts +3 -0
  131. package/declaration/intrinsics/DataViewPrototype.d.mts.map +1 -0
  132. package/declaration/intrinsics/Date.d.mts +7 -0
  133. package/declaration/intrinsics/Date.d.mts.map +1 -0
  134. package/declaration/intrinsics/DatePrototype.d.mts +10 -0
  135. package/declaration/intrinsics/DatePrototype.d.mts.map +1 -0
  136. package/declaration/intrinsics/Error.d.mts +3 -0
  137. package/declaration/intrinsics/Error.d.mts.map +1 -0
  138. package/declaration/intrinsics/ErrorPrototype.d.mts +3 -0
  139. package/declaration/intrinsics/ErrorPrototype.d.mts.map +1 -0
  140. package/declaration/intrinsics/FinalizationRegistry.d.mts +16 -0
  141. package/declaration/intrinsics/FinalizationRegistry.d.mts.map +1 -0
  142. package/declaration/intrinsics/FinalizationRegistryPrototype.d.mts +3 -0
  143. package/declaration/intrinsics/FinalizationRegistryPrototype.d.mts.map +1 -0
  144. package/declaration/intrinsics/ForInIteratorPrototype.d.mts +13 -0
  145. package/declaration/intrinsics/ForInIteratorPrototype.d.mts.map +1 -0
  146. package/declaration/intrinsics/Function.d.mts +3 -0
  147. package/declaration/intrinsics/Function.d.mts.map +1 -0
  148. package/declaration/intrinsics/FunctionPrototype.d.mts +10 -0
  149. package/declaration/intrinsics/FunctionPrototype.d.mts.map +1 -0
  150. package/declaration/intrinsics/GeneratorFunction.d.mts +3 -0
  151. package/declaration/intrinsics/GeneratorFunction.d.mts.map +1 -0
  152. package/declaration/intrinsics/GeneratorFunctionPrototype.d.mts +3 -0
  153. package/declaration/intrinsics/GeneratorFunctionPrototype.d.mts.map +1 -0
  154. package/declaration/intrinsics/GeneratorFunctionPrototypePrototype.d.mts +3 -0
  155. package/declaration/intrinsics/GeneratorFunctionPrototypePrototype.d.mts.map +1 -0
  156. package/declaration/intrinsics/IteratorPrototype.d.mts +3 -0
  157. package/declaration/intrinsics/IteratorPrototype.d.mts.map +1 -0
  158. package/declaration/intrinsics/JSON.d.mts +3 -0
  159. package/declaration/intrinsics/JSON.d.mts.map +1 -0
  160. package/declaration/intrinsics/Map.d.mts +12 -0
  161. package/declaration/intrinsics/Map.d.mts.map +1 -0
  162. package/declaration/intrinsics/MapIteratorPrototype.d.mts +7 -0
  163. package/declaration/intrinsics/MapIteratorPrototype.d.mts.map +1 -0
  164. package/declaration/intrinsics/MapPrototype.d.mts +3 -0
  165. package/declaration/intrinsics/MapPrototype.d.mts.map +1 -0
  166. package/declaration/intrinsics/Math.d.mts +4 -0
  167. package/declaration/intrinsics/Math.d.mts.map +1 -0
  168. package/declaration/intrinsics/NativeError.d.mts +6 -0
  169. package/declaration/intrinsics/NativeError.d.mts.map +1 -0
  170. package/declaration/intrinsics/Number.d.mts +7 -0
  171. package/declaration/intrinsics/Number.d.mts.map +1 -0
  172. package/declaration/intrinsics/NumberPrototype.d.mts +3 -0
  173. package/declaration/intrinsics/NumberPrototype.d.mts.map +1 -0
  174. package/declaration/intrinsics/Object.d.mts +3 -0
  175. package/declaration/intrinsics/Object.d.mts.map +1 -0
  176. package/declaration/intrinsics/ObjectPrototype.d.mts +3 -0
  177. package/declaration/intrinsics/ObjectPrototype.d.mts.map +1 -0
  178. package/declaration/intrinsics/Promise.d.mts +12 -0
  179. package/declaration/intrinsics/Promise.d.mts.map +1 -0
  180. package/declaration/intrinsics/PromisePrototype.d.mts +3 -0
  181. package/declaration/intrinsics/PromisePrototype.d.mts.map +1 -0
  182. package/declaration/intrinsics/Proxy.d.mts +11 -0
  183. package/declaration/intrinsics/Proxy.d.mts.map +1 -0
  184. package/declaration/intrinsics/Reflect.d.mts +3 -0
  185. package/declaration/intrinsics/Reflect.d.mts.map +1 -0
  186. package/declaration/intrinsics/RegExp.d.mts +12 -0
  187. package/declaration/intrinsics/RegExp.d.mts.map +1 -0
  188. package/declaration/intrinsics/RegExpPrototype.d.mts +18 -0
  189. package/declaration/intrinsics/RegExpPrototype.d.mts.map +1 -0
  190. package/declaration/intrinsics/RegExpStringIteratorPrototype.d.mts +7 -0
  191. package/declaration/intrinsics/RegExpStringIteratorPrototype.d.mts.map +1 -0
  192. package/declaration/intrinsics/Set.d.mts +7 -0
  193. package/declaration/intrinsics/Set.d.mts.map +1 -0
  194. package/declaration/intrinsics/SetIteratorPrototype.d.mts +7 -0
  195. package/declaration/intrinsics/SetIteratorPrototype.d.mts.map +1 -0
  196. package/declaration/intrinsics/SetPrototype.d.mts +3 -0
  197. package/declaration/intrinsics/SetPrototype.d.mts.map +1 -0
  198. package/declaration/intrinsics/String.d.mts +9 -0
  199. package/declaration/intrinsics/String.d.mts.map +1 -0
  200. package/declaration/intrinsics/StringIteratorPrototype.d.mts +3 -0
  201. package/declaration/intrinsics/StringIteratorPrototype.d.mts.map +1 -0
  202. package/declaration/intrinsics/StringPrototype.d.mts +3 -0
  203. package/declaration/intrinsics/StringPrototype.d.mts.map +1 -0
  204. package/declaration/intrinsics/Symbol.d.mts +12 -0
  205. package/declaration/intrinsics/Symbol.d.mts.map +1 -0
  206. package/declaration/intrinsics/SymbolPrototype.d.mts +3 -0
  207. package/declaration/intrinsics/SymbolPrototype.d.mts.map +1 -0
  208. package/declaration/intrinsics/ThrowTypeError.d.mts +3 -0
  209. package/declaration/intrinsics/ThrowTypeError.d.mts.map +1 -0
  210. package/declaration/intrinsics/TypedArray.d.mts +181 -0
  211. package/declaration/intrinsics/TypedArray.d.mts.map +1 -0
  212. package/declaration/intrinsics/TypedArrayConstructors.d.mts +3 -0
  213. package/declaration/intrinsics/TypedArrayConstructors.d.mts.map +1 -0
  214. package/declaration/intrinsics/TypedArrayPrototype.d.mts +3 -0
  215. package/declaration/intrinsics/TypedArrayPrototype.d.mts.map +1 -0
  216. package/declaration/intrinsics/TypedArrayPrototypes.d.mts +4 -0
  217. package/declaration/intrinsics/TypedArrayPrototypes.d.mts.map +1 -0
  218. package/declaration/intrinsics/URIHandling.d.mts +3 -0
  219. package/declaration/intrinsics/URIHandling.d.mts.map +1 -0
  220. package/declaration/intrinsics/WeakMap.d.mts +11 -0
  221. package/declaration/intrinsics/WeakMap.d.mts.map +1 -0
  222. package/declaration/intrinsics/WeakMapPrototype.d.mts +3 -0
  223. package/declaration/intrinsics/WeakMapPrototype.d.mts.map +1 -0
  224. package/declaration/intrinsics/WeakRef.d.mts +8 -0
  225. package/declaration/intrinsics/WeakRef.d.mts.map +1 -0
  226. package/declaration/intrinsics/WeakRefPrototype.d.mts +3 -0
  227. package/declaration/intrinsics/WeakRefPrototype.d.mts.map +1 -0
  228. package/declaration/intrinsics/WeakSet.d.mts +8 -0
  229. package/declaration/intrinsics/WeakSet.d.mts.map +1 -0
  230. package/declaration/intrinsics/WeakSetPrototype.d.mts +3 -0
  231. package/declaration/intrinsics/WeakSetPrototype.d.mts.map +1 -0
  232. package/declaration/intrinsics/bootstrap.d.mts +14 -0
  233. package/declaration/intrinsics/bootstrap.d.mts.map +1 -0
  234. package/declaration/intrinsics/eval.d.mts +3 -0
  235. package/declaration/intrinsics/eval.d.mts.map +1 -0
  236. package/declaration/intrinsics/isFinite.d.mts +3 -0
  237. package/declaration/intrinsics/isFinite.d.mts.map +1 -0
  238. package/declaration/intrinsics/isNaN.d.mts +3 -0
  239. package/declaration/intrinsics/isNaN.d.mts.map +1 -0
  240. package/declaration/intrinsics/parseFloat.d.mts +3 -0
  241. package/declaration/intrinsics/parseFloat.d.mts.map +1 -0
  242. package/declaration/intrinsics/parseInt.d.mts +3 -0
  243. package/declaration/intrinsics/parseInt.d.mts.map +1 -0
  244. package/declaration/messages.d.mts +160 -0
  245. package/declaration/messages.d.mts.map +1 -0
  246. package/declaration/modules.d.mts +115 -0
  247. package/declaration/modules.d.mts.map +1 -0
  248. package/declaration/parse.d.mts +34 -0
  249. package/declaration/parse.d.mts.map +1 -0
  250. package/declaration/parser/BaseParser.d.mts +24 -0
  251. package/declaration/parser/BaseParser.d.mts.map +1 -0
  252. package/declaration/parser/ExpressionParser.d.mts +52 -0
  253. package/declaration/parser/ExpressionParser.d.mts.map +1 -0
  254. package/declaration/parser/FunctionParser.d.mts +43 -0
  255. package/declaration/parser/FunctionParser.d.mts.map +1 -0
  256. package/declaration/parser/IdentifierParser.d.mts +12 -0
  257. package/declaration/parser/IdentifierParser.d.mts.map +1 -0
  258. package/declaration/parser/LanguageParser.d.mts +10 -0
  259. package/declaration/parser/LanguageParser.d.mts.map +1 -0
  260. package/declaration/parser/Lexer.d.mts +71 -0
  261. package/declaration/parser/Lexer.d.mts.map +1 -0
  262. package/declaration/parser/ModuleParser.d.mts +16 -0
  263. package/declaration/parser/ModuleParser.d.mts.map +1 -0
  264. package/declaration/parser/ParseNode.d.mts +976 -0
  265. package/declaration/parser/ParseNode.d.mts.map +1 -0
  266. package/declaration/parser/Parser.d.mts +32 -0
  267. package/declaration/parser/Parser.d.mts.map +1 -0
  268. package/declaration/parser/RegExpParser.d.mts +46 -0
  269. package/declaration/parser/RegExpParser.d.mts.map +1 -0
  270. package/declaration/parser/Scope.d.mts +106 -0
  271. package/declaration/parser/Scope.d.mts.map +1 -0
  272. package/declaration/parser/StatementParser.d.mts +49 -0
  273. package/declaration/parser/StatementParser.d.mts.map +1 -0
  274. package/declaration/parser/tokens.d.mts +32 -0
  275. package/declaration/parser/tokens.d.mts.map +1 -0
  276. package/declaration/runtime-semantics/AdditiveExpression.d.mts +3 -0
  277. package/declaration/runtime-semantics/AdditiveExpression.d.mts.map +1 -0
  278. package/declaration/runtime-semantics/ApplyStringOrNumericBinaryOperator.d.mts +11 -0
  279. package/declaration/runtime-semantics/ApplyStringOrNumericBinaryOperator.d.mts.map +1 -0
  280. package/declaration/runtime-semantics/ArgumentListEvaluation.d.mts +6 -0
  281. package/declaration/runtime-semantics/ArgumentListEvaluation.d.mts.map +1 -0
  282. package/declaration/runtime-semantics/ArrayLiteral.d.mts +5 -0
  283. package/declaration/runtime-semantics/ArrayLiteral.d.mts.map +1 -0
  284. package/declaration/runtime-semantics/ArrowFunction.d.mts +4 -0
  285. package/declaration/runtime-semantics/ArrowFunction.d.mts.map +1 -0
  286. package/declaration/runtime-semantics/AssignmentExpression.d.mts +14 -0
  287. package/declaration/runtime-semantics/AssignmentExpression.d.mts.map +1 -0
  288. package/declaration/runtime-semantics/AsyncArrowFunction.d.mts +4 -0
  289. package/declaration/runtime-semantics/AsyncArrowFunction.d.mts.map +1 -0
  290. package/declaration/runtime-semantics/AsyncFunctionExpression.d.mts +4 -0
  291. package/declaration/runtime-semantics/AsyncFunctionExpression.d.mts.map +1 -0
  292. package/declaration/runtime-semantics/AsyncGeneratorExpression.d.mts +4 -0
  293. package/declaration/runtime-semantics/AsyncGeneratorExpression.d.mts.map +1 -0
  294. package/declaration/runtime-semantics/AwaitExpression.d.mts +5 -0
  295. package/declaration/runtime-semantics/AwaitExpression.d.mts.map +1 -0
  296. package/declaration/runtime-semantics/BindingInitialization.d.mts +8 -0
  297. package/declaration/runtime-semantics/BindingInitialization.d.mts.map +1 -0
  298. package/declaration/runtime-semantics/BitwiseOperators.d.mts +5 -0
  299. package/declaration/runtime-semantics/BitwiseOperators.d.mts.map +1 -0
  300. package/declaration/runtime-semantics/Block.d.mts +20 -0
  301. package/declaration/runtime-semantics/Block.d.mts.map +1 -0
  302. package/declaration/runtime-semantics/BreakStatement.d.mts +4 -0
  303. package/declaration/runtime-semantics/BreakStatement.d.mts.map +1 -0
  304. package/declaration/runtime-semantics/BreakableStatement.d.mts +4 -0
  305. package/declaration/runtime-semantics/BreakableStatement.d.mts.map +1 -0
  306. package/declaration/runtime-semantics/CallExpression.d.mts +5 -0
  307. package/declaration/runtime-semantics/CallExpression.d.mts.map +1 -0
  308. package/declaration/runtime-semantics/ClassDeclaration.d.mts +8 -0
  309. package/declaration/runtime-semantics/ClassDeclaration.d.mts.map +1 -0
  310. package/declaration/runtime-semantics/ClassDefinitionEvaluation.d.mts +12 -0
  311. package/declaration/runtime-semantics/ClassDefinitionEvaluation.d.mts.map +1 -0
  312. package/declaration/runtime-semantics/ClassExpression.d.mts +5 -0
  313. package/declaration/runtime-semantics/ClassExpression.d.mts.map +1 -0
  314. package/declaration/runtime-semantics/ClassFieldDefinitionEvaluation.d.mts +10 -0
  315. package/declaration/runtime-semantics/ClassFieldDefinitionEvaluation.d.mts.map +1 -0
  316. package/declaration/runtime-semantics/ClassStaticBlockDefinitionEvaluation.d.mts +10 -0
  317. package/declaration/runtime-semantics/ClassStaticBlockDefinitionEvaluation.d.mts.map +1 -0
  318. package/declaration/runtime-semantics/CoalesceExpression.d.mts +5 -0
  319. package/declaration/runtime-semantics/CoalesceExpression.d.mts.map +1 -0
  320. package/declaration/runtime-semantics/CommaOperator.d.mts +5 -0
  321. package/declaration/runtime-semantics/CommaOperator.d.mts.map +1 -0
  322. package/declaration/runtime-semantics/ConditionalExpression.d.mts +5 -0
  323. package/declaration/runtime-semantics/ConditionalExpression.d.mts.map +1 -0
  324. package/declaration/runtime-semantics/ContinueStatement.d.mts +4 -0
  325. package/declaration/runtime-semantics/ContinueStatement.d.mts.map +1 -0
  326. package/declaration/runtime-semantics/CreateDynamicFunction.d.mts +10 -0
  327. package/declaration/runtime-semantics/CreateDynamicFunction.d.mts.map +1 -0
  328. package/declaration/runtime-semantics/DebuggerStatement.d.mts +5 -0
  329. package/declaration/runtime-semantics/DebuggerStatement.d.mts.map +1 -0
  330. package/declaration/runtime-semantics/DefineMethod.d.mts +10 -0
  331. package/declaration/runtime-semantics/DefineMethod.d.mts.map +1 -0
  332. package/declaration/runtime-semantics/DestructuringAssignmentEvaluation.d.mts +5 -0
  333. package/declaration/runtime-semantics/DestructuringAssignmentEvaluation.d.mts.map +1 -0
  334. package/declaration/runtime-semantics/EmptyStatement.d.mts +5 -0
  335. package/declaration/runtime-semantics/EmptyStatement.d.mts.map +1 -0
  336. package/declaration/runtime-semantics/EqualityExpression.d.mts +5 -0
  337. package/declaration/runtime-semantics/EqualityExpression.d.mts.map +1 -0
  338. package/declaration/runtime-semantics/EvaluateBody.d.mts +69 -0
  339. package/declaration/runtime-semantics/EvaluateBody.d.mts.map +1 -0
  340. package/declaration/runtime-semantics/EvaluateCall.d.mts +11 -0
  341. package/declaration/runtime-semantics/EvaluateCall.d.mts.map +1 -0
  342. package/declaration/runtime-semantics/EvaluatePropertyAccess.d.mts +9 -0
  343. package/declaration/runtime-semantics/EvaluatePropertyAccess.d.mts.map +1 -0
  344. package/declaration/runtime-semantics/EvaluateStringOrNumericBinaryExpression.d.mts +6 -0
  345. package/declaration/runtime-semantics/EvaluateStringOrNumericBinaryExpression.d.mts.map +1 -0
  346. package/declaration/runtime-semantics/ExponentiationExpression.d.mts +5 -0
  347. package/declaration/runtime-semantics/ExponentiationExpression.d.mts.map +1 -0
  348. package/declaration/runtime-semantics/ExportDeclaration.d.mts +17 -0
  349. package/declaration/runtime-semantics/ExportDeclaration.d.mts.map +1 -0
  350. package/declaration/runtime-semantics/ExpressionStatement.d.mts +5 -0
  351. package/declaration/runtime-semantics/ExpressionStatement.d.mts.map +1 -0
  352. package/declaration/runtime-semantics/FunctionDeclaration.d.mts +5 -0
  353. package/declaration/runtime-semantics/FunctionDeclaration.d.mts.map +1 -0
  354. package/declaration/runtime-semantics/FunctionDeclarationInstantiation.d.mts +6 -0
  355. package/declaration/runtime-semantics/FunctionDeclarationInstantiation.d.mts.map +1 -0
  356. package/declaration/runtime-semantics/FunctionExpression.d.mts +4 -0
  357. package/declaration/runtime-semantics/FunctionExpression.d.mts.map +1 -0
  358. package/declaration/runtime-semantics/FunctionStatementList.d.mts +15 -0
  359. package/declaration/runtime-semantics/FunctionStatementList.d.mts.map +1 -0
  360. package/declaration/runtime-semantics/GeneratorExpression.d.mts +4 -0
  361. package/declaration/runtime-semantics/GeneratorExpression.d.mts.map +1 -0
  362. package/declaration/runtime-semantics/GetSubstitution.d.mts +5 -0
  363. package/declaration/runtime-semantics/GetSubstitution.d.mts.map +1 -0
  364. package/declaration/runtime-semantics/GlobalDeclarationInstantiation.d.mts +12 -0
  365. package/declaration/runtime-semantics/GlobalDeclarationInstantiation.d.mts.map +1 -0
  366. package/declaration/runtime-semantics/HoistableDeclaration.d.mts +5 -0
  367. package/declaration/runtime-semantics/HoistableDeclaration.d.mts.map +1 -0
  368. package/declaration/runtime-semantics/IdentifierReference.d.mts +6 -0
  369. package/declaration/runtime-semantics/IdentifierReference.d.mts.map +1 -0
  370. package/declaration/runtime-semantics/IfStatement.d.mts +17 -0
  371. package/declaration/runtime-semantics/IfStatement.d.mts.map +1 -0
  372. package/declaration/runtime-semantics/ImportCall.d.mts +6 -0
  373. package/declaration/runtime-semantics/ImportCall.d.mts.map +1 -0
  374. package/declaration/runtime-semantics/ImportDeclaration.d.mts +5 -0
  375. package/declaration/runtime-semantics/ImportDeclaration.d.mts.map +1 -0
  376. package/declaration/runtime-semantics/ImportMeta.d.mts +5 -0
  377. package/declaration/runtime-semantics/ImportMeta.d.mts.map +1 -0
  378. package/declaration/runtime-semantics/InstantiateArrowFunctionExpression.d.mts +5 -0
  379. package/declaration/runtime-semantics/InstantiateArrowFunctionExpression.d.mts.map +1 -0
  380. package/declaration/runtime-semantics/InstantiateAsyncArrowFunctionExpression.d.mts +5 -0
  381. package/declaration/runtime-semantics/InstantiateAsyncArrowFunctionExpression.d.mts.map +1 -0
  382. package/declaration/runtime-semantics/InstantiateAsyncFunctionExpression.d.mts +5 -0
  383. package/declaration/runtime-semantics/InstantiateAsyncFunctionExpression.d.mts.map +1 -0
  384. package/declaration/runtime-semantics/InstantiateAsyncGeneratorFunctionExpression.d.mts +5 -0
  385. package/declaration/runtime-semantics/InstantiateAsyncGeneratorFunctionExpression.d.mts.map +1 -0
  386. package/declaration/runtime-semantics/InstantiateFunctionObject.d.mts +12 -0
  387. package/declaration/runtime-semantics/InstantiateFunctionObject.d.mts.map +1 -0
  388. package/declaration/runtime-semantics/InstantiateGeneratorFunctionExpression.d.mts +5 -0
  389. package/declaration/runtime-semantics/InstantiateGeneratorFunctionExpression.d.mts.map +1 -0
  390. package/declaration/runtime-semantics/InstantiateOrdinaryFunctionExpression.d.mts +5 -0
  391. package/declaration/runtime-semantics/InstantiateOrdinaryFunctionExpression.d.mts.map +1 -0
  392. package/declaration/runtime-semantics/IteratorBindingInitialization.d.mts +9 -0
  393. package/declaration/runtime-semantics/IteratorBindingInitialization.d.mts.map +1 -0
  394. package/declaration/runtime-semantics/KeyedBindingInitialization.d.mts +6 -0
  395. package/declaration/runtime-semantics/KeyedBindingInitialization.d.mts.map +1 -0
  396. package/declaration/runtime-semantics/LabelledEvaluation.d.mts +9 -0
  397. package/declaration/runtime-semantics/LabelledEvaluation.d.mts.map +1 -0
  398. package/declaration/runtime-semantics/LabelledStatement.d.mts +4 -0
  399. package/declaration/runtime-semantics/LabelledStatement.d.mts.map +1 -0
  400. package/declaration/runtime-semantics/LexicalDeclaration.d.mts +10 -0
  401. package/declaration/runtime-semantics/LexicalDeclaration.d.mts.map +1 -0
  402. package/declaration/runtime-semantics/Literal.d.mts +6 -0
  403. package/declaration/runtime-semantics/Literal.d.mts.map +1 -0
  404. package/declaration/runtime-semantics/LogicalANDExpression.d.mts +5 -0
  405. package/declaration/runtime-semantics/LogicalANDExpression.d.mts.map +1 -0
  406. package/declaration/runtime-semantics/LogicalORExpression.d.mts +5 -0
  407. package/declaration/runtime-semantics/LogicalORExpression.d.mts.map +1 -0
  408. package/declaration/runtime-semantics/MV.d.mts +3 -0
  409. package/declaration/runtime-semantics/MV.d.mts.map +1 -0
  410. package/declaration/runtime-semantics/MemberExpression.d.mts +7 -0
  411. package/declaration/runtime-semantics/MemberExpression.d.mts.map +1 -0
  412. package/declaration/runtime-semantics/MethodDefinitionEvaluation.d.mts +16 -0
  413. package/declaration/runtime-semantics/MethodDefinitionEvaluation.d.mts.map +1 -0
  414. package/declaration/runtime-semantics/Module.d.mts +17 -0
  415. package/declaration/runtime-semantics/Module.d.mts.map +1 -0
  416. package/declaration/runtime-semantics/ModuleBody.d.mts +15 -0
  417. package/declaration/runtime-semantics/ModuleBody.d.mts.map +1 -0
  418. package/declaration/runtime-semantics/MultiplicativeExpression.d.mts +5 -0
  419. package/declaration/runtime-semantics/MultiplicativeExpression.d.mts.map +1 -0
  420. package/declaration/runtime-semantics/NamedEvaluation.d.mts +4 -0
  421. package/declaration/runtime-semantics/NamedEvaluation.d.mts.map +1 -0
  422. package/declaration/runtime-semantics/NewExpression.d.mts +5 -0
  423. package/declaration/runtime-semantics/NewExpression.d.mts.map +1 -0
  424. package/declaration/runtime-semantics/NewTarget.d.mts +3 -0
  425. package/declaration/runtime-semantics/NewTarget.d.mts.map +1 -0
  426. package/declaration/runtime-semantics/NumberToBigInt.d.mts +10 -0
  427. package/declaration/runtime-semantics/NumberToBigInt.d.mts.map +1 -0
  428. package/declaration/runtime-semantics/ObjectLiteral.d.mts +5 -0
  429. package/declaration/runtime-semantics/ObjectLiteral.d.mts.map +1 -0
  430. package/declaration/runtime-semantics/OptionalExpression.d.mts +5 -0
  431. package/declaration/runtime-semantics/OptionalExpression.d.mts.map +1 -0
  432. package/declaration/runtime-semantics/ParenthesizedExpression.d.mts +4 -0
  433. package/declaration/runtime-semantics/ParenthesizedExpression.d.mts.map +1 -0
  434. package/declaration/runtime-semantics/PropertyBindingInitialization.d.mts +6 -0
  435. package/declaration/runtime-semantics/PropertyBindingInitialization.d.mts.map +1 -0
  436. package/declaration/runtime-semantics/PropertyDefinitionEvaluation.d.mts +7 -0
  437. package/declaration/runtime-semantics/PropertyDefinitionEvaluation.d.mts.map +1 -0
  438. package/declaration/runtime-semantics/PropertyName.d.mts +6 -0
  439. package/declaration/runtime-semantics/PropertyName.d.mts.map +1 -0
  440. package/declaration/runtime-semantics/RegExp.d.mts +17 -0
  441. package/declaration/runtime-semantics/RegExp.d.mts.map +1 -0
  442. package/declaration/runtime-semantics/RegularExpressionLiteral.d.mts +4 -0
  443. package/declaration/runtime-semantics/RegularExpressionLiteral.d.mts.map +1 -0
  444. package/declaration/runtime-semantics/RelationalExpression.d.mts +26 -0
  445. package/declaration/runtime-semantics/RelationalExpression.d.mts.map +1 -0
  446. package/declaration/runtime-semantics/RestBindingInitialization.d.mts +5 -0
  447. package/declaration/runtime-semantics/RestBindingInitialization.d.mts.map +1 -0
  448. package/declaration/runtime-semantics/ReturnStatement.d.mts +6 -0
  449. package/declaration/runtime-semantics/ReturnStatement.d.mts.map +1 -0
  450. package/declaration/runtime-semantics/Script.d.mts +17 -0
  451. package/declaration/runtime-semantics/Script.d.mts.map +1 -0
  452. package/declaration/runtime-semantics/ScriptBody.d.mts +14 -0
  453. package/declaration/runtime-semantics/ScriptBody.d.mts.map +1 -0
  454. package/declaration/runtime-semantics/ShiftExpression.d.mts +7 -0
  455. package/declaration/runtime-semantics/ShiftExpression.d.mts.map +1 -0
  456. package/declaration/runtime-semantics/StatementList.d.mts +16 -0
  457. package/declaration/runtime-semantics/StatementList.d.mts.map +1 -0
  458. package/declaration/runtime-semantics/StringIndexOf.d.mts +3 -0
  459. package/declaration/runtime-semantics/StringIndexOf.d.mts.map +1 -0
  460. package/declaration/runtime-semantics/StringPad.d.mts +5 -0
  461. package/declaration/runtime-semantics/StringPad.d.mts.map +1 -0
  462. package/declaration/runtime-semantics/SuperCall.d.mts +11 -0
  463. package/declaration/runtime-semantics/SuperCall.d.mts.map +1 -0
  464. package/declaration/runtime-semantics/SuperProperty.d.mts +5 -0
  465. package/declaration/runtime-semantics/SuperProperty.d.mts.map +1 -0
  466. package/declaration/runtime-semantics/SwitchStatement.d.mts +20 -0
  467. package/declaration/runtime-semantics/SwitchStatement.d.mts.map +1 -0
  468. package/declaration/runtime-semantics/TaggedTemplateExpression.d.mts +5 -0
  469. package/declaration/runtime-semantics/TaggedTemplateExpression.d.mts.map +1 -0
  470. package/declaration/runtime-semantics/TemplateLiteral.d.mts +5 -0
  471. package/declaration/runtime-semantics/TemplateLiteral.d.mts.map +1 -0
  472. package/declaration/runtime-semantics/This.d.mts +5 -0
  473. package/declaration/runtime-semantics/This.d.mts.map +1 -0
  474. package/declaration/runtime-semantics/ThrowStatement.d.mts +10 -0
  475. package/declaration/runtime-semantics/ThrowStatement.d.mts.map +1 -0
  476. package/declaration/runtime-semantics/TrimString.d.mts +5 -0
  477. package/declaration/runtime-semantics/TrimString.d.mts.map +1 -0
  478. package/declaration/runtime-semantics/TryStatement.d.mts +16 -0
  479. package/declaration/runtime-semantics/TryStatement.d.mts.map +1 -0
  480. package/declaration/runtime-semantics/UnaryExpression.d.mts +4 -0
  481. package/declaration/runtime-semantics/UnaryExpression.d.mts.map +1 -0
  482. package/declaration/runtime-semantics/Unicode.d.mts +118 -0
  483. package/declaration/runtime-semantics/Unicode.d.mts.map +1 -0
  484. package/declaration/runtime-semantics/UpdateExpression.d.mts +4 -0
  485. package/declaration/runtime-semantics/UpdateExpression.d.mts.map +1 -0
  486. package/declaration/runtime-semantics/VariableStatement.d.mts +9 -0
  487. package/declaration/runtime-semantics/VariableStatement.d.mts.map +1 -0
  488. package/declaration/runtime-semantics/WithStatement.d.mts +16 -0
  489. package/declaration/runtime-semantics/WithStatement.d.mts.map +1 -0
  490. package/declaration/runtime-semantics/YieldExpression.d.mts +6 -0
  491. package/declaration/runtime-semantics/YieldExpression.d.mts.map +1 -0
  492. package/declaration/runtime-semantics/all.d.mts +109 -0
  493. package/declaration/runtime-semantics/all.d.mts.map +1 -0
  494. package/declaration/static-semantics/BodyText.d.mts +4 -0
  495. package/declaration/static-semantics/BodyText.d.mts.map +1 -0
  496. package/declaration/static-semantics/BoundNames.d.mts +4 -0
  497. package/declaration/static-semantics/BoundNames.d.mts.map +1 -0
  498. package/declaration/static-semantics/CharacterValue.d.mts +3 -0
  499. package/declaration/static-semantics/CharacterValue.d.mts.map +1 -0
  500. package/declaration/static-semantics/CodePointAt.d.mts +7 -0
  501. package/declaration/static-semantics/CodePointAt.d.mts.map +1 -0
  502. package/declaration/static-semantics/CodePointsToString.d.mts +3 -0
  503. package/declaration/static-semantics/CodePointsToString.d.mts.map +1 -0
  504. package/declaration/static-semantics/ConstructorMethod.d.mts +4 -0
  505. package/declaration/static-semantics/ConstructorMethod.d.mts.map +1 -0
  506. package/declaration/static-semantics/ContainsArguments.d.mts +4 -0
  507. package/declaration/static-semantics/ContainsArguments.d.mts.map +1 -0
  508. package/declaration/static-semantics/ContainsExpression.d.mts +3 -0
  509. package/declaration/static-semantics/ContainsExpression.d.mts.map +1 -0
  510. package/declaration/static-semantics/DeclarationPart.d.mts +3 -0
  511. package/declaration/static-semantics/DeclarationPart.d.mts.map +1 -0
  512. package/declaration/static-semantics/ExpectedArgumentCount.d.mts +3 -0
  513. package/declaration/static-semantics/ExpectedArgumentCount.d.mts.map +1 -0
  514. package/declaration/static-semantics/ExportEntries.d.mts +10 -0
  515. package/declaration/static-semantics/ExportEntries.d.mts.map +1 -0
  516. package/declaration/static-semantics/ExportEntriesForModule.d.mts +5 -0
  517. package/declaration/static-semantics/ExportEntriesForModule.d.mts.map +1 -0
  518. package/declaration/static-semantics/FlagText.d.mts +4 -0
  519. package/declaration/static-semantics/FlagText.d.mts.map +1 -0
  520. package/declaration/static-semantics/HasInitializer.d.mts +5 -0
  521. package/declaration/static-semantics/HasInitializer.d.mts.map +1 -0
  522. package/declaration/static-semantics/HasName.d.mts +3 -0
  523. package/declaration/static-semantics/HasName.d.mts.map +1 -0
  524. package/declaration/static-semantics/ImportEntries.d.mts +9 -0
  525. package/declaration/static-semantics/ImportEntries.d.mts.map +1 -0
  526. package/declaration/static-semantics/ImportEntriesForModule.d.mts +5 -0
  527. package/declaration/static-semantics/ImportEntriesForModule.d.mts.map +1 -0
  528. package/declaration/static-semantics/ImportedLocalNames.d.mts +4 -0
  529. package/declaration/static-semantics/ImportedLocalNames.d.mts.map +1 -0
  530. package/declaration/static-semantics/IsAnonymousFunctionDefinition.d.mts +4 -0
  531. package/declaration/static-semantics/IsAnonymousFunctionDefinition.d.mts.map +1 -0
  532. package/declaration/static-semantics/IsComputedPropertyKey.d.mts +3 -0
  533. package/declaration/static-semantics/IsComputedPropertyKey.d.mts.map +1 -0
  534. package/declaration/static-semantics/IsConstantDeclaration.d.mts +3 -0
  535. package/declaration/static-semantics/IsConstantDeclaration.d.mts.map +1 -0
  536. package/declaration/static-semantics/IsDestructuring.d.mts +4 -0
  537. package/declaration/static-semantics/IsDestructuring.d.mts.map +1 -0
  538. package/declaration/static-semantics/IsFunctionDefinition.d.mts +6 -0
  539. package/declaration/static-semantics/IsFunctionDefinition.d.mts.map +1 -0
  540. package/declaration/static-semantics/IsIdentifierRef.d.mts +3 -0
  541. package/declaration/static-semantics/IsIdentifierRef.d.mts.map +1 -0
  542. package/declaration/static-semantics/IsInTailPosition.d.mts +3 -0
  543. package/declaration/static-semantics/IsInTailPosition.d.mts.map +1 -0
  544. package/declaration/static-semantics/IsSimpleParameterList.d.mts +3 -0
  545. package/declaration/static-semantics/IsSimpleParameterList.d.mts.map +1 -0
  546. package/declaration/static-semantics/IsStatic.d.mts +4 -0
  547. package/declaration/static-semantics/IsStatic.d.mts.map +1 -0
  548. package/declaration/static-semantics/IsStrict.d.mts +4 -0
  549. package/declaration/static-semantics/IsStrict.d.mts.map +1 -0
  550. package/declaration/static-semantics/IsStringWellFormedUnicode.d.mts +3 -0
  551. package/declaration/static-semantics/IsStringWellFormedUnicode.d.mts.map +1 -0
  552. package/declaration/static-semantics/LexicallyDeclaredNames.d.mts +4 -0
  553. package/declaration/static-semantics/LexicallyDeclaredNames.d.mts.map +1 -0
  554. package/declaration/static-semantics/LexicallyScopedDeclarations.d.mts +3 -0
  555. package/declaration/static-semantics/LexicallyScopedDeclarations.d.mts.map +1 -0
  556. package/declaration/static-semantics/ModuleRequests.d.mts +4 -0
  557. package/declaration/static-semantics/ModuleRequests.d.mts.map +1 -0
  558. package/declaration/static-semantics/NonConstructorElements.d.mts +4 -0
  559. package/declaration/static-semantics/NonConstructorElements.d.mts.map +1 -0
  560. package/declaration/static-semantics/NumericValue.d.mts +4 -0
  561. package/declaration/static-semantics/NumericValue.d.mts.map +1 -0
  562. package/declaration/static-semantics/PrivateBoundIdentifiers.d.mts +5 -0
  563. package/declaration/static-semantics/PrivateBoundIdentifiers.d.mts.map +1 -0
  564. package/declaration/static-semantics/PropName.d.mts +3 -0
  565. package/declaration/static-semantics/PropName.d.mts.map +1 -0
  566. package/declaration/static-semantics/StringToCodePoints.d.mts +3 -0
  567. package/declaration/static-semantics/StringToCodePoints.d.mts.map +1 -0
  568. package/declaration/static-semantics/StringValue.d.mts +3 -0
  569. package/declaration/static-semantics/StringValue.d.mts.map +1 -0
  570. package/declaration/static-semantics/TemplateStrings.d.mts +4 -0
  571. package/declaration/static-semantics/TemplateStrings.d.mts.map +1 -0
  572. package/declaration/static-semantics/TopLevelLexicallyDeclaredNames.d.mts +4 -0
  573. package/declaration/static-semantics/TopLevelLexicallyDeclaredNames.d.mts.map +1 -0
  574. package/declaration/static-semantics/TopLevelLexicallyScopedDeclarations.d.mts +4 -0
  575. package/declaration/static-semantics/TopLevelLexicallyScopedDeclarations.d.mts.map +1 -0
  576. package/declaration/static-semantics/TopLevelVarDeclaredNames.d.mts +4 -0
  577. package/declaration/static-semantics/TopLevelVarDeclaredNames.d.mts.map +1 -0
  578. package/declaration/static-semantics/TopLevelVarScopedDeclarations.d.mts +4 -0
  579. package/declaration/static-semantics/TopLevelVarScopedDeclarations.d.mts.map +1 -0
  580. package/declaration/static-semantics/UTF16EncodeCodePoint.d.mts +3 -0
  581. package/declaration/static-semantics/UTF16EncodeCodePoint.d.mts.map +1 -0
  582. package/declaration/static-semantics/UTF16SurrogatePairToCodePoint.d.mts +3 -0
  583. package/declaration/static-semantics/UTF16SurrogatePairToCodePoint.d.mts.map +1 -0
  584. package/declaration/static-semantics/VarDeclaredNames.d.mts +4 -0
  585. package/declaration/static-semantics/VarDeclaredNames.d.mts.map +1 -0
  586. package/declaration/static-semantics/VarScopedDeclarations.d.mts +4 -0
  587. package/declaration/static-semantics/VarScopedDeclarations.d.mts.map +1 -0
  588. package/declaration/static-semantics/all.d.mts +48 -0
  589. package/declaration/static-semantics/all.d.mts.map +1 -0
  590. package/declaration/value.d.mts +283 -0
  591. package/declaration/value.d.mts.map +1 -0
  592. package/lib/engine262.js +58136 -0
  593. package/lib/engine262.js.map +1 -0
  594. package/lib/engine262.mjs +57577 -0
  595. package/lib/engine262.mjs.map +1 -0
  596. package/lib/inspector/context.d.mts +17 -0
  597. package/lib/inspector/context.d.mts.map +1 -0
  598. package/lib/inspector/context.mjs +343 -0
  599. package/lib/inspector/context.mjs.map +1 -0
  600. package/lib/inspector/index.d.mts +15 -0
  601. package/lib/inspector/index.d.mts.map +1 -0
  602. package/lib/inspector/index.mjs +64 -0
  603. package/lib/inspector/index.mjs.map +1 -0
  604. package/lib/inspector/methods.d.mts +6 -0
  605. package/lib/inspector/methods.d.mts.map +1 -0
  606. package/lib/inspector/methods.mjs +117 -0
  607. package/lib/inspector/methods.mjs.map +1 -0
  608. package/lib/inspector/types.d.mts +208 -0
  609. package/lib/inspector/types.d.mts.map +1 -0
  610. package/lib/inspector/types.mjs +2 -0
  611. package/lib/inspector/types.mjs.map +1 -0
  612. package/lib/inspector/utils.d.mts +7 -0
  613. package/lib/inspector/utils.d.mts.map +1 -0
  614. package/lib/inspector/utils.mjs +72 -0
  615. package/lib/inspector/utils.mjs.map +1 -0
  616. package/lib/inspector.js +682 -0
  617. package/lib/inspector.js.map +1 -0
  618. package/lib/inspector.mjs +674 -0
  619. package/lib/inspector.mjs.map +1 -0
  620. package/lib/node/bin.d.mts +3 -0
  621. package/lib/node/bin.d.mts.map +1 -0
  622. package/lib/node/bin.mjs +194 -0
  623. package/lib/node/bin.mjs.map +1 -0
  624. package/lib/node/inspector.d.mts +15 -0
  625. package/lib/node/inspector.d.mts.map +1 -0
  626. package/lib/node/inspector.mjs +112 -0
  627. package/lib/node/inspector.mjs.map +1 -0
  628. package/lib/node/module.d.mts +7 -0
  629. package/lib/node/module.d.mts.map +1 -0
  630. package/lib/node/module.mjs +61 -0
  631. package/lib/node/module.mjs.map +1 -0
  632. package/lib-src/inspector/context.mts +370 -0
  633. package/lib-src/inspector/index.mts +79 -0
  634. package/lib-src/inspector/js_protocol.json +3288 -0
  635. package/lib-src/inspector/methods.mts +123 -0
  636. package/lib-src/inspector/tsconfig.json +23 -0
  637. package/lib-src/inspector/types.mts +213 -0
  638. package/lib-src/inspector/utils.mts +86 -0
  639. package/lib-src/node/bin.mts +200 -0
  640. package/lib-src/node/inspector.mts +124 -0
  641. package/lib-src/node/module.mts +64 -0
  642. package/lib-src/node/tsconfig.json +20 -0
  643. package/package.json +127 -0
  644. package/src/abstract-ops/all.mts +34 -0
  645. package/src/abstract-ops/arguments-operations.mts +246 -0
  646. package/src/abstract-ops/array-objects.mts +316 -0
  647. package/src/abstract-ops/arraybuffer-objects.mts +247 -0
  648. package/src/abstract-ops/async-function-operations.mts +43 -0
  649. package/src/abstract-ops/async-generator-objects.mts +383 -0
  650. package/src/abstract-ops/data-types-and-values.mts +43 -0
  651. package/src/abstract-ops/dataview-objects.mts +151 -0
  652. package/src/abstract-ops/date-objects.mts +232 -0
  653. package/src/abstract-ops/error-objects.mts +26 -0
  654. package/src/abstract-ops/execution-contexts.mts +80 -0
  655. package/src/abstract-ops/function-operations.mts +606 -0
  656. package/src/abstract-ops/generator-operations.mts +291 -0
  657. package/src/abstract-ops/global-object.mts +386 -0
  658. package/src/abstract-ops/immutable-prototype-objects.mts +20 -0
  659. package/src/abstract-ops/import-calls.mts +73 -0
  660. package/src/abstract-ops/iterator-operations.mts +306 -0
  661. package/src/abstract-ops/module-namespace-exotic-objects.mts +223 -0
  662. package/src/abstract-ops/module-records.mts +458 -0
  663. package/src/abstract-ops/notational-conventions.mts +53 -0
  664. package/src/abstract-ops/object-operations.mts +468 -0
  665. package/src/abstract-ops/objects.mts +435 -0
  666. package/src/abstract-ops/private-names.mts +106 -0
  667. package/src/abstract-ops/promise-operations.mts +478 -0
  668. package/src/abstract-ops/proxy-objects.mts +585 -0
  669. package/src/abstract-ops/realms.mts +517 -0
  670. package/src/abstract-ops/reference-operations.mts +211 -0
  671. package/src/abstract-ops/regexp-objects.mts +299 -0
  672. package/src/abstract-ops/spec-types.mts +239 -0
  673. package/src/abstract-ops/string-objects.mts +156 -0
  674. package/src/abstract-ops/symbol-objects.mts +30 -0
  675. package/src/abstract-ops/testing-comparison.mts +387 -0
  676. package/src/abstract-ops/type-conversion.mts +579 -0
  677. package/src/abstract-ops/typedarray-objects.mts +402 -0
  678. package/src/abstract-ops/weak-operations.mts +83 -0
  679. package/src/api-types.mts +2 -0
  680. package/src/api.mts +326 -0
  681. package/src/completion.mts +466 -0
  682. package/src/data-gen.json +1 -0
  683. package/src/engine.mts +451 -0
  684. package/src/environment.mts +1013 -0
  685. package/src/evaluator.mts +268 -0
  686. package/src/helpers.mts +538 -0
  687. package/src/inspect.mts +236 -0
  688. package/src/intrinsics/AggregateError.mts +64 -0
  689. package/src/intrinsics/AggregateErrorPrototype.mts +12 -0
  690. package/src/intrinsics/Array.mts +216 -0
  691. package/src/intrinsics/ArrayBuffer.mts +48 -0
  692. package/src/intrinsics/ArrayBufferPrototype.mts +120 -0
  693. package/src/intrinsics/ArrayIteratorPrototype.mts +25 -0
  694. package/src/intrinsics/ArrayPrototype.mts +630 -0
  695. package/src/intrinsics/ArrayPrototypeShared.mts +644 -0
  696. package/src/intrinsics/AsyncFromSyncIteratorPrototype.mts +163 -0
  697. package/src/intrinsics/AsyncFunction.mts +31 -0
  698. package/src/intrinsics/AsyncFunctionPrototype.mts +8 -0
  699. package/src/intrinsics/AsyncGeneratorFunction.mts +37 -0
  700. package/src/intrinsics/AsyncGeneratorFunctionPrototype.mts +19 -0
  701. package/src/intrinsics/AsyncGeneratorFunctionPrototypePrototype.mts +148 -0
  702. package/src/intrinsics/AsyncIteratorPrototype.mts +17 -0
  703. package/src/intrinsics/BigInt.mts +69 -0
  704. package/src/intrinsics/BigIntPrototype.mts +81 -0
  705. package/src/intrinsics/Boolean.mts +47 -0
  706. package/src/intrinsics/BooleanPrototype.mts +58 -0
  707. package/src/intrinsics/DataView.mts +82 -0
  708. package/src/intrinsics/DataViewPrototype.mts +271 -0
  709. package/src/intrinsics/Date.mts +215 -0
  710. package/src/intrinsics/DatePrototype.mts +736 -0
  711. package/src/intrinsics/Error.mts +59 -0
  712. package/src/intrinsics/ErrorPrototype.mts +62 -0
  713. package/src/intrinsics/FinalizationRegistry.mts +64 -0
  714. package/src/intrinsics/FinalizationRegistryPrototype.mts +109 -0
  715. package/src/intrinsics/ForInIteratorPrototype.mts +120 -0
  716. package/src/intrinsics/Function.mts +21 -0
  717. package/src/intrinsics/FunctionPrototype.mts +272 -0
  718. package/src/intrinsics/GeneratorFunction.mts +32 -0
  719. package/src/intrinsics/GeneratorFunctionPrototype.mts +21 -0
  720. package/src/intrinsics/GeneratorFunctionPrototypePrototype.mts +57 -0
  721. package/src/intrinsics/IteratorPrototype.mts +17 -0
  722. package/src/intrinsics/JSON.mts +570 -0
  723. package/src/intrinsics/Map.mts +98 -0
  724. package/src/intrinsics/MapIteratorPrototype.mts +79 -0
  725. package/src/intrinsics/MapPrototype.mts +226 -0
  726. package/src/intrinsics/Math.mts +178 -0
  727. package/src/intrinsics/NativeError.mts +82 -0
  728. package/src/intrinsics/Number.mts +131 -0
  729. package/src/intrinsics/NumberPrototype.mts +123 -0
  730. package/src/intrinsics/Object.mts +442 -0
  731. package/src/intrinsics/ObjectPrototype.mts +297 -0
  732. package/src/intrinsics/Promise.mts +693 -0
  733. package/src/intrinsics/PromisePrototype.mts +120 -0
  734. package/src/intrinsics/Proxy.mts +100 -0
  735. package/src/intrinsics/Reflect.mts +211 -0
  736. package/src/intrinsics/RegExp.mts +103 -0
  737. package/src/intrinsics/RegExpPrototype.mts +803 -0
  738. package/src/intrinsics/RegExpStringIteratorPrototype.mts +81 -0
  739. package/src/intrinsics/Set.mts +72 -0
  740. package/src/intrinsics/SetIteratorPrototype.mts +77 -0
  741. package/src/intrinsics/SetPrototype.mts +191 -0
  742. package/src/intrinsics/String.mts +134 -0
  743. package/src/intrinsics/StringIteratorPrototype.mts +25 -0
  744. package/src/intrinsics/StringPrototype.mts +833 -0
  745. package/src/intrinsics/Symbol.mts +103 -0
  746. package/src/intrinsics/SymbolPrototype.mts +83 -0
  747. package/src/intrinsics/ThrowTypeError.mts +21 -0
  748. package/src/intrinsics/TypedArray.mts +574 -0
  749. package/src/intrinsics/TypedArrayConstructors.mts +85 -0
  750. package/src/intrinsics/TypedArrayPrototype.mts +648 -0
  751. package/src/intrinsics/TypedArrayPrototypes.mts +17 -0
  752. package/src/intrinsics/URIHandling.mts +321 -0
  753. package/src/intrinsics/WeakMap.mts +56 -0
  754. package/src/intrinsics/WeakMapPrototype.mts +129 -0
  755. package/src/intrinsics/WeakRef.mts +42 -0
  756. package/src/intrinsics/WeakRefPrototype.mts +23 -0
  757. package/src/intrinsics/WeakSet.mts +66 -0
  758. package/src/intrinsics/WeakSetPrototype.mts +99 -0
  759. package/src/intrinsics/bootstrap.mts +145 -0
  760. package/src/intrinsics/eval.mts +25 -0
  761. package/src/intrinsics/isFinite.mts +23 -0
  762. package/src/intrinsics/isNaN.mts +23 -0
  763. package/src/intrinsics/parseFloat.mts +78 -0
  764. package/src/intrinsics/parseInt.mts +101 -0
  765. package/src/messages.mts +176 -0
  766. package/src/modules.mts +720 -0
  767. package/src/parse.mts +222 -0
  768. package/src/parser/BaseParser.mts +36 -0
  769. package/src/parser/ExpressionParser.mts +1498 -0
  770. package/src/parser/FunctionParser.mts +389 -0
  771. package/src/parser/IdentifierParser.mts +144 -0
  772. package/src/parser/LanguageParser.mts +94 -0
  773. package/src/parser/Lexer.mts +986 -0
  774. package/src/parser/ModuleParser.mts +271 -0
  775. package/src/parser/ParseNode.mts +2510 -0
  776. package/src/parser/Parser.mts +192 -0
  777. package/src/parser/RegExpParser.mts +930 -0
  778. package/src/parser/Scope.mts +535 -0
  779. package/src/parser/StatementParser.mts +958 -0
  780. package/src/parser/tokens.mts +212 -0
  781. package/src/parser/unicode.d.ts +20 -0
  782. package/src/runtime-semantics/AdditiveExpression.mts +29 -0
  783. package/src/runtime-semantics/ApplyStringOrNumericBinaryOperator.mts +78 -0
  784. package/src/runtime-semantics/ArgumentListEvaluation.mts +178 -0
  785. package/src/runtime-semantics/ArrayLiteral.mts +97 -0
  786. package/src/runtime-semantics/ArrowFunction.mts +8 -0
  787. package/src/runtime-semantics/AssignmentExpression.mts +282 -0
  788. package/src/runtime-semantics/AsyncArrowFunction.mts +8 -0
  789. package/src/runtime-semantics/AsyncFunctionExpression.mts +11 -0
  790. package/src/runtime-semantics/AsyncGeneratorExpression.mts +11 -0
  791. package/src/runtime-semantics/AwaitExpression.mts +17 -0
  792. package/src/runtime-semantics/BindingInitialization.mts +93 -0
  793. package/src/runtime-semantics/BitwiseOperators.mts +14 -0
  794. package/src/runtime-semantics/Block.mts +73 -0
  795. package/src/runtime-semantics/BreakStatement.mts +18 -0
  796. package/src/runtime-semantics/BreakableStatement.mts +18 -0
  797. package/src/runtime-semantics/CallExpression.mts +59 -0
  798. package/src/runtime-semantics/ClassDeclaration.mts +46 -0
  799. package/src/runtime-semantics/ClassDefinitionEvaluation.mts +343 -0
  800. package/src/runtime-semantics/ClassExpression.mts +32 -0
  801. package/src/runtime-semantics/ClassFieldDefinitionEvaluation.mts +61 -0
  802. package/src/runtime-semantics/ClassStaticBlockDefinitionEvaluation.mts +44 -0
  803. package/src/runtime-semantics/CoalesceExpression.mts +24 -0
  804. package/src/runtime-semantics/CommaOperator.mts +18 -0
  805. package/src/runtime-semantics/ConditionalExpression.mts +31 -0
  806. package/src/runtime-semantics/ContinueStatement.mts +18 -0
  807. package/src/runtime-semantics/CreateDynamicFunction.mts +200 -0
  808. package/src/runtime-semantics/DebuggerStatement.mts +20 -0
  809. package/src/runtime-semantics/DefineMethod.mts +42 -0
  810. package/src/runtime-semantics/DestructuringAssignmentEvaluation.mts +311 -0
  811. package/src/runtime-semantics/EmptyStatement.mts +9 -0
  812. package/src/runtime-semantics/EqualityExpression.mts +61 -0
  813. package/src/runtime-semantics/EvaluateBody.mts +196 -0
  814. package/src/runtime-semantics/EvaluateCall.mts +63 -0
  815. package/src/runtime-semantics/EvaluatePropertyAccess.mts +47 -0
  816. package/src/runtime-semantics/EvaluateStringOrNumericBinaryExpression.mts +19 -0
  817. package/src/runtime-semantics/ExponentiationExpression.mts +11 -0
  818. package/src/runtime-semantics/ExportDeclaration.mts +90 -0
  819. package/src/runtime-semantics/ExpressionStatement.mts +14 -0
  820. package/src/runtime-semantics/FunctionDeclaration.mts +11 -0
  821. package/src/runtime-semantics/FunctionDeclarationInstantiation.mts +272 -0
  822. package/src/runtime-semantics/FunctionExpression.mts +11 -0
  823. package/src/runtime-semantics/FunctionStatementList.mts +11 -0
  824. package/src/runtime-semantics/GeneratorExpression.mts +11 -0
  825. package/src/runtime-semantics/GetSubstitution.mts +119 -0
  826. package/src/runtime-semantics/GlobalDeclarationInstantiation.mts +146 -0
  827. package/src/runtime-semantics/HoistableDeclaration.mts +12 -0
  828. package/src/runtime-semantics/IdentifierReference.mts +15 -0
  829. package/src/runtime-semantics/IfStatement.mts +49 -0
  830. package/src/runtime-semantics/ImportCall.mts +43 -0
  831. package/src/runtime-semantics/ImportDeclaration.mts +9 -0
  832. package/src/runtime-semantics/ImportMeta.mts +45 -0
  833. package/src/runtime-semantics/InstantiateArrowFunctionExpression.mts +35 -0
  834. package/src/runtime-semantics/InstantiateAsyncArrowFunctionExpression.mts +37 -0
  835. package/src/runtime-semantics/InstantiateAsyncFunctionExpression.mts +75 -0
  836. package/src/runtime-semantics/InstantiateAsyncGeneratorFunctionExpression.mts +90 -0
  837. package/src/runtime-semantics/InstantiateFunctionObject.mts +123 -0
  838. package/src/runtime-semantics/InstantiateGeneratorFunctionExpression.mts +82 -0
  839. package/src/runtime-semantics/InstantiateOrdinaryFunctionExpression.mts +64 -0
  840. package/src/runtime-semantics/IteratorBindingInitialization.mts +214 -0
  841. package/src/runtime-semantics/KeyedBindingInitialization.mts +61 -0
  842. package/src/runtime-semantics/LabelledEvaluation.mts +753 -0
  843. package/src/runtime-semantics/LabelledStatement.mts +11 -0
  844. package/src/runtime-semantics/LexicalDeclaration.mts +96 -0
  845. package/src/runtime-semantics/Literal.mts +36 -0
  846. package/src/runtime-semantics/LogicalANDExpression.mts +25 -0
  847. package/src/runtime-semantics/LogicalORExpression.mts +25 -0
  848. package/src/runtime-semantics/MV.mts +10 -0
  849. package/src/runtime-semantics/MemberExpression.mts +73 -0
  850. package/src/runtime-semantics/MethodDefinitionEvaluation.mts +273 -0
  851. package/src/runtime-semantics/Module.mts +15 -0
  852. package/src/runtime-semantics/ModuleBody.mts +10 -0
  853. package/src/runtime-semantics/MultiplicativeExpression.mts +18 -0
  854. package/src/runtime-semantics/NamedEvaluation.mts +98 -0
  855. package/src/runtime-semantics/NewExpression.mts +52 -0
  856. package/src/runtime-semantics/NewTarget.mts +8 -0
  857. package/src/runtime-semantics/NumberToBigInt.mts +17 -0
  858. package/src/runtime-semantics/ObjectLiteral.mts +26 -0
  859. package/src/runtime-semantics/OptionalExpression.mts +132 -0
  860. package/src/runtime-semantics/ParenthesizedExpression.mts +8 -0
  861. package/src/runtime-semantics/PropertyBindingInitialization.mts +46 -0
  862. package/src/runtime-semantics/PropertyDefinitionEvaluation.mts +124 -0
  863. package/src/runtime-semantics/PropertyName.mts +62 -0
  864. package/src/runtime-semantics/RegExp.mts +1187 -0
  865. package/src/runtime-semantics/RegularExpressionLiteral.mts +16 -0
  866. package/src/runtime-semantics/RelationalExpression.mts +156 -0
  867. package/src/runtime-semantics/RestBindingInitialization.mts +29 -0
  868. package/src/runtime-semantics/ReturnStatement.mts +32 -0
  869. package/src/runtime-semantics/Script.mts +15 -0
  870. package/src/runtime-semantics/ScriptBody.mts +7 -0
  871. package/src/runtime-semantics/ShiftExpression.mts +17 -0
  872. package/src/runtime-semantics/StatementList.mts +31 -0
  873. package/src/runtime-semantics/StringIndexOf.mts +43 -0
  874. package/src/runtime-semantics/StringPad.mts +33 -0
  875. package/src/runtime-semantics/SuperCall.mts +65 -0
  876. package/src/runtime-semantics/SuperProperty.mts +61 -0
  877. package/src/runtime-semantics/SwitchStatement.mts +221 -0
  878. package/src/runtime-semantics/TaggedTemplateExpression.mts +23 -0
  879. package/src/runtime-semantics/TemplateLiteral.mts +34 -0
  880. package/src/runtime-semantics/This.mts +9 -0
  881. package/src/runtime-semantics/ThrowStatement.mts +22 -0
  882. package/src/runtime-semantics/TrimString.mts +19 -0
  883. package/src/runtime-semantics/TryStatement.mts +120 -0
  884. package/src/runtime-semantics/UnaryExpression.mts +219 -0
  885. package/src/runtime-semantics/Unicode.mts +555 -0
  886. package/src/runtime-semantics/UpdateExpression.mts +126 -0
  887. package/src/runtime-semantics/VariableStatement.mts +72 -0
  888. package/src/runtime-semantics/WithStatement.mts +33 -0
  889. package/src/runtime-semantics/YieldExpression.mts +175 -0
  890. package/src/runtime-semantics/all.mts +108 -0
  891. package/src/static-semantics/BodyText.mts +7 -0
  892. package/src/static-semantics/BoundNames.mts +101 -0
  893. package/src/static-semantics/CharacterValue.mts +92 -0
  894. package/src/static-semantics/CodePointAt.mts +53 -0
  895. package/src/static-semantics/CodePointsToString.mts +16 -0
  896. package/src/static-semantics/ConstructorMethod.mts +10 -0
  897. package/src/static-semantics/ContainsArguments.mts +33 -0
  898. package/src/static-semantics/ContainsExpression.mts +59 -0
  899. package/src/static-semantics/DeclarationPart.mts +5 -0
  900. package/src/static-semantics/ExpectedArgumentCount.mts +26 -0
  901. package/src/static-semantics/ExportEntries.mts +127 -0
  902. package/src/static-semantics/ExportEntriesForModule.mts +63 -0
  903. package/src/static-semantics/FlagText.mts +7 -0
  904. package/src/static-semantics/HasInitializer.mts +5 -0
  905. package/src/static-semantics/HasName.mts +8 -0
  906. package/src/static-semantics/ImportEntries.mts +36 -0
  907. package/src/static-semantics/ImportEntriesForModule.mts +95 -0
  908. package/src/static-semantics/ImportedLocalNames.mts +14 -0
  909. package/src/static-semantics/IsAnonymousFunctionDefinition.mts +18 -0
  910. package/src/static-semantics/IsComputedPropertyKey.mts +7 -0
  911. package/src/static-semantics/IsConstantDeclaration.mts +5 -0
  912. package/src/static-semantics/IsDestructuring.mts +21 -0
  913. package/src/static-semantics/IsFunctionDefinition.mts +15 -0
  914. package/src/static-semantics/IsIdentifierRef.mts +5 -0
  915. package/src/static-semantics/IsInTailPosition.mts +5 -0
  916. package/src/static-semantics/IsSimpleParameterList.mts +23 -0
  917. package/src/static-semantics/IsStatic.mts +10 -0
  918. package/src/static-semantics/IsStrict.mts +7 -0
  919. package/src/static-semantics/IsStringWellFormedUnicode.mts +24 -0
  920. package/src/static-semantics/LexicallyDeclaredNames.mts +26 -0
  921. package/src/static-semantics/LexicallyScopedDeclarations.mts +82 -0
  922. package/src/static-semantics/ModuleRequests.mts +34 -0
  923. package/src/static-semantics/NonConstructorElements.mts +15 -0
  924. package/src/static-semantics/NumericValue.mts +7 -0
  925. package/src/static-semantics/PrivateBoundIdentifiers.mts +23 -0
  926. package/src/static-semantics/PropName.mts +18 -0
  927. package/src/static-semantics/StringToCodePoints.mts +23 -0
  928. package/src/static-semantics/StringValue.mts +19 -0
  929. package/src/static-semantics/TemplateStrings.mts +108 -0
  930. package/src/static-semantics/TopLevelLexicallyDeclaredNames.mts +21 -0
  931. package/src/static-semantics/TopLevelLexicallyScopedDeclarations.mts +23 -0
  932. package/src/static-semantics/TopLevelVarDeclaredNames.mts +26 -0
  933. package/src/static-semantics/TopLevelVarScopedDeclarations.mts +34 -0
  934. package/src/static-semantics/UTF16EncodeCodePoint.mts +17 -0
  935. package/src/static-semantics/UTF16SurrogatePairToCodePoint.mts +12 -0
  936. package/src/static-semantics/VarDeclaredNames.mts +109 -0
  937. package/src/static-semantics/VarScopedDeclarations.mts +115 -0
  938. package/src/static-semantics/all.mts +47 -0
  939. package/src/syntax-error.d.ts +4 -0
  940. package/src/tsconfig.json +11 -0
  941. package/src/value.mts +981 -0
@@ -0,0 +1,1187 @@
1
+ import unicodeCaseFoldingCommon from '@unicode/unicode-16.0.0/Case_Folding/C/symbols.js';
2
+ import unicodeCaseFoldingSimple from '@unicode/unicode-16.0.0/Case_Folding/S/symbols.js';
3
+ import { JSStringValue, UndefinedValue, Value } from '../value.mts';
4
+ import { Assert, isNonNegativeInteger } from '../abstract-ops/all.mts';
5
+ import { CharacterValue, StringToCodePoints } from '../static-semantics/all.mts';
6
+ import { X } from '../completion.mts';
7
+ import { isLineTerminator, isWhitespace, isDecimalDigit } from '../parser/Lexer.mts';
8
+ import { OutOfRange } from '../helpers.mts';
9
+ import type { ParseNode } from '../parser/ParseNode.mts';
10
+ import {
11
+ UnicodeMatchProperty,
12
+ UnicodeMatchPropertyValue,
13
+ UnicodeGeneralCategoryValues,
14
+ BinaryUnicodeProperties,
15
+ NonbinaryUnicodeProperties,
16
+ getUnicodePropertyValueSet,
17
+ } from './all.mts';
18
+
19
+ enum Direction {
20
+ Forward = 1,
21
+ Backward = -1,
22
+ Unspecified = Infinity,
23
+ }
24
+ /** https://tc39.es/ecma262/#sec-pattern */
25
+ class State {
26
+ endIndex: number;
27
+
28
+ captures;
29
+
30
+ constructor(endIndex: number, captures: (UndefinedValue | Range)[]) {
31
+ this.endIndex = endIndex;
32
+ this.captures = captures;
33
+ }
34
+ }
35
+
36
+ export { State as RegExpState };
37
+
38
+ type Matcher = (x: State, c: Continuation) => State | 'failure';
39
+ type Continuation = (y: State) => State | 'failure';
40
+ function isContinuation(v: unknown): v is Continuation {
41
+ return typeof v === 'function' && v.length === 1;
42
+ }
43
+
44
+ abstract class CharSet {
45
+ abstract has(c: number): boolean;
46
+
47
+ union(other: CharSet) {
48
+ const concrete = new Set<number>();
49
+ const fns = new Set<CharTester>();
50
+ const add = (cs: CharSet) => {
51
+ if (cs instanceof UnionCharSet) {
52
+ cs.fns.forEach((fn) => {
53
+ fns.add(fn);
54
+ });
55
+ cs.concrete!.forEach((c) => {
56
+ concrete.add(c);
57
+ });
58
+ } else if (cs instanceof VirtualCharSet) {
59
+ fns.add(cs.fn);
60
+ } else if (cs instanceof ConcreteCharSet) {
61
+ cs.concrete!.forEach((c) => {
62
+ concrete.add(c);
63
+ });
64
+ }
65
+ };
66
+ add(this);
67
+ add(other);
68
+ return new UnionCharSet(concrete, fns);
69
+ }
70
+ }
71
+
72
+ type CharTester = (char: number) => boolean;
73
+
74
+ class UnionCharSet extends CharSet {
75
+ concrete;
76
+
77
+ fns;
78
+
79
+ constructor(concrete: Set<number>, fns: Set<CharTester>) {
80
+ super();
81
+
82
+ this.concrete = concrete;
83
+ this.fns = fns;
84
+ }
85
+
86
+ has(c: number) {
87
+ if (this.concrete.has(c)) {
88
+ return true;
89
+ }
90
+ for (const fn of this.fns) {
91
+ if (fn(c)) {
92
+ return true;
93
+ }
94
+ }
95
+ return false;
96
+ }
97
+ }
98
+
99
+ class ConcreteCharSet extends CharSet {
100
+ concrete;
101
+
102
+ constructor(items: Iterable<number>) {
103
+ super();
104
+ this.concrete = items instanceof Set ? items : new Set(items);
105
+ }
106
+
107
+ has(c: number) {
108
+ return this.concrete.has(c);
109
+ }
110
+
111
+ get size() {
112
+ return this.concrete.size;
113
+ }
114
+
115
+ first() {
116
+ Assert(this.concrete.size >= 1);
117
+ return this.concrete.values().next().value;
118
+ }
119
+ }
120
+
121
+ class VirtualCharSet extends CharSet {
122
+ fn;
123
+
124
+ constructor(fn: CharTester) {
125
+ super();
126
+ this.fn = fn;
127
+ }
128
+
129
+ has(c: number) {
130
+ return this.fn(c);
131
+ }
132
+ }
133
+
134
+ class Range {
135
+ startIndex;
136
+
137
+ endIndex;
138
+
139
+ constructor(startIndex: number, endIndex: number) {
140
+ Assert(startIndex <= endIndex);
141
+ this.startIndex = startIndex;
142
+ this.endIndex = endIndex;
143
+ }
144
+ }
145
+
146
+ /** https://tc39.es/ecma262/#sec-pattern */
147
+ // Pattern :: Disjunction
148
+ export function Evaluate_Pattern(Pattern: ParseNode.RegExp.Pattern, flags: string) {
149
+ // The descriptions below use the following variables:
150
+ // * Input is a List consisting of all of the characters, in order, of the String being matched
151
+ // by the regular expression pattern. Each character is either a code unit or a code point,
152
+ // depending upon the kind of pattern involved. The notation Input[n] means the nth character
153
+ // of Input, where n can range between 0 (inclusive) and InputLength (exclusive).
154
+ // * InputLength is the number of characters in Input.
155
+ // * NcapturingParens is the total number of left-capturing parentheses (i.e. the total number of
156
+ // Atom :: `(` GroupSpecifier Disjunction `)` Parse Nodes) in the pattern. A left-capturing parenthesis
157
+ // is any `(` pattern character that is matched by the `(` terminal of the Atom :: `(` GroupSpecifier Disjunction `)`
158
+ // production.
159
+ // * DotAll is true if the RegExp object's [[OriginalFlags]] internal slot contains "s" and otherwise is false.
160
+ // * IgnoreCase is true if the RegExp object's [[OriginalFlags]] internal slot contains "i" and otherwise is false.
161
+ // * Multiline is true if the RegExp object's [[OriginalFlags]] internal slot contains "m" and otherwise is false.
162
+ // * Unicode is true if the RegExp object's [[OriginalFlags]] internal slot contains "u" and otherwise is false.
163
+ let Input: number[];
164
+ let InputLength: number;
165
+ const NcapturingParens = Pattern.capturingGroups.length;
166
+ const DotAll = flags.includes('s');
167
+ const IgnoreCase = flags.includes('i');
168
+ const Multiline = flags.includes('m');
169
+ const Unicode = flags.includes('u');
170
+
171
+ {
172
+ // 1. Evaluate Disjunction with +1 as its direction argument to obtain a Matcher m.
173
+ const m = Evaluate(Pattern.Disjunction, +1);
174
+ // 2. Return a new abstract closure with parameters (str, index) that captures m and performs the following steps when called:
175
+ return (str: JSStringValue, index: number) => {
176
+ // a. Assert: Type(str) is String.
177
+ Assert(str instanceof JSStringValue);
178
+ // b. Assert: index is a non-negative integer which is ≤ the length of str.
179
+ Assert(isNonNegativeInteger(index) && index <= str.stringValue().length);
180
+ // c. If Unicode is true, let Input be a List consisting of the sequence of code points of ! StringToCodePoints(str).
181
+ // Otherwise, let Input be a List consisting of the sequence of code units that are the elements of str.
182
+ // Input will be used throughout the algorithms in 21.2.2. Each element of Input is considered to be a character.
183
+ if (Unicode) {
184
+ Input = X(StringToCodePoints(str.stringValue()));
185
+ } else {
186
+ Input = str.stringValue().split('').map((c) => c.charCodeAt(0));
187
+ }
188
+ // d. Let InputLength be the number of characters contained in Input. This variable will be used throughout the algorithms in 21.2.2.
189
+ InputLength = Input.length;
190
+ // e. Let listIndex be the index into Input of the character that was obtained from element index of str.
191
+ const listIndex = index;
192
+ // f. Let c be a new Continuation with parameters (y) that captures nothing and performs the following steps when called:
193
+ const c = (y: State) => {
194
+ // i. Assert: y is a State.
195
+ Assert(y instanceof State);
196
+ // ii. Return y.
197
+ return y;
198
+ };
199
+ // g. Let cap be a List of NcapturingParens undefined values, indexed 1 through NcapturingParens.
200
+ const cap = Array.from({ length: NcapturingParens + 1 }, () => Value.undefined);
201
+ // h. Let x be the State (listIndex, cap).
202
+ const x = new State(listIndex, cap);
203
+ // i. Call m(x, c) and return its result.
204
+ return m(x, c);
205
+ };
206
+ }
207
+ type Args = [direction: Direction];
208
+ function Evaluate(node: ParseNode.RegExp.Disjunction | ParseNode.RegExp.Alternative | ParseNode.RegExp.Term | ParseNode.RegExp.Assertion | ParseNode.RegExp.Atom | ParseNode.RegExp.AtomEscape, ...args: Args): Matcher
209
+ function Evaluate(node: ParseNode.RegExp.CharacterEscape | ParseNode.RegExp.DecimalEscape, ...args: Args): number
210
+ function Evaluate(node: ParseNode.RegExp.CharacterClassEscape | ParseNode.RegExp.UnicodePropertyValueExpression | ParseNode.RegExp.ClassAtom | ParseNode.RegExp.ClassEscape, ...args: Args): CharSet
211
+ function Evaluate(node: ParseNode.RegExp.CharacterClass, ...args: Args): CharacterClassResult
212
+ function Evaluate(node: ParseNode.RegExp.Quantifier, ...args: Args): QuantifierResult
213
+ function Evaluate(node: ParseNode.RegExp.RegExpParseNode, ...args: Args): number | CharSet | Matcher | CharacterClassResult | QuantifierResult {
214
+ switch (node.type) {
215
+ case 'Disjunction':
216
+ return Evaluate_Disjunction(node, ...args);
217
+ case 'Alternative':
218
+ return Evaluate_Alternative(node, ...args);
219
+ case 'Term':
220
+ return Evaluate_Term(node, ...args);
221
+ case 'Assertion':
222
+ return Evaluate_Assertion(node);
223
+ case 'Quantifier':
224
+ return Evaluate_Quantifier(node);
225
+ case 'Atom':
226
+ return Evaluate_Atom(node, ...args);
227
+ case 'AtomEscape':
228
+ return Evaluate_AtomEscape(node, ...args);
229
+ case 'CharacterEscape':
230
+ return Evaluate_CharacterEscape(node);
231
+ case 'DecimalEscape':
232
+ return Evaluate_DecimalEscape(node);
233
+ case 'CharacterClassEscape':
234
+ return Evaluate_CharacterClassEscape(node);
235
+ case 'UnicodePropertyValueExpression':
236
+ return Evaluate_UnicodePropertyValueExpression(node);
237
+ case 'CharacterClass':
238
+ return Evaluate_CharacterClass(node);
239
+ case 'ClassAtom':
240
+ return Evaluate_ClassAtom(node);
241
+ case 'ClassEscape':
242
+ return Evaluate_ClassEscape(node);
243
+ default:
244
+ throw new OutOfRange('Evaluate', node);
245
+ }
246
+ }
247
+
248
+ /** https://tc39.es/ecma262/#sec-disjunction */
249
+ // Disjunction ::
250
+ // Alternative
251
+ // Alternative `|` Disjunction
252
+ function Evaluate_Disjunction({ Alternative, Disjunction }: ParseNode.RegExp.Disjunction, direction: Direction): Matcher {
253
+ if (!Disjunction) {
254
+ // 1. Evaluate Alternative with argument direction to obtain a Matcher m.
255
+ const m = Evaluate(Alternative, direction);
256
+ // 2. Return m.
257
+ return m;
258
+ }
259
+ // 1. Evaluate Alternative with argument direction to obtain a Matcher m1.
260
+ const m1 = Evaluate(Alternative, direction);
261
+ // 2. Evaluate Disjunction with argument direction to obtain a Matcher m2.
262
+ const m2 = Evaluate(Disjunction, direction);
263
+ // 3. Return a new Matcher with parameters (x, c) that captures m1 and m2 and performs the following steps when called:
264
+ return (x, c) => {
265
+ // a. Assert: x is a State.
266
+ Assert(x instanceof State);
267
+ // b. Assert: c is a Continuation.
268
+ Assert(isContinuation(c));
269
+ // c. Call m1(x, c) and let r be its result.
270
+ const r = m1(x, c);
271
+ // d. If r is not failure, return r.
272
+ if (r !== 'failure') {
273
+ return r;
274
+ }
275
+ // e. Call m2(x, c) and return its result.
276
+ return m2(x, c);
277
+ };
278
+ }
279
+
280
+ /** https://tc39.es/ecma262/#sec-alternative */
281
+ // Alternative ::
282
+ // [empty]
283
+ // Alternative Term
284
+ function Evaluate_Alternative({ Alternative, Term }: ParseNode.RegExp.Alternative, direction: Direction): Matcher {
285
+ if (!Alternative && !Term) {
286
+ // 1. Return a new Matcher with parameters (x, c) that captures nothing and performs the following steps when called:
287
+ return (x, c) => {
288
+ // 1. Assert: x is a State.
289
+ Assert(x instanceof State);
290
+ // 2. Assert: c is a Continuation.
291
+ Assert(isContinuation(c));
292
+ // 3. Call c(x) and return its result.
293
+ return c(x);
294
+ };
295
+ }
296
+ // 1. Evaluate Alternative with argument direction to obtain a Matcher m1.
297
+ const m1 = Evaluate(Alternative!, direction);
298
+ // 2. Evaluate Term with argument direction to obtain a Matcher m2.
299
+ const m2 = Evaluate(Term!, direction);
300
+ // 3. If direction is equal to +1, then
301
+ if (direction === +1) {
302
+ // a. Return a new Matcher with parameters (x, c) that captures m1 and m2 and performs the following steps when called:
303
+ return (x, c) => {
304
+ // i. Assert: x is a State.
305
+ Assert(x instanceof State);
306
+ // ii. Assert: c is a Continuation.
307
+ Assert(isContinuation(c));
308
+ // iii. Let d be a new Continuation with parameters (y) that captures c and m2 and performs the following steps when called:
309
+ const d = (y: State) => {
310
+ // 1. Assert: y is a State.
311
+ Assert(y instanceof State);
312
+ // 2. Call m2(y, c) and return its result.
313
+ return m2(y, c);
314
+ };
315
+ // iv. Call m1(x, d) and return its result.
316
+ return m1(x, d);
317
+ };
318
+ } else { // 4. Else,
319
+ // a. Assert: direction is equal to -1.
320
+ Assert(direction === -1);
321
+ // b. Return a new Matcher with parameters (x, c) that captures m1 and m2 and performs the following steps when called:
322
+ return (x, c) => {
323
+ // i. Assert: x is a State.
324
+ Assert(x instanceof State);
325
+ // ii. Assert: c is a Continuation.
326
+ Assert(isContinuation(c));
327
+ // iii. Let d be a new Continuation with parameters (y) that captures c and m1 and performs the following steps when called:
328
+ const d = (y: State) => {
329
+ // 1. Assert: y is a State.
330
+ Assert(y instanceof State);
331
+ // 2. Call m1(y, c) and return its result.
332
+ return m1(y, c);
333
+ };
334
+ // iv. Call m2(x, d) and return its result.
335
+ return m2(x, d);
336
+ };
337
+ }
338
+ }
339
+
340
+ /** https://tc39.es/ecma262/#sec-term */
341
+ // Term ::
342
+ // Assertion
343
+ // Atom
344
+ // Atom Quantifier
345
+ function Evaluate_Term(Term: ParseNode.RegExp.Term_Atom, direction: Direction): Matcher {
346
+ const { Atom, Quantifier } = Term;
347
+ if (!Quantifier) {
348
+ // 1. Return the Matcher that is the result of evaluating Atom with argument direction.
349
+ return Evaluate(Atom, direction);
350
+ }
351
+ // 1. Evaluate Atom with argument direction to obtain a Matcher m.
352
+ const m = Evaluate(Atom, direction);
353
+ // 2. Evaluate Quantifier to obtain the three results: an integer min, an integer (or ∞) max, and Boolean greedy.
354
+ const [min, max, greedy] = Evaluate(Quantifier, Direction.Unspecified);
355
+ // 3. Assert: If max is finite, then max is not less than min.
356
+ Assert(!Number.isFinite(max) || (max >= min));
357
+ // 4. Let parenIndex be the number of left-capturing parentheses in the entire regular expression that occur to the
358
+ // left of this Term. This is the total number of Atom :: `(` GroupSpecifier Disjunction `)` Parse Nodes prior to
359
+ // or enclosing this Term.
360
+ const parenIndex = Term.capturingParenthesesBefore;
361
+ // 5. Let parenCount be the number of left-capturing parentheses in Atom. This is the total number of
362
+ // Atom :: `(` GroupSpecifier Disjunction `)` Parse Nodes enclosed by Atom.
363
+ const parenCount = (Atom as ParseNode.RegExp.Atom_Dot | ParseNode.RegExp.Atom_Group).enclosedCapturingParentheses;
364
+ // 6. Return a new Matcher with parameters (x, c) that captures m, min, max, greedy, parenIndex, and parenCount and performs the following steps when called:
365
+ return (x, c) => {
366
+ // a. Assert: x is a State.
367
+ Assert(x instanceof State);
368
+ // b. Assert: c is a Continuation.
369
+ Assert(isContinuation(c));
370
+ // c. Call RepeatMatcher(m, min, max, greedy, x, c, parenIndex, parenCount) and return its result.
371
+ return RepeatMatcher(m, min, max, greedy, x, c, parenIndex, parenCount);
372
+ };
373
+ }
374
+
375
+ /** https://tc39.es/ecma262/#sec-runtime-semantics-repeatmatcher-abstract-operation */
376
+ function RepeatMatcher(m: Matcher, min: number, max: number, greedy: boolean, x: State, c: Continuation, parenIndex: number, parenCount: number) {
377
+ // 1. If max is zero, return c(x).
378
+ if (max === 0) {
379
+ return c(x);
380
+ }
381
+ // 2. Let d be a new Continuation with parameters (y) that captures m, min, max, greedy, x, c, parenIndex, and parenCount and performs the following steps when called:
382
+ const d = (y: State) => {
383
+ // a. Assert: y is a State.
384
+ Assert(y instanceof State);
385
+ // b. If min is zero and y's endIndex is equal to x's endIndex, return failure.
386
+ if (min === 0 && y.endIndex === x.endIndex) {
387
+ return 'failure';
388
+ }
389
+ // c. If min is zero, let min2 be zero; otherwise let min2 be min - 1.
390
+ let min2;
391
+ if (min === 0) {
392
+ min2 = 0;
393
+ } else {
394
+ min2 = min - 1;
395
+ }
396
+ // d. If max is ∞, let max2 be ∞; otherwise let max2 be max - 1.
397
+ let max2;
398
+ if (max === Infinity) {
399
+ max2 = Infinity;
400
+ } else {
401
+ max2 = max - 1;
402
+ }
403
+ // e. Call RepeatMatcher(m, min2, max2, greedy, y, c, parenIndex, parenCount) and return its result.
404
+ return RepeatMatcher(m, min2, max2, greedy, y, c, parenIndex, parenCount);
405
+ };
406
+ // 3. Let cap be a copy of x's captures List.
407
+ const cap = [...x.captures];
408
+ // 4. For each integer k that satisfies parenIndex < k and k ≤ parenIndex + parenCount, set cap[k] to undefined.
409
+ for (let k = parenIndex + 1; k <= parenIndex + parenCount; k += 1) {
410
+ cap[k] = Value.undefined;
411
+ }
412
+ // 5. Let e be x's endIndex.
413
+ const e = x.endIndex;
414
+ // 6. Let xr be the State (e, cap).
415
+ const xr = new State(e, cap);
416
+ // 7. If min is not zero, return m(xr, d).
417
+ if (min !== 0) {
418
+ return m(xr, d);
419
+ }
420
+ // 8. If greedy is false, then
421
+ if (greedy === false) {
422
+ // a. Call c(x) and let z be its result.
423
+ const z = c(x);
424
+ // b. If z is not failure, return z.
425
+ if (z !== 'failure') {
426
+ return z;
427
+ }
428
+ // c. Call m(xr, d) and return its result.
429
+ return m(xr, d);
430
+ }
431
+ // 9. Call m(xr, d) and let z be its result.
432
+ const z = m(xr, d);
433
+ // 10. If z is not failure, return z.
434
+ if (z !== 'failure') {
435
+ return z;
436
+ }
437
+ // 11. Call c(x) and return its result.
438
+ return c(x);
439
+ }
440
+
441
+ /** https://tc39.es/ecma262/#sec-assertion */
442
+ // Assertion ::
443
+ // `^`
444
+ // `$`
445
+ // `\` `b`
446
+ // `\` `B`
447
+ // `(` `?` `=` Disjunction `)`
448
+ // `(` `?` `!` Disjunction `)`
449
+ // `(` `?` `<=` Disjunction `)`
450
+ // `(` `?` `<!` Disjunction `)`
451
+ function Evaluate_Assertion({ subtype, Disjunction }: ParseNode.RegExp.Assertion): Matcher {
452
+ switch (subtype) {
453
+ case '^':
454
+ // 1. Return a new Matcher with parameters (x, c) that captures nothing and performs the following steps when called:
455
+ return (x, c) => {
456
+ // a. Assert: x is a State.
457
+ Assert(x instanceof State);
458
+ // b. Assert: c is a Continuation.
459
+ Assert(isContinuation(c));
460
+ // c. Let e be x's endIndex.
461
+ const e = x.endIndex;
462
+ // d. If e is zero, or if Multiline is true and the character Input[e - 1] is one of LineTerminator, then
463
+ if (e === 0 || (Multiline && isLineTerminator(String.fromCodePoint(Input[e - 1])))) {
464
+ // i. Call c(x) and return its result.
465
+ return c(x);
466
+ }
467
+ // e. Return failure.
468
+ return 'failure';
469
+ };
470
+ case '$':
471
+ // 1. Return a new Matcher with parameters (x, c) that captures nothing and performs the following steps when called:
472
+ return (x, c) => {
473
+ // a. Assert: x is a State.
474
+ Assert(x instanceof State);
475
+ // b. Assert: c is a Continuation.
476
+ Assert(isContinuation(c));
477
+ // c. Let e be x's endIndex.
478
+ const e = x.endIndex;
479
+ // d. If e is equal to InputLength, or if Multiline is true and the character Input[e] is one of LineTerminator, then
480
+ if (e === InputLength || (Multiline && isLineTerminator(String.fromCodePoint(Input[e])))) {
481
+ // i. Call c(x) and return its result.
482
+ return c(x);
483
+ }
484
+ // e. Return failure.
485
+ return 'failure';
486
+ };
487
+ case 'b':
488
+ // 1. Return a new Matcher with parameters (x, c) that captures nothing and performs the following steps when called:
489
+ return (x, c) => {
490
+ // a. Assert: x is a State.
491
+ Assert(x instanceof State);
492
+ // b. Assert: c is a Continuation.
493
+ Assert(isContinuation(c));
494
+ // c. Let e be x's endIndex.
495
+ const e = x.endIndex;
496
+ // d. Call IsWordChar(e - 1) and let a be the Boolean result.
497
+ const a = IsWordChar(e - 1);
498
+ // e. Call IsWordChar(e) and let b be the Boolean result.
499
+ const b = IsWordChar(e);
500
+ // f. If a is true and b is false, or if a is false and b is true, then
501
+ if ((a && !b) || (!a && b)) {
502
+ // i. Call c(x) and return its result.
503
+ return c(x);
504
+ }
505
+ // g. Return failure.
506
+ return 'failure';
507
+ };
508
+ case 'B':
509
+ // 1. Return a new Matcher with parameters (x, c) that captures nothing and performs the following steps when called:
510
+ return (x, c) => {
511
+ // a. Assert: x is a State.
512
+ Assert(x instanceof State);
513
+ // b. Assert: c is a Continuation.
514
+ Assert(isContinuation(c));
515
+ // c. Let e be x's endIndex.
516
+ const e = x.endIndex;
517
+ // d. Call IsWordChar(e - 1) and let a be the Boolean result.
518
+ const a = IsWordChar(e - 1);
519
+ // e. Call IsWordChar(e) and let b be the Boolean result.
520
+ const b = IsWordChar(e);
521
+ // f. If a is true and b is true, or if a is false and b is false, then
522
+ if ((a && b) || (!a && !b)) {
523
+ // i. Call c(x) and return its result.
524
+ return c(x);
525
+ }
526
+ // g. Return failure.
527
+ return 'failure';
528
+ };
529
+ case '?=': {
530
+ // 1. Evaluate Disjunction with +1 as its direction argument to obtain a Matcher m.
531
+ const m = Evaluate(Disjunction!, +1 as Direction.Forward);
532
+ // 2. Return a new Matcher with parameters (x, c) that captures m and performs the following steps when called:
533
+ return (x, c) => {
534
+ // a. Assert: x is a State.
535
+ Assert(x instanceof State);
536
+ // b. Assert: c is a Continuation.
537
+ Assert(isContinuation(c));
538
+ // c. Let d be a new Continuation with parameters (y) that captures nothing and performs the following steps when called:
539
+ const d = (y: State) => {
540
+ // i. Assert: y is a State.
541
+ Assert(y instanceof State);
542
+ // ii. Return y.
543
+ return y;
544
+ };
545
+ // d. Call m(x, d) and let r be its result.
546
+ const r = m(x, d);
547
+ // e. If r is failure, return failure.
548
+ if (r === 'failure') {
549
+ return 'failure';
550
+ }
551
+ // f. Let y be r's State.
552
+ const y = r;
553
+ // g. Let cap be y's captures List.
554
+ const cap = y.captures;
555
+ // h. Let xe be x's endIndex.
556
+ const xe = x.endIndex;
557
+ // i. Let z be the State (xe, cap).
558
+ const z = new State(xe, cap);
559
+ // j. Call c(z) and return its result.
560
+ return c(z);
561
+ };
562
+ }
563
+ case '?!': {
564
+ // 1. Evaluate Disjunction with +1 as its direction argument to obtain a Matcher m.
565
+ const m = Evaluate(Disjunction!, +1);
566
+ // 2. Return a new Matcher with parameters (x, c) that captures m and performs the following steps when called:
567
+ return (x, c) => {
568
+ // a. Assert: x is a State.
569
+ Assert(x instanceof State);
570
+ // b. Assert: c is a Continuation.
571
+ Assert(isContinuation(c));
572
+ // c. Let d be a new Continuation with parameters (y) that captures nothing and performs the following steps when called:
573
+ const d = (y: State) => {
574
+ // i. Assert: y is a State.
575
+ Assert(y instanceof State);
576
+ // ii. Return y.
577
+ return y;
578
+ };
579
+ // d. Call m(x, d) and let r be its result.
580
+ const r = m(x, d);
581
+ // e. If r is not failure, return failure.
582
+ if (r !== 'failure') {
583
+ return 'failure';
584
+ }
585
+ // f. Call c(x) and return its result.
586
+ return c(x);
587
+ };
588
+ }
589
+ case '?<=': {
590
+ // 1. Evaluate Disjunction with -1 as its direction argument to obtain a Matcher m.
591
+ const m = Evaluate(Disjunction!, -1);
592
+ // 2. Return a new Matcher with parameters (x, c) that captures m and performs the following steps when called:
593
+ return (x, c) => {
594
+ // a. Assert: x is a State.
595
+ Assert(x instanceof State);
596
+ // b. Assert: c is a Continuation.
597
+ Assert(isContinuation(c));
598
+ // c. Let d be a new Continuation with parameters (y) that captures nothing and performs the following steps when called:
599
+ const d = (y: State) => {
600
+ // i. Assert: y is a State.
601
+ Assert(y instanceof State);
602
+ // ii. Return y.
603
+ return y;
604
+ };
605
+ // d. Call m(x, d) and let r be its result.
606
+ const r = m(x, d);
607
+ // e. If r is failure, return failure.
608
+ if (r === 'failure') {
609
+ return 'failure';
610
+ }
611
+ // f. Let y be r's State.
612
+ const y = r;
613
+ // g. Let cap be y's captures List.
614
+ const cap = y.captures;
615
+ // h. Let xe be x's endIndex.
616
+ const xe = x.endIndex;
617
+ // i. Let z be the State (xe, cap).
618
+ const z = new State(xe, cap);
619
+ // j. Call c(z) and return its result.
620
+ return c(z);
621
+ };
622
+ }
623
+ case '?<!': {
624
+ // 1. Evaluate Disjunction with -1 as its direction argument to obtain a Matcher m.
625
+ const m = Evaluate(Disjunction!, -1);
626
+ // 2. Return a new Matcher with parameters (x, c) that captures m and performs the following steps when called:
627
+ return (x, c) => {
628
+ // a. Assert: x is a State.
629
+ Assert(x instanceof State);
630
+ // b. Assert: c is a Continuation.
631
+ Assert(isContinuation(c));
632
+ // c. Let d be a new Continuation with parameters (y) that captures nothing and performs the following steps when called:
633
+ const d = (y: State) => {
634
+ // i. Assert: y is a State.
635
+ Assert(y instanceof State);
636
+ // ii. Return y.
637
+ return y;
638
+ };
639
+ // d. Call m(x, d) and let r be its result.
640
+ const r = m(x, d);
641
+ // e. If r is not failure, return failure.
642
+ if (r !== 'failure') {
643
+ return 'failure';
644
+ }
645
+ // f. Call c(x) and return its result.
646
+ return c(x);
647
+ };
648
+ }
649
+ default:
650
+ throw new OutOfRange('Evaluate_Assertion', subtype);
651
+ }
652
+ }
653
+
654
+ /** https://tc39.es/ecma262/#sec-runtime-semantics-wordcharacters-abstract-operation */
655
+ function WordCharacters() {
656
+ // 1. Let A be a set of characters containing the sixty-three characters:
657
+ // a b c d e f g h i j k l m n o p q r s t u v w x y z
658
+ // A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
659
+ // 0 1 2 3 4 5 6 7 8 9 _
660
+ // 2. Let U be an empty set.
661
+ // 3. For each character c not in set A where Canonicalize(c) is in A, add c to U.
662
+ // 4. Assert: Unless Unicode and IgnoreCase are both true, U is empty.
663
+ // 5. Add the characters in set U to set A.
664
+ // Return A.
665
+ const A = new ConcreteCharSet([
666
+ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
667
+ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
668
+ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '_',
669
+ ].map((c) => c.codePointAt(0)!));
670
+ if (Unicode && IgnoreCase) {
671
+ return new VirtualCharSet((c) => {
672
+ if (A.has(c)) {
673
+ return true;
674
+ }
675
+ if (A.has(Canonicalize(c))) {
676
+ return true;
677
+ }
678
+ return false;
679
+ });
680
+ }
681
+ return A;
682
+ }
683
+
684
+ /** https://tc39.es/ecma262/#sec-runtime-semantics-iswordchar-abstract-operation */
685
+ function IsWordChar(e: number) {
686
+ // 1. If e is -1 or e is InputLength, return false.
687
+ if (e === -1 || e === InputLength) {
688
+ return false;
689
+ }
690
+ // 2. Let c be the character Input[e].
691
+ const c = Input[e];
692
+ // 3. Let wordChars be the result of ! WordCharacters().
693
+ const wordChars = X(WordCharacters());
694
+ // 4. If c is in wordChars, return true.
695
+ if (wordChars.has(c)) {
696
+ return true;
697
+ }
698
+ // 5. Return false.
699
+ return false;
700
+ }
701
+
702
+ type QuantifierResult = [
703
+ Min: number,
704
+ Max: number,
705
+ Greedy: boolean,
706
+ ]
707
+ /** https://tc39.es/ecma262/#sec-quantifier */
708
+ // Quantifier ::
709
+ // QuantifierPrefix
710
+ // QuantifierPrefix `?`
711
+ function Evaluate_Quantifier({ QuantifierPrefix, greedy }: ParseNode.RegExp.Quantifier): QuantifierResult {
712
+ switch (QuantifierPrefix) {
713
+ case '*':
714
+ return [0, Infinity, greedy];
715
+ case '+':
716
+ return [1, Infinity, greedy];
717
+ case '?':
718
+ return [0, 1, greedy];
719
+ default:
720
+ break;
721
+ }
722
+ const { DecimalDigits_a, DecimalDigits_b } = QuantifierPrefix!;
723
+ return [DecimalDigits_a, DecimalDigits_b || DecimalDigits_a, greedy];
724
+ }
725
+
726
+ /** https://tc39.es/ecma262/#sec-atom */
727
+ // Atom ::
728
+ // PatternCharacter
729
+ // `.`
730
+ // `\` AtomEscape
731
+ // CharacterClass
732
+ // `(` GroupSpecifier Disjunction `)`
733
+ // `(` `?` `:` Disjunction `)`
734
+ function Evaluate_Atom(Atom: ParseNode.RegExp.Atom, direction: Direction): Matcher {
735
+ switch (true) {
736
+ case !!('PatternCharacter' in Atom && Atom.PatternCharacter): {
737
+ // 1. Let ch be the character matched by PatternCharacter.
738
+ const ch = Atom.PatternCharacter.codePointAt(0)!;
739
+ // 2. Let A be a one-element CharSet containing the character ch.
740
+ const A = new ConcreteCharSet([Canonicalize(ch)]);
741
+ // 3. Call CharacterSetMatcher(A, false, direction) and return its Matcher result.
742
+ return CharacterSetMatcher(A, false, direction);
743
+ }
744
+ case ('subtype' in Atom && Atom.subtype === '.'): {
745
+ let A;
746
+ // 1. If DotAll is true, then
747
+ if (DotAll) {
748
+ // a. Let A be the set of all characters.
749
+ A = new VirtualCharSet((_c) => true);
750
+ } else {
751
+ // 2. Otherwise, let A be the set of all characters except LineTerminator.
752
+ A = new VirtualCharSet((c) => !isLineTerminator(String.fromCodePoint(c)));
753
+ }
754
+ // 3. Call CharacterSetMatcher(A, false, direction) and return its Matcher result.
755
+ return CharacterSetMatcher(A, false, direction);
756
+ }
757
+ case !!('CharacterClass' in Atom && Atom.CharacterClass): {
758
+ // 1. Evaluate CharacterClass to obtain a CharSet A and a Boolean invert.
759
+ const { A, invert } = Evaluate(Atom.CharacterClass, Direction.Unspecified);
760
+ // 2. Call CharacterSetMatcher(A, invert, direction) and return its Matcher result.
761
+ return CharacterSetMatcher(A, invert, direction);
762
+ }
763
+ case ('capturing' in Atom && Atom.capturing): {
764
+ // 1. Evaluate Disjunction with argument direction to obtain a Matcher m.
765
+ const m = Evaluate(Atom.Disjunction!, direction);
766
+ // 2. Let parenIndex be the number of left-capturing parentheses in the entire regular expression
767
+ // that occur to the left of this Atom. This is the total number of Atom :: `(` GroupSpecifier Disjunction `)`
768
+ // Parse Nodes prior to or enclosing this Atom.
769
+ const parenIndex = Atom.capturingParenthesesBefore;
770
+ // 3. Return a new Matcher with parameters (x, c) that captures direction, m, and parenIndex and performs the following steps when called:
771
+ return (x, c) => {
772
+ // a. Assert: x is a State.
773
+ Assert(x instanceof State);
774
+ // b. Assert: c is a Continuation.
775
+ Assert(isContinuation(c));
776
+ // c. Let d be a new Continuation with parameters (y) that captures x, c, direction, and parenIndex and performs the following steps when called:
777
+ const d = (y: State) => {
778
+ // i. Assert: y is a State.
779
+ Assert(y instanceof State);
780
+ // ii. Let cap be a copy of y's captures List.
781
+ const cap = [...y.captures];
782
+ // iii. Let xe be x's endIndex.
783
+ const xe = x.endIndex;
784
+ // iv. Let ye be y's endIndex.
785
+ const ye = y.endIndex;
786
+ let s;
787
+ // v. If direction is equal to +1, then
788
+ if (direction === +1) {
789
+ // 1. Assert: xe ≤ ye.
790
+ Assert(xe <= ye);
791
+ // 2. Let r be the Range (xe, ye).
792
+ s = new Range(xe, ye);
793
+ } else { // vi. Else,
794
+ // 1. Assert: direction is equal to -1.
795
+ Assert(direction === -1);
796
+ // 2. Assert: ye ≤ xe.
797
+ Assert(ye <= xe);
798
+ // 3. Let r be the Range (ye, xe).
799
+ s = new Range(ye, xe);
800
+ }
801
+ // vii. Set cap[parenIndex + 1] to s.
802
+ cap[parenIndex + 1] = s;
803
+ // viii. Let z be the State (ye, cap).
804
+ const z = new State(ye, cap);
805
+ // ix. Call c(z) and return its result.
806
+ return c(z);
807
+ };
808
+ // d. Call m(x, d) and return its result.
809
+ return m(x, d);
810
+ };
811
+ }
812
+ case !!('Disjunction' in Atom && Atom.Disjunction):
813
+ return Evaluate(Atom.Disjunction, direction);
814
+ default:
815
+ throw new OutOfRange('Evaluate_Atom', Atom);
816
+ }
817
+ }
818
+
819
+ /** https://tc39.es/ecma262/#sec-runtime-semantics-charactersetmatcher-abstract-operation */
820
+ function CharacterSetMatcher(A: CharSet, invert: boolean, direction: Direction): Matcher {
821
+ Assert(direction !== Direction.Unspecified);
822
+ // 1. Return a new Matcher with parameters (x, c) that captures A, invert, and direction and performs the following steps when called:
823
+ return (x, c) => {
824
+ // a. Assert: x is a State.
825
+ Assert(x instanceof State);
826
+ // b. Assert: c is a Continuation.
827
+ Assert(isContinuation(c));
828
+ // c. Let e be x's endIndex.
829
+ const e = x.endIndex;
830
+ // d. Let f be e + direction.
831
+ const f = e + direction;
832
+ // e. If f < 0 or f > InputLength, return failure.
833
+ if (f < 0 || f > InputLength) {
834
+ return 'failure';
835
+ }
836
+ // f. Let index be min(e, f).
837
+ const index = Math.min(e, f);
838
+ // g. Let ch be the character Input[index].
839
+ const ch = Input[index];
840
+ // h. Let cc be Canonicalize(ch).
841
+ const cc = Canonicalize(ch);
842
+ // i. If invert is false, then
843
+ if (invert === false) {
844
+ // i. If there does not exist a member a of set A such that Canonicalize(a) is cc, return failure.
845
+ if (!A.has(cc)) {
846
+ return 'failure';
847
+ }
848
+ } else { // j. Else
849
+ // i. Assert: invert is true.
850
+ Assert(invert === true);
851
+ // ii. If there exists a member a of set A such that Canonicalize(a) is cc, return failure.
852
+ if (A.has(cc)) {
853
+ return 'failure';
854
+ }
855
+ }
856
+ // k. Let cap be x's captures List.
857
+ const cap = x.captures;
858
+ // Let y be the State (f, cap).
859
+ const y = new State(f, cap);
860
+ // Call c(y) and return its result.
861
+ return c(y);
862
+ };
863
+ }
864
+
865
+ /** https://tc39.es/ecma262/#sec-runtime-semantics-canonicalize-ch */
866
+ function Canonicalize(ch: number): number {
867
+ // 1. If IgnoreCase is false, return ch.
868
+ if (IgnoreCase === false) {
869
+ return ch;
870
+ }
871
+ // 2. If Unicode is true, then
872
+ if (Unicode === true) {
873
+ const s = String.fromCodePoint(ch);
874
+ // a. If the file CaseFolding.txt of the Unicode Character Database provides a simple or common case folding mapping for ch, return the result of applying that mapping to ch.
875
+ if (unicodeCaseFoldingSimple.has(s)) {
876
+ return unicodeCaseFoldingSimple.get(s)!.codePointAt(0)!;
877
+ }
878
+ if (unicodeCaseFoldingCommon.has(s)) {
879
+ return unicodeCaseFoldingCommon.get(s)!.codePointAt(0)!;
880
+ }
881
+ // b. Return ch.
882
+ return ch;
883
+ } else { // 3. Else
884
+ // a. Assert: ch is a UTF-16 code unit.
885
+ // b. Let s be the String value consisting of the single code unit ch.
886
+ const s = String.fromCodePoint(ch);
887
+ // c. Let u be the same result produced as if by performing the algorithm for String.prototype.toUpperCase using s as the this value.
888
+ const u = s.toUpperCase();
889
+ // d. Assert: Type(u) is String.
890
+ Assert(typeof u === 'string');
891
+ // e. If u does not consist of a single code unit, return ch.
892
+ if (u.length !== 1) {
893
+ return ch;
894
+ }
895
+ // f. Let cu be u's single code unit element.
896
+ const cu = u.codePointAt(0)!;
897
+ // g. If the numeric value of ch ≥ 128 and the numeric value of cu < 128, return ch.
898
+ if (ch >= 128 && cu < 128) {
899
+ return ch;
900
+ }
901
+ // h. Return cu.
902
+ return cu;
903
+ }
904
+ }
905
+
906
+ /** https://tc39.es/ecma262/#sec-atomescape */
907
+ // AtomEscape ::
908
+ // DecimalEscape
909
+ // CharacterEscape
910
+ // CharacterClassEscape
911
+ // `k` GroupName
912
+ function Evaluate_AtomEscape(AtomEscape: ParseNode.RegExp.AtomEscape, direction: Direction) {
913
+ switch (true) {
914
+ case !!AtomEscape.DecimalEscape: {
915
+ // 1. Evaluate DecimalEscape to obtain an integer n.
916
+ const n = Evaluate(AtomEscape.DecimalEscape, Direction.Unspecified);
917
+ // 2. Assert: n ≤ NcapturingParens.
918
+ Assert(n <= NcapturingParens);
919
+ // 3. Call BackreferenceMatcher(n, direction) and return its Matcher result.
920
+ return BackreferenceMatcher(n, direction);
921
+ }
922
+ case !!AtomEscape.CharacterEscape: {
923
+ // 1. Evaluate CharacterEscape to obtain a character ch.
924
+ const ch = Evaluate(AtomEscape.CharacterEscape, Direction.Unspecified);
925
+ // 2. Let A be a one-element CharSet containing the character ch.
926
+ const A = new ConcreteCharSet([Canonicalize(ch)]);
927
+ // 3. Call CharacterSetMatcher(A, false, direction) and return its Matcher result.
928
+ return CharacterSetMatcher(A, false, direction);
929
+ }
930
+ case !!AtomEscape.CharacterClassEscape: {
931
+ // 1. Evaluate CharacterClassEscape to obtain a CharSet A.
932
+ const A = Evaluate(AtomEscape.CharacterClassEscape, Direction.Unspecified);
933
+ // 2. Call CharacterSetMatcher(A, false, direction) and return its Matcher result.
934
+ return CharacterSetMatcher(A, false, direction);
935
+ }
936
+ case !!AtomEscape.GroupName: {
937
+ // 1. Search the enclosing Pattern for an instance of a GroupSpecifier for a RegExpIdentifierName which has a StringValue equal to the StringValue of the RegExpIdentifierName contained in GroupName.
938
+ // 2. Assert: A unique such GroupSpecifier is found.
939
+ // 3. Let parenIndex be the number of left-capturing parentheses in the entire regular expression that occur to the left of the located GroupSpecifier. This is the total number of Atom :: `(` GroupSpecifier Disjunction `)` Parse Nodes prior to or enclosing the located GroupSpecifier.
940
+ const parenIndex = Pattern.groupSpecifiers.get(AtomEscape.GroupName);
941
+ Assert(parenIndex !== undefined);
942
+ // 4. Call BackreferenceMatcher(parenIndex, direction) and return its Matcher result.
943
+ return BackreferenceMatcher(parenIndex + 1, direction);
944
+ }
945
+ default:
946
+ throw new OutOfRange('Evaluate_AtomEscape', AtomEscape);
947
+ }
948
+ }
949
+
950
+ /** https://tc39.es/ecma262/#sec-backreference-matcher */
951
+ function BackreferenceMatcher(n: number, direction: Direction): Matcher {
952
+ Assert(direction !== Direction.Unspecified);
953
+ // 1. Return a new Matcher with parameters (x, c) that captures n and direction and performs the following steps when called:
954
+ return (x, c) => {
955
+ // a. Assert: x is a State.
956
+ Assert(x instanceof State);
957
+ // b. Assert: c is a Continuation.
958
+ Assert(isContinuation(c));
959
+ // c. Let cap be x's captures List.
960
+ const cap = x.captures;
961
+ // d. Let s be cap[n].
962
+ const s = cap[n];
963
+ // e. If s is undefined, return c(x).
964
+ if (s instanceof UndefinedValue) {
965
+ return c(x);
966
+ }
967
+ // f. Let e be x's endIndex.
968
+ const e = x.endIndex;
969
+ // g. Let rs be r's startIndex.
970
+ const rs = s.startIndex;
971
+ // h. Let re be r's endIndex.
972
+ const re = s.endIndex;
973
+ // i. Let len be the number of elements in re - rs.
974
+ const len = re - rs;
975
+ // h. Let f be e + direction × len.
976
+ const f = e + direction * len;
977
+ // i. If f < 0 or f > InputLength, return failure.
978
+ if (f < 0 || f > InputLength) {
979
+ return 'failure';
980
+ }
981
+ // j. Let g be min(e, f).
982
+ const g = Math.min(e, f);
983
+ // k. If there exists an integer i between 0 (inclusive) and len (exclusive) such that Canonicalize(s[i]) is not the same character value as Canonicalize(Input[g + i]), return failure.
984
+ for (let i = 0; i < len; i += 1) {
985
+ if (Canonicalize(Input[s.startIndex + i]) !== Canonicalize(Input[g + i])) {
986
+ return 'failure';
987
+ }
988
+ }
989
+ // l. Let y be the State (f, cap).
990
+ const y = new State(f, cap);
991
+ // m. Call c(y) and return its result.
992
+ return c(y);
993
+ };
994
+ }
995
+
996
+ /** https://tc39.es/ecma262/#sec-characterescape */
997
+ // CharacterEscape ::
998
+ // ControlEscape
999
+ // `c` ControlLetter
1000
+ // `0` [lookahead != DecimalDigit]
1001
+ // HexEscapeSequence
1002
+ // RegExpUnicodeEscapeSequence
1003
+ // IdentityEscape
1004
+ function Evaluate_CharacterEscape(CharacterEscape: ParseNode.RegExp.CharacterEscape) {
1005
+ // 1. Let cv be the CharacterValue of this CharacterEscape.
1006
+ const cv = CharacterValue(CharacterEscape);
1007
+ // 2. Return the character whose character value is cv.
1008
+ return cv;
1009
+ }
1010
+
1011
+ /** https://tc39.es/ecma262/#sec-decimalescape */
1012
+ // DecimalEscape ::
1013
+ // NonZeroDigit DecimalDigits?
1014
+ function Evaluate_DecimalEscape(DecimalEscape: ParseNode.RegExp.DecimalEscape) {
1015
+ return DecimalEscape.value;
1016
+ }
1017
+
1018
+ /** https://tc39.es/ecma262/#sec-characterclassescape */
1019
+ // CharacterClassEscape ::
1020
+ // `d`
1021
+ // `D`
1022
+ // `s`
1023
+ // `S`
1024
+ // `w`
1025
+ // `W`
1026
+ // `p{` UnicodePropertyValueExpression `}`
1027
+ // `P{` UnicodePropertyValueExpression `}`
1028
+ function Evaluate_CharacterClassEscape(node: ParseNode.RegExp.CharacterClassEscape): CharSet {
1029
+ switch (node.value) {
1030
+ case 'd':
1031
+ // 1. Return the ten-element set of characters containing the characters 0 through 9 inclusive.
1032
+ return new ConcreteCharSet(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'].map((c) => c.codePointAt(0)!));
1033
+ case 'D':
1034
+ // 1. Return the set of all characters not included in the set returned by CharacterClassEscape :: `d`.
1035
+ return new VirtualCharSet((c) => !isDecimalDigit(String.fromCodePoint(c)));
1036
+ case 's':
1037
+ // 1. Return the set of characters containing the characters that are on the right-hand side of the WhiteSpace or LineTerminator productions.
1038
+ return new VirtualCharSet((c) => {
1039
+ const s = String.fromCodePoint(c);
1040
+ return isWhitespace(s) || isLineTerminator(s);
1041
+ });
1042
+ case 'S':
1043
+ // 1. Return the set of all characters not included in the set returned by CharacterClassEscape :: `s`.
1044
+ return new VirtualCharSet((c) => {
1045
+ const s = String.fromCodePoint(c);
1046
+ return !isWhitespace(s) && !isLineTerminator(s);
1047
+ });
1048
+ case 'w':
1049
+ // 1. Return the set of all characters returned by WordCharacters().
1050
+ return WordCharacters();
1051
+ case 'W': {
1052
+ // 1. Return the set of all characters not included in the set returned by CharacterClassEscape :: `w`.
1053
+ const s = WordCharacters();
1054
+ return new VirtualCharSet((c) => !s.has(c));
1055
+ }
1056
+ case 'p':
1057
+ // 1. Return the CharSet containing all Unicode code points included in the CharSet returned by UnicodePropertyValueExpression.
1058
+ return Evaluate(node.UnicodePropertyValueExpression!, Direction.Unspecified);
1059
+ case 'P': {
1060
+ // 1. Return the CharSet containing all Unicode code points not included in the CharSet returned by UnicodePropertyValueExpression.
1061
+ const s = Evaluate(node.UnicodePropertyValueExpression!, Direction.Unspecified);
1062
+ return new VirtualCharSet((c) => !s.has(c));
1063
+ }
1064
+ default:
1065
+ throw new OutOfRange('Evaluate_CharacterClassEscape', node);
1066
+ }
1067
+ }
1068
+
1069
+ // UnicodePropertyValueExpression ::
1070
+ // UnicodePropertyName `=` UnicodePropertyValue
1071
+ // LoneUnicodePropertyNameOrValue
1072
+ function Evaluate_UnicodePropertyValueExpression(UnicodePropertyValueExpression: ParseNode.RegExp.UnicodePropertyValueExpression): CharSet {
1073
+ if (UnicodePropertyValueExpression.LoneUnicodePropertyNameOrValue) {
1074
+ // 1. Let s be SourceText of LoneUnicodePropertyNameOrValue.
1075
+ const s = UnicodePropertyValueExpression.LoneUnicodePropertyNameOrValue;
1076
+ // 2. If ! UnicodeMatchPropertyValue(General_Category, s) is identical to a List of Unicode code points that is the name of a Unicode general category or general category alias listed in the “Property value and aliases” column of Table 57, then
1077
+ if (X(UnicodeMatchPropertyValue('General_Category', s) in UnicodeGeneralCategoryValues)) {
1078
+ // a. Return the CharSet containing all Unicode code points whose character database definition includes the property “General_Category” with value s.
1079
+ return new ConcreteCharSet(getUnicodePropertyValueSet('General_Category', UnicodeGeneralCategoryValues[s]));
1080
+ }
1081
+ // 3. Let p be ! UnicodeMatchProperty(s).
1082
+ const p = X(UnicodeMatchProperty(s));
1083
+ // 4. Assert: p is a binary Unicode property or binary property alias listed in the “Property name and aliases” column of Table 56.
1084
+ Assert(p in BinaryUnicodeProperties);
1085
+ // 5. Return the CharSet containing all Unicode code points whose character database definition includes the property p with value “True”.
1086
+ return new ConcreteCharSet(getUnicodePropertyValueSet(p));
1087
+ }
1088
+ // 1. Let ps be SourceText of UnicodePropertyName.
1089
+ const ps = UnicodePropertyValueExpression.UnicodePropertyName!;
1090
+ // 2. Let p be ! UnicodeMatchProperty(ps).
1091
+ const p = X(UnicodeMatchProperty(ps));
1092
+ // 3. Assert: p is a Unicode property name or property alias listed in the “Property name and aliases” column of Table 55.
1093
+ Assert(p in NonbinaryUnicodeProperties);
1094
+ // 4. Let vs be SourceText of UnicodePropertyValue.
1095
+ const vs = UnicodePropertyValueExpression.UnicodePropertyValue!;
1096
+ // 5. Let v be ! UnicodeMatchPropertyValue(p, vs).
1097
+ const v = X(UnicodeMatchPropertyValue(p, vs));
1098
+ // 6. Return the CharSet containing all Unicode code points whose character database definition includes the property p with value v.
1099
+ return new ConcreteCharSet(getUnicodePropertyValueSet(p, v));
1100
+ }
1101
+
1102
+ interface CharacterClassResult { A: CharSet, invert: boolean }
1103
+ /** https://tc39.es/ecma262/#sec-characterclass */
1104
+ // CharacterClass ::
1105
+ // `[` ClassRanges `]`
1106
+ // `[` `^` ClassRanges `]`
1107
+ function Evaluate_CharacterClass({ invert, ClassRanges }: ParseNode.RegExp.CharacterClass): CharacterClassResult {
1108
+ let A: CharSet = new ConcreteCharSet([]);
1109
+ for (const range of ClassRanges) {
1110
+ if (Array.isArray(range)) {
1111
+ const B = Evaluate(range[0], Direction.Unspecified);
1112
+ const C = Evaluate(range[1], Direction.Unspecified);
1113
+ const D = CharacterRange(B, C);
1114
+ A = A.union(D);
1115
+ } else {
1116
+ A = A.union(Evaluate(range, Direction.Unspecified));
1117
+ }
1118
+ }
1119
+ return { A, invert };
1120
+ }
1121
+
1122
+ /** https://tc39.es/ecma262/#sec-runtime-semantics-characterrange-abstract-operation */
1123
+ function CharacterRange(A: CharSet, B: CharSet): CharSet {
1124
+ Assert(A instanceof ConcreteCharSet && B instanceof ConcreteCharSet);
1125
+ // 1. Assert: A and B each contain exactly one character.
1126
+ Assert(A.size === 1 && B.size === 1);
1127
+ // 2. Let a be the one character in CharSet A.
1128
+ const a = A.first();
1129
+ // 3. Let b be the one character in CharSet B.
1130
+ const b = B.first();
1131
+ // 4. Let i be the character value of character a.
1132
+ const i = a;
1133
+ // 5. Let j be the character value of character b.
1134
+ const j = b;
1135
+ // 6. Assert: i ≤ j.
1136
+ Assert(i <= j);
1137
+ // 7. Return the set containing all characters numbered i through j, inclusive.
1138
+ const set = new Set<number>();
1139
+ for (let k = i; k <= j; k += 1) {
1140
+ set.add(Canonicalize(k));
1141
+ }
1142
+ return new ConcreteCharSet(set);
1143
+ }
1144
+
1145
+ /** https://tc39.es/ecma262/#sec-classatom */
1146
+ // ClassAtom ::
1147
+ // `-`
1148
+ // ClassAtomNoDash
1149
+ // ClassAtomNoDash ::
1150
+ // SourceCharacter
1151
+ // `\` ClassEscape
1152
+ function Evaluate_ClassAtom(ClassAtom: ParseNode.RegExp.ClassAtom): CharSet {
1153
+ switch (true) {
1154
+ case !!('SourceCharacter' in ClassAtom && ClassAtom.SourceCharacter):
1155
+ // 1. Return the CharSet containing the character matched by SourceCharacter.
1156
+ return new ConcreteCharSet([Canonicalize(ClassAtom.SourceCharacter.codePointAt(0)!)]);
1157
+ case ClassAtom.value === '-':
1158
+ // 1. Return the CharSet containing the single character - U+002D (HYPHEN-MINUS).
1159
+ return new ConcreteCharSet([0x002D]);
1160
+ default:
1161
+ throw new OutOfRange('Evaluate_ClassAtom', ClassAtom);
1162
+ }
1163
+ }
1164
+
1165
+ /** https://tc39.es/ecma262/#sec-classescape */
1166
+ // ClassEscape ::
1167
+ // `b`
1168
+ // `-`
1169
+ // CharacterEscape
1170
+ // CharacterClassEscape
1171
+ function Evaluate_ClassEscape(ClassEscape: ParseNode.RegExp.ClassEscape): CharSet {
1172
+ switch (true) {
1173
+ case ClassEscape.value === 'b':
1174
+ case ClassEscape.value === '-':
1175
+ case !!ClassEscape.CharacterEscape: {
1176
+ // 1. Let cv be the CharacterValue of this ClassEscape.
1177
+ const cv = CharacterValue(ClassEscape);
1178
+ // 2. Let c be the character whose character value is cv.
1179
+ const c = cv;
1180
+ // 3. Return the CharSet containing the single character c.
1181
+ return new ConcreteCharSet([Canonicalize(c)]);
1182
+ }
1183
+ default:
1184
+ throw new OutOfRange('Evaluate_ClassEscape', ClassEscape);
1185
+ }
1186
+ }
1187
+ }