functionalscript 0.36.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 (523) hide show
  1. package/README.md +1 -1
  2. package/{fs → fjs}/asn.1/module.f.js +1 -1
  3. package/{fs → fjs}/asn.1/proof.f.js +32 -94
  4. package/fjs/asserts/module.f.d.ts +36 -0
  5. package/fjs/asserts/module.f.js +39 -0
  6. package/fjs/asserts/proof.f.d.ts +11 -0
  7. package/fjs/asserts/proof.f.js +18 -0
  8. package/{fs → fjs}/base_n/module.f.js +3 -3
  9. package/{fs → fjs}/base_n/proof.f.js +15 -39
  10. package/{fs → fjs/basen}/base128/module.f.d.ts +1 -1
  11. package/{fs → fjs/basen}/base128/module.f.js +1 -1
  12. package/{fs → fjs/basen}/base128/proof.f.js +3 -3
  13. package/{fs → fjs/basen}/base64/module.f.d.ts +2 -2
  14. package/{fs → fjs/basen}/base64/module.f.js +25 -15
  15. package/{fs → fjs/basen}/base64/proof.f.d.ts +2 -0
  16. package/{fs → fjs/basen}/base64/proof.f.js +26 -6
  17. package/{fs → fjs/basen}/cbase32/module.f.d.ts +2 -2
  18. package/{fs → fjs/basen}/cbase32/module.f.js +2 -2
  19. package/{fs → fjs/basen}/cbase32/proof.f.js +16 -43
  20. package/fjs/bnf/data/module.f.d.ts +52 -0
  21. package/{fs → fjs}/bnf/data/module.f.js +56 -6
  22. package/{fs → fjs}/bnf/data/proof.f.d.ts +1 -0
  23. package/{fs → fjs}/bnf/data/proof.f.js +59 -24
  24. package/{fs → fjs}/bnf/descent/module.f.d.ts +4 -14
  25. package/fjs/bnf/descent/module.f.js +124 -0
  26. package/{fs → fjs}/bnf/descent/proof.f.d.ts +1 -0
  27. package/{fs → fjs}/bnf/descent/proof.f.js +59 -28
  28. package/{fs → fjs}/bnf/ll1/module.f.d.ts +4 -4
  29. package/{fs → fjs}/bnf/ll1/module.f.js +15 -13
  30. package/{fs → fjs}/bnf/ll1/proof.f.d.ts +1 -0
  31. package/{fs → fjs}/bnf/ll1/proof.f.js +33 -16
  32. package/{fs → fjs}/bnf/module.f.d.ts +19 -5
  33. package/{fs → fjs}/bnf/module.f.js +14 -15
  34. package/fjs/bnf/proof.f.js +69 -0
  35. package/{fs → fjs}/bnf/testlib.f.js +2 -2
  36. package/{fs → fjs}/cas/cli/module.f.js +7 -7
  37. package/{fs → fjs}/cas/cli/proof.f.d.ts +4 -1
  38. package/{fs → fjs}/cas/cli/proof.f.js +37 -74
  39. package/fjs/cas/evo/mcp/module.f.d.ts +19 -0
  40. package/fjs/cas/evo/mcp/module.f.js +56 -0
  41. package/fjs/cas/evo/mcp/proof.f.d.ts +9 -0
  42. package/fjs/cas/evo/mcp/proof.f.js +95 -0
  43. package/fjs/cas/evo/module.f.d.ts +138 -0
  44. package/fjs/cas/evo/module.f.js +309 -0
  45. package/fjs/cas/evo/proof.f.d.ts +32 -0
  46. package/fjs/cas/evo/proof.f.js +453 -0
  47. package/fjs/cas/mcp/module.f.d.ts +49 -0
  48. package/fjs/cas/mcp/module.f.js +267 -0
  49. package/{fs → fjs}/cas/mcp/proof.f.d.ts +7 -2
  50. package/{fs → fjs}/cas/mcp/proof.f.js +116 -60
  51. package/{fs → fjs}/cas/module.f.d.ts +10 -0
  52. package/{fs → fjs}/cas/module.f.js +36 -10
  53. package/{fs → fjs}/cas/proof.f.d.ts +8 -2
  54. package/{fs → fjs}/cas/proof.f.js +85 -94
  55. package/{fs → fjs}/ci/bun/module.f.js +2 -2
  56. package/{fs → fjs}/ci/common/module.f.d.ts +2 -2
  57. package/{fs → fjs}/ci/common/module.f.js +4 -4
  58. package/fjs/ci/config/module.f.d.ts +42 -0
  59. package/{fs → fjs}/ci/config/module.f.js +6 -8
  60. package/fjs/ci/deno/module.f.js +20 -0
  61. package/{fs → fjs}/ci/module.f.js +9 -9
  62. package/{fs → fjs}/ci/node/module.f.d.ts +1 -1
  63. package/{fs → fjs}/ci/node/module.f.js +3 -5
  64. package/{fs → fjs}/ci/playwright/module.f.js +3 -3
  65. package/{fs → fjs}/ci/proof.f.js +27 -22
  66. package/{fs → fjs}/ci/rust/module.f.js +11 -3
  67. package/{fs → fjs}/cli/module.f.js +3 -3
  68. package/{fs → fjs}/cli/proof.f.js +25 -66
  69. package/{fs/types → fjs/common}/monoid/module.f.d.ts +1 -1
  70. package/{fs/types → fjs/common}/monoid/proof.f.js +4 -9
  71. package/{fs → fjs}/crypto/hmac/module.f.js +2 -2
  72. package/{fs → fjs}/crypto/hmac/proof.f.js +9 -17
  73. package/{fs → fjs}/crypto/pow/module.f.js +3 -3
  74. package/fjs/crypto/pow/proof.f.js +111 -0
  75. package/{fs → fjs}/crypto/secp/module.f.js +2 -2
  76. package/{fs → fjs}/crypto/secp/proof.f.js +14 -35
  77. package/{fs → fjs}/crypto/sha2/module.f.js +2 -2
  78. package/{fs → fjs}/crypto/sha2/proof.f.js +23 -54
  79. package/{fs → fjs}/crypto/sign/module.f.d.ts +0 -5
  80. package/{fs → fjs}/crypto/sign/module.f.js +11 -8
  81. package/{fs → fjs}/crypto/sign/proof.f.js +36 -105
  82. package/{fs → fjs}/crypto/vdf/module.f.js +1 -1
  83. package/{fs → fjs}/crypto/vdf/proof.f.js +23 -64
  84. package/{fs → fjs}/dev/module.f.js +6 -6
  85. package/{fs → fjs}/dev/package_json/module.f.js +6 -6
  86. package/{fs → fjs}/dev/package_json/proof.f.js +9 -9
  87. package/{fs → fjs}/dev/proof.f.js +3 -5
  88. package/{fs → fjs}/djs/ast/module.f.js +2 -2
  89. package/{fs → fjs}/djs/ast/proof.f.js +8 -16
  90. package/fjs/djs/examples/m.f.d.ts +2 -0
  91. package/{fs → fjs}/djs/module.f.d.ts +1 -1
  92. package/{fs → fjs}/djs/module.f.js +5 -5
  93. package/{fs → fjs}/djs/parser/module.f.d.ts +5 -0
  94. package/{fs → fjs}/djs/parser/module.f.js +24 -4
  95. package/{fs → fjs}/djs/parser/proof.f.js +145 -407
  96. package/{fs → fjs}/djs/proof.f.js +16 -39
  97. package/{fs → fjs}/djs/serializer/module.f.js +6 -6
  98. package/{fs → fjs}/djs/serializer/proof.f.js +18 -43
  99. package/fjs/djs/tokenizer/module.f.d.ts +24 -0
  100. package/fjs/djs/tokenizer/module.f.js +472 -0
  101. package/{fs/djs/tokenizer-new → fjs/djs/tokenizer}/proof.f.d.ts +4 -3
  102. package/{fs/djs/tokenizer-new → fjs/djs/tokenizer}/proof.f.js +447 -446
  103. package/{fs → fjs}/djs/transpiler/module.f.d.ts +5 -0
  104. package/{fs → fjs}/djs/transpiler/module.f.js +21 -11
  105. package/{fs → fjs}/djs/transpiler/proof.f.d.ts +3 -0
  106. package/fjs/djs/transpiler/proof.f.js +67 -0
  107. package/{fs → fjs}/effects/memory/module.f.js +4 -4
  108. package/{fs → fjs}/effects/memory/proof.f.js +11 -24
  109. package/{fs → fjs}/effects/module.f.js +1 -1
  110. package/{fs → fjs}/effects/node/memory/module.js +2 -2
  111. package/{fs → fjs}/effects/node/memory/proof.js +8 -15
  112. package/{fs → fjs}/effects/node/module.d.ts +1 -1
  113. package/{fs → fjs}/effects/node/module.f.d.ts +1 -1
  114. package/{fs → fjs}/effects/node/module.f.js +7 -7
  115. package/{fs → fjs}/effects/node/module.js +13 -13
  116. package/{fs → fjs}/effects/node/proof.f.d.ts +1 -0
  117. package/{fs → fjs}/effects/node/proof.f.js +106 -292
  118. package/{fs → fjs}/effects/node/virtual/module.f.js +7 -7
  119. package/{fs → fjs}/effects/node/virtual/proof.f.d.ts +2 -0
  120. package/{fs → fjs}/effects/node/virtual/proof.f.js +44 -30
  121. package/{fs → fjs}/effects/proof.f.js +18 -47
  122. package/fjs/emergent_testing/all.test.js +4 -0
  123. package/{fs → fjs}/emergent_testing/example.f.d.ts +1 -1
  124. package/{fs → fjs}/emergent_testing/module.f.js +6 -6
  125. package/{fs → fjs}/emergent_testing/proof.f.d.ts +19 -17
  126. package/{fs → fjs}/emergent_testing/proof.f.js +14 -14
  127. package/fjs/emergent_testing/scenarios/all.js +1 -0
  128. package/{fs → fjs}/fsc/bnf.f.js +2 -2
  129. package/{fs → fjs}/fsc/json.f.js +1 -1
  130. package/{fs → fjs}/fsc/module.f.js +7 -7
  131. package/{fs → fjs}/fsc/proof.f.js +16 -38
  132. package/{fs → fjs}/fsm/module.f.js +9 -9
  133. package/{fs → fjs}/fsm/proof.f.js +12 -19
  134. package/{fs → fjs}/js/tokenizer/module.f.js +7 -7
  135. package/{fs → fjs}/js/tokenizer/proof.f.js +5 -5
  136. package/{fs → fjs}/mcp/module.f.d.ts +20 -13
  137. package/{fs → fjs}/mcp/module.f.js +16 -9
  138. package/{fs → fjs}/mcp/proof.f.js +17 -17
  139. package/{fs → fjs}/mcp/stdio/module.f.d.ts +4 -4
  140. package/{fs → fjs}/mcp/stdio/module.f.js +12 -12
  141. package/{fs → fjs}/mcp/stdio/proof.f.js +10 -10
  142. package/{fs → fjs/media}/html/module.f.d.ts +3 -3
  143. package/{fs → fjs/media}/html/module.f.js +9 -9
  144. package/{fs → fjs/media}/html/proof.f.js +12 -33
  145. package/fjs/media/json/module.f.d.ts +50 -0
  146. package/{fs → fjs/media}/json/module.f.js +7 -7
  147. package/{fs → fjs/media}/json/parser/module.f.d.ts +7 -2
  148. package/{fs → fjs/media}/json/parser/module.f.js +21 -7
  149. package/{fs → fjs/media}/json/parser/proof.f.js +45 -120
  150. package/{fs → fjs/media}/json/proof.f.js +4 -4
  151. package/fjs/media/json/rpc/module.f.d.ts +114 -0
  152. package/{fs → fjs/media}/json/rpc/module.f.js +4 -4
  153. package/{fs → fjs/media}/json/rpc/proof.f.js +4 -4
  154. package/fjs/media/json/schema/module.f.d.ts +78 -0
  155. package/{fs → fjs/media}/json/schema/module.f.js +25 -41
  156. package/{fs → fjs/media}/json/schema/proof.f.js +6 -9
  157. package/{fs → fjs/media}/json/serializer/module.f.d.ts +1 -1
  158. package/{fs → fjs/media}/json/serializer/module.f.js +2 -2
  159. package/{fs → fjs/media}/json/serializer/proof.f.js +12 -29
  160. package/{fs → fjs/media}/json/tokenizer/module.f.d.ts +2 -2
  161. package/{fs → fjs/media}/json/tokenizer/module.f.js +4 -4
  162. package/{fs → fjs/media}/json/tokenizer/proof.f.js +5 -5
  163. package/fjs/media/module.f.d.ts +37 -0
  164. package/fjs/media/module.f.js +23 -0
  165. package/fjs/media/proof.f.d.ts +9 -0
  166. package/fjs/media/proof.f.js +58 -0
  167. package/fjs/media/revision/module.f.d.ts +78 -0
  168. package/fjs/media/revision/module.f.js +122 -0
  169. package/fjs/media/revision/proof.f.d.ts +31 -0
  170. package/fjs/media/revision/proof.f.js +140 -0
  171. package/{fs/mime → fjs/media/type}/module.f.d.ts +6 -6
  172. package/{fs/mime → fjs/media/type}/module.f.js +6 -6
  173. package/{fs/mime → fjs/media/type}/proof.f.js +8 -12
  174. package/fjs/module.f.d.ts +2 -0
  175. package/{fs/fjs → fjs}/module.f.js +9 -9
  176. package/fjs/module.js +4 -0
  177. package/{fs → fjs}/path/module.f.js +2 -2
  178. package/{fs → fjs}/path/proof.f.js +27 -78
  179. package/{fs/fjs → fjs}/proof.f.js +6 -4
  180. package/{fs → fjs}/sul/id/module.f.js +9 -9
  181. package/{fs → fjs}/sul/id/proof.f.js +12 -26
  182. package/{fs → fjs}/sul/level/hash/module.f.js +3 -3
  183. package/{fs → fjs}/sul/level/hash/proof.f.js +8 -8
  184. package/{fs → fjs}/sul/level/literal/module.f.js +5 -5
  185. package/{fs → fjs}/sul/level/literal/proof.f.js +15 -29
  186. package/{fs → fjs}/sul/module.f.js +3 -3
  187. package/{fs → fjs}/sul/proof.f.js +3 -3
  188. package/fjs/text/ascii/proof.f.d.ts +6 -0
  189. package/fjs/text/ascii/proof.f.js +14 -0
  190. package/{fs → fjs}/text/code_point/module.f.js +12 -12
  191. package/{fs → fjs}/text/code_point/proof.f.js +1 -1
  192. package/{fs → fjs}/text/module.f.js +5 -5
  193. package/{fs → fjs}/text/proof.f.js +7 -12
  194. package/{fs → fjs}/text/sgr/module.f.js +2 -2
  195. package/{fs → fjs}/text/sgr/proof.f.js +8 -17
  196. package/{fs → fjs}/text/utf16/module.f.js +6 -6
  197. package/{fs → fjs}/text/utf16/proof.f.js +27 -70
  198. package/{fs → fjs}/text/utf8/module.f.js +22 -17
  199. package/{fs → fjs}/text/utf8/proof.f.js +59 -128
  200. package/{fs → fjs}/types/array/module.f.js +1 -1
  201. package/{fs → fjs}/types/array/proof.f.js +21 -55
  202. package/{fs → fjs}/types/bigfloat/module.f.js +1 -1
  203. package/fjs/types/bigfloat/proof.f.js +217 -0
  204. package/{fs → fjs}/types/bigint/module.f.js +2 -2
  205. package/{fs → fjs}/types/bigint/proof.f.js +51 -147
  206. package/{fs → fjs}/types/bit_vec/module.f.js +8 -8
  207. package/{fs → fjs}/types/bit_vec/proof.f.js +76 -218
  208. package/{fs → fjs}/types/btree/find/module.f.js +1 -1
  209. package/fjs/types/btree/find/proof.f.d.ts +3 -0
  210. package/fjs/types/btree/find/proof.f.js +108 -0
  211. package/{fs → fjs}/types/btree/module.f.js +2 -2
  212. package/fjs/types/btree/proof.f.d.ts +13 -0
  213. package/{fs → fjs}/types/btree/proof.f.js +12 -19
  214. package/{fs → fjs}/types/btree/remove/module.f.js +4 -4
  215. package/fjs/types/btree/remove/proof.f.d.ts +9 -0
  216. package/{fs → fjs}/types/btree/remove/proof.f.js +88 -235
  217. package/{fs → fjs}/types/btree/set/module.f.js +8 -5
  218. package/{fs → fjs}/types/btree/set/proof.f.js +39 -28
  219. package/{fs → fjs}/types/byte_set/module.f.js +2 -2
  220. package/fjs/types/byte_set/proof.f.js +79 -0
  221. package/{fs → fjs}/types/function/compare/proof.f.js +14 -37
  222. package/fjs/types/function/operator/proof.f.d.ts +23 -0
  223. package/{fs → fjs}/types/function/operator/proof.f.js +18 -49
  224. package/{fs → fjs}/types/function/proof.f.js +3 -4
  225. package/{fs → fjs}/types/list/module.f.js +2 -2
  226. package/fjs/types/list/proof.f.d.ts +30 -0
  227. package/{fs → fjs}/types/list/proof.f.js +59 -167
  228. package/{fs → fjs}/types/map/proof.f.js +6 -14
  229. package/fjs/types/nibble_set/proof.f.js +60 -0
  230. package/{fs → fjs}/types/nominal/proof.f.js +5 -10
  231. package/{fs → fjs}/types/nullable/module.f.js +2 -2
  232. package/fjs/types/nullable/proof.f.js +29 -0
  233. package/{fs → fjs}/types/number/module.f.js +5 -5
  234. package/{fs → fjs}/types/number/proof.f.js +10 -25
  235. package/{fs → fjs}/types/object/module.f.js +4 -4
  236. package/{fs → fjs}/types/object/proof.f.js +4 -7
  237. package/{fs → fjs}/types/ordered_map/module.f.js +6 -6
  238. package/{fs → fjs}/types/ordered_map/proof.f.js +3 -3
  239. package/fjs/types/patricia_trie/proof.f.d.ts +13 -0
  240. package/{fs → fjs}/types/patricia_trie/proof.f.js +22 -22
  241. package/{fs → fjs}/types/prime_field/module.f.js +3 -8
  242. package/{fs → fjs}/types/prime_field/proof.f.js +2 -2
  243. package/{fs → fjs}/types/range/module.f.d.ts +1 -1
  244. package/fjs/types/range/module.f.js +2 -0
  245. package/fjs/types/range/proof.f.js +9 -0
  246. package/{fs → fjs}/types/range_map/module.f.js +4 -4
  247. package/{fs → fjs}/types/range_map/proof.f.js +35 -88
  248. package/{fs → fjs}/types/result/module.js +1 -1
  249. package/fjs/types/result/proof.f.d.ts +12 -0
  250. package/fjs/types/result/proof.f.js +31 -0
  251. package/{fs → fjs}/types/rtti/common/module.f.d.ts +36 -1
  252. package/{fs → fjs}/types/rtti/common/module.f.js +48 -4
  253. package/fjs/types/rtti/common/proof.f.d.ts +8 -0
  254. package/fjs/types/rtti/common/proof.f.js +51 -0
  255. package/{fs → fjs}/types/rtti/module.f.d.ts +2 -2
  256. package/{fs → fjs}/types/rtti/module.f.js +1 -1
  257. package/{fs → fjs}/types/rtti/parse/module.f.js +16 -25
  258. package/{fs → fjs}/types/rtti/parse/proof.f.js +9 -20
  259. package/{fs → fjs}/types/rtti/ts/module.f.d.ts +10 -4
  260. package/{fs → fjs}/types/rtti/ts/module.f.js +1 -1
  261. package/{fs → fjs}/types/rtti/ts/proof.f.js +2 -2
  262. package/{fs → fjs}/types/rtti/validate/module.f.js +11 -32
  263. package/{fs → fjs}/types/rtti/validate/proof.f.js +6 -11
  264. package/{fs → fjs}/types/sorted_list/module.f.js +3 -3
  265. package/{fs → fjs}/types/sorted_list/proof.f.js +14 -27
  266. package/{fs → fjs}/types/sorted_set/module.f.js +1 -1
  267. package/{fs → fjs}/types/sorted_set/proof.f.js +20 -45
  268. package/{fs → fjs}/types/string/module.f.js +4 -4
  269. package/fjs/types/string/proof.f.js +77 -0
  270. package/{fs → fjs}/types/string_set/module.f.js +6 -6
  271. package/fjs/types/string_set/proof.f.js +43 -0
  272. package/{fs → fjs}/types/ts/proof.f.d.ts +18 -18
  273. package/{fs → fjs}/types/ts/proof.f.js +16 -43
  274. package/{fs → fjs}/types/uint8array/module.f.js +10 -10
  275. package/{fs → fjs}/types/uint8array/proof.f.d.ts +4 -1
  276. package/{fs → fjs}/types/uint8array/proof.f.js +11 -11
  277. package/{fs → fjs}/website/module.f.js +3 -3
  278. package/fjs/website/proof.f.js +13 -0
  279. package/package.json +8 -8
  280. package/fs/asserts/module.f.d.ts +0 -4
  281. package/fs/asserts/module.f.js +0 -9
  282. package/fs/asserts/proof.f.d.ts +0 -8
  283. package/fs/asserts/proof.f.js +0 -51
  284. package/fs/bnf/data/module.f.d.ts +0 -30
  285. package/fs/bnf/descent/module.f.js +0 -119
  286. package/fs/bnf/proof.f.js +0 -104
  287. package/fs/cas/mcp/module.f.d.ts +0 -36
  288. package/fs/cas/mcp/module.f.js +0 -249
  289. package/fs/ci/config/module.f.d.ts +0 -43
  290. package/fs/ci/deno/module.f.js +0 -16
  291. package/fs/crypto/pow/proof.f.js +0 -161
  292. package/fs/djs/examples/m.f.d.ts +0 -2
  293. package/fs/djs/tokenizer/module.f.d.ts +0 -12
  294. package/fs/djs/tokenizer/module.f.js +0 -62
  295. package/fs/djs/tokenizer/proof.f.d.ts +0 -7
  296. package/fs/djs/tokenizer/proof.f.js +0 -543
  297. package/fs/djs/tokenizer-new/module.f.d.ts +0 -3
  298. package/fs/djs/tokenizer-new/module.f.js +0 -155
  299. package/fs/djs/transpiler/proof.f.js +0 -68
  300. package/fs/emergent_testing/all.test.js +0 -4
  301. package/fs/emergent_testing/scenarios/all.js +0 -1
  302. package/fs/fjs/module.f.d.ts +0 -2
  303. package/fs/fjs/module.js +0 -4
  304. package/fs/json/module.f.d.ts +0 -50
  305. package/fs/json/rpc/module.f.d.ts +0 -114
  306. package/fs/json/schema/module.f.d.ts +0 -77
  307. package/fs/text/ascii/proof.f.d.ts +0 -4
  308. package/fs/text/ascii/proof.f.js +0 -24
  309. package/fs/types/bigfloat/proof.f.js +0 -348
  310. package/fs/types/btree/find/proof.f.js +0 -151
  311. package/fs/types/btree/proof.f.d.ts +0 -7
  312. package/fs/types/btree/remove/proof.f.d.ts +0 -4
  313. package/fs/types/byte_set/proof.f.js +0 -120
  314. package/fs/types/function/operator/proof.f.d.ts +0 -12
  315. package/fs/types/list/proof.f.d.ts +0 -22
  316. package/fs/types/nibble_set/proof.f.js +0 -89
  317. package/fs/types/nullable/proof.f.js +0 -50
  318. package/fs/types/patricia_trie/proof.f.d.ts +0 -7
  319. package/fs/types/range/module.f.js +0 -2
  320. package/fs/types/range/proof.f.d.ts +0 -1
  321. package/fs/types/range/proof.f.js +0 -18
  322. package/fs/types/result/proof.f.d.ts +0 -6
  323. package/fs/types/result/proof.f.js +0 -52
  324. package/fs/types/string/proof.f.js +0 -118
  325. package/fs/types/string_set/proof.f.js +0 -82
  326. package/fs/website/proof.f.js +0 -16
  327. /package/{fs → fjs}/asn.1/module.f.d.ts +0 -0
  328. /package/{fs → fjs}/asn.1/proof.f.d.ts +0 -0
  329. /package/{fs → fjs}/base_n/module.f.d.ts +0 -0
  330. /package/{fs → fjs}/base_n/proof.f.d.ts +0 -0
  331. /package/{fs → fjs/basen}/base128/proof.f.d.ts +0 -0
  332. /package/{fs → fjs/basen}/cbase32/proof.f.d.ts +0 -0
  333. /package/{fs → fjs}/bnf/proof.f.d.ts +0 -0
  334. /package/{fs → fjs}/bnf/testlib.f.d.ts +0 -0
  335. /package/{fs → fjs}/cas/cli/module.f.d.ts +0 -0
  336. /package/{fs → fjs}/ci/bun/module.f.d.ts +0 -0
  337. /package/{fs → fjs}/ci/deno/module.f.d.ts +0 -0
  338. /package/{fs → fjs}/ci/module.f.d.ts +0 -0
  339. /package/{fs → fjs}/ci/playwright/module.f.d.ts +0 -0
  340. /package/{fs → fjs}/ci/proof.f.d.ts +0 -0
  341. /package/{fs → fjs}/ci/rust/module.f.d.ts +0 -0
  342. /package/{fs → fjs}/cli/module.f.d.ts +0 -0
  343. /package/{fs → fjs}/cli/proof.f.d.ts +0 -0
  344. /package/{fs/types → fjs/common}/monoid/module.f.js +0 -0
  345. /package/{fs/types → fjs/common}/monoid/proof.f.d.ts +0 -0
  346. /package/{fs → fjs}/crypto/hmac/module.f.d.ts +0 -0
  347. /package/{fs → fjs}/crypto/hmac/proof.f.d.ts +0 -0
  348. /package/{fs → fjs}/crypto/pow/module.f.d.ts +0 -0
  349. /package/{fs → fjs}/crypto/pow/proof.f.d.ts +0 -0
  350. /package/{fs → fjs}/crypto/secp/module.f.d.ts +0 -0
  351. /package/{fs → fjs}/crypto/secp/proof.f.d.ts +0 -0
  352. /package/{fs → fjs}/crypto/sha2/module.f.d.ts +0 -0
  353. /package/{fs → fjs}/crypto/sha2/proof.f.d.ts +0 -0
  354. /package/{fs → fjs}/crypto/sign/proof.f.d.ts +0 -0
  355. /package/{fs → fjs}/crypto/vdf/module.f.d.ts +0 -0
  356. /package/{fs → fjs}/crypto/vdf/proof.f.d.ts +0 -0
  357. /package/{fs → fjs}/dev/module.f.d.ts +0 -0
  358. /package/{fs → fjs}/dev/package_json/module.f.d.ts +0 -0
  359. /package/{fs → fjs}/dev/package_json/proof.f.d.ts +0 -0
  360. /package/{fs → fjs}/dev/proof.f.d.ts +0 -0
  361. /package/{fs → fjs}/djs/ast/module.f.d.ts +0 -0
  362. /package/{fs → fjs}/djs/ast/proof.f.d.ts +0 -0
  363. /package/{fs → fjs}/djs/examples/input.f.d.ts +0 -0
  364. /package/{fs → fjs}/djs/examples/input.f.js +0 -0
  365. /package/{fs → fjs}/djs/examples/m.f.js +0 -0
  366. /package/{fs → fjs}/djs/parser/proof.f.d.ts +0 -0
  367. /package/{fs → fjs}/djs/proof.f.d.ts +0 -0
  368. /package/{fs → fjs}/djs/serializer/module.f.d.ts +0 -0
  369. /package/{fs → fjs}/djs/serializer/proof.f.d.ts +0 -0
  370. /package/{fs → fjs}/effects/list/module.f.d.ts +0 -0
  371. /package/{fs → fjs}/effects/list/module.f.js +0 -0
  372. /package/{fs → fjs}/effects/memory/module.f.d.ts +0 -0
  373. /package/{fs → fjs}/effects/memory/proof.f.d.ts +0 -0
  374. /package/{fs → fjs}/effects/mock/module.f.d.ts +0 -0
  375. /package/{fs → fjs}/effects/mock/module.f.js +0 -0
  376. /package/{fs → fjs}/effects/module.d.ts +0 -0
  377. /package/{fs → fjs}/effects/module.f.d.ts +0 -0
  378. /package/{fs → fjs}/effects/module.js +0 -0
  379. /package/{fs → fjs}/effects/node/memory/module.d.ts +0 -0
  380. /package/{fs → fjs}/effects/node/memory/proof.d.ts +0 -0
  381. /package/{fs → fjs}/effects/node/virtual/module.f.d.ts +0 -0
  382. /package/{fs → fjs}/effects/proof.f.d.ts +0 -0
  383. /package/{fs → fjs}/emergent_testing/all.test.d.ts +0 -0
  384. /package/{fs → fjs}/emergent_testing/example.f.js +0 -0
  385. /package/{fs → fjs}/emergent_testing/module.f.d.ts +0 -0
  386. /package/{fs → fjs}/emergent_testing/scenarios/all.d.ts +0 -0
  387. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.fail.d.ts +0 -0
  388. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.fail.js +0 -0
  389. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.pass.d.ts +0 -0
  390. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.pass.js +0 -0
  391. /package/{fs → fjs}/emergent_testing/scenarios/async.fail.d.ts +0 -0
  392. /package/{fs → fjs}/emergent_testing/scenarios/async.fail.js +0 -0
  393. /package/{fs → fjs}/emergent_testing/scenarios/async.pass.d.ts +0 -0
  394. /package/{fs → fjs}/emergent_testing/scenarios/async.pass.js +0 -0
  395. /package/{fs → fjs}/emergent_testing/scenarios/fail.fail.d.ts +0 -0
  396. /package/{fs → fjs}/emergent_testing/scenarios/fail.fail.js +0 -0
  397. /package/{fs → fjs}/emergent_testing/scenarios/return-value.pass.d.ts +0 -0
  398. /package/{fs → fjs}/emergent_testing/scenarios/return-value.pass.js +0 -0
  399. /package/{fs → fjs}/emergent_testing/scenarios/thenable.pass.d.ts +0 -0
  400. /package/{fs → fjs}/emergent_testing/scenarios/thenable.pass.js +0 -0
  401. /package/{fs → fjs}/emergent_testing/scenarios/thenable2.pass.d.ts +0 -0
  402. /package/{fs → fjs}/emergent_testing/scenarios/thenable2.pass.js +0 -0
  403. /package/{fs → fjs}/emergent_testing/scenarios/throw.pass.d.ts +0 -0
  404. /package/{fs → fjs}/emergent_testing/scenarios/throw.pass.js +0 -0
  405. /package/{fs → fjs}/fsc/bnf.f.d.ts +0 -0
  406. /package/{fs → fjs}/fsc/json.f.d.ts +0 -0
  407. /package/{fs → fjs}/fsc/module.f.d.ts +0 -0
  408. /package/{fs → fjs}/fsc/proof.f.d.ts +0 -0
  409. /package/{fs → fjs}/fsm/module.f.d.ts +0 -0
  410. /package/{fs → fjs}/fsm/proof.f.d.ts +0 -0
  411. /package/{fs → fjs}/js/tokenizer/module.f.d.ts +0 -0
  412. /package/{fs → fjs}/js/tokenizer/proof.f.d.ts +0 -0
  413. /package/{fs → fjs}/mcp/proof.f.d.ts +0 -0
  414. /package/{fs → fjs}/mcp/stdio/proof.f.d.ts +0 -0
  415. /package/{fs → fjs/media}/html/proof.f.d.ts +0 -0
  416. /package/{fs → fjs/media}/json/parser/proof.f.d.ts +0 -0
  417. /package/{fs → fjs/media}/json/proof.f.d.ts +0 -0
  418. /package/{fs → fjs/media}/json/rpc/proof.f.d.ts +0 -0
  419. /package/{fs → fjs/media}/json/schema/proof.f.d.ts +0 -0
  420. /package/{fs → fjs/media}/json/serializer/proof.f.d.ts +0 -0
  421. /package/{fs → fjs/media}/json/tokenizer/proof.f.d.ts +0 -0
  422. /package/{fs/mime → fjs/media/type}/proof.f.d.ts +0 -0
  423. /package/{fs/fjs → fjs}/module.d.ts +0 -0
  424. /package/{fs → fjs}/path/module.f.d.ts +0 -0
  425. /package/{fs → fjs}/path/proof.f.d.ts +0 -0
  426. /package/{fs/fjs → fjs}/proof.f.d.ts +0 -0
  427. /package/{fs → fjs}/sul/id/module.f.d.ts +0 -0
  428. /package/{fs → fjs}/sul/id/proof.f.d.ts +0 -0
  429. /package/{fs → fjs}/sul/level/hash/module.f.d.ts +0 -0
  430. /package/{fs → fjs}/sul/level/hash/proof.f.d.ts +0 -0
  431. /package/{fs → fjs}/sul/level/literal/module.f.d.ts +0 -0
  432. /package/{fs → fjs}/sul/level/literal/proof.f.d.ts +0 -0
  433. /package/{fs → fjs}/sul/module.f.d.ts +0 -0
  434. /package/{fs → fjs}/sul/proof.f.d.ts +0 -0
  435. /package/{fs → fjs}/text/ascii/module.f.d.ts +0 -0
  436. /package/{fs → fjs}/text/ascii/module.f.js +0 -0
  437. /package/{fs → fjs}/text/code_point/module.f.d.ts +0 -0
  438. /package/{fs → fjs}/text/code_point/proof.f.d.ts +0 -0
  439. /package/{fs → fjs}/text/module.f.d.ts +0 -0
  440. /package/{fs → fjs}/text/proof.f.d.ts +0 -0
  441. /package/{fs → fjs}/text/sgr/module.f.d.ts +0 -0
  442. /package/{fs → fjs}/text/sgr/proof.f.d.ts +0 -0
  443. /package/{fs → fjs}/text/utf16/module.f.d.ts +0 -0
  444. /package/{fs → fjs}/text/utf16/proof.f.d.ts +0 -0
  445. /package/{fs → fjs}/text/utf8/module.f.d.ts +0 -0
  446. /package/{fs → fjs}/text/utf8/proof.f.d.ts +0 -0
  447. /package/{fs → fjs}/types/array/module.f.d.ts +0 -0
  448. /package/{fs → fjs}/types/array/proof.f.d.ts +0 -0
  449. /package/{fs → fjs}/types/bigfloat/module.f.d.ts +0 -0
  450. /package/{fs → fjs}/types/bigfloat/proof.f.d.ts +0 -0
  451. /package/{fs → fjs}/types/bigint/module.f.d.ts +0 -0
  452. /package/{fs → fjs}/types/bigint/proof.f.d.ts +0 -0
  453. /package/{fs → fjs}/types/bit_vec/module.f.d.ts +0 -0
  454. /package/{fs → fjs}/types/bit_vec/proof.f.d.ts +0 -0
  455. /package/{fs → fjs}/types/btree/find/module.f.d.ts +0 -0
  456. /package/{fs → fjs}/types/btree/module.f.d.ts +0 -0
  457. /package/{fs → fjs}/types/btree/remove/module.f.d.ts +0 -0
  458. /package/{fs → fjs}/types/btree/set/module.f.d.ts +0 -0
  459. /package/{fs → fjs}/types/btree/set/proof.f.d.ts +0 -0
  460. /package/{fs → fjs}/types/btree/types/module.f.d.ts +0 -0
  461. /package/{fs → fjs}/types/btree/types/module.f.js +0 -0
  462. /package/{fs → fjs}/types/byte_set/module.f.d.ts +0 -0
  463. /package/{fs → fjs}/types/byte_set/proof.f.d.ts +0 -0
  464. /package/{fs → fjs}/types/function/compare/module.f.d.ts +0 -0
  465. /package/{fs → fjs}/types/function/compare/module.f.js +0 -0
  466. /package/{fs/types/btree/find → fjs/types/function/compare}/proof.f.d.ts +0 -0
  467. /package/{fs → fjs}/types/function/module.f.d.ts +0 -0
  468. /package/{fs → fjs}/types/function/module.f.js +0 -0
  469. /package/{fs → fjs}/types/function/operator/module.f.d.ts +0 -0
  470. /package/{fs → fjs}/types/function/operator/module.f.js +0 -0
  471. /package/{fs/types/function/compare → fjs/types/function}/proof.f.d.ts +0 -0
  472. /package/{fs → fjs}/types/list/module.f.d.ts +0 -0
  473. /package/{fs → fjs}/types/map/module.f.d.ts +0 -0
  474. /package/{fs → fjs}/types/map/module.f.js +0 -0
  475. /package/{fs → fjs}/types/map/proof.f.d.ts +0 -0
  476. /package/{fs → fjs}/types/nibble_set/module.f.d.ts +0 -0
  477. /package/{fs → fjs}/types/nibble_set/module.f.js +0 -0
  478. /package/{fs → fjs}/types/nibble_set/proof.f.d.ts +0 -0
  479. /package/{fs → fjs}/types/nominal/module.f.d.ts +0 -0
  480. /package/{fs → fjs}/types/nominal/module.f.js +0 -0
  481. /package/{fs → fjs}/types/nominal/proof.f.d.ts +0 -0
  482. /package/{fs → fjs}/types/nullable/module.f.d.ts +0 -0
  483. /package/{fs → fjs}/types/nullable/proof.f.d.ts +0 -0
  484. /package/{fs → fjs}/types/number/module.f.d.ts +0 -0
  485. /package/{fs → fjs}/types/number/proof.f.d.ts +0 -0
  486. /package/{fs → fjs}/types/object/module.f.d.ts +0 -0
  487. /package/{fs → fjs}/types/object/proof.f.d.ts +0 -0
  488. /package/{fs → fjs}/types/option/module.f.d.ts +0 -0
  489. /package/{fs → fjs}/types/option/module.f.js +0 -0
  490. /package/{fs → fjs}/types/ordered_map/module.f.d.ts +0 -0
  491. /package/{fs → fjs}/types/ordered_map/proof.f.d.ts +0 -0
  492. /package/{fs → fjs}/types/patricia_trie/module.f.d.ts +0 -0
  493. /package/{fs → fjs}/types/patricia_trie/module.f.js +0 -0
  494. /package/{fs → fjs}/types/phantom/module.f.d.ts +0 -0
  495. /package/{fs → fjs}/types/phantom/module.f.js +0 -0
  496. /package/{fs → fjs}/types/prime_field/module.f.d.ts +0 -0
  497. /package/{fs → fjs}/types/prime_field/proof.f.d.ts +0 -0
  498. /package/{fs/types/function → fjs/types/range}/proof.f.d.ts +0 -0
  499. /package/{fs → fjs}/types/range_map/module.f.d.ts +0 -0
  500. /package/{fs → fjs}/types/range_map/proof.f.d.ts +0 -0
  501. /package/{fs → fjs}/types/result/module.d.ts +0 -0
  502. /package/{fs → fjs}/types/result/module.f.d.ts +0 -0
  503. /package/{fs → fjs}/types/result/module.f.js +0 -0
  504. /package/{fs → fjs}/types/rtti/parse/module.f.d.ts +0 -0
  505. /package/{fs → fjs}/types/rtti/parse/proof.f.d.ts +0 -0
  506. /package/{fs → fjs}/types/rtti/proof.f.d.ts +0 -0
  507. /package/{fs → fjs}/types/rtti/proof.f.js +0 -0
  508. /package/{fs → fjs}/types/rtti/ts/proof.f.d.ts +0 -0
  509. /package/{fs → fjs}/types/rtti/validate/module.f.d.ts +0 -0
  510. /package/{fs → fjs}/types/rtti/validate/proof.f.d.ts +0 -0
  511. /package/{fs → fjs}/types/sorted_list/module.f.d.ts +0 -0
  512. /package/{fs → fjs}/types/sorted_list/proof.f.d.ts +0 -0
  513. /package/{fs → fjs}/types/sorted_set/module.f.d.ts +0 -0
  514. /package/{fs → fjs}/types/sorted_set/proof.f.d.ts +0 -0
  515. /package/{fs → fjs}/types/string/module.f.d.ts +0 -0
  516. /package/{fs → fjs}/types/string/proof.f.d.ts +0 -0
  517. /package/{fs → fjs}/types/string_set/module.f.d.ts +0 -0
  518. /package/{fs → fjs}/types/string_set/proof.f.d.ts +0 -0
  519. /package/{fs → fjs}/types/ts/module.f.d.ts +0 -0
  520. /package/{fs → fjs}/types/ts/module.f.js +0 -0
  521. /package/{fs → fjs}/types/uint8array/module.f.d.ts +0 -0
  522. /package/{fs → fjs}/website/module.f.d.ts +0 -0
  523. /package/{fs → fjs}/website/proof.f.d.ts +0 -0
