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
@@ -2,149 +2,106 @@ import { toCodePointList, fromCodePointList, stringToList, listToString, stringT
2
2
  import { stringify as jsonStringify } from '../../media/json/module.f.js';
3
3
  import { sort } from '../../types/object/module.f.js';
4
4
  import { toArray } from '../../types/list/module.f.js';
5
+ import { assertEq } from '../../asserts/module.f.js';
5
6
  const stringify = (a) => jsonStringify(sort)(a);
6
7
  export const proof = {
7
8
  toCodePointList: [
8
9
  () => {
9
10
  const result = stringify(toArray(toCodePointList([-1, 65536])));
10
- if (result !== '[4294967295,4294967295]') {
11
- throw result;
12
- }
11
+ assertEq(result, '[4294967295,4294967295]');
13
12
  },
14
13
  () => {
15
14
  const result = stringify(toArray(toCodePointList([0, 36, 8364, 55295, 57344, 65535])));
16
- if (result !== '[0,36,8364,55295,57344,65535]') {
17
- throw result;
18
- }
15
+ assertEq(result, '[0,36,8364,55295,57344,65535]');
19
16
  },
20
17
  () => {
21
18
  const result = stringify(toArray(toCodePointList([56320, 57343])));
22
- if (result !== '[-2147427328,-2147426305]') {
23
- throw result;
24
- }
19
+ assertEq(result, '[-2147427328,-2147426305]');
25
20
  },
26
21
  () => {
27
22
  const result = stringify(toArray(toCodePointList([55296, 56320, 55297, 56375, 55378, 57186, 56319, 57343])));
28
- if (result !== '[65536,66615,150370,1114111]') {
29
- throw result;
30
- }
23
+ assertEq(result, '[65536,66615,150370,1114111]');
31
24
  },
32
25
  () => {
33
26
  const result = stringify(toArray(toCodePointList([55296, 55296])));
34
- if (result !== '[-2147428352,-2147428352]') {
35
- throw result;
36
- }
27
+ assertEq(result, '[-2147428352,-2147428352]');
37
28
  },
38
29
  () => {
39
30
  const result = stringify(toArray(toCodePointList([55296, 0])));
40
- if (result !== '[-2147428352,0]') {
41
- throw result;
42
- }
31
+ assertEq(result, '[-2147428352,0]');
43
32
  },
44
33
  () => {
45
34
  const result = stringify(toArray(toCodePointList([56320])));
46
- if (result !== '[-2147427328]') {
47
- throw result;
48
- }
35
+ assertEq(result, '[-2147427328]');
49
36
  },
50
37
  () => {
51
38
  const result = stringify(toArray(toCodePointList([56320, 0])));
52
- if (result !== '[-2147427328,0]') {
53
- throw result;
54
- }
39
+ assertEq(result, '[-2147427328,0]');
55
40
  }
56
41
  ],
57
42
  fromCodePointList: [
58
43
  () => {
59
44
  const result = stringify(toArray(fromCodePointList([0])));
60
- if (result !== '[0]') {
61
- throw result;
62
- }
45
+ assertEq(result, '[0]');
63
46
  },
64
47
  () => {
65
48
  const result = stringify(toArray(fromCodePointList([0x24])));
66
- if (result !== '[36]') {
67
- throw result;
68
- }
49
+ assertEq(result, '[36]');
69
50
  },
70
51
  () => {
71
52
  const result = stringify(toArray(fromCodePointList([0x20AC])));
72
- if (result !== '[8364]') {
73
- throw result;
74
- }
53
+ assertEq(result, '[8364]');
75
54
  },
76
55
  () => {
77
56
  const result = stringify(toArray(fromCodePointList([0xd7ff])));
78
- if (result !== '[55295]') {
79
- throw result;
80
- }
57
+ assertEq(result, '[55295]');
81
58
  },
82
59
  () => {
83
60
  const result = stringify(toArray(fromCodePointList([0xe000])));
84
- if (result !== '[57344]') {
85
- throw result;
86
- }
61
+ assertEq(result, '[57344]');
87
62
  },
88
63
  () => {
89
64
  const result = stringify(toArray(fromCodePointList([0xffff])));
90
- if (result !== '[65535]') {
91
- throw result;
92
- }
65
+ assertEq(result, '[65535]');
93
66
  },
94
67
  () => {
95
68
  const result = stringify(toArray(fromCodePointList([0x10000])));
96
- if (result !== '[55296,56320]') {
97
- throw result;
98
- }
69
+ assertEq(result, '[55296,56320]');
99
70
  },
100
71
  () => {
101
72
  const result = stringify(toArray(fromCodePointList([0x10437])));
102
- if (result !== '[55297,56375]') {
103
- throw result;
104
- }
73
+ assertEq(result, '[55297,56375]');
105
74
  },
106
75
  () => {
107
76
  const result = stringify(toArray(fromCodePointList([0x24B62])));
108
- if (result !== '[55378,57186]') {
109
- throw result;
110
- }
77
+ assertEq(result, '[55378,57186]');
111
78
  },
112
79
  () => {
113
80
  const result = stringify(toArray(fromCodePointList([0x10ffff])));
114
- if (result !== '[56319,57343]') {
115
- throw result;
116
- }
81
+ assertEq(result, '[56319,57343]');
117
82
  },
118
83
  () => {
119
84
  const result = stringify(toArray(fromCodePointList([-1, 0xd800, 0xdfff, 0x110000])));
120
- if (result !== '[65535,55296,57343,0]') {
121
- throw result;
122
- }
85
+ assertEq(result, '[65535,55296,57343,0]');
123
86
  }
124
87
  ],
125
88
  string: [
126
89
  () => {
127
90
  const utf16List = stringToList("Hello world!😂🚜🚲");
128
91
  const result = listToString(utf16List);
129
- if (result !== "Hello world!😂🚜🚲") {
130
- throw result;
131
- }
92
+ assertEq(result, "Hello world!😂🚜🚲");
132
93
  },
133
94
  () => {
134
95
  const cpList = stringToCodePointList("Hello world!😂🚜🚲");
135
96
  const result = codePointListToString(cpList);
136
- if (result !== "Hello world!😂🚜🚲") {
137
- throw result;
138
- }
97
+ assertEq(result, "Hello world!😂🚜🚲");
139
98
  },
140
99
  () => {
141
100
  const a = stringToList("Hello world!😂🚜🚲");
142
101
  const b = toCodePointList(a);
143
102
  const c = fromCodePointList(b);
144
103
  const result = listToString(c);
145
- if (result !== "Hello world!😂🚜🚲") {
146
- throw result;
147
- }
104
+ assertEq(result, "Hello world!😂🚜🚲");
148
105
  }
149
106
  ],
150
107
  stringToList: [
@@ -1,237 +1,175 @@
1
- import { toCodePointList, fromCodePointList, fromVec } from './module.f.js';
1
+ import { toCodePointList, fromCodePointList, fromVec, utf8ByteToCodePointOp } from './module.f.js';
2
2
  import { stringify as jsonStringify } from '../../media/json/module.f.js';
3
3
  import { sort } from '../../types/object/module.f.js';
4
4
  import { toArray } from '../../types/list/module.f.js';
5
- import { msb, u8ListToVec } from '../../types/bit_vec/module.f.js';
5
+ import { msb, u8ListToVec, vec } from '../../types/bit_vec/module.f.js';
6
+ import { assertEq } from '../../asserts/module.f.js';
6
7
  const stringify = jsonStringify(sort);
7
8
  export const proof = {
8
9
  toCodePoint: [
9
10
  () => {
10
11
  const result = stringify(toArray(toCodePointList([-1, 256])));
11
- if (result !== '[2147483648,2147483648]') {
12
- throw result;
13
- }
12
+ assertEq(result, '[2147483648,2147483648]');
14
13
  },
15
14
  () => {
16
15
  const result = stringify(toArray(toCodePointList([128, 193, 245, 255])));
17
- if (result !== '[-2147483520,-2147483455,-2147483403,-2147483393]') {
18
- throw result;
19
- }
16
+ assertEq(result, '[-2147483520,-2147483455,-2147483403,-2147483393]');
20
17
  },
21
18
  () => {
22
19
  const result = stringify(toArray(toCodePointList([0, 1, 127])));
23
- if (result !== '[0,1,127]') {
24
- throw result;
25
- }
20
+ assertEq(result, '[0,1,127]');
26
21
  },
27
22
  () => {
28
23
  const result = stringify(toArray(toCodePointList([194, 128, 194, 169, 223, 191])));
29
- if (result !== '[128,169,2047]') {
30
- throw result;
31
- }
24
+ assertEq(result, '[128,169,2047]');
32
25
  },
33
26
  () => {
34
27
  const result = stringify(toArray(toCodePointList([194, 194, 127, 194, 192, 194])));
35
- if (result !== '[-2147483454,-2147483454,127,-2147483454,-2147483456,-2147483454]') {
36
- throw result;
37
- }
28
+ assertEq(result, '[-2147483454,-2147483454,127,-2147483454,-2147483456,-2147483454]');
38
29
  },
39
30
  () => {
40
31
  const result = stringify(toArray(toCodePointList([224, 160, 128, 224, 160, 129, 239, 191, 191])));
41
- if (result !== '[2048,2049,65535]') {
42
- throw result;
43
- }
32
+ assertEq(result, '[2048,2049,65535]');
44
33
  },
45
34
  () => {
46
35
  const result = stringify(toArray(toCodePointList([224, 224, 160, 127, 239, 191])));
47
- if (result !== '[-2147483424,-2147482592,127,-2147481601]') {
48
- throw result;
49
- }
36
+ assertEq(result, '[-2147483424,-2147482592,127,-2147481601]');
50
37
  },
51
38
  () => {
52
39
  const result = stringify(toArray(toCodePointList([240, 144, 128, 128, 240, 144, 128, 129, 244, 143, 191, 191])));
53
- if (result !== '[65536,65537,1114111]') {
54
- throw result;
55
- }
40
+ assertEq(result, '[65536,65537,1114111]');
56
41
  },
57
42
  () => {
58
43
  const result = stringify(toArray(toCodePointList([240, 240, 160, 127, 244, 191])));
59
- if (result !== '[-2147483408,-2147483104,127,-2147482817]') {
60
- throw result;
61
- }
44
+ assertEq(result, '[-2147483408,-2147483104,127,-2147482817]');
62
45
  },
63
46
  () => {
64
47
  const result = stringify(toArray(toCodePointList([240, 160, 160, 244, 160, 160])));
65
- if (result !== '[-2147448800,-2147432416]') {
66
- throw result;
67
- }
48
+ assertEq(result, '[-2147448800,-2147432416]');
68
49
  },
69
50
  // Overlong 3-byte encodings (E0 80..9F ..) are rejected, not decoded.
70
51
  () => {
71
52
  const result = stringify(toArray(toCodePointList([224, 128, 128])));
72
- if (result !== '[-2147483424,-2147483520,-2147483520]') {
73
- throw result;
74
- }
53
+ assertEq(result, '[-2147483424,-2147483520,-2147483520]');
75
54
  },
76
55
  () => {
77
56
  const result = stringify(toArray(toCodePointList([224, 159, 191])));
78
- if (result !== '[-2147483424,-2147483489,-2147483457]') {
79
- throw result;
80
- }
57
+ assertEq(result, '[-2147483424,-2147483489,-2147483457]');
81
58
  },
82
59
  // Overlong 4-byte encodings (F0 80..8F .. ..) are rejected, not decoded.
83
60
  () => {
84
61
  const result = stringify(toArray(toCodePointList([240, 128, 128, 128])));
85
- if (result !== '[-2147483408,-2147483520,-2147483520,-2147483520]') {
86
- throw result;
87
- }
62
+ assertEq(result, '[-2147483408,-2147483520,-2147483520,-2147483520]');
88
63
  },
89
64
  () => {
90
65
  const result = stringify(toArray(toCodePointList([240, 143, 191, 191])));
91
- if (result !== '[-2147483408,-2147483505,-2147483457,-2147483457]') {
92
- throw result;
93
- }
66
+ assertEq(result, '[-2147483408,-2147483505,-2147483457,-2147483457]');
94
67
  },
95
68
  // Valid boundary cases still decode: E0 A0 80 -> U+0800, F0 90 80 80 -> U+10000.
96
69
  () => {
97
70
  const result = stringify(toArray(toCodePointList([224, 160, 128])));
98
- if (result !== '[2048]') {
99
- throw result;
100
- }
71
+ assertEq(result, '[2048]');
101
72
  },
102
73
  () => {
103
74
  const result = stringify(toArray(toCodePointList([240, 144, 128, 128])));
104
- if (result !== '[65536]') {
105
- throw result;
106
- }
75
+ assertEq(result, '[65536]');
76
+ },
77
+ // A byte stream never accumulates a 2-byte state whose lead is >= F8
78
+ // (isLeadByte caps leads at F4), so this defensive fallthrough is
79
+ // only reachable by calling the scan op directly with such a state.
80
+ () => {
81
+ const result = stringify(utf8ByteToCodePointOp(0x80, [0xf8, 0x80]));
82
+ assertEq(result, '[[-2147483136,-2147483520],null]');
107
83
  }
108
84
  ],
109
85
  fromCodePointList: [
110
86
  () => {
111
87
  const result = stringify(toArray(fromCodePointList([0, 1, 0x7F])));
112
- if (result !== '[0,1,127]') {
113
- throw result;
114
- }
88
+ assertEq(result, '[0,1,127]');
115
89
  },
116
90
  () => {
117
91
  const result = stringify(toArray(fromCodePointList([0x80])));
118
- if (result !== '[194,128]') {
119
- throw result;
120
- }
92
+ assertEq(result, '[194,128]');
121
93
  },
122
94
  () => {
123
95
  const result = stringify(toArray(fromCodePointList([0xa9])));
124
- if (result !== '[194,169]') {
125
- throw result;
126
- }
96
+ assertEq(result, '[194,169]');
127
97
  },
128
98
  () => {
129
99
  const result = stringify(toArray(fromCodePointList([0x7ff])));
130
- if (result !== '[223,191]') {
131
- throw result;
132
- }
100
+ assertEq(result, '[223,191]');
133
101
  },
134
102
  () => {
135
103
  const result = stringify(toArray(fromCodePointList([0x800])));
136
- if (result !== '[224,160,128]') {
137
- throw result;
138
- }
104
+ assertEq(result, '[224,160,128]');
139
105
  },
140
106
  () => {
141
107
  const result = stringify(toArray(fromCodePointList([0x801])));
142
- if (result !== '[224,160,129]') {
143
- throw result;
144
- }
108
+ assertEq(result, '[224,160,129]');
145
109
  },
146
110
  () => {
147
111
  const result = stringify(toArray(fromCodePointList([0xffff])));
148
- if (result !== '[239,191,191]') {
149
- throw result;
150
- }
112
+ assertEq(result, '[239,191,191]');
151
113
  },
152
114
  () => {
153
115
  const result = stringify(toArray(fromCodePointList([0x10000])));
154
- if (result !== '[240,144,128,128]') {
155
- throw result;
156
- }
116
+ assertEq(result, '[240,144,128,128]');
157
117
  },
158
118
  () => {
159
119
  const result = stringify(toArray(fromCodePointList([0x10001])));
160
- if (result !== '[240,144,128,129]') {
161
- throw result;
162
- }
120
+ assertEq(result, '[240,144,128,129]');
163
121
  },
164
122
  () => {
165
123
  const result = stringify(toArray(fromCodePointList([0x10FFFF])));
166
- if (result !== '[244,143,191,191]') {
167
- throw result;
168
- }
124
+ assertEq(result, '[244,143,191,191]');
169
125
  },
170
126
  () => {
171
127
  const result = stringify(toArray(fromCodePointList([0x110000, 2147483648])));
172
- if (result !== '[2147483648,2147483648]') {
173
- throw result;
174
- }
128
+ assertEq(result, '[2147483648,2147483648]');
175
129
  }
176
130
  ],
177
131
  toFrom: [
178
132
  () => {
179
133
  const codePointList = toCodePointList([128, 193, 245, 255]);
180
134
  const result = stringify(toArray(fromCodePointList(codePointList)));
181
- if (result !== '[128,193,245,255]') {
182
- throw result;
183
- }
135
+ assertEq(result, '[128,193,245,255]');
184
136
  },
185
137
  () => {
186
138
  const codePointList = toCodePointList([194, 194, 127, 194, 192, 194]);
187
139
  const result = stringify(toArray(fromCodePointList(codePointList)));
188
- if (result !== '[194,194,127,194,192,194]') {
189
- throw result;
190
- }
140
+ assertEq(result, '[194,194,127,194,192,194]');
191
141
  },
192
142
  () => {
193
143
  const codePointList = toCodePointList([224, 224, 160, 127, 239, 191]);
194
144
  const result = stringify(toArray(fromCodePointList(codePointList)));
195
- if (result !== '[224,224,160,127,239,191]') {
196
- throw result;
197
- }
145
+ assertEq(result, '[224,224,160,127,239,191]');
198
146
  },
199
147
  () => {
200
148
  const codePointList = toCodePointList([240, 240, 160, 127, 244, 191]);
201
149
  const result = stringify(toArray(fromCodePointList(codePointList)));
202
- if (result !== '[240,240,160,127,244,191]') {
203
- throw result;
204
- }
150
+ assertEq(result, '[240,240,160,127,244,191]');
205
151
  },
206
152
  () => {
207
153
  const codePointList = toCodePointList([240, 160, 160, 244, 160, 160]);
208
154
  const result = stringify(toArray(fromCodePointList(codePointList)));
209
- if (result !== '[240,160,160,244,160,160]') {
210
- throw result;
211
- }
155
+ assertEq(result, '[240,160,160,244,160,160]');
212
156
  }
213
157
  ],
214
158
  fromVec: [
215
159
  // Valid ASCII → decoded string
216
160
  () => {
217
161
  const v = u8ListToVec(msb)([0x68, 0x65, 0x6c, 0x6c, 0x6f]); // "hello"
218
- if (fromVec(v) !== 'hello') {
219
- throw 'expected "hello"';
220
- }
162
+ assertEq(fromVec(v), 'hello', 'expected "hello"');
221
163
  },
222
164
  // Valid multi-byte UTF-8 → decoded string (U+00A9 COPYRIGHT SIGN, 2-byte)
223
165
  () => {
224
166
  const v = u8ListToVec(msb)([0xc2, 0xa9]); // "©"
225
- if (fromVec(v) !== '©') {
226
- throw 'expected copyright sign';
227
- }
167
+ assertEq(fromVec(v), '©', 'expected copyright sign');
228
168
  },
229
169
  // Valid 3-byte UTF-8 (U+4E2D CJK)
230
170
  () => {
231
171
  const v = u8ListToVec(msb)([0xe4, 0xb8, 0xad]); // "中"
232
- if (fromVec(v) !== '中') {
233
- throw 'expected CJK character';
234
- }
172
+ assertEq(fromVec(v), '中', 'expected CJK character');
235
173
  },
236
174
  // Valid 4-byte UTF-8 (U+1F600 GRINNING FACE)
237
175
  () => {
@@ -243,44 +181,37 @@ export const proof = {
243
181
  // Invalid byte sequence → null
244
182
  () => {
245
183
  const v = u8ListToVec(msb)([0xff, 0xfe]); // not valid UTF-8
246
- if (fromVec(v) !== null) {
247
- throw 'expected null for invalid UTF-8';
248
- }
184
+ assertEq(fromVec(v), null, 'expected null for invalid UTF-8');
249
185
  },
250
186
  // Lone continuation byte → null
251
187
  () => {
252
188
  const v = u8ListToVec(msb)([0x80]);
253
- if (fromVec(v) !== null) {
254
- throw 'expected null for lone continuation byte';
255
- }
189
+ assertEq(fromVec(v), null, 'expected null for lone continuation byte');
256
190
  },
257
191
  // Surrogate half (U+D800, encoded as CESU-8 0xED 0xA0 0x80) → null
258
192
  () => {
259
193
  const v = u8ListToVec(msb)([0xed, 0xa0, 0x80]);
260
- if (fromVec(v) !== null) {
261
- throw 'expected null for surrogate';
262
- }
194
+ assertEq(fromVec(v), null, 'expected null for surrogate');
263
195
  },
264
196
  // Empty Vec → empty string
265
197
  () => {
266
198
  const v = u8ListToVec(msb)([]);
267
- if (fromVec(v) !== '') {
268
- throw 'expected empty string';
269
- }
199
+ assertEq(fromVec(v), '', 'expected empty string');
270
200
  },
271
201
  // Overlong 3-byte encoding (E0 80 80, would decode to U+0000) → null
272
202
  () => {
273
203
  const v = u8ListToVec(msb)([0xe0, 0x80, 0x80]);
274
- if (fromVec(v) !== null) {
275
- throw 'expected null for overlong 3-byte encoding';
276
- }
204
+ assertEq(fromVec(v), null, 'expected null for overlong 3-byte encoding');
277
205
  },
278
206
  // Overlong 4-byte encoding (F0 80 80 80, would decode to U+0000) → null
279
207
  () => {
280
208
  const v = u8ListToVec(msb)([0xf0, 0x80, 0x80, 0x80]);
281
- if (fromVec(v) !== null) {
282
- throw 'expected null for overlong 4-byte encoding';
283
- }
209
+ assertEq(fromVec(v), null, 'expected null for overlong 4-byte encoding');
210
+ },
211
+ // Vec length not a multiple of 8 bits → null
212
+ () => {
213
+ const v = vec(4n)(0n);
214
+ assertEq(fromVec(v), null);
284
215
  },
285
216
  ]
286
217
  };
@@ -1,117 +1,85 @@
1
1
  import { at, first, last, head, tail, splitFirst, splitLast, empty } from './module.f.js';
2
2
  import { stringify as jsonStringify } from '../../media/json/module.f.js';
3
3
  import { sort } from '../object/module.f.js';
4
+ import { assertEq, assertNotNullish } from '../../asserts/module.f.js';
4
5
  const stringify = jsonStringify(sort);
5
6
  export const proof = {
6
7
  stringify: () => {
7
8
  const result = stringify([1, 20, 300]);
8
- if (result !== '[1,20,300]') {
9
- throw result;
10
- }
9
+ assertEq(result, '[1,20,300]');
11
10
  },
12
11
  at: [
13
12
  () => {
14
13
  const result = at(2)([1, 20, 300]);
15
- if (result !== 300) {
16
- throw result;
17
- }
14
+ assertEq(result, 300);
18
15
  },
19
16
  () => {
20
17
  const result = at(3)([1, 20, 300]);
21
- if (result !== null) {
22
- throw result;
23
- }
18
+ assertEq(result, null);
24
19
  }
25
20
  ],
26
21
  first: [
27
22
  () => {
28
23
  const result = first([1, 20, 300]);
29
- if (result !== 1) {
30
- throw result;
31
- }
24
+ assertEq(result, 1);
32
25
  },
33
26
  () => {
34
27
  const result = first([]);
35
- if (result !== null) {
36
- throw result;
37
- }
28
+ assertEq(result, null);
38
29
  }
39
30
  ],
40
31
  last: [
41
32
  () => {
42
33
  const result = last([1, 20, 300]);
43
- if (result !== 300) {
44
- throw result;
45
- }
34
+ assertEq(result, 300);
46
35
  },
47
36
  () => {
48
37
  const result = last([]);
49
- if (result !== null) {
50
- throw result;
51
- }
38
+ assertEq(result, null);
52
39
  }
53
40
  ],
54
41
  head: [
55
42
  () => {
56
- const result = head([1, 20, 300]);
57
- if (result === null) {
58
- throw result;
59
- }
43
+ const result = assertNotNullish(head([1, 20, 300]));
60
44
  const str = stringify(result);
61
- if (str !== '[1,20]') {
62
- throw str;
63
- }
45
+ assertEq(str, '[1,20]');
64
46
  },
65
47
  () => {
66
48
  const result = head([]);
67
- if (result !== null) {
68
- throw result;
69
- }
49
+ assertEq(result, null);
70
50
  }
71
51
  ],
72
52
  tail: [
73
53
  () => {
74
54
  const result = tail([1, 20, 300]);
75
55
  const str = stringify(result);
76
- if (str !== '[20,300]') {
77
- throw str;
78
- }
56
+ assertEq(str, '[20,300]');
79
57
  },
80
58
  () => {
81
59
  const result = tail([]);
82
- if (result !== null) {
83
- throw result;
84
- }
60
+ assertEq(result, null);
85
61
  }
86
62
  ],
87
63
  splitFirst: [
88
64
  () => {
89
65
  const result = splitFirst([1, 20, 300]);
90
66
  const str = stringify(result);
91
- if (str !== '[1,[20,300]]') {
92
- throw str;
93
- }
67
+ assertEq(str, '[1,[20,300]]');
94
68
  },
95
69
  () => {
96
70
  const result = splitFirst([]);
97
- if (result !== null) {
98
- throw result;
99
- }
71
+ assertEq(result, null);
100
72
  },
101
73
  ],
102
74
  splitLast: [
103
75
  () => {
104
76
  const result = splitLast([1, 20, 300]);
105
77
  const str = stringify(result);
106
- if (str !== '[[1,20],300]') {
107
- throw str;
108
- }
78
+ assertEq(str, '[[1,20],300]');
109
79
  },
110
80
  () => {
111
81
  const result = splitLast([]);
112
- if (result !== null) {
113
- throw result;
114
- }
82
+ assertEq(result, null);
115
83
  }
116
84
  ],
117
85
  empty: () => {
@@ -119,8 +87,6 @@ export const proof = {
119
87
  const a = x;
120
88
  const b = x;
121
89
  const c = [...a, ...b, ...x];
122
- if (c.length !== 0) {
123
- throw c;
124
- }
90
+ assertEq(c.length, 0, c);
125
91
  }
126
92
  };