porffor 0.1.0 → 0.2.0-77e30e8

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 (658) hide show
  1. package/README.md +184 -204
  2. package/compiler/2c.js +377 -0
  3. package/compiler/builtins/base64.js +91 -91
  4. package/compiler/builtins.js +19 -13
  5. package/compiler/codeGen.js +1313 -418
  6. package/compiler/decompile.js +35 -9
  7. package/compiler/embedding.js +9 -5
  8. package/compiler/encoding.js +8 -2
  9. package/compiler/index.js +55 -17
  10. package/compiler/log.js +15 -0
  11. package/compiler/opt.js +357 -258
  12. package/compiler/parse.js +24 -1
  13. package/compiler/prototype.js +263 -56
  14. package/compiler/sections.js +51 -8
  15. package/compiler/wasmSpec.js +3 -0
  16. package/compiler/wrap.js +21 -7
  17. package/package.json +6 -1
  18. package/porf.cmd +1 -1
  19. package/rhemyn/README.md +37 -0
  20. package/rhemyn/compile.js +214 -0
  21. package/rhemyn/parse.js +321 -0
  22. package/rhemyn/test/parse.js +59 -0
  23. package/runner/index.js +54 -31
  24. package/runner/info.js +37 -2
  25. package/runner/profile.js +1 -2
  26. package/runner/repl.js +13 -11
  27. package/runner/results.json +1 -0
  28. package/runner/transform.js +15 -36
  29. package/runner/version.js +10 -0
  30. package/CNAME +0 -1
  31. package/index.html +0 -1264
  32. package/logo.png +0 -0
  33. package/sw.js +0 -26
  34. package/test/array_1.js +0 -8
  35. package/test/array_push.js +0 -8
  36. package/test/assignop_1.js +0 -15
  37. package/test/bitwise_1.js +0 -6
  38. package/test/bool_1.js +0 -3
  39. package/test/boolean.js +0 -6
  40. package/test/break_1.js +0 -6
  41. package/test/break_2.js +0 -12
  42. package/test/conditional_1.js +0 -3
  43. package/test/conditional_2.js +0 -4
  44. package/test/console_1.js +0 -2
  45. package/test/continue_1.js +0 -6
  46. package/test/continue_2.js +0 -10
  47. package/test/empty.js +0 -1
  48. package/test/ending_exp_1.js +0 -2
  49. package/test/ending_exp_2.js +0 -6
  50. package/test/eq_1.js +0 -4
  51. package/test/eq_2.js +0 -4
  52. package/test/eq_3.js +0 -5
  53. package/test/export_1.js +0 -9
  54. package/test/factorial.js +0 -3
  55. package/test/fibonacci.js +0 -16
  56. package/test/float_div0.js +0 -2
  57. package/test/float_frac.js +0 -2
  58. package/test/float_isfinite.js +0 -29
  59. package/test/float_isinteger.js +0 -13
  60. package/test/float_isnan.js +0 -20
  61. package/test/float_issafeinteger.js +0 -11
  62. package/test/float_large.js +0 -2
  63. package/test/float_math_funcs.js +0 -24
  64. package/test/float_math_random.js +0 -6
  65. package/test/float_nan.js +0 -3
  66. package/test/float_number_values.js +0 -12
  67. package/test/for_1.js +0 -4
  68. package/test/for_2.js +0 -4
  69. package/test/func_1.js +0 -16
  70. package/test/func_2.js +0 -6
  71. package/test/func_3.js +0 -10
  72. package/test/global_1.js +0 -8
  73. package/test/global_2.js +0 -10
  74. package/test/if_1.js +0 -6
  75. package/test/if_2.js +0 -9
  76. package/test/if_3.js +0 -7
  77. package/test/iife_1.js +0 -8
  78. package/test/iife_2.js +0 -8
  79. package/test/index.js +0 -93
  80. package/test/int_number_values.js +0 -6
  81. package/test/logic_1.js +0 -7
  82. package/test/logic_2.js +0 -7
  83. package/test/math_1.js +0 -6
  84. package/test/math_2.js +0 -12
  85. package/test/math_3.js +0 -6
  86. package/test/number_func.js +0 -4
  87. package/test/return_1.js +0 -8
  88. package/test/return_2.js +0 -11
  89. package/test/tailcall_1.js +0 -10
  90. package/test/throw_1.js +0 -2
  91. package/test/throw_2.js +0 -4
  92. package/test/throw_3.js +0 -2
  93. package/test/throw_4.js +0 -3
  94. package/test/try_1.js +0 -7
  95. package/test/unary_1.js +0 -4
  96. package/test/unary_2.js +0 -5
  97. package/test/unary_3.js +0 -6
  98. package/test/unary_4.js +0 -12
  99. package/test/unary_5.js +0 -8
  100. package/test/undefined_1.js +0 -8
  101. package/test/undefined_2.js +0 -10
  102. package/test/updateexp_1.js +0 -9
  103. package/test/vars_1.js +0 -5
  104. package/test/vars_2.js +0 -9
  105. package/test/while_1.js +0 -6
  106. package/test262/compare.js +0 -30
  107. package/test262/index.js +0 -314
  108. package/test262/node_modules/.bin/esparse +0 -12
  109. package/test262/node_modules/.bin/esparse.cmd +0 -17
  110. package/test262/node_modules/.bin/esparse.ps1 +0 -28
  111. package/test262/node_modules/.bin/esvalidate +0 -12
  112. package/test262/node_modules/.bin/esvalidate.cmd +0 -17
  113. package/test262/node_modules/.bin/esvalidate.ps1 +0 -28
  114. package/test262/node_modules/.bin/js-yaml +0 -12
  115. package/test262/node_modules/.bin/js-yaml.cmd +0 -17
  116. package/test262/node_modules/.bin/js-yaml.ps1 +0 -28
  117. package/test262/node_modules/.package-lock.json +0 -0
  118. package/test262/node_modules/@nodelib/fs.scandir/LICENSE +0 -21
  119. package/test262/node_modules/@nodelib/fs.scandir/README.md +0 -171
  120. package/test262/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts +0 -20
  121. package/test262/node_modules/@nodelib/fs.scandir/out/adapters/fs.js +0 -19
  122. package/test262/node_modules/@nodelib/fs.scandir/out/constants.d.ts +0 -4
  123. package/test262/node_modules/@nodelib/fs.scandir/out/constants.js +0 -17
  124. package/test262/node_modules/@nodelib/fs.scandir/out/index.d.ts +0 -12
  125. package/test262/node_modules/@nodelib/fs.scandir/out/index.js +0 -26
  126. package/test262/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts +0 -7
  127. package/test262/node_modules/@nodelib/fs.scandir/out/providers/async.js +0 -104
  128. package/test262/node_modules/@nodelib/fs.scandir/out/providers/common.d.ts +0 -1
  129. package/test262/node_modules/@nodelib/fs.scandir/out/providers/common.js +0 -13
  130. package/test262/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts +0 -5
  131. package/test262/node_modules/@nodelib/fs.scandir/out/providers/sync.js +0 -54
  132. package/test262/node_modules/@nodelib/fs.scandir/out/settings.d.ts +0 -20
  133. package/test262/node_modules/@nodelib/fs.scandir/out/settings.js +0 -24
  134. package/test262/node_modules/@nodelib/fs.scandir/out/types/index.d.ts +0 -20
  135. package/test262/node_modules/@nodelib/fs.scandir/out/types/index.js +0 -2
  136. package/test262/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts +0 -2
  137. package/test262/node_modules/@nodelib/fs.scandir/out/utils/fs.js +0 -19
  138. package/test262/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts +0 -2
  139. package/test262/node_modules/@nodelib/fs.scandir/out/utils/index.js +0 -5
  140. package/test262/node_modules/@nodelib/fs.scandir/package.json +0 -44
  141. package/test262/node_modules/@nodelib/fs.stat/LICENSE +0 -21
  142. package/test262/node_modules/@nodelib/fs.stat/README.md +0 -126
  143. package/test262/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts +0 -13
  144. package/test262/node_modules/@nodelib/fs.stat/out/adapters/fs.js +0 -17
  145. package/test262/node_modules/@nodelib/fs.stat/out/index.d.ts +0 -12
  146. package/test262/node_modules/@nodelib/fs.stat/out/index.js +0 -26
  147. package/test262/node_modules/@nodelib/fs.stat/out/providers/async.d.ts +0 -4
  148. package/test262/node_modules/@nodelib/fs.stat/out/providers/async.js +0 -36
  149. package/test262/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts +0 -3
  150. package/test262/node_modules/@nodelib/fs.stat/out/providers/sync.js +0 -23
  151. package/test262/node_modules/@nodelib/fs.stat/out/settings.d.ts +0 -16
  152. package/test262/node_modules/@nodelib/fs.stat/out/settings.js +0 -16
  153. package/test262/node_modules/@nodelib/fs.stat/out/types/index.d.ts +0 -4
  154. package/test262/node_modules/@nodelib/fs.stat/out/types/index.js +0 -2
  155. package/test262/node_modules/@nodelib/fs.stat/package.json +0 -37
  156. package/test262/node_modules/@nodelib/fs.walk/LICENSE +0 -21
  157. package/test262/node_modules/@nodelib/fs.walk/README.md +0 -215
  158. package/test262/node_modules/@nodelib/fs.walk/out/index.d.ts +0 -14
  159. package/test262/node_modules/@nodelib/fs.walk/out/index.js +0 -34
  160. package/test262/node_modules/@nodelib/fs.walk/out/providers/async.d.ts +0 -12
  161. package/test262/node_modules/@nodelib/fs.walk/out/providers/async.js +0 -30
  162. package/test262/node_modules/@nodelib/fs.walk/out/providers/index.d.ts +0 -4
  163. package/test262/node_modules/@nodelib/fs.walk/out/providers/index.js +0 -9
  164. package/test262/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts +0 -12
  165. package/test262/node_modules/@nodelib/fs.walk/out/providers/stream.js +0 -34
  166. package/test262/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts +0 -10
  167. package/test262/node_modules/@nodelib/fs.walk/out/providers/sync.js +0 -14
  168. package/test262/node_modules/@nodelib/fs.walk/out/readers/async.d.ts +0 -30
  169. package/test262/node_modules/@nodelib/fs.walk/out/readers/async.js +0 -97
  170. package/test262/node_modules/@nodelib/fs.walk/out/readers/common.d.ts +0 -7
  171. package/test262/node_modules/@nodelib/fs.walk/out/readers/common.js +0 -31
  172. package/test262/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts +0 -6
  173. package/test262/node_modules/@nodelib/fs.walk/out/readers/reader.js +0 -11
  174. package/test262/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts +0 -15
  175. package/test262/node_modules/@nodelib/fs.walk/out/readers/sync.js +0 -59
  176. package/test262/node_modules/@nodelib/fs.walk/out/settings.d.ts +0 -30
  177. package/test262/node_modules/@nodelib/fs.walk/out/settings.js +0 -26
  178. package/test262/node_modules/@nodelib/fs.walk/out/types/index.d.ts +0 -8
  179. package/test262/node_modules/@nodelib/fs.walk/out/types/index.js +0 -2
  180. package/test262/node_modules/@nodelib/fs.walk/package.json +0 -44
  181. package/test262/node_modules/argparse/CHANGELOG.md +0 -185
  182. package/test262/node_modules/argparse/LICENSE +0 -21
  183. package/test262/node_modules/argparse/README.md +0 -257
  184. package/test262/node_modules/argparse/index.js +0 -3
  185. package/test262/node_modules/argparse/lib/action/append/constant.js +0 -47
  186. package/test262/node_modules/argparse/lib/action/append.js +0 -53
  187. package/test262/node_modules/argparse/lib/action/count.js +0 -40
  188. package/test262/node_modules/argparse/lib/action/help.js +0 -47
  189. package/test262/node_modules/argparse/lib/action/store/constant.js +0 -43
  190. package/test262/node_modules/argparse/lib/action/store/false.js +0 -27
  191. package/test262/node_modules/argparse/lib/action/store/true.js +0 -26
  192. package/test262/node_modules/argparse/lib/action/store.js +0 -50
  193. package/test262/node_modules/argparse/lib/action/subparsers.js +0 -149
  194. package/test262/node_modules/argparse/lib/action/version.js +0 -47
  195. package/test262/node_modules/argparse/lib/action.js +0 -146
  196. package/test262/node_modules/argparse/lib/action_container.js +0 -482
  197. package/test262/node_modules/argparse/lib/argparse.js +0 -14
  198. package/test262/node_modules/argparse/lib/argument/error.js +0 -50
  199. package/test262/node_modules/argparse/lib/argument/exclusive.js +0 -54
  200. package/test262/node_modules/argparse/lib/argument/group.js +0 -75
  201. package/test262/node_modules/argparse/lib/argument_parser.js +0 -1161
  202. package/test262/node_modules/argparse/lib/const.js +0 -21
  203. package/test262/node_modules/argparse/lib/help/added_formatters.js +0 -87
  204. package/test262/node_modules/argparse/lib/help/formatter.js +0 -795
  205. package/test262/node_modules/argparse/lib/namespace.js +0 -76
  206. package/test262/node_modules/argparse/lib/utils.js +0 -57
  207. package/test262/node_modules/argparse/package.json +0 -34
  208. package/test262/node_modules/braces/CHANGELOG.md +0 -184
  209. package/test262/node_modules/braces/LICENSE +0 -21
  210. package/test262/node_modules/braces/README.md +0 -593
  211. package/test262/node_modules/braces/index.js +0 -170
  212. package/test262/node_modules/braces/lib/compile.js +0 -57
  213. package/test262/node_modules/braces/lib/constants.js +0 -57
  214. package/test262/node_modules/braces/lib/expand.js +0 -113
  215. package/test262/node_modules/braces/lib/parse.js +0 -333
  216. package/test262/node_modules/braces/lib/stringify.js +0 -32
  217. package/test262/node_modules/braces/lib/utils.js +0 -112
  218. package/test262/node_modules/braces/package.json +0 -77
  219. package/test262/node_modules/esprima/ChangeLog +0 -235
  220. package/test262/node_modules/esprima/LICENSE.BSD +0 -21
  221. package/test262/node_modules/esprima/README.md +0 -46
  222. package/test262/node_modules/esprima/bin/esparse.js +0 -139
  223. package/test262/node_modules/esprima/bin/esvalidate.js +0 -236
  224. package/test262/node_modules/esprima/dist/esprima.js +0 -6709
  225. package/test262/node_modules/esprima/package.json +0 -112
  226. package/test262/node_modules/fast-glob/LICENSE +0 -21
  227. package/test262/node_modules/fast-glob/README.md +0 -859
  228. package/test262/node_modules/fast-glob/out/index.d.ts +0 -40
  229. package/test262/node_modules/fast-glob/out/index.js +0 -102
  230. package/test262/node_modules/fast-glob/out/managers/tasks.d.ts +0 -22
  231. package/test262/node_modules/fast-glob/out/managers/tasks.js +0 -110
  232. package/test262/node_modules/fast-glob/out/providers/async.d.ts +0 -9
  233. package/test262/node_modules/fast-glob/out/providers/async.js +0 -23
  234. package/test262/node_modules/fast-glob/out/providers/filters/deep.d.ts +0 -16
  235. package/test262/node_modules/fast-glob/out/providers/filters/deep.js +0 -62
  236. package/test262/node_modules/fast-glob/out/providers/filters/entry.d.ts +0 -16
  237. package/test262/node_modules/fast-glob/out/providers/filters/entry.js +0 -63
  238. package/test262/node_modules/fast-glob/out/providers/filters/error.d.ts +0 -8
  239. package/test262/node_modules/fast-glob/out/providers/filters/error.js +0 -15
  240. package/test262/node_modules/fast-glob/out/providers/matchers/matcher.d.ts +0 -33
  241. package/test262/node_modules/fast-glob/out/providers/matchers/matcher.js +0 -45
  242. package/test262/node_modules/fast-glob/out/providers/matchers/partial.d.ts +0 -4
  243. package/test262/node_modules/fast-glob/out/providers/matchers/partial.js +0 -38
  244. package/test262/node_modules/fast-glob/out/providers/provider.d.ts +0 -19
  245. package/test262/node_modules/fast-glob/out/providers/provider.js +0 -48
  246. package/test262/node_modules/fast-glob/out/providers/stream.d.ts +0 -11
  247. package/test262/node_modules/fast-glob/out/providers/stream.js +0 -31
  248. package/test262/node_modules/fast-glob/out/providers/sync.d.ts +0 -9
  249. package/test262/node_modules/fast-glob/out/providers/sync.js +0 -23
  250. package/test262/node_modules/fast-glob/out/providers/transformers/entry.d.ts +0 -8
  251. package/test262/node_modules/fast-glob/out/providers/transformers/entry.js +0 -26
  252. package/test262/node_modules/fast-glob/out/readers/async.d.ts +0 -10
  253. package/test262/node_modules/fast-glob/out/readers/async.js +0 -35
  254. package/test262/node_modules/fast-glob/out/readers/reader.d.ts +0 -15
  255. package/test262/node_modules/fast-glob/out/readers/reader.js +0 -33
  256. package/test262/node_modules/fast-glob/out/readers/stream.d.ts +0 -14
  257. package/test262/node_modules/fast-glob/out/readers/stream.js +0 -55
  258. package/test262/node_modules/fast-glob/out/readers/sync.d.ts +0 -12
  259. package/test262/node_modules/fast-glob/out/readers/sync.js +0 -43
  260. package/test262/node_modules/fast-glob/out/settings.d.ts +0 -164
  261. package/test262/node_modules/fast-glob/out/settings.js +0 -57
  262. package/test262/node_modules/fast-glob/out/types/index.d.ts +0 -31
  263. package/test262/node_modules/fast-glob/out/types/index.js +0 -2
  264. package/test262/node_modules/fast-glob/out/utils/array.d.ts +0 -2
  265. package/test262/node_modules/fast-glob/out/utils/array.js +0 -22
  266. package/test262/node_modules/fast-glob/out/utils/errno.d.ts +0 -2
  267. package/test262/node_modules/fast-glob/out/utils/errno.js +0 -7
  268. package/test262/node_modules/fast-glob/out/utils/fs.d.ts +0 -4
  269. package/test262/node_modules/fast-glob/out/utils/fs.js +0 -19
  270. package/test262/node_modules/fast-glob/out/utils/index.d.ts +0 -8
  271. package/test262/node_modules/fast-glob/out/utils/index.js +0 -17
  272. package/test262/node_modules/fast-glob/out/utils/path.d.ts +0 -13
  273. package/test262/node_modules/fast-glob/out/utils/path.js +0 -68
  274. package/test262/node_modules/fast-glob/out/utils/pattern.d.ts +0 -47
  275. package/test262/node_modules/fast-glob/out/utils/pattern.js +0 -188
  276. package/test262/node_modules/fast-glob/out/utils/stream.d.ts +0 -4
  277. package/test262/node_modules/fast-glob/out/utils/stream.js +0 -17
  278. package/test262/node_modules/fast-glob/out/utils/string.d.ts +0 -2
  279. package/test262/node_modules/fast-glob/out/utils/string.js +0 -11
  280. package/test262/node_modules/fast-glob/package.json +0 -81
  281. package/test262/node_modules/fastq/.github/dependabot.yml +0 -11
  282. package/test262/node_modules/fastq/.github/workflows/ci.yml +0 -50
  283. package/test262/node_modules/fastq/LICENSE +0 -13
  284. package/test262/node_modules/fastq/README.md +0 -309
  285. package/test262/node_modules/fastq/bench.js +0 -66
  286. package/test262/node_modules/fastq/example.js +0 -14
  287. package/test262/node_modules/fastq/example.mjs +0 -11
  288. package/test262/node_modules/fastq/index.d.ts +0 -37
  289. package/test262/node_modules/fastq/package.json +0 -52
  290. package/test262/node_modules/fastq/queue.js +0 -289
  291. package/test262/node_modules/fastq/test/example.ts +0 -81
  292. package/test262/node_modules/fastq/test/promise.js +0 -248
  293. package/test262/node_modules/fastq/test/test.js +0 -566
  294. package/test262/node_modules/fastq/test/tsconfig.json +0 -11
  295. package/test262/node_modules/fill-range/LICENSE +0 -21
  296. package/test262/node_modules/fill-range/README.md +0 -237
  297. package/test262/node_modules/fill-range/index.js +0 -249
  298. package/test262/node_modules/fill-range/package.json +0 -69
  299. package/test262/node_modules/glob-parent/CHANGELOG.md +0 -110
  300. package/test262/node_modules/glob-parent/LICENSE +0 -15
  301. package/test262/node_modules/glob-parent/README.md +0 -137
  302. package/test262/node_modules/glob-parent/index.js +0 -42
  303. package/test262/node_modules/glob-parent/package.json +0 -48
  304. package/test262/node_modules/graceful-fs/LICENSE +0 -15
  305. package/test262/node_modules/graceful-fs/README.md +0 -143
  306. package/test262/node_modules/graceful-fs/clone.js +0 -23
  307. package/test262/node_modules/graceful-fs/graceful-fs.js +0 -448
  308. package/test262/node_modules/graceful-fs/legacy-streams.js +0 -118
  309. package/test262/node_modules/graceful-fs/package.json +0 -53
  310. package/test262/node_modules/graceful-fs/polyfills.js +0 -355
  311. package/test262/node_modules/is-extglob/LICENSE +0 -21
  312. package/test262/node_modules/is-extglob/README.md +0 -107
  313. package/test262/node_modules/is-extglob/index.js +0 -20
  314. package/test262/node_modules/is-extglob/package.json +0 -69
  315. package/test262/node_modules/is-glob/LICENSE +0 -21
  316. package/test262/node_modules/is-glob/README.md +0 -206
  317. package/test262/node_modules/is-glob/index.js +0 -150
  318. package/test262/node_modules/is-glob/package.json +0 -81
  319. package/test262/node_modules/is-number/LICENSE +0 -21
  320. package/test262/node_modules/is-number/README.md +0 -187
  321. package/test262/node_modules/is-number/index.js +0 -18
  322. package/test262/node_modules/is-number/package.json +0 -82
  323. package/test262/node_modules/js-yaml/CHANGELOG.md +0 -557
  324. package/test262/node_modules/js-yaml/LICENSE +0 -21
  325. package/test262/node_modules/js-yaml/README.md +0 -299
  326. package/test262/node_modules/js-yaml/bin/js-yaml.js +0 -132
  327. package/test262/node_modules/js-yaml/dist/js-yaml.js +0 -3989
  328. package/test262/node_modules/js-yaml/dist/js-yaml.min.js +0 -1
  329. package/test262/node_modules/js-yaml/index.js +0 -7
  330. package/test262/node_modules/js-yaml/lib/js-yaml/common.js +0 -59
  331. package/test262/node_modules/js-yaml/lib/js-yaml/dumper.js +0 -850
  332. package/test262/node_modules/js-yaml/lib/js-yaml/exception.js +0 -43
  333. package/test262/node_modules/js-yaml/lib/js-yaml/loader.js +0 -1644
  334. package/test262/node_modules/js-yaml/lib/js-yaml/mark.js +0 -76
  335. package/test262/node_modules/js-yaml/lib/js-yaml/schema/core.js +0 -18
  336. package/test262/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +0 -25
  337. package/test262/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +0 -28
  338. package/test262/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +0 -17
  339. package/test262/node_modules/js-yaml/lib/js-yaml/schema/json.js +0 -25
  340. package/test262/node_modules/js-yaml/lib/js-yaml/schema.js +0 -108
  341. package/test262/node_modules/js-yaml/lib/js-yaml/type/binary.js +0 -138
  342. package/test262/node_modules/js-yaml/lib/js-yaml/type/bool.js +0 -35
  343. package/test262/node_modules/js-yaml/lib/js-yaml/type/float.js +0 -116
  344. package/test262/node_modules/js-yaml/lib/js-yaml/type/int.js +0 -173
  345. package/test262/node_modules/js-yaml/lib/js-yaml/type/js/function.js +0 -93
  346. package/test262/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +0 -60
  347. package/test262/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +0 -28
  348. package/test262/node_modules/js-yaml/lib/js-yaml/type/map.js +0 -8
  349. package/test262/node_modules/js-yaml/lib/js-yaml/type/merge.js +0 -12
  350. package/test262/node_modules/js-yaml/lib/js-yaml/type/null.js +0 -34
  351. package/test262/node_modules/js-yaml/lib/js-yaml/type/omap.js +0 -44
  352. package/test262/node_modules/js-yaml/lib/js-yaml/type/pairs.js +0 -53
  353. package/test262/node_modules/js-yaml/lib/js-yaml/type/seq.js +0 -8
  354. package/test262/node_modules/js-yaml/lib/js-yaml/type/set.js +0 -29
  355. package/test262/node_modules/js-yaml/lib/js-yaml/type/str.js +0 -8
  356. package/test262/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +0 -88
  357. package/test262/node_modules/js-yaml/lib/js-yaml/type.js +0 -61
  358. package/test262/node_modules/js-yaml/lib/js-yaml.js +0 -39
  359. package/test262/node_modules/js-yaml/package.json +0 -49
  360. package/test262/node_modules/klaw/CHANGELOG.md +0 -62
  361. package/test262/node_modules/klaw/LICENSE +0 -15
  362. package/test262/node_modules/klaw/README.md +0 -252
  363. package/test262/node_modules/klaw/package.json +0 -40
  364. package/test262/node_modules/klaw/src/index.js +0 -56
  365. package/test262/node_modules/merge2/LICENSE +0 -21
  366. package/test262/node_modules/merge2/README.md +0 -144
  367. package/test262/node_modules/merge2/index.js +0 -144
  368. package/test262/node_modules/merge2/package.json +0 -43
  369. package/test262/node_modules/micromatch/LICENSE +0 -21
  370. package/test262/node_modules/micromatch/README.md +0 -1011
  371. package/test262/node_modules/micromatch/index.js +0 -467
  372. package/test262/node_modules/micromatch/package.json +0 -119
  373. package/test262/node_modules/picomatch/CHANGELOG.md +0 -136
  374. package/test262/node_modules/picomatch/LICENSE +0 -21
  375. package/test262/node_modules/picomatch/README.md +0 -708
  376. package/test262/node_modules/picomatch/index.js +0 -3
  377. package/test262/node_modules/picomatch/lib/constants.js +0 -179
  378. package/test262/node_modules/picomatch/lib/parse.js +0 -1091
  379. package/test262/node_modules/picomatch/lib/picomatch.js +0 -342
  380. package/test262/node_modules/picomatch/lib/scan.js +0 -391
  381. package/test262/node_modules/picomatch/lib/utils.js +0 -64
  382. package/test262/node_modules/picomatch/package.json +0 -81
  383. package/test262/node_modules/queue-microtask/LICENSE +0 -20
  384. package/test262/node_modules/queue-microtask/README.md +0 -90
  385. package/test262/node_modules/queue-microtask/index.d.ts +0 -2
  386. package/test262/node_modules/queue-microtask/index.js +0 -9
  387. package/test262/node_modules/queue-microtask/package.json +0 -55
  388. package/test262/node_modules/reusify/.coveralls.yml +0 -1
  389. package/test262/node_modules/reusify/.travis.yml +0 -28
  390. package/test262/node_modules/reusify/LICENSE +0 -22
  391. package/test262/node_modules/reusify/README.md +0 -145
  392. package/test262/node_modules/reusify/benchmarks/createNoCodeFunction.js +0 -30
  393. package/test262/node_modules/reusify/benchmarks/fib.js +0 -13
  394. package/test262/node_modules/reusify/benchmarks/reuseNoCodeFunction.js +0 -38
  395. package/test262/node_modules/reusify/package.json +0 -45
  396. package/test262/node_modules/reusify/reusify.js +0 -33
  397. package/test262/node_modules/reusify/test.js +0 -66
  398. package/test262/node_modules/run-parallel/LICENSE +0 -20
  399. package/test262/node_modules/run-parallel/README.md +0 -85
  400. package/test262/node_modules/run-parallel/index.js +0 -51
  401. package/test262/node_modules/run-parallel/package.json +0 -58
  402. package/test262/node_modules/sprintf-js/LICENSE +0 -24
  403. package/test262/node_modules/sprintf-js/README.md +0 -88
  404. package/test262/node_modules/sprintf-js/bower.json +0 -14
  405. package/test262/node_modules/sprintf-js/demo/angular.html +0 -20
  406. package/test262/node_modules/sprintf-js/dist/angular-sprintf.min.js +0 -4
  407. package/test262/node_modules/sprintf-js/dist/angular-sprintf.min.js.map +0 -1
  408. package/test262/node_modules/sprintf-js/dist/angular-sprintf.min.map +0 -1
  409. package/test262/node_modules/sprintf-js/dist/sprintf.min.js +0 -4
  410. package/test262/node_modules/sprintf-js/dist/sprintf.min.js.map +0 -1
  411. package/test262/node_modules/sprintf-js/dist/sprintf.min.map +0 -1
  412. package/test262/node_modules/sprintf-js/gruntfile.js +0 -36
  413. package/test262/node_modules/sprintf-js/package.json +0 -22
  414. package/test262/node_modules/sprintf-js/src/angular-sprintf.js +0 -18
  415. package/test262/node_modules/sprintf-js/src/sprintf.js +0 -208
  416. package/test262/node_modules/sprintf-js/test/test.js +0 -82
  417. package/test262/node_modules/test262-stream/.jshintignore +0 -2
  418. package/test262/node_modules/test262-stream/.jshintrc +0 -6
  419. package/test262/node_modules/test262-stream/.travis.yml +0 -5
  420. package/test262/node_modules/test262-stream/CONTRIBUTING.md +0 -37
  421. package/test262/node_modules/test262-stream/LICENSE-MICROSOFT.txt +0 -27
  422. package/test262/node_modules/test262-stream/LICENSE.txt +0 -27
  423. package/test262/node_modules/test262-stream/README.md +0 -71
  424. package/test262/node_modules/test262-stream/lib/builder.js +0 -46
  425. package/test262/node_modules/test262-stream/lib/compile.js +0 -24
  426. package/test262/node_modules/test262-stream/lib/create-scenarios.js +0 -29
  427. package/test262/node_modules/test262-stream/lib/index.js +0 -187
  428. package/test262/node_modules/test262-stream/lib/test-file.js +0 -150
  429. package/test262/node_modules/test262-stream/package.json +0 -26
  430. package/test262/node_modules/test262-stream/test/collateral/invalid-missing-harness/fake-test262/test/a-test-file.js +0 -16
  431. package/test262/node_modules/test262-stream/test/collateral/invalid-version-other-accepted/fake-test262/harness/assert.js +0 -17
  432. package/test262/node_modules/test262-stream/test/collateral/invalid-version-other-accepted/fake-test262/harness/doneprintHandle.js +0 -6
  433. package/test262/node_modules/test262-stream/test/collateral/invalid-version-other-accepted/fake-test262/harness/sta.js +0 -12
  434. package/test262/node_modules/test262-stream/test/collateral/invalid-version-other-accepted/fake-test262/package.json +0 -3
  435. package/test262/node_modules/test262-stream/test/collateral/invalid-version-other-accepted/fake-test262/test/strict.js +0 -9
  436. package/test262/node_modules/test262-stream/test/collateral/invalid-version-unsupported/fake-test262/harness/assert.js +0 -17
  437. package/test262/node_modules/test262-stream/test/collateral/invalid-version-unsupported/fake-test262/harness/doneprintHandle.js +0 -6
  438. package/test262/node_modules/test262-stream/test/collateral/invalid-version-unsupported/fake-test262/harness/sta.js +0 -12
  439. package/test262/node_modules/test262-stream/test/collateral/invalid-version-unsupported/fake-test262/package.json +0 -3
  440. package/test262/node_modules/test262-stream/test/collateral/invalid-version-unsupported/fake-test262/test/strict.js +0 -9
  441. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/asyncNegative_default.js +0 -49
  442. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/asyncNegative_strict_mode.js +0 -50
  443. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/async_default.js +0 -48
  444. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/async_strict_mode.js +0 -49
  445. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/bothStrict_default.js +0 -46
  446. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/bothStrict_strict_mode.js +0 -47
  447. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/error_default.js +0 -39
  448. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/error_strict_mode.js +0 -40
  449. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/module_default.js +0 -37
  450. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/module_strict_mode.js +0 -38
  451. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/negative-empty_default.js +0 -37
  452. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/negative-empty_strict_mode.js +0 -38
  453. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/noStrict_default.js +0 -36
  454. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/rawNoStrict_default.js +0 -14
  455. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/rawStrict_default.js +0 -15
  456. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/strict_strict_mode.js +0 -41
  457. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/asyncNegative_default.json +0 -22
  458. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/asyncNegative_strict_mode.json +0 -22
  459. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/async_default.json +0 -18
  460. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/async_strict_mode.json +0 -18
  461. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/bothStrict_default.json +0 -24
  462. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/bothStrict_strict_mode.json +0 -24
  463. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/error_default.json +0 -19
  464. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/error_strict_mode.json +0 -19
  465. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/module_default.json +0 -17
  466. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/module_strict_mode.json +0 -17
  467. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/negative-empty_default.json +0 -19
  468. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/negative-empty_strict_mode.json +0 -19
  469. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/noStrict_default.json +0 -17
  470. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/rawNoStrict_default.json +0 -14
  471. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/rawStrict_default.json +0 -14
  472. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/strict_strict_mode.json +0 -21
  473. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/harness/assert.js +0 -17
  474. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/harness/doneprintHandle.js +0 -6
  475. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/harness/sta.js +0 -12
  476. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/async.js +0 -10
  477. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/asyncNegative.js +0 -11
  478. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/bothStrict.js +0 -15
  479. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/error.js +0 -8
  480. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/module.js +0 -6
  481. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/module_FIXTURE.js +0 -2
  482. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/negative-empty.js +0 -6
  483. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/noStrict.js +0 -5
  484. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/rawNoStrict.js +0 -14
  485. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/rawStrict.js +0 -15
  486. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/strict.js +0 -9
  487. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/expected-content/test/bothStrict_default.js +0 -46
  488. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/expected-content/test/bothStrict_strict_mode.js +0 -47
  489. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/expected-metadata/test/bothStrict_default.json +0 -24
  490. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/expected-metadata/test/bothStrict_strict_mode.json +0 -24
  491. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/harness/assert.js +0 -17
  492. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/harness/doneprintHandle.js +0 -6
  493. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/harness/sta.js +0 -12
  494. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/bothStrict.js +0 -15
  495. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-0_FIXTURE.js +0 -2
  496. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-1_FIXTURE.js +0 -2
  497. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-2_FIXTURE.js +0 -2
  498. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-3_FIXTURE.js +0 -2
  499. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-4_FIXTURE.js +0 -2
  500. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-5_FIXTURE.js +0 -2
  501. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-6_FIXTURE.js +0 -2
  502. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-7_FIXTURE.js +0 -2
  503. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-8_FIXTURE.js +0 -2
  504. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-9_FIXTURE.txt +0 -2
  505. package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-content/test/raw_default.js +0 -15
  506. package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-content/test/runtime_default.js +0 -38
  507. package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-content/test/runtime_strict_mode.js +0 -39
  508. package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-metadata/test/raw_default.json +0 -14
  509. package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-metadata/test/runtime_default.json +0 -15
  510. package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-metadata/test/runtime_strict_mode.json +0 -15
  511. package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/fake-test262/harness/assert.js +0 -17
  512. package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/fake-test262/harness/sta.js +0 -12
  513. package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/fake-test262/test/raw.js +0 -15
  514. package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/fake-test262/test/runtime.js +0 -7
  515. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/asyncNegative_default.js +0 -11
  516. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/asyncNegative_strict_mode.js +0 -12
  517. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/async_default.js +0 -10
  518. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/async_strict_mode.js +0 -11
  519. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/bothStrict_default.js +0 -15
  520. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/bothStrict_strict_mode.js +0 -16
  521. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/error_default.js +0 -8
  522. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/error_strict_mode.js +0 -9
  523. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/module_default.js +0 -6
  524. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/module_strict_mode.js +0 -7
  525. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/negative-empty_default.js +0 -6
  526. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/negative-empty_strict_mode.js +0 -7
  527. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/noStrict_default.js +0 -5
  528. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/rawNoStrict_default.js +0 -14
  529. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/rawStrict_default.js +0 -15
  530. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/strict_strict_mode.js +0 -10
  531. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/asyncNegative_default.json +0 -18
  532. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/asyncNegative_strict_mode.json +0 -18
  533. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/async_default.json +0 -14
  534. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/async_strict_mode.json +0 -14
  535. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/bothStrict_default.json +0 -21
  536. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/bothStrict_strict_mode.json +0 -21
  537. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/error_default.json +0 -16
  538. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/error_strict_mode.json +0 -16
  539. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/module_default.json +0 -14
  540. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/module_strict_mode.json +0 -14
  541. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/negative-empty_default.json +0 -16
  542. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/negative-empty_strict_mode.json +0 -16
  543. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/noStrict_default.json +0 -14
  544. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/rawNoStrict_default.json +0 -14
  545. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/rawStrict_default.json +0 -14
  546. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/strict_strict_mode.json +0 -18
  547. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/harness/assert.js +0 -17
  548. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/harness/doneprintHandle.js +0 -6
  549. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/harness/sta.js +0 -12
  550. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/async.js +0 -10
  551. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/asyncNegative.js +0 -11
  552. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/bothStrict.js +0 -15
  553. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/error.js +0 -8
  554. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/module.js +0 -6
  555. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/module_FIXTURE.js +0 -2
  556. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/negative-empty.js +0 -6
  557. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/noStrict.js +0 -5
  558. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/rawNoStrict.js +0 -14
  559. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/rawStrict.js +0 -15
  560. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/strict.js +0 -9
  561. package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/expected-content/test/strict_strict_mode.js +0 -41
  562. package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/expected-metadata/test/strict_strict_mode.json +0 -21
  563. package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/fake-test262/harness/assert.js +0 -17
  564. package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/fake-test262/harness/doneprintHandle.js +0 -6
  565. package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/fake-test262/harness/sta.js +0 -12
  566. package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/fake-test262/package.json +0 -3
  567. package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/fake-test262/test/strict.js +0 -9
  568. package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/expected-content/test/strict_strict_mode.js +0 -41
  569. package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/expected-metadata/test/strict_strict_mode.json +0 -21
  570. package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/fake-test262/harness/assert.js +0 -17
  571. package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/fake-test262/harness/doneprintHandle.js +0 -6
  572. package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/fake-test262/harness/sta.js +0 -12
  573. package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/fake-test262/package.json +0 -3
  574. package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/fake-test262/test/strict.js +0 -9
  575. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/missing-raw-flag_default.js +0 -44
  576. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/missing-raw-flag_strict_mode.js +0 -45
  577. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ls-and-license-on-same-line_default.js +0 -20
  578. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ls-multiline-block_default.js +0 -18
  579. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ls_default.js +0 -17
  580. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ps-and-license-on-same-line_default.js +0 -20
  581. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ps-multiline-block_default.js +0 -18
  582. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ps_default.js +0 -17
  583. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/rawWithLicense_default.js +0 -21
  584. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw_default.js +0 -17
  585. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/missing-raw-flag_default.json +0 -22
  586. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/missing-raw-flag_strict_mode.json +0 -22
  587. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ls-and-license-on-same-line_default.json +0 -21
  588. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ls-multiline-block_default.json +0 -21
  589. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ls_default.json +0 -21
  590. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ps-and-license-on-same-line_default.json +0 -21
  591. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ps-multiline-block_default.json +0 -21
  592. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ps_default.json +0 -21
  593. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/rawWithLicense_default.json +0 -21
  594. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw_default.json +0 -21
  595. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/harness/assert.js +0 -17
  596. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/harness/doneprintHandle.js +0 -6
  597. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/harness/sta.js +0 -12
  598. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/missing-raw-flag.js +0 -13
  599. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ls-and-license-on-same-line.js +0 -20
  600. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ls-multiline-block.js +0 -18
  601. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ls.js +0 -17
  602. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ps-and-license-on-same-line.js +0 -20
  603. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ps-multiline-block.js +0 -18
  604. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ps.js +0 -17
  605. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw.js +0 -17
  606. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/rawWithLicense.js +0 -21
  607. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/custom-includes/assert.js +0 -17
  608. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/custom-includes/doneprintHandle.js +0 -9
  609. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/custom-includes/sta.js +0 -13
  610. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-content/test/async_default.js +0 -52
  611. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-content/test/async_strict_mode.js +0 -53
  612. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-content/test/bothStrict_default.js +0 -47
  613. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-content/test/bothStrict_strict_mode.js +0 -48
  614. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-metadata/test/async_default.json +0 -18
  615. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-metadata/test/async_strict_mode.json +0 -18
  616. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-metadata/test/bothStrict_default.json +0 -24
  617. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-metadata/test/bothStrict_strict_mode.json +0 -24
  618. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/fake-test262/harness/assert.js +0 -17
  619. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/fake-test262/harness/doneprintHandle.js +0 -6
  620. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/fake-test262/test/async.js +0 -10
  621. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/fake-test262/test/bothStrict.js +0 -15
  622. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/async/asyncNegative_default.js +0 -49
  623. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/async/asyncNegative_strict_mode.js +0 -50
  624. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/async/async_default.js +0 -48
  625. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/async/async_strict_mode.js +0 -49
  626. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/bothStrict_default.js +0 -46
  627. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/bothStrict_strict_mode.js +0 -47
  628. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/strict/no/noStrict_default.js +0 -36
  629. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/strict/no/rawNoStrict_default.js +0 -14
  630. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/async/asyncNegative_default.json +0 -22
  631. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/async/asyncNegative_strict_mode.json +0 -22
  632. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/async/async_default.json +0 -18
  633. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/async/async_strict_mode.json +0 -18
  634. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/bothStrict_default.json +0 -24
  635. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/bothStrict_strict_mode.json +0 -24
  636. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/strict/no/noStrict_default.json +0 -17
  637. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/strict/no/rawNoStrict_default.json +0 -14
  638. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/harness/assert.js +0 -17
  639. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/harness/doneprintHandle.js +0 -6
  640. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/harness/sta.js +0 -12
  641. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/async/async.js +0 -10
  642. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/async/asyncNegative.js +0 -11
  643. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/bothStrict.js +0 -15
  644. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/error.js +0 -8
  645. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/negative-empty.js +0 -6
  646. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/strict/no/noStrict.js +0 -5
  647. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/strict/no/rawNoStrict.js +0 -14
  648. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/strict/rawStrict.js +0 -15
  649. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/strict/strict.js +0 -9
  650. package/test262/node_modules/test262-stream/test/test.js +0 -319
  651. package/test262/node_modules/to-regex-range/LICENSE +0 -21
  652. package/test262/node_modules/to-regex-range/README.md +0 -305
  653. package/test262/node_modules/to-regex-range/index.js +0 -288
  654. package/test262/node_modules/to-regex-range/package.json +0 -88
  655. package/test262/package-lock.json +0 -279
  656. package/test262/package.json +0 -6
  657. package/test262/prelude.js +0 -75
  658. package/test262/results.json +0 -1
