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
@@ -0,0 +1,563 @@
1
+ /**
2
+ * Evo API: subjects and revision heads, cached in memory over an immutable
3
+ * content-addressable store.
4
+ *
5
+ * A `Cas<O>` stores `vnd.fjs.revision` blobs ([`fjs/media/revision`](../../media/revision/module.f.mjs))
6
+ * like any other content: as immutable bytes under a hash. Resolving "what
7
+ * are the current heads of subject X" from that store means walking every
8
+ * stored revision and reversing the parent links — too expensive to redo on
9
+ * every query. This module scans the store once into an in-memory `Cache`
10
+ * ([`fjs/effects/memory`](../../effects/memory/module.f.mjs)) mapping subject →
11
+ * head hashes, then keeps the cache current as new revisions are `add`ed
12
+ * through it — or, for a revision stored some other way (e.g. the generic
13
+ * `cas_add` MCP tool), via {@link syncRevision}.
14
+ *
15
+ * A **head** of a subject is any stored revision of that subject whose hash
16
+ * is not referenced as a `parents` entry by another revision of the same
17
+ * subject (see [`fjs/media/revision/README.md`](../../media/revision/README.md)).
18
+ * `Cache` therefore tracks, per subject, every revision hash seen and every
19
+ * hash referenced as somebody's parent; heads are the set difference between
20
+ * the two, computed at read time ({@link headsOf}). Alongside them it records
21
+ * which of the seen revisions are `archived`, so {@link Evo.list} can classify
22
+ * a subject as active or archived from its heads' flags
23
+ * ({@link subjectListed}) without touching the store. Storing both sets rather
24
+ * than a running head list is what makes folding revisions truly order
25
+ * independent: `cas.list()` (used by {@link buildCache} to scan an existing
26
+ * store) returns hashes in hash order, not revision ancestry, so a child can
27
+ * be seen before its parent — an incremental "drop this hash from the head
28
+ * set, then re-add whichever hash we just saw" would wrongly resurrect the
29
+ * parent as a head once it is scanned after its child. Tracking the two sets
30
+ * separately and only subtracting at read time has no such ordering
31
+ * dependency: whichever order revisions are folded in, `hashes − parents`
32
+ * converges to the same result. {@link buildCache} and {@link addRevision}
33
+ * both fold through the same {@link addRevisionToCache}, the former over the
34
+ * whole store at once, the latter incrementally for one new revision.
35
+ *
36
+ * Not everything here is cache-backed: {@link readRevision} answers "what is
37
+ * the revision at this hash" straight from the store, decoded, validated, and
38
+ * with every hash canonicalized ({@link toRevisionData}). It is the typed
39
+ * counterpart of a raw blob read — {@link addRevision} validates on the way
40
+ * in, {@link readRevision} on the way out — and both speak the same
41
+ * {@link RevisionData} vocabulary.
42
+ *
43
+ * @module
44
+ *
45
+ * @import { Effect, Operation } from '../../effects/types.ts'
46
+ * @import { Key, MemOp } from '../../effects/memory/types.ts'
47
+ * @import { Cas } from '../types.ts'
48
+ * @import { Ok, Result } from '../../types/result/types.ts'
49
+ * @import { Vec } from '../../types/bit_vec/types.ts'
50
+ * @import { IoResult } from '../../effects/node/types.ts'
51
+ * @import { List } from '../../effects/list/types.ts'
52
+ * @import { LockMap, Revision } from '../../media/revision/types.ts'
53
+ * @import { Hash, Subject, RevisionData, SubjectState, Cache, Evo } from './types.ts'
54
+ */
55
+
56
+ import { pure, foldStep, mapStep, step } from '../../effects/module.f.mjs'
57
+ import { create, read, write } from '../../effects/memory/module.f.mjs'
58
+ import { collectRead } from '../module.f.mjs'
59
+ import { cBase32ToVec, vecToCBase32 } from '../../basen/cbase32/module.f.mjs'
60
+ import { fromVec } from '../../text/utf8/module.f.mjs'
61
+ import { tryUtf8 } from '../../text/module.f.mjs'
62
+ import { ok, error, okThen } from '../../types/result/module.f.mjs'
63
+ import { nonEmpty, empty as elEmpty } from '../../effects/list/module.f.mjs'
64
+ import { at, definedEntries } from '../../types/object/module.f.mjs'
65
+ import { unwrap } from '../../types/nullable/module.f.mjs'
66
+ import { isNotFound } from '../../effects/node/module.f.mjs'
67
+ import { decodeText, encodeText, dialect, checkReferences, isHash } from '../../media/revision/module.f.mjs'
68
+
69
+ /** A cache with no known subjects yet — the starting point for {@link buildCache}. */
70
+ export const emptyCache = /** @type {Cache} */ ({ bySubject: {} })
71
+
72
+ /** @type {SubjectState} */
73
+ const emptySubjectState = { hashes: [], parents: [], archived: [] }
74
+
75
+ /** Adds every item of `items` to `set` that isn't already there, preserving `set`'s existing order.
76
+ * @type {(set: readonly Hash[]) => (items: readonly Hash[]) => readonly Hash[]}
77
+ */
78
+ const union = set => items =>
79
+ items.reduce((/** @type {readonly Hash[]} */ acc, h) => acc.includes(h) ? acc : [...acc, h], set)
80
+
81
+ /**
82
+ * Re-encodes `h` in its canonical cBase32 spelling. `cBase32ToVec` accepts
83
+ * more than one spelling of the same hash (e.g. case, or alphabet aliases),
84
+ * but {@link headsOf} compares hash strings directly, so a parent reference
85
+ * recorded in a non-canonical spelling would never match the canonical
86
+ * spelling a revision's own hash is always recorded under ({@link
87
+ * addRevisionToCache}'s `hash` parameter is always produced by
88
+ * `vecToCBase32`) — silently keeping a demoted revision listed as a head.
89
+ * Every caller of this module reaches {@link addRevisionToCache} only with a
90
+ * `revision` whose `parents` already passed `isHash`
91
+ * (`fjs/media/revision` `checkReferences`), so decoding here cannot fail.
92
+ * @type {(h: Hash) => Hash}
93
+ */
94
+ const canonicalHash = h => vecToCBase32(unwrap(cBase32ToVec(h)))
95
+
96
+ /** Canonicalizes every direct hash in a structurally validated flat lock map.
97
+ * @type {(lock: LockMap) => LockMap}
98
+ */
99
+ const canonicalLock = lock =>
100
+ Object.fromEntries(definedEntries(lock).map(([subject, hash]) => [subject, canonicalHash(hash)]))
101
+
102
+ /** A subject's current heads: revision hashes seen that no other revision of the same subject names as a parent.
103
+ * @type {(state: SubjectState) => readonly Hash[]}
104
+ */
105
+ const headsOf = state =>
106
+ state.hashes.filter(h => !state.parents.includes(h))
107
+
108
+ /**
109
+ * Whether a subject in `state` belongs in {@link Evo.list}'s result for the
110
+ * given `archived` filter — the subject-level status derived from its
111
+ * revision-level `archived` flags:
112
+ *
113
+ * - **active** — at least one current head is not archived. This is the
114
+ * default result set (`archived` omitted).
115
+ * - **archived** — the subject has at least one current head and every one of
116
+ * them is archived (`archived: true`).
117
+ *
118
+ * Concurrent heads can disagree, and the two rules resolve that the same way:
119
+ * one unarchived head keeps the whole subject active, because a subject is
120
+ * only done evolving when nothing left to build on remains. A subject with no
121
+ * current heads is neither active nor archived and appears in no result — the
122
+ * status is a statement about heads, and there is nothing to state. That case
123
+ * needs the explicit `heads.length` test only in the archived branch, since
124
+ * "every head is archived" is vacuously true of no heads at all.
125
+ * @type {(archived: true | undefined) => (state: SubjectState) => boolean}
126
+ */
127
+ const subjectListed = archived => state => {
128
+ const heads = headsOf(state)
129
+ const unarchived = heads.filter(h => !state.archived.includes(h))
130
+ return archived === undefined
131
+ ? unarchived.length !== 0
132
+ : heads.length !== 0 && unarchived.length === 0
133
+ }
134
+
135
+ /**
136
+ * Folds one more stored revision into `cache`: `hash` joins its subject's
137
+ * `hashes` set, `revision.parents` (canonicalized, see {@link canonicalHash})
138
+ * join its `parents` set, and `hash` also joins the `archived` set when the
139
+ * revision carries `archived: true`. Order independent (see the module doc) —
140
+ * used both for a full-store scan and for a single incremental `add`.
141
+ *
142
+ * Looks `revision.subject` up via {@link at} (own-property only), not plain
143
+ * bracket indexing: a subject is an arbitrary caller-supplied string
144
+ * (`RevisionData.subject`, or the MCP `evo_add`/`evo_head` argument), so it
145
+ * can collide with an inherited `Object.prototype` name (`toString`,
146
+ * `constructor`, …) — bracket indexing would then return that inherited
147
+ * value instead of "no entry yet" and crash on the (non-array) `.hashes`
148
+ * access below.
149
+ * @type {(hash: Hash, revision: Revision) => (cache: Cache) => Cache}
150
+ */
151
+ const addRevisionToCache = (hash, revision) => cache => {
152
+ const existing = at(revision.subject)(cache.bySubject) ?? emptySubjectState
153
+ /** @type {SubjectState} */
154
+ const state = {
155
+ hashes: union(existing.hashes)([hash]),
156
+ parents: union(existing.parents)(revision.parents.map(canonicalHash)),
157
+ archived: union(existing.archived)(revision.archived === undefined ? [] : [hash]),
158
+ }
159
+ return { bySubject: { ...cache.bySubject, [revision.subject]: state } }
160
+ }
161
+
162
+ /**
163
+ * Decodes already-read bytes as a `vnd.fjs.revision`. Returns `null` for
164
+ * anything that is not a valid revision — bytes that are not valid UTF-8, or
165
+ * text that does not parse/validate as the dialect.
166
+ * @type {(value: Vec) => Revision | null}
167
+ */
168
+ export const decodeRevisionVec = value => {
169
+ const text = fromVec(value)
170
+ if (text === null) { return null }
171
+ const [decodeTag, revision] = decodeText(text)
172
+ return decodeTag === 'error' ? null : revision
173
+ }
174
+
175
+ /**
176
+ * Reads and decodes the blob at `hash` as a `vnd.fjs.revision`. Returns
177
+ * `null` for anything that is not a valid revision — a missing hash, or (via
178
+ * {@link decodeRevisionVec}) bytes that are not valid UTF-8 or do not
179
+ * parse/validate as the dialect — so a store containing arbitrary other
180
+ * content can be scanned without failing the whole cache build.
181
+ *
182
+ * @template {Operation} O
183
+ * @param {Cas<O>} cas
184
+ * @returns {(hash: Vec) => Effect<O, Revision | null>}
185
+ */
186
+ export const decodeRevisionBlob = cas => hash =>
187
+ mapStep(
188
+ collectRead(cas.read(hash)),
189
+ ([tag, value]) => tag === 'error' ? null : decodeRevisionVec(value))
190
+
191
+ /**
192
+ * Scans every hash in `cas` and builds a fresh {@link Cache} from the
193
+ * `vnd.fjs.revision` blobs found among them. Non-revision blobs are ignored.
194
+ *
195
+ * @template {Operation} O
196
+ * @param {Cas<O>} cas
197
+ * @returns {Effect<O, Cache>}
198
+ */
199
+ export const buildCache = cas =>
200
+ foldStep(
201
+ cas.list(),
202
+ emptyCache,
203
+ hash => cache =>
204
+ mapStep(
205
+ decodeRevisionBlob(cas)(hash),
206
+ revision =>
207
+ revision === null ? cache : addRevisionToCache(vecToCBase32(hash), revision)(cache)))
208
+
209
+ /**
210
+ * Scans `cas` once and allocates a memory slot holding the resulting {@link Cache}.
211
+ *
212
+ * @template {Operation} O
213
+ * @param {Cas<O>} cas
214
+ * @returns {Effect<O | MemOp, Key<Cache>>}
215
+ */
216
+ export const initEvo = cas =>
217
+ step(buildCache(cas), cache => create(cache))
218
+
219
+ /** Reads, then rewrites, the cache at `cacheKey` with `revision` folded in at `hash`.
220
+ * @type {(cacheKey: Key<Cache>) => (hash: Hash) => (revision: Revision) => Effect<MemOp, void>}
221
+ */
222
+ const foldIntoCache = cacheKey => hash => revision =>
223
+ step(read(cacheKey), cache => write(cacheKey, addRevisionToCache(hash, revision)(cache)))
224
+
225
+ /**
226
+ * Folds `value` — bytes already written to a `Cas` at `hash` by some other
227
+ * caller — into the cache at `cacheKey` if it decodes as a `vnd.fjs.revision`
228
+ * ({@link decodeRevisionVec}); a no-op otherwise. `cas_add`/`evo_add`
229
+ * (`fjs/mcp`) are two ways to reach the same store — a plain `cas_add`
230
+ * call can store a revision blob without going through {@link addRevision},
231
+ * and this is what keeps the cache honest about it without rescanning the
232
+ * whole store.
233
+ * @type {(cacheKey: Key<Cache>) => (hash: Vec) => (value: Vec) => Effect<MemOp, void>}
234
+ */
235
+ export const syncRevision = cacheKey => hash => value => {
236
+ const revision = decodeRevisionVec(value)
237
+ return revision === null ? pure(undefined) : foldIntoCache(cacheKey)(vecToCBase32(hash))(revision)
238
+ }
239
+
240
+ /**
241
+ * Resolves and validates one `parents` entry: the hash must decode as
242
+ * cBase32 and the blob it names must itself be a `vnd.fjs.revision`. Used
243
+ * unconditionally for every parent — even when `subject` is given explicitly
244
+ * — so `add` never stores a revision whose declared parent is missing or not
245
+ * a revision.
246
+ *
247
+ * @template {Operation} O
248
+ * @param {Cas<O>} cas
249
+ * @returns {(parentRef: Hash) => Effect<O, Result<Revision, string>>}
250
+ */
251
+ const resolveParent = cas => parentRef => {
252
+ const parentHash = cBase32ToVec(parentRef)
253
+ if (parentHash === null) {
254
+ return pure(error(`invalid parent hash: ${parentRef}`))
255
+ }
256
+ return mapStep(
257
+ decodeRevisionBlob(cas)(parentHash),
258
+ parent => parent === null ? error(`parent is not a revision blob: ${parentRef}`) : ok(parent))
259
+ }
260
+
261
+ /**
262
+ * Resolves and validates every entry of `parents`, in order, short-circuiting on the first failure.
263
+ *
264
+ * @template {Operation} O
265
+ * @param {Cas<O>} cas
266
+ * @returns {(parents: readonly Hash[]) => Effect<O, Result<readonly Revision[], string>>}
267
+ */
268
+ const resolveParents = cas => parents => {
269
+ /** @type {Result<readonly Revision[], string>} */
270
+ const init = ok([])
271
+ return foldStep(
272
+ pure(parents),
273
+ init,
274
+ parentRef => (/** @type {Result<readonly Revision[], string>} */ acc) => {
275
+ if (acc[0] === 'error') { return pure(acc) }
276
+ return mapStep(
277
+ resolveParent(cas)(parentRef),
278
+ (/** @type {Result<Revision, string>} */ parentResult) =>
279
+ /** @type {Result<readonly Revision[], string>} */
280
+ (parentResult[0] === 'error' ? parentResult : ok([...acc[1], parentResult[1]])))
281
+ })
282
+ }
283
+
284
+ /**
285
+ * Resolves the `subject` of a new revision from its already-resolved
286
+ * `parents`: the caller's explicit `subject` when given, otherwise the
287
+ * single parent's own `subject` (a revision does not carry its own
288
+ * subject-inheritance rule the way `snapshot` does, so this is derived
289
+ * explicitly). More or fewer than one parent without an explicit `subject`
290
+ * cannot be resolved.
291
+ * @type {(input: RevisionData) => (parents: readonly Revision[]) => Result<Subject, string>}
292
+ */
293
+ const resolveSubject = input => parents => {
294
+ if (input.subject !== undefined) { return ok(input.subject) }
295
+ if (parents.length !== 1) {
296
+ return error('subject is required unless there is exactly one parent to inherit it from')
297
+ }
298
+ return ok(parents[0].subject)
299
+ }
300
+
301
+ /**
302
+ * Checks that every already-resolved parent belongs to `subject`. A revision
303
+ * models one step in the evolution of a single mutable object, so a parent
304
+ * from a different subject would silently graft the new revision (and any
305
+ * inherited `snapshot`) onto an unrelated object's history; head demotion is
306
+ * also scoped to `revision.subject` ({@link addRevisionToCache}), so a
307
+ * cross-subject parent would never even leave its own subject's head set —
308
+ * this must be rejected rather than merely producing a head mismatch later.
309
+ * @type {(subject: Subject) => (parents: readonly Revision[]) => Result<void, string>}
310
+ */
311
+ const validateParentSubjects = subject => parents => {
312
+ const mismatch = parents.find(p => p.subject !== subject)
313
+ return mismatch === undefined
314
+ ? ok(undefined)
315
+ : error(`parent belongs to a different subject (${mismatch.subject}), expected ${subject}`)
316
+ }
317
+
318
+ /**
319
+ * Resolves the `snapshot` of a new revision — the inference the
320
+ * `vnd.fjs.revision` format used to carry, now run once at the write boundary
321
+ * with the parents already resolved and written explicitly into the stored
322
+ * blob (which requires `snapshot`; see `fjs/media/revision`). The caller's
323
+ * explicit `snapshot` is used as-is when given; otherwise zero parents fall
324
+ * back to `subject` as the snapshot reference (which must then be a hash),
325
+ * exactly one parent inherits that parent's stored `snapshot`, and more than
326
+ * one parent without an explicit `snapshot` cannot be resolved — there is no
327
+ * single parent snapshot to inherit, and falling back to `subject` would
328
+ * silently lose the merge result.
329
+ * @type {(input: RevisionData) => (subject: Subject) => (parents: readonly Revision[]) => Result<Hash, string>}
330
+ */
331
+ const resolveSnapshot = input => subject => parents => {
332
+ if (input.snapshot !== undefined) { return ok(input.snapshot) }
333
+ if (parents.length === 0) {
334
+ return isHash(subject)
335
+ ? ok(subject)
336
+ : error(`subject must be a valid hash when snapshot is omitted and there are no parents: ${subject}`)
337
+ }
338
+ if (parents.length === 1) { return ok(parents[0].snapshot) }
339
+ return error('snapshot is required when a revision has more than one parent')
340
+ }
341
+
342
+ /**
343
+ * The authoritative `generation` of a new revision: `0` for a root
344
+ * (`parents: []`), else `1 + max(parents' generations)`. Computed here from
345
+ * the already-decoded parents, never taken from input — everything evo writes
346
+ * follows the formula by construction (see the `generation` semantics in
347
+ * [`fjs/media/revision/README.md`](../../media/revision/README.md), where a
348
+ * deviation is a readable epoch-reset signal rather than an invalid blob).
349
+ *
350
+ * The max is a `reduce`, not `Math.max(...parents.map(...))`: `parents` is
351
+ * caller-sized (the direct API or the `evo_add` MCP tool), and argument-spread
352
+ * of a large array overflows the JS call stack with a `RangeError` before the
353
+ * documented `Result` error path can run — a `reduce` has no such limit.
354
+ * @type {(parents: readonly Revision[]) => number}
355
+ */
356
+ const computeGeneration = parents =>
357
+ parents.length === 0 ? 0 : 1 + parents.reduce((max, p) => Math.max(max, p.generation), 0)
358
+
359
+ /**
360
+ * The pure half of {@link addRevision}: turns already-resolved `parents` into
361
+ * the exact `Revision` that will be stored, or the first reason it cannot be.
362
+ *
363
+ * Resolves `subject` ({@link resolveSubject}) and checks every parent belongs
364
+ * to it ({@link validateParentSubjects}), resolves `snapshot`
365
+ * ({@link resolveSnapshot}) and computes `generation`
366
+ * ({@link computeGeneration}), assembles the `Revision` and checks its hash /
367
+ * generation semantics (`fjs/media/revision` `checkReferences` — the same rule
368
+ * a reader applies; the shape itself is already guaranteed by the field types
369
+ * here), then canonicalizes it.
370
+ *
371
+ * Canonicalizing parent/snapshot spellings is only safe once `checkReferences`
372
+ * has confirmed they decode, which makes the `unwrap` inside
373
+ * {@link canonicalHash} safe. It is not optional: two `add` calls describing
374
+ * the same logical revision but spelled differently (case, `i`/`l`/`o`
375
+ * aliases) must serialize identically, or they would produce two distinct CAS
376
+ * blobs that both remain heads — the point of `canonicalHash` (see the module
377
+ * doc) is defeated if this module itself writes non-canonical spellings.
378
+ *
379
+ * Separate from {@link addRevision} because none of it touches the store:
380
+ * everything up to the bytes is a plain `Result` pipeline, so `addRevision` is
381
+ * left holding only the encode, the write, and the cache fold. Each step also
382
+ * reads values resolved by earlier ones, which is why the guards are a flat
383
+ * sequence rather than an `okThen` chain — see `okThen`'s own note in
384
+ * [`fjs/types/result`](../../types/result/module.f.mjs).
385
+ *
386
+ * @param {RevisionData} input
387
+ * @returns {(parents: readonly Revision[]) => Result<Revision, string>}
388
+ */
389
+ const buildRevision = input => parents => {
390
+ const subjectResult = resolveSubject(input)(parents)
391
+ if (subjectResult[0] === 'error') { return subjectResult }
392
+ const subject = subjectResult[1]
393
+ const parentSubjectsResult = validateParentSubjects(subject)(parents)
394
+ if (parentSubjectsResult[0] === 'error') { return parentSubjectsResult }
395
+ const snapshotResult = resolveSnapshot(input)(subject)(parents)
396
+ if (snapshotResult[0] === 'error') { return snapshotResult }
397
+ /** @type {Revision} */
398
+ const revision = {
399
+ dialect,
400
+ subject,
401
+ parents: input.parents,
402
+ snapshot: snapshotResult[1],
403
+ generation: computeGeneration(parents),
404
+ archived: input.archived,
405
+ lock: input.lock,
406
+ }
407
+ const referencesResult = checkReferences(revision)
408
+ if (referencesResult[0] === 'error') { return referencesResult }
409
+ return ok({
410
+ ...revision,
411
+ parents: revision.parents.map(canonicalHash),
412
+ snapshot: canonicalHash(revision.snapshot),
413
+ lock: revision.lock === undefined ? undefined : canonicalLock(revision.lock),
414
+ })
415
+ }
416
+
417
+ /**
418
+ * Adds a new revision to `cas` and folds it into the cache at `cacheKey`.
419
+ *
420
+ * Steps: resolve and validate every parent ({@link resolveParents}), derive
421
+ * the revision to store from them ({@link buildRevision}), then encode it,
422
+ * write it to `cas`, and fold it into the cache. Every failure — an invalid
423
+ * or missing parent, a cross-subject parent, an unresolvable subject or
424
+ * snapshot, an invalid revision, a blob too large to encode, or a store write
425
+ * failure — is reported as `error(message)` rather than thrown, so a caller
426
+ * (e.g. an MCP tool handler) can surface it without a `throw`/`catch`.
427
+ *
428
+ * `input.generation` is ignored: it exists on {@link RevisionData} only so a
429
+ * value read back by {@link readRevision} round-trips into `add` unchanged,
430
+ * and {@link computeGeneration} always derives the stored value from the
431
+ * resolved parents.
432
+ *
433
+ * @template {Operation} O
434
+ * @param {Cas<O>} cas
435
+ * @returns {(cacheKey: Key<Cache>) => (input: RevisionData) => Effect<O | MemOp, Result<Hash, string>>}
436
+ */
437
+ export const addRevision = cas => cacheKey => input =>
438
+ step(
439
+ resolveParents(cas)(input.parents),
440
+ (/** @type {Result<readonly Revision[], string>} */ parentsResult) => {
441
+ const revisionResult = okThen(buildRevision(input))(parentsResult)
442
+ if (revisionResult[0] === 'error') { return pure(revisionResult) }
443
+ const canonicalRevision = revisionResult[1]
444
+ const bytes = tryUtf8(encodeText(canonicalRevision))
445
+ if (bytes === null) {
446
+ return pure(error('revision too large to encode'))
447
+ }
448
+ return step(
449
+ cas.write(nonEmpty(ok(bytes), /** @type {List<never, Ok<Vec>>} */ (elEmpty()))),
450
+ (/** @type {IoResult<Vec>} */ writeResult) => {
451
+ if (writeResult[0] === 'error') {
452
+ return /** @type {Effect<MemOp, Result<Hash, string>>} */ (pure(error('failed to write revision to CAS')))
453
+ }
454
+ const hash = vecToCBase32(writeResult[1])
455
+ return mapStep(foldIntoCache(cacheKey)(hash)(canonicalRevision), () => ok(hash))
456
+ })
457
+ })
458
+
459
+ /**
460
+ * Projects a decoded `Revision` into the shared {@link RevisionData}
461
+ * vocabulary: `dialect` is dropped (a serialization tag with no information
462
+ * left once decoding has validated it), and every hash is re-spelled
463
+ * canonically ({@link canonicalHash}) so a read compares directly against
464
+ * {@link Evo.head}'s output instead of against whatever spelling the blob's
465
+ * writer happened to use. `checkReferences` ran as part of decoding, so every
466
+ * `parents` entry and the `snapshot` are known to decode and the `unwrap`
467
+ * inside `canonicalHash` is safe. Field order follows the stored blob's
468
+ * (minus `dialect`), which is what a JSON encoding of the result shows.
469
+ * @type {(revision: Revision) => RevisionData}
470
+ */
471
+ const toRevisionData = ({ subject, parents, snapshot, generation, archived, lock }) => ({
472
+ subject,
473
+ parents: parents.map(canonicalHash),
474
+ snapshot: canonicalHash(snapshot),
475
+ generation,
476
+ archived,
477
+ lock: lock === undefined ? undefined : canonicalLock(lock),
478
+ })
479
+
480
+ /**
481
+ * Second stage of {@link readRevision}: interprets an already-performed read
482
+ * of `hash`. Kept apart from the read itself so the failures stay
483
+ * distinguishable — "not present in the store" and "present but not a
484
+ * revision" are different answers to a client, and
485
+ * {@link decodeRevisionBlob}, which composes the same two stages internally,
486
+ * deliberately collapses both into `null` for store scanning.
487
+ *
488
+ * A failed read is only reported as *not found* when it is a genuine miss —
489
+ * `isNotFound`, the same ENOENT test `fjs/cas`'s `list` uses to tell an
490
+ * unwritten store from an unreadable one. A `Cas` read can also fail on a
491
+ * blob that exists: a permission or mid-stream I/O error, or content too
492
+ * large to buffer into one `Vec` (`collectRead`). Calling any of those "not
493
+ * found" would deny a stored revision exists, so they are their own message.
494
+ *
495
+ * A blob deleted *during* the read lands here as a miss too, and that is the
496
+ * honest answer rather than a gap in the split. `fileCas` streams in chunks,
497
+ * so a delete between two of them fails a later chunk with ENOENT after
498
+ * earlier ones succeeded — but by the time this result is produced the store
499
+ * genuinely no longer has the blob, and the very next read says "not found"
500
+ * with no race left to observe. `collectRead` reports how a read ended, not
501
+ * how far it got; recovering that difference would mean folding the chunk
502
+ * stream here instead of reusing `collectRead`, for a distinction no client
503
+ * can act on differently.
504
+ * @type {(hash: Hash) => (result: IoResult<Vec>) => Result<RevisionData, string>}
505
+ */
506
+ const decodeReadRevision = hash => ([tag, value]) => {
507
+ if (tag === 'error') {
508
+ return error(isNotFound(value)
509
+ ? `revision not found: ${hash}`
510
+ : `failed to read revision: ${hash}`)
511
+ }
512
+ const revision = decodeRevisionVec(value)
513
+ return revision === null
514
+ ? error(`not a revision blob: ${hash}`)
515
+ : ok(toRevisionData(revision))
516
+ }
517
+
518
+ /**
519
+ * Reads the revision at `hash`: decoded, validated, and canonicalized
520
+ * ({@link toRevisionData}). The typed counterpart of a raw `cas.read` — the
521
+ * store's generic "bytes by hash" read stays available for arbitrary content
522
+ * (snapshots and everything else that is not a revision), while this is the
523
+ * view for revisions specifically: `add` validates on the way in, this
524
+ * validates on the way out, so no caller re-implements JSON parsing, schema
525
+ * validation, the `dialect` check, or hash canonicalization.
526
+ *
527
+ * Every way to fail is its own message: `hash` is not cBase32, the store has
528
+ * nothing under it, the store has it but could not deliver it, or what it
529
+ * holds is not a `vnd.fjs.revision` (see {@link decodeReadRevision}).
530
+ *
531
+ * @template {Operation} O
532
+ * @param {Cas<O>} cas
533
+ * @returns {(hash: Hash) => Effect<O, Result<RevisionData, string>>}
534
+ */
535
+ export const readRevision = cas => hash => {
536
+ const hashVec = cBase32ToVec(hash)
537
+ return hashVec === null
538
+ ? pure(error(`invalid hash: ${hash}`))
539
+ : mapStep(collectRead(cas.read(hashVec)), decodeReadRevision(hash))
540
+ }
541
+
542
+ /**
543
+ * Builds the {@link Evo} API over `cas`, backed by the cache at `cacheKey` (see {@link initEvo}).
544
+ *
545
+ * @template {Operation} O
546
+ * @param {Cas<O>} cas
547
+ * @returns {(cacheKey: Key<Cache>) => Evo<O>}
548
+ */
549
+ export const evo = cas => cacheKey => ({
550
+ list: archived => {
551
+ const listed = subjectListed(archived)
552
+ return mapStep(
553
+ read(cacheKey),
554
+ cache => definedEntries(cache.bySubject)
555
+ .flatMap(([subject, state]) => listed(state) ? [subject] : []))
556
+ },
557
+ head: subject => mapStep(read(cacheKey), cache => {
558
+ const state = at(subject)(cache.bySubject)
559
+ return state === null ? [] : headsOf(state)
560
+ }),
561
+ add: input => addRevision(cas)(cacheKey)(input),
562
+ revision: readRevision(cas),
563
+ })
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @import { Cas } from '../types.ts'
3
+ * @import { Vec } from '../../types/bit_vec/types.ts'
4
+ * @import { Ok } from '../../types/result/types.ts'
5
+ * @import { IoResult } from '../../effects/node/types.ts'
6
+ * @import { List } from '../../effects/list/types.ts'
7
+ * @import { RevisionData } from './types.ts'
8
+ */
9
+ export declare const proof: {
10
+ buildCacheEmptyStoreYieldsEmptyCache: () => void;
11
+ buildCacheSkipsNonRevisionBlob: () => void;
12
+ decodeRevisionBlobMissingHashIsNull: () => void;
13
+ decodeRevisionBlobNonUtf8IsNull: () => void;
14
+ decodeRevisionBlobInvalidJsonIsNull: () => void;
15
+ decodeRevisionBlobValidRevisionRoundTrips: () => void;
16
+ buildCacheIncludesScannedRevision: () => void;
17
+ buildCacheOrderIndependentWhenChildScannedBeforeParent: () => void;
18
+ buildCacheCanonicalizesNonCanonicalParentHashes: () => void;
19
+ addRevisionBuildsHeadsAcrossChainAndFork: () => void;
20
+ listPartitionsSubjectsByHeadArchivedFlag: () => void;
21
+ listTreatsDisagreeingHeadsAsActive: () => void;
22
+ listIgnoresArchivedRevisionsThatAreNoLongerHeads: () => void;
23
+ listExcludesSubjectWithNoCurrentHeads: () => void;
24
+ addRevisionIdempotentOnDuplicateContent: () => void;
25
+ addRevisionCanonicalizesParentSpellingBeforeSerializing: () => void;
26
+ addRevisionResolvesSubjectFromSingleParent: () => void;
27
+ addComputesGenerationAndResolvesSnapshot: () => void;
28
+ addComputesMergeGenerationFromMaxOfParents: () => void;
29
+ addIgnoresSuppliedGeneration: () => void;
30
+ addRevisionSubjectRequiredForZeroParents: () => void;
31
+ addRevisionNonHashSubjectWithoutSnapshotIsError: () => void;
32
+ addRevisionInvalidParentHashIsError: () => void;
33
+ addRevisionParentNotARevisionIsError: () => void;
34
+ addRevisionValidatesParentsEvenWithExplicitSubject: () => void;
35
+ addRevisionRejectsCrossSubjectParent: () => void;
36
+ addRevisionShortCircuitsOnFirstInvalidParentAmongMultiple: () => void;
37
+ addRevisionInvalidReferencesIsError: () => void;
38
+ addRevisionTooLargeToEncodeIsError: () => void;
39
+ addRevisionWriteFailureIsError: () => void;
40
+ revisionInvalidHashIsError: () => void;
41
+ revisionMissingHashIsError: () => void;
42
+ revisionReadFailureIsNotReportedAsMissing: () => void;
43
+ revisionNonRevisionBlobIsError: () => void;
44
+ revisionCanonicalizesReferenceSpellings: () => void;
45
+ revisionRoundTripsThroughAdd: () => void;
46
+ revisionLockRoundTripsAndCanonicalizes: () => void;
47
+ revisionAbsentAndEmptyLocksRemainDistinct: () => void;
48
+ revisionInvalidLockValueIsRejected: () => void;
49
+ equivalentLockOrdersReuseOneCasAddress: () => void;
50
+ syncRevisionFoldsValidRevisionIntoCache: () => void;
51
+ syncRevisionIgnoresNonRevisionContent: () => void;
52
+ evoHeadUnknownSubjectIsEmpty: () => void;
53
+ evoHeadUnknownPrototypeNamedSubjectIsEmpty: () => void;
54
+ evoAddAndHeadHandlePrototypeNamedSubject: () => void;
55
+ };