functionalscript 0.37.0 → 0.39.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 (517) hide show
  1. package/README.md +1 -1
  2. package/{fs → fjs}/asn.1/proof.f.js +32 -94
  3. package/fjs/asserts/module.f.d.ts +36 -0
  4. package/fjs/asserts/module.f.js +39 -0
  5. package/fjs/asserts/proof.f.d.ts +11 -0
  6. package/fjs/asserts/proof.f.js +18 -0
  7. package/{fs → fjs}/base_n/proof.f.js +12 -36
  8. package/{fs → fjs}/basen/base64/proof.f.d.ts +1 -0
  9. package/{fs → fjs}/basen/base64/proof.f.js +15 -1
  10. package/{fs → fjs}/basen/cbase32/proof.f.js +15 -42
  11. package/fjs/bnf/data/module.f.d.ts +52 -0
  12. package/{fs → fjs}/bnf/data/module.f.js +53 -3
  13. package/{fs → fjs}/bnf/data/proof.f.d.ts +1 -0
  14. package/{fs → fjs}/bnf/data/proof.f.js +54 -19
  15. package/{fs → fjs}/bnf/descent/module.f.d.ts +4 -14
  16. package/fjs/bnf/descent/module.f.js +124 -0
  17. package/{fs → fjs}/bnf/descent/proof.f.d.ts +1 -0
  18. package/{fs → fjs}/bnf/descent/proof.f.js +55 -24
  19. package/{fs → fjs}/bnf/ll1/module.f.d.ts +4 -4
  20. package/{fs → fjs}/bnf/ll1/module.f.js +7 -5
  21. package/{fs → fjs}/bnf/ll1/proof.f.d.ts +1 -0
  22. package/{fs → fjs}/bnf/ll1/proof.f.js +27 -10
  23. package/{fs → fjs}/bnf/module.f.d.ts +19 -5
  24. package/{fs → fjs}/bnf/module.f.js +10 -11
  25. package/fjs/bnf/proof.f.js +69 -0
  26. package/{fs → fjs}/bnf/testlib.f.js +2 -2
  27. package/fjs/bnf/token_symbol/module.f.d.ts +38 -0
  28. package/fjs/bnf/token_symbol/module.f.js +48 -0
  29. package/fjs/bnf/token_symbol/proof.f.d.ts +10 -0
  30. package/fjs/bnf/token_symbol/proof.f.js +37 -0
  31. package/{fs → fjs}/cas/cli/module.f.js +6 -9
  32. package/{fs → fjs}/cas/cli/proof.f.d.ts +4 -1
  33. package/{fs → fjs}/cas/cli/proof.f.js +29 -66
  34. package/fjs/cas/evo/mcp/module.f.d.ts +27 -0
  35. package/fjs/cas/evo/mcp/module.f.js +94 -0
  36. package/fjs/cas/evo/mcp/proof.f.d.ts +11 -0
  37. package/fjs/cas/evo/mcp/proof.f.js +126 -0
  38. package/fjs/cas/evo/module.f.d.ts +202 -0
  39. package/fjs/cas/evo/module.f.js +421 -0
  40. package/fjs/cas/evo/proof.f.d.ts +39 -0
  41. package/fjs/cas/evo/proof.f.js +572 -0
  42. package/fjs/cas/mcp/module.f.d.ts +49 -0
  43. package/{fs → fjs}/cas/mcp/module.f.js +61 -81
  44. package/{fs → fjs}/cas/mcp/proof.f.d.ts +4 -1
  45. package/{fs → fjs}/cas/mcp/proof.f.js +45 -17
  46. package/{fs → fjs}/cas/module.f.d.ts +10 -0
  47. package/{fs → fjs}/cas/module.f.js +89 -36
  48. package/fjs/cas/proof.f.d.ts +18 -0
  49. package/fjs/cas/proof.f.js +305 -0
  50. package/{fs → fjs}/ci/bun/module.f.js +3 -3
  51. package/{fs → fjs}/ci/common/module.f.d.ts +1 -2
  52. package/{fs → fjs}/ci/common/module.f.js +1 -5
  53. package/{fs → fjs}/ci/config/module.f.d.ts +8 -8
  54. package/{fs → fjs}/ci/config/module.f.js +8 -8
  55. package/{fs → fjs}/ci/deno/module.f.js +3 -3
  56. package/{fs → fjs}/ci/module.f.js +3 -4
  57. package/{fs → fjs}/ci/node/module.f.js +11 -9
  58. package/{fs → fjs}/ci/proof.f.js +16 -9
  59. package/{fs → fjs}/ci/rust/module.f.js +9 -1
  60. package/{fs → fjs}/cli/module.f.js +2 -2
  61. package/{fs → fjs}/cli/proof.f.js +22 -63
  62. package/{fs → fjs}/common/monoid/module.f.d.ts +46 -2
  63. package/fjs/common/monoid/module.f.js +88 -0
  64. package/fjs/common/monoid/proof.f.d.ts +9 -0
  65. package/fjs/common/monoid/proof.f.js +48 -0
  66. package/{fs → fjs}/crypto/hmac/proof.f.js +4 -12
  67. package/fjs/crypto/pow/proof.f.js +111 -0
  68. package/{fs → fjs}/crypto/secp/proof.f.js +12 -33
  69. package/{fs → fjs}/crypto/sha2/proof.f.js +18 -49
  70. package/{fs → fjs}/crypto/sign/module.f.d.ts +0 -5
  71. package/{fs → fjs}/crypto/sign/module.f.js +7 -4
  72. package/{fs → fjs}/crypto/sign/proof.f.js +36 -105
  73. package/{fs → fjs}/crypto/vdf/proof.f.js +22 -63
  74. package/{fs → fjs}/dev/module.f.js +25 -25
  75. package/{fs → fjs}/dev/package_json/proof.f.js +7 -7
  76. package/{fs → fjs}/dev/proof.f.js +2 -4
  77. package/{fs → fjs}/djs/ast/proof.f.js +4 -12
  78. package/{fs → fjs}/djs/module.f.js +5 -8
  79. package/{fs → fjs}/djs/parser/module.f.d.ts +8 -0
  80. package/{fs → fjs}/djs/parser/module.f.js +37 -0
  81. package/{fs → fjs}/djs/parser/proof.f.js +138 -400
  82. package/{fs → fjs}/djs/proof.f.js +13 -36
  83. package/{fs → fjs}/djs/serializer/proof.f.js +14 -39
  84. package/fjs/djs/tokenizer/module.f.d.ts +24 -0
  85. package/fjs/djs/tokenizer/module.f.js +472 -0
  86. package/{fs/djs/tokenizer-new → fjs/djs/tokenizer}/proof.f.d.ts +4 -3
  87. package/{fs/djs/tokenizer-new → fjs/djs/tokenizer}/proof.f.js +446 -445
  88. package/{fs → fjs}/djs/transpiler/module.f.js +6 -6
  89. package/{fs → fjs}/djs/transpiler/proof.f.d.ts +3 -0
  90. package/{fs → fjs}/djs/transpiler/proof.f.js +29 -30
  91. package/fjs/effects/eff/module.f.d.ts +72 -0
  92. package/fjs/effects/eff/module.f.js +46 -0
  93. package/fjs/effects/eff/proof.f.d.ts +11 -0
  94. package/fjs/effects/eff/proof.f.js +58 -0
  95. package/{fs → fjs}/effects/list/module.f.d.ts +11 -5
  96. package/{fs → fjs}/effects/list/module.f.js +2 -1
  97. package/{fs → fjs}/effects/memory/proof.f.js +15 -29
  98. package/fjs/effects/module.f.d.ts +388 -0
  99. package/fjs/effects/module.f.js +288 -0
  100. package/{fs → fjs}/effects/node/memory/proof.js +7 -13
  101. package/{fs → fjs}/effects/node/module.d.ts +1 -1
  102. package/{fs → fjs}/effects/node/module.f.d.ts +2 -2
  103. package/{fs → fjs}/effects/node/module.f.js +9 -11
  104. package/{fs → fjs}/effects/node/module.js +3 -3
  105. package/{fs → fjs}/effects/node/proof.f.d.ts +1 -0
  106. package/{fs → fjs}/effects/node/proof.f.js +121 -299
  107. package/{fs → fjs}/effects/node/virtual/proof.f.d.ts +1 -0
  108. package/{fs → fjs}/effects/node/virtual/proof.f.js +36 -29
  109. package/fjs/effects/proof.f.d.ts +51 -0
  110. package/fjs/effects/proof.f.js +178 -0
  111. package/{fs → fjs}/emergent_testing/module.f.js +55 -39
  112. package/{fs → fjs}/emergent_testing/proof.f.d.ts +4 -0
  113. package/{fs → fjs}/emergent_testing/proof.f.js +60 -27
  114. package/{fs → fjs}/fsc/proof.f.js +12 -34
  115. package/{fs → fjs}/fsm/proof.f.js +5 -12
  116. package/{fs → fjs}/mcp/module.f.d.ts +7 -0
  117. package/{fs → fjs}/mcp/module.f.js +17 -10
  118. package/{fs → fjs}/mcp/proof.f.js +17 -16
  119. package/{fs → fjs}/mcp/stdio/module.f.d.ts +4 -4
  120. package/{fs → fjs}/mcp/stdio/module.f.js +14 -14
  121. package/{fs → fjs}/media/html/proof.f.js +12 -33
  122. package/{fs → fjs}/media/json/parser/module.f.d.ts +5 -0
  123. package/{fs → fjs}/media/json/parser/module.f.js +14 -0
  124. package/{fs → fjs}/media/json/parser/proof.f.js +39 -114
  125. package/{fs → fjs}/media/json/rpc/module.f.js +1 -1
  126. package/{fs → fjs}/media/json/schema/module.f.d.ts +2 -2
  127. package/{fs → fjs}/media/json/schema/module.f.js +23 -39
  128. package/{fs → fjs}/media/json/schema/proof.f.js +3 -6
  129. package/{fs → fjs}/media/json/serializer/proof.f.js +10 -27
  130. package/{fs → fjs}/media/module.f.d.ts +6 -6
  131. package/{fs → fjs}/media/module.f.js +3 -4
  132. package/{fs → fjs}/media/proof.f.js +5 -4
  133. package/{fs → fjs}/media/revision/module.f.d.ts +31 -4
  134. package/{fs → fjs}/media/revision/module.f.js +35 -23
  135. package/{fs → fjs}/media/revision/proof.f.d.ts +10 -8
  136. package/fjs/media/revision/proof.f.js +140 -0
  137. package/{fs → fjs}/media/type/module.f.js +2 -2
  138. package/{fs → fjs}/media/type/proof.f.js +8 -15
  139. package/{fs → fjs}/module.f.js +5 -9
  140. package/{fs → fjs}/path/proof.f.js +27 -78
  141. package/{fs → fjs}/proof.f.js +2 -0
  142. package/{fs → fjs}/sul/id/proof.f.js +7 -21
  143. package/{fs → fjs}/sul/level/hash/proof.f.js +5 -5
  144. package/{fs → fjs}/sul/level/literal/proof.f.js +12 -26
  145. package/fjs/text/ascii/proof.f.d.ts +6 -0
  146. package/{fs → fjs}/text/ascii/proof.f.js +4 -14
  147. package/{fs → fjs}/text/code_point/module.f.js +10 -10
  148. package/{fs → fjs}/text/proof.f.js +4 -9
  149. package/{fs → fjs}/text/sgr/proof.f.js +6 -15
  150. package/{fs → fjs}/text/utf16/module.f.js +1 -1
  151. package/{fs → fjs}/text/utf16/proof.f.js +23 -66
  152. package/{fs → fjs}/text/utf8/proof.f.js +56 -125
  153. package/{fs → fjs}/types/array/proof.f.js +18 -52
  154. package/fjs/types/bigfloat/proof.f.js +217 -0
  155. package/{fs → fjs}/types/bigint/module.f.js +4 -3
  156. package/{fs → fjs}/types/bigint/proof.f.js +49 -145
  157. package/{fs → fjs}/types/bit_vec/module.f.js +5 -15
  158. package/{fs → fjs}/types/bit_vec/proof.f.js +72 -214
  159. package/{fs → fjs}/types/btree/find/proof.f.js +23 -66
  160. package/{fs → fjs}/types/btree/proof.f.js +5 -12
  161. package/{fs → fjs}/types/btree/remove/module.f.d.ts +5 -0
  162. package/{fs → fjs}/types/btree/remove/module.f.js +12 -0
  163. package/{fs → fjs}/types/btree/remove/proof.f.d.ts +2 -0
  164. package/{fs → fjs}/types/btree/remove/proof.f.js +83 -230
  165. package/{fs → fjs}/types/btree/set/module.f.js +5 -2
  166. package/{fs → fjs}/types/btree/set/proof.f.js +35 -24
  167. package/{fs → fjs}/types/byte_set/proof.f.js +22 -63
  168. package/{fs → fjs}/types/function/compare/proof.f.js +13 -36
  169. package/{fs → fjs}/types/function/operator/proof.f.js +17 -48
  170. package/{fs → fjs}/types/function/proof.f.js +2 -3
  171. package/{fs → fjs}/types/list/module.f.d.ts +21 -0
  172. package/{fs → fjs}/types/list/module.f.js +17 -0
  173. package/{fs → fjs}/types/list/proof.f.d.ts +1 -0
  174. package/{fs → fjs}/types/list/proof.f.js +79 -164
  175. package/{fs → fjs}/types/map/proof.f.js +4 -12
  176. package/{fs → fjs}/types/nibble_set/proof.f.js +16 -45
  177. package/{fs → fjs}/types/nominal/proof.f.js +5 -10
  178. package/fjs/types/nullable/proof.f.js +29 -0
  179. package/{fs → fjs}/types/number/module.f.js +2 -1
  180. package/{fs → fjs}/types/number/proof.f.js +9 -24
  181. package/{fs → fjs}/types/object/proof.f.js +3 -6
  182. package/{fs → fjs}/types/patricia_trie/proof.f.js +21 -21
  183. package/{fs → fjs}/types/prime_field/module.f.js +2 -7
  184. package/{fs → fjs}/types/range/module.f.d.ts +1 -1
  185. package/fjs/types/range/module.f.js +2 -0
  186. package/fjs/types/range/proof.f.js +9 -0
  187. package/{fs → fjs}/types/range_map/proof.f.js +28 -81
  188. package/{fs → fjs}/types/result/proof.f.d.ts +3 -2
  189. package/fjs/types/result/proof.f.js +31 -0
  190. package/{fs → fjs}/types/rtti/common/module.f.d.ts +36 -1
  191. package/{fs → fjs}/types/rtti/common/module.f.js +44 -0
  192. package/fjs/types/rtti/common/proof.f.d.ts +8 -0
  193. package/fjs/types/rtti/common/proof.f.js +51 -0
  194. package/{fs → fjs}/types/rtti/parse/module.f.js +13 -22
  195. package/{fs → fjs}/types/rtti/parse/proof.f.js +7 -18
  196. package/{fs → fjs}/types/rtti/ts/module.f.d.ts +10 -4
  197. package/{fs → fjs}/types/rtti/validate/module.f.js +8 -29
  198. package/{fs → fjs}/types/rtti/validate/proof.f.js +4 -9
  199. package/{fs → fjs}/types/sorted_list/proof.f.js +8 -21
  200. package/{fs → fjs}/types/sorted_set/proof.f.js +14 -39
  201. package/{fs → fjs}/types/string/module.f.js +10 -2
  202. package/fjs/types/string/proof.f.js +77 -0
  203. package/fjs/types/string_set/proof.f.js +43 -0
  204. package/{fs → fjs}/types/ts/proof.f.js +15 -42
  205. package/{fs → fjs}/types/uint8array/module.f.js +7 -7
  206. package/{fs → fjs}/types/uint8array/proof.f.d.ts +4 -1
  207. package/{fs → fjs}/types/uint8array/proof.f.js +7 -7
  208. package/{fs → fjs}/website/module.f.js +2 -3
  209. package/{fs → fjs}/website/proof.f.js +3 -6
  210. package/package.json +8 -8
  211. package/fs/asserts/module.f.d.ts +0 -4
  212. package/fs/asserts/module.f.js +0 -9
  213. package/fs/asserts/proof.f.d.ts +0 -8
  214. package/fs/asserts/proof.f.js +0 -51
  215. package/fs/bnf/data/module.f.d.ts +0 -30
  216. package/fs/bnf/descent/module.f.js +0 -119
  217. package/fs/bnf/proof.f.js +0 -104
  218. package/fs/cas/mcp/module.f.d.ts +0 -36
  219. package/fs/cas/proof.f.d.ts +0 -20
  220. package/fs/cas/proof.f.js +0 -294
  221. package/fs/common/monoid/module.f.js +0 -44
  222. package/fs/common/monoid/proof.f.d.ts +0 -4
  223. package/fs/common/monoid/proof.f.js +0 -27
  224. package/fs/crypto/pow/proof.f.js +0 -161
  225. package/fs/djs/tokenizer/module.f.d.ts +0 -12
  226. package/fs/djs/tokenizer/module.f.js +0 -62
  227. package/fs/djs/tokenizer/proof.f.d.ts +0 -7
  228. package/fs/djs/tokenizer/proof.f.js +0 -543
  229. package/fs/djs/tokenizer-new/module.f.d.ts +0 -3
  230. package/fs/djs/tokenizer-new/module.f.js +0 -155
  231. package/fs/effects/module.f.d.ts +0 -106
  232. package/fs/effects/module.f.js +0 -80
  233. package/fs/effects/proof.f.d.ts +0 -25
  234. package/fs/effects/proof.f.js +0 -115
  235. package/fs/media/revision/proof.f.js +0 -119
  236. package/fs/text/ascii/proof.f.d.ts +0 -4
  237. package/fs/types/bigfloat/proof.f.js +0 -348
  238. package/fs/types/nullable/proof.f.js +0 -50
  239. package/fs/types/range/module.f.js +0 -2
  240. package/fs/types/range/proof.f.js +0 -18
  241. package/fs/types/result/proof.f.js +0 -52
  242. package/fs/types/string/proof.f.js +0 -118
  243. package/fs/types/string_set/proof.f.js +0 -82
  244. /package/{fs → fjs}/asn.1/module.f.d.ts +0 -0
  245. /package/{fs → fjs}/asn.1/module.f.js +0 -0
  246. /package/{fs → fjs}/asn.1/proof.f.d.ts +0 -0
  247. /package/{fs → fjs}/base_n/module.f.d.ts +0 -0
  248. /package/{fs → fjs}/base_n/module.f.js +0 -0
  249. /package/{fs → fjs}/base_n/proof.f.d.ts +0 -0
  250. /package/{fs → fjs}/basen/base128/module.f.d.ts +0 -0
  251. /package/{fs → fjs}/basen/base128/module.f.js +0 -0
  252. /package/{fs → fjs}/basen/base128/proof.f.d.ts +0 -0
  253. /package/{fs → fjs}/basen/base128/proof.f.js +0 -0
  254. /package/{fs → fjs}/basen/base64/module.f.d.ts +0 -0
  255. /package/{fs → fjs}/basen/base64/module.f.js +0 -0
  256. /package/{fs → fjs}/basen/cbase32/module.f.d.ts +0 -0
  257. /package/{fs → fjs}/basen/cbase32/module.f.js +0 -0
  258. /package/{fs → fjs}/basen/cbase32/proof.f.d.ts +0 -0
  259. /package/{fs → fjs}/bnf/proof.f.d.ts +0 -0
  260. /package/{fs → fjs}/bnf/testlib.f.d.ts +0 -0
  261. /package/{fs → fjs}/cas/cli/module.f.d.ts +0 -0
  262. /package/{fs → fjs}/ci/bun/module.f.d.ts +0 -0
  263. /package/{fs → fjs}/ci/deno/module.f.d.ts +0 -0
  264. /package/{fs → fjs}/ci/module.f.d.ts +0 -0
  265. /package/{fs → fjs}/ci/node/module.f.d.ts +0 -0
  266. /package/{fs → fjs}/ci/playwright/module.f.d.ts +0 -0
  267. /package/{fs → fjs}/ci/playwright/module.f.js +0 -0
  268. /package/{fs → fjs}/ci/proof.f.d.ts +0 -0
  269. /package/{fs → fjs}/ci/rust/module.f.d.ts +0 -0
  270. /package/{fs → fjs}/cli/module.f.d.ts +0 -0
  271. /package/{fs → fjs}/cli/proof.f.d.ts +0 -0
  272. /package/{fs → fjs}/crypto/hmac/module.f.d.ts +0 -0
  273. /package/{fs → fjs}/crypto/hmac/module.f.js +0 -0
  274. /package/{fs → fjs}/crypto/hmac/proof.f.d.ts +0 -0
  275. /package/{fs → fjs}/crypto/pow/module.f.d.ts +0 -0
  276. /package/{fs → fjs}/crypto/pow/module.f.js +0 -0
  277. /package/{fs → fjs}/crypto/pow/proof.f.d.ts +0 -0
  278. /package/{fs → fjs}/crypto/secp/module.f.d.ts +0 -0
  279. /package/{fs → fjs}/crypto/secp/module.f.js +0 -0
  280. /package/{fs → fjs}/crypto/secp/proof.f.d.ts +0 -0
  281. /package/{fs → fjs}/crypto/sha2/module.f.d.ts +0 -0
  282. /package/{fs → fjs}/crypto/sha2/module.f.js +0 -0
  283. /package/{fs → fjs}/crypto/sha2/proof.f.d.ts +0 -0
  284. /package/{fs → fjs}/crypto/sign/proof.f.d.ts +0 -0
  285. /package/{fs → fjs}/crypto/vdf/module.f.d.ts +0 -0
  286. /package/{fs → fjs}/crypto/vdf/module.f.js +0 -0
  287. /package/{fs → fjs}/crypto/vdf/proof.f.d.ts +0 -0
  288. /package/{fs → fjs}/dev/module.f.d.ts +0 -0
  289. /package/{fs → fjs}/dev/package_json/module.f.d.ts +0 -0
  290. /package/{fs → fjs}/dev/package_json/module.f.js +0 -0
  291. /package/{fs → fjs}/dev/package_json/proof.f.d.ts +0 -0
  292. /package/{fs → fjs}/dev/proof.f.d.ts +0 -0
  293. /package/{fs → fjs}/djs/ast/module.f.d.ts +0 -0
  294. /package/{fs → fjs}/djs/ast/module.f.js +0 -0
  295. /package/{fs → fjs}/djs/ast/proof.f.d.ts +0 -0
  296. /package/{fs → fjs}/djs/examples/input.f.d.ts +0 -0
  297. /package/{fs → fjs}/djs/examples/input.f.js +0 -0
  298. /package/{fs → fjs}/djs/examples/m.f.d.ts +0 -0
  299. /package/{fs → fjs}/djs/examples/m.f.js +0 -0
  300. /package/{fs → fjs}/djs/module.f.d.ts +0 -0
  301. /package/{fs → fjs}/djs/parser/proof.f.d.ts +0 -0
  302. /package/{fs → fjs}/djs/proof.f.d.ts +0 -0
  303. /package/{fs → fjs}/djs/serializer/module.f.d.ts +0 -0
  304. /package/{fs → fjs}/djs/serializer/module.f.js +0 -0
  305. /package/{fs → fjs}/djs/serializer/proof.f.d.ts +0 -0
  306. /package/{fs → fjs}/djs/transpiler/module.f.d.ts +0 -0
  307. /package/{fs → fjs}/effects/memory/module.f.d.ts +0 -0
  308. /package/{fs → fjs}/effects/memory/module.f.js +0 -0
  309. /package/{fs → fjs}/effects/memory/proof.f.d.ts +0 -0
  310. /package/{fs → fjs}/effects/mock/module.f.d.ts +0 -0
  311. /package/{fs → fjs}/effects/mock/module.f.js +0 -0
  312. /package/{fs → fjs}/effects/module.d.ts +0 -0
  313. /package/{fs → fjs}/effects/module.js +0 -0
  314. /package/{fs → fjs}/effects/node/memory/module.d.ts +0 -0
  315. /package/{fs → fjs}/effects/node/memory/module.js +0 -0
  316. /package/{fs → fjs}/effects/node/memory/proof.d.ts +0 -0
  317. /package/{fs → fjs}/effects/node/virtual/module.f.d.ts +0 -0
  318. /package/{fs → fjs}/effects/node/virtual/module.f.js +0 -0
  319. /package/{fs → fjs}/emergent_testing/all.test.d.ts +0 -0
  320. /package/{fs → fjs}/emergent_testing/all.test.js +0 -0
  321. /package/{fs → fjs}/emergent_testing/example.f.d.ts +0 -0
  322. /package/{fs → fjs}/emergent_testing/example.f.js +0 -0
  323. /package/{fs → fjs}/emergent_testing/module.f.d.ts +0 -0
  324. /package/{fs → fjs}/emergent_testing/scenarios/all.d.ts +0 -0
  325. /package/{fs → fjs}/emergent_testing/scenarios/all.js +0 -0
  326. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.fail.d.ts +0 -0
  327. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.fail.js +0 -0
  328. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.pass.d.ts +0 -0
  329. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.pass.js +0 -0
  330. /package/{fs → fjs}/emergent_testing/scenarios/async.fail.d.ts +0 -0
  331. /package/{fs → fjs}/emergent_testing/scenarios/async.fail.js +0 -0
  332. /package/{fs → fjs}/emergent_testing/scenarios/async.pass.d.ts +0 -0
  333. /package/{fs → fjs}/emergent_testing/scenarios/async.pass.js +0 -0
  334. /package/{fs → fjs}/emergent_testing/scenarios/fail.fail.d.ts +0 -0
  335. /package/{fs → fjs}/emergent_testing/scenarios/fail.fail.js +0 -0
  336. /package/{fs → fjs}/emergent_testing/scenarios/return-value.pass.d.ts +0 -0
  337. /package/{fs → fjs}/emergent_testing/scenarios/return-value.pass.js +0 -0
  338. /package/{fs → fjs}/emergent_testing/scenarios/thenable.pass.d.ts +0 -0
  339. /package/{fs → fjs}/emergent_testing/scenarios/thenable.pass.js +0 -0
  340. /package/{fs → fjs}/emergent_testing/scenarios/thenable2.pass.d.ts +0 -0
  341. /package/{fs → fjs}/emergent_testing/scenarios/thenable2.pass.js +0 -0
  342. /package/{fs → fjs}/emergent_testing/scenarios/throw.pass.d.ts +0 -0
  343. /package/{fs → fjs}/emergent_testing/scenarios/throw.pass.js +0 -0
  344. /package/{fs → fjs}/fsc/bnf.f.d.ts +0 -0
  345. /package/{fs → fjs}/fsc/bnf.f.js +0 -0
  346. /package/{fs → fjs}/fsc/json.f.d.ts +0 -0
  347. /package/{fs → fjs}/fsc/json.f.js +0 -0
  348. /package/{fs → fjs}/fsc/module.f.d.ts +0 -0
  349. /package/{fs → fjs}/fsc/module.f.js +0 -0
  350. /package/{fs → fjs}/fsc/proof.f.d.ts +0 -0
  351. /package/{fs → fjs}/fsm/module.f.d.ts +0 -0
  352. /package/{fs → fjs}/fsm/module.f.js +0 -0
  353. /package/{fs → fjs}/fsm/proof.f.d.ts +0 -0
  354. /package/{fs → fjs}/js/tokenizer/module.f.d.ts +0 -0
  355. /package/{fs → fjs}/js/tokenizer/module.f.js +0 -0
  356. /package/{fs → fjs}/js/tokenizer/proof.f.d.ts +0 -0
  357. /package/{fs → fjs}/js/tokenizer/proof.f.js +0 -0
  358. /package/{fs → fjs}/mcp/proof.f.d.ts +0 -0
  359. /package/{fs → fjs}/mcp/stdio/proof.f.d.ts +0 -0
  360. /package/{fs → fjs}/mcp/stdio/proof.f.js +0 -0
  361. /package/{fs → fjs}/media/html/module.f.d.ts +0 -0
  362. /package/{fs → fjs}/media/html/module.f.js +0 -0
  363. /package/{fs → fjs}/media/html/proof.f.d.ts +0 -0
  364. /package/{fs → fjs}/media/json/module.f.d.ts +0 -0
  365. /package/{fs → fjs}/media/json/module.f.js +0 -0
  366. /package/{fs → fjs}/media/json/parser/proof.f.d.ts +0 -0
  367. /package/{fs → fjs}/media/json/proof.f.d.ts +0 -0
  368. /package/{fs → fjs}/media/json/proof.f.js +0 -0
  369. /package/{fs → fjs}/media/json/rpc/module.f.d.ts +0 -0
  370. /package/{fs → fjs}/media/json/rpc/proof.f.d.ts +0 -0
  371. /package/{fs → fjs}/media/json/rpc/proof.f.js +0 -0
  372. /package/{fs → fjs}/media/json/schema/proof.f.d.ts +0 -0
  373. /package/{fs → fjs}/media/json/serializer/module.f.d.ts +0 -0
  374. /package/{fs → fjs}/media/json/serializer/module.f.js +0 -0
  375. /package/{fs → fjs}/media/json/serializer/proof.f.d.ts +0 -0
  376. /package/{fs → fjs}/media/json/tokenizer/module.f.d.ts +0 -0
  377. /package/{fs → fjs}/media/json/tokenizer/module.f.js +0 -0
  378. /package/{fs → fjs}/media/json/tokenizer/proof.f.d.ts +0 -0
  379. /package/{fs → fjs}/media/json/tokenizer/proof.f.js +0 -0
  380. /package/{fs → fjs}/media/proof.f.d.ts +0 -0
  381. /package/{fs → fjs}/media/type/module.f.d.ts +0 -0
  382. /package/{fs → fjs}/media/type/proof.f.d.ts +0 -0
  383. /package/{fs → fjs}/module.d.ts +0 -0
  384. /package/{fs → fjs}/module.f.d.ts +0 -0
  385. /package/{fs → fjs}/module.js +0 -0
  386. /package/{fs → fjs}/path/module.f.d.ts +0 -0
  387. /package/{fs → fjs}/path/module.f.js +0 -0
  388. /package/{fs → fjs}/path/proof.f.d.ts +0 -0
  389. /package/{fs → fjs}/proof.f.d.ts +0 -0
  390. /package/{fs → fjs}/sul/id/module.f.d.ts +0 -0
  391. /package/{fs → fjs}/sul/id/module.f.js +0 -0
  392. /package/{fs → fjs}/sul/id/proof.f.d.ts +0 -0
  393. /package/{fs → fjs}/sul/level/hash/module.f.d.ts +0 -0
  394. /package/{fs → fjs}/sul/level/hash/module.f.js +0 -0
  395. /package/{fs → fjs}/sul/level/hash/proof.f.d.ts +0 -0
  396. /package/{fs → fjs}/sul/level/literal/module.f.d.ts +0 -0
  397. /package/{fs → fjs}/sul/level/literal/module.f.js +0 -0
  398. /package/{fs → fjs}/sul/level/literal/proof.f.d.ts +0 -0
  399. /package/{fs → fjs}/sul/module.f.d.ts +0 -0
  400. /package/{fs → fjs}/sul/module.f.js +0 -0
  401. /package/{fs → fjs}/sul/proof.f.d.ts +0 -0
  402. /package/{fs → fjs}/sul/proof.f.js +0 -0
  403. /package/{fs → fjs}/text/ascii/module.f.d.ts +0 -0
  404. /package/{fs → fjs}/text/ascii/module.f.js +0 -0
  405. /package/{fs → fjs}/text/code_point/module.f.d.ts +0 -0
  406. /package/{fs → fjs}/text/code_point/proof.f.d.ts +0 -0
  407. /package/{fs → fjs}/text/code_point/proof.f.js +0 -0
  408. /package/{fs → fjs}/text/module.f.d.ts +0 -0
  409. /package/{fs → fjs}/text/module.f.js +0 -0
  410. /package/{fs → fjs}/text/proof.f.d.ts +0 -0
  411. /package/{fs → fjs}/text/sgr/module.f.d.ts +0 -0
  412. /package/{fs → fjs}/text/sgr/module.f.js +0 -0
  413. /package/{fs → fjs}/text/sgr/proof.f.d.ts +0 -0
  414. /package/{fs → fjs}/text/utf16/module.f.d.ts +0 -0
  415. /package/{fs → fjs}/text/utf16/proof.f.d.ts +0 -0
  416. /package/{fs → fjs}/text/utf8/module.f.d.ts +0 -0
  417. /package/{fs → fjs}/text/utf8/module.f.js +0 -0
  418. /package/{fs → fjs}/text/utf8/proof.f.d.ts +0 -0
  419. /package/{fs → fjs}/types/array/module.f.d.ts +0 -0
  420. /package/{fs → fjs}/types/array/module.f.js +0 -0
  421. /package/{fs → fjs}/types/array/proof.f.d.ts +0 -0
  422. /package/{fs → fjs}/types/bigfloat/module.f.d.ts +0 -0
  423. /package/{fs → fjs}/types/bigfloat/module.f.js +0 -0
  424. /package/{fs → fjs}/types/bigfloat/proof.f.d.ts +0 -0
  425. /package/{fs → fjs}/types/bigint/module.f.d.ts +0 -0
  426. /package/{fs → fjs}/types/bigint/proof.f.d.ts +0 -0
  427. /package/{fs → fjs}/types/bit_vec/module.f.d.ts +0 -0
  428. /package/{fs → fjs}/types/bit_vec/proof.f.d.ts +0 -0
  429. /package/{fs → fjs}/types/btree/find/module.f.d.ts +0 -0
  430. /package/{fs → fjs}/types/btree/find/module.f.js +0 -0
  431. /package/{fs → fjs}/types/btree/find/proof.f.d.ts +0 -0
  432. /package/{fs → fjs}/types/btree/module.f.d.ts +0 -0
  433. /package/{fs → fjs}/types/btree/module.f.js +0 -0
  434. /package/{fs → fjs}/types/btree/proof.f.d.ts +0 -0
  435. /package/{fs → fjs}/types/btree/set/module.f.d.ts +0 -0
  436. /package/{fs → fjs}/types/btree/set/proof.f.d.ts +0 -0
  437. /package/{fs → fjs}/types/btree/types/module.f.d.ts +0 -0
  438. /package/{fs → fjs}/types/btree/types/module.f.js +0 -0
  439. /package/{fs → fjs}/types/byte_set/module.f.d.ts +0 -0
  440. /package/{fs → fjs}/types/byte_set/module.f.js +0 -0
  441. /package/{fs → fjs}/types/byte_set/proof.f.d.ts +0 -0
  442. /package/{fs → fjs}/types/function/compare/module.f.d.ts +0 -0
  443. /package/{fs → fjs}/types/function/compare/module.f.js +0 -0
  444. /package/{fs → fjs}/types/function/compare/proof.f.d.ts +0 -0
  445. /package/{fs → fjs}/types/function/module.f.d.ts +0 -0
  446. /package/{fs → fjs}/types/function/module.f.js +0 -0
  447. /package/{fs → fjs}/types/function/operator/module.f.d.ts +0 -0
  448. /package/{fs → fjs}/types/function/operator/module.f.js +0 -0
  449. /package/{fs → fjs}/types/function/operator/proof.f.d.ts +0 -0
  450. /package/{fs → fjs}/types/function/proof.f.d.ts +0 -0
  451. /package/{fs → fjs}/types/map/module.f.d.ts +0 -0
  452. /package/{fs → fjs}/types/map/module.f.js +0 -0
  453. /package/{fs → fjs}/types/map/proof.f.d.ts +0 -0
  454. /package/{fs → fjs}/types/nibble_set/module.f.d.ts +0 -0
  455. /package/{fs → fjs}/types/nibble_set/module.f.js +0 -0
  456. /package/{fs → fjs}/types/nibble_set/proof.f.d.ts +0 -0
  457. /package/{fs → fjs}/types/nominal/module.f.d.ts +0 -0
  458. /package/{fs → fjs}/types/nominal/module.f.js +0 -0
  459. /package/{fs → fjs}/types/nominal/proof.f.d.ts +0 -0
  460. /package/{fs → fjs}/types/nullable/module.f.d.ts +0 -0
  461. /package/{fs → fjs}/types/nullable/module.f.js +0 -0
  462. /package/{fs → fjs}/types/nullable/proof.f.d.ts +0 -0
  463. /package/{fs → fjs}/types/number/module.f.d.ts +0 -0
  464. /package/{fs → fjs}/types/number/proof.f.d.ts +0 -0
  465. /package/{fs → fjs}/types/object/module.f.d.ts +0 -0
  466. /package/{fs → fjs}/types/object/module.f.js +0 -0
  467. /package/{fs → fjs}/types/object/proof.f.d.ts +0 -0
  468. /package/{fs → fjs}/types/option/module.f.d.ts +0 -0
  469. /package/{fs → fjs}/types/option/module.f.js +0 -0
  470. /package/{fs → fjs}/types/ordered_map/module.f.d.ts +0 -0
  471. /package/{fs → fjs}/types/ordered_map/module.f.js +0 -0
  472. /package/{fs → fjs}/types/ordered_map/proof.f.d.ts +0 -0
  473. /package/{fs → fjs}/types/ordered_map/proof.f.js +0 -0
  474. /package/{fs → fjs}/types/patricia_trie/module.f.d.ts +0 -0
  475. /package/{fs → fjs}/types/patricia_trie/module.f.js +0 -0
  476. /package/{fs → fjs}/types/patricia_trie/proof.f.d.ts +0 -0
  477. /package/{fs → fjs}/types/phantom/module.f.d.ts +0 -0
  478. /package/{fs → fjs}/types/phantom/module.f.js +0 -0
  479. /package/{fs → fjs}/types/prime_field/module.f.d.ts +0 -0
  480. /package/{fs → fjs}/types/prime_field/proof.f.d.ts +0 -0
  481. /package/{fs → fjs}/types/prime_field/proof.f.js +0 -0
  482. /package/{fs → fjs}/types/range/proof.f.d.ts +0 -0
  483. /package/{fs → fjs}/types/range_map/module.f.d.ts +0 -0
  484. /package/{fs → fjs}/types/range_map/module.f.js +0 -0
  485. /package/{fs → fjs}/types/range_map/proof.f.d.ts +0 -0
  486. /package/{fs → fjs}/types/result/module.d.ts +0 -0
  487. /package/{fs → fjs}/types/result/module.f.d.ts +0 -0
  488. /package/{fs → fjs}/types/result/module.f.js +0 -0
  489. /package/{fs → fjs}/types/result/module.js +0 -0
  490. /package/{fs → fjs}/types/rtti/module.f.d.ts +0 -0
  491. /package/{fs → fjs}/types/rtti/module.f.js +0 -0
  492. /package/{fs → fjs}/types/rtti/parse/module.f.d.ts +0 -0
  493. /package/{fs → fjs}/types/rtti/parse/proof.f.d.ts +0 -0
  494. /package/{fs → fjs}/types/rtti/proof.f.d.ts +0 -0
  495. /package/{fs → fjs}/types/rtti/proof.f.js +0 -0
  496. /package/{fs → fjs}/types/rtti/ts/module.f.js +0 -0
  497. /package/{fs → fjs}/types/rtti/ts/proof.f.d.ts +0 -0
  498. /package/{fs → fjs}/types/rtti/ts/proof.f.js +0 -0
  499. /package/{fs → fjs}/types/rtti/validate/module.f.d.ts +0 -0
  500. /package/{fs → fjs}/types/rtti/validate/proof.f.d.ts +0 -0
  501. /package/{fs → fjs}/types/sorted_list/module.f.d.ts +0 -0
  502. /package/{fs → fjs}/types/sorted_list/module.f.js +0 -0
  503. /package/{fs → fjs}/types/sorted_list/proof.f.d.ts +0 -0
  504. /package/{fs → fjs}/types/sorted_set/module.f.d.ts +0 -0
  505. /package/{fs → fjs}/types/sorted_set/module.f.js +0 -0
  506. /package/{fs → fjs}/types/sorted_set/proof.f.d.ts +0 -0
  507. /package/{fs → fjs}/types/string/module.f.d.ts +0 -0
  508. /package/{fs → fjs}/types/string/proof.f.d.ts +0 -0
  509. /package/{fs → fjs}/types/string_set/module.f.d.ts +0 -0
  510. /package/{fs → fjs}/types/string_set/module.f.js +0 -0
  511. /package/{fs → fjs}/types/string_set/proof.f.d.ts +0 -0
  512. /package/{fs → fjs}/types/ts/module.f.d.ts +0 -0
  513. /package/{fs → fjs}/types/ts/module.f.js +0 -0
  514. /package/{fs → fjs}/types/ts/proof.f.d.ts +0 -0
  515. /package/{fs → fjs}/types/uint8array/module.f.d.ts +0 -0
  516. /package/{fs → fjs}/website/module.f.d.ts +0 -0
  517. /package/{fs → fjs}/website/proof.f.d.ts +0 -0