@@ -1,150 +1,107 @@
1
- import { toCodePointList, fromCodePointList, stringToList, listToString, stringToCodePointList, codePointListToString } from "./module.f.js";
2
- import { stringify as jsonStringify } from "../../json/module.f.js";
3
- import { sort } from "../../types/object/module.f.js";
4
- import { toArray } from "../../types/list/module.f.js";
1
+ import { toCodePointList, fromCodePointList, stringToList, listToString, stringToCodePointList, codePointListToString } from './module.f.js';
2
+ import { stringify as jsonStringify } from '../../media/json/module.f.js';
3
+ import { sort } from '../../types/object/module.f.js';
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: [
@@ -3,10 +3,10 @@
3
3
  *
4
4
  * @module
5
5
  */
6
- import { flatMap, toArray } from "../../types/list/module.f.js";
7
- import { decoder, errorMask, isValidCodePoint } from "../code_point/module.f.js";
8
- import { msb, u8List, length } from "../../types/bit_vec/module.f.js";
9
- import { codePointListToString } from "../utf16/module.f.js";
6
+ import { flatMap, toArray } from '../../types/list/module.f.js';
7
+ import { decoder, errorMask, isValidCodePoint } from '../code_point/module.f.js';
8
+ import { msb, u8List, length } from '../../types/bit_vec/module.f.js';
9
+ import { codePointListToString } from '../utf16/module.f.js';
10
10
  /**
11
11
  * UTF-8 byte-format constants. Each byte kind is defined by a tag — the fixed
12
12
  * high bits identifying the kind — and a payload mask selecting the code-point
@@ -36,6 +36,21 @@ const contByte = (x) => x & contMask | contTag;
36
36
  * Reads the six payload bits of a continuation byte.
37
37
  */
38
38
  const contPayload = (b) => b & contMask;
39
+ /**
40
+ * The valid lead-byte range for 2-, 3-, and 4-byte sequences (RFC 3629);
41
+ * excludes overlong 2-byte leads (`C0`, `C1`) and leads above `U+10FFFF` (`F5`-`F7`).
42
+ */
43
+ const leadMin = 0b1100_0010;
44
+ const leadMax = 0b1111_0100;
45
+ const isLeadByte = (b) => b >= leadMin && b <= leadMax;
46
+ /**
47
+ * Dispatches a fresh-state byte, emitting `prefix` ahead of whatever the byte
48
+ * itself produces. Shared by the `state === null` arm and by error recovery
49
+ * after {@link utf8StateToError}, which differ only in `prefix`.
50
+ */
51
+ const restart = (prefix) => (byte) => byte < contTag ? [[...prefix, byte], null]
52
+ : isLeadByte(byte) ? [[...prefix], [byte]]
53
+ : [[...prefix, byte | errorMask], null];
39
54
  /**
40
55
  * Converts a Unicode code point to a sequence of UTF-8 bytes.
41
56
  * @param input The Unicode code point to be converted. Valid range:
@@ -151,13 +166,8 @@ export const utf8ByteToCodePointOp = (byte, state) => {
151
166
  if (byte < 0x00 || byte > 0xff) {
152
167
  return [[errorMask], state];
153
168
  }
154
- if (state === null) {
155
- if (byte < contTag)
156
- return [[byte], null];
157
- if (byte >= 0b1100_0010 && byte <= 0b1111_0100)
158
- return [[], [byte]];
159
- return [[byte | errorMask], null];
160
- }
169
+ if (state === null)
170
+ return restart([])(byte);
161
171
  if (byte >= contTag && byte < lead2Tag) {
162
172
  switch (state.length) {
163
173
  case 1: {
@@ -197,12 +207,7 @@ export const utf8ByteToCodePointOp = (byte, state) => {
197
207
  }
198
208
  }
199
209
  }
200
- const error = utf8StateToError(state);
201
- if (byte < contTag)
202
- return [[error, byte], null];
203
- if (byte >= 0b1100_0010 && byte <= 0b1111_0100)
204
- return [[error], [byte]];
205
- return [[error, byte | errorMask], null];
210
+ return restart([utf8StateToError(state)])(byte);
206
211
  };
207
212
  /**
208
213
  * Handles the end-of-file (EOF) case for UTF-8 decoding.
@@ -1,237 +1,175 @@
1
- import { toCodePointList, fromCodePointList, fromVec } from "./module.f.js";
2
- import { stringify as jsonStringify } from "../../json/module.f.js";
3
- import { sort } from "../../types/object/module.f.js";
4
- import { toArray } from "../../types/list/module.f.js";
5
- import { msb, u8ListToVec } from "../../types/bit_vec/module.f.js";
1
+ import { toCodePointList, fromCodePointList, fromVec, utf8ByteToCodePointOp } from './module.f.js';
2
+ import { stringify as jsonStringify } from '../../media/json/module.f.js';
3
+ import { sort } from '../../types/object/module.f.js';
4
+ import { toArray } from '../../types/list/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
  };
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @module
5
5
  */
6
- import { fromUndefined, map } from "../nullable/module.f.js";
6
+ import { fromUndefined, map } from '../nullable/module.f.js';
7
7
  export const isArray = (value) => value instanceof Array;
8
8
  /**
9
9
  * Currently, TypeScript can't narrow the type of `readonly T[]` to `Array2<T>`