functionalscript 0.37.0 → 0.38.0

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 (500) hide show
  1. package/README.md +1 -1
  2. package/{fs → fjs}/asn.1/proof.f.js +32 -94
  3. package/fjs/asserts/module.f.d.ts +36 -0
  4. package/fjs/asserts/module.f.js +39 -0
  5. package/fjs/asserts/proof.f.d.ts +11 -0
  6. package/fjs/asserts/proof.f.js +18 -0
  7. package/{fs → fjs}/base_n/proof.f.js +12 -36
  8. package/{fs → fjs}/basen/base64/proof.f.d.ts +1 -0
  9. package/{fs → fjs}/basen/base64/proof.f.js +15 -1
  10. package/{fs → fjs}/basen/cbase32/proof.f.js +15 -42
  11. package/fjs/bnf/data/module.f.d.ts +52 -0
  12. package/{fs → fjs}/bnf/data/module.f.js +53 -3
  13. package/{fs → fjs}/bnf/data/proof.f.d.ts +1 -0
  14. package/{fs → fjs}/bnf/data/proof.f.js +54 -19
  15. package/{fs → fjs}/bnf/descent/module.f.d.ts +4 -14
  16. package/fjs/bnf/descent/module.f.js +124 -0
  17. package/{fs → fjs}/bnf/descent/proof.f.d.ts +1 -0
  18. package/{fs → fjs}/bnf/descent/proof.f.js +55 -24
  19. package/{fs → fjs}/bnf/ll1/module.f.d.ts +4 -4
  20. package/{fs → fjs}/bnf/ll1/module.f.js +7 -5
  21. package/{fs → fjs}/bnf/ll1/proof.f.d.ts +1 -0
  22. package/{fs → fjs}/bnf/ll1/proof.f.js +27 -10
  23. package/{fs → fjs}/bnf/module.f.d.ts +19 -5
  24. package/{fs → fjs}/bnf/module.f.js +10 -11
  25. package/fjs/bnf/proof.f.js +69 -0
  26. package/{fs → fjs}/bnf/testlib.f.js +2 -2
  27. package/{fs → fjs}/cas/cli/proof.f.d.ts +4 -1
  28. package/{fs → fjs}/cas/cli/proof.f.js +29 -66
  29. package/fjs/cas/evo/mcp/module.f.d.ts +19 -0
  30. package/fjs/cas/evo/mcp/module.f.js +56 -0
  31. package/fjs/cas/evo/mcp/proof.f.d.ts +9 -0
  32. package/fjs/cas/evo/mcp/proof.f.js +95 -0
  33. package/fjs/cas/evo/module.f.d.ts +138 -0
  34. package/fjs/cas/evo/module.f.js +309 -0
  35. package/fjs/cas/evo/proof.f.d.ts +32 -0
  36. package/fjs/cas/evo/proof.f.js +453 -0
  37. package/fjs/cas/mcp/module.f.d.ts +49 -0
  38. package/{fs → fjs}/cas/mcp/module.f.js +54 -76
  39. package/{fs → fjs}/cas/mcp/proof.f.d.ts +4 -1
  40. package/{fs → fjs}/cas/mcp/proof.f.js +41 -13
  41. package/{fs → fjs}/cas/module.f.d.ts +10 -0
  42. package/{fs → fjs}/cas/module.f.js +27 -1
  43. package/{fs → fjs}/cas/proof.f.d.ts +4 -0
  44. package/{fs → fjs}/cas/proof.f.js +77 -86
  45. package/{fs → fjs}/ci/config/module.f.d.ts +5 -5
  46. package/{fs → fjs}/ci/config/module.f.js +5 -5
  47. package/{fs → fjs}/ci/proof.f.js +14 -9
  48. package/{fs → fjs}/ci/rust/module.f.js +9 -1
  49. package/{fs → fjs}/cli/proof.f.js +22 -63
  50. package/{fs → fjs}/common/monoid/proof.f.js +4 -9
  51. package/{fs → fjs}/crypto/hmac/proof.f.js +4 -12
  52. package/fjs/crypto/pow/proof.f.js +111 -0
  53. package/{fs → fjs}/crypto/secp/proof.f.js +12 -33
  54. package/{fs → fjs}/crypto/sha2/proof.f.js +18 -49
  55. package/{fs → fjs}/crypto/sign/module.f.d.ts +0 -5
  56. package/{fs → fjs}/crypto/sign/module.f.js +7 -4
  57. package/{fs → fjs}/crypto/sign/proof.f.js +36 -105
  58. package/{fs → fjs}/crypto/vdf/proof.f.js +22 -63
  59. package/{fs → fjs}/dev/package_json/proof.f.js +7 -7
  60. package/{fs → fjs}/dev/proof.f.js +2 -4
  61. package/{fs → fjs}/djs/ast/proof.f.js +4 -12
  62. package/{fs → fjs}/djs/parser/module.f.d.ts +5 -0
  63. package/{fs → fjs}/djs/parser/module.f.js +20 -0
  64. package/{fs → fjs}/djs/parser/proof.f.js +138 -400
  65. package/{fs → fjs}/djs/proof.f.js +13 -36
  66. package/{fs → fjs}/djs/serializer/proof.f.js +14 -39
  67. package/fjs/djs/tokenizer/module.f.d.ts +24 -0
  68. package/fjs/djs/tokenizer/module.f.js +472 -0
  69. package/{fs/djs/tokenizer-new → fjs/djs/tokenizer}/proof.f.d.ts +4 -3
  70. package/{fs/djs/tokenizer-new → fjs/djs/tokenizer}/proof.f.js +446 -445
  71. package/{fs → fjs}/djs/transpiler/proof.f.d.ts +3 -0
  72. package/{fs → fjs}/djs/transpiler/proof.f.js +29 -30
  73. package/{fs → fjs}/effects/memory/proof.f.js +8 -21
  74. package/{fs → fjs}/effects/node/memory/proof.js +5 -12
  75. package/{fs → fjs}/effects/node/module.d.ts +1 -1
  76. package/{fs → fjs}/effects/node/module.f.d.ts +1 -1
  77. package/{fs → fjs}/effects/node/module.js +3 -3
  78. package/{fs → fjs}/effects/node/proof.f.d.ts +1 -0
  79. package/{fs → fjs}/effects/node/proof.f.js +106 -292
  80. package/{fs → fjs}/effects/node/virtual/proof.f.d.ts +1 -0
  81. package/{fs → fjs}/effects/node/virtual/proof.f.js +36 -29
  82. package/{fs → fjs}/effects/proof.f.js +16 -45
  83. package/{fs → fjs}/emergent_testing/proof.f.js +7 -7
  84. package/{fs → fjs}/fsc/proof.f.js +12 -34
  85. package/{fs → fjs}/fsm/proof.f.js +5 -12
  86. package/{fs → fjs}/mcp/module.f.d.ts +7 -0
  87. package/{fs → fjs}/mcp/module.f.js +9 -2
  88. package/{fs → fjs}/mcp/proof.f.js +12 -12
  89. package/{fs → fjs}/mcp/stdio/module.f.d.ts +2 -2
  90. package/{fs → fjs}/mcp/stdio/module.f.js +2 -2
  91. package/{fs → fjs}/media/html/proof.f.js +12 -33
  92. package/{fs → fjs}/media/json/parser/module.f.d.ts +5 -0
  93. package/{fs → fjs}/media/json/parser/module.f.js +14 -0
  94. package/{fs → fjs}/media/json/parser/proof.f.js +39 -114
  95. package/{fs → fjs}/media/json/rpc/module.f.js +1 -1
  96. package/{fs → fjs}/media/json/schema/module.f.d.ts +2 -2
  97. package/{fs → fjs}/media/json/schema/module.f.js +23 -39
  98. package/{fs → fjs}/media/json/schema/proof.f.js +3 -6
  99. package/{fs → fjs}/media/json/serializer/proof.f.js +10 -27
  100. package/{fs → fjs}/media/module.f.d.ts +6 -6
  101. package/{fs → fjs}/media/module.f.js +3 -4
  102. package/{fs → fjs}/media/proof.f.js +5 -4
  103. package/{fs → fjs}/media/revision/module.f.d.ts +31 -4
  104. package/{fs → fjs}/media/revision/module.f.js +35 -23
  105. package/{fs → fjs}/media/revision/proof.f.d.ts +10 -8
  106. package/fjs/media/revision/proof.f.js +140 -0
  107. package/{fs → fjs}/media/type/proof.f.js +2 -6
  108. package/{fs → fjs}/module.f.js +1 -1
  109. package/{fs → fjs}/path/proof.f.js +27 -78
  110. package/{fs → fjs}/proof.f.js +2 -0
  111. package/{fs → fjs}/sul/id/proof.f.js +7 -21
  112. package/{fs → fjs}/sul/level/hash/proof.f.js +5 -5
  113. package/{fs → fjs}/sul/level/literal/proof.f.js +12 -26
  114. package/fjs/text/ascii/proof.f.d.ts +6 -0
  115. package/{fs → fjs}/text/ascii/proof.f.js +4 -14
  116. package/{fs → fjs}/text/code_point/module.f.js +10 -10
  117. package/{fs → fjs}/text/proof.f.js +4 -9
  118. package/{fs → fjs}/text/sgr/proof.f.js +6 -15
  119. package/{fs → fjs}/text/utf16/module.f.js +1 -1
  120. package/{fs → fjs}/text/utf16/proof.f.js +23 -66
  121. package/{fs → fjs}/text/utf8/proof.f.js +56 -125
  122. package/{fs → fjs}/types/array/proof.f.js +18 -52
  123. package/fjs/types/bigfloat/proof.f.js +217 -0
  124. package/{fs → fjs}/types/bigint/proof.f.js +49 -145
  125. package/{fs → fjs}/types/bit_vec/proof.f.js +72 -214
  126. package/{fs → fjs}/types/btree/find/proof.f.js +23 -66
  127. package/{fs → fjs}/types/btree/proof.f.js +5 -12
  128. package/{fs → fjs}/types/btree/remove/proof.f.d.ts +2 -0
  129. package/{fs → fjs}/types/btree/remove/proof.f.js +83 -230
  130. package/{fs → fjs}/types/btree/set/module.f.js +5 -2
  131. package/{fs → fjs}/types/btree/set/proof.f.js +35 -24
  132. package/{fs → fjs}/types/byte_set/proof.f.js +22 -63
  133. package/{fs → fjs}/types/function/compare/proof.f.js +13 -36
  134. package/{fs → fjs}/types/function/operator/proof.f.js +17 -48
  135. package/{fs → fjs}/types/function/proof.f.js +2 -3
  136. package/{fs → fjs}/types/list/proof.f.js +55 -163
  137. package/{fs → fjs}/types/map/proof.f.js +4 -12
  138. package/{fs → fjs}/types/nibble_set/proof.f.js +16 -45
  139. package/{fs → fjs}/types/nominal/proof.f.js +5 -10
  140. package/fjs/types/nullable/proof.f.js +29 -0
  141. package/{fs → fjs}/types/number/proof.f.js +9 -24
  142. package/{fs → fjs}/types/object/proof.f.js +3 -6
  143. package/{fs → fjs}/types/patricia_trie/proof.f.js +21 -21
  144. package/{fs → fjs}/types/prime_field/module.f.js +2 -7
  145. package/{fs → fjs}/types/range/module.f.d.ts +1 -1
  146. package/fjs/types/range/module.f.js +2 -0
  147. package/fjs/types/range/proof.f.js +9 -0
  148. package/{fs → fjs}/types/range_map/proof.f.js +28 -81
  149. package/{fs → fjs}/types/result/proof.f.d.ts +3 -2
  150. package/fjs/types/result/proof.f.js +31 -0
  151. package/{fs → fjs}/types/rtti/common/module.f.d.ts +36 -1
  152. package/{fs → fjs}/types/rtti/common/module.f.js +44 -0
  153. package/fjs/types/rtti/common/proof.f.d.ts +8 -0
  154. package/fjs/types/rtti/common/proof.f.js +51 -0
  155. package/{fs → fjs}/types/rtti/parse/module.f.js +13 -22
  156. package/{fs → fjs}/types/rtti/parse/proof.f.js +7 -18
  157. package/{fs → fjs}/types/rtti/ts/module.f.d.ts +10 -4
  158. package/{fs → fjs}/types/rtti/validate/module.f.js +8 -29
  159. package/{fs → fjs}/types/rtti/validate/proof.f.js +4 -9
  160. package/{fs → fjs}/types/sorted_list/proof.f.js +8 -21
  161. package/{fs → fjs}/types/sorted_set/proof.f.js +14 -39
  162. package/fjs/types/string/proof.f.js +77 -0
  163. package/fjs/types/string_set/proof.f.js +43 -0
  164. package/{fs → fjs}/types/ts/proof.f.js +15 -42
  165. package/{fs → fjs}/types/uint8array/module.f.js +7 -7
  166. package/{fs → fjs}/types/uint8array/proof.f.d.ts +4 -1
  167. package/{fs → fjs}/types/uint8array/proof.f.js +7 -7
  168. package/{fs → fjs}/website/proof.f.js +3 -6
  169. package/package.json +6 -6
  170. package/fs/asserts/module.f.d.ts +0 -4
  171. package/fs/asserts/module.f.js +0 -9
  172. package/fs/asserts/proof.f.d.ts +0 -8
  173. package/fs/asserts/proof.f.js +0 -51
  174. package/fs/bnf/data/module.f.d.ts +0 -30
  175. package/fs/bnf/descent/module.f.js +0 -119
  176. package/fs/bnf/proof.f.js +0 -104
  177. package/fs/cas/mcp/module.f.d.ts +0 -36
  178. package/fs/crypto/pow/proof.f.js +0 -161
  179. package/fs/djs/tokenizer/module.f.d.ts +0 -12
  180. package/fs/djs/tokenizer/module.f.js +0 -62
  181. package/fs/djs/tokenizer/proof.f.d.ts +0 -7
  182. package/fs/djs/tokenizer/proof.f.js +0 -543
  183. package/fs/djs/tokenizer-new/module.f.d.ts +0 -3
  184. package/fs/djs/tokenizer-new/module.f.js +0 -155
  185. package/fs/media/revision/proof.f.js +0 -119
  186. package/fs/text/ascii/proof.f.d.ts +0 -4
  187. package/fs/types/bigfloat/proof.f.js +0 -348
  188. package/fs/types/nullable/proof.f.js +0 -50
  189. package/fs/types/range/module.f.js +0 -2
  190. package/fs/types/range/proof.f.js +0 -18
  191. package/fs/types/result/proof.f.js +0 -52
  192. package/fs/types/string/proof.f.js +0 -118
  193. package/fs/types/string_set/proof.f.js +0 -82
  194. /package/{fs → fjs}/asn.1/module.f.d.ts +0 -0
  195. /package/{fs → fjs}/asn.1/module.f.js +0 -0
  196. /package/{fs → fjs}/asn.1/proof.f.d.ts +0 -0
  197. /package/{fs → fjs}/base_n/module.f.d.ts +0 -0
  198. /package/{fs → fjs}/base_n/module.f.js +0 -0
  199. /package/{fs → fjs}/base_n/proof.f.d.ts +0 -0
  200. /package/{fs → fjs}/basen/base128/module.f.d.ts +0 -0
  201. /package/{fs → fjs}/basen/base128/module.f.js +0 -0
  202. /package/{fs → fjs}/basen/base128/proof.f.d.ts +0 -0
  203. /package/{fs → fjs}/basen/base128/proof.f.js +0 -0
  204. /package/{fs → fjs}/basen/base64/module.f.d.ts +0 -0
  205. /package/{fs → fjs}/basen/base64/module.f.js +0 -0
  206. /package/{fs → fjs}/basen/cbase32/module.f.d.ts +0 -0
  207. /package/{fs → fjs}/basen/cbase32/module.f.js +0 -0
  208. /package/{fs → fjs}/basen/cbase32/proof.f.d.ts +0 -0
  209. /package/{fs → fjs}/bnf/proof.f.d.ts +0 -0
  210. /package/{fs → fjs}/bnf/testlib.f.d.ts +0 -0
  211. /package/{fs → fjs}/cas/cli/module.f.d.ts +0 -0
  212. /package/{fs → fjs}/cas/cli/module.f.js +0 -0
  213. /package/{fs → fjs}/ci/bun/module.f.d.ts +0 -0
  214. /package/{fs → fjs}/ci/bun/module.f.js +0 -0
  215. /package/{fs → fjs}/ci/common/module.f.d.ts +0 -0
  216. /package/{fs → fjs}/ci/common/module.f.js +0 -0
  217. /package/{fs → fjs}/ci/deno/module.f.d.ts +0 -0
  218. /package/{fs → fjs}/ci/deno/module.f.js +0 -0
  219. /package/{fs → fjs}/ci/module.f.d.ts +0 -0
  220. /package/{fs → fjs}/ci/module.f.js +0 -0
  221. /package/{fs → fjs}/ci/node/module.f.d.ts +0 -0
  222. /package/{fs → fjs}/ci/node/module.f.js +0 -0
  223. /package/{fs → fjs}/ci/playwright/module.f.d.ts +0 -0
  224. /package/{fs → fjs}/ci/playwright/module.f.js +0 -0
  225. /package/{fs → fjs}/ci/proof.f.d.ts +0 -0
  226. /package/{fs → fjs}/ci/rust/module.f.d.ts +0 -0
  227. /package/{fs → fjs}/cli/module.f.d.ts +0 -0
  228. /package/{fs → fjs}/cli/module.f.js +0 -0
  229. /package/{fs → fjs}/cli/proof.f.d.ts +0 -0
  230. /package/{fs → fjs}/common/monoid/module.f.d.ts +0 -0
  231. /package/{fs → fjs}/common/monoid/module.f.js +0 -0
  232. /package/{fs → fjs}/common/monoid/proof.f.d.ts +0 -0
  233. /package/{fs → fjs}/crypto/hmac/module.f.d.ts +0 -0
  234. /package/{fs → fjs}/crypto/hmac/module.f.js +0 -0
  235. /package/{fs → fjs}/crypto/hmac/proof.f.d.ts +0 -0
  236. /package/{fs → fjs}/crypto/pow/module.f.d.ts +0 -0
  237. /package/{fs → fjs}/crypto/pow/module.f.js +0 -0
  238. /package/{fs → fjs}/crypto/pow/proof.f.d.ts +0 -0
  239. /package/{fs → fjs}/crypto/secp/module.f.d.ts +0 -0
  240. /package/{fs → fjs}/crypto/secp/module.f.js +0 -0
  241. /package/{fs → fjs}/crypto/secp/proof.f.d.ts +0 -0
  242. /package/{fs → fjs}/crypto/sha2/module.f.d.ts +0 -0
  243. /package/{fs → fjs}/crypto/sha2/module.f.js +0 -0
  244. /package/{fs → fjs}/crypto/sha2/proof.f.d.ts +0 -0
  245. /package/{fs → fjs}/crypto/sign/proof.f.d.ts +0 -0
  246. /package/{fs → fjs}/crypto/vdf/module.f.d.ts +0 -0
  247. /package/{fs → fjs}/crypto/vdf/module.f.js +0 -0
  248. /package/{fs → fjs}/crypto/vdf/proof.f.d.ts +0 -0
  249. /package/{fs → fjs}/dev/module.f.d.ts +0 -0
  250. /package/{fs → fjs}/dev/module.f.js +0 -0
  251. /package/{fs → fjs}/dev/package_json/module.f.d.ts +0 -0
  252. /package/{fs → fjs}/dev/package_json/module.f.js +0 -0
  253. /package/{fs → fjs}/dev/package_json/proof.f.d.ts +0 -0
  254. /package/{fs → fjs}/dev/proof.f.d.ts +0 -0
  255. /package/{fs → fjs}/djs/ast/module.f.d.ts +0 -0
  256. /package/{fs → fjs}/djs/ast/module.f.js +0 -0
  257. /package/{fs → fjs}/djs/ast/proof.f.d.ts +0 -0
  258. /package/{fs → fjs}/djs/examples/input.f.d.ts +0 -0
  259. /package/{fs → fjs}/djs/examples/input.f.js +0 -0
  260. /package/{fs → fjs}/djs/examples/m.f.d.ts +0 -0
  261. /package/{fs → fjs}/djs/examples/m.f.js +0 -0
  262. /package/{fs → fjs}/djs/module.f.d.ts +0 -0
  263. /package/{fs → fjs}/djs/module.f.js +0 -0
  264. /package/{fs → fjs}/djs/parser/proof.f.d.ts +0 -0
  265. /package/{fs → fjs}/djs/proof.f.d.ts +0 -0
  266. /package/{fs → fjs}/djs/serializer/module.f.d.ts +0 -0
  267. /package/{fs → fjs}/djs/serializer/module.f.js +0 -0
  268. /package/{fs → fjs}/djs/serializer/proof.f.d.ts +0 -0
  269. /package/{fs → fjs}/djs/transpiler/module.f.d.ts +0 -0
  270. /package/{fs → fjs}/djs/transpiler/module.f.js +0 -0
  271. /package/{fs → fjs}/effects/list/module.f.d.ts +0 -0
  272. /package/{fs → fjs}/effects/list/module.f.js +0 -0
  273. /package/{fs → fjs}/effects/memory/module.f.d.ts +0 -0
  274. /package/{fs → fjs}/effects/memory/module.f.js +0 -0
  275. /package/{fs → fjs}/effects/memory/proof.f.d.ts +0 -0
  276. /package/{fs → fjs}/effects/mock/module.f.d.ts +0 -0
  277. /package/{fs → fjs}/effects/mock/module.f.js +0 -0
  278. /package/{fs → fjs}/effects/module.d.ts +0 -0
  279. /package/{fs → fjs}/effects/module.f.d.ts +0 -0
  280. /package/{fs → fjs}/effects/module.f.js +0 -0
  281. /package/{fs → fjs}/effects/module.js +0 -0
  282. /package/{fs → fjs}/effects/node/memory/module.d.ts +0 -0
  283. /package/{fs → fjs}/effects/node/memory/module.js +0 -0
  284. /package/{fs → fjs}/effects/node/memory/proof.d.ts +0 -0
  285. /package/{fs → fjs}/effects/node/module.f.js +0 -0
  286. /package/{fs → fjs}/effects/node/virtual/module.f.d.ts +0 -0
  287. /package/{fs → fjs}/effects/node/virtual/module.f.js +0 -0
  288. /package/{fs → fjs}/effects/proof.f.d.ts +0 -0
  289. /package/{fs → fjs}/emergent_testing/all.test.d.ts +0 -0
  290. /package/{fs → fjs}/emergent_testing/all.test.js +0 -0
  291. /package/{fs → fjs}/emergent_testing/example.f.d.ts +0 -0
  292. /package/{fs → fjs}/emergent_testing/example.f.js +0 -0
  293. /package/{fs → fjs}/emergent_testing/module.f.d.ts +0 -0
  294. /package/{fs → fjs}/emergent_testing/module.f.js +0 -0
  295. /package/{fs → fjs}/emergent_testing/proof.f.d.ts +0 -0
  296. /package/{fs → fjs}/emergent_testing/scenarios/all.d.ts +0 -0
  297. /package/{fs → fjs}/emergent_testing/scenarios/all.js +0 -0
  298. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.fail.d.ts +0 -0
  299. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.fail.js +0 -0
  300. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.pass.d.ts +0 -0
  301. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.pass.js +0 -0
  302. /package/{fs → fjs}/emergent_testing/scenarios/async.fail.d.ts +0 -0
  303. /package/{fs → fjs}/emergent_testing/scenarios/async.fail.js +0 -0
  304. /package/{fs → fjs}/emergent_testing/scenarios/async.pass.d.ts +0 -0
  305. /package/{fs → fjs}/emergent_testing/scenarios/async.pass.js +0 -0
  306. /package/{fs → fjs}/emergent_testing/scenarios/fail.fail.d.ts +0 -0
  307. /package/{fs → fjs}/emergent_testing/scenarios/fail.fail.js +0 -0
  308. /package/{fs → fjs}/emergent_testing/scenarios/return-value.pass.d.ts +0 -0
  309. /package/{fs → fjs}/emergent_testing/scenarios/return-value.pass.js +0 -0
  310. /package/{fs → fjs}/emergent_testing/scenarios/thenable.pass.d.ts +0 -0
  311. /package/{fs → fjs}/emergent_testing/scenarios/thenable.pass.js +0 -0
  312. /package/{fs → fjs}/emergent_testing/scenarios/thenable2.pass.d.ts +0 -0
  313. /package/{fs → fjs}/emergent_testing/scenarios/thenable2.pass.js +0 -0
  314. /package/{fs → fjs}/emergent_testing/scenarios/throw.pass.d.ts +0 -0
  315. /package/{fs → fjs}/emergent_testing/scenarios/throw.pass.js +0 -0
  316. /package/{fs → fjs}/fsc/bnf.f.d.ts +0 -0
  317. /package/{fs → fjs}/fsc/bnf.f.js +0 -0
  318. /package/{fs → fjs}/fsc/json.f.d.ts +0 -0
  319. /package/{fs → fjs}/fsc/json.f.js +0 -0
  320. /package/{fs → fjs}/fsc/module.f.d.ts +0 -0
  321. /package/{fs → fjs}/fsc/module.f.js +0 -0
  322. /package/{fs → fjs}/fsc/proof.f.d.ts +0 -0
  323. /package/{fs → fjs}/fsm/module.f.d.ts +0 -0
  324. /package/{fs → fjs}/fsm/module.f.js +0 -0
  325. /package/{fs → fjs}/fsm/proof.f.d.ts +0 -0
  326. /package/{fs → fjs}/js/tokenizer/module.f.d.ts +0 -0
  327. /package/{fs → fjs}/js/tokenizer/module.f.js +0 -0
  328. /package/{fs → fjs}/js/tokenizer/proof.f.d.ts +0 -0
  329. /package/{fs → fjs}/js/tokenizer/proof.f.js +0 -0
  330. /package/{fs → fjs}/mcp/proof.f.d.ts +0 -0
  331. /package/{fs → fjs}/mcp/stdio/proof.f.d.ts +0 -0
  332. /package/{fs → fjs}/mcp/stdio/proof.f.js +0 -0
  333. /package/{fs → fjs}/media/html/module.f.d.ts +0 -0
  334. /package/{fs → fjs}/media/html/module.f.js +0 -0
  335. /package/{fs → fjs}/media/html/proof.f.d.ts +0 -0
  336. /package/{fs → fjs}/media/json/module.f.d.ts +0 -0
  337. /package/{fs → fjs}/media/json/module.f.js +0 -0
  338. /package/{fs → fjs}/media/json/parser/proof.f.d.ts +0 -0
  339. /package/{fs → fjs}/media/json/proof.f.d.ts +0 -0
  340. /package/{fs → fjs}/media/json/proof.f.js +0 -0
  341. /package/{fs → fjs}/media/json/rpc/module.f.d.ts +0 -0
  342. /package/{fs → fjs}/media/json/rpc/proof.f.d.ts +0 -0
  343. /package/{fs → fjs}/media/json/rpc/proof.f.js +0 -0
  344. /package/{fs → fjs}/media/json/schema/proof.f.d.ts +0 -0
  345. /package/{fs → fjs}/media/json/serializer/module.f.d.ts +0 -0
  346. /package/{fs → fjs}/media/json/serializer/module.f.js +0 -0
  347. /package/{fs → fjs}/media/json/serializer/proof.f.d.ts +0 -0
  348. /package/{fs → fjs}/media/json/tokenizer/module.f.d.ts +0 -0
  349. /package/{fs → fjs}/media/json/tokenizer/module.f.js +0 -0
  350. /package/{fs → fjs}/media/json/tokenizer/proof.f.d.ts +0 -0
  351. /package/{fs → fjs}/media/json/tokenizer/proof.f.js +0 -0
  352. /package/{fs → fjs}/media/proof.f.d.ts +0 -0
  353. /package/{fs → fjs}/media/type/module.f.d.ts +0 -0
  354. /package/{fs → fjs}/media/type/module.f.js +0 -0
  355. /package/{fs → fjs}/media/type/proof.f.d.ts +0 -0
  356. /package/{fs → fjs}/module.d.ts +0 -0
  357. /package/{fs → fjs}/module.f.d.ts +0 -0
  358. /package/{fs → fjs}/module.js +0 -0
  359. /package/{fs → fjs}/path/module.f.d.ts +0 -0
  360. /package/{fs → fjs}/path/module.f.js +0 -0
  361. /package/{fs → fjs}/path/proof.f.d.ts +0 -0
  362. /package/{fs → fjs}/proof.f.d.ts +0 -0
  363. /package/{fs → fjs}/sul/id/module.f.d.ts +0 -0
  364. /package/{fs → fjs}/sul/id/module.f.js +0 -0
  365. /package/{fs → fjs}/sul/id/proof.f.d.ts +0 -0
  366. /package/{fs → fjs}/sul/level/hash/module.f.d.ts +0 -0
  367. /package/{fs → fjs}/sul/level/hash/module.f.js +0 -0
  368. /package/{fs → fjs}/sul/level/hash/proof.f.d.ts +0 -0
  369. /package/{fs → fjs}/sul/level/literal/module.f.d.ts +0 -0
  370. /package/{fs → fjs}/sul/level/literal/module.f.js +0 -0
  371. /package/{fs → fjs}/sul/level/literal/proof.f.d.ts +0 -0
  372. /package/{fs → fjs}/sul/module.f.d.ts +0 -0
  373. /package/{fs → fjs}/sul/module.f.js +0 -0
  374. /package/{fs → fjs}/sul/proof.f.d.ts +0 -0
  375. /package/{fs → fjs}/sul/proof.f.js +0 -0
  376. /package/{fs → fjs}/text/ascii/module.f.d.ts +0 -0
  377. /package/{fs → fjs}/text/ascii/module.f.js +0 -0
  378. /package/{fs → fjs}/text/code_point/module.f.d.ts +0 -0
  379. /package/{fs → fjs}/text/code_point/proof.f.d.ts +0 -0
  380. /package/{fs → fjs}/text/code_point/proof.f.js +0 -0
  381. /package/{fs → fjs}/text/module.f.d.ts +0 -0
  382. /package/{fs → fjs}/text/module.f.js +0 -0
  383. /package/{fs → fjs}/text/proof.f.d.ts +0 -0
  384. /package/{fs → fjs}/text/sgr/module.f.d.ts +0 -0
  385. /package/{fs → fjs}/text/sgr/module.f.js +0 -0
  386. /package/{fs → fjs}/text/sgr/proof.f.d.ts +0 -0
  387. /package/{fs → fjs}/text/utf16/module.f.d.ts +0 -0
  388. /package/{fs → fjs}/text/utf16/proof.f.d.ts +0 -0
  389. /package/{fs → fjs}/text/utf8/module.f.d.ts +0 -0
  390. /package/{fs → fjs}/text/utf8/module.f.js +0 -0
  391. /package/{fs → fjs}/text/utf8/proof.f.d.ts +0 -0
  392. /package/{fs → fjs}/types/array/module.f.d.ts +0 -0
  393. /package/{fs → fjs}/types/array/module.f.js +0 -0
  394. /package/{fs → fjs}/types/array/proof.f.d.ts +0 -0
  395. /package/{fs → fjs}/types/bigfloat/module.f.d.ts +0 -0
  396. /package/{fs → fjs}/types/bigfloat/module.f.js +0 -0
  397. /package/{fs → fjs}/types/bigfloat/proof.f.d.ts +0 -0
  398. /package/{fs → fjs}/types/bigint/module.f.d.ts +0 -0
  399. /package/{fs → fjs}/types/bigint/module.f.js +0 -0
  400. /package/{fs → fjs}/types/bigint/proof.f.d.ts +0 -0
  401. /package/{fs → fjs}/types/bit_vec/module.f.d.ts +0 -0
  402. /package/{fs → fjs}/types/bit_vec/module.f.js +0 -0
  403. /package/{fs → fjs}/types/bit_vec/proof.f.d.ts +0 -0
  404. /package/{fs → fjs}/types/btree/find/module.f.d.ts +0 -0
  405. /package/{fs → fjs}/types/btree/find/module.f.js +0 -0
  406. /package/{fs → fjs}/types/btree/find/proof.f.d.ts +0 -0
  407. /package/{fs → fjs}/types/btree/module.f.d.ts +0 -0
  408. /package/{fs → fjs}/types/btree/module.f.js +0 -0
  409. /package/{fs → fjs}/types/btree/proof.f.d.ts +0 -0
  410. /package/{fs → fjs}/types/btree/remove/module.f.d.ts +0 -0
  411. /package/{fs → fjs}/types/btree/remove/module.f.js +0 -0
  412. /package/{fs → fjs}/types/btree/set/module.f.d.ts +0 -0
  413. /package/{fs → fjs}/types/btree/set/proof.f.d.ts +0 -0
  414. /package/{fs → fjs}/types/btree/types/module.f.d.ts +0 -0
  415. /package/{fs → fjs}/types/btree/types/module.f.js +0 -0
  416. /package/{fs → fjs}/types/byte_set/module.f.d.ts +0 -0
  417. /package/{fs → fjs}/types/byte_set/module.f.js +0 -0
  418. /package/{fs → fjs}/types/byte_set/proof.f.d.ts +0 -0
  419. /package/{fs → fjs}/types/function/compare/module.f.d.ts +0 -0
  420. /package/{fs → fjs}/types/function/compare/module.f.js +0 -0
  421. /package/{fs → fjs}/types/function/compare/proof.f.d.ts +0 -0
  422. /package/{fs → fjs}/types/function/module.f.d.ts +0 -0
  423. /package/{fs → fjs}/types/function/module.f.js +0 -0
  424. /package/{fs → fjs}/types/function/operator/module.f.d.ts +0 -0
  425. /package/{fs → fjs}/types/function/operator/module.f.js +0 -0
  426. /package/{fs → fjs}/types/function/operator/proof.f.d.ts +0 -0
  427. /package/{fs → fjs}/types/function/proof.f.d.ts +0 -0
  428. /package/{fs → fjs}/types/list/module.f.d.ts +0 -0
  429. /package/{fs → fjs}/types/list/module.f.js +0 -0
  430. /package/{fs → fjs}/types/list/proof.f.d.ts +0 -0
  431. /package/{fs → fjs}/types/map/module.f.d.ts +0 -0
  432. /package/{fs → fjs}/types/map/module.f.js +0 -0
  433. /package/{fs → fjs}/types/map/proof.f.d.ts +0 -0
  434. /package/{fs → fjs}/types/nibble_set/module.f.d.ts +0 -0
  435. /package/{fs → fjs}/types/nibble_set/module.f.js +0 -0
  436. /package/{fs → fjs}/types/nibble_set/proof.f.d.ts +0 -0
  437. /package/{fs → fjs}/types/nominal/module.f.d.ts +0 -0
  438. /package/{fs → fjs}/types/nominal/module.f.js +0 -0
  439. /package/{fs → fjs}/types/nominal/proof.f.d.ts +0 -0
  440. /package/{fs → fjs}/types/nullable/module.f.d.ts +0 -0
  441. /package/{fs → fjs}/types/nullable/module.f.js +0 -0
  442. /package/{fs → fjs}/types/nullable/proof.f.d.ts +0 -0
  443. /package/{fs → fjs}/types/number/module.f.d.ts +0 -0
  444. /package/{fs → fjs}/types/number/module.f.js +0 -0
  445. /package/{fs → fjs}/types/number/proof.f.d.ts +0 -0
  446. /package/{fs → fjs}/types/object/module.f.d.ts +0 -0
  447. /package/{fs → fjs}/types/object/module.f.js +0 -0
  448. /package/{fs → fjs}/types/object/proof.f.d.ts +0 -0
  449. /package/{fs → fjs}/types/option/module.f.d.ts +0 -0
  450. /package/{fs → fjs}/types/option/module.f.js +0 -0
  451. /package/{fs → fjs}/types/ordered_map/module.f.d.ts +0 -0
  452. /package/{fs → fjs}/types/ordered_map/module.f.js +0 -0
  453. /package/{fs → fjs}/types/ordered_map/proof.f.d.ts +0 -0
  454. /package/{fs → fjs}/types/ordered_map/proof.f.js +0 -0
  455. /package/{fs → fjs}/types/patricia_trie/module.f.d.ts +0 -0
  456. /package/{fs → fjs}/types/patricia_trie/module.f.js +0 -0
  457. /package/{fs → fjs}/types/patricia_trie/proof.f.d.ts +0 -0
  458. /package/{fs → fjs}/types/phantom/module.f.d.ts +0 -0
  459. /package/{fs → fjs}/types/phantom/module.f.js +0 -0
  460. /package/{fs → fjs}/types/prime_field/module.f.d.ts +0 -0
  461. /package/{fs → fjs}/types/prime_field/proof.f.d.ts +0 -0
  462. /package/{fs → fjs}/types/prime_field/proof.f.js +0 -0
  463. /package/{fs → fjs}/types/range/proof.f.d.ts +0 -0
  464. /package/{fs → fjs}/types/range_map/module.f.d.ts +0 -0
  465. /package/{fs → fjs}/types/range_map/module.f.js +0 -0
  466. /package/{fs → fjs}/types/range_map/proof.f.d.ts +0 -0
  467. /package/{fs → fjs}/types/result/module.d.ts +0 -0
  468. /package/{fs → fjs}/types/result/module.f.d.ts +0 -0
  469. /package/{fs → fjs}/types/result/module.f.js +0 -0
  470. /package/{fs → fjs}/types/result/module.js +0 -0
  471. /package/{fs → fjs}/types/rtti/module.f.d.ts +0 -0
  472. /package/{fs → fjs}/types/rtti/module.f.js +0 -0
  473. /package/{fs → fjs}/types/rtti/parse/module.f.d.ts +0 -0
  474. /package/{fs → fjs}/types/rtti/parse/proof.f.d.ts +0 -0
  475. /package/{fs → fjs}/types/rtti/proof.f.d.ts +0 -0
  476. /package/{fs → fjs}/types/rtti/proof.f.js +0 -0
  477. /package/{fs → fjs}/types/rtti/ts/module.f.js +0 -0
  478. /package/{fs → fjs}/types/rtti/ts/proof.f.d.ts +0 -0
  479. /package/{fs → fjs}/types/rtti/ts/proof.f.js +0 -0
  480. /package/{fs → fjs}/types/rtti/validate/module.f.d.ts +0 -0
  481. /package/{fs → fjs}/types/rtti/validate/proof.f.d.ts +0 -0
  482. /package/{fs → fjs}/types/sorted_list/module.f.d.ts +0 -0
  483. /package/{fs → fjs}/types/sorted_list/module.f.js +0 -0
  484. /package/{fs → fjs}/types/sorted_list/proof.f.d.ts +0 -0
  485. /package/{fs → fjs}/types/sorted_set/module.f.d.ts +0 -0
  486. /package/{fs → fjs}/types/sorted_set/module.f.js +0 -0
  487. /package/{fs → fjs}/types/sorted_set/proof.f.d.ts +0 -0
  488. /package/{fs → fjs}/types/string/module.f.d.ts +0 -0
  489. /package/{fs → fjs}/types/string/module.f.js +0 -0
  490. /package/{fs → fjs}/types/string/proof.f.d.ts +0 -0
  491. /package/{fs → fjs}/types/string_set/module.f.d.ts +0 -0
  492. /package/{fs → fjs}/types/string_set/module.f.js +0 -0
  493. /package/{fs → fjs}/types/string_set/proof.f.d.ts +0 -0
  494. /package/{fs → fjs}/types/ts/module.f.d.ts +0 -0
  495. /package/{fs → fjs}/types/ts/module.f.js +0 -0
  496. /package/{fs → fjs}/types/ts/proof.f.d.ts +0 -0
  497. /package/{fs → fjs}/types/uint8array/module.f.d.ts +0 -0
  498. /package/{fs → fjs}/website/module.f.d.ts +0 -0
  499. /package/{fs → fjs}/website/module.f.js +0 -0
  500. /package/{fs → fjs}/website/proof.f.d.ts +0 -0
