functionalscript 0.43.1 → 0.45.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 (1074) hide show
  1. package/README.md +53 -21
  2. package/fjs/asn.1/module.f.d.mts +123 -0
  3. package/fjs/asn.1/module.f.mjs +459 -0
  4. package/fjs/asn.1/proof.f.d.mts +53 -0
  5. package/fjs/asn.1/proof.f.mjs +321 -0
  6. package/fjs/asn.1/types.d.ts +37 -0
  7. package/fjs/asserts/module.f.d.mts +51 -0
  8. package/fjs/asserts/module.f.mjs +69 -0
  9. package/fjs/asserts/proof.f.d.mts +14 -0
  10. package/fjs/asserts/proof.f.mjs +33 -0
  11. package/fjs/asserts/types.d.ts +11 -0
  12. package/fjs/basen/base128/module.f.d.mts +22 -0
  13. package/fjs/basen/base128/module.f.mjs +51 -0
  14. package/fjs/basen/base128/proof.f.d.mts +4 -0
  15. package/fjs/basen/base128/proof.f.mjs +32 -0
  16. package/fjs/basen/base64/module.f.d.mts +14 -0
  17. package/fjs/basen/base64/module.f.mjs +75 -0
  18. package/fjs/basen/base64/proof.f.d.mts +19 -0
  19. package/fjs/basen/base64/proof.f.mjs +150 -0
  20. package/fjs/basen/cbase32/module.f.d.mts +18 -0
  21. package/fjs/basen/cbase32/module.f.mjs +61 -0
  22. package/fjs/basen/cbase32/proof.f.d.mts +10 -0
  23. package/fjs/basen/cbase32/proof.f.mjs +79 -0
  24. package/fjs/basen/module.f.d.mts +30 -0
  25. package/fjs/basen/module.f.mjs +88 -0
  26. package/fjs/basen/proof.f.mjs +69 -0
  27. package/fjs/basen/types.d.ts +14 -0
  28. package/fjs/bnf/data/module.f.d.mts +47 -0
  29. package/fjs/bnf/data/module.f.mjs +188 -0
  30. package/fjs/bnf/data/proof.f.d.mts +13 -0
  31. package/fjs/bnf/data/proof.f.mjs +159 -0
  32. package/fjs/bnf/data/types.d.ts +35 -0
  33. package/fjs/bnf/descent/module.f.d.mts +48 -0
  34. package/fjs/bnf/descent/module.f.mjs +289 -0
  35. package/fjs/bnf/descent/proof.f.d.mts +14 -0
  36. package/fjs/bnf/descent/proof.f.mjs +427 -0
  37. package/fjs/bnf/descent/types.d.ts +79 -0
  38. package/fjs/bnf/ll1/module.f.d.mts +67 -0
  39. package/fjs/bnf/ll1/module.f.mjs +341 -0
  40. package/fjs/bnf/ll1/proof.f.d.mts +18 -0
  41. package/fjs/bnf/ll1/proof.f.mjs +413 -0
  42. package/fjs/bnf/ll1/types.d.ts +65 -0
  43. package/fjs/bnf/module.f.d.mts +173 -0
  44. package/fjs/bnf/module.f.mjs +339 -0
  45. package/fjs/bnf/proof.f.d.mts +19 -0
  46. package/fjs/bnf/proof.f.mjs +165 -0
  47. package/fjs/bnf/testlib.f.d.mts +10 -0
  48. package/fjs/bnf/testlib.f.mjs +196 -0
  49. package/fjs/bnf/token_symbol/module.f.d.mts +36 -0
  50. package/fjs/bnf/token_symbol/module.f.mjs +63 -0
  51. package/fjs/bnf/token_symbol/proof.f.mjs +46 -0
  52. package/fjs/bnf/token_symbol/types.d.ts +27 -0
  53. package/fjs/bnf/types.d.ts +74 -0
  54. package/fjs/cas/cli/module.f.d.mts +17 -0
  55. package/fjs/cas/cli/module.f.mjs +73 -0
  56. package/fjs/cas/cli/proof.f.d.mts +20 -0
  57. package/fjs/cas/cli/proof.f.mjs +120 -0
  58. package/fjs/cas/evo/module.f.d.mts +157 -0
  59. package/fjs/cas/evo/module.f.mjs +563 -0
  60. package/fjs/cas/evo/proof.f.d.mts +55 -0
  61. package/fjs/cas/evo/proof.f.mjs +752 -0
  62. package/fjs/cas/evo/types.d.ts +111 -0
  63. package/fjs/cas/module.f.d.mts +68 -0
  64. package/fjs/cas/module.f.mjs +350 -0
  65. package/fjs/cas/proof.f.d.mts +29 -0
  66. package/fjs/cas/proof.f.mjs +371 -0
  67. package/fjs/cas/types.d.ts +35 -0
  68. package/fjs/ci/bun/module.f.d.mts +11 -0
  69. package/fjs/ci/bun/module.f.mjs +20 -0
  70. package/fjs/ci/common/module.f.d.mts +80 -0
  71. package/fjs/ci/common/module.f.mjs +88 -0
  72. package/fjs/ci/common/types.d.ts +27 -0
  73. package/fjs/ci/config/module.f.d.mts +45 -0
  74. package/fjs/ci/config/module.f.mjs +89 -0
  75. package/fjs/ci/deno/module.f.d.mts +16 -0
  76. package/fjs/ci/deno/module.f.mjs +29 -0
  77. package/fjs/ci/deno/proof.f.d.mts +4 -0
  78. package/fjs/ci/deno/proof.f.mjs +26 -0
  79. package/fjs/ci/module.f.d.mts +19 -0
  80. package/fjs/ci/module.f.mjs +89 -0
  81. package/fjs/ci/nix/module.f.d.mts +69 -0
  82. package/fjs/ci/nix/module.f.mjs +136 -0
  83. package/fjs/ci/nix/proof.f.d.mts +30 -0
  84. package/fjs/ci/nix/proof.f.mjs +146 -0
  85. package/fjs/ci/nix/types.d.ts +16 -0
  86. package/fjs/ci/node/module.f.d.mts +48 -0
  87. package/fjs/ci/node/module.f.mjs +139 -0
  88. package/fjs/ci/node/proof.f.mjs +18 -0
  89. package/fjs/ci/proof.f.d.mts +22 -0
  90. package/fjs/ci/proof.f.mjs +220 -0
  91. package/fjs/ci/rust/module.f.d.mts +15 -0
  92. package/fjs/ci/rust/module.f.mjs +108 -0
  93. package/fjs/ci/types.d.ts +9 -0
  94. package/fjs/cli/module.f.d.mts +16 -0
  95. package/fjs/cli/module.f.mjs +51 -0
  96. package/fjs/cli/proof.f.d.mts +18 -0
  97. package/fjs/cli/proof.f.mjs +132 -0
  98. package/fjs/cli/types.d.ts +15 -0
  99. package/fjs/common/monoid/module.f.d.mts +145 -0
  100. package/fjs/common/monoid/module.f.mjs +267 -0
  101. package/fjs/common/monoid/proof.f.d.mts +21 -0
  102. package/fjs/common/monoid/proof.f.mjs +142 -0
  103. package/fjs/common/monoid/types.d.ts +73 -0
  104. package/fjs/crypto/hmac/module.f.d.mts +32 -0
  105. package/fjs/crypto/hmac/module.f.mjs +65 -0
  106. package/fjs/crypto/hmac/proof.f.mjs +34 -0
  107. package/fjs/crypto/pow/module.f.d.mts +43 -0
  108. package/fjs/crypto/pow/module.f.mjs +93 -0
  109. package/fjs/crypto/pow/proof.f.mjs +121 -0
  110. package/fjs/crypto/pow/types.d.ts +19 -0
  111. package/fjs/crypto/secp/module.f.d.mts +61 -0
  112. package/fjs/crypto/secp/module.f.mjs +204 -0
  113. package/fjs/crypto/secp/proof.f.d.mts +11 -0
  114. package/fjs/crypto/secp/proof.f.mjs +139 -0
  115. package/fjs/crypto/secp/types.d.ts +36 -0
  116. package/fjs/crypto/sha2/module.f.d.mts +80 -0
  117. package/fjs/crypto/sha2/module.f.mjs +431 -0
  118. package/fjs/crypto/sha2/proof.f.d.mts +34 -0
  119. package/fjs/crypto/sha2/proof.f.mjs +146 -0
  120. package/fjs/crypto/sha2/types.d.ts +57 -0
  121. package/fjs/crypto/sign/module.f.d.mts +46 -0
  122. package/fjs/crypto/sign/module.f.mjs +189 -0
  123. package/fjs/crypto/sign/proof.f.d.mts +17 -0
  124. package/fjs/crypto/sign/proof.f.mjs +604 -0
  125. package/fjs/crypto/sign/types.d.ts +13 -0
  126. package/fjs/crypto/vdf/module.f.d.mts +34 -0
  127. package/fjs/crypto/vdf/module.f.mjs +86 -0
  128. package/fjs/crypto/vdf/proof.f.mjs +106 -0
  129. package/fjs/crypto/vdf/types.d.ts +18 -0
  130. package/fjs/dev/module.f.d.mts +59 -0
  131. package/fjs/dev/module.f.mjs +171 -0
  132. package/fjs/dev/package_json/module.f.d.mts +39 -0
  133. package/fjs/dev/package_json/module.f.mjs +40 -0
  134. package/fjs/dev/package_json/proof.f.mjs +32 -0
  135. package/fjs/dev/proof.f.d.mts +13 -0
  136. package/fjs/dev/proof.f.mjs +78 -0
  137. package/fjs/dev/types.d.ts +14 -0
  138. package/fjs/dev/update/module.f.d.mts +22 -0
  139. package/fjs/dev/update/module.f.mjs +37 -0
  140. package/fjs/dev/update/proof.f.d.mts +10 -0
  141. package/fjs/dev/update/proof.f.mjs +35 -0
  142. package/fjs/djs/ast/module.f.d.mts +35 -0
  143. package/fjs/djs/ast/module.f.mjs +82 -0
  144. package/fjs/djs/ast/proof.f.mjs +48 -0
  145. package/fjs/djs/ast/types.d.ts +54 -0
  146. package/fjs/djs/examples/input.f.mjs +4 -0
  147. package/fjs/djs/examples/m.f.mjs +1 -0
  148. package/fjs/djs/module.f.d.mts +17 -0
  149. package/fjs/djs/module.f.mjs +47 -0
  150. package/fjs/djs/parser/module.f.d.mts +78 -0
  151. package/fjs/djs/parser/module.f.mjs +565 -0
  152. package/fjs/djs/parser/proof.f.d.mts +17 -0
  153. package/fjs/djs/parser/proof.f.mjs +555 -0
  154. package/fjs/djs/parser/types.d.ts +11 -0
  155. package/fjs/djs/proof.f.d.mts +13 -0
  156. package/fjs/djs/proof.f.mjs +55 -0
  157. package/fjs/djs/serializer/module.f.d.mts +30 -0
  158. package/fjs/djs/serializer/module.f.mjs +207 -0
  159. package/fjs/djs/serializer/proof.f.mjs +116 -0
  160. package/fjs/djs/tokenizer/module.f.d.mts +65 -0
  161. package/fjs/djs/tokenizer/module.f.mjs +632 -0
  162. package/fjs/djs/tokenizer/proof.f.d.mts +17 -0
  163. package/fjs/djs/tokenizer/proof.f.mjs +992 -0
  164. package/fjs/djs/tokenizer/types.d.ts +20 -0
  165. package/fjs/djs/transpiler/module.f.d.mts +33 -0
  166. package/fjs/djs/transpiler/module.f.mjs +122 -0
  167. package/fjs/djs/transpiler/proof.f.mjs +76 -0
  168. package/fjs/djs/transpiler/types.d.ts +25 -0
  169. package/fjs/djs/types.d.ts +13 -0
  170. package/fjs/effects/eff/module.f.d.mts +20 -0
  171. package/fjs/effects/eff/module.f.mjs +70 -0
  172. package/fjs/effects/eff/proof.f.d.mts +15 -0
  173. package/fjs/effects/eff/proof.f.mjs +69 -0
  174. package/fjs/effects/eff/types.d.ts +71 -0
  175. package/fjs/effects/list/module.f.d.mts +32 -0
  176. package/fjs/effects/list/module.f.mjs +36 -0
  177. package/fjs/effects/list/types.d.ts +26 -0
  178. package/fjs/effects/memory/module.f.d.mts +34 -0
  179. package/fjs/effects/memory/module.f.mjs +45 -0
  180. package/fjs/effects/memory/proof.f.d.mts +16 -0
  181. package/fjs/effects/memory/proof.f.mjs +86 -0
  182. package/fjs/effects/memory/types.d.ts +18 -0
  183. package/fjs/effects/mock/module.f.d.mts +14 -0
  184. package/fjs/effects/mock/module.f.mjs +28 -0
  185. package/fjs/effects/mock/types.d.ts +15 -0
  186. package/fjs/effects/module.d.mts +15 -0
  187. package/fjs/effects/module.f.d.mts +352 -0
  188. package/fjs/effects/module.f.mjs +383 -0
  189. package/fjs/effects/module.mjs +26 -0
  190. package/fjs/effects/node/memory/module.d.mts +27 -0
  191. package/fjs/effects/node/memory/module.mjs +60 -0
  192. package/fjs/effects/node/memory/proof.d.mts +12 -0
  193. package/fjs/effects/node/memory/proof.mjs +44 -0
  194. package/fjs/effects/node/module.d.mts +59 -0
  195. package/fjs/effects/node/module.f.d.mts +177 -0
  196. package/fjs/effects/node/module.f.mjs +348 -0
  197. package/fjs/effects/node/module.mjs +381 -0
  198. package/fjs/effects/node/proof.f.d.mts +76 -0
  199. package/fjs/effects/node/proof.f.mjs +444 -0
  200. package/fjs/effects/node/types.d.ts +203 -0
  201. package/fjs/effects/node/virtual/module.f.d.mts +34 -0
  202. package/fjs/effects/node/virtual/module.f.mjs +435 -0
  203. package/fjs/effects/node/virtual/proof.f.d.mts +38 -0
  204. package/fjs/effects/node/virtual/proof.f.mjs +238 -0
  205. package/fjs/effects/node/virtual/types.d.ts +39 -0
  206. package/fjs/effects/proof.f.d.mts +65 -0
  207. package/fjs/effects/proof.f.mjs +234 -0
  208. package/fjs/effects/types.d.ts +115 -0
  209. package/fjs/emergent_testing/all.test.d.mts +8 -0
  210. package/fjs/emergent_testing/all.test.mjs +14 -0
  211. package/fjs/emergent_testing/example.f.d.mts +16 -0
  212. package/fjs/emergent_testing/example.f.mjs +34 -0
  213. package/fjs/emergent_testing/module.f.d.mts +155 -0
  214. package/fjs/emergent_testing/module.f.mjs +388 -0
  215. package/fjs/emergent_testing/proof.f.d.mts +97 -0
  216. package/fjs/emergent_testing/proof.f.mjs +518 -0
  217. package/fjs/emergent_testing/types.d.ts +53 -0
  218. package/fjs/fsc/bnf.f.d.mts +6 -0
  219. package/fjs/fsc/bnf.f.mjs +80 -0
  220. package/fjs/fsc/json.f.d.mts +16 -0
  221. package/fjs/fsc/json.f.mjs +127 -0
  222. package/fjs/fsc/module.f.d.mts +23 -0
  223. package/fjs/fsc/module.f.mjs +140 -0
  224. package/fjs/fsc/proof.f.mjs +119 -0
  225. package/fjs/fsm/module.f.d.mts +27 -0
  226. package/fjs/fsm/module.f.mjs +99 -0
  227. package/fjs/fsm/proof.f.d.mts +7 -0
  228. package/fjs/fsm/proof.f.mjs +149 -0
  229. package/fjs/js/tokenizer/module.f.d.mts +26 -0
  230. package/fjs/js/tokenizer/module.f.mjs +759 -0
  231. package/fjs/js/tokenizer/proof.f.d.mts +12 -0
  232. package/fjs/js/tokenizer/proof.f.mjs +681 -0
  233. package/fjs/js/tokenizer/types.d.ts +193 -0
  234. package/fjs/mcp/cas/module.f.d.mts +156 -0
  235. package/fjs/mcp/cas/module.f.mjs +302 -0
  236. package/fjs/mcp/evo/module.f.d.mts +88 -0
  237. package/fjs/mcp/evo/module.f.mjs +153 -0
  238. package/fjs/mcp/evo/proof.f.d.mts +17 -0
  239. package/fjs/mcp/evo/proof.f.mjs +166 -0
  240. package/fjs/mcp/module.f.d.mts +67 -0
  241. package/fjs/mcp/module.f.mjs +98 -0
  242. package/fjs/mcp/proof.f.d.mts +56 -0
  243. package/fjs/mcp/proof.f.mjs +718 -0
  244. package/fjs/media/html/module.f.d.mts +55 -0
  245. package/fjs/media/html/module.f.mjs +169 -0
  246. package/fjs/media/html/proof.f.d.mts +19 -0
  247. package/fjs/media/html/proof.f.mjs +80 -0
  248. package/fjs/media/html/types.d.ts +19 -0
  249. package/fjs/media/json/module.f.d.mts +48 -0
  250. package/fjs/media/json/module.f.mjs +104 -0
  251. package/fjs/media/json/parser/module.f.d.mts +30 -0
  252. package/fjs/media/json/parser/module.f.mjs +236 -0
  253. package/fjs/media/json/parser/proof.f.d.mts +8 -0
  254. package/fjs/media/json/parser/proof.f.mjs +314 -0
  255. package/fjs/media/json/parser/types.d.ts +39 -0
  256. package/fjs/media/json/proof.f.mjs +79 -0
  257. package/fjs/media/json/rtti/module.f.d.mts +38 -0
  258. package/fjs/media/json/rtti/module.f.mjs +51 -0
  259. package/fjs/media/json/rtti/proof.f.d.mts +29 -0
  260. package/fjs/media/json/rtti/proof.f.mjs +86 -0
  261. package/fjs/media/json/schema/module.f.d.mts +113 -0
  262. package/fjs/media/json/schema/module.f.mjs +309 -0
  263. package/fjs/media/json/schema/proof.f.d.mts +81 -0
  264. package/fjs/media/json/schema/proof.f.mjs +305 -0
  265. package/fjs/media/json/serializer/module.f.d.mts +40 -0
  266. package/fjs/media/json/serializer/module.f.mjs +131 -0
  267. package/fjs/media/json/serializer/proof.f.mjs +92 -0
  268. package/fjs/media/json/tokenizer/module.f.d.mts +25 -0
  269. package/fjs/media/json/tokenizer/module.f.mjs +96 -0
  270. package/fjs/media/json/tokenizer/proof.f.d.mts +8 -0
  271. package/fjs/media/json/tokenizer/proof.f.mjs +291 -0
  272. package/fjs/media/json/tokenizer/types.d.ts +17 -0
  273. package/fjs/media/json/types.d.ts +25 -0
  274. package/fjs/media/module.f.d.mts +116 -0
  275. package/fjs/media/module.f.mjs +152 -0
  276. package/fjs/media/nix/module.f.d.mts +27 -0
  277. package/fjs/media/nix/module.f.mjs +263 -0
  278. package/fjs/media/nix/proof.f.d.mts +35 -0
  279. package/fjs/media/nix/proof.f.mjs +184 -0
  280. package/fjs/media/nix/types.d.ts +22 -0
  281. package/fjs/media/proof.f.d.mts +19 -0
  282. package/fjs/media/proof.f.mjs +159 -0
  283. package/fjs/media/revision/module.f.d.mts +124 -0
  284. package/fjs/media/revision/module.f.mjs +163 -0
  285. package/fjs/media/revision/proof.f.d.mts +46 -0
  286. package/fjs/media/revision/proof.f.mjs +231 -0
  287. package/fjs/media/revision/types.d.ts +16 -0
  288. package/fjs/media/rust/module.f.d.mts +61 -0
  289. package/fjs/media/rust/module.f.mjs +93 -0
  290. package/fjs/media/rust/proof.f.d.mts +17 -0
  291. package/fjs/media/rust/proof.f.mjs +50 -0
  292. package/fjs/media/type/module.f.d.mts +114 -0
  293. package/fjs/media/type/module.f.mjs +265 -0
  294. package/fjs/media/type/proof.f.d.mts +56 -0
  295. package/fjs/media/type/proof.f.mjs +325 -0
  296. package/fjs/media/type/types.d.ts +67 -0
  297. package/fjs/media/types.d.ts +26 -0
  298. package/fjs/module.d.mts +7 -0
  299. package/fjs/module.f.d.mts +11 -0
  300. package/fjs/module.f.mjs +62 -0
  301. package/fjs/module.mjs +12 -0
  302. package/fjs/nanvm/module.f.d.mts +54 -0
  303. package/fjs/nanvm/module.f.mjs +240 -0
  304. package/fjs/nanvm/proof.f.d.mts +41 -0
  305. package/fjs/nanvm/proof.f.mjs +173 -0
  306. package/fjs/nanvm/rust/module.f.d.mts +54 -0
  307. package/fjs/nanvm/rust/module.f.mjs +166 -0
  308. package/fjs/nanvm/rust/proof.f.d.mts +21 -0
  309. package/fjs/nanvm/rust/proof.f.mjs +119 -0
  310. package/fjs/nanvm/types.d.ts +105 -0
  311. package/fjs/nanvm/update/module.f.d.mts +23 -0
  312. package/fjs/nanvm/update/module.f.mjs +33 -0
  313. package/fjs/nanvm/update/proof.f.d.mts +9 -0
  314. package/fjs/nanvm/update/proof.f.mjs +32 -0
  315. package/fjs/path/module.f.d.mts +63 -0
  316. package/fjs/path/module.f.mjs +98 -0
  317. package/fjs/path/proof.f.mjs +125 -0
  318. package/fjs/proof.f.d.mts +13 -0
  319. package/fjs/proof.f.mjs +51 -0
  320. package/fjs/protocol/json_rpc/module.f.d.mts +127 -0
  321. package/fjs/protocol/json_rpc/module.f.mjs +115 -0
  322. package/fjs/protocol/json_rpc/proof.f.d.mts +41 -0
  323. package/fjs/protocol/json_rpc/proof.f.mjs +105 -0
  324. package/fjs/protocol/json_rpc/types.d.ts +30 -0
  325. package/fjs/protocol/mcp/module.f.d.mts +227 -0
  326. package/fjs/protocol/mcp/module.f.mjs +369 -0
  327. package/fjs/protocol/mcp/proof.f.d.mts +57 -0
  328. package/fjs/protocol/mcp/proof.f.mjs +335 -0
  329. package/fjs/protocol/mcp/stdio/module.f.d.mts +50 -0
  330. package/fjs/protocol/mcp/stdio/module.f.mjs +125 -0
  331. package/fjs/protocol/mcp/stdio/proof.f.d.mts +20 -0
  332. package/fjs/protocol/mcp/stdio/proof.f.mjs +190 -0
  333. package/fjs/protocol/mcp/stdio/types.d.ts +14 -0
  334. package/fjs/protocol/mcp/types.d.ts +59 -0
  335. package/fjs/sul/id/module.f.d.mts +42 -0
  336. package/fjs/sul/id/module.f.mjs +144 -0
  337. package/fjs/sul/id/proof.f.mjs +72 -0
  338. package/fjs/sul/id/types.d.ts +8 -0
  339. package/fjs/sul/level/hash/module.f.d.mts +40 -0
  340. package/fjs/sul/level/hash/module.f.mjs +62 -0
  341. package/fjs/sul/level/hash/proof.f.d.mts +19 -0
  342. package/fjs/sul/level/hash/proof.f.mjs +134 -0
  343. package/fjs/sul/level/hash/types.d.ts +20 -0
  344. package/fjs/sul/level/literal/module.f.d.mts +57 -0
  345. package/fjs/sul/level/literal/module.f.mjs +121 -0
  346. package/fjs/sul/level/literal/proof.f.d.mts +15 -0
  347. package/fjs/sul/level/literal/proof.f.mjs +791 -0
  348. package/fjs/sul/level/literal/types.d.ts +31 -0
  349. package/fjs/sul/module.f.d.mts +27 -0
  350. package/fjs/sul/module.f.mjs +70 -0
  351. package/fjs/sul/proof.f.d.mts +15 -0
  352. package/fjs/sul/proof.f.mjs +65 -0
  353. package/fjs/sul/types.d.ts +19 -0
  354. package/fjs/text/ascii/module.f.d.mts +162 -0
  355. package/fjs/text/ascii/module.f.mjs +272 -0
  356. package/fjs/text/ascii/proof.f.d.mts +16 -0
  357. package/fjs/text/ascii/proof.f.mjs +48 -0
  358. package/fjs/text/code_point/module.f.d.mts +92 -0
  359. package/fjs/text/code_point/module.f.mjs +155 -0
  360. package/fjs/text/code_point/proof.f.d.mts +9 -0
  361. package/fjs/text/code_point/proof.f.mjs +108 -0
  362. package/fjs/text/module.f.d.mts +41 -0
  363. package/fjs/text/module.f.mjs +62 -0
  364. package/fjs/text/proof.f.d.mts +13 -0
  365. package/fjs/text/proof.f.mjs +51 -0
  366. package/fjs/text/sgr/module.f.d.mts +61 -0
  367. package/fjs/text/sgr/module.f.mjs +100 -0
  368. package/fjs/text/sgr/proof.f.d.mts +4 -0
  369. package/fjs/text/sgr/proof.f.mjs +42 -0
  370. package/fjs/text/sgr/types.d.ts +12 -0
  371. package/fjs/text/types.d.ts +13 -0
  372. package/fjs/text/utf16/module.f.d.mts +151 -0
  373. package/fjs/text/utf16/module.f.mjs +348 -0
  374. package/fjs/text/utf16/proof.f.d.mts +13 -0
  375. package/fjs/text/utf16/proof.f.mjs +175 -0
  376. package/fjs/text/utf16/types.d.ts +19 -0
  377. package/fjs/text/utf8/module.f.d.mts +73 -0
  378. package/fjs/text/utf8/module.f.mjs +278 -0
  379. package/fjs/text/utf8/proof.f.mjs +217 -0
  380. package/fjs/text/utf8/types.d.ts +26 -0
  381. package/fjs/types/array/module.f.d.mts +69 -0
  382. package/fjs/types/array/module.f.mjs +101 -0
  383. package/fjs/types/array/proof.f.mjs +98 -0
  384. package/fjs/types/array/types.d.ts +13 -0
  385. package/fjs/types/bigfloat/module.f.d.mts +34 -0
  386. package/fjs/types/bigfloat/module.f.mjs +125 -0
  387. package/fjs/types/bigfloat/proof.f.d.mts +6 -0
  388. package/fjs/types/bigfloat/proof.f.mjs +264 -0
  389. package/fjs/types/bigfloat/types.d.ts +6 -0
  390. package/fjs/types/bigint/benchmark.mjs +205 -0
  391. package/fjs/types/bigint/module.f.d.mts +180 -0
  392. package/fjs/types/bigint/module.f.mjs +290 -0
  393. package/fjs/types/bigint/proof.f.d.mts +39 -0
  394. package/fjs/types/bigint/proof.f.mjs +443 -0
  395. package/fjs/types/bigint/types.d.ts +14 -0
  396. package/fjs/types/bit_vec/module.f.d.mts +195 -0
  397. package/fjs/types/bit_vec/module.f.mjs +475 -0
  398. package/fjs/types/bit_vec/proof.f.d.mts +71 -0
  399. package/fjs/types/bit_vec/proof.f.mjs +521 -0
  400. package/fjs/types/bit_vec/types.d.ts +51 -0
  401. package/fjs/types/btree/find/module.f.d.mts +19 -0
  402. package/fjs/types/btree/find/module.f.mjs +80 -0
  403. package/fjs/types/btree/find/proof.f.d.mts +8 -0
  404. package/fjs/types/btree/find/proof.f.mjs +123 -0
  405. package/fjs/types/btree/find/types.d.ts +22 -0
  406. package/fjs/types/btree/module.f.d.mts +13 -0
  407. package/fjs/types/btree/module.f.mjs +40 -0
  408. package/fjs/types/btree/proof.f.d.mts +18 -0
  409. package/fjs/types/btree/proof.f.mjs +87 -0
  410. package/fjs/types/btree/remove/module.f.d.mts +32 -0
  411. package/fjs/types/btree/remove/module.f.mjs +187 -0
  412. package/fjs/types/btree/remove/proof.f.d.mts +12 -0
  413. package/fjs/types/btree/remove/proof.f.mjs +475 -0
  414. package/fjs/types/btree/set/module.f.d.mts +14 -0
  415. package/fjs/types/btree/set/module.f.mjs +116 -0
  416. package/fjs/types/btree/set/proof.f.d.mts +4 -0
  417. package/fjs/types/btree/set/proof.f.mjs +430 -0
  418. package/fjs/types/btree/types/module.f.d.mts +20 -0
  419. package/fjs/types/btree/types/module.f.mjs +20 -0
  420. package/fjs/types/btree/types/types.d.ts +14 -0
  421. package/fjs/types/byte_set/module.f.d.mts +35 -0
  422. package/fjs/types/byte_set/module.f.mjs +68 -0
  423. package/fjs/types/byte_set/proof.f.d.mts +14 -0
  424. package/fjs/types/byte_set/proof.f.mjs +86 -0
  425. package/fjs/types/byte_set/types.d.ts +6 -0
  426. package/fjs/types/function/compare/module.f.d.mts +45 -0
  427. package/fjs/types/function/compare/module.f.mjs +72 -0
  428. package/fjs/types/function/compare/proof.f.mjs +50 -0
  429. package/fjs/types/function/compare/types.d.ts +22 -0
  430. package/fjs/types/function/module.f.d.mts +33 -0
  431. package/fjs/types/function/module.f.mjs +39 -0
  432. package/fjs/types/function/operator/module.f.d.mts +38 -0
  433. package/fjs/types/function/operator/module.f.mjs +55 -0
  434. package/fjs/types/function/operator/proof.f.mjs +76 -0
  435. package/fjs/types/function/operator/types.d.ts +39 -0
  436. package/fjs/types/function/proof.f.mjs +16 -0
  437. package/fjs/types/function/types.d.ts +16 -0
  438. package/fjs/types/list/module.f.d.mts +95 -0
  439. package/fjs/types/list/module.f.mjs +311 -0
  440. package/fjs/types/list/proof.f.d.mts +35 -0
  441. package/fjs/types/list/proof.f.mjs +365 -0
  442. package/fjs/types/list/types.d.ts +36 -0
  443. package/fjs/types/map/module.f.d.mts +13 -0
  444. package/fjs/types/map/module.f.mjs +42 -0
  445. package/fjs/types/map/proof.f.mjs +25 -0
  446. package/fjs/types/nibble_set/module.f.d.mts +31 -0
  447. package/fjs/types/nibble_set/module.f.mjs +43 -0
  448. package/fjs/types/nibble_set/proof.f.mjs +59 -0
  449. package/fjs/types/nibble_set/types.d.ts +9 -0
  450. package/fjs/types/nominal/module.f.d.mts +10 -0
  451. package/fjs/types/nominal/module.f.mjs +17 -0
  452. package/fjs/types/nominal/proof.f.d.mts +7 -0
  453. package/fjs/types/nominal/proof.f.mjs +79 -0
  454. package/fjs/types/nominal/types.d.ts +25 -0
  455. package/fjs/types/nullable/module.f.d.mts +44 -0
  456. package/fjs/types/nullable/module.f.mjs +55 -0
  457. package/fjs/types/nullable/proof.f.mjs +34 -0
  458. package/fjs/types/nullable/types.d.ts +6 -0
  459. package/fjs/types/number/module.f.d.mts +27 -0
  460. package/fjs/types/number/module.f.mjs +56 -0
  461. package/fjs/types/number/proof.f.mjs +204 -0
  462. package/fjs/types/object/module.f.d.mts +45 -0
  463. package/fjs/types/object/module.f.mjs +67 -0
  464. package/fjs/types/object/proof.f.d.mts +28 -0
  465. package/fjs/types/object/proof.f.mjs +29 -0
  466. package/fjs/types/object/structurally_same/module.f.d.mts +39 -0
  467. package/fjs/types/object/structurally_same/module.f.mjs +59 -0
  468. package/fjs/types/object/structurally_same/proof.f.d.mts +6 -0
  469. package/fjs/types/object/structurally_same/proof.f.mjs +73 -0
  470. package/fjs/types/object/types.d.ts +50 -0
  471. package/fjs/types/ordered_map/module.f.d.mts +26 -0
  472. package/fjs/types/ordered_map/module.f.mjs +55 -0
  473. package/fjs/types/ordered_map/proof.f.d.mts +8 -0
  474. package/fjs/types/ordered_map/proof.f.mjs +91 -0
  475. package/fjs/types/ordered_map/types.d.ts +8 -0
  476. package/fjs/types/patricia_trie/module.f.d.mts +20 -0
  477. package/fjs/types/patricia_trie/module.f.mjs +43 -0
  478. package/fjs/types/patricia_trie/proof.f.d.mts +17 -0
  479. package/fjs/types/patricia_trie/proof.f.mjs +151 -0
  480. package/fjs/types/patricia_trie/types.d.ts +34 -0
  481. package/fjs/types/prime_field/module.f.d.mts +44 -0
  482. package/fjs/types/prime_field/module.f.mjs +137 -0
  483. package/fjs/types/prime_field/proof.f.mjs +131 -0
  484. package/fjs/types/prime_field/types.d.ts +38 -0
  485. package/fjs/types/range/module.f.d.mts +12 -0
  486. package/fjs/types/range/module.f.mjs +13 -0
  487. package/fjs/types/range/proof.f.mjs +10 -0
  488. package/fjs/types/range/types.d.ts +6 -0
  489. package/fjs/types/range_map/module.f.d.mts +78 -0
  490. package/fjs/types/range_map/module.f.mjs +127 -0
  491. package/fjs/types/range_map/proof.f.d.mts +11 -0
  492. package/fjs/types/range_map/proof.f.mjs +188 -0
  493. package/fjs/types/range_map/types.d.ts +56 -0
  494. package/fjs/types/range_set/module.f.d.mts +10 -0
  495. package/fjs/types/range_set/module.f.mjs +20 -0
  496. package/fjs/types/range_set/proof.f.d.mts +4 -0
  497. package/fjs/types/range_set/proof.f.mjs +29 -0
  498. package/fjs/types/result/module.d.mts +13 -0
  499. package/fjs/types/result/module.f.d.mts +89 -0
  500. package/fjs/types/result/module.f.mjs +97 -0
  501. package/fjs/types/result/module.mjs +30 -0
  502. package/fjs/types/result/proof.f.d.mts +17 -0
  503. package/fjs/types/result/proof.f.mjs +61 -0
  504. package/fjs/types/result/types.d.ts +17 -0
  505. package/fjs/types/rtti/common/module.f.d.mts +119 -0
  506. package/fjs/types/rtti/common/module.f.mjs +185 -0
  507. package/fjs/types/rtti/common/proof.f.d.mts +13 -0
  508. package/fjs/types/rtti/common/proof.f.mjs +67 -0
  509. package/fjs/types/rtti/common/types.d.ts +43 -0
  510. package/fjs/types/rtti/data/module.f.d.mts +120 -0
  511. package/fjs/types/rtti/data/module.f.mjs +1030 -0
  512. package/fjs/types/rtti/data/proof.f.d.mts +75 -0
  513. package/fjs/types/rtti/data/proof.f.mjs +566 -0
  514. package/fjs/types/rtti/data/types.d.ts +83 -0
  515. package/fjs/types/rtti/module.f.d.mts +83 -0
  516. package/fjs/types/rtti/module.f.mjs +112 -0
  517. package/fjs/types/rtti/parse/module.f.d.mts +47 -0
  518. package/fjs/types/rtti/parse/module.f.mjs +198 -0
  519. package/fjs/types/rtti/parse/proof.f.d.mts +122 -0
  520. package/fjs/types/rtti/parse/proof.f.mjs +343 -0
  521. package/fjs/types/rtti/parse/types.d.ts +12 -0
  522. package/fjs/types/rtti/proof.f.d.mts +10 -0
  523. package/fjs/types/rtti/proof.f.mjs +22 -0
  524. package/fjs/types/rtti/ts/module.f.d.mts +93 -0
  525. package/fjs/types/rtti/ts/module.f.mjs +296 -0
  526. package/fjs/types/rtti/ts/proof.f.d.mts +103 -0
  527. package/fjs/types/rtti/ts/proof.f.mjs +236 -0
  528. package/fjs/types/rtti/ts/types.d.ts +99 -0
  529. package/fjs/types/rtti/types.d.ts +83 -0
  530. package/fjs/types/rtti/validate/module.f.d.mts +41 -0
  531. package/fjs/types/rtti/validate/module.f.mjs +171 -0
  532. package/fjs/types/rtti/validate/proof.f.d.mts +125 -0
  533. package/fjs/types/rtti/validate/proof.f.mjs +437 -0
  534. package/fjs/types/rtti/validate/types.d.ts +6 -0
  535. package/fjs/types/sorted_list/module.f.d.mts +46 -0
  536. package/fjs/types/sorted_list/module.f.mjs +119 -0
  537. package/fjs/types/sorted_list/proof.f.d.mts +7 -0
  538. package/fjs/types/sorted_list/proof.f.mjs +54 -0
  539. package/fjs/types/sorted_list/types.d.ts +15 -0
  540. package/fjs/types/sorted_set/module.f.d.mts +54 -0
  541. package/fjs/types/sorted_set/module.f.mjs +58 -0
  542. package/fjs/types/sorted_set/proof.f.d.mts +9 -0
  543. package/fjs/types/sorted_set/proof.f.mjs +79 -0
  544. package/fjs/types/sorted_set/types.d.ts +6 -0
  545. package/fjs/types/string/module.f.d.mts +40 -0
  546. package/fjs/types/string/module.f.mjs +59 -0
  547. package/fjs/types/string/proof.f.mjs +76 -0
  548. package/fjs/types/string_set/module.f.d.mts +39 -0
  549. package/fjs/types/string_set/module.f.mjs +54 -0
  550. package/fjs/types/string_set/proof.f.mjs +46 -0
  551. package/fjs/types/string_set/types.d.ts +7 -0
  552. package/fjs/types/ts/module.f.d.mts +22 -0
  553. package/fjs/types/ts/module.f.mjs +51 -0
  554. package/fjs/types/ts/proof.f.d.mts +39 -0
  555. package/fjs/types/ts/proof.f.mjs +102 -0
  556. package/fjs/types/ts/types.d.ts +21 -0
  557. package/fjs/types/uint8array/module.f.d.mts +42 -0
  558. package/fjs/types/uint8array/module.f.mjs +58 -0
  559. package/fjs/types/uint8array/proof.f.d.mts +17 -0
  560. package/fjs/types/uint8array/proof.f.mjs +73 -0
  561. package/fjs/website/module.f.d.mts +11 -0
  562. package/fjs/website/module.f.mjs +25 -0
  563. package/fjs/website/proof.f.mjs +14 -0
  564. package/package.json +12 -10
  565. package/todo/proof.f.d.mts +22 -0
  566. package/todo/proof.f.mjs +59 -0
  567. package/fjs/asn.1/module.f.d.ts +0 -62
  568. package/fjs/asn.1/module.f.js +0 -278
  569. package/fjs/asn.1/proof.f.d.ts +0 -48
  570. package/fjs/asn.1/proof.f.js +0 -285
  571. package/fjs/asserts/module.f.d.ts +0 -36
  572. package/fjs/asserts/module.f.js +0 -39
  573. package/fjs/asserts/proof.f.d.ts +0 -11
  574. package/fjs/asserts/proof.f.js +0 -18
  575. package/fjs/base_n/module.f.d.ts +0 -45
  576. package/fjs/base_n/module.f.js +0 -72
  577. package/fjs/base_n/proof.f.js +0 -73
  578. package/fjs/basen/base128/module.f.d.ts +0 -20
  579. package/fjs/basen/base128/module.f.js +0 -43
  580. package/fjs/basen/base128/proof.f.js +0 -26
  581. package/fjs/basen/base64/module.f.d.ts +0 -9
  582. package/fjs/basen/base64/module.f.js +0 -71
  583. package/fjs/basen/base64/proof.f.d.ts +0 -16
  584. package/fjs/basen/base64/proof.f.js +0 -139
  585. package/fjs/basen/cbase32/module.f.d.ts +0 -11
  586. package/fjs/basen/cbase32/module.f.js +0 -55
  587. package/fjs/basen/cbase32/proof.f.d.ts +0 -7
  588. package/fjs/basen/cbase32/proof.f.js +0 -62
  589. package/fjs/bnf/data/module.f.d.ts +0 -52
  590. package/fjs/bnf/data/module.f.js +0 -143
  591. package/fjs/bnf/data/proof.f.d.ts +0 -8
  592. package/fjs/bnf/data/proof.f.js +0 -169
  593. package/fjs/bnf/descent/module.f.d.ts +0 -87
  594. package/fjs/bnf/descent/module.f.js +0 -149
  595. package/fjs/bnf/descent/proof.f.d.ts +0 -7
  596. package/fjs/bnf/descent/proof.f.js +0 -368
  597. package/fjs/bnf/ll1/module.f.d.ts +0 -72
  598. package/fjs/bnf/ll1/module.f.js +0 -155
  599. package/fjs/bnf/ll1/proof.f.d.ts +0 -10
  600. package/fjs/bnf/ll1/proof.f.js +0 -375
  601. package/fjs/bnf/module.f.d.ts +0 -165
  602. package/fjs/bnf/module.f.js +0 -174
  603. package/fjs/bnf/proof.f.d.ts +0 -12
  604. package/fjs/bnf/proof.f.js +0 -69
  605. package/fjs/bnf/testlib.f.d.ts +0 -3
  606. package/fjs/bnf/testlib.f.js +0 -138
  607. package/fjs/bnf/token_symbol/module.f.d.ts +0 -38
  608. package/fjs/bnf/token_symbol/module.f.js +0 -48
  609. package/fjs/bnf/token_symbol/proof.f.js +0 -37
  610. package/fjs/cas/cli/module.f.d.ts +0 -6
  611. package/fjs/cas/cli/module.f.js +0 -53
  612. package/fjs/cas/cli/proof.f.d.ts +0 -17
  613. package/fjs/cas/cli/proof.f.js +0 -112
  614. package/fjs/cas/evo/module.f.d.ts +0 -223
  615. package/fjs/cas/evo/module.f.js +0 -455
  616. package/fjs/cas/evo/proof.f.d.ts +0 -47
  617. package/fjs/cas/evo/proof.f.js +0 -707
  618. package/fjs/cas/module.f.d.ts +0 -64
  619. package/fjs/cas/module.f.js +0 -255
  620. package/fjs/cas/proof.f.d.ts +0 -18
  621. package/fjs/cas/proof.f.js +0 -305
  622. package/fjs/ci/bun/module.f.d.ts +0 -2
  623. package/fjs/ci/bun/module.f.js +0 -15
  624. package/fjs/ci/common/module.f.d.ts +0 -88
  625. package/fjs/ci/common/module.f.js +0 -63
  626. package/fjs/ci/config/module.f.d.ts +0 -45
  627. package/fjs/ci/config/module.f.js +0 -80
  628. package/fjs/ci/deno/module.f.d.ts +0 -10
  629. package/fjs/ci/deno/module.f.js +0 -28
  630. package/fjs/ci/deno/proof.f.d.ts +0 -5
  631. package/fjs/ci/deno/proof.f.js +0 -26
  632. package/fjs/ci/module.f.d.ts +0 -13
  633. package/fjs/ci/module.f.js +0 -58
  634. package/fjs/ci/nix/module.f.d.ts +0 -61
  635. package/fjs/ci/nix/module.f.js +0 -92
  636. package/fjs/ci/nix/proof.f.d.ts +0 -23
  637. package/fjs/ci/nix/proof.f.js +0 -109
  638. package/fjs/ci/node/module.f.d.ts +0 -28
  639. package/fjs/ci/node/module.f.js +0 -92
  640. package/fjs/ci/node/proof.f.js +0 -17
  641. package/fjs/ci/proof.f.d.ts +0 -18
  642. package/fjs/ci/proof.f.js +0 -182
  643. package/fjs/ci/rust/module.f.d.ts +0 -3
  644. package/fjs/ci/rust/module.f.js +0 -75
  645. package/fjs/cli/module.f.d.ts +0 -11
  646. package/fjs/cli/module.f.js +0 -34
  647. package/fjs/cli/proof.f.d.ts +0 -14
  648. package/fjs/cli/proof.f.js +0 -111
  649. package/fjs/common/monoid/module.f.d.ts +0 -126
  650. package/fjs/common/monoid/module.f.js +0 -88
  651. package/fjs/common/monoid/proof.f.d.ts +0 -9
  652. package/fjs/common/monoid/proof.f.js +0 -48
  653. package/fjs/crypto/hmac/module.f.d.ts +0 -29
  654. package/fjs/crypto/hmac/module.f.js +0 -56
  655. package/fjs/crypto/hmac/proof.f.js +0 -32
  656. package/fjs/crypto/pow/module.f.d.ts +0 -37
  657. package/fjs/crypto/pow/module.f.js +0 -72
  658. package/fjs/crypto/pow/proof.f.js +0 -111
  659. package/fjs/crypto/secp/module.f.d.ts +0 -85
  660. package/fjs/crypto/secp/module.f.js +0 -176
  661. package/fjs/crypto/secp/proof.f.d.ts +0 -8
  662. package/fjs/crypto/secp/proof.f.js +0 -124
  663. package/fjs/crypto/sha2/module.f.d.ts +0 -102
  664. package/fjs/crypto/sha2/module.f.js +0 -266
  665. package/fjs/crypto/sha2/proof.f.d.ts +0 -31
  666. package/fjs/crypto/sha2/proof.f.js +0 -139
  667. package/fjs/crypto/sign/module.f.d.ts +0 -33
  668. package/fjs/crypto/sign/module.f.js +0 -163
  669. package/fjs/crypto/sign/proof.f.d.ts +0 -11
  670. package/fjs/crypto/sign/proof.f.js +0 -562
  671. package/fjs/crypto/vdf/module.f.d.ts +0 -21
  672. package/fjs/crypto/vdf/module.f.js +0 -57
  673. package/fjs/crypto/vdf/proof.f.js +0 -94
  674. package/fjs/dev/module.f.d.ts +0 -57
  675. package/fjs/dev/module.f.js +0 -135
  676. package/fjs/dev/package_json/module.f.d.ts +0 -16
  677. package/fjs/dev/package_json/module.f.js +0 -24
  678. package/fjs/dev/package_json/proof.f.js +0 -28
  679. package/fjs/dev/proof.f.d.ts +0 -13
  680. package/fjs/dev/proof.f.js +0 -77
  681. package/fjs/dev/update/module.f.d.ts +0 -11
  682. package/fjs/dev/update/module.f.js +0 -20
  683. package/fjs/dev/update/proof.f.d.ts +0 -7
  684. package/fjs/dev/update/proof.f.js +0 -35
  685. package/fjs/djs/ast/module.f.d.ts +0 -62
  686. package/fjs/djs/ast/module.f.js +0 -61
  687. package/fjs/djs/ast/proof.f.js +0 -49
  688. package/fjs/djs/examples/input.f.js +0 -4
  689. package/fjs/djs/examples/m.f.js +0 -1
  690. package/fjs/djs/module.f.d.ts +0 -17
  691. package/fjs/djs/module.f.js +0 -22
  692. package/fjs/djs/parser/module.f.d.ts +0 -23
  693. package/fjs/djs/parser/module.f.js +0 -410
  694. package/fjs/djs/parser/proof.f.d.ts +0 -14
  695. package/fjs/djs/parser/proof.f.js +0 -556
  696. package/fjs/djs/proof.f.d.ts +0 -10
  697. package/fjs/djs/proof.f.js +0 -50
  698. package/fjs/djs/serializer/module.f.d.ts +0 -17
  699. package/fjs/djs/serializer/module.f.js +0 -173
  700. package/fjs/djs/serializer/proof.f.js +0 -133
  701. package/fjs/djs/tokenizer/module.f.d.ts +0 -24
  702. package/fjs/djs/tokenizer/module.f.js +0 -472
  703. package/fjs/djs/tokenizer/proof.f.d.ts +0 -14
  704. package/fjs/djs/tokenizer/proof.f.js +0 -1211
  705. package/fjs/djs/transpiler/module.f.d.ts +0 -41
  706. package/fjs/djs/transpiler/module.f.js +0 -88
  707. package/fjs/djs/transpiler/proof.f.js +0 -67
  708. package/fjs/effects/eff/module.f.d.ts +0 -72
  709. package/fjs/effects/eff/module.f.js +0 -46
  710. package/fjs/effects/eff/proof.f.d.ts +0 -11
  711. package/fjs/effects/eff/proof.f.js +0 -58
  712. package/fjs/effects/list/module.f.d.ts +0 -37
  713. package/fjs/effects/list/module.f.js +0 -17
  714. package/fjs/effects/memory/module.f.d.ts +0 -37
  715. package/fjs/effects/memory/module.f.js +0 -24
  716. package/fjs/effects/memory/proof.f.d.ts +0 -6
  717. package/fjs/effects/memory/proof.f.js +0 -50
  718. package/fjs/effects/mock/module.f.d.ts +0 -16
  719. package/fjs/effects/mock/module.f.js +0 -20
  720. package/fjs/effects/module.d.ts +0 -2
  721. package/fjs/effects/module.f.d.ts +0 -408
  722. package/fjs/effects/module.f.js +0 -312
  723. package/fjs/effects/module.js +0 -11
  724. package/fjs/effects/node/memory/module.d.ts +0 -20
  725. package/fjs/effects/node/memory/module.js +0 -44
  726. package/fjs/effects/node/memory/proof.d.ts +0 -10
  727. package/fjs/effects/node/memory/proof.js +0 -29
  728. package/fjs/effects/node/module.d.ts +0 -20
  729. package/fjs/effects/node/module.f.d.ts +0 -300
  730. package/fjs/effects/node/module.f.js +0 -171
  731. package/fjs/effects/node/module.js +0 -305
  732. package/fjs/effects/node/proof.f.d.ts +0 -69
  733. package/fjs/effects/node/proof.f.js +0 -409
  734. package/fjs/effects/node/virtual/module.f.d.ts +0 -49
  735. package/fjs/effects/node/virtual/module.f.js +0 -440
  736. package/fjs/effects/node/virtual/proof.f.d.ts +0 -33
  737. package/fjs/effects/node/virtual/proof.f.js +0 -186
  738. package/fjs/effects/proof.f.d.ts +0 -56
  739. package/fjs/effects/proof.f.js +0 -200
  740. package/fjs/emergent_testing/all.test.js +0 -5
  741. package/fjs/emergent_testing/example.f.d.ts +0 -13
  742. package/fjs/emergent_testing/example.f.js +0 -31
  743. package/fjs/emergent_testing/module.f.d.ts +0 -140
  744. package/fjs/emergent_testing/module.f.js +0 -289
  745. package/fjs/emergent_testing/proof.f.d.ts +0 -67
  746. package/fjs/emergent_testing/proof.f.js +0 -416
  747. package/fjs/emergent_testing/scenarios/all.d.ts +0 -1
  748. package/fjs/emergent_testing/scenarios/all.js +0 -1
  749. package/fjs/emergent_testing/scenarios/async-subtests.fail.d.ts +0 -6
  750. package/fjs/emergent_testing/scenarios/async-subtests.fail.js +0 -9
  751. package/fjs/emergent_testing/scenarios/async-subtests.pass.d.ts +0 -6
  752. package/fjs/emergent_testing/scenarios/async-subtests.pass.js +0 -9
  753. package/fjs/emergent_testing/scenarios/async.fail.d.ts +0 -3
  754. package/fjs/emergent_testing/scenarios/async.fail.js +0 -6
  755. package/fjs/emergent_testing/scenarios/async.pass.d.ts +0 -3
  756. package/fjs/emergent_testing/scenarios/async.pass.js +0 -5
  757. package/fjs/emergent_testing/scenarios/fail.fail.d.ts +0 -3
  758. package/fjs/emergent_testing/scenarios/fail.fail.js +0 -3
  759. package/fjs/emergent_testing/scenarios/return-value.pass.d.ts +0 -3
  760. package/fjs/emergent_testing/scenarios/return-value.pass.js +0 -4
  761. package/fjs/emergent_testing/scenarios/thenable.pass.d.ts +0 -5
  762. package/fjs/emergent_testing/scenarios/thenable.pass.js +0 -11
  763. package/fjs/emergent_testing/scenarios/thenable2.pass.d.ts +0 -5
  764. package/fjs/emergent_testing/scenarios/thenable2.pass.js +0 -3
  765. package/fjs/emergent_testing/scenarios/throw.pass.d.ts +0 -5
  766. package/fjs/emergent_testing/scenarios/throw.pass.js +0 -3
  767. package/fjs/fsc/bnf.f.d.ts +0 -2
  768. package/fjs/fsc/bnf.f.js +0 -42
  769. package/fjs/fsc/json.f.d.ts +0 -7
  770. package/fjs/fsc/json.f.js +0 -64
  771. package/fjs/fsc/module.f.d.ts +0 -11
  772. package/fjs/fsc/module.f.js +0 -73
  773. package/fjs/fsc/proof.f.js +0 -104
  774. package/fjs/fsm/module.f.d.ts +0 -17
  775. package/fjs/fsm/module.f.js +0 -55
  776. package/fjs/fsm/proof.f.d.ts +0 -4
  777. package/fjs/fsm/proof.f.js +0 -126
  778. package/fjs/js/tokenizer/module.f.d.ts +0 -104
  779. package/fjs/js/tokenizer/module.f.js +0 -547
  780. package/fjs/js/tokenizer/proof.f.d.ts +0 -9
  781. package/fjs/js/tokenizer/proof.f.js +0 -986
  782. package/fjs/mcp/cas/module.f.d.ts +0 -27
  783. package/fjs/mcp/cas/module.f.js +0 -232
  784. package/fjs/mcp/evo/module.f.d.ts +0 -32
  785. package/fjs/mcp/evo/module.f.js +0 -99
  786. package/fjs/mcp/evo/proof.f.d.ts +0 -12
  787. package/fjs/mcp/evo/proof.f.js +0 -147
  788. package/fjs/mcp/module.f.d.ts +0 -56
  789. package/fjs/mcp/module.f.js +0 -69
  790. package/fjs/mcp/proof.f.d.ts +0 -45
  791. package/fjs/mcp/proof.f.js +0 -535
  792. package/fjs/media/html/module.f.d.ts +0 -52
  793. package/fjs/media/html/module.f.js +0 -117
  794. package/fjs/media/html/proof.f.d.ts +0 -16
  795. package/fjs/media/html/proof.f.js +0 -65
  796. package/fjs/media/json/module.f.d.ts +0 -64
  797. package/fjs/media/json/module.f.js +0 -109
  798. package/fjs/media/json/parser/module.f.d.ts +0 -21
  799. package/fjs/media/json/parser/module.f.js +0 -194
  800. package/fjs/media/json/parser/proof.f.d.ts +0 -5
  801. package/fjs/media/json/parser/proof.f.js +0 -314
  802. package/fjs/media/json/proof.f.js +0 -98
  803. package/fjs/media/json/schema/module.f.d.ts +0 -78
  804. package/fjs/media/json/schema/module.f.js +0 -96
  805. package/fjs/media/json/schema/proof.f.d.ts +0 -36
  806. package/fjs/media/json/schema/proof.f.js +0 -83
  807. package/fjs/media/json/serializer/module.f.d.ts +0 -28
  808. package/fjs/media/json/serializer/module.f.js +0 -73
  809. package/fjs/media/json/serializer/proof.f.js +0 -94
  810. package/fjs/media/json/tokenizer/module.f.d.ts +0 -15
  811. package/fjs/media/json/tokenizer/module.f.js +0 -63
  812. package/fjs/media/json/tokenizer/proof.f.d.ts +0 -5
  813. package/fjs/media/json/tokenizer/proof.f.js +0 -417
  814. package/fjs/media/module.f.d.ts +0 -119
  815. package/fjs/media/module.f.js +0 -88
  816. package/fjs/media/nix/module.f.d.ts +0 -30
  817. package/fjs/media/nix/module.f.js +0 -166
  818. package/fjs/media/nix/proof.f.d.ts +0 -32
  819. package/fjs/media/nix/proof.f.js +0 -127
  820. package/fjs/media/proof.f.d.ts +0 -19
  821. package/fjs/media/proof.f.js +0 -127
  822. package/fjs/media/revision/module.f.d.ts +0 -94
  823. package/fjs/media/revision/module.f.js +0 -143
  824. package/fjs/media/revision/proof.f.d.ts +0 -42
  825. package/fjs/media/revision/proof.f.js +0 -190
  826. package/fjs/media/type/module.f.d.ts +0 -135
  827. package/fjs/media/type/module.f.js +0 -231
  828. package/fjs/media/type/proof.f.d.ts +0 -40
  829. package/fjs/media/type/proof.f.js +0 -213
  830. package/fjs/module.d.ts +0 -2
  831. package/fjs/module.f.d.ts +0 -2
  832. package/fjs/module.f.js +0 -50
  833. package/fjs/module.js +0 -4
  834. package/fjs/path/module.f.d.ts +0 -46
  835. package/fjs/path/module.f.js +0 -71
  836. package/fjs/path/proof.f.js +0 -119
  837. package/fjs/proof.f.d.ts +0 -9
  838. package/fjs/proof.f.js +0 -38
  839. package/fjs/protocol/json_rpc/module.f.d.ts +0 -114
  840. package/fjs/protocol/json_rpc/module.f.js +0 -89
  841. package/fjs/protocol/json_rpc/proof.f.d.ts +0 -35
  842. package/fjs/protocol/json_rpc/proof.f.js +0 -68
  843. package/fjs/protocol/mcp/module.f.d.ts +0 -239
  844. package/fjs/protocol/mcp/module.f.js +0 -272
  845. package/fjs/protocol/mcp/proof.f.d.ts +0 -34
  846. package/fjs/protocol/mcp/proof.f.js +0 -208
  847. package/fjs/protocol/mcp/stdio/module.f.d.ts +0 -47
  848. package/fjs/protocol/mcp/stdio/module.f.js +0 -78
  849. package/fjs/protocol/mcp/stdio/proof.f.d.ts +0 -13
  850. package/fjs/protocol/mcp/stdio/proof.f.js +0 -143
  851. package/fjs/sul/id/module.f.d.ts +0 -33
  852. package/fjs/sul/id/module.f.js +0 -93
  853. package/fjs/sul/id/proof.f.js +0 -61
  854. package/fjs/sul/level/hash/module.f.d.ts +0 -38
  855. package/fjs/sul/level/hash/module.f.js +0 -43
  856. package/fjs/sul/level/hash/proof.f.d.ts +0 -13
  857. package/fjs/sul/level/hash/proof.f.js +0 -112
  858. package/fjs/sul/level/literal/module.f.d.ts +0 -64
  859. package/fjs/sul/level/literal/module.f.js +0 -88
  860. package/fjs/sul/level/literal/proof.f.d.ts +0 -12
  861. package/fjs/sul/level/literal/proof.f.js +0 -714
  862. package/fjs/sul/module.f.d.ts +0 -23
  863. package/fjs/sul/module.f.js +0 -46
  864. package/fjs/sul/proof.f.d.ts +0 -9
  865. package/fjs/sul/proof.f.js +0 -47
  866. package/fjs/text/ascii/module.f.d.ts +0 -136
  867. package/fjs/text/ascii/module.f.js +0 -154
  868. package/fjs/text/ascii/proof.f.d.ts +0 -6
  869. package/fjs/text/ascii/proof.f.js +0 -14
  870. package/fjs/text/code_point/module.f.d.ts +0 -65
  871. package/fjs/text/code_point/module.f.js +0 -103
  872. package/fjs/text/code_point/proof.f.d.ts +0 -8
  873. package/fjs/text/code_point/proof.f.js +0 -72
  874. package/fjs/text/module.f.d.ts +0 -40
  875. package/fjs/text/module.f.js +0 -43
  876. package/fjs/text/proof.f.d.ts +0 -10
  877. package/fjs/text/proof.f.js +0 -44
  878. package/fjs/text/sgr/module.f.d.ts +0 -53
  879. package/fjs/text/sgr/module.f.js +0 -63
  880. package/fjs/text/sgr/proof.f.js +0 -33
  881. package/fjs/text/utf16/module.f.d.ts +0 -161
  882. package/fjs/text/utf16/module.f.js +0 -311
  883. package/fjs/text/utf16/proof.f.d.ts +0 -10
  884. package/fjs/text/utf16/proof.f.js +0 -144
  885. package/fjs/text/utf8/module.f.d.ts +0 -83
  886. package/fjs/text/utf8/module.f.js +0 -247
  887. package/fjs/text/utf8/proof.f.js +0 -217
  888. package/fjs/types/array/module.f.d.ts +0 -49
  889. package/fjs/types/array/module.f.js +0 -42
  890. package/fjs/types/array/proof.f.js +0 -92
  891. package/fjs/types/bigfloat/module.f.d.ts +0 -6
  892. package/fjs/types/bigfloat/module.f.js +0 -69
  893. package/fjs/types/bigfloat/proof.f.d.ts +0 -5
  894. package/fjs/types/bigfloat/proof.f.js +0 -217
  895. package/fjs/types/bigint/module.f.d.ts +0 -172
  896. package/fjs/types/bigint/module.f.js +0 -251
  897. package/fjs/types/bigint/proof.f.d.ts +0 -37
  898. package/fjs/types/bigint/proof.f.js +0 -400
  899. package/fjs/types/bit_vec/module.f.d.ts +0 -302
  900. package/fjs/types/bit_vec/module.f.js +0 -375
  901. package/fjs/types/bit_vec/proof.f.d.ts +0 -65
  902. package/fjs/types/bit_vec/proof.f.js +0 -465
  903. package/fjs/types/btree/find/module.f.d.ts +0 -25
  904. package/fjs/types/btree/find/module.f.js +0 -80
  905. package/fjs/types/btree/find/proof.f.d.ts +0 -3
  906. package/fjs/types/btree/find/proof.f.js +0 -108
  907. package/fjs/types/btree/module.f.d.ts +0 -9
  908. package/fjs/types/btree/module.f.js +0 -33
  909. package/fjs/types/btree/proof.f.d.ts +0 -13
  910. package/fjs/types/btree/proof.f.js +0 -64
  911. package/fjs/types/btree/remove/module.f.d.ts +0 -14
  912. package/fjs/types/btree/remove/module.f.js +0 -186
  913. package/fjs/types/btree/remove/proof.f.d.ts +0 -9
  914. package/fjs/types/btree/remove/proof.f.js +0 -484
  915. package/fjs/types/btree/set/module.f.d.ts +0 -8
  916. package/fjs/types/btree/set/module.f.js +0 -128
  917. package/fjs/types/btree/set/proof.f.d.ts +0 -1
  918. package/fjs/types/btree/set/proof.f.js +0 -368
  919. package/fjs/types/btree/types/module.f.d.ts +0 -23
  920. package/fjs/types/btree/types/module.f.js +0 -9
  921. package/fjs/types/byte_set/module.f.d.ts +0 -16
  922. package/fjs/types/byte_set/module.f.js +0 -30
  923. package/fjs/types/byte_set/proof.f.d.ts +0 -11
  924. package/fjs/types/byte_set/proof.f.js +0 -79
  925. package/fjs/types/function/compare/module.f.d.ts +0 -49
  926. package/fjs/types/function/compare/module.f.js +0 -51
  927. package/fjs/types/function/compare/proof.f.js +0 -47
  928. package/fjs/types/function/module.f.d.ts +0 -28
  929. package/fjs/types/function/module.f.js +0 -19
  930. package/fjs/types/function/operator/module.f.d.ts +0 -48
  931. package/fjs/types/function/operator/module.f.js +0 -16
  932. package/fjs/types/function/operator/proof.f.js +0 -53
  933. package/fjs/types/function/proof.f.js +0 -10
  934. package/fjs/types/list/module.f.d.ts +0 -75
  935. package/fjs/types/list/module.f.js +0 -190
  936. package/fjs/types/list/proof.f.d.ts +0 -31
  937. package/fjs/types/list/proof.f.js +0 -330
  938. package/fjs/types/map/module.f.d.ts +0 -2
  939. package/fjs/types/map/module.f.js +0 -22
  940. package/fjs/types/map/proof.f.js +0 -22
  941. package/fjs/types/nibble_set/module.f.d.ts +0 -27
  942. package/fjs/types/nibble_set/module.f.js +0 -25
  943. package/fjs/types/nibble_set/proof.f.js +0 -60
  944. package/fjs/types/nominal/module.f.d.ts +0 -22
  945. package/fjs/types/nominal/module.f.js +0 -13
  946. package/fjs/types/nominal/proof.f.d.ts +0 -4
  947. package/fjs/types/nominal/proof.f.js +0 -48
  948. package/fjs/types/nullable/module.f.d.ts +0 -21
  949. package/fjs/types/nullable/module.f.js +0 -29
  950. package/fjs/types/nullable/proof.f.d.ts +0 -1
  951. package/fjs/types/nullable/proof.f.js +0 -29
  952. package/fjs/types/number/module.f.d.ts +0 -16
  953. package/fjs/types/number/module.f.js +0 -30
  954. package/fjs/types/number/proof.f.js +0 -124
  955. package/fjs/types/object/module.f.d.ts +0 -54
  956. package/fjs/types/object/module.f.js +0 -25
  957. package/fjs/types/object/proof.f.d.ts +0 -4
  958. package/fjs/types/object/proof.f.js +0 -14
  959. package/fjs/types/option/module.f.js +0 -6
  960. package/fjs/types/ordered_map/module.f.d.ts +0 -17
  961. package/fjs/types/ordered_map/module.f.js +0 -22
  962. package/fjs/types/ordered_map/proof.f.d.ts +0 -5
  963. package/fjs/types/ordered_map/proof.f.js +0 -73
  964. package/fjs/types/patricia_trie/module.f.d.ts +0 -25
  965. package/fjs/types/patricia_trie/module.f.js +0 -35
  966. package/fjs/types/patricia_trie/proof.f.d.ts +0 -13
  967. package/fjs/types/patricia_trie/proof.f.js +0 -121
  968. package/fjs/types/phantom/module.f.js +0 -11
  969. package/fjs/types/prime_field/module.f.d.ts +0 -62
  970. package/fjs/types/prime_field/module.f.js +0 -112
  971. package/fjs/types/prime_field/proof.f.js +0 -128
  972. package/fjs/types/range/module.f.d.ts +0 -8
  973. package/fjs/types/range/module.f.js +0 -2
  974. package/fjs/types/range/proof.f.d.ts +0 -1
  975. package/fjs/types/range/proof.f.js +0 -9
  976. package/fjs/types/range_map/module.f.d.ts +0 -92
  977. package/fjs/types/range_map/module.f.js +0 -82
  978. package/fjs/types/range_map/proof.f.d.ts +0 -6
  979. package/fjs/types/range_map/proof.f.js +0 -151
  980. package/fjs/types/range_set/module.f.d.ts +0 -5
  981. package/fjs/types/range_set/module.f.js +0 -16
  982. package/fjs/types/range_set/proof.f.d.ts +0 -1
  983. package/fjs/types/range_set/proof.f.js +0 -19
  984. package/fjs/types/result/module.d.ts +0 -3
  985. package/fjs/types/result/module.f.d.ts +0 -61
  986. package/fjs/types/result/module.f.js +0 -54
  987. package/fjs/types/result/module.js +0 -19
  988. package/fjs/types/result/proof.f.d.ts +0 -12
  989. package/fjs/types/result/proof.f.js +0 -31
  990. package/fjs/types/rtti/common/module.f.d.ts +0 -121
  991. package/fjs/types/rtti/common/module.f.js +0 -94
  992. package/fjs/types/rtti/common/proof.f.d.ts +0 -8
  993. package/fjs/types/rtti/common/proof.f.js +0 -51
  994. package/fjs/types/rtti/module.f.d.ts +0 -75
  995. package/fjs/types/rtti/module.f.js +0 -34
  996. package/fjs/types/rtti/parse/module.f.d.ts +0 -36
  997. package/fjs/types/rtti/parse/module.f.js +0 -114
  998. package/fjs/types/rtti/parse/proof.f.d.ts +0 -115
  999. package/fjs/types/rtti/parse/proof.f.js +0 -334
  1000. package/fjs/types/rtti/proof.f.d.ts +0 -5
  1001. package/fjs/types/rtti/proof.f.js +0 -16
  1002. package/fjs/types/rtti/ts/module.f.d.ts +0 -118
  1003. package/fjs/types/rtti/ts/module.f.js +0 -59
  1004. package/fjs/types/rtti/ts/proof.f.d.ts +0 -59
  1005. package/fjs/types/rtti/ts/proof.f.js +0 -75
  1006. package/fjs/types/rtti/validate/module.f.d.ts +0 -4
  1007. package/fjs/types/rtti/validate/module.f.js +0 -74
  1008. package/fjs/types/rtti/validate/proof.f.d.ts +0 -118
  1009. package/fjs/types/rtti/validate/proof.f.js +0 -349
  1010. package/fjs/types/sorted_list/module.f.d.ts +0 -26
  1011. package/fjs/types/sorted_list/module.f.js +0 -51
  1012. package/fjs/types/sorted_list/proof.f.d.ts +0 -4
  1013. package/fjs/types/sorted_list/proof.f.js +0 -46
  1014. package/fjs/types/sorted_set/module.f.d.ts +0 -33
  1015. package/fjs/types/sorted_set/module.f.js +0 -5
  1016. package/fjs/types/sorted_set/proof.f.d.ts +0 -6
  1017. package/fjs/types/sorted_set/proof.f.js +0 -67
  1018. package/fjs/types/string/module.f.d.ts +0 -24
  1019. package/fjs/types/string/module.f.js +0 -35
  1020. package/fjs/types/string/proof.f.js +0 -77
  1021. package/fjs/types/string_set/module.f.d.ts +0 -30
  1022. package/fjs/types/string_set/module.f.js +0 -37
  1023. package/fjs/types/string_set/proof.f.js +0 -43
  1024. package/fjs/types/ts/module.f.d.ts +0 -23
  1025. package/fjs/types/ts/module.f.js +0 -27
  1026. package/fjs/types/ts/proof.f.d.ts +0 -38
  1027. package/fjs/types/ts/proof.f.js +0 -86
  1028. package/fjs/types/uint8array/module.f.d.ts +0 -13
  1029. package/fjs/types/uint8array/module.f.js +0 -34
  1030. package/fjs/types/uint8array/proof.f.d.ts +0 -17
  1031. package/fjs/types/uint8array/proof.f.js +0 -64
  1032. package/fjs/website/module.f.d.ts +0 -3
  1033. package/fjs/website/module.f.js +0 -14
  1034. package/fjs/website/proof.f.js +0 -13
  1035. package/nanvm-lib/tests/proof.f.d.ts +0 -122
  1036. package/nanvm-lib/tests/proof.f.js +0 -330
  1037. package/todo/031-json.f.d.ts +0 -1
  1038. package/todo/031-json.f.js +0 -241
  1039. package/todo/proof.f.d.ts +0 -20
  1040. package/todo/proof.f.js +0 -62
  1041. /package/fjs/{base_n/proof.f.d.ts → basen/proof.f.d.mts} +0 -0
  1042. /package/fjs/bnf/token_symbol/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1043. /package/fjs/ci/node/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1044. /package/fjs/crypto/hmac/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1045. /package/fjs/crypto/pow/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1046. /package/fjs/crypto/vdf/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1047. /package/fjs/dev/package_json/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1048. /package/fjs/djs/ast/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1049. /package/fjs/djs/examples/{input.f.d.ts → input.f.d.mts} +0 -0
  1050. /package/fjs/djs/examples/{m.f.d.ts → m.f.d.mts} +0 -0
  1051. /package/fjs/djs/serializer/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1052. /package/fjs/djs/transpiler/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1053. /package/fjs/fsc/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1054. /package/fjs/media/json/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1055. /package/fjs/media/json/serializer/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1056. /package/fjs/path/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1057. /package/fjs/sul/id/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1058. /package/fjs/text/utf8/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1059. /package/fjs/types/array/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1060. /package/fjs/{emergent_testing/all.test.d.ts → types/bigint/benchmark.d.mts} +0 -0
  1061. /package/fjs/{basen/base128/proof.f.d.ts → types/function/compare/proof.f.d.mts} +0 -0
  1062. /package/fjs/types/function/operator/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1063. /package/fjs/types/function/{compare/proof.f.d.ts → proof.f.d.mts} +0 -0
  1064. /package/fjs/types/map/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1065. /package/fjs/types/nibble_set/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1066. /package/fjs/{text/sgr/proof.f.d.ts → types/nullable/proof.f.d.mts} +0 -0
  1067. /package/fjs/types/number/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1068. /package/fjs/types/option/{module.f.d.ts → types.d.ts} +0 -0
  1069. /package/fjs/types/phantom/{module.f.d.ts → types.d.ts} +0 -0
  1070. /package/fjs/types/prime_field/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1071. /package/fjs/types/{function/proof.f.d.ts → range/proof.f.d.mts} +0 -0
  1072. /package/fjs/types/string/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1073. /package/fjs/types/string_set/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1074. /package/fjs/website/{proof.f.d.ts → proof.f.d.mts} +0 -0