@@ -0,0 +1,217 @@
1
+ import { decToBin } from './module.f.js';
2
+ import { assertEq } from '../../asserts/module.f.js';
3
+ export const proof = {
4
+ decToBin: [
5
+ () => {
6
+ const result = decToBin([0n, 0]);
7
+ assertEq(result[0], 0n, result[0].toString(2));
8
+ assertEq(result[1], 0);
9
+ },
10
+ () => {
11
+ const result = decToBin([0n, 10]);
12
+ assertEq(result[0], 0n, result[0].toString(2));
13
+ assertEq(result[1], 0);
14
+ },
15
+ () => {
16
+ const result = decToBin([0n, -10]);
17
+ assertEq(result[0], 0n, result[0].toString(2));
18
+ assertEq(result[1], 0);
19
+ },
20
+ () => {
21
+ const result = decToBin([1n, 0]);
22
+ assertEq(result[0], 4503599627370496n, result[0].toString(2));
23
+ assertEq(result[1], -52);
24
+ },
25
+ () => {
26
+ const result = decToBin([1n, 1]);
27
+ assertEq(result[0], 5629499534213120n, result[0].toString(2));
28
+ assertEq(result[1], -49);
29
+ },
30
+ () => {
31
+ const result = decToBin([1000n, -2]);
32
+ assertEq(result[0], 5629499534213120n, result[0].toString(2));
33
+ assertEq(result[1], -49);
34
+ },
35
+ () => {
36
+ const result = decToBin([1n, -1]);
37
+ assertEq(result[0], 7205759403792794n, result[0].toString(2)); //+1
38
+ assertEq(result[1], -56);
39
+ },
40
+ () => {
41
+ const result = decToBin([-1n, 0]);
42
+ assertEq(result[0], -4503599627370496n, result[0].toString(2));
43
+ assertEq(result[1], -52);
44
+ },
45
+ () => {
46
+ const result = decToBin([-1n, 1]);
47
+ assertEq(result[0], -5629499534213120n, result[0].toString(2));
48
+ assertEq(result[1], -49);
49
+ },
50
+ () => {
51
+ const result = decToBin([-1000n, -2]);
52
+ assertEq(result[0], -5629499534213120n, result[0].toString(2));
53
+ assertEq(result[1], -49);
54
+ },
55
+ () => {
56
+ const result = decToBin([-1n, -1]);
57
+ assertEq(result[0], -7205759403792794n, result[0].toString(2)); //+1
58
+ assertEq(result[1], -56);
59
+ },
60
+ () => {
61
+ const result = decToBin([9007199254740993n, 0]); //54bits (...0.1)
62
+ assertEq(result[0], 4503599627370496n, result[0].toString(2));
63
+ assertEq(result[1], 1);
64
+ },
65
+ () => {
66
+ const result = decToBin([-9007199254740995n, 0]); //54bits (...1.1)
67
+ assertEq(result[0], -4503599627370498n, result[0].toString(2));
68
+ assertEq(result[1], 1);
69
+ },
70
+ () => {
71
+ const result = decToBin([-9007199254740993n, 0]); //54bits (...0.1)
72
+ assertEq(result[0], -4503599627370496n, result[0].toString(2));
73
+ assertEq(result[1], 1);
74
+ },
75
+ () => {
76
+ const result = decToBin([-9007199254740995n, 0]); //54bits (...1.1)
77
+ assertEq(result[0], -4503599627370498n, result[0].toString(2));
78
+ assertEq(result[1], 1);
79
+ },
80
+ () => {
81
+ const result = decToBin([18014398509481985n, 0]); //55bits (...0.01)
82
+ assertEq(result[0], 4503599627370496n, result[0].toString(2));
83
+ assertEq(result[1], 2);
84
+ },
85
+ () => {
86
+ const result = decToBin([18014398509481986n, 0]); //55bits (...0.10)
87
+ assertEq(result[0], 4503599627370496n, result[0].toString(2));
88
+ assertEq(result[1], 2);
89
+ },
90
+ () => {
91
+ const result = decToBin([18014398509481990n, 0]); //55bits (...1.10)
92
+ assertEq(result[0], 4503599627370498n, result[0].toString(2));
93
+ assertEq(result[1], 2);
94
+ },
95
+ () => {
96
+ const result = decToBin([18014398509481987n, 0]); //55bits (0.11)
97
+ assertEq(result[0], 4503599627370497n, result[0].toString(2));
98
+ assertEq(result[1], 2);
99
+ },
100
+ ],
101
+ roundingPositive: [
102
+ () => {
103
+ const result = decToBin([288230376151711745n, -1]);
104
+ // reminder = 0
105
+ // m = 11001100110011001100110011001100110011001100110011001.101
106
+ // rounding up
107
+ assertEq(result[0], 7205759403792794n, result[0].toString(2));
108
+ assertEq(result[1], 2);
109
+ },
110
+ () => {
111
+ const result = decToBin([288230376151711760n, -1]);
112
+ // reminder = 0
113
+ // m = 11001100110011001100110011001100110011001100110011010.000
114
+ // rounding down
115
+ assertEq(result[0], 7205759403792794n, result[0].toString(2));
116
+ assertEq(result[1], 2);
117
+ },
118
+ () => {
119
+ const result = decToBin([288230376151711780n, -1]);
120
+ // reminder = 0
121
+ // m = 11001100110011001100110011001100110011001100110011010.100
122
+ // rounding down (to even)
123
+ assertEq(result[0], 7205759403792794n, result[0].toString(2));
124
+ assertEq(result[1], 2);
125
+ },
126
+ () => {
127
+ const result = decToBin([288230376151711781n, -1]);
128
+ // reminder = 1
129
+ // m = 11001100110011001100110011001100110011001100110011010.100
130
+ // rounding up
131
+ assertEq(result[0], 7205759403792795n, result[0].toString(2));
132
+ assertEq(result[1], 2);
133
+ },
134
+ () => {
135
+ const result = decToBin([288230376151711785n, -1]);
136
+ // reminder = 0
137
+ // m = 11001100110011001100110011001100110011001100110011010.101
138
+ // rounding up
139
+ assertEq(result[0], 7205759403792795n, result[0].toString(2));
140
+ assertEq(result[1], 2);
141
+ },
142
+ () => {
143
+ const result = decToBin([288230376151711805n, -1]);
144
+ // reminder = 0
145
+ // m = 11001100110011001100110011001100110011001100110011011.001
146
+ // rounding down
147
+ assertEq(result[0], 7205759403792795n, result[0].toString(2));
148
+ assertEq(result[1], 2);
149
+ },
150
+ () => {
151
+ const result = decToBin([288230376151711820n, -1]);
152
+ // reminder = 0
153
+ // m = 11001100110011001100110011001100110011001100110011011.100
154
+ // rounding up (to even)
155
+ assertEq(result[0], 7205759403792796n, result[0].toString(2));
156
+ assertEq(result[1], 2);
157
+ }
158
+ ],
159
+ roundingNegative: [
160
+ () => {
161
+ const result = decToBin([-288230376151711745n, -1]);
162
+ // reminder = 0
163
+ // m = -11001100110011001100110011001100110011001100110011001.101
164
+ // rounding down
165
+ assertEq(result[0], -7205759403792794n, result[0].toString(2));
166
+ assertEq(result[1], 2);
167
+ },
168
+ () => {
169
+ const result = decToBin([-288230376151711760n, -1]);
170
+ // reminder = 0
171
+ // m = -11001100110011001100110011001100110011001100110011010.000
172
+ // rounding up
173
+ assertEq(result[0], -7205759403792794n, result[0].toString(2));
174
+ assertEq(result[1], 2);
175
+ },
176
+ () => {
177
+ const result = decToBin([-288230376151711780n, -1]);
178
+ // reminder = 0
179
+ // m = -11001100110011001100110011001100110011001100110011010.100
180
+ // rounding up (to even)
181
+ assertEq(result[0], -7205759403792794n, result[0].toString(2));
182
+ assertEq(result[1], 2);
183
+ },
184
+ () => {
185
+ const result = decToBin([-288230376151711781n, -1]);
186
+ // reminder = 1
187
+ // m = -11001100110011001100110011001100110011001100110011010.100
188
+ // rounding down
189
+ assertEq(result[0], -7205759403792795n, result[0].toString(2));
190
+ assertEq(result[1], 2);
191
+ },
192
+ () => {
193
+ const result = decToBin([-288230376151711785n, -1]);
194
+ // reminder = 0
195
+ // m = -11001100110011001100110011001100110011001100110011010.101
196
+ // rounding down
197
+ assertEq(result[0], -7205759403792795n, result[0].toString(2));
198
+ assertEq(result[1], 2);
199
+ },
200
+ () => {
201
+ const result = decToBin([-288230376151711805n, -1]);
202
+ // reminder = 0
203
+ // m = -11001100110011001100110011001100110011001100110011011.001
204
+ // rounding up
205
+ assertEq(result[0], -7205759403792795n, result[0].toString(2));
206
+ assertEq(result[1], 2);
207
+ },
208
+ () => {
209
+ const result = decToBin([-288230376151711820n, -1]);
210
+ // reminder = 0
211
+ // m = -11001100110011001100110011001100110011001100110011011.100
212
+ // rounding down (to even)
213
+ assertEq(result[0], -7205759403792796n, result[0].toString(2));
214
+ assertEq(result[1], 2);
215
+ }
216
+ ]
217
+ };
@@ -17,7 +17,8 @@
17
17
  * ```
18
18
  */
19
19
  import { cmp } from '../function/compare/module.f.js';
20
- import { reduce } from '../list/module.f.js';
20
+ import {} from '../list/module.f.js';
21
+ import { fold } from '../../common/monoid/module.f.js';
21
22
  /**
22
23
  * Adds two `bigint` values.
23
24
  *
@@ -31,7 +32,7 @@ export const addition = a => b => a + b;
31
32
  * @param input - A list of bigint values.
32
33
  * @returns The sum of all values in the list.
33
34
  */
34
- export const sum = reduce(addition)(0n);
35
+ export const sum = fold({ identity: 0n, operation: addition });
35
36
  /**
36
37
  * Multiplies two `bigint` values.
37
38
  *
@@ -45,7 +46,7 @@ export const multiple = a => b => a * b;
45
46
  * @param input - A list of bigint values.
46
47
  * @returns The product of all values in the list.
47
48
  */
48
- export const product = reduce(multiple)(1n);
49
+ export const product = fold({ identity: 1n, operation: multiple });
49
50
  /**
50
51
  * Calculates the absolute value of a `bigint`.
51
52
  *
@@ -1,5 +1,5 @@
1
1
  import { sum, abs, serialize, log2, bitLength, mask, combination, factorial, xor, multiple, product, divUp, roundUp, divUp8, roundUp8 } from './module.f.js';
2
- import { assertEq } from '../../asserts/module.f.js';
2
+ import { assert, assertEq } from '../../asserts/module.f.js';
3
3
  import { min } from '../function/compare/module.f.js';
4
4
  const oldLog2 = (v) => {
5
5
  if (v <= 0n) {
@@ -116,15 +116,11 @@ const benchmark = f => () => {
116
116
  for (let i = 0n; i < 1_100; ++i) {
117
117
  {
118
118
  const x = f(c);
119
- if (x !== e) {
120
- throw x;
121
- }
119
+ assertEq(x, e);
122
120
  }
123
121
  {
124
122
  const x = f(c - 1n);
125
- if (x !== e - 1n) {
126
- throw [e, x];
127
- }
123
+ assertEq(x, e - 1n, [e, x]);
128
124
  }
129
125
  c >>= 1n;
130
126
  --e;
@@ -136,15 +132,11 @@ const benchmarkSmall = f => () => {
136
132
  do {
137
133
  {
138
134
  const x = f(c);
139
- if (x !== e) {
140
- throw [e, x];
141
- }
135
+ assertEq(x, e, [e, x]);
142
136
  }
143
137
  for (let j = 1n; j < min(c >> 1n)(1000n); ++j) {
144
138
  const x = f(c - j);
145
- if (x !== e - 1n) {
146
- throw [j, e, x];
147
- }
139
+ assertEq(x, e - 1n, [j, e, x]);
148
140
  }
149
141
  c >>= 1n;
150
142
  --e;
@@ -153,33 +145,19 @@ const benchmarkSmall = f => () => {
153
145
  export const proof = {
154
146
  example: () => {
155
147
  const total = sum([1n, 2n, 3n]); // 6n
156
- if (total !== 6n) {
157
- throw total;
158
- }
148
+ assertEq(total, 6n);
159
149
  const absoluteValue = abs(-42n); // 42n
160
- if (absoluteValue !== 42n) {
161
- throw absoluteValue;
162
- }
150
+ assertEq(absoluteValue, 42n);
163
151
  const logValue = log2(8n); // 3n
164
- if (logValue !== 3n) {
165
- throw logValue;
166
- }
152
+ assertEq(logValue, 3n);
167
153
  const bitCount = bitLength(255n); // 8n
168
- if (bitCount !== 8n) {
169
- throw bitCount;
170
- }
154
+ assertEq(bitCount, 8n);
171
155
  const bitmask = mask(5n); // 31n
172
- if (bitmask !== 31n) {
173
- throw benchmark;
174
- }
156
+ assertEq(bitmask, 31n, benchmark);
175
157
  const m = min(3n)(13n); // 3n
176
- if (m !== 3n) {
177
- throw m;
178
- }
158
+ assertEq(m, 3n);
179
159
  const c = combination(3n, 2n, 1n); // 60n
180
- if (c !== 60n) {
181
- throw c;
182
- }
160
+ assertEq(c, 60n);
183
161
  },
184
162
  benchmark: () => {
185
163
  const list = {
@@ -199,142 +177,100 @@ export const proof = {
199
177
  },
200
178
  mask: () => {
201
179
  const result = mask(3n); // 7n
202
- if (result !== 7n) {
203
- throw result;
204
- }
180
+ assertEq(result, 7n);
205
181
  },
206
182
  sum: () => {
207
183
  const result = sum([2n, 3n, 4n, 5n]);
208
- if (result !== 14n) {
209
- throw result;
210
- }
184
+ assertEq(result, 14n);
211
185
  },
212
186
  abs: [
213
187
  () => {
214
188
  const result = abs(10n);
215
- if (result !== 10n) {
216
- throw result;
217
- }
189
+ assertEq(result, 10n);
218
190
  },
219
191
  () => {
220
192
  const result = abs(-10n);
221
- if (result !== 10n) {
222
- throw result;
223
- }
193
+ assertEq(result, 10n);
224
194
  }
225
195
  ],
226
196
  serialize: [
227
197
  () => {
228
198
  const result = serialize(0n);
229
- if (result !== '0n') {
230
- throw result;
231
- }
199
+ assertEq(result, '0n');
232
200
  },
233
201
  () => {
234
202
  const result = serialize(123456789012345678901234567890n);
235
- if (result !== '123456789012345678901234567890n') {
236
- throw result;
237
- }
203
+ assertEq(result, '123456789012345678901234567890n');
238
204
  },
239
205
  () => {
240
206
  const result = serialize(-55555n);
241
- if (result !== '-55555n') {
242
- throw result;
243
- }
207
+ assertEq(result, '-55555n');
244
208
  },
245
209
  ],
246
210
  log2: [
247
211
  () => {
248
212
  const result = log2(-3n);
249
- if (result !== -1n) {
250
- throw result;
251
- }
213
+ assertEq(result, -1n);
252
214
  },
253
215
  () => {
254
216
  const result = log2(0n);
255
- if (result !== -1n) {
256
- throw result;
257
- }
217
+ assertEq(result, -1n);
258
218
  },
259
219
  () => {
260
220
  const result = log2(1n);
261
- if (result !== 0n) {
262
- throw result;
263
- }
221
+ assertEq(result, 0n);
264
222
  },
265
223
  () => {
266
224
  const result = log2(2n);
267
- if (result !== 1n) {
268
- throw result;
269
- }
225
+ assertEq(result, 1n);
270
226
  },
271
227
  () => {
272
228
  const result = log2(3n);
273
- if (result !== 1n) {
274
- throw result;
275
- }
229
+ assertEq(result, 1n);
276
230
  },
277
231
  () => {
278
232
  const result = log2(4n);
279
- if (result !== 2n) {
280
- throw result;
281
- }
233
+ assertEq(result, 2n);
282
234
  },
283
235
  () => {
284
236
  const result = log2(7n);
285
- if (result !== 2n) {
286
- throw result;
287
- }
237
+ assertEq(result, 2n);
288
238
  },
289
239
  () => {
290
240
  const result = log2(8n);
291
- if (result !== 3n) {
292
- throw result;
293
- }
241
+ assertEq(result, 3n);
294
242
  },
295
243
  () => {
296
244
  const result = log2(15n);
297
- if (result !== 3n) {
298
- throw result;
299
- }
245
+ assertEq(result, 3n);
300
246
  },
301
247
  () => {
302
248
  const result = log2(16n);
303
- if (result !== 4n) {
304
- throw result;
305
- }
249
+ assertEq(result, 4n);
306
250
  },
307
251
  () => {
308
252
  // max for Bun (131_072 Bytes)
309
253
  const v = 1048575n;
310
254
  const result = log2(1n << v);
311
- if (result !== v) {
312
- throw result;
313
- }
255
+ assertEq(result, v);
314
256
  },
315
257
  () => {
316
258
  const v = 0x18945n;
317
259
  const result = log2(v);
318
- if (result !== 16n) {
319
- throw result;
320
- }
260
+ assertEq(result, 16n);
321
261
  }
322
262
  ],
323
263
  toString2: () => {
324
264
  // max for Bun (131_072 Bytes)
325
265
  const v = 1048575n;
326
266
  const result = (1n << v).toString(2).length - 1;
327
- if (result !== 1_048_575) {
328
- throw result;
329
- }
267
+ assertEq(result, 1_048_575);
330
268
  },
331
269
  minus: () => {
332
270
  let i = 0n;
333
271
  while (i < 1048575n) {
334
272
  const s = -i;
335
- if (i !== -s) {
336
- throw [i, s];
337
- }
273
+ assertEq(i, -s, [i, s]);
338
274
  i += 1n;
339
275
  }
340
276
  },
@@ -342,106 +278,76 @@ export const proof = {
342
278
  let i = 0n;
343
279
  while (i < 1048575n) {
344
280
  const s = ~i;
345
- if (i !== ~s) {
346
- throw [i, s];
347
- }
281
+ assertEq(i, ~s, [i, s]);
348
282
  i += 1n;
349
283
  }
350
284
  },
351
285
  bitLen: {
352
286
  0: () => {
353
287
  const s = bitLength(0n);
354
- if (s !== 0n) {
355
- throw s;
356
- }
288
+ assertEq(s, 0n);
357
289
  },
358
290
  m: () => {
359
291
  let i = 0n;
360
292
  while (i < 10000n) {
361
293
  const s = bitLength(1n << i);
362
- if (s !== i + 1n) {
363
- throw [s, i];
364
- }
294
+ assertEq(s, i + 1n, [s, i]);
365
295
  i += 1n;
366
296
  }
367
297
  },
368
298
  big: () => {
369
299
  const s = bitLength(1n << 1000000n);
370
- if (s !== 1000001n) {
371
- throw s;
372
- }
300
+ assertEq(s, 1000001n);
373
301
  },
374
302
  neg: [
375
303
  () => {
376
304
  const s = bitLength(-1n);
377
- if (s !== 1n) {
378
- throw s;
379
- }
305
+ assertEq(s, 1n);
380
306
  },
381
307
  () => {
382
308
  const s = bitLength(-2n);
383
- if (s !== 2n) {
384
- throw s;
385
- }
309
+ assertEq(s, 2n);
386
310
  },
387
311
  () => {
388
312
  const s = bitLength(-3n);
389
- if (s !== 2n) {
390
- throw s;
391
- }
313
+ assertEq(s, 2n);
392
314
  },
393
315
  () => {
394
316
  const s = bitLength(-4n);
395
- if (s !== 3n) {
396
- throw s;
397
- }
317
+ assertEq(s, 3n);
398
318
  },
399
319
  ]
400
320
  },
401
321
  factorial: () => {
402
322
  {
403
323
  const r = factorial(3n);
404
- if (r !== 6n) {
405
- throw r;
406
- }
324
+ assertEq(r, 6n);
407
325
  }
408
326
  {
409
327
  const r = factorial(5n);
410
- if (r !== 120n) {
411
- throw r;
412
- }
328
+ assertEq(r, 120n);
413
329
  }
414
330
  },
415
331
  combination: () => {
416
332
  const r = combination(2n, 3n);
417
- if (r != 120n / (2n * 6n)) {
418
- throw r;
419
- }
333
+ assert(r == 120n / (2n * 6n), r);
420
334
  },
421
335
  combination50x50: () => {
422
336
  {
423
337
  const r = combination(1n, 1n);
424
- if (r !== 2n) {
425
- throw r;
426
- }
338
+ assertEq(r, 2n);
427
339
  }
428
340
  {
429
341
  const r = combination(2n, 2n);
430
- if (r !== 6n) {
431
- throw r;
432
- }
342
+ assertEq(r, 6n);
433
343
  }
434
344
  {
435
345
  const r = combination(3n, 3n);
436
- if (r !== 20n) {
437
- throw r;
438
- }
346
+ assertEq(r, 20n);
439
347
  }
440
348
  {
441
349
  const r = combination(4n, 4n);
442
- if (r !== 70n) {
443
- throw r;
444
- }
350
+ assertEq(r, 70n);
445
351
  }
446
352
  },
447
353
  combination3: () => {
@@ -450,9 +356,7 @@ export const proof = {
450
356
  // 2+3+4+2 = 5*6*7*8*9*10*11
451
357
  // e = 5 * 6 * 7 * 8 * 9 * 10 * 11 / (2n * 2n * 6n) =
452
358
  // e = 5 * 7 * 2 * 9 * 10 * 11 = 69300
453
- if (r !== 69300n) {
454
- throw r;
455
- }
359
+ assertEq(r, 69300n);
456
360
  },
457
361
  divUp: () => {
458
362
  assertEq(divUp(8n)(8n), 1n);
@@ -23,7 +23,7 @@
23
23
  */
24
24
  import { bitLength, divUp, mask, maxLength, xor } from '../bigint/module.f.js';
25
25
  import { flip, identity } from '../function/module.f.js';
26
- import { iterable, map } from '../list/module.f.js';
26
+ import { map, tryFold } from '../list/module.f.js';
27
27
  import { asBase, asNominal } from '../nominal/module.f.js';
28
28
  import { repeat as mRepeat } from '../../common/monoid/module.f.js';
29
29
  import { cmp, max, min } from '../function/compare/module.f.js';
@@ -174,24 +174,14 @@ const listToVecOp = (unpackConcat) => ({
174
174
  * the final reduce prepends higher (earlier) slots in front of accumulated
175
175
  * later runs. An empty list yields `unpackEmpty`.
176
176
  *
177
+ * Returns `null` as soon as the accumulated length exceeds `maxLength`, which
178
+ * `tryFold` propagates by abandoning the rest of the list.
179
+ *
177
180
  * This is the bit-vector analogue of a builder that accumulates appended pieces
178
181
  * and materializes the combined result on demand, such as `StringBuilder`
179
182
  * (Java, C#) or `strings.Builder` (Go).
180
183
  */
181
- const unpackListToVec = (unpackConcat) => {
182
- const { init, update, end } = listToVecOp(unpackConcat);
183
- return (list) => {
184
- let result = init;
185
- for (const e of iterable(list)) {
186
- const candidate = update(e, result);
187
- if (candidate === null) {
188
- return null;
189
- }
190
- result = candidate;
191
- }
192
- return end(result);
193
- };
194
- };
184
+ const unpackListToVec = (unpackConcat) => tryFold(listToVecOp(unpackConcat));
195
185
  const bo = ({ front, removeFront, norm, uintCmp, unpackSplit, unpackConcatUint }) => {
196
186
  const unpackPopFront = (len) => {
197
187
  const m = mask(len);