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
@@ -5,10 +5,10 @@
5
5
  *
6
6
  * @module
7
7
  */
8
- import { isArray } from "../array/module.f.js";
9
- import { iterable } from "../list/module.f.js";
10
- import { fromUndefined } from "../nullable/module.f.js";
11
- import { entries as mapEntries, fromEntries as mapFromEntries } from "../ordered_map/module.f.js";
8
+ import { isArray } from '../array/module.f.js';
9
+ import { iterable } from '../list/module.f.js';
10
+ import { fromUndefined } from '../nullable/module.f.js';
11
+ import { entries as mapEntries, fromEntries as mapFromEntries } from '../ordered_map/module.f.js';
12
12
  const { getOwnPropertyDescriptor, fromEntries: objectFromEntries } = Object;
13
13
  export const at = name => object => {
14
14
  const d = getOwnPropertyDescriptor(object, name);
@@ -1,4 +1,5 @@
1
- import { at } from "./module.f.js";
1
+ import { at } from './module.f.js';
2
+ import { assertEq } from '../../asserts/module.f.js';
2
3
  export const proof = {
3
4
  stringMap: {
4
5
  infiniteIsOptional: true,
@@ -7,15 +8,11 @@ export const proof = {
7
8
  ctor: () => {
8
9
  const a = {};
9
10
  const value = at('constructor')(a);
10
- if (value !== null) {
11
- throw value;
12
- }
11
+ assertEq(value, null);
13
12
  },
14
13
  property: () => {
15
14
  const a = { constructor: 42 };
16
15
  const value = at('constructor')(a);
17
- if (value !== 42) {
18
- throw value;
19
- }
16
+ assertEq(value, 42);
20
17
  }
21
18
  };
@@ -1,9 +1,9 @@
1
- import { value, find } from "../btree/find/module.f.js";
2
- import { set } from "../btree/set/module.f.js";
3
- import { remove as btreeRemove } from "../btree/remove/module.f.js";
4
- import { values } from "../btree/module.f.js";
5
- import { cmp } from "../string/module.f.js";
6
- import { fold } from "../list/module.f.js";
1
+ import { value, find } from '../btree/find/module.f.js';
2
+ import { set } from '../btree/set/module.f.js';
3
+ import { remove as btreeRemove } from '../btree/remove/module.f.js';
4
+ import { values } from '../btree/module.f.js';
5
+ import { cmp } from '../string/module.f.js';
6
+ import { fold } from '../list/module.f.js';
7
7
  const keyCmp = a => ([b]) => cmp(a)(b);
8
8
  export const at = (name) => (map) => {
9
9
  if (map === null) {
@@ -1,6 +1,6 @@
1
- import { at, setReplace, setReduce, empty, entries, remove, fromEntries } from "./module.f.js";
2
- import { toArray } from "../list/module.f.js";
3
- import { assertEq } from "../../asserts/module.f.js";
1
+ import { at, setReplace, setReduce, empty, entries, remove, fromEntries } from './module.f.js';
2
+ import { toArray } from '../list/module.f.js';
3
+ import { assertEq } from '../../asserts/module.f.js';
4
4
  export const proof = {
5
5
  main: [
6
6
  () => {
@@ -0,0 +1,13 @@
1
+ declare const empty: () => void;
2
+ declare const singleLeaf: () => void;
3
+ declare const twoLeaves: () => void;
4
+ declare const descending: () => void;
5
+ declare const ascending: () => void;
6
+ export declare const proof: {
7
+ empty: typeof empty;
8
+ singleLeaf: typeof singleLeaf;
9
+ twoLeaves: typeof twoLeaves;
10
+ descending: typeof descending;
11
+ ascending: typeof ascending;
12
+ };
13
+ export {};
@@ -1,5 +1,5 @@
1
- import { assert } from "../../asserts/module.f.js";
2
- import { emptyState, patriciaTrie } from "./module.f.js";
1
+ import { assert, assertEq } from '../../asserts/module.f.js';
2
+ import { emptyState, patriciaTrie } from './module.f.js';
3
3
  const combine = (a, b) => a * 1000n + b;
4
4
  const create = (a, b, s) => {
5
5
  const h = combine(a, b);
@@ -14,53 +14,53 @@ const runExample = (inputs, expectedLeaves, expectedNodeCounts) => {
14
14
  const prevCount = state[0].length;
15
15
  state = push([x, x], state);
16
16
  const actual = leaves(state);
17
- assert(actual.length === expectedLeaves[i].length);
17
+ assertEq(actual.length, expectedLeaves[i].length);
18
18
  for (let j = 0; j < actual.length; j++) {
19
- assert(actual[j] === expectedLeaves[i][j]);
19
+ assertEq(actual[j], expectedLeaves[i][j]);
20
20
  }
21
21
  const newNodes = state[0].slice(prevCount);
22
- assert(newNodes.length === expectedNodeCounts[i]);
22
+ assertEq(newNodes.length, expectedNodeCounts[i]);
23
23
  for (const [l, r, h] of newNodes) {
24
- assert(h === combine(l, r));
24
+ assertEq(h, combine(l, r));
25
25
  }
26
26
  }
27
27
  const prevCount = state[0].length;
28
28
  const [root, finalStorage] = end(state);
29
29
  const finalNodes = finalStorage.slice(prevCount);
30
- assert(finalNodes.length === expectedLeaves[expectedLeaves.length - 1].length - 1);
30
+ assertEq(finalNodes.length, expectedLeaves[expectedLeaves.length - 1].length - 1);
31
31
  assert(root !== undefined);
32
32
  for (const [l, r, h] of finalNodes) {
33
- assert(h === combine(l, r));
33
+ assertEq(h, combine(l, r));
34
34
  }
35
35
  };
36
36
  const empty = () => {
37
37
  const [root, storage] = end(emptyState([]));
38
- assert(storage.length === 0);
39
- assert(root === undefined);
38
+ assertEq(storage.length, 0);
39
+ assertEq(root, undefined);
40
40
  };
41
41
  const singleLeaf = () => {
42
42
  const state = push([42n, 42n], emptyState([]));
43
- assert(state[0].length === 0);
44
- assert(leaves(state).length === 1);
45
- assert(leaves(state)[0] === 42n);
43
+ assertEq(state[0].length, 0);
44
+ assertEq(leaves(state).length, 1);
45
+ assertEq(leaves(state)[0], 42n);
46
46
  const [root, finalStorage] = end(state);
47
- assert(finalStorage.length === 0);
48
- assert(root === 42n);
47
+ assertEq(finalStorage.length, 0);
48
+ assertEq(root, 42n);
49
49
  };
50
50
  const twoLeaves = () => {
51
51
  const s1 = push([7n, 7n], emptyState([]));
52
52
  const prevCount = s1[0].length;
53
53
  const s2 = push([3n, 3n], s1);
54
- assert(s2[0].slice(prevCount).length === 0);
55
- assert(leaves(s2).length === 2);
54
+ assertEq(s2[0].slice(prevCount).length, 0);
55
+ assertEq(leaves(s2).length, 2);
56
56
  const prevCount2 = s2[0].length;
57
57
  const [root, finalStorage] = end(s2);
58
58
  const finalNodes = finalStorage.slice(prevCount2);
59
- assert(finalNodes.length === 1);
60
- assert(finalNodes[0][0] === 7n);
61
- assert(finalNodes[0][1] === 3n);
62
- assert(finalNodes[0][2] === combine(7n, 3n));
63
- assert(root === combine(7n, 3n));
59
+ assertEq(finalNodes.length, 1);
60
+ assertEq(finalNodes[0][0], 7n);
61
+ assertEq(finalNodes[0][1], 3n);
62
+ assertEq(finalNodes[0][2], combine(7n, 3n));
63
+ assertEq(root, combine(7n, 3n));
64
64
  };
65
65
  // example.md — descending
66
66
  // merges happen at: step 2 (1), 3 (1), 4 (1), 7 (2), 8 (2), A (1), C (2), F (1)
@@ -1,5 +1,5 @@
1
- import { repeat } from "../monoid/module.f.js";
2
- import { assert } from "../../asserts/module.f.js";
1
+ import { repeat } from '../../common/monoid/module.f.js';
2
+ import { assertNotNullish } from '../../asserts/module.f.js';
3
3
  /**
4
4
  * Creates a prime field with the specified prime modulus and associated operations.
5
5
  *
@@ -102,16 +102,11 @@ export const modSqrt = (field) => {
102
102
  return x => {
103
103
  const v = reduce(x);
104
104
  const r = sqrt_p(v);
105
- if (r !== null) {
106
- return r;
107
- }
108
105
  // For a prime `p ≡ 3 (mod 4)`, `−1` is a non-residue, so exactly one of
109
106
  // `±v` is a quadratic residue: if `v` has no root, `neg(v)` must — hence
110
107
  // `s` is non-null. `sqrt` already enforces `p ≡ 3 (mod 4)`, but primality
111
108
  // is never checked, so the only way to reach `s === null` is a *composite*
112
109
  // modulus (where the residue argument breaks).
113
- const s = sqrt_p(neg(v));
114
- assert(s !== null, 'modSqrt');
115
- return s;
110
+ return r !== null ? r : assertNotNullish(sqrt_p(neg(v)), 'modSqrt');
116
111
  };
117
112
  };
@@ -1,5 +1,5 @@
1
- import { modSqrt, prime_field, sqrt } from "./module.f.js";
2
- import { assert, assertEq } from "../../asserts/module.f.js";
1
+ import { modSqrt, prime_field, sqrt } from './module.f.js';
2
+ import { assert, assertEq } from '../../asserts/module.f.js';
3
3
  export const proof = {
4
4
  throw: {
5
5
  reciprocal_zero: () => prime_field(7n).reciprocal(0n),
@@ -4,5 +4,5 @@
4
4
  * @module
5
5
  */
6
6
  export type Range = readonly [number, number];
7
- export declare const contains: (range: Range) => (i: number) => boolean;
7
+ export declare const contains: (...range: Range) => (i: number) => boolean;
8
8
  export declare const one: (i: number) => Range;
@@ -0,0 +1,2 @@
1
+ export const contains = (b, e) => i => b <= i && i <= e;
2
+ export const one = a => [a, a];
@@ -0,0 +1,9 @@
1
+ import { contains } from './module.f.js';
2
+ import { assert } from '../../asserts/module.f.js';
3
+ export const proof = () => {
4
+ assert(contains(0, 5)(1), 1);
5
+ assert(contains(0, 5)(0), 0);
6
+ assert(contains(0, 5)(5), 5);
7
+ assert(!(contains(0, 5)(-1)), -1);
8
+ assert(!(contains(0, 5)(6)), 6);
9
+ };
@@ -34,10 +34,10 @@
34
34
  * if (rmOps.get(16)(merged) !== 0) { throw 'error' }
35
35
  * ```
36
36
  */
37
- import { genericMerge } from "../sorted_list/module.f.js";
38
- import { next } from "../list/module.f.js";
39
- import { cmp } from "../number/module.f.js";
40
- import { bsearch } from "../function/compare/module.f.js";
37
+ import { genericMerge } from '../sorted_list/module.f.js';
38
+ import { next } from '../list/module.f.js';
39
+ import { cmp } from '../number/module.f.js';
40
+ import { bsearch } from '../function/compare/module.f.js';
41
41
  const reduceOp = ({ union, equal }) => state => ([aItem, aMax]) => ([bItem, bMax]) => {
42
42
  const sign = cmp(aMax)(bMax);
43
43
  const min = sign === 1 ? bMax : aMax;
@@ -1,10 +1,11 @@
1
- import { get, merge, fromRange, rangeMap } from "./module.f.js";
2
- import { stringify } from "../../json/module.f.js";
3
- import { sort } from "../object/module.f.js";
4
- import { union } from "../sorted_set/module.f.js";
5
- import { equal, toArray } from "../list/module.f.js";
6
- import { strictEqual } from "../function/operator/module.f.js";
7
- import { cmp } from "../string/module.f.js";
1
+ import { get, merge, fromRange, rangeMap } from './module.f.js';
2
+ import { stringify } from '../../media/json/module.f.js';
3
+ import { sort } from '../object/module.f.js';
4
+ import { union } from '../sorted_set/module.f.js';
5
+ import { equal, toArray } from '../list/module.f.js';
6
+ import { strictEqual } from '../function/operator/module.f.js';
7
+ import { cmp } from '../string/module.f.js';
8
+ import { assertEq } from '../../asserts/module.f.js';
8
9
  const str = stringify(sort);
9
10
  const op = {
10
11
  union: union(cmp),
@@ -25,31 +26,17 @@ export const proof = {
25
26
  const merged = toArray(rmOps.merge(range1)(range2));
26
27
  // Retrieve values from the merged range map
27
28
  //
28
- if (rmOps.get(-1)(merged) !== 0) {
29
- throw 'error';
30
- }
29
+ assertEq(rmOps.get(-1)(merged), 0, 'error');
31
30
  //
32
- if (rmOps.get(0)(merged) !== 2) {
33
- throw 'error';
34
- }
35
- if (rmOps.get(2)(merged) !== 2) {
36
- throw 'error';
37
- }
31
+ assertEq(rmOps.get(0)(merged), 2, 'error');
32
+ assertEq(rmOps.get(2)(merged), 2, 'error');
38
33
  // 2 | 5 = 7
39
- if (rmOps.get(7)(merged) !== 7) {
40
- throw 'error';
41
- }
34
+ assertEq(rmOps.get(7)(merged), 7, 'error');
42
35
  //
43
- if (rmOps.get(12)(merged) !== 5) {
44
- throw 'error';
45
- }
46
- if (rmOps.get(15)(merged) !== 5) {
47
- throw 'error';
48
- }
36
+ assertEq(rmOps.get(12)(merged), 5, 'error');
37
+ assertEq(rmOps.get(15)(merged), 5, 'error');
49
38
  //
50
- if (rmOps.get(16)(merged) !== 0) {
51
- throw 'error';
52
- }
39
+ assertEq(rmOps.get(16)(merged), 0, 'error');
53
40
  },
54
41
  merge: [
55
42
  () => {
@@ -57,63 +44,49 @@ export const proof = {
57
44
  const b = null;
58
45
  const merged = merge(op)(a)(b);
59
46
  const result = str(toArray(merged));
60
- if (result !== '[[["a"],1],[["b"],2]]') {
61
- throw result;
62
- }
47
+ assertEq(result, '[[["a"],1],[["b"],2]]');
63
48
  },
64
49
  () => {
65
50
  const a = null;
66
51
  const b = [[['a'], 1], [['b'], 2]];
67
52
  const merged = merge(op)(a)(b);
68
53
  const result = str(toArray(merged));
69
- if (result !== '[[["a"],1],[["b"],2]]') {
70
- throw result;
71
- }
54
+ assertEq(result, '[[["a"],1],[["b"],2]]');
72
55
  },
73
56
  () => {
74
57
  const a = [[['a'], 1], [['b'], 2]];
75
58
  const b = [[['a'], 1], [['b'], 2]];
76
59
  const merged = merge(op)(a)(b);
77
60
  const result = str(toArray(merged));
78
- if (result !== '[[["a"],1],[["b"],2]]') {
79
- throw result;
80
- }
61
+ assertEq(result, '[[["a"],1],[["b"],2]]');
81
62
  },
82
63
  () => {
83
64
  const a = [[['a'], 1], [['c'], 3]];
84
65
  const b = [[['b'], 2], [['d'], 4]];
85
66
  const merged = merge(op)(a)(b);
86
67
  const result = str(toArray(merged));
87
- if (result !== '[[["a","b"],1],[["b","c"],2],[["c","d"],3],[["d"],4]]') {
88
- throw result;
89
- }
68
+ assertEq(result, '[[["a","b"],1],[["b","c"],2],[["c","d"],3],[["d"],4]]');
90
69
  },
91
70
  () => {
92
71
  const a = [[['a'], 1], [['d'], 4]];
93
72
  const b = [[['b'], 2], [['c'], 3]];
94
73
  const merged = merge(op)(a)(b);
95
74
  const result = str(toArray(merged));
96
- if (result !== '[[["a","b"],1],[["b","d"],2],[["c","d"],3],[["d"],4]]') {
97
- throw result;
98
- }
75
+ assertEq(result, '[[["a","b"],1],[["b","d"],2],[["c","d"],3],[["d"],4]]');
99
76
  },
100
77
  () => {
101
78
  const a = [[['a'], 1], [['b'], 2]];
102
79
  const b = [[['b'], 1], [['a'], 2]];
103
80
  const merged = merge(op)(a)(b);
104
81
  const result = str(toArray(merged));
105
- if (result !== '[[["a","b"],2]]') {
106
- throw result;
107
- }
82
+ assertEq(result, '[[["a","b"],2]]');
108
83
  },
109
84
  () => {
110
85
  const a = [[['a'], 1], [['b'], 2], [['a'], 3]];
111
86
  const b = [[['a'], 5]];
112
87
  const merged = merge(op)(a)(b);
113
88
  const result = str(toArray(merged));
114
- if (result !== '[[["a"],1],[["a","b"],2],[["a"],5]]') {
115
- throw result;
116
- }
89
+ assertEq(result, '[[["a"],1],[["a","b"],2],[["a"],5]]');
117
90
  }
118
91
  ],
119
92
  get: () => {
@@ -123,58 +96,42 @@ export const proof = {
123
96
  () => {
124
97
  const rm = [[['a'], 10], [['b'], 20], [['c'], 30]];
125
98
  const result = str(at(5)(rm));
126
- if (result !== '["a"]') {
127
- throw result;
128
- }
99
+ assertEq(result, '["a"]');
129
100
  },
130
101
  () => {
131
102
  const rm = [[['a'], 10], [['b'], 20], [['c'], 30]];
132
103
  const result = str(at(10)(rm));
133
- if (result !== '["a"]') {
134
- throw result;
135
- }
104
+ assertEq(result, '["a"]');
136
105
  },
137
106
  () => {
138
107
  const rm = [[['a'], 10], [['b'], 20], [['c'], 30]];
139
108
  const result = str(at(15)(rm));
140
- if (result !== '["b"]') {
141
- throw result;
142
- }
109
+ assertEq(result, '["b"]');
143
110
  },
144
111
  () => {
145
112
  const rm = [[['a'], 10], [['b'], 20], [['c'], 30]];
146
113
  const result = str(at(20)(rm));
147
- if (result !== '["b"]') {
148
- throw result;
149
- }
114
+ assertEq(result, '["b"]');
150
115
  },
151
116
  () => {
152
117
  const rm = [[['a'], 10], [['b'], 20], [['c'], 30]];
153
118
  const result = str(at(25)(rm));
154
- if (result !== '["c"]') {
155
- throw result;
156
- }
119
+ assertEq(result, '["c"]');
157
120
  },
158
121
  () => {
159
122
  const rm = [[['a'], 10], [['b'], 20], [['c'], 30]];
160
123
  const result = str(at(30)(rm));
161
- if (result !== '["c"]') {
162
- throw result;
163
- }
124
+ assertEq(result, '["c"]');
164
125
  },
165
126
  () => {
166
127
  const rm = [[['a'], 10], [['b'], 20], [['c'], 30]];
167
128
  const result = str(at(35)(rm));
168
- if (result !== '[]') {
169
- throw result;
170
- }
129
+ assertEq(result, '[]');
171
130
  },
172
131
  () => {
173
132
  const rm = [];
174
133
  const result = str(at(10)(rm));
175
- if (result !== '[]') {
176
- throw result;
177
- }
134
+ assertEq(result, '[]');
178
135
  }
179
136
  ];
180
137
  },
@@ -184,33 +141,23 @@ export const proof = {
184
141
  return [
185
142
  () => {
186
143
  const result = get(def)(0)(rm);
187
- if (result !== -1) {
188
- throw result;
189
- }
144
+ assertEq(result, -1);
190
145
  },
191
146
  () => {
192
147
  const result = get(def)(1)(rm);
193
- if (result !== 42) {
194
- throw result;
195
- }
148
+ assertEq(result, 42);
196
149
  },
197
150
  () => {
198
151
  const result = get(def)(3)(rm);
199
- if (result !== 42) {
200
- throw result;
201
- }
152
+ assertEq(result, 42);
202
153
  },
203
154
  () => {
204
155
  const result = get(def)(7)(rm);
205
- if (result !== 42) {
206
- throw result;
207
- }
156
+ assertEq(result, 42);
208
157
  },
209
158
  () => {
210
159
  const result = get(def)(9)(rm);
211
- if (result !== -1) {
212
- throw result;
213
- }
160
+ assertEq(result, -1);
214
161
  },
215
162
  ];
216
163
  }
@@ -1,4 +1,4 @@
1
- import { ok, error } from "./module.f.js";
1
+ import { ok, error } from './module.f.js';
2
2
  export const tryCatch = f => {
3
3
  // Side effect: `try catch` is not allowed in FunctionalScript.
4
4
  try {
@@ -0,0 +1,12 @@
1
+ declare const example: () => void;
2
+ declare const invertTest: () => void;
3
+ declare const mapOkTest: () => void;
4
+ export declare const proof: {
5
+ example: typeof example;
6
+ invertTest: typeof invertTest;
7
+ mapOkTest: typeof mapOkTest;
8
+ throw: {
9
+ unwrapError: () => string;
10
+ };
11
+ };
12
+ export {};
@@ -0,0 +1,31 @@
1
+ import { error, ok, unwrap, invert, mapOk } from "./module.f.js";
2
+ import { assert, assertEq } from '../../asserts/module.f.js';
3
+ const example = () => {
4
+ const success = ok(42);
5
+ const failure = error('Something went wrong');
6
+ assertEq(unwrap(success), 42, 'error');
7
+ const [kind, v] = failure;
8
+ assertEq(kind, 'error');
9
+ // `v` is inferred as `string` here
10
+ assertEq(v, 'Something went wrong', 'error');
11
+ };
12
+ const invertTest = () => {
13
+ const [k0, v0] = invert(ok(42));
14
+ assert(!(k0 !== 'error' || v0 !== 42), [k0, v0]);
15
+ const [k1, v1] = invert(error('oops'));
16
+ assert(!(k1 !== 'ok' || v1 !== 'oops'), [k1, v1]);
17
+ };
18
+ const mapOkTest = () => {
19
+ const [k0, v0] = mapOk((n) => n + 1)(ok(41));
20
+ assert(!(k0 !== 'ok' || v0 !== 42), [k0, v0]);
21
+ const [k1, v1] = mapOk((n) => n + 1)(error('oops'));
22
+ assert(!(k1 !== 'error' || v1 !== 'oops'), [k1, v1]);
23
+ };
24
+ export const proof = {
25
+ example,
26
+ invertTest,
27
+ mapOkTest,
28
+ throw: {
29
+ unwrapError: () => unwrap(error('oops')),
30
+ },
31
+ };
@@ -15,6 +15,11 @@
15
15
  * with one handler per variant; `visit(v)(rtti)` recognizes `rtti` and
16
16
  * calls the matching handler. Both consumers compose their top-level
17
17
  * function from a visitor.
18
+ * - `eachEntry`: the container entry loop (array/record/tuple/struct), shared
19
+ * by both consumers' container builders. Callers choose what (if anything)
20
+ * to accumulate, so `validate`'s pure pass/fail check pays no allocation.
21
+ * - `orVisit`: the shared `or` handler — try each variant's recursive walker,
22
+ * return the first match.
18
23
  *
19
24
  * Keeping the kernel here also removes `parse`'s incidental dependency on
20
25
  * `validate` and gives future schema-driven consumers (e.g. the data form
@@ -22,7 +27,7 @@
22
27
  *
23
28
  * @module
24
29
  */
25
- import type { Primitive, Unknown } from '../../../djs/module.f.ts';
30
+ import type { Primitive, Unknown } from '../ts/module.f.ts';
26
31
  import { type Info0, type Primitive0, type Struct, type Tag1, type Tuple, type Type } from '../module.f.ts';
27
32
  import { type Error, type Result as CommonResult } from '../../result/module.f.ts';
28
33
  import type { Ts } from '../ts/module.f.ts';
@@ -74,6 +79,36 @@ export type Container<K extends Tag1> = K extends 'array' ? ReadonlyArray<Unknow
74
79
  export declare const isArray: IsContainer<ReadonlyArray<Unknown>>;
75
80
  /** `IsContainer` guard for records/structs, shared by `validate` and `parse`. */
76
81
  export declare const isObject: IsContainer<StringMap<string, Unknown>>;
82
+ /**
83
+ * Runs `item` over each `[key, value]` entry, bailing out with the first
84
+ * error, path-prefixed with that entry's key. On success, folds each item's
85
+ * result into `acc` (starting from `init`) with `accumulate` and returns the
86
+ * final accumulator.
87
+ *
88
+ * Shared by `validate` and `parse`'s container builders (array/record/tuple/
89
+ * struct), which differ only in what `item` does with the value and what
90
+ * they accumulate: `validate` has nothing to collect — its entire schema is
91
+ * "did every entry succeed?" — so it passes `undefined`/`(acc) => acc` and
92
+ * pays no allocation per entry; `parse` needs the rebuilt `[key, value]`
93
+ * pairs, so it folds them into a `List` (see its call site) and converts to
94
+ * an array once at the end.
95
+ */
96
+ export declare const eachEntry: <V, R, A>(entries: ReadonlyArray<readonly [string, V]>, item: (k: string, v: V) => CommonResult<R, ValidationError>, init: A, accumulate: (acc: A, k: string, value: R) => A) => CommonResult<A, ValidationError>;
97
+ /** `Result` with the payload type erased; avoids instantiating `Ts<Type>`. */
98
+ export type ResultE = CommonResult<Unknown, ValidationError>;
99
+ /** A `Validate`-shaped function with the payload type erased. */
100
+ export type ValidateE = (value: Unknown) => ResultE;
101
+ /**
102
+ * First variant in `variants` that `recurse` accepts, else `verror('no match')`.
103
+ *
104
+ * Shared `or` handler for `validate` and `parse`: both try each variant
105
+ * against the value and return the first `'ok'` verbatim, differing only in
106
+ * which recursive function (`validate` or `parse`) walks each variant. `recurse`
107
+ * is typed over the erased `ValidateE` alias — annotating it as `(t: Type) =>
108
+ * Validate<Type>` would itself instantiate `Validate<Type>` and hit TS2589 —
109
+ * so each caller passes its recursive function through one boundary cast.
110
+ */
111
+ export declare const orVisit: (recurse: (t: Type) => ValidateE) => (variants: readonly Type[]) => (value: Unknown) => ResultE;
77
112
  /**
78
113
  * Visits a schema `Type` by dispatching to the matching handler in `v`.
79
114
  *
@@ -1,7 +1,7 @@
1
- import {} from "../module.f.js";
2
- import { error, ok } from "../../result/module.f.js";
3
- import { isArray as commonIsArray } from "../../array/module.f.js";
4
- import { isObject as commonIsObject } from "../../object/module.f.js";
1
+ import {} from '../module.f.js';
2
+ import { error, ok } from '../../result/module.f.js';
3
+ import { isArray as commonIsArray } from '../../array/module.f.js';
4
+ import { isObject as commonIsObject } from '../../object/module.f.js';
5
5
  /** Builds an error result with empty path and the given message. */
6
6
  export const verror = (message) => error({ path: [], message });
7
7
  /** Prepends `key` to the error's path, used to build the path bottom-up. */
@@ -25,6 +25,50 @@ const visitConst = (v) => (c) => typeof c === 'object' && c !== null
25
25
  export const isArray = value => commonIsArray(value);
26
26
  /** `IsContainer` guard for records/structs, shared by `validate` and `parse`. */
27
27
  export const isObject = value => commonIsObject(value);
28
+ /**
29
+ * Runs `item` over each `[key, value]` entry, bailing out with the first
30
+ * error, path-prefixed with that entry's key. On success, folds each item's
31
+ * result into `acc` (starting from `init`) with `accumulate` and returns the
32
+ * final accumulator.
33
+ *
34
+ * Shared by `validate` and `parse`'s container builders (array/record/tuple/
35
+ * struct), which differ only in what `item` does with the value and what
36
+ * they accumulate: `validate` has nothing to collect — its entire schema is
37
+ * "did every entry succeed?" — so it passes `undefined`/`(acc) => acc` and
38
+ * pays no allocation per entry; `parse` needs the rebuilt `[key, value]`
39
+ * pairs, so it folds them into a `List` (see its call site) and converts to
40
+ * an array once at the end.
41
+ */
42
+ export const eachEntry = (entries, item, init, accumulate) => {
43
+ let acc = init;
44
+ for (const [k, v] of entries) {
45
+ const r = item(k, v);
46
+ if (r[0] === 'error') {
47
+ return prependPath(k, r);
48
+ }
49
+ acc = accumulate(acc, k, r[1]);
50
+ }
51
+ return ok(acc);
52
+ };
53
+ /**
54
+ * First variant in `variants` that `recurse` accepts, else `verror('no match')`.
55
+ *
56
+ * Shared `or` handler for `validate` and `parse`: both try each variant
57
+ * against the value and return the first `'ok'` verbatim, differing only in
58
+ * which recursive function (`validate` or `parse`) walks each variant. `recurse`
59
+ * is typed over the erased `ValidateE` alias — annotating it as `(t: Type) =>
60
+ * Validate<Type>` would itself instantiate `Validate<Type>` and hit TS2589 —
61
+ * so each caller passes its recursive function through one boundary cast.
62
+ */
63
+ export const orVisit = (recurse) => (variants) => (value) => {
64
+ for (const t of variants) {
65
+ const r = recurse(t)(value);
66
+ if (r[0] === 'ok') {
67
+ return r;
68
+ }
69
+ }
70
+ return verror('no match');
71
+ };
28
72
  /**
29
73
  * Visits a schema `Type` by dispatching to the matching handler in `v`.
30
74
  *