package/compiler/wrap.js CHANGED
@@ -1,10 +1,11 @@
1
1
  import compile from './index.js';
2
2
  import decompile from './decompile.js';
3
- // import fs from 'node:fs';
3
+ import fs from 'node:fs';
4
4
 
5
5
  const bold = x => `\u001b[1m${x}\u001b[0m`;
6
6
 
7
- const typeBase = 0xffffffffffff0;
7
+ const typeBase = 0x00;
8
+ const internalTypeBase = 0x10;
8
9
  const TYPES = {
9
10
  [typeBase]: 'number',
10
11
  [typeBase + 1]: 'boolean',
@@ -16,7 +17,8 @@ const TYPES = {
16
17
  [typeBase + 7]: 'bigint',
17
18
 
18
19
  // internal
19
- [typeBase + 8]: '_array'
20
+ [internalTypeBase]: '_array',
21
+ [internalTypeBase + 1]: '_regexp'
20
22
  };
21
23
 
22
24
  export default async (source, flags = [ 'module' ], customImports = {}, print = str => process.stdout.write(str)) => {
@@ -37,7 +39,6 @@ export default async (source, flags = [ 'module' ], customImports = {}, print =
37
39
  '': {
38
40
  p: valtype === 'i64' ? i => print(Number(i).toString()) : i => print(i.toString()),
39
41
  c: valtype === 'i64' ? i => print(String.fromCharCode(Number(i))) : i => print(String.fromCharCode(i)),
40
- a: c => { if (!Number(c)) throw new Error(`assert failed`); },
41
42
  t: _ => performance.now(),
42
43
  ...customImports
43
44
  }
@@ -64,11 +65,15 @@ export default async (source, flags = [ 'module' ], customImports = {}, print =
64
65
 
65
66
  exports[func.name] = function() {
66
67
  try {
67
- const ret = exp.apply(this, arguments);
68
+ const _ret = exp.apply(this, arguments);
68
69
 
69
- if (ret >= typeBase && ret <= typeBase + 8) return ret > (typeBase + 7) ? 'object' : TYPES[ret];
70
+ if (_ret == null) return undefined;
70
71
 
71
- switch (TYPES[func.returnType]) {
72
+ const [ ret, type ] = _ret;
73
+
74
+ // if (ret >= typeBase && ret <= typeBase + 8) return ret > (typeBase + 7) ? 'object' : TYPES[ret];
75
+
76
+ switch (TYPES[type]) {
72
77
  case 'boolean': return Boolean(ret);
73
78
  case 'undefined': return undefined;
74
79
  case 'object': return ret === 0 ? null : {};
@@ -90,6 +95,15 @@ export default async (source, flags = [ 'module' ], customImports = {}, print =
90
95
  return Array.from(new Uint16Array(memory.buffer, pointer + 4, length)).map(x => String.fromCharCode(x)).join('');
91
96
  }
92
97
 
98
+ case 'function': {
99
+ // wasm func index, including all imports
100
+ const func = funcs.find(x => (x.originalIndex ?? x.index) === ret);
101
+ if (!func) return ret;
102
+
103
+ // make fake empty func for repl/etc
104
+ return {[func.name]() {}}[func.name];
105
+ }
106
+
93
107
  default: return ret;
94
108
  }
95
109
  } catch (e) {
package/package.json CHANGED
@@ -1,12 +1,17 @@
1
1
  {
2
2
  "name": "porffor",
3
3
  "description": "a basic experimental wip aot optimizing js -> wasm engine/compiler/runtime in js",
4
- "version": "0.1.0",
4
+ "version": "0.2.0-77e30e8",
5
5
  "author": "CanadaHonk",
6
6
  "license": "MIT",
7
7
  "dependencies": {
8
8
  "acorn": "^8.9.0"
9
9
  },
10
+ "optionalDependencies": {
11
+ "@babel/parser": "^7.23.6",
12
+ "hermes-parser": "^0.18.2",
13
+ "meriyah": "^4.3.9"
14
+ },
10
15
  "bin": {
11
16
  "porf": "./runner/index.js"
12
17
  },
package/porf.cmd CHANGED
@@ -1,2 +1,2 @@
1
- @echo off
1
+ @echo off
2
2
  node runner %*
@@ -0,0 +1,37 @@
1
+ # Rhemyn
2
+ A basic experimental WIP regex engine/AOT Wasm compiler in JS. Regex engine for Porffor! Uses own regex parser, no dependencies (excluding porffor internals). <br>
3
+ Age: ~1 day (of work)
4
+
5
+ Made for use with Porffor but could possibly be adapted, implementation/library notes:
6
+ - Exposes functions for each regex "operation" (eg test, match)
7
+ - Given a regex pattern string (eg `a+`), it returns a "function" object
8
+ - Wasm function returned expects an i32 pointer to a UTF-16 string (can add UTF-8 option later if someone else actually wants to use this)
9
+
10
+ ## syntax
11
+ 🟢 supported 🟡 partial 🟠 parsed only 🔴 unsupported
12
+
13
+ - 🟢 literal characters (eg `a`)
14
+ - 🟢 escaping (eg `\.\n\cJ\x0a\u000a`)
15
+ - 🟢 character itself (eg `\.`)
16
+ - 🟢 escape sequences (eg `\n`)
17
+ - 🟢 control character (eg `\cJ`)
18
+ - 🟢 unicode code points (eg `\x00`, `\u0000`)
19
+ - 🟢 sets (eg `[ab]`)
20
+ - 🟢 ranges (eg `[a-z]`)
21
+ - 🟢 negated sets (eg `[^ab]`)
22
+ - 🟢 metacharacters
23
+ - 🟢 dot (eg `a.b`)
24
+ - 🟢 digit, not digit (eg `\d\D`)
25
+ - 🟢 word, not word (eg `\w\W`)
26
+ - 🟢 whitespace, not whitespace (eg `\s\S`)
27
+ - 🟠 quantifiers
28
+ - 🟠 star (eg `a*`)
29
+ - 🟠 plus (eg `a+`)
30
+ - 🟠 optional (eg `a?`)
31
+ - 🟠 lazy modifier (eg `a*?`)
32
+ - 🔴 n repetitions (eg `a{4}`)
33
+ - 🔴 n-m repetitions (eg `a{2,4}`)
34
+ - 🔴 assertions
35
+ - 🔴 beginning (eg `^a`)
36
+ - 🔴 end (eg `a$`)
37
+ - 🔴 word boundary assertion (eg `\b\B`)
@@ -0,0 +1,214 @@
1
+ import { Blocktype, Opcodes, Valtype, PageSize, ValtypeSize } from '../compiler/wasmSpec.js';
2
+ import { number } from '../compiler/embedding.js';
3
+ import { signedLEB128, unsignedLEB128 } from '../compiler/encoding.js';
4
+ import parse from './parse.js';
5
+
6
+ // local indexes
7
+ const BasePointer = 0; // base string pointer
8
+ const IterPointer = 1; // this iteration base pointer
9
+ const EndPointer = 2; // pointer for the end
10
+ const Counter = 3; // what char we are running on
11
+ const Pointer = 4; // next char BYTE pointer
12
+ const Length = 5;
13
+ const Tmp = 6;
14
+
15
+ let exprLastGet = false;
16
+ const generate = (node, negated = false, get = true, func = 'test') => {
17
+ let out = [];
18
+ switch (node.type) {
19
+ case 'Expression':
20
+ exprLastGet = false;
21
+ out = [
22
+ // set length local
23
+ [ Opcodes.local_get, BasePointer ],
24
+ [ Opcodes.i32_load, Math.log2(ValtypeSize.i32) - 1, 0 ],
25
+ [ Opcodes.local_set, Length ],
26
+
27
+ // set iter pointer local as base + sizeof i32 initially
28
+ [ Opcodes.local_get, BasePointer ],
29
+ ...number(ValtypeSize.i32, Valtype.i32),
30
+ [ Opcodes.i32_add ],
31
+ [ Opcodes.local_set, IterPointer ],
32
+
33
+ [ Opcodes.loop, Blocktype.void ],
34
+
35
+ // reset pointer as iter pointer
36
+ [ Opcodes.local_get, IterPointer ],
37
+ [ Opcodes.local_set, Pointer ],
38
+
39
+ [ Opcodes.block, Blocktype.void ],
40
+
41
+ // generate checks
42
+ ...node.body.flatMap((x, i) => {
43
+ exprLastGet = x.type !== 'Group' && i === (node.body.length - 1);
44
+ return generate(x, negated);
45
+ }),
46
+
47
+ // reached end without branching out, successful match
48
+ ...({
49
+ test: number(1, Valtype.i32),
50
+ search: [
51
+ [ Opcodes.local_get, Counter ]
52
+ ]
53
+ })[func],
54
+ [ Opcodes.return ],
55
+
56
+ [ Opcodes.end ],
57
+
58
+ // increment iter pointer by sizeof i16
59
+ [ Opcodes.local_get, IterPointer ],
60
+ ...number(ValtypeSize.i16, Valtype.i32),
61
+ [ Opcodes.i32_add ],
62
+ [ Opcodes.local_set, IterPointer ],
63
+
64
+ // increment counter by 1, check if eq length, if not loop
65
+ [ Opcodes.local_get, Counter ],
66
+ ...number(1, Valtype.i32),
67
+ [ Opcodes.i32_add ],
68
+ [ Opcodes.local_tee, Counter ],
69
+
70
+ [ Opcodes.local_get, Length ],
71
+ [ Opcodes.i32_ne ],
72
+
73
+ [ Opcodes.br_if, 0 ],
74
+ [ Opcodes.end ],
75
+
76
+ // no match, return 0
77
+ ...number(({
78
+ test: 0,
79
+ search: -1
80
+ })[func], Valtype.i32)
81
+ ];
82
+
83
+ if (globalThis.regexLog) {
84
+ const underline = x => `\u001b[4m\u001b[1m${x}\u001b[0m`;
85
+ console.log(`\n${underline('ast')}`);
86
+ console.log(node);
87
+ console.log(`\n${underline('wasm bytecode')}\n` + decompile(out) + '\n');
88
+ }
89
+
90
+ break;
91
+
92
+ case 'Character':
93
+ out = generateChar(node, node.negated ^ negated, get);
94
+ break;
95
+
96
+ case 'Set':
97
+ out = generateSet(node, node.negated, get);
98
+ break;
99
+
100
+ case 'Group':
101
+ out = generateGroup(node, negated, get);
102
+ break;
103
+
104
+ case 'Range':
105
+ out = generateRange(node, negated, get);
106
+ break;
107
+ }
108
+
109
+ return out;
110
+ };
111
+
112
+ const getNextChar = () => [
113
+ // get char from pointer
114
+ [ Opcodes.local_get, Pointer ],
115
+ [ Opcodes.i32_load16_u, Math.log2(ValtypeSize.i16) - 1, ...unsignedLEB128(0) ],
116
+
117
+ ...(exprLastGet ? [] : [
118
+ // pointer += sizeof i16
119
+ [ Opcodes.local_get, Pointer ],
120
+ ...number(ValtypeSize.i16, Valtype.i32),
121
+ [ Opcodes.i32_add ],
122
+ [ Opcodes.local_set, Pointer ]
123
+ ])
124
+ ];
125
+
126
+ const checkFailure = () => [
127
+ // surely we do not need to do this for every single mismatch, right?
128
+ /* [ Opcodes.if, Blocktype.void ],
129
+ ...number(0, Valtype.i32),
130
+ [ Opcodes.return ],
131
+ [ Opcodes.end ], */
132
+
133
+ [ Opcodes.br_if, 0 ]
134
+ ];
135
+
136
+ const generateChar = (node, negated, get) => {
137
+ return [
138
+ ...(get ? getNextChar() : []),
139
+ ...number(node.char.charCodeAt(0), Valtype.i32),
140
+ negated ? [ Opcodes.i32_eq ] : [ Opcodes.i32_ne ],
141
+ ...(get ? checkFailure(): [])
142
+ ];
143
+ };
144
+
145
+ const generateSet = (node, negated, get) => {
146
+ // for a single char we do not need a tmp, it is like just
147
+ const singleChar = node.body.length === 1 && node.body[0].type === 'Character';
148
+
149
+ let out = [
150
+ ...(get ? getNextChar() : []),
151
+ ...(singleChar ? [] : [ [ Opcodes.local_set, Tmp ] ]),
152
+ ];
153
+
154
+ for (const x of node.body) {
155
+ out = [
156
+ ...out,
157
+ ...(singleChar ? [] : [ [ Opcodes.local_get, Tmp ] ]),
158
+ ...generate(x, negated, false)
159
+ ];
160
+ }
161
+
162
+ out = out.concat(new Array(node.body.length - 1).fill(negated ? [ Opcodes.i32_or ] : [ Opcodes.i32_and ]));
163
+
164
+ return [
165
+ ...out,
166
+ ...checkFailure()
167
+ ];
168
+ };
169
+
170
+ const generateRange = (node, negated, get) => {
171
+ return [
172
+ ...(get ? getNextChar() : []),
173
+ ...(get ? [ [ Opcodes.local_tee, Tmp ] ] : []),
174
+
175
+ ...number(node.from.charCodeAt(0), Valtype.i32),
176
+ // negated ? [ Opcodes.i32_lt_s ] : [ Opcodes.i32_ge_s ],
177
+ negated ? [ Opcodes.i32_ge_s ] : [ Opcodes.i32_lt_s ],
178
+
179
+ [ Opcodes.local_get, Tmp ],
180
+ ...number(node.to.charCodeAt(0), Valtype.i32),
181
+ // negated ? [ Opcodes.i32_gt_s ] : [ Opcodes.i32_le_s ],
182
+ negated ? [ Opcodes.i32_le_s ] : [ Opcodes.i32_gt_s ],
183
+
184
+ negated ? [ Opcodes.i32_and ] : [ Opcodes.i32_or ],
185
+ ...(get ? checkFailure(): [])
186
+ ];
187
+ };
188
+
189
+ const generateGroup = (node, negated, get) => {
190
+
191
+ };
192
+
193
+ export const test = (regex, index = 0, name = 'regex_test_' + regex) => outputFunc(generate(parse(regex), false, true, 'test'), name, index);
194
+ export const search = (regex, index = 0, name = 'regex_search_' + regex) => outputFunc(generate(parse(regex), false, true, 'search'), name, index);
195
+
196
+ const outputFunc = (wasm, name, index) => ({
197
+ name,
198
+ index,
199
+ wasm,
200
+
201
+ export: true,
202
+ params: [ Valtype.i32 ],
203
+ returns: [ Valtype.i32 ],
204
+ returnType: 0xffffffffffff1, // boolean - todo: do not hardcode this
205
+ locals: {
206
+ basePointer: { idx: 0, type: Valtype.i32 },
207
+ iterPointer: { idx: 1, type: Valtype.i32 },
208
+ endPointer: { idx: 2, type: Valtype.i32 },
209
+ counter: { idx: 3, type: Valtype.i32 },
210
+ pointer: { idx: 4, type: Valtype.i32 },
211
+ length: { idx: 5, type: Valtype.i32 },
212
+ tmp: { idx: 6, type: Valtype.i32 },
213
+ }
214
+ });
@@ -0,0 +1,321 @@
1
+ const State = {
2
+ none: 0,
3
+ insideSet: 1
4
+ };
5
+
6
+ const Quantifiers = {
7
+ '*': [ 0 ], // 0 -
8
+ '+': [ 1 ], // 1 -
9
+ '?': [ 0, 1 ], // 0 - 1
10
+ };
11
+ const QuantifierKeys = Object.keys(Quantifiers);
12
+
13
+ const getArg = (name, def) => {
14
+ const arg = (typeof process !== 'undefined' ? process.argv : Deno.args).find(x => x.startsWith(`-${name}=`));
15
+ if (arg) return arg.split('=')[0];
16
+
17
+ return def;
18
+ };
19
+
20
+ // full is spec-compliant but slower. not needed most of the time. (evil)
21
+ const DotChars = () => ({
22
+ full: [ '\n', '\r', '\u2028', '\u2029' ],
23
+ simple: [ '\n', '\r' ],
24
+ fast: [ '\n' ]
25
+ })[getArg('regex-dot', 'fast')];
26
+
27
+ const WordChars = () => ({
28
+ full: [ [ 'a', 'z' ], [ 'A', 'Z' ], [ '0', '9' ], '_' ],
29
+ fast: [ [ '_', 'z' ], [ 'A', 'Z' ], [ '0', '9' ] ] // skip individual _ with _-z BUT it also matches '`'
30
+ })[getArg('regex-word', 'full')];
31
+
32
+ const WhitespaceChars = () => ({
33
+ full: [ ' ', '\t', '\n', '\r', '\u2028', '\u2029' ],
34
+ simple: [ ' ', '\t', '\n', '\r' ]
35
+ })[getArg('regex-ws', 'simple')];
36
+
37
+ const _Metachars = () => ({
38
+ unescaped: {
39
+ '.': [ DotChars(), true ], // dot
40
+ },
41
+ escaped: {
42
+ d: [ [ [ '0', '9' ] ], false ], // digit
43
+ D: [ [ [ '0', '9' ] ], true ], // not digit
44
+ w: [ WordChars(), false ], // word
45
+ W: [ WordChars(), true ], // not word
46
+ s: [ WhitespaceChars(), false ], // whitespace
47
+ S: [ WhitespaceChars(), true ], // not whitespace
48
+ }
49
+ });
50
+
51
+ const EscapeSequences = {
52
+ f: '\f',
53
+ n: '\n',
54
+ r: '\r',
55
+ t: '\t',
56
+ v: '\v',
57
+ '0': '\0'
58
+ };
59
+
60
+ const HexDigit = /[0-9a-fA-F]/;
61
+
62
+ export default str => {
63
+ const Metachars = _Metachars();
64
+
65
+ const out = {
66
+ type: 'Expression',
67
+ body: []
68
+ };
69
+ let node = out, parents = [];
70
+
71
+ let state = State.none, setIndex = 0, escape = false;
72
+ for (let i = 0; i < str.length; i++) {
73
+ const c = str[i];
74
+
75
+ const charNode = char => ({
76
+ type: 'Character',
77
+ char
78
+ });
79
+
80
+ const rangeNode = (from, to) => ({
81
+ type: 'Range',
82
+ from,
83
+ to
84
+ });
85
+
86
+ const addChar = (char = c) => {
87
+ node.body.push(charNode(char));
88
+ };
89
+
90
+ const addSet = (matches, negated = false) => {
91
+ let body = matches.map(x => x[1] ? rangeNode(x[0], x[1]) : charNode(x));
92
+ if (state === State.insideSet) {
93
+ // if negated, mark each node as negated for merge
94
+ if (negated) body = body.map(x => {
95
+ x.negated = true;
96
+ return x;
97
+ });
98
+
99
+ // already in set, merge bodies
100
+ node.body.push(...body);
101
+ return;
102
+ }
103
+
104
+ node.body.push({
105
+ type: 'Set',
106
+ body,
107
+ negated
108
+ });
109
+ };
110
+
111
+ const addMetachar = meta => {
112
+ const [ matches, negated = false ] = meta;
113
+ return addSet(matches, negated);
114
+ };
115
+
116
+ // get next char and consume it
117
+ const seek = (allowEscaped = true) => {
118
+ const cNext = str[++i];
119
+
120
+ if (cNext === '\\') return !allowEscaped ? undefined : [ str[++i], true ];
121
+ return !allowEscaped ? cNext : [ cNext, false ];
122
+ };
123
+
124
+ // get next char without consuming
125
+ const peek = (allowEscaped = true, offset = 0) => {
126
+ const cNext = str[i + 1 + offset];
127
+
128
+ if (cNext === '\\') return !allowEscaped ? undefined : [ str[i + 2 + offset], true ];
129
+ return !allowEscaped ? cNext : [ cNext, false ];
130
+ };
131
+
132
+ if (escape) {
133
+ escape = false;
134
+ if (EscapeSequences[c]) {
135
+ addChar(EscapeSequences[c]);
136
+ continue;
137
+ }
138
+
139
+ if (Metachars.escaped[c]) {
140
+ addMetachar(Metachars.escaped[c]);
141
+ continue;
142
+ }
143
+
144
+ if (c === 'c') {
145
+ // \c (not [A-Za-z] ...) = literal \c... (WHY)
146
+ const next = peek(false);
147
+ if (next == null || /[^a-zA-Z]/.test(next)) {
148
+ addChar('\\');
149
+ addChar('c');
150
+ continue;
151
+ }
152
+
153
+ // \c[A-Za-z]
154
+ const code = seek(false).charCodeAt(0);
155
+ addChar(String.fromCharCode(code % 32));
156
+ continue;
157
+ }
158
+
159
+ if (c === 'x') {
160
+ // \x = x
161
+ // \xH = xH
162
+ // \x[0-9a-zA-Z][0-9a-zA-Z] = \xAB
163
+ const next1 = peek(false);
164
+ const next2 = peek(false, 1);
165
+
166
+ // missing a char or invalid hex digit
167
+ if (next1 == null || next2 == null || !HexDigit.test(next1) || !HexDigit.test(next2)) {
168
+ addChar('x');
169
+ continue;
170
+ }
171
+
172
+ const code = parseInt(seek(false) + seek(false), 16);
173
+ addChar(String.fromCodePoint(code));
174
+ continue;
175
+ }
176
+
177
+ if (c === 'u') {
178
+ // '\u' = u
179
+ // '\uHHH' = uHHH
180
+ // '\uABCD' = \uABCD
181
+ const next1 = peek(false);
182
+ const next2 = peek(false, 1);
183
+ const next3 = peek(false, 2);
184
+ const next4 = peek(false, 3);
185
+
186
+ // missing a char or invalid hex digit
187
+ if (next1 == null || next2 == null || next3 == null || next4 == null || !HexDigit.test(next1) || !HexDigit.test(next2) || !HexDigit.test(next3) || !HexDigit.test(next4)) {
188
+ addChar('u');
189
+ continue;
190
+ }
191
+
192
+ const code = parseInt(seek(false) + seek(false) + seek(false) + seek(false), 16);
193
+ addChar(String.fromCodePoint(code));
194
+ continue;
195
+ }
196
+
197
+ addChar();
198
+ continue;
199
+ }
200
+
201
+ if (c === '\\') {
202
+ escape = true;
203
+ continue;
204
+ }
205
+
206
+ switch (state) {
207
+ case State.none:
208
+ if (c === '[') {
209
+ parents.push(node);
210
+ node = {
211
+ type: 'Set',
212
+ body: [],
213
+ negated: false
214
+ };
215
+
216
+ parents.at(-1).body.push(node);
217
+
218
+ state = State.insideSet;
219
+ setIndex = 0;
220
+ continue;
221
+ }
222
+
223
+ if (c === '(') {
224
+ parents.push(node);
225
+ node = {
226
+ type: 'Group',
227
+ body: []
228
+ };
229
+
230
+ parents.at(-1).body.push(node);
231
+ continue;
232
+ }
233
+
234
+ if (c === ')') {
235
+ if (node.type !== 'Group') throw new SyntaxError('Unmatched closing parenthesis');
236
+
237
+ node = parents.pop();
238
+ continue;
239
+ }
240
+
241
+ if (QuantifierKeys.includes(c)) {
242
+ node.body.at(-1).quantifier = Quantifiers[c];
243
+
244
+ // lazy modifier
245
+ if (peek(false) === '?') node.body.at(-1).lazy = true;
246
+
247
+ continue;
248
+ }
249
+
250
+ if (Metachars.unescaped[c]) {
251
+ addMetachar(Metachars.unescaped[c]);
252
+ continue;
253
+ }
254
+
255
+ addChar();
256
+ break;
257
+
258
+ case State.insideSet:
259
+ setIndex++;
260
+ if (setIndex === 1) {
261
+ // first char in set
262
+ if (c === '^') {
263
+ node.negated = true;
264
+ continue;
265
+ }
266
+ }
267
+
268
+ if (c === ']') {
269
+ state = State.none;
270
+ node = parents.pop();
271
+
272
+ continue;
273
+ }
274
+
275
+ // range
276
+ if (c === '-') {
277
+ // start of set (or not char), just literal -
278
+ if (node.body.at(-1)?.char == null) {
279
+ addChar(); // add -
280
+ continue;
281
+ }
282
+
283
+ const from = node.body.pop().char;
284
+ const [ to, escaped ] = seek();
285
+
286
+ // end of set, just literal -
287
+ if (to == null || (!escaped && to === ']')) {
288
+ addChar(from); // add from char back
289
+ i--; // rollback seek
290
+
291
+ addChar(); // add -
292
+ continue;
293
+ }
294
+
295
+ // next char was escaped and a metachar, just literal -
296
+ if (escaped && Metachars.escaped[to] != null) {
297
+ i -= 2; // rollback seek
298
+
299
+ addChar(); // add -
300
+ continue;
301
+ }
302
+
303
+ if (to < from) throw new SyntaxError('Range out of order');
304
+
305
+ node.body.push(rangeNode(from, to));
306
+ continue;
307
+ }
308
+
309
+ addChar();
310
+ break;
311
+ }
312
+ }
313
+
314
+ // still in a group by the end
315
+ if (node.type !== 'Expression') throw new SyntaxError('Unmatched opening parenthesis');
316
+
317
+ // still in a set by the end
318
+ if (state === State.insideSet) throw new SyntaxError('Unmatched opening square bracket');
319
+
320
+ return out;
321
+ };