@@ -1,707 +0,0 @@
1
- import { assert, assertEq } from '../../asserts/module.f.js';
2
- import { pure } from '../../effects/module.f.js';
3
- import { fileCas } from '../module.f.js';
4
- import { sha256 } from '../../crypto/sha2/module.f.js';
5
- import { emptyState, virtual } from '../../effects/node/virtual/module.f.js';
6
- import { vec, vec8 } from '../../types/bit_vec/module.f.js';
7
- import { cBase32ToVec, vecToCBase32 } from '../../basen/cbase32/module.f.js';
8
- import { unwrap } from '../../types/nullable/module.f.js';
9
- import { ok, error } from '../../types/result/module.f.js';
10
- import { nonEmpty, empty as elEmpty } from '../../effects/list/module.f.js';
11
- import { tryUtf8 } from '../../text/module.f.js';
12
- import { dialect as revisionDialect } from '../../media/revision/module.f.js';
13
- import { buildCache, decodeRevisionBlob, initEvo, evo, emptyCache, syncRevision, } from './module.f.js';
14
- const home = '.';
15
- // A `Cas<never>` whose `write` always fails — used to reach `addRevision`'s
16
- // store-write-failure branch, which real `fileCas` has no easy way to trigger.
17
- const writeFailingCas = {
18
- read: () => elEmpty(),
19
- write: () => pure(error('boom')),
20
- list: () => pure([]),
21
- };
22
- // A `Cas<never>` whose `read` yields an error item that is *not* a missing
23
- // shard — what a permission error, a mid-stream I/O failure, or a blob too
24
- // large for `collectRead` to buffer looks like to a caller.
25
- const readFailingCas = {
26
- read: () => nonEmpty(error('boom'), elEmpty()),
27
- write: () => pure(error('write not supported')),
28
- list: () => pure([]),
29
- };
30
- // A `Cas<never>` backed by a fixed set of (hash, content) entries, returned
31
- // from `list()` in exactly the given order — used to control the order
32
- // `buildCache` sees hashes in, independent of any real filesystem's
33
- // (hash-lexical, not causal) directory-listing order.
34
- const fixedCas = (entries) => ({
35
- read: hash => {
36
- const found = entries.find(([h]) => vecToCBase32(h) === vecToCBase32(hash));
37
- return found === undefined
38
- ? nonEmpty(error('not found'), elEmpty())
39
- : nonEmpty(ok(found[1]), elEmpty());
40
- },
41
- write: () => pure(error('write not supported')),
42
- list: () => pure(entries.map(([h]) => h)),
43
- });
44
- export const proof = {
45
- buildCacheEmptyStoreYieldsEmptyCache: () => {
46
- const c = fileCas(sha256)(home);
47
- const [, cache] = virtual(emptyState)(buildCache(c));
48
- assertEq(JSON.stringify(cache), JSON.stringify(emptyCache));
49
- },
50
- buildCacheSkipsNonRevisionBlob: () => {
51
- const c = fileCas(sha256)(home);
52
- const content = vec8(0x41n); // 'A' — valid UTF-8, not revision JSON
53
- const [state1] = virtual(emptyState)(c.write(nonEmpty(ok(content), elEmpty())));
54
- const [, cache] = virtual(state1)(buildCache(c));
55
- assertEq(Object.keys(cache.bySubject).length, 0);
56
- },
57
- decodeRevisionBlobMissingHashIsNull: () => {
58
- const c = fileCas(sha256)(home);
59
- const [, revision] = virtual(emptyState)(decodeRevisionBlob(c)(vec8(0x99n)));
60
- assertEq(revision, null);
61
- },
62
- decodeRevisionBlobNonUtf8IsNull: () => {
63
- const c = fileCas(sha256)(home);
64
- const oddVec = vec(5n)(21n); // not a whole number of bytes
65
- const [state1, w] = virtual(emptyState)(c.write(nonEmpty(ok(oddVec), elEmpty())));
66
- assert(w[0] === 'ok', ['expected write ok', w]);
67
- const [, revision] = virtual(state1)(decodeRevisionBlob(c)(w[1]));
68
- assertEq(revision, null);
69
- },
70
- decodeRevisionBlobInvalidJsonIsNull: () => {
71
- const c = fileCas(sha256)(home);
72
- const content = vec8(0x7bn); // '{' alone: valid UTF-8, not parseable JSON
73
- const [state1, w] = virtual(emptyState)(c.write(nonEmpty(ok(content), elEmpty())));
74
- assert(w[0] === 'ok', ['expected write ok', w]);
75
- const [, revision] = virtual(state1)(decodeRevisionBlob(c)(w[1]));
76
- assertEq(revision, null);
77
- },
78
- decodeRevisionBlobValidRevisionRoundTrips: () => {
79
- const c = fileCas(sha256)(home);
80
- const subjectHash = vecToCBase32(vec8(0x11n));
81
- const text = `{"dialect":"${revisionDialect}","subject":"${subjectHash}","parents":[],"snapshot":"${subjectHash}","generation":0}`;
82
- const bytes = tryUtf8(text);
83
- assert(bytes !== null, 'expected the sample revision text to encode as UTF-8');
84
- const [state1, w] = virtual(emptyState)(c.write(nonEmpty(ok(bytes), elEmpty())));
85
- assert(w[0] === 'ok', ['expected write ok', w]);
86
- const [, revision] = virtual(state1)(decodeRevisionBlob(c)(w[1]));
87
- assert(revision !== null, 'expected a decoded revision');
88
- assertEq(revision?.subject, subjectHash);
89
- },
90
- buildCacheIncludesScannedRevision: () => {
91
- // Unlike the `add`-driven tests below (which fold one revision at a
92
- // time), this seeds a `vnd.fjs.revision` blob directly into the store
93
- // and scans it with `buildCache`, covering the "found a revision"
94
- // branch of the full-store fold.
95
- const c = fileCas(sha256)(home);
96
- const subjectHash = vecToCBase32(vec8(0x12n));
97
- const text = `{"dialect":"${revisionDialect}","subject":"${subjectHash}","parents":[],"snapshot":"${subjectHash}","generation":0}`;
98
- const bytes = tryUtf8(text);
99
- assert(bytes !== null, 'expected the sample revision text to encode as UTF-8');
100
- const [state1, w] = virtual(emptyState)(fileCas(sha256)(home).write(nonEmpty(ok(bytes), elEmpty())));
101
- assert(w[0] === 'ok', ['expected write ok', w]);
102
- const [, cache] = virtual(state1)(buildCache(c));
103
- assertEq(cache.bySubject[subjectHash]?.hashes.length, 1);
104
- assertEq(cache.bySubject[subjectHash]?.hashes[0], vecToCBase32(w[1]));
105
- },
106
- // Regression: `cas.list()` enumerates a real store by hash-sharded path,
107
- // not revision ancestry, so a child's hash can sort (and therefore be
108
- // scanned) before its parent's. `buildCache` must still end up with only
109
- // the child as a head — the whole point of tracking `hashes`/`parents`
110
- // as separate sets (see the module doc) rather than an incremental head
111
- // list.
112
- buildCacheOrderIndependentWhenChildScannedBeforeParent: () => {
113
- const rootHash = vec8(0xaan);
114
- const childHash = vec8(0xbbn);
115
- const rootCBase32 = vecToCBase32(rootHash);
116
- const childCBase32 = vecToCBase32(childHash);
117
- const snapshotHash = vecToCBase32(vec8(0xccn));
118
- const rootText = `{"dialect":"${revisionDialect}","subject":"doc","parents":[],"snapshot":"${snapshotHash}","generation":0}`;
119
- const childText = `{"dialect":"${revisionDialect}","subject":"doc","parents":["${rootCBase32}"],"snapshot":"${snapshotHash}","generation":1}`;
120
- const rootBytes = tryUtf8(rootText);
121
- const childBytes = tryUtf8(childText);
122
- assert(rootBytes !== null && childBytes !== null, 'expected sample revisions to encode as UTF-8');
123
- const cas = fixedCas([[childHash, childBytes], [rootHash, rootBytes]]);
124
- const [state0, cacheKey] = virtual(emptyState)(initEvo(cas));
125
- const [, heads] = virtual(state0)(evo(cas)(cacheKey).head('doc'));
126
- assertEq(heads.length, 1);
127
- assertEq(heads[0], childCBase32);
128
- },
129
- // Regression: `cBase32ToVec` accepts more than one spelling of the same
130
- // hash (case, and the `i`/`l`/`o` alphabet aliases). A parent reference
131
- // recorded in a non-canonical spelling must still demote the parent from
132
- // the head set — `headsOf` compares hash strings directly, so caching
133
- // the parent verbatim (instead of its canonical `vecToCBase32` spelling)
134
- // would leave the parent listed as a head alongside its child.
135
- buildCacheCanonicalizesNonCanonicalParentHashes: () => {
136
- const rootHash = vec8(0xffn);
137
- const rootCanonical = vecToCBase32(rootHash); // "zy" — has letters to uppercase
138
- const rootNonCanonical = rootCanonical.toUpperCase();
139
- assert(rootNonCanonical !== rootCanonical, 'expected the sample hash to contain letters');
140
- const childHash = vec8(0xeen);
141
- const snapshotHash = vecToCBase32(vec8(0xddn));
142
- const rootText = `{"dialect":"${revisionDialect}","subject":"doc","parents":[],"snapshot":"${snapshotHash}","generation":0}`;
143
- const childText = `{"dialect":"${revisionDialect}","subject":"doc","parents":["${rootNonCanonical}"],"snapshot":"${snapshotHash}","generation":1}`;
144
- const rootBytes = tryUtf8(rootText);
145
- const childBytes = tryUtf8(childText);
146
- assert(rootBytes !== null && childBytes !== null, 'expected sample revisions to encode as UTF-8');
147
- const cas = fixedCas([[rootHash, rootBytes], [childHash, childBytes]]);
148
- const [state0, cacheKey] = virtual(emptyState)(initEvo(cas));
149
- const [, heads] = virtual(state0)(evo(cas)(cacheKey).head('doc'));
150
- assertEq(heads.length, 1);
151
- assertEq(heads[0], vecToCBase32(childHash));
152
- },
153
- // Two concurrent children of one root: both become heads, the root stops
154
- // being one. Exercises addRevisionToCache's fold across a first insert
155
- // (no prior heads for the subject), a removal (a parent leaving the head
156
- // set), and a keep (an unrelated existing head surviving the fold).
157
- addRevisionBuildsHeadsAcrossChainAndFork: () => {
158
- const c = fileCas(sha256)(home);
159
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
160
- const e = evo(c)(cacheKey);
161
- const snapshotHash = vecToCBase32(vec8(0x22n));
162
- const rev0 = { parents: [], subject: 'doc', snapshot: snapshotHash };
163
- const [state1, rev0Result] = virtual(state0)(e.add(rev0));
164
- assert(rev0Result[0] === 'ok', ['expected rev0 ok', rev0Result]);
165
- const rev0Hash = rev0Result[1];
166
- // rev1 inherits rev0's snapshot; rev2 states a different one — so the
167
- // two concurrent children are genuinely distinct blobs (both children
168
- // of rev0, same generation), not one deduplicated revision.
169
- const rev1 = { parents: [rev0Hash], subject: 'doc' };
170
- const [state2, rev1Result] = virtual(state1)(e.add(rev1));
171
- assert(rev1Result[0] === 'ok', ['expected rev1 ok', rev1Result]);
172
- const rev1Hash = rev1Result[1];
173
- const rev2 = { parents: [rev0Hash], subject: 'doc', snapshot: vecToCBase32(vec8(0x23n)) };
174
- const [state3, rev2Result] = virtual(state2)(e.add(rev2));
175
- assert(rev2Result[0] === 'ok', ['expected rev2 ok', rev2Result]);
176
- const rev2Hash = rev2Result[1];
177
- const [state4, heads] = virtual(state3)(e.head('doc'));
178
- assertEq(heads.length, 2);
179
- assert(heads.includes(rev1Hash), ['expected rev1 to remain a head', heads]);
180
- assert(heads.includes(rev2Hash), ['expected rev2 to be a head', heads]);
181
- assert(!heads.includes(rev0Hash), ['expected rev0 to no longer be a head', heads]);
182
- const [, subjects] = virtual(state4)(e.list());
183
- assertEq(subjects.length, 1);
184
- assertEq(subjects[0], 'doc');
185
- },
186
- // `list()` and `list(true)` partition subjects by the archived flags of
187
- // their current heads: a lone root revision carrying `archived: true`
188
- // makes its subject archived, one without it leaves the subject active,
189
- // and neither subject appears in the other's result.
190
- listPartitionsSubjectsByHeadArchivedFlag: () => {
191
- const c = fileCas(sha256)(home);
192
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
193
- const e = evo(c)(cacheKey);
194
- const [state1, live] = virtual(state0)(e.add({ parents: [], subject: 'live', snapshot: vecToCBase32(vec8(0x40n)) }));
195
- assert(live[0] === 'ok', ['expected the active add to succeed', live]);
196
- const [state2, gone] = virtual(state1)(e.add({ parents: [], subject: 'gone', snapshot: vecToCBase32(vec8(0x41n)), archived: true }));
197
- assert(gone[0] === 'ok', ['expected the archived add to succeed', gone]);
198
- const [state3, active] = virtual(state2)(e.list());
199
- assertEq(active.length, 1);
200
- assertEq(active[0], 'live');
201
- const [, archived] = virtual(state3)(e.list(true));
202
- assertEq(archived.length, 1);
203
- assertEq(archived[0], 'gone');
204
- },
205
- // Concurrent heads can disagree about `archived`. One unarchived head
206
- // keeps the whole subject active — there is still a head left to build on
207
- // — so the subject stays out of the archived-only result.
208
- listTreatsDisagreeingHeadsAsActive: () => {
209
- const c = fileCas(sha256)(home);
210
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
211
- const e = evo(c)(cacheKey);
212
- const [state1, root] = virtual(state0)(e.add({ parents: [], subject: 'doc', snapshot: vecToCBase32(vec8(0x42n)) }));
213
- assert(root[0] === 'ok', ['expected root ok', root]);
214
- // The two children differ only in `archived`, which is enough to make
215
- // them distinct blobs, hence two concurrent heads of one root.
216
- const [state2, kept] = virtual(state1)(e.add({ parents: [root[1]], subject: 'doc' }));
217
- assert(kept[0] === 'ok', ['expected the unarchived child ok', kept]);
218
- const [state3, dropped] = virtual(state2)(e.add({ parents: [root[1]], subject: 'doc', archived: true }));
219
- assert(dropped[0] === 'ok', ['expected the archived child ok', dropped]);
220
- const [state4, heads] = virtual(state3)(e.head('doc'));
221
- assertEq(heads.length, 2);
222
- const [state5, active] = virtual(state4)(e.list());
223
- assertEq(active.length, 1);
224
- assertEq(active[0], 'doc');
225
- const [, archived] = virtual(state5)(e.list(true));
226
- assertEq(archived.length, 0);
227
- },
228
- // `archived` is a property of a revision, not of a subject: a subject
229
- // archived at one revision is active again as soon as an unarchived child
230
- // demotes that revision out of the head set.
231
- listIgnoresArchivedRevisionsThatAreNoLongerHeads: () => {
232
- const c = fileCas(sha256)(home);
233
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
234
- const e = evo(c)(cacheKey);
235
- const [state1, root] = virtual(state0)(e.add({ parents: [], subject: 'doc', snapshot: vecToCBase32(vec8(0x45n)), archived: true }));
236
- assert(root[0] === 'ok', ['expected the archived root ok', root]);
237
- const [state2, revived] = virtual(state1)(e.add({ parents: [root[1]], subject: 'doc' }));
238
- assert(revived[0] === 'ok', ['expected the unarchived child ok', revived]);
239
- const [state3, active] = virtual(state2)(e.list());
240
- assertEq(active.length, 1);
241
- assertEq(active[0], 'doc');
242
- const [, archived] = virtual(state3)(e.list(true));
243
- assertEq(archived.length, 0);
244
- },
245
- // A subject can end up with no current head at all, and a status is a
246
- // statement about heads — so such a subject is neither active nor
247
- // archived and belongs to neither result. Nothing verifies that a stored
248
- // blob actually hashes to the key it sits under, so a hand-crafted or
249
- // corrupt store can present a revision naming its own hash as its parent;
250
- // `fixedCas` reproduces exactly that, which a real `fileCas` cannot.
251
- listExcludesSubjectWithNoCurrentHeads: () => {
252
- const selfHash = vec8(0x43n);
253
- const snapshotHash = vecToCBase32(vec8(0x44n));
254
- const text = `{"dialect":"${revisionDialect}","subject":"doc","parents":["${vecToCBase32(selfHash)}"],"snapshot":"${snapshotHash}","generation":1}`;
255
- const bytes = tryUtf8(text);
256
- assert(bytes !== null, 'expected the sample revision text to encode as UTF-8');
257
- const cas = fixedCas([[selfHash, bytes]]);
258
- const [state0, cacheKey] = virtual(emptyState)(initEvo(cas));
259
- const e = evo(cas)(cacheKey);
260
- const [state1, heads] = virtual(state0)(e.head('doc'));
261
- assertEq(heads.length, 0);
262
- const [state2, active] = virtual(state1)(e.list());
263
- assertEq(active.length, 0);
264
- const [, archived] = virtual(state2)(e.list(true));
265
- assertEq(archived.length, 0);
266
- },
267
- // Adding the exact same revision twice yields the same (deduplicated)
268
- // content hash and must not duplicate the head entry.
269
- addRevisionIdempotentOnDuplicateContent: () => {
270
- const c = fileCas(sha256)(home);
271
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
272
- const e = evo(c)(cacheKey);
273
- const input = { parents: [], subject: 'x', snapshot: vecToCBase32(vec8(0x33n)) };
274
- const [state1, r1] = virtual(state0)(e.add(input));
275
- assert(r1[0] === 'ok', ['expected first add ok', r1]);
276
- const [state2, r2] = virtual(state1)(e.add(input));
277
- assert(r2[0] === 'ok', ['expected second add ok', r2]);
278
- assertEq(r1[1], r2[1]);
279
- const [, heads] = virtual(state2)(e.head('x'));
280
- assertEq(heads.length, 1);
281
- },
282
- // Two `add` calls describing the same logical revision but spelling the
283
- // parent reference differently (canonical vs. an accepted uppercase
284
- // alias) must serialize identically and dedupe to one head — otherwise
285
- // `addRevision` itself would be the source of the very spelling drift
286
- // `canonicalHash` exists to prevent.
287
- addRevisionCanonicalizesParentSpellingBeforeSerializing: () => {
288
- const c = fileCas(sha256)(home);
289
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
290
- const e = evo(c)(cacheKey);
291
- const root = { parents: [], subject: 'doc', snapshot: vecToCBase32(vec8(0x2en)) };
292
- const [state1, rootResult] = virtual(state0)(e.add(root));
293
- assert(rootResult[0] === 'ok', ['expected root ok', rootResult]);
294
- const rootHash = rootResult[1];
295
- assert(rootHash !== rootHash.toUpperCase(), 'expected the sample hash to contain letters');
296
- const child1 = { parents: [rootHash], subject: 'doc' };
297
- const [state2, child1Result] = virtual(state1)(e.add(child1));
298
- assert(child1Result[0] === 'ok', ['expected child1 ok', child1Result]);
299
- const child2 = { parents: [rootHash.toUpperCase()], subject: 'doc' };
300
- const [state3, child2Result] = virtual(state2)(e.add(child2));
301
- assert(child2Result[0] === 'ok', ['expected child2 ok', child2Result]);
302
- assertEq(child1Result[1], child2Result[1]);
303
- const [, heads] = virtual(state3)(e.head('doc'));
304
- assertEq(heads.length, 1);
305
- assertEq(heads[0], child1Result[1]);
306
- },
307
- // `subject` omitted with exactly one parent is inherited from that
308
- // parent's own `subject`.
309
- addRevisionResolvesSubjectFromSingleParent: () => {
310
- const c = fileCas(sha256)(home);
311
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
312
- const e = evo(c)(cacheKey);
313
- const root = { parents: [], subject: 'inherit-me', snapshot: vecToCBase32(vec8(0x44n)) };
314
- const [state1, rootResult] = virtual(state0)(e.add(root));
315
- assert(rootResult[0] === 'ok', ['expected root ok', rootResult]);
316
- const rootHash = rootResult[1];
317
- const child = { parents: [rootHash] };
318
- const [state2, childResult] = virtual(state1)(e.add(child));
319
- assert(childResult[0] === 'ok', ['expected child ok', childResult]);
320
- const childHash = childResult[1];
321
- const [, heads] = virtual(state2)(e.head('inherit-me'));
322
- assertEq(heads.length, 1);
323
- assertEq(heads[0], childHash);
324
- },
325
- // `add` writes both inference-derived fields explicitly: a root gets
326
- // `generation` 0 and, with no input `snapshot`, its `subject` (a hash) as
327
- // the snapshot reference; a single-parent child with no input `snapshot`
328
- // inherits the parent's stored snapshot and gets `generation` 1.
329
- addComputesGenerationAndResolvesSnapshot: () => {
330
- const c = fileCas(sha256)(home);
331
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
332
- const e = evo(c)(cacheKey);
333
- const subjectHash = vecToCBase32(vec8(0x71n));
334
- const [state1, rootResult] = virtual(state0)(e.add({ parents: [], subject: subjectHash }));
335
- assert(rootResult[0] === 'ok', ['expected root ok', rootResult]);
336
- const rootHashVec = unwrap(cBase32ToVec(rootResult[1]));
337
- const [state2, root] = virtual(state1)(decodeRevisionBlob(c)(rootHashVec));
338
- assert(root !== null, 'expected the stored root to decode');
339
- assertEq(root?.generation, 0);
340
- assertEq(root?.snapshot, subjectHash);
341
- const [state3, childResult] = virtual(state2)(e.add({ parents: [rootResult[1]], subject: subjectHash }));
342
- assert(childResult[0] === 'ok', ['expected child ok', childResult]);
343
- const childHashVec = unwrap(cBase32ToVec(childResult[1]));
344
- const [, child] = virtual(state3)(decodeRevisionBlob(c)(childHashVec));
345
- assert(child !== null, 'expected the stored child to decode');
346
- assertEq(child?.generation, 1);
347
- assertEq(child?.snapshot, subjectHash);
348
- },
349
- // A merge takes `1 + max(parents' generations)`: a parent at generation 2
350
- // and one at generation 1 yield generation 3.
351
- addComputesMergeGenerationFromMaxOfParents: () => {
352
- const c = fileCas(sha256)(home);
353
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
354
- const e = evo(c)(cacheKey);
355
- const snap = vecToCBase32(vec8(0x72n));
356
- // Mainline chain: root(gen0) → a(gen1) → b(gen2).
357
- const [state1, root] = virtual(state0)(e.add({ parents: [], subject: 'm', snapshot: snap }));
358
- assert(root[0] === 'ok', ['expected root ok', root]);
359
- const [state2, a] = virtual(state1)(e.add({ parents: [root[1]], subject: 'm', snapshot: snap }));
360
- assert(a[0] === 'ok', ['expected a ok', a]);
361
- const [state3, b] = virtual(state2)(e.add({ parents: [a[1]], subject: 'm', snapshot: snap }));
362
- assert(b[0] === 'ok', ['expected b ok', b]);
363
- // Side branch off root: c(gen1).
364
- const [state4, cRev] = virtual(state3)(e.add({ parents: [root[1]], subject: 'm', snapshot: snap }));
365
- assert(cRev[0] === 'ok', ['expected c ok', cRev]);
366
- // Merge of b(gen2) and c(gen1) → gen3.
367
- const [state5, merge] = virtual(state4)(e.add({ parents: [b[1], cRev[1]], subject: 'm', snapshot: snap }));
368
- assert(merge[0] === 'ok', ['expected merge ok', merge]);
369
- const mergeHashVec = unwrap(cBase32ToVec(merge[1]));
370
- const [, mergeRev] = virtual(state5)(decodeRevisionBlob(c)(mergeHashVec));
371
- assert(mergeRev !== null, 'expected the stored merge to decode');
372
- assertEq(mergeRev?.generation, 3);
373
- },
374
- // `generation` is an input field only so a value read back by
375
- // `revision` round-trips into `add` unchanged: `add` never reads it, and
376
- // supplying a wrong one must not reach the stored blob — the revision is
377
- // byte-identical to the same `add` without it.
378
- addIgnoresSuppliedGeneration: () => {
379
- const c = fileCas(sha256)(home);
380
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
381
- const e = evo(c)(cacheKey);
382
- const subjectHash = vecToCBase32(vec8(0x73n));
383
- const [state1, claimed] = virtual(state0)(e.add({ parents: [], subject: subjectHash, generation: 42 }));
384
- assert(claimed[0] === 'ok', ['expected add ok', claimed]);
385
- const [state2, plain] = virtual(state1)(e.add({ parents: [], subject: subjectHash }));
386
- assert(plain[0] === 'ok', ['expected add ok', plain]);
387
- assertEq(claimed[1], plain[1]);
388
- const [, revision] = virtual(state2)(e.revision(claimed[1]));
389
- assert(revision[0] === 'ok', ['expected revision ok', revision]);
390
- assertEq(revision[1].generation, 0);
391
- },
392
- addRevisionSubjectRequiredForZeroParents: () => {
393
- const c = fileCas(sha256)(home);
394
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
395
- const e = evo(c)(cacheKey);
396
- const [, result] = virtual(state0)(e.add({ parents: [] }));
397
- assertEq(result[0], 'error');
398
- assert(result[0] === 'error' && result[1].includes('subject is required'), ['unexpected message', result]);
399
- },
400
- // Zero parents and no input `snapshot`: `resolveSnapshot` falls back to
401
- // `subject` as the reference, which must itself be a hash. A subject with
402
- // characters outside the cbase32 alphabet ('not-a-hash!') therefore has
403
- // nothing to resolve the snapshot to and is an error — the format requires
404
- // an explicit `snapshot`.
405
- addRevisionNonHashSubjectWithoutSnapshotIsError: () => {
406
- const c = fileCas(sha256)(home);
407
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
408
- const e = evo(c)(cacheKey);
409
- const [, result] = virtual(state0)(e.add({ parents: [], subject: 'not-a-hash!' }));
410
- assertEq(result[0], 'error');
411
- assert(result[0] === 'error' && result[1].includes('subject must be a valid hash'), ['unexpected message', result]);
412
- },
413
- addRevisionInvalidParentHashIsError: () => {
414
- const c = fileCas(sha256)(home);
415
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
416
- const e = evo(c)(cacheKey);
417
- const [, result] = virtual(state0)(e.add({ parents: ['not a valid cbase32!'] }));
418
- assertEq(result[0], 'error');
419
- assert(result[0] === 'error' && result[1].includes('invalid parent hash'), ['unexpected message', result]);
420
- },
421
- addRevisionParentNotARevisionIsError: () => {
422
- const c = fileCas(sha256)(home);
423
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
424
- const e = evo(c)(cacheKey);
425
- const missingParent = vecToCBase32(vec8(0x55n));
426
- const [, result] = virtual(state0)(e.add({ parents: [missingParent] }));
427
- assertEq(result[0], 'error');
428
- assert(result[0] === 'error' && result[1].includes('parent is not a revision blob'), ['unexpected message', result]);
429
- },
430
- // An explicit `subject` must not bypass parent validation: a missing
431
- // parent is still an error even though `subject` alone would otherwise
432
- // resolve without looking at any parent.
433
- addRevisionValidatesParentsEvenWithExplicitSubject: () => {
434
- const c = fileCas(sha256)(home);
435
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
436
- const e = evo(c)(cacheKey);
437
- const missingParent = vecToCBase32(vec8(0x66n));
438
- const [, result] = virtual(state0)(e.add({ parents: [missingParent], subject: 'doc' }));
439
- assertEq(result[0], 'error');
440
- assert(result[0] === 'error' && result[1].includes('parent is not a revision blob'), ['unexpected message', result]);
441
- },
442
- // A revision models one step in the evolution of a single subject: a
443
- // parent that actually belongs to a *different* subject must be
444
- // rejected, even though it exists and is a valid revision — otherwise
445
- // the new revision would silently graft onto an unrelated object's
446
- // history, and head demotion (scoped to the child's own subject) would
447
- // never remove the parent from its real subject's head set.
448
- addRevisionRejectsCrossSubjectParent: () => {
449
- const c = fileCas(sha256)(home);
450
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
451
- const e = evo(c)(cacheKey);
452
- const rootA = { parents: [], subject: 'A', snapshot: vecToCBase32(vec8(0x67n)) };
453
- const [state1, rootAResult] = virtual(state0)(e.add(rootA));
454
- assert(rootAResult[0] === 'ok', ['expected rootA ok', rootAResult]);
455
- const [, result] = virtual(state1)(e.add({ parents: [rootAResult[1]], subject: 'B' }));
456
- assertEq(result[0], 'error');
457
- assert(result[0] === 'error' && result[1].includes('different subject'), ['unexpected message', result]);
458
- },
459
- // With multiple parents, a failure on an earlier one short-circuits the
460
- // fold — the second (here, a well-formed but nonexistent) parent is
461
- // never even looked up.
462
- addRevisionShortCircuitsOnFirstInvalidParentAmongMultiple: () => {
463
- const c = fileCas(sha256)(home);
464
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
465
- const e = evo(c)(cacheKey);
466
- const missingParent = vecToCBase32(vec8(0x99n));
467
- const [, result] = virtual(state0)(e.add({ parents: ['not a valid cbase32!', missingParent], subject: 'doc' }));
468
- assertEq(result[0], 'error');
469
- assert(result[0] === 'error' && result[1].includes('invalid parent hash'), ['unexpected message', result]);
470
- },
471
- // Two *valid* parents without an explicit `snapshot` cannot resolve one
472
- // (no single parent snapshot to inherit) — a distinct failure from a
473
- // missing/invalid parent, reported by `resolveSnapshot` at the write
474
- // boundary now that the format requires an explicit `snapshot`.
475
- addRevisionInvalidReferencesIsError: () => {
476
- const c = fileCas(sha256)(home);
477
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
478
- const e = evo(c)(cacheKey);
479
- const rootA = { parents: [], subject: 'merge', snapshot: vecToCBase32(vec8(0x77n)) };
480
- const [state1, rootAResult] = virtual(state0)(e.add(rootA));
481
- assert(rootAResult[0] === 'ok', ['expected rootA ok', rootAResult]);
482
- const rootB = { parents: [], subject: 'merge', snapshot: vecToCBase32(vec8(0x88n)) };
483
- const [state2, rootBResult] = virtual(state1)(e.add(rootB));
484
- assert(rootBResult[0] === 'ok', ['expected rootB ok', rootBResult]);
485
- const [, result] = virtual(state2)(e.add({ parents: [rootAResult[1], rootBResult[1]], subject: 'merge' }));
486
- assertEq(result[0], 'error');
487
- assert(result[0] === 'error' && !result[1].includes('parent is not a revision blob'), ['unexpected message', result]);
488
- },
489
- addRevisionTooLargeToEncodeIsError: () => {
490
- const c = fileCas(sha256)(home);
491
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
492
- const e = evo(c)(cacheKey);
493
- const hugeSubject = 'x'.repeat(200_000);
494
- const input = { parents: [], subject: hugeSubject, snapshot: vecToCBase32(vec8(0x88n)) };
495
- const [, result] = virtual(state0)(e.add(input));
496
- assertEq(result[0], 'error');
497
- assert(result[0] === 'error' && result[1] === 'revision too large to encode', ['unexpected message', result]);
498
- },
499
- addRevisionWriteFailureIsError: () => {
500
- const [, cacheKey] = virtual(emptyState)(initEvo(writeFailingCas));
501
- const e = evo(writeFailingCas)(cacheKey);
502
- const [, result] = virtual(emptyState)(e.add({ parents: [], subject: vecToCBase32(vec8(0x99n)) }));
503
- assertEq(result[0], 'error');
504
- assert(result[0] === 'error' && result[1] === 'failed to write revision to CAS', ['unexpected message', result]);
505
- },
506
- // Every way `revision` can fail is its own message, not one `null`: an
507
- // undecodable hash, a hash the store has nothing under, a read that failed
508
- // for any other reason, and a blob that is not a revision.
509
- // `decodeRevisionBlob` collapses all but the first (it exists to scan
510
- // stores of arbitrary content); this read keeps them apart.
511
- revisionInvalidHashIsError: () => {
512
- const c = fileCas(sha256)(home);
513
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
514
- const e = evo(c)(cacheKey);
515
- const [, result] = virtual(state0)(e.revision('not a valid cbase32!'));
516
- assertEq(result[0], 'error');
517
- assert(result[0] === 'error' && result[1].includes('invalid hash'), ['unexpected message', result]);
518
- },
519
- revisionMissingHashIsError: () => {
520
- const c = fileCas(sha256)(home);
521
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
522
- const e = evo(c)(cacheKey);
523
- const [, result] = virtual(state0)(e.revision(vecToCBase32(vec8(0x9an))));
524
- assertEq(result[0], 'error');
525
- assert(result[0] === 'error' && result[1].includes('revision not found'), ['unexpected message', result]);
526
- },
527
- // Regression: a read failure that is not a missing shard — a permission or
528
- // mid-stream I/O error, or a blob too large to buffer into one `Vec` —
529
- // must not be reported as "not found". The blob may well be there; saying
530
- // it is absent would be a false answer, not merely a vague one.
531
- revisionReadFailureIsNotReportedAsMissing: () => {
532
- const [state0, cacheKey] = virtual(emptyState)(initEvo(readFailingCas));
533
- const e = evo(readFailingCas)(cacheKey);
534
- const [, result] = virtual(state0)(e.revision(vecToCBase32(vec8(0x9bn))));
535
- assertEq(result[0], 'error');
536
- assert(result[0] === 'error' && result[1].includes('failed to read revision'), ['unexpected message', result]);
537
- },
538
- revisionNonRevisionBlobIsError: () => {
539
- const c = fileCas(sha256)(home);
540
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
541
- const e = evo(c)(cacheKey);
542
- const content = vec8(0x41n); // 'A' — valid UTF-8, not revision JSON
543
- const [state1, w] = virtual(state0)(c.write(nonEmpty(ok(content), elEmpty())));
544
- assert(w[0] === 'ok', ['expected write ok', w]);
545
- const [, result] = virtual(state1)(e.revision(vecToCBase32(w[1])));
546
- assertEq(result[0], 'error');
547
- assert(result[0] === 'error' && result[1].includes('not a revision blob'), ['unexpected message', result]);
548
- },
549
- // A blob written by somebody else can spell its references in any accepted
550
- // cbase32 alias (case, `i`/`l`/`o`). What `revision` returns is
551
- // canonicalized, so a client can compare it against `head` output
552
- // directly instead of knowing about cbase32 aliasing.
553
- revisionCanonicalizesReferenceSpellings: () => {
554
- const c = fileCas(sha256)(home);
555
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
556
- const e = evo(c)(cacheKey);
557
- const parentCanonical = vecToCBase32(vec8(0xffn));
558
- const snapshotCanonical = vecToCBase32(vec8(0xfen));
559
- const parentAlias = parentCanonical.toUpperCase();
560
- const snapshotAlias = snapshotCanonical.toUpperCase();
561
- assert(parentAlias !== parentCanonical && snapshotAlias !== snapshotCanonical, 'expected the sample hashes to contain letters');
562
- const text = `{"dialect":"${revisionDialect}","subject":"doc","parents":["${parentAlias}"],"snapshot":"${snapshotAlias}","generation":1}`;
563
- const bytes = tryUtf8(text);
564
- assert(bytes !== null, 'expected the sample revision text to encode as UTF-8');
565
- const [state1, w] = virtual(state0)(c.write(nonEmpty(ok(bytes), elEmpty())));
566
- assert(w[0] === 'ok', ['expected write ok', w]);
567
- const [, result] = virtual(state1)(e.revision(vecToCBase32(w[1])));
568
- assert(result[0] === 'ok', ['expected revision ok', result]);
569
- assertEq(result[1].parents.length, 1);
570
- assertEq(result[1].parents[0], parentCanonical);
571
- assertEq(result[1].snapshot, snapshotCanonical);
572
- assertEq(result[1].subject, 'doc');
573
- assertEq(result[1].archived, undefined);
574
- },
575
- // What you add is what you get back: every field of a stored revision
576
- // comes back in the same `RevisionData` shape `add` takes, so the value
577
- // can be added again unchanged — same content, same hash.
578
- revisionRoundTripsThroughAdd: () => {
579
- const c = fileCas(sha256)(home);
580
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
581
- const e = evo(c)(cacheKey);
582
- const subjectHash = vecToCBase32(vec8(0x74n));
583
- const [state1, root] = virtual(state0)(e.add({ parents: [], subject: subjectHash }));
584
- assert(root[0] === 'ok', ['expected root ok', root]);
585
- const [state2, child] = virtual(state1)(e.add({ parents: [root[1]], archived: true }));
586
- assert(child[0] === 'ok', ['expected child ok', child]);
587
- const [state3, result] = virtual(state2)(e.revision(child[1]));
588
- assert(result[0] === 'ok', ['expected revision ok', result]);
589
- assertEq(result[1].subject, subjectHash);
590
- assertEq(result[1].snapshot, subjectHash);
591
- assertEq(result[1].generation, 1);
592
- assertEq(result[1].archived, true);
593
- assertEq(result[1].parents.length, 1);
594
- assertEq(result[1].parents[0], root[1]);
595
- const [, readded] = virtual(state3)(e.add(result[1]));
596
- assert(readded[0] === 'ok', ['expected re-add ok', readded]);
597
- assertEq(readded[1], child[1]);
598
- },
599
- revisionLockRoundTripsAndCanonicalizes: () => {
600
- const c = fileCas(sha256)(home);
601
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
602
- const e = evo(c)(cacheKey);
603
- const canonical = vecToCBase32(vec8(0xffn));
604
- const alias = canonical.toUpperCase();
605
- const [state1, added] = virtual(state0)(e.add({
606
- parents: [], subject: 'doc', snapshot: canonical,
607
- lock: { dependency: alias },
608
- }));
609
- assert(added[0] === 'ok', ['expected add ok', added]);
610
- const [, result] = virtual(state1)(e.revision(added[1]));
611
- assert(result[0] === 'ok', ['expected revision ok', result]);
612
- assertEq(result[1].lock?.dependency, canonical);
613
- },
614
- revisionAbsentAndEmptyLocksRemainDistinct: () => {
615
- const c = fileCas(sha256)(home);
616
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
617
- const e = evo(c)(cacheKey);
618
- const snapshot = vecToCBase32(vec8(0x42n));
619
- const [state1, absent] = virtual(state0)(e.add({ parents: [], subject: 'absent', snapshot }));
620
- assert(absent[0] === 'ok', ['expected add ok', absent]);
621
- const [state2, empty] = virtual(state1)(e.add({ parents: [], subject: 'empty', snapshot, lock: {} }));
622
- assert(empty[0] === 'ok', ['expected add ok', empty]);
623
- const [state3, absentRead] = virtual(state2)(e.revision(absent[1]));
624
- assert(absentRead[0] === 'ok', ['expected revision ok', absentRead]);
625
- const [, emptyRead] = virtual(state3)(e.revision(empty[1]));
626
- assert(emptyRead[0] === 'ok', ['expected revision ok', emptyRead]);
627
- assertEq(absentRead[1].lock, undefined);
628
- assertEq(Object.keys(emptyRead[1].lock ?? {}).length, 0);
629
- },
630
- revisionInvalidLockValueIsRejected: () => {
631
- const c = fileCas(sha256)(home);
632
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
633
- const e = evo(c)(cacheKey);
634
- const [, result] = virtual(state0)(e.add({
635
- parents: [], subject: 'doc', snapshot: vecToCBase32(vec8(0x42n)),
636
- lock: { dependency: 'not a hash!' },
637
- }));
638
- assertEq(result[0], 'error');
639
- },
640
- equivalentLockOrdersReuseOneCasAddress: () => {
641
- const c = fileCas(sha256)(home);
642
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
643
- const e = evo(c)(cacheKey);
644
- const a = vecToCBase32(vec8(0x1an));
645
- const b = vecToCBase32(vec8(0x2bn));
646
- const snapshot = vecToCBase32(vec8(0x3cn));
647
- const [state1, first] = virtual(state0)(e.add({ parents: [], subject: 'doc', snapshot, lock: { '2': b, '10': a } }));
648
- assert(first[0] === 'ok', ['expected add ok', first]);
649
- const [, second] = virtual(state1)(e.add({ lock: { '10': a, '2': b }, snapshot, subject: 'doc', parents: [] }));
650
- assert(second[0] === 'ok', ['expected add ok', second]);
651
- assertEq(second[1], first[1]);
652
- },
653
- // A raw CAS write (e.g. `cas_add`) of valid revision content is folded
654
- // into the cache exactly as `addRevision` would, without going through
655
- // `evo.add` — this is what keeps `cas_add` and `evo_add` writes to the
656
- // same store consistent (see `fjs/mcp`).
657
- syncRevisionFoldsValidRevisionIntoCache: () => {
658
- const c = fileCas(sha256)(home);
659
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
660
- const subjectHash = vecToCBase32(vec8(0x13n));
661
- const text = `{"dialect":"${revisionDialect}","subject":"${subjectHash}","parents":[],"snapshot":"${subjectHash}","generation":0}`;
662
- const bytes = tryUtf8(text);
663
- assert(bytes !== null, 'expected sample revision to encode as UTF-8');
664
- const hashVec = vec8(0x14n);
665
- const [state1] = virtual(state0)(syncRevision(cacheKey)(hashVec)(bytes));
666
- const [, heads] = virtual(state1)(evo(c)(cacheKey).head(subjectHash));
667
- assertEq(heads.length, 1);
668
- assertEq(heads[0], vecToCBase32(hashVec));
669
- },
670
- syncRevisionIgnoresNonRevisionContent: () => {
671
- const c = fileCas(sha256)(home);
672
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
673
- const [state1] = virtual(state0)(syncRevision(cacheKey)(vec8(0x15n))(vec8(0x41n)));
674
- const [, subjects] = virtual(state1)(evo(c)(cacheKey).list());
675
- assertEq(subjects.length, 0);
676
- },
677
- evoHeadUnknownSubjectIsEmpty: () => {
678
- const c = fileCas(sha256)(home);
679
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
680
- const e = evo(c)(cacheKey);
681
- const [, heads] = virtual(state0)(e.head('nope'));
682
- assertEq(heads.length, 0);
683
- },
684
- // Regression: subjects are arbitrary caller-supplied strings, so one can
685
- // collide with an inherited `Object.prototype` name. Plain bracket
686
- // indexing on the `bySubject` map would return the inherited value
687
- // (e.g. the `toString` function) instead of "no entry yet", crashing on
688
- // `.hashes` — the cache must use an own-property lookup instead.
689
- evoHeadUnknownPrototypeNamedSubjectIsEmpty: () => {
690
- const c = fileCas(sha256)(home);
691
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
692
- const e = evo(c)(cacheKey);
693
- const [, heads] = virtual(state0)(e.head('constructor'));
694
- assertEq(heads.length, 0);
695
- },
696
- evoAddAndHeadHandlePrototypeNamedSubject: () => {
697
- const c = fileCas(sha256)(home);
698
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
699
- const e = evo(c)(cacheKey);
700
- const input = { parents: [], subject: 'toString', snapshot: vecToCBase32(vec8(0x16n)) };
701
- const [state1, result] = virtual(state0)(e.add(input));
702
- assert(result[0] === 'ok', ['expected add ok', result]);
703
- const [, heads] = virtual(state1)(e.head('toString'));
704
- assertEq(heads.length, 1);
705
- assertEq(heads[0], result[1]);
706
- },
707
- };