@@ -5,6 +5,7 @@ import { sort } from '../../types/object/module.f.js';
5
5
  import { stringToList } from '../../text/utf16/module.f.js';
6
6
  import { stringifyAsTree } from '../serializer/module.f.js';
7
7
  import { stringify } from '../../media/json/module.f.js';
8
+ import { assert, assertEq } from '../../asserts/module.f.js';
8
9
  const tokenizeString = s => toArray(tokenize(stringToList(s))(''));
9
10
  const stringifyDjsModule = stringifyAsTree(sort);
10
11
  export const proof = {
@@ -12,130 +13,84 @@ export const proof = {
12
13
  () => {
13
14
  const tokenList = tokenizeString('export default null');
14
15
  const obj = parseFromTokens(tokenList);
15
- if (obj[0] !== 'ok') {
16
- throw obj;
17
- }
16
+ assert(obj[0] === 'ok', obj);
18
17
  const result = stringifyDjsModule(obj[1]);
19
- if (result !== '[[],[null]]') {
20
- throw result;
21
- }
18
+ assertEq(result, '[[],[null]]');
22
19
  },
23
20
  () => {
24
21
  const tokenList = tokenizeString('export default true');
25
22
  const obj = parseFromTokens(tokenList);
26
- if (obj[0] !== 'ok') {
27
- throw obj;
28
- }
23
+ assert(obj[0] === 'ok', obj);
29
24
  const result = stringifyDjsModule(obj[1]);
30
- if (result !== '[[],[true]]') {
31
- throw result;
32
- }
25
+ assertEq(result, '[[],[true]]');
33
26
  },
34
27
  () => {
35
28
  const tokenList = tokenizeString('export default false');
36
29
  const obj = parseFromTokens(tokenList);
37
- if (obj[0] !== 'ok') {
38
- throw obj;
39
- }
30
+ assert(obj[0] === 'ok', obj);
40
31
  const result = stringifyDjsModule(obj[1]);
41
- if (result !== '[[],[false]]') {
42
- throw result;
43
- }
32
+ assertEq(result, '[[],[false]]');
44
33
  },
45
34
  () => {
46
35
  const tokenList = tokenizeString('export default undefined');
47
36
  const obj = parseFromTokens(tokenList);
48
- if (obj[0] !== 'ok') {
49
- throw obj;
50
- }
37
+ assert(obj[0] === 'ok', obj);
51
38
  const result = stringifyDjsModule(obj[1]);
52
- if (result !== '[[],[undefined]]') {
53
- throw result;
54
- }
39
+ assertEq(result, '[[],[undefined]]');
55
40
  },
56
41
  () => {
57
42
  const tokenList = tokenizeString('export default 0.1');
58
43
  const obj = parseFromTokens(tokenList);
59
- if (obj[0] !== 'ok') {
60
- throw obj;
61
- }
44
+ assert(obj[0] === 'ok', obj);
62
45
  const result = stringifyDjsModule(obj[1]);
63
- if (result !== '[[],[0.1]]') {
64
- throw result;
65
- }
46
+ assertEq(result, '[[],[0.1]]');
66
47
  },
67
48
  () => {
68
49
  const tokenList = tokenizeString('export default 1.1e+2');
69
50
  const obj = parseFromTokens(tokenList);
70
- if (obj[0] !== 'ok') {
71
- throw obj;
72
- }
51
+ assert(obj[0] === 'ok', obj);
73
52
  const result = stringifyDjsModule(obj[1]);
74
- if (result !== '[[],[110]]') {
75
- throw result;
76
- }
53
+ assertEq(result, '[[],[110]]');
77
54
  },
78
55
  () => {
79
56
  const tokenList = tokenizeString('export default "abc"');
80
57
  const obj = parseFromTokens(tokenList);
81
- if (obj[0] !== 'ok') {
82
- throw obj;
83
- }
58
+ assert(obj[0] === 'ok', obj);
84
59
  const result = stringifyDjsModule(obj[1]);
85
- if (result !== '[[],["abc"]]') {
86
- throw result;
87
- }
60
+ assertEq(result, '[[],["abc"]]');
88
61
  },
89
62
  () => {
90
63
  const tokenList = tokenizeString('export default []');
91
64
  const obj = parseFromTokens(tokenList);
92
- if (obj[0] !== 'ok') {
93
- throw obj;
94
- }
65
+ assert(obj[0] === 'ok', obj);
95
66
  const result = stringifyDjsModule(obj[1]);
96
- if (result !== '[[],[["array",[]]]]') {
97
- throw result;
98
- }
67
+ assertEq(result, '[[],[["array",[]]]]');
99
68
  },
100
69
  () => {
101
70
  const tokenList = tokenizeString('export default [1]');
102
71
  const obj = parseFromTokens(tokenList);
103
- if (obj[0] !== 'ok') {
104
- throw obj;
105
- }
72
+ assert(obj[0] === 'ok', obj);
106
73
  const result = stringifyDjsModule(obj[1]);
107
- if (result !== '[[],[["array",[1]]]]') {
108
- throw result;
109
- }
74
+ assertEq(result, '[[],[["array",[1]]]]');
110
75
  },
111
76
  () => {
112
77
  const tokenList = tokenizeString('export default [[]]');
113
78
  const obj = parseFromTokens(tokenList);
114
- if (obj[0] !== 'ok') {
115
- throw obj;
116
- }
79
+ assert(obj[0] === 'ok', obj);
117
80
  const result = stringifyDjsModule(obj[1]);
118
- if (result !== '[[],[["array",[["array",[]]]]]]') {
119
- throw result;
120
- }
81
+ assertEq(result, '[[],[["array",[["array",[]]]]]]');
121
82
  },
122
83
  () => {
123
84
  const tokenList = tokenizeString('export default [0,[1,[2,[]]],3]');
124
85
  const obj = parseFromTokens(tokenList);
125
- if (obj[0] !== 'ok') {
126
- throw obj;
127
- }
86
+ assert(obj[0] === 'ok', obj);
128
87
  const result = stringifyDjsModule(obj[1]);
129
- if (result !== '[[],[["array",[0,["array",[1,["array",[2,["array",[]]]]]],3]]]]') {
130
- throw result;
131
- }
88
+ assertEq(result, '[[],[["array",[0,["array",[1,["array",[2,["array",[]]]]]],3]]]]');
132
89
  },
133
90
  () => {
134
91
  const tokenList = tokenizeString('export default {}');
135
92
  const obj = parseFromTokens(tokenList);
136
- if (obj[0] !== 'ok') {
137
- throw obj;
138
- }
93
+ assert(obj[0] === 'ok', obj);
139
94
  const result = stringifyDjsModule(obj[1]);
140
95
  if (result !== '[[],[{}]]') {
141
96
  throw result;
@@ -144,9 +99,7 @@ export const proof = {
144
99
  () => {
145
100
  const tokenList = tokenizeString('export default [{}]');
146
101
  const obj = parseFromTokens(tokenList);
147
- if (obj[0] !== 'ok') {
148
- throw obj;
149
- }
102
+ assert(obj[0] === 'ok', obj);
150
103
  const result = stringifyDjsModule(obj[1]);
151
104
  if (result !== '[[],[["array",[{}]]]]') {
152
105
  throw result;
@@ -155,9 +108,7 @@ export const proof = {
155
108
  () => {
156
109
  const tokenList = tokenizeString('export default {"a":true,"b":false,"c":null,"d":undefined}');
157
110
  const obj = parseFromTokens(tokenList);
158
- if (obj[0] !== 'ok') {
159
- throw obj;
160
- }
111
+ assert(obj[0] === 'ok', obj);
161
112
  const result = stringifyDjsModule(obj[1]);
162
113
  if (result !== '[[],[{"a":true,"b":false,"c":null,"d":undefined}]]') {
163
114
  throw result;
@@ -166,9 +117,7 @@ export const proof = {
166
117
  () => {
167
118
  const tokenList = tokenizeString('export default {"a":{"b":{"c":["d"]}}}');
168
119
  const obj = parseFromTokens(tokenList);
169
- if (obj[0] !== 'ok') {
170
- throw obj;
171
- }
120
+ assert(obj[0] === 'ok', obj);
172
121
  const result = stringifyDjsModule(obj[1]);
173
122
  if (result !== '[[],[{"a":{"b":{"c":["array",["d"]]}}}]]') {
174
123
  throw result;
@@ -177,9 +126,7 @@ export const proof = {
177
126
  () => {
178
127
  const tokenList = tokenizeString('export default {a: 1}');
179
128
  const obj = parseFromTokens(tokenList);
180
- if (obj[0] !== 'ok') {
181
- throw obj;
182
- }
129
+ assert(obj[0] === 'ok', obj);
183
130
  const result = stringifyDjsModule(obj[1]);
184
131
  if (result !== '[[],[{"a":1}]]') {
185
132
  throw result;
@@ -188,42 +135,28 @@ export const proof = {
188
135
  () => {
189
136
  const tokenList = tokenizeString('export default 1234567890n');
190
137
  const obj = parseFromTokens(tokenList);
191
- if (obj[0] !== 'ok') {
192
- throw obj;
193
- }
138
+ assert(obj[0] === 'ok', obj);
194
139
  const result = stringifyDjsModule(obj[1]);
195
- if (result !== '[[],[1234567890n]]') {
196
- throw result;
197
- }
140
+ assertEq(result, '[[],[1234567890n]]');
198
141
  },
199
142
  () => {
200
143
  const tokenList = tokenizeString('export default [1234567890n]');
201
144
  const obj = parseFromTokens(tokenList);
202
- if (obj[0] !== 'ok') {
203
- throw obj;
204
- }
145
+ assert(obj[0] === 'ok', obj);
205
146
  const result = stringifyDjsModule(obj[1]);
206
- if (result !== '[[],[["array",[1234567890n]]]]') {
207
- throw result;
208
- }
147
+ assertEq(result, '[[],[["array",[1234567890n]]]]');
209
148
  },
210
149
  () => {
211
150
  const tokenList = tokenizeString('export default [1,]');
212
151
  const obj = parseFromTokens(tokenList);
213
- if (obj[0] !== 'ok') {
214
- throw obj;
215
- }
152
+ assert(obj[0] === 'ok', obj);
216
153
  const result = stringifyDjsModule(obj[1]);
217
- if (result !== '[[],[["array",[1]]]]') {
218
- throw result;
219
- }
154
+ assertEq(result, '[[],[["array",[1]]]]');
220
155
  },
221
156
  () => {
222
157
  const tokenList = tokenizeString('export default {"a":1,}');
223
158
  const obj = parseFromTokens(tokenList);
224
- if (obj[0] !== 'ok') {
225
- throw obj;
226
- }
159
+ assert(obj[0] === 'ok', obj);
227
160
  const result = stringifyDjsModule(obj[1]);
228
161
  if (result !== '[[],[{"a":1}]]') {
229
162
  throw result;
@@ -234,245 +167,154 @@ export const proof = {
234
167
  () => {
235
168
  const tokenList = tokenizeString('export default');
236
169
  const obj = parseFromTokens(tokenList);
237
- if (obj[0] !== 'error') {
238
- throw obj;
239
- }
240
- if (obj[1].message !== 'unexpected end') {
241
- throw obj[1].message;
242
- }
170
+ assert(obj[0] === 'error', obj);
171
+ assertEq(obj[1].message, 'unexpected end');
243
172
  },
244
173
  () => {
245
174
  const tokenList = tokenizeString('export default "123');
246
175
  const obj = parseFromTokens(tokenList);
247
- if (obj[0] !== 'error') {
248
- throw obj;
249
- }
250
- if (obj[1].message !== 'unexpected token') {
251
- throw obj[1].message;
252
- }
176
+ assert(obj[0] === 'error', obj);
177
+ assertEq(obj[1].message, 'unexpected token');
253
178
  },
254
179
  // A literal control character inside a string is not valid JSON
255
180
  // syntax (RFC 8259 §7), and DJS string literals are JSON strings.
256
181
  () => {
257
182
  const tokenList = tokenizeString('export default "\t"');
258
183
  const obj = parseFromTokens(tokenList);
259
- if (obj[0] !== 'error') {
260
- throw obj;
261
- }
262
- if (obj[1].message !== 'unexpected token') {
263
- throw obj[1].message;
264
- }
184
+ assert(obj[0] === 'error', obj);
185
+ assertEq(obj[1].message, 'unexpected token');
265
186
  },
266
187
  () => {
267
188
  const tokenList = tokenizeString('export default [,]');
268
189
  const obj = parseFromTokens(tokenList);
269
- if (obj[0] !== 'error') {
270
- throw obj;
271
- }
272
- if (obj[1].message !== 'unexpected token') {
273
- throw obj[1].message;
274
- }
190
+ assert(obj[0] === 'error', obj);
191
+ assertEq(obj[1].message, 'unexpected token');
275
192
  },
276
193
  () => {
277
194
  const tokenList = tokenizeString('export default [1 2]');
278
195
  const obj = parseFromTokens(tokenList);
279
- if (obj[0] !== 'error') {
280
- throw obj;
281
- }
282
- if (obj[1].message !== 'unexpected token') {
283
- throw obj[1].message;
284
- }
196
+ assert(obj[0] === 'error', obj);
197
+ assertEq(obj[1].message, 'unexpected token');
285
198
  },
286
199
  () => {
287
200
  const tokenList = tokenizeString('export default [1,,2]');
288
201
  const obj = parseFromTokens(tokenList);
289
- if (obj[0] !== 'error') {
290
- throw obj;
291
- }
292
- if (obj[1].message !== 'unexpected token') {
293
- throw obj[1].message;
294
- }
202
+ assert(obj[0] === 'error', obj);
203
+ assertEq(obj[1].message, 'unexpected token');
295
204
  },
296
205
  () => {
297
206
  const tokenList = tokenizeString('export default []]');
298
207
  const obj = parseFromTokens(tokenList);
299
- if (obj[0] !== 'error') {
300
- throw obj;
301
- }
302
- if (obj[1].message !== 'unexpected token') {
303
- throw obj[1].message;
304
- }
208
+ assert(obj[0] === 'error', obj);
209
+ assertEq(obj[1].message, 'unexpected token');
305
210
  },
306
211
  () => {
307
212
  const tokenList = tokenizeString('export default ["a"');
308
213
  const obj = parseFromTokens(tokenList);
309
- if (obj[0] !== 'error') {
310
- throw obj;
311
- }
312
- if (obj[1].message !== 'unexpected end') {
313
- throw obj[1].message;
314
- }
214
+ assert(obj[0] === 'error', obj);
215
+ assertEq(obj[1].message, 'unexpected end');
315
216
  },
316
217
  () => {
317
218
  const tokenList = tokenizeString('export default [,1]');
318
219
  const obj = parseFromTokens(tokenList);
319
- if (obj[0] !== 'error') {
320
- throw obj;
321
- }
322
- if (obj[1].message !== 'unexpected token') {
323
- throw obj[1].message;
324
- }
220
+ assert(obj[0] === 'error', obj);
221
+ assertEq(obj[1].message, 'unexpected token');
325
222
  },
326
223
  () => {
327
224
  const tokenList = tokenizeString('export default [:]');
328
225
  const obj = parseFromTokens(tokenList);
329
- if (obj[0] !== 'error') {
330
- throw obj;
331
- }
332
- if (obj[1].message !== 'unexpected token') {
333
- throw obj[1].message;
334
- }
226
+ assert(obj[0] === 'error', obj);
227
+ assertEq(obj[1].message, 'unexpected token');
335
228
  },
336
229
  () => {
337
230
  const tokenList = tokenizeString('export default ]');
338
231
  const obj = parseFromTokens(tokenList);
339
- if (obj[0] !== 'error') {
340
- throw obj;
341
- }
342
- if (obj[1].message !== 'unexpected token') {
343
- throw obj[1].message;
344
- }
232
+ assert(obj[0] === 'error', obj);
233
+ assertEq(obj[1].message, 'unexpected token');
345
234
  },
346
235
  () => {
347
236
  const tokenList = tokenizeString('export default {,}');
348
237
  const obj = parseFromTokens(tokenList);
349
- if (obj[0] !== 'error') {
350
- throw obj;
351
- }
352
- if (obj[1].message !== 'unexpected token') {
353
- throw obj[1].message;
354
- }
238
+ assert(obj[0] === 'error', obj);
239
+ assertEq(obj[1].message, 'unexpected token');
355
240
  },
356
241
  () => {
357
242
  const tokenList = tokenizeString('export default {1:2}');
358
243
  const obj = parseFromTokens(tokenList);
359
- if (obj[0] !== 'error') {
360
- throw obj;
361
- }
362
- if (obj[1].message !== 'unexpected token') {
363
- throw obj[1].message;
364
- }
244
+ assert(obj[0] === 'error', obj);
245
+ assertEq(obj[1].message, 'unexpected token');
365
246
  },
366
247
  () => {
367
248
  const tokenList = tokenizeString('export default {"1"2}');
368
249
  const obj = parseFromTokens(tokenList);
369
- if (obj[0] !== 'error') {
370
- throw obj;
371
- }
372
- if (obj[1].message !== 'unexpected token') {
373
- throw obj[1].message;
374
- }
250
+ assert(obj[0] === 'error', obj);
251
+ assertEq(obj[1].message, 'unexpected token');
375
252
  },
376
253
  () => {
377
254
  const tokenList = tokenizeString('export default {"1"::2}');
378
255
  const obj = parseFromTokens(tokenList);
379
- if (obj[0] !== 'error') {
380
- throw obj;
381
- }
382
- if (obj[1].message !== 'unexpected token') {
383
- throw obj[1].message;
384
- }
256
+ assert(obj[0] === 'error', obj);
257
+ assertEq(obj[1].message, 'unexpected token');
385
258
  },
386
259
  () => {
387
260
  const tokenList = tokenizeString('export default {"1":2,,"3":4');
388
261
  const obj = parseFromTokens(tokenList);
389
- if (obj[0] !== 'error') {
390
- throw obj;
391
- }
392
- if (obj[1].message !== 'unexpected token') {
393
- throw obj[1].message;
394
- }
262
+ assert(obj[0] === 'error', obj);
263
+ assertEq(obj[1].message, 'unexpected token');
395
264
  },
396
265
  () => {
397
266
  const tokenList = tokenizeString('export default {}}');
398
267
  const obj = parseFromTokens(tokenList);
399
- if (obj[0] !== 'error') {
400
- throw obj;
401
- }
402
- if (obj[1].message !== 'unexpected token') {
403
- throw obj[1].message;
404
- }
268
+ assert(obj[0] === 'error', obj);
269
+ assertEq(obj[1].message, 'unexpected token');
405
270
  },
406
271
  () => {
407
272
  const tokenList = tokenizeString('export default {"1":2');
408
273
  const obj = parseFromTokens(tokenList);
409
- if (obj[0] !== 'error') {
410
- throw obj;
411
- }
412
- if (obj[1].message !== 'unexpected end') {
413
- throw obj[1].message;
414
- }
274
+ assert(obj[0] === 'error', obj);
275
+ assertEq(obj[1].message, 'unexpected end');
415
276
  },
416
277
  () => {
417
278
  const tokenList = tokenizeString('export default {,"1":2}');
418
279
  const obj = parseFromTokens(tokenList);
419
- if (obj[0] !== 'error') {
420
- throw obj;
421
- }
422
- if (obj[1].message !== 'unexpected token') {
423
- throw obj[1].message;
424
- }
280
+ assert(obj[0] === 'error', obj);
281
+ assertEq(obj[1].message, 'unexpected token');
425
282
  },
426
283
  () => {
427
284
  const tokenList = tokenizeString('export default }');
428
285
  const obj = parseFromTokens(tokenList);
429
- if (obj[0] !== 'error') {
430
- throw obj;
431
- }
432
- if (obj[1].message !== 'unexpected token') {
433
- throw obj[1].message;
434
- }
286
+ assert(obj[0] === 'error', obj);
287
+ assertEq(obj[1].message, 'unexpected token');
435
288
  },
436
289
  () => {
437
290
  const tokenList = tokenizeString('export default [{]}');
438
291
  const obj = parseFromTokens(tokenList);
439
- if (obj[0] !== 'error') {
440
- throw obj;
441
- }
442
- if (obj[1].message !== 'unexpected token') {
443
- throw obj[1].message;
444
- }
292
+ assert(obj[0] === 'error', obj);
293
+ assertEq(obj[1].message, 'unexpected token');
445
294
  },
446
295
  () => {
447
296
  const tokenList = tokenizeString('export default {[}]');
448
297
  const obj = parseFromTokens(tokenList);
449
- if (obj[0] !== 'error') {
450
- throw obj;
451
- }
452
- if (obj[1].message !== 'unexpected token') {
453
- throw obj[1].message;
454
- }
298
+ assert(obj[0] === 'error', obj);
299
+ assertEq(obj[1].message, 'unexpected token');
455
300
  },
456
301
  () => {
457
302
  const tokenList = tokenizeString('export default 10-5');
458
303
  const obj = parseFromTokens(tokenList);
459
- if (obj[0] !== 'error') {
460
- throw obj;
461
- }
462
- if (obj[1].message !== 'unexpected token') {
463
- throw obj[1].message;
464
- }
304
+ assert(obj[0] === 'error', obj);
305
+ assertEq(obj[1].message, 'unexpected token');
465
306
  },
466
307
  ],
467
308
  errorMetadata: [
468
309
  () => {
310
+ // column 17 is the ',' itself — the tokenizer's metadata is start-anchored
311
+ // (each token's own position), unlike the previous tokenizer's metadata, which
312
+ // lagged by one token (an artifact of when its state machine flushed a token).
469
313
  const tokenList = tokenizeString('export default [,]');
470
314
  const obj = parseFromTokens(tokenList);
471
- if (obj[0] !== 'error') {
472
- throw obj;
473
- }
315
+ assert(obj[0] === 'error', obj);
474
316
  const errorString = stringify(sort)(obj[1]);
475
- if (errorString !== '{"message":"unexpected token","metadata":{"column":18,"line":1,"path":""}}') {
317
+ if (errorString !== '{"message":"unexpected token","metadata":{"column":17,"line":1,"path":""}}') {
476
318
  throw errorString;
477
319
  }
478
320
  },
@@ -481,20 +323,14 @@ export const proof = {
481
323
  () => {
482
324
  const tokenList = tokenizeString(' export default [ 0 , 1 , 2 ] ');
483
325
  const obj = parseFromTokens(tokenList);
484
- if (obj[0] !== 'ok') {
485
- throw obj;
486
- }
326
+ assert(obj[0] === 'ok', obj);
487
327
  const result = stringifyDjsModule(obj[1]);
488
- if (result !== '[[],[["array",[0,1,2]]]]') {
489
- throw result;
490
- }
328
+ assertEq(result, '[[],[["array",[0,1,2]]]]');
491
329
  },
492
330
  () => {
493
331
  const tokenList = tokenizeString(' export default { "a" : 0 , "b" : 1 } ');
494
332
  const obj = parseFromTokens(tokenList);
495
- if (obj[0] !== 'ok') {
496
- throw obj;
497
- }
333
+ assert(obj[0] === 'ok', obj);
498
334
  const result = stringifyDjsModule(obj[1]);
499
335
  if (result !== '[[],[{"a":0,"b":1}]]') {
500
336
  throw result;
@@ -503,20 +339,14 @@ export const proof = {
503
339
  () => {
504
340
  const tokenList = tokenizeString('\nexport\ndefault\n[\n0\n,\n1\n,\n2\n]\n');
505
341
  const obj = parseFromTokens(tokenList);
506
- if (obj[0] !== 'ok') {
507
- throw obj;
508
- }
342
+ assert(obj[0] === 'ok', obj);
509
343
  const result = stringifyDjsModule(obj[1]);
510
- if (result !== '[[],[["array",[0,1,2]]]]') {
511
- throw result;
512
- }
344
+ assertEq(result, '[[],[["array",[0,1,2]]]]');
513
345
  },
514
346
  () => {
515
347
  const tokenList = tokenizeString('\rexport\rdefault\r{\r"a"\r:\r0\r,\r"b"\r:\r1\r}\r');
516
348
  const obj = parseFromTokens(tokenList);
517
- if (obj[0] !== 'ok') {
518
- throw obj;
519
- }
349
+ assert(obj[0] === 'ok', obj);
520
350
  const result = stringifyDjsModule(obj[1]);
521
351
  if (result !== '[[],[{"a":0,"b":1}]]') {
522
352
  throw result;
@@ -527,42 +357,28 @@ export const proof = {
527
357
  () => {
528
358
  const tokenList = tokenizeString('null');
529
359
  const obj = parseFromTokens(tokenList);
530
- if (obj[0] !== 'ok') {
531
- throw obj;
532
- }
360
+ assert(obj[0] === 'ok', obj);
533
361
  const result = stringifyDjsModule(obj[1]);
534
- if (result !== '[[],[null]]') {
535
- throw result;
536
- }
362
+ assertEq(result, '[[],[null]]');
537
363
  },
538
364
  () => {
539
365
  const tokenList = tokenizeString('1');
540
366
  const obj = parseFromTokens(tokenList);
541
- if (obj[0] !== 'ok') {
542
- throw obj;
543
- }
367
+ assert(obj[0] === 'ok', obj);
544
368
  const result = stringifyDjsModule(obj[1]);
545
- if (result !== '[[],[1]]') {
546
- throw result;
547
- }
369
+ assertEq(result, '[[],[1]]');
548
370
  },
549
371
  () => {
550
372
  const tokenList = tokenizeString('[]');
551
373
  const obj = parseFromTokens(tokenList);
552
- if (obj[0] !== 'ok') {
553
- throw obj;
554
- }
374
+ assert(obj[0] === 'ok', obj);
555
375
  const result = stringifyDjsModule(obj[1]);
556
- if (result !== '[[],[["array",[]]]]') {
557
- throw result;
558
- }
376
+ assertEq(result, '[[],[["array",[]]]]');
559
377
  },
560
378
  () => {
561
379
  const tokenList = tokenizeString('{"valid":"json"}');
562
380
  const obj = parseFromTokens(tokenList);
563
- if (obj[0] !== 'ok') {
564
- throw obj;
565
- }
381
+ assert(obj[0] === 'ok', obj);
566
382
  const result = stringifyDjsModule(obj[1]);
567
383
  if (result !== '[[],[{"valid":"json"}]]') {
568
384
  throw result;
@@ -573,74 +389,48 @@ export const proof = {
573
389
  () => {
574
390
  const tokenList = tokenizeString('module=null');
575
391
  const obj = parseFromTokens(tokenList);
576
- if (obj[0] !== 'error') {
577
- throw obj;
578
- }
579
- if (obj[1].message !== 'const not found') {
580
- throw obj;
581
- }
392
+ assert(obj[0] === 'error', obj);
393
+ assertEq(obj[1].message, 'const not found', obj);
582
394
  },
583
395
  () => {
584
396
  const tokenList = tokenizeString('export null');
585
397
  const obj = parseFromTokens(tokenList);
586
- if (obj[0] !== 'error') {
587
- throw obj;
588
- }
589
- if (obj[1].message !== 'unexpected token') {
590
- throw obj;
591
- }
398
+ assert(obj[0] === 'error', obj);
399
+ assertEq(obj[1].message, 'unexpected token', obj);
592
400
  },
593
401
  () => {
594
402
  const tokenList = tokenizeString('export default = null');
595
403
  const obj = parseFromTokens(tokenList);
596
- if (obj[0] !== 'error') {
597
- throw obj;
598
- }
599
- if (obj[1].message !== 'unexpected token') {
600
- throw obj;
601
- }
404
+ assert(obj[0] === 'error', obj);
405
+ assertEq(obj[1].message, 'unexpected token', obj);
602
406
  },
603
407
  ],
604
408
  validWithConst: [
605
409
  () => {
606
410
  const tokenList = tokenizeString('const a = 1 \n const b = 2 \n export default 3');
607
411
  const obj = parseFromTokens(tokenList);
608
- if (obj[0] !== 'ok') {
609
- throw obj;
610
- }
412
+ assert(obj[0] === 'ok', obj);
611
413
  const result = stringifyDjsModule(obj[1]);
612
- if (result !== '[[],[1,2,3]]') {
613
- throw result;
614
- }
414
+ assertEq(result, '[[],[1,2,3]]');
615
415
  },
616
416
  () => {
617
417
  const tokenList = tokenizeString('const a = 1 \n const b = 2 \n export default b');
618
418
  const obj = parseFromTokens(tokenList);
619
- if (obj[0] !== 'ok') {
620
- throw obj;
621
- }
419
+ assert(obj[0] === 'ok', obj);
622
420
  const result = stringifyDjsModule(obj[1]);
623
- if (result !== '[[],[1,2,["cref",1]]]') {
624
- throw result;
625
- }
421
+ assertEq(result, '[[],[1,2,["cref",1]]]');
626
422
  },
627
423
  () => {
628
424
  const tokenList = tokenizeString('const a = 1 \n const b = 2 \n export default [b,a,b]');
629
425
  const obj = parseFromTokens(tokenList);
630
- if (obj[0] !== 'ok') {
631
- throw obj;
632
- }
426
+ assert(obj[0] === 'ok', obj);
633
427
  const result = stringifyDjsModule(obj[1]);
634
- if (result !== '[[],[1,2,["array",[["cref",1],["cref",0],["cref",1]]]]]') {
635
- throw result;
636
- }
428
+ assertEq(result, '[[],[1,2,["array",[["cref",1],["cref",0],["cref",1]]]]]');
637
429
  },
638
430
  () => {
639
431
  const tokenList = tokenizeString('const a = 1 \n const b = 2 \n export default {"1st":b,"2nd":a,"3rd":b}');
640
432
  const obj = parseFromTokens(tokenList);
641
- if (obj[0] !== 'ok') {
642
- throw obj;
643
- }
433
+ assert(obj[0] === 'ok', obj);
644
434
  const result = stringifyDjsModule(obj[1]);
645
435
  if (result !== '[[],[1,2,{"1st":["cref",1],"2nd":["cref",0],"3rd":["cref",1]}]]') {
646
436
  throw result;
@@ -651,142 +441,90 @@ export const proof = {
651
441
  () => {
652
442
  const tokenList = tokenizeString('const a = 1 const b = 2 export default 3');
653
443
  const obj = parseFromTokens(tokenList);
654
- if (obj[0] !== 'error') {
655
- throw obj;
656
- }
657
- if (obj[1].message !== 'unexpected token') {
658
- throw obj;
659
- }
444
+ assert(obj[0] === 'error', obj);
445
+ assertEq(obj[1].message, 'unexpected token', obj);
660
446
  },
661
447
  () => {
662
448
  const tokenList = tokenizeString('const = 1 \n const b = 2 \n export default 3');
663
449
  const obj = parseFromTokens(tokenList);
664
- if (obj[0] !== 'error') {
665
- throw obj;
666
- }
667
- if (obj[1].message !== 'unexpected token') {
668
- throw obj;
669
- }
450
+ assert(obj[0] === 'error', obj);
451
+ assertEq(obj[1].message, 'unexpected token', obj);
670
452
  },
671
453
  () => {
672
454
  const tokenList = tokenizeString('const a = 1 \n const a = 2 \n export default 3');
673
455
  const obj = parseFromTokens(tokenList);
674
- if (obj[0] !== 'error') {
675
- throw obj;
676
- }
677
- if (obj[1].message !== 'duplicate id') {
678
- throw obj;
679
- }
456
+ assert(obj[0] === 'error', obj);
457
+ assertEq(obj[1].message, 'duplicate id', obj);
680
458
  },
681
459
  ],
682
460
  validWithArgs: [
683
461
  () => {
684
462
  const tokenList = tokenizeString('import a from "test/test.f.mjs" \n export default a');
685
463
  const obj = parseFromTokens(tokenList);
686
- if (obj[0] !== 'ok') {
687
- throw obj;
688
- }
464
+ assert(obj[0] === 'ok', obj);
689
465
  const result = stringifyDjsModule(obj[1]);
690
- if (result !== '[["test/test.f.mjs"],[["aref",0]]]') {
691
- throw result;
692
- }
466
+ assertEq(result, '[["test/test.f.mjs"],[["aref",0]]]');
693
467
  },
694
468
  () => {
695
469
  const tokenList = tokenizeString('import a from "first/test.f.mjs" \n import b from "second/test.f.mjs" \n export default [b, a, b]');
696
470
  const obj = parseFromTokens(tokenList);
697
- if (obj[0] !== 'ok') {
698
- throw obj;
699
- }
471
+ assert(obj[0] === 'ok', obj);
700
472
  const result = stringifyDjsModule(obj[1]);
701
- if (result !== '[["first/test.f.mjs","second/test.f.mjs"],[["array",[["aref",1],["aref",0],["aref",1]]]]]') {
702
- throw result;
703
- }
473
+ assertEq(result, '[["first/test.f.mjs","second/test.f.mjs"],[["array",[["aref",1],["aref",0],["aref",1]]]]]');
704
474
  },
705
475
  () => {
706
476
  const tokenList = tokenizeString('import a from "test/test.f.mjs" \n const b = null \n export default [b, a, b]');
707
477
  const obj = parseFromTokens(tokenList);
708
- if (obj[0] !== 'ok') {
709
- throw obj;
710
- }
478
+ assert(obj[0] === 'ok', obj);
711
479
  const result = stringifyDjsModule(obj[1]);
712
- if (result !== '[["test/test.f.mjs"],[null,["array",[["cref",0],["aref",0],["cref",0]]]]]') {
713
- throw result;
714
- }
480
+ assertEq(result, '[["test/test.f.mjs"],[null,["array",[["cref",0],["aref",0],["cref",0]]]]]');
715
481
  },
716
482
  ],
717
483
  invalidWithArgs: [
718
484
  () => {
719
485
  const tokenList = tokenizeString('import a from "test/test.f.mjs" export default a');
720
486
  const obj = parseFromTokens(tokenList);
721
- if (obj[0] !== 'error') {
722
- throw obj;
723
- }
724
- if (obj[1].message !== 'unexpected token') {
725
- throw obj;
726
- }
487
+ assert(obj[0] === 'error', obj);
488
+ assertEq(obj[1].message, 'unexpected token', obj);
727
489
  },
728
490
  () => {
729
491
  const tokenList = tokenizeString('import a from \n export default a');
730
492
  const obj = parseFromTokens(tokenList);
731
- if (obj[0] !== 'error') {
732
- throw obj;
733
- }
734
- if (obj[1].message !== 'unexpected token') {
735
- throw obj;
736
- }
493
+ assert(obj[0] === 'error', obj);
494
+ assertEq(obj[1].message, 'unexpected token', obj);
737
495
  },
738
496
  () => {
739
497
  const tokenList = tokenizeString('import a "test/test.f.mjs" \n export default a');
740
498
  const obj = parseFromTokens(tokenList);
741
- if (obj[0] !== 'error') {
742
- throw obj;
743
- }
744
- if (obj[1].message !== 'unexpected token') {
745
- throw obj;
746
- }
499
+ assert(obj[0] === 'error', obj);
500
+ assertEq(obj[1].message, 'unexpected token', obj);
747
501
  },
748
502
  () => {
749
503
  const tokenList = tokenizeString('import from "test/test.f.mjs" \n export default a');
750
504
  const obj = parseFromTokens(tokenList);
751
- if (obj[0] !== 'error') {
752
- throw obj;
753
- }
754
- if (obj[1].message !== 'unexpected token') {
755
- throw obj;
756
- }
505
+ assert(obj[0] === 'error', obj);
506
+ assertEq(obj[1].message, 'unexpected token', obj);
757
507
  },
758
508
  () => {
759
509
  const tokenList = tokenizeString('import a from "first/test.f.mjs" \n import a from "second/test.f.mjs" \n export default [b, a, b]');
760
510
  const obj = parseFromTokens(tokenList);
761
- if (obj[0] !== 'error') {
762
- throw obj;
763
- }
764
- if (obj[1].message !== 'duplicate id') {
765
- throw obj;
766
- }
511
+ assert(obj[0] === 'error', obj);
512
+ assertEq(obj[1].message, 'duplicate id', obj);
767
513
  },
768
514
  () => {
769
515
  const tokenList = tokenizeString('import a from "test/test.f.mjs" \n const a = null \n export default null');
770
516
  const obj = parseFromTokens(tokenList);
771
- if (obj[0] !== 'error') {
772
- throw obj;
773
- }
774
- if (obj[1].message !== 'duplicate id') {
775
- throw obj;
776
- }
517
+ assert(obj[0] === 'error', obj);
518
+ assertEq(obj[1].message, 'duplicate id', obj);
777
519
  },
778
520
  ],
779
521
  comments: [
780
522
  () => {
781
523
  const tokenList = tokenizeString('export //comment \n default /* comment */ null //comment');
782
524
  const obj = parseFromTokens(tokenList);
783
- if (obj[0] !== 'ok') {
784
- throw obj;
785
- }
525
+ assert(obj[0] === 'ok', obj);
786
526
  const result = stringifyDjsModule(obj[1]);
787
- if (result !== '[[],[null]]') {
788
- throw result;
789
- }
527
+ assertEq(result, '[[],[null]]');
790
528
  },
791
529
  ]
792
530
  };