functionalscript 0.43.0 → 0.44.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 (1096) 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.mjs +309 -0
  5. package/fjs/asn.1/types.d.ts +37 -0
  6. package/fjs/asn.1/types.js +6 -0
  7. package/fjs/asserts/module.f.d.mts +37 -0
  8. package/fjs/asserts/module.f.mjs +49 -0
  9. package/fjs/asserts/proof.f.mjs +19 -0
  10. package/fjs/asserts/types.d.ts +11 -0
  11. package/fjs/asserts/types.js +6 -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 +2 -0
  15. package/fjs/basen/base128/proof.f.mjs +30 -0
  16. package/fjs/basen/base64/module.f.d.mts +14 -0
  17. package/fjs/basen/base64/module.f.mjs +71 -0
  18. package/fjs/basen/base64/proof.f.d.mts +17 -0
  19. package/fjs/basen/base64/proof.f.mjs +147 -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 +8 -0
  23. package/fjs/basen/cbase32/proof.f.mjs +77 -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/basen/types.js +6 -0
  29. package/fjs/bnf/data/module.f.d.mts +47 -0
  30. package/fjs/bnf/data/module.f.mjs +188 -0
  31. package/fjs/bnf/data/proof.f.d.mts +13 -0
  32. package/fjs/bnf/data/proof.f.mjs +160 -0
  33. package/fjs/bnf/data/types.d.ts +35 -0
  34. package/fjs/bnf/data/types.js +6 -0
  35. package/fjs/bnf/descent/module.f.d.mts +33 -0
  36. package/fjs/bnf/descent/module.f.mjs +212 -0
  37. package/fjs/bnf/descent/proof.f.d.mts +13 -0
  38. package/fjs/bnf/descent/proof.f.mjs +351 -0
  39. package/fjs/bnf/descent/types.d.ts +71 -0
  40. package/fjs/bnf/descent/types.js +6 -0
  41. package/fjs/bnf/ll1/module.f.d.mts +41 -0
  42. package/fjs/bnf/ll1/module.f.mjs +199 -0
  43. package/fjs/bnf/ll1/proof.f.d.mts +16 -0
  44. package/fjs/bnf/ll1/proof.f.mjs +352 -0
  45. package/fjs/bnf/ll1/types.d.ts +59 -0
  46. package/fjs/bnf/ll1/types.js +6 -0
  47. package/fjs/bnf/module.f.d.mts +164 -0
  48. package/fjs/bnf/module.f.mjs +298 -0
  49. package/fjs/bnf/proof.f.d.mts +17 -0
  50. package/fjs/bnf/proof.f.mjs +89 -0
  51. package/fjs/bnf/testlib.f.d.mts +10 -0
  52. package/fjs/bnf/testlib.f.mjs +196 -0
  53. package/fjs/bnf/token_symbol/module.f.d.mts +35 -0
  54. package/fjs/bnf/token_symbol/module.f.mjs +62 -0
  55. package/fjs/bnf/token_symbol/proof.f.mjs +43 -0
  56. package/fjs/bnf/token_symbol/types.d.ts +27 -0
  57. package/fjs/bnf/token_symbol/types.js +6 -0
  58. package/fjs/bnf/types.d.ts +67 -0
  59. package/fjs/bnf/types.js +6 -0
  60. package/fjs/cas/cli/module.f.d.mts +17 -0
  61. package/fjs/cas/cli/module.f.mjs +73 -0
  62. package/fjs/cas/cli/proof.f.d.mts +18 -0
  63. package/fjs/cas/cli/proof.f.mjs +118 -0
  64. package/fjs/cas/evo/module.f.d.mts +163 -0
  65. package/fjs/cas/evo/module.f.mjs +556 -0
  66. package/fjs/cas/evo/proof.f.d.mts +55 -0
  67. package/fjs/cas/evo/proof.f.mjs +749 -0
  68. package/fjs/cas/evo/types.d.ts +111 -0
  69. package/fjs/cas/evo/types.js +7 -0
  70. package/fjs/cas/module.f.d.mts +68 -0
  71. package/fjs/cas/module.f.mjs +363 -0
  72. package/fjs/cas/proof.f.d.mts +29 -0
  73. package/fjs/cas/proof.f.mjs +371 -0
  74. package/fjs/cas/types.d.ts +35 -0
  75. package/fjs/cas/types.js +6 -0
  76. package/fjs/ci/bun/module.f.d.mts +11 -0
  77. package/fjs/ci/bun/module.f.mjs +20 -0
  78. package/fjs/ci/common/module.f.d.mts +80 -0
  79. package/fjs/ci/common/module.f.mjs +87 -0
  80. package/fjs/ci/common/types.d.ts +27 -0
  81. package/fjs/ci/config/module.f.d.mts +45 -0
  82. package/fjs/ci/config/module.f.mjs +89 -0
  83. package/fjs/ci/deno/module.f.d.mts +16 -0
  84. package/fjs/ci/deno/module.f.mjs +29 -0
  85. package/fjs/ci/deno/proof.f.d.mts +4 -0
  86. package/fjs/ci/deno/proof.f.mjs +26 -0
  87. package/fjs/ci/module.f.d.mts +19 -0
  88. package/fjs/ci/module.f.mjs +89 -0
  89. package/fjs/ci/nix/module.f.d.mts +69 -0
  90. package/fjs/ci/nix/module.f.mjs +136 -0
  91. package/fjs/ci/nix/proof.f.d.mts +28 -0
  92. package/fjs/ci/nix/proof.f.mjs +146 -0
  93. package/fjs/ci/nix/types.d.ts +16 -0
  94. package/fjs/ci/nix/types.js +6 -0
  95. package/fjs/ci/node/module.f.d.mts +48 -0
  96. package/fjs/ci/node/module.f.mjs +139 -0
  97. package/fjs/ci/node/proof.f.mjs +18 -0
  98. package/fjs/ci/proof.f.d.mts +20 -0
  99. package/fjs/ci/proof.f.mjs +219 -0
  100. package/fjs/ci/rust/module.f.d.mts +15 -0
  101. package/fjs/ci/rust/module.f.mjs +108 -0
  102. package/fjs/ci/types.d.ts +9 -0
  103. package/fjs/ci/types.js +6 -0
  104. package/fjs/cli/module.f.d.mts +16 -0
  105. package/fjs/cli/module.f.mjs +51 -0
  106. package/fjs/cli/proof.f.d.mts +16 -0
  107. package/fjs/cli/proof.f.mjs +130 -0
  108. package/fjs/cli/types.d.ts +15 -0
  109. package/fjs/cli/types.js +6 -0
  110. package/fjs/common/monoid/module.f.d.mts +87 -0
  111. package/fjs/common/monoid/module.f.mjs +104 -0
  112. package/fjs/common/monoid/proof.f.d.mts +10 -0
  113. package/fjs/common/monoid/proof.f.mjs +58 -0
  114. package/fjs/common/monoid/types.d.ts +50 -0
  115. package/fjs/common/monoid/types.js +6 -0
  116. package/fjs/crypto/hmac/module.f.d.mts +32 -0
  117. package/fjs/crypto/hmac/module.f.mjs +65 -0
  118. package/fjs/crypto/hmac/proof.f.mjs +34 -0
  119. package/fjs/crypto/pow/module.f.d.mts +43 -0
  120. package/fjs/crypto/pow/module.f.mjs +93 -0
  121. package/fjs/crypto/pow/proof.f.mjs +121 -0
  122. package/fjs/crypto/pow/types.d.ts +19 -0
  123. package/fjs/crypto/pow/types.js +6 -0
  124. package/fjs/crypto/secp/module.f.d.mts +61 -0
  125. package/fjs/crypto/secp/module.f.mjs +204 -0
  126. package/fjs/crypto/secp/proof.f.d.mts +9 -0
  127. package/fjs/crypto/secp/proof.f.mjs +137 -0
  128. package/fjs/crypto/secp/types.d.ts +36 -0
  129. package/fjs/crypto/secp/types.js +6 -0
  130. package/fjs/crypto/sha2/module.f.d.mts +80 -0
  131. package/fjs/crypto/sha2/module.f.mjs +431 -0
  132. package/fjs/crypto/sha2/proof.f.d.mts +32 -0
  133. package/fjs/crypto/sha2/proof.f.mjs +144 -0
  134. package/fjs/crypto/sha2/types.d.ts +57 -0
  135. package/fjs/crypto/sha2/types.js +6 -0
  136. package/fjs/crypto/sign/module.f.d.mts +46 -0
  137. package/fjs/crypto/sign/module.f.mjs +189 -0
  138. package/fjs/crypto/sign/proof.f.d.mts +17 -0
  139. package/fjs/crypto/sign/proof.f.mjs +604 -0
  140. package/fjs/crypto/sign/types.d.ts +13 -0
  141. package/fjs/crypto/sign/types.js +6 -0
  142. package/fjs/crypto/vdf/module.f.d.mts +15 -0
  143. package/fjs/crypto/vdf/module.f.mjs +84 -0
  144. package/fjs/crypto/vdf/proof.f.mjs +106 -0
  145. package/fjs/crypto/vdf/types.d.ts +18 -0
  146. package/fjs/crypto/vdf/types.js +6 -0
  147. package/fjs/dev/module.f.d.mts +56 -0
  148. package/fjs/dev/module.f.mjs +170 -0
  149. package/fjs/dev/package_json/module.f.d.mts +32 -0
  150. package/fjs/dev/package_json/module.f.mjs +37 -0
  151. package/fjs/dev/package_json/proof.f.mjs +32 -0
  152. package/fjs/dev/proof.f.d.mts +13 -0
  153. package/fjs/dev/proof.f.mjs +78 -0
  154. package/fjs/dev/types.d.ts +14 -0
  155. package/fjs/dev/types.js +6 -0
  156. package/fjs/dev/update/module.f.d.mts +19 -0
  157. package/fjs/dev/update/module.f.mjs +36 -0
  158. package/fjs/dev/update/proof.f.d.mts +7 -0
  159. package/fjs/dev/update/proof.f.mjs +36 -0
  160. package/fjs/djs/ast/module.f.d.mts +35 -0
  161. package/fjs/djs/ast/module.f.mjs +82 -0
  162. package/fjs/djs/ast/proof.f.mjs +48 -0
  163. package/fjs/djs/ast/types.d.ts +54 -0
  164. package/fjs/djs/ast/types.js +8 -0
  165. package/fjs/djs/examples/input.f.mjs +4 -0
  166. package/fjs/djs/examples/m.f.mjs +1 -0
  167. package/fjs/djs/module.f.d.mts +17 -0
  168. package/fjs/djs/module.f.mjs +47 -0
  169. package/fjs/djs/parser/module.f.d.mts +75 -0
  170. package/fjs/djs/parser/module.f.mjs +547 -0
  171. package/fjs/djs/parser/proof.f.mjs +543 -0
  172. package/fjs/djs/parser/types.d.ts +11 -0
  173. package/fjs/djs/parser/types.js +7 -0
  174. package/fjs/djs/proof.f.mjs +52 -0
  175. package/fjs/djs/serializer/module.f.d.mts +30 -0
  176. package/fjs/djs/serializer/module.f.mjs +206 -0
  177. package/fjs/djs/serializer/proof.f.mjs +116 -0
  178. package/fjs/djs/tokenizer/module.f.d.mts +65 -0
  179. package/fjs/djs/tokenizer/module.f.mjs +624 -0
  180. package/fjs/djs/tokenizer/proof.f.mjs +980 -0
  181. package/fjs/djs/tokenizer/types.d.ts +20 -0
  182. package/fjs/djs/tokenizer/types.js +7 -0
  183. package/fjs/djs/transpiler/module.f.d.mts +44 -0
  184. package/fjs/djs/transpiler/module.f.mjs +141 -0
  185. package/fjs/djs/transpiler/proof.f.mjs +76 -0
  186. package/fjs/djs/types.d.ts +13 -0
  187. package/fjs/djs/types.js +7 -0
  188. package/fjs/effects/eff/module.f.d.mts +10 -0
  189. package/fjs/effects/eff/module.f.mjs +68 -0
  190. package/fjs/effects/eff/proof.f.d.mts +12 -0
  191. package/fjs/effects/eff/proof.f.mjs +66 -0
  192. package/fjs/effects/eff/types.d.ts +71 -0
  193. package/fjs/effects/eff/types.js +6 -0
  194. package/fjs/effects/list/module.f.d.mts +24 -0
  195. package/fjs/effects/list/module.f.mjs +34 -0
  196. package/fjs/effects/list/types.d.ts +26 -0
  197. package/fjs/effects/list/types.js +6 -0
  198. package/fjs/effects/memory/module.f.d.mts +32 -0
  199. package/fjs/effects/memory/module.f.mjs +44 -0
  200. package/fjs/effects/memory/proof.f.d.mts +12 -0
  201. package/fjs/effects/memory/proof.f.mjs +83 -0
  202. package/fjs/effects/memory/types.d.ts +18 -0
  203. package/fjs/effects/memory/types.js +6 -0
  204. package/fjs/effects/mock/module.f.d.mts +6 -0
  205. package/fjs/effects/mock/module.f.mjs +26 -0
  206. package/fjs/effects/mock/types.d.ts +15 -0
  207. package/fjs/effects/mock/types.js +6 -0
  208. package/fjs/effects/module.d.mts +7 -0
  209. package/fjs/effects/module.f.d.mts +350 -0
  210. package/fjs/effects/module.f.mjs +382 -0
  211. package/fjs/effects/module.mjs +18 -0
  212. package/fjs/effects/node/memory/module.d.mts +24 -0
  213. package/fjs/effects/node/memory/module.mjs +59 -0
  214. package/fjs/effects/node/memory/proof.mjs +43 -0
  215. package/fjs/effects/node/module.d.mts +54 -0
  216. package/fjs/effects/node/module.f.d.mts +172 -0
  217. package/fjs/effects/node/module.f.mjs +354 -0
  218. package/fjs/effects/node/module.mjs +393 -0
  219. package/fjs/effects/node/proof.f.d.mts +76 -0
  220. package/fjs/effects/node/proof.f.mjs +444 -0
  221. package/fjs/effects/node/types.d.ts +203 -0
  222. package/fjs/effects/node/types.js +6 -0
  223. package/fjs/effects/node/virtual/module.f.d.mts +31 -0
  224. package/fjs/effects/node/virtual/module.f.mjs +434 -0
  225. package/fjs/effects/node/virtual/proof.f.d.mts +35 -0
  226. package/fjs/effects/node/virtual/proof.f.mjs +226 -0
  227. package/fjs/effects/node/virtual/types.d.ts +39 -0
  228. package/fjs/effects/node/virtual/types.js +7 -0
  229. package/fjs/effects/proof.f.d.mts +62 -0
  230. package/fjs/effects/proof.f.mjs +231 -0
  231. package/fjs/effects/types.d.ts +115 -0
  232. package/fjs/effects/types.js +6 -0
  233. package/fjs/emergent_testing/all.test.js +2 -2
  234. package/fjs/emergent_testing/example.f.d.mts +16 -0
  235. package/fjs/emergent_testing/example.f.mjs +34 -0
  236. package/fjs/emergent_testing/module.f.d.mts +150 -0
  237. package/fjs/emergent_testing/module.f.mjs +414 -0
  238. package/fjs/emergent_testing/proof.f.d.mts +97 -0
  239. package/fjs/emergent_testing/proof.f.mjs +518 -0
  240. package/fjs/emergent_testing/types.d.ts +53 -0
  241. package/fjs/emergent_testing/types.js +6 -0
  242. package/fjs/fsc/bnf.f.d.mts +3 -0
  243. package/fjs/fsc/bnf.f.mjs +77 -0
  244. package/fjs/fsc/json.f.d.mts +13 -0
  245. package/fjs/fsc/json.f.mjs +124 -0
  246. package/fjs/fsc/module.f.d.mts +14 -0
  247. package/fjs/fsc/module.f.mjs +138 -0
  248. package/fjs/fsc/proof.f.mjs +119 -0
  249. package/fjs/fsm/module.f.d.mts +27 -0
  250. package/fjs/fsm/module.f.mjs +99 -0
  251. package/fjs/fsm/proof.f.mjs +146 -0
  252. package/fjs/js/tokenizer/module.f.d.mts +19 -0
  253. package/fjs/js/tokenizer/module.f.mjs +795 -0
  254. package/fjs/js/tokenizer/proof.f.d.mts +12 -0
  255. package/fjs/js/tokenizer/proof.f.mjs +681 -0
  256. package/fjs/js/tokenizer/types.d.ts +193 -0
  257. package/fjs/js/tokenizer/types.js +6 -0
  258. package/fjs/mcp/cas/module.f.d.mts +156 -0
  259. package/fjs/mcp/cas/module.f.mjs +302 -0
  260. package/fjs/mcp/evo/module.f.d.mts +88 -0
  261. package/fjs/mcp/evo/module.f.mjs +153 -0
  262. package/fjs/mcp/evo/proof.f.d.mts +17 -0
  263. package/fjs/mcp/evo/proof.f.mjs +166 -0
  264. package/fjs/mcp/module.f.d.mts +32 -0
  265. package/fjs/mcp/module.f.mjs +96 -0
  266. package/fjs/mcp/proof.f.d.mts +46 -0
  267. package/fjs/mcp/proof.f.mjs +725 -0
  268. package/fjs/media/html/module.f.d.mts +43 -0
  269. package/fjs/media/html/module.f.mjs +167 -0
  270. package/fjs/media/html/proof.f.mjs +77 -0
  271. package/fjs/media/html/types.d.ts +19 -0
  272. package/fjs/media/html/types.js +6 -0
  273. package/fjs/media/json/module.f.d.mts +48 -0
  274. package/fjs/media/json/module.f.mjs +104 -0
  275. package/fjs/media/json/parser/module.f.d.mts +30 -0
  276. package/fjs/media/json/parser/module.f.mjs +219 -0
  277. package/fjs/media/json/parser/proof.f.d.mts +8 -0
  278. package/fjs/media/json/parser/proof.f.mjs +314 -0
  279. package/fjs/media/json/parser/types.d.ts +34 -0
  280. package/fjs/media/json/parser/types.js +6 -0
  281. package/fjs/media/json/proof.f.mjs +79 -0
  282. package/fjs/media/json/rtti/module.f.d.mts +38 -0
  283. package/fjs/media/json/rtti/module.f.mjs +51 -0
  284. package/fjs/media/json/rtti/proof.f.d.mts +26 -0
  285. package/fjs/media/json/rtti/proof.f.mjs +86 -0
  286. package/fjs/media/json/schema/module.f.d.mts +79 -0
  287. package/fjs/media/json/schema/module.f.mjs +144 -0
  288. package/fjs/media/json/schema/proof.f.d.mts +40 -0
  289. package/fjs/media/json/schema/proof.f.mjs +93 -0
  290. package/fjs/media/json/serializer/module.f.d.mts +27 -0
  291. package/fjs/media/json/serializer/module.f.mjs +131 -0
  292. package/fjs/media/json/serializer/proof.f.mjs +92 -0
  293. package/fjs/media/json/tokenizer/module.f.d.mts +17 -0
  294. package/fjs/media/json/tokenizer/module.f.mjs +77 -0
  295. package/fjs/media/json/tokenizer/proof.f.d.mts +8 -0
  296. package/fjs/media/json/tokenizer/proof.f.mjs +291 -0
  297. package/fjs/media/json/tokenizer/types.d.ts +17 -0
  298. package/fjs/media/json/tokenizer/types.js +6 -0
  299. package/fjs/media/json/types.d.ts +25 -0
  300. package/fjs/media/json/types.js +13 -0
  301. package/fjs/media/module.f.d.mts +116 -0
  302. package/fjs/media/module.f.mjs +152 -0
  303. package/fjs/media/nix/module.f.d.mts +14 -0
  304. package/fjs/media/nix/module.f.mjs +261 -0
  305. package/fjs/media/nix/proof.f.mjs +181 -0
  306. package/fjs/media/nix/types.d.ts +22 -0
  307. package/fjs/media/nix/types.js +6 -0
  308. package/fjs/media/proof.f.d.mts +19 -0
  309. package/fjs/media/proof.f.mjs +159 -0
  310. package/fjs/media/revision/module.f.d.mts +119 -0
  311. package/fjs/media/revision/module.f.mjs +166 -0
  312. package/fjs/media/revision/proof.f.d.mts +42 -0
  313. package/fjs/media/revision/proof.f.mjs +228 -0
  314. package/fjs/media/revision/types.d.ts +16 -0
  315. package/fjs/media/revision/types.js +8 -0
  316. package/fjs/media/rust/module.f.d.mts +61 -0
  317. package/fjs/media/rust/module.f.mjs +93 -0
  318. package/fjs/media/rust/proof.f.d.mts +17 -0
  319. package/fjs/media/rust/proof.f.mjs +50 -0
  320. package/fjs/media/type/module.f.d.mts +97 -0
  321. package/fjs/media/type/module.f.mjs +281 -0
  322. package/fjs/media/type/proof.f.mjs +285 -0
  323. package/fjs/media/type/types.d.ts +67 -0
  324. package/fjs/media/type/types.js +6 -0
  325. package/fjs/media/types.d.ts +26 -0
  326. package/fjs/media/types.js +7 -0
  327. package/fjs/module.f.d.mts +3 -0
  328. package/fjs/module.f.mjs +60 -0
  329. package/fjs/module.mjs +6 -0
  330. package/fjs/nanvm/module.f.d.mts +54 -0
  331. package/fjs/nanvm/module.f.mjs +240 -0
  332. package/fjs/nanvm/proof.f.d.mts +41 -0
  333. package/fjs/nanvm/proof.f.mjs +173 -0
  334. package/fjs/nanvm/rust/module.f.d.mts +54 -0
  335. package/fjs/nanvm/rust/module.f.mjs +166 -0
  336. package/fjs/nanvm/rust/proof.f.d.mts +21 -0
  337. package/fjs/nanvm/rust/proof.f.mjs +119 -0
  338. package/fjs/nanvm/types.d.ts +105 -0
  339. package/fjs/nanvm/types.js +11 -0
  340. package/fjs/nanvm/update/module.f.d.mts +23 -0
  341. package/fjs/nanvm/update/module.f.mjs +33 -0
  342. package/fjs/nanvm/update/proof.f.d.mts +9 -0
  343. package/fjs/nanvm/update/proof.f.mjs +32 -0
  344. package/fjs/path/module.f.d.mts +55 -0
  345. package/fjs/path/module.f.mjs +96 -0
  346. package/fjs/path/proof.f.mjs +125 -0
  347. package/fjs/proof.f.mjs +48 -0
  348. package/fjs/protocol/json_rpc/module.f.d.mts +127 -0
  349. package/fjs/protocol/json_rpc/module.f.mjs +112 -0
  350. package/fjs/protocol/json_rpc/proof.f.mjs +84 -0
  351. package/fjs/protocol/json_rpc/types.d.ts +30 -0
  352. package/fjs/protocol/json_rpc/types.js +8 -0
  353. package/fjs/protocol/mcp/module.f.d.mts +227 -0
  354. package/fjs/protocol/mcp/module.f.mjs +369 -0
  355. package/fjs/protocol/mcp/proof.f.d.mts +53 -0
  356. package/fjs/protocol/mcp/proof.f.mjs +312 -0
  357. package/fjs/protocol/mcp/stdio/module.f.d.mts +52 -0
  358. package/fjs/protocol/mcp/stdio/module.f.mjs +132 -0
  359. package/fjs/protocol/mcp/stdio/proof.f.d.mts +20 -0
  360. package/fjs/protocol/mcp/stdio/proof.f.mjs +190 -0
  361. package/fjs/protocol/mcp/types.d.ts +59 -0
  362. package/fjs/protocol/mcp/types.js +8 -0
  363. package/fjs/sul/id/module.f.d.mts +37 -0
  364. package/fjs/sul/id/module.f.mjs +143 -0
  365. package/fjs/sul/id/proof.f.mjs +72 -0
  366. package/fjs/sul/id/types.d.ts +8 -0
  367. package/fjs/sul/id/types.js +6 -0
  368. package/fjs/sul/level/hash/module.f.d.mts +37 -0
  369. package/fjs/sul/level/hash/module.f.mjs +61 -0
  370. package/fjs/sul/level/hash/proof.f.d.mts +15 -0
  371. package/fjs/sul/level/hash/proof.f.mjs +131 -0
  372. package/fjs/sul/level/hash/types.d.ts +20 -0
  373. package/fjs/sul/level/hash/types.js +6 -0
  374. package/fjs/sul/level/literal/module.f.d.mts +54 -0
  375. package/fjs/sul/level/literal/module.f.mjs +120 -0
  376. package/fjs/sul/level/literal/proof.f.mjs +788 -0
  377. package/fjs/sul/level/literal/types.d.ts +31 -0
  378. package/fjs/sul/level/literal/types.js +6 -0
  379. package/fjs/sul/module.f.d.mts +25 -0
  380. package/fjs/sul/module.f.mjs +69 -0
  381. package/fjs/sul/proof.f.d.mts +11 -0
  382. package/fjs/sul/proof.f.mjs +62 -0
  383. package/fjs/sul/types.d.ts +19 -0
  384. package/fjs/sul/types.js +6 -0
  385. package/fjs/text/ascii/module.f.d.mts +136 -0
  386. package/fjs/text/ascii/module.f.mjs +224 -0
  387. package/fjs/text/ascii/proof.f.mjs +16 -0
  388. package/fjs/text/code_point/module.f.d.mts +74 -0
  389. package/fjs/text/code_point/module.f.mjs +139 -0
  390. package/fjs/text/code_point/proof.f.mjs +80 -0
  391. package/fjs/text/module.f.d.mts +39 -0
  392. package/fjs/text/module.f.mjs +61 -0
  393. package/fjs/text/proof.f.mjs +48 -0
  394. package/fjs/text/sgr/module.f.d.mts +58 -0
  395. package/fjs/text/sgr/module.f.mjs +99 -0
  396. package/fjs/text/sgr/proof.f.mjs +39 -0
  397. package/fjs/text/sgr/types.d.ts +12 -0
  398. package/fjs/text/sgr/types.js +6 -0
  399. package/fjs/text/types.d.ts +13 -0
  400. package/fjs/text/types.js +6 -0
  401. package/fjs/text/utf16/module.f.d.mts +147 -0
  402. package/fjs/text/utf16/module.f.mjs +350 -0
  403. package/fjs/text/utf16/proof.f.d.mts +11 -0
  404. package/fjs/text/utf16/proof.f.mjs +158 -0
  405. package/fjs/text/utf16/types.d.ts +19 -0
  406. package/fjs/text/utf16/types.js +6 -0
  407. package/fjs/text/utf8/module.f.d.mts +69 -0
  408. package/fjs/text/utf8/module.f.mjs +280 -0
  409. package/fjs/text/utf8/proof.f.mjs +217 -0
  410. package/fjs/text/utf8/types.d.ts +26 -0
  411. package/fjs/text/utf8/types.js +6 -0
  412. package/fjs/types/array/module.f.d.mts +68 -0
  413. package/fjs/types/array/module.f.mjs +101 -0
  414. package/fjs/types/array/proof.f.mjs +98 -0
  415. package/fjs/types/array/types.d.ts +13 -0
  416. package/fjs/types/array/types.js +6 -0
  417. package/fjs/types/bigfloat/module.f.d.mts +14 -0
  418. package/fjs/types/bigfloat/module.f.mjs +99 -0
  419. package/fjs/types/bigfloat/proof.f.mjs +218 -0
  420. package/fjs/types/bigfloat/types.d.ts +6 -0
  421. package/fjs/types/bigfloat/types.js +6 -0
  422. package/fjs/types/bigint/benchmark.d.mts +1 -0
  423. package/fjs/types/bigint/benchmark.mjs +205 -0
  424. package/fjs/types/bigint/module.f.d.mts +176 -0
  425. package/fjs/types/bigint/module.f.mjs +289 -0
  426. package/fjs/types/bigint/proof.f.d.mts +39 -0
  427. package/fjs/types/bigint/proof.f.mjs +443 -0
  428. package/fjs/types/bigint/types.d.ts +14 -0
  429. package/fjs/types/bigint/types.js +6 -0
  430. package/fjs/types/bit_vec/module.f.d.mts +199 -0
  431. package/fjs/types/bit_vec/module.f.mjs +485 -0
  432. package/fjs/types/bit_vec/proof.f.mjs +495 -0
  433. package/fjs/types/bit_vec/types.d.ts +51 -0
  434. package/fjs/types/bit_vec/types.js +6 -0
  435. package/fjs/types/btree/find/module.f.d.mts +15 -0
  436. package/fjs/types/btree/find/module.f.mjs +80 -0
  437. package/fjs/types/btree/find/proof.f.d.mts +4 -0
  438. package/fjs/types/btree/find/proof.f.mjs +121 -0
  439. package/fjs/types/btree/find/types.d.ts +22 -0
  440. package/fjs/types/btree/find/types.js +6 -0
  441. package/fjs/types/btree/module.f.d.mts +10 -0
  442. package/fjs/types/btree/module.f.mjs +39 -0
  443. package/fjs/types/btree/proof.f.d.mts +14 -0
  444. package/fjs/types/btree/proof.f.mjs +85 -0
  445. package/fjs/types/btree/remove/module.f.d.mts +21 -0
  446. package/fjs/types/btree/remove/module.f.mjs +187 -0
  447. package/fjs/types/btree/remove/proof.f.mjs +472 -0
  448. package/fjs/types/btree/set/module.f.d.mts +5 -0
  449. package/fjs/types/btree/set/module.f.mjs +117 -0
  450. package/fjs/types/btree/set/proof.f.mjs +427 -0
  451. package/fjs/types/btree/types/module.f.d.mts +19 -0
  452. package/fjs/types/btree/types/module.f.mjs +19 -0
  453. package/fjs/types/btree/types/types.d.ts +14 -0
  454. package/fjs/types/btree/types/types.js +6 -0
  455. package/fjs/types/byte_set/module.f.d.mts +26 -0
  456. package/fjs/types/byte_set/module.f.mjs +66 -0
  457. package/fjs/types/byte_set/proof.f.d.mts +12 -0
  458. package/fjs/types/byte_set/proof.f.mjs +84 -0
  459. package/fjs/types/byte_set/types.d.ts +6 -0
  460. package/fjs/types/byte_set/types.js +6 -0
  461. package/fjs/types/function/compare/module.f.d.mts +44 -0
  462. package/fjs/types/function/compare/module.f.mjs +71 -0
  463. package/fjs/types/function/compare/proof.f.mjs +50 -0
  464. package/fjs/types/function/compare/types.d.ts +22 -0
  465. package/fjs/types/function/compare/types.js +6 -0
  466. package/fjs/types/function/module.f.d.mts +26 -0
  467. package/fjs/types/function/module.f.mjs +32 -0
  468. package/fjs/types/function/operator/module.f.d.mts +37 -0
  469. package/fjs/types/function/operator/module.f.mjs +55 -0
  470. package/fjs/types/function/operator/proof.f.mjs +76 -0
  471. package/fjs/types/function/operator/types.d.ts +39 -0
  472. package/fjs/types/function/operator/types.js +6 -0
  473. package/fjs/types/function/proof.f.mjs +16 -0
  474. package/fjs/types/function/types.d.ts +16 -0
  475. package/fjs/types/function/types.js +6 -0
  476. package/fjs/types/list/module.f.d.mts +88 -0
  477. package/fjs/types/list/module.f.mjs +309 -0
  478. package/fjs/types/list/proof.f.d.mts +32 -0
  479. package/fjs/types/list/proof.f.mjs +363 -0
  480. package/fjs/types/list/types.d.ts +36 -0
  481. package/fjs/types/list/types.js +6 -0
  482. package/fjs/types/map/module.f.d.mts +13 -0
  483. package/fjs/types/map/module.f.mjs +42 -0
  484. package/fjs/types/map/proof.f.mjs +25 -0
  485. package/fjs/types/nibble_set/module.f.d.mts +30 -0
  486. package/fjs/types/nibble_set/module.f.mjs +43 -0
  487. package/fjs/types/nibble_set/proof.f.mjs +59 -0
  488. package/fjs/types/nibble_set/types.d.ts +9 -0
  489. package/fjs/types/nibble_set/types.js +6 -0
  490. package/fjs/types/nominal/module.f.d.mts +9 -0
  491. package/fjs/types/nominal/module.f.mjs +16 -0
  492. package/fjs/types/nominal/proof.f.d.mts +7 -0
  493. package/fjs/types/nominal/proof.f.mjs +79 -0
  494. package/fjs/types/nominal/types.d.ts +25 -0
  495. package/fjs/types/nominal/types.js +6 -0
  496. package/fjs/types/nullable/module.f.d.mts +38 -0
  497. package/fjs/types/nullable/module.f.mjs +53 -0
  498. package/fjs/types/nullable/proof.f.mjs +34 -0
  499. package/fjs/types/nullable/types.d.ts +6 -0
  500. package/fjs/types/nullable/types.js +6 -0
  501. package/fjs/types/number/module.f.d.mts +23 -0
  502. package/fjs/types/number/module.f.mjs +55 -0
  503. package/fjs/types/number/proof.f.mjs +204 -0
  504. package/fjs/types/object/module.f.d.mts +33 -0
  505. package/fjs/types/object/module.f.mjs +58 -0
  506. package/fjs/types/object/proof.f.d.mts +25 -0
  507. package/fjs/types/object/proof.f.mjs +26 -0
  508. package/fjs/types/object/types.d.ts +50 -0
  509. package/fjs/types/object/types.js +8 -0
  510. package/fjs/types/ordered_map/module.f.d.mts +21 -0
  511. package/fjs/types/ordered_map/module.f.mjs +54 -0
  512. package/fjs/types/ordered_map/proof.f.mjs +88 -0
  513. package/fjs/types/ordered_map/types.d.ts +8 -0
  514. package/fjs/types/ordered_map/types.js +6 -0
  515. package/fjs/types/patricia_trie/module.f.d.mts +19 -0
  516. package/fjs/types/patricia_trie/module.f.mjs +43 -0
  517. package/fjs/types/patricia_trie/proof.f.d.mts +14 -0
  518. package/fjs/types/patricia_trie/proof.f.mjs +148 -0
  519. package/fjs/types/patricia_trie/types.d.ts +34 -0
  520. package/fjs/types/patricia_trie/types.js +6 -0
  521. package/fjs/types/prime_field/module.f.d.mts +42 -0
  522. package/fjs/types/prime_field/module.f.mjs +136 -0
  523. package/fjs/types/prime_field/proof.f.mjs +131 -0
  524. package/fjs/types/prime_field/types.d.ts +38 -0
  525. package/fjs/types/prime_field/types.js +6 -0
  526. package/fjs/types/range/module.f.d.mts +11 -0
  527. package/fjs/types/range/module.f.mjs +13 -0
  528. package/fjs/types/range/proof.f.mjs +10 -0
  529. package/fjs/types/range/types.d.ts +6 -0
  530. package/fjs/types/range/types.js +6 -0
  531. package/fjs/types/range_map/module.f.d.mts +72 -0
  532. package/fjs/types/range_map/module.f.mjs +130 -0
  533. package/fjs/types/range_map/proof.f.d.mts +7 -0
  534. package/fjs/types/range_map/proof.f.mjs +186 -0
  535. package/fjs/types/range_map/types.d.ts +56 -0
  536. package/fjs/types/range_map/types.js +6 -0
  537. package/fjs/types/range_set/module.f.d.mts +5 -0
  538. package/fjs/types/range_set/module.f.mjs +19 -0
  539. package/fjs/types/range_set/proof.f.mjs +26 -0
  540. package/fjs/types/result/module.d.mts +5 -0
  541. package/fjs/types/result/module.f.d.mts +59 -0
  542. package/fjs/types/result/module.f.mjs +67 -0
  543. package/fjs/types/result/module.mjs +22 -0
  544. package/fjs/types/result/proof.f.mjs +41 -0
  545. package/fjs/types/result/types.d.ts +17 -0
  546. package/fjs/types/result/types.js +6 -0
  547. package/fjs/types/rtti/common/module.f.d.mts +86 -0
  548. package/fjs/types/rtti/common/module.f.mjs +183 -0
  549. package/fjs/types/rtti/common/proof.f.d.mts +9 -0
  550. package/fjs/types/rtti/common/proof.f.mjs +64 -0
  551. package/fjs/types/rtti/common/types.d.ts +43 -0
  552. package/fjs/types/rtti/common/types.js +1 -0
  553. package/fjs/types/rtti/module.f.d.mts +76 -0
  554. package/fjs/types/rtti/module.f.mjs +110 -0
  555. package/fjs/types/rtti/parse/module.f.d.mts +9 -0
  556. package/fjs/types/rtti/parse/module.f.mjs +196 -0
  557. package/fjs/types/rtti/parse/proof.f.d.mts +122 -0
  558. package/fjs/types/rtti/parse/proof.f.mjs +363 -0
  559. package/fjs/types/rtti/parse/types.d.ts +12 -0
  560. package/fjs/types/rtti/parse/types.js +1 -0
  561. package/fjs/types/rtti/proof.f.d.mts +8 -0
  562. package/fjs/types/rtti/proof.f.mjs +20 -0
  563. package/fjs/types/rtti/ts/module.f.d.mts +34 -0
  564. package/fjs/types/rtti/ts/module.f.mjs +64 -0
  565. package/fjs/types/rtti/ts/proof.f.mjs +88 -0
  566. package/fjs/types/rtti/ts/types.d.ts +88 -0
  567. package/fjs/types/rtti/ts/types.js +1 -0
  568. package/fjs/types/rtti/types.d.ts +43 -0
  569. package/fjs/types/rtti/types.js +1 -0
  570. package/fjs/types/rtti/validate/module.f.d.mts +6 -0
  571. package/fjs/types/rtti/validate/module.f.mjs +169 -0
  572. package/fjs/types/rtti/validate/proof.f.d.mts +125 -0
  573. package/fjs/types/rtti/validate/proof.f.mjs +437 -0
  574. package/fjs/types/rtti/validate/types.d.ts +6 -0
  575. package/fjs/types/rtti/validate/types.js +1 -0
  576. package/fjs/types/sorted_list/module.f.d.mts +43 -0
  577. package/fjs/types/sorted_list/module.f.mjs +110 -0
  578. package/fjs/types/sorted_list/proof.f.d.mts +5 -0
  579. package/fjs/types/sorted_list/proof.f.mjs +52 -0
  580. package/fjs/types/sorted_list/types.d.ts +15 -0
  581. package/fjs/types/sorted_list/types.js +6 -0
  582. package/fjs/types/sorted_set/module.f.d.mts +24 -0
  583. package/fjs/types/sorted_set/module.f.mjs +56 -0
  584. package/fjs/types/sorted_set/proof.f.d.mts +7 -0
  585. package/fjs/types/sorted_set/proof.f.mjs +77 -0
  586. package/fjs/types/sorted_set/types.d.ts +6 -0
  587. package/fjs/types/sorted_set/types.js +6 -0
  588. package/fjs/types/string/module.f.d.mts +36 -0
  589. package/fjs/types/string/module.f.mjs +58 -0
  590. package/fjs/types/string/proof.f.mjs +76 -0
  591. package/fjs/types/string_set/module.f.d.mts +37 -0
  592. package/fjs/types/string_set/module.f.mjs +53 -0
  593. package/fjs/types/string_set/proof.f.mjs +46 -0
  594. package/fjs/types/string_set/types.d.ts +7 -0
  595. package/fjs/types/string_set/types.js +6 -0
  596. package/fjs/types/ts/module.f.d.mts +20 -0
  597. package/fjs/types/ts/module.f.mjs +51 -0
  598. package/fjs/types/ts/proof.f.mjs +97 -0
  599. package/fjs/types/ts/types.d.ts +16 -0
  600. package/fjs/types/ts/types.js +8 -0
  601. package/fjs/types/uint8array/module.f.d.mts +31 -0
  602. package/fjs/types/uint8array/module.f.mjs +53 -0
  603. package/fjs/types/uint8array/proof.f.d.mts +17 -0
  604. package/fjs/types/uint8array/proof.f.mjs +73 -0
  605. package/fjs/website/module.f.d.mts +8 -0
  606. package/fjs/website/module.f.mjs +24 -0
  607. package/fjs/website/proof.f.mjs +14 -0
  608. package/package.json +12 -10
  609. package/todo/proof.f.d.mts +22 -0
  610. package/todo/proof.f.mjs +59 -0
  611. package/fjs/asn.1/module.f.d.ts +0 -62
  612. package/fjs/asn.1/module.f.js +0 -278
  613. package/fjs/asn.1/proof.f.js +0 -285
  614. package/fjs/asserts/module.f.d.ts +0 -36
  615. package/fjs/asserts/module.f.js +0 -39
  616. package/fjs/asserts/proof.f.js +0 -18
  617. package/fjs/base_n/module.f.d.ts +0 -45
  618. package/fjs/base_n/module.f.js +0 -72
  619. package/fjs/base_n/proof.f.js +0 -73
  620. package/fjs/basen/base128/module.f.d.ts +0 -20
  621. package/fjs/basen/base128/module.f.js +0 -43
  622. package/fjs/basen/base128/proof.f.js +0 -26
  623. package/fjs/basen/base64/module.f.d.ts +0 -9
  624. package/fjs/basen/base64/module.f.js +0 -71
  625. package/fjs/basen/base64/proof.f.d.ts +0 -16
  626. package/fjs/basen/base64/proof.f.js +0 -139
  627. package/fjs/basen/cbase32/module.f.d.ts +0 -11
  628. package/fjs/basen/cbase32/module.f.js +0 -55
  629. package/fjs/basen/cbase32/proof.f.d.ts +0 -7
  630. package/fjs/basen/cbase32/proof.f.js +0 -62
  631. package/fjs/bnf/data/module.f.d.ts +0 -52
  632. package/fjs/bnf/data/module.f.js +0 -143
  633. package/fjs/bnf/data/proof.f.d.ts +0 -8
  634. package/fjs/bnf/data/proof.f.js +0 -169
  635. package/fjs/bnf/descent/module.f.d.ts +0 -87
  636. package/fjs/bnf/descent/module.f.js +0 -149
  637. package/fjs/bnf/descent/proof.f.d.ts +0 -7
  638. package/fjs/bnf/descent/proof.f.js +0 -368
  639. package/fjs/bnf/ll1/module.f.d.ts +0 -72
  640. package/fjs/bnf/ll1/module.f.js +0 -155
  641. package/fjs/bnf/ll1/proof.f.d.ts +0 -10
  642. package/fjs/bnf/ll1/proof.f.js +0 -375
  643. package/fjs/bnf/module.f.d.ts +0 -165
  644. package/fjs/bnf/module.f.js +0 -174
  645. package/fjs/bnf/proof.f.d.ts +0 -12
  646. package/fjs/bnf/proof.f.js +0 -69
  647. package/fjs/bnf/testlib.f.d.ts +0 -3
  648. package/fjs/bnf/testlib.f.js +0 -138
  649. package/fjs/bnf/token_symbol/module.f.d.ts +0 -38
  650. package/fjs/bnf/token_symbol/module.f.js +0 -48
  651. package/fjs/bnf/token_symbol/proof.f.js +0 -37
  652. package/fjs/cas/cli/module.f.d.ts +0 -6
  653. package/fjs/cas/cli/module.f.js +0 -53
  654. package/fjs/cas/cli/proof.f.d.ts +0 -17
  655. package/fjs/cas/cli/proof.f.js +0 -112
  656. package/fjs/cas/evo/module.f.d.ts +0 -222
  657. package/fjs/cas/evo/module.f.js +0 -454
  658. package/fjs/cas/evo/proof.f.d.ts +0 -43
  659. package/fjs/cas/evo/proof.f.js +0 -653
  660. package/fjs/cas/module.f.d.ts +0 -64
  661. package/fjs/cas/module.f.js +0 -255
  662. package/fjs/cas/proof.f.d.ts +0 -18
  663. package/fjs/cas/proof.f.js +0 -305
  664. package/fjs/ci/bun/module.f.d.ts +0 -2
  665. package/fjs/ci/bun/module.f.js +0 -15
  666. package/fjs/ci/common/module.f.d.ts +0 -88
  667. package/fjs/ci/common/module.f.js +0 -63
  668. package/fjs/ci/config/module.f.d.ts +0 -45
  669. package/fjs/ci/config/module.f.js +0 -80
  670. package/fjs/ci/deno/module.f.d.ts +0 -10
  671. package/fjs/ci/deno/module.f.js +0 -28
  672. package/fjs/ci/deno/proof.f.d.ts +0 -5
  673. package/fjs/ci/deno/proof.f.js +0 -26
  674. package/fjs/ci/module.f.d.ts +0 -13
  675. package/fjs/ci/module.f.js +0 -58
  676. package/fjs/ci/nix/module.f.d.ts +0 -61
  677. package/fjs/ci/nix/module.f.js +0 -92
  678. package/fjs/ci/nix/proof.f.d.ts +0 -23
  679. package/fjs/ci/nix/proof.f.js +0 -109
  680. package/fjs/ci/node/module.f.d.ts +0 -28
  681. package/fjs/ci/node/module.f.js +0 -92
  682. package/fjs/ci/node/proof.f.js +0 -17
  683. package/fjs/ci/proof.f.d.ts +0 -18
  684. package/fjs/ci/proof.f.js +0 -182
  685. package/fjs/ci/rust/module.f.d.ts +0 -3
  686. package/fjs/ci/rust/module.f.js +0 -75
  687. package/fjs/cli/module.f.d.ts +0 -11
  688. package/fjs/cli/module.f.js +0 -34
  689. package/fjs/cli/proof.f.d.ts +0 -14
  690. package/fjs/cli/proof.f.js +0 -111
  691. package/fjs/common/monoid/module.f.d.ts +0 -126
  692. package/fjs/common/monoid/module.f.js +0 -88
  693. package/fjs/common/monoid/proof.f.d.ts +0 -9
  694. package/fjs/common/monoid/proof.f.js +0 -48
  695. package/fjs/crypto/hmac/module.f.d.ts +0 -29
  696. package/fjs/crypto/hmac/module.f.js +0 -56
  697. package/fjs/crypto/hmac/proof.f.js +0 -32
  698. package/fjs/crypto/pow/module.f.d.ts +0 -37
  699. package/fjs/crypto/pow/module.f.js +0 -72
  700. package/fjs/crypto/pow/proof.f.js +0 -111
  701. package/fjs/crypto/secp/module.f.d.ts +0 -85
  702. package/fjs/crypto/secp/module.f.js +0 -176
  703. package/fjs/crypto/secp/proof.f.d.ts +0 -8
  704. package/fjs/crypto/secp/proof.f.js +0 -124
  705. package/fjs/crypto/sha2/module.f.d.ts +0 -102
  706. package/fjs/crypto/sha2/module.f.js +0 -266
  707. package/fjs/crypto/sha2/proof.f.d.ts +0 -31
  708. package/fjs/crypto/sha2/proof.f.js +0 -139
  709. package/fjs/crypto/sign/module.f.d.ts +0 -33
  710. package/fjs/crypto/sign/module.f.js +0 -163
  711. package/fjs/crypto/sign/proof.f.d.ts +0 -11
  712. package/fjs/crypto/sign/proof.f.js +0 -562
  713. package/fjs/crypto/vdf/module.f.d.ts +0 -21
  714. package/fjs/crypto/vdf/module.f.js +0 -57
  715. package/fjs/crypto/vdf/proof.f.js +0 -94
  716. package/fjs/dev/module.f.d.ts +0 -57
  717. package/fjs/dev/module.f.js +0 -135
  718. package/fjs/dev/package_json/module.f.d.ts +0 -16
  719. package/fjs/dev/package_json/module.f.js +0 -24
  720. package/fjs/dev/package_json/proof.f.js +0 -28
  721. package/fjs/dev/proof.f.d.ts +0 -13
  722. package/fjs/dev/proof.f.js +0 -77
  723. package/fjs/dev/update/module.f.d.ts +0 -11
  724. package/fjs/dev/update/module.f.js +0 -20
  725. package/fjs/dev/update/proof.f.d.ts +0 -7
  726. package/fjs/dev/update/proof.f.js +0 -35
  727. package/fjs/djs/ast/module.f.d.ts +0 -62
  728. package/fjs/djs/ast/module.f.js +0 -61
  729. package/fjs/djs/ast/proof.f.js +0 -49
  730. package/fjs/djs/examples/input.f.js +0 -4
  731. package/fjs/djs/examples/m.f.js +0 -1
  732. package/fjs/djs/module.f.d.ts +0 -17
  733. package/fjs/djs/module.f.js +0 -22
  734. package/fjs/djs/parser/module.f.d.ts +0 -23
  735. package/fjs/djs/parser/module.f.js +0 -410
  736. package/fjs/djs/parser/proof.f.js +0 -556
  737. package/fjs/djs/proof.f.js +0 -50
  738. package/fjs/djs/serializer/module.f.d.ts +0 -17
  739. package/fjs/djs/serializer/module.f.js +0 -173
  740. package/fjs/djs/serializer/proof.f.js +0 -133
  741. package/fjs/djs/tokenizer/module.f.d.ts +0 -24
  742. package/fjs/djs/tokenizer/module.f.js +0 -472
  743. package/fjs/djs/tokenizer/proof.f.js +0 -1211
  744. package/fjs/djs/transpiler/module.f.d.ts +0 -41
  745. package/fjs/djs/transpiler/module.f.js +0 -88
  746. package/fjs/djs/transpiler/proof.f.js +0 -67
  747. package/fjs/effects/eff/module.f.d.ts +0 -72
  748. package/fjs/effects/eff/module.f.js +0 -46
  749. package/fjs/effects/eff/proof.f.d.ts +0 -11
  750. package/fjs/effects/eff/proof.f.js +0 -58
  751. package/fjs/effects/list/module.f.d.ts +0 -37
  752. package/fjs/effects/list/module.f.js +0 -17
  753. package/fjs/effects/memory/module.f.d.ts +0 -37
  754. package/fjs/effects/memory/module.f.js +0 -24
  755. package/fjs/effects/memory/proof.f.d.ts +0 -6
  756. package/fjs/effects/memory/proof.f.js +0 -50
  757. package/fjs/effects/mock/module.f.d.ts +0 -16
  758. package/fjs/effects/mock/module.f.js +0 -20
  759. package/fjs/effects/module.d.ts +0 -2
  760. package/fjs/effects/module.f.d.ts +0 -408
  761. package/fjs/effects/module.f.js +0 -312
  762. package/fjs/effects/module.js +0 -11
  763. package/fjs/effects/node/memory/module.d.ts +0 -20
  764. package/fjs/effects/node/memory/module.js +0 -44
  765. package/fjs/effects/node/memory/proof.js +0 -29
  766. package/fjs/effects/node/module.d.ts +0 -20
  767. package/fjs/effects/node/module.f.d.ts +0 -300
  768. package/fjs/effects/node/module.f.js +0 -171
  769. package/fjs/effects/node/module.js +0 -305
  770. package/fjs/effects/node/proof.f.d.ts +0 -69
  771. package/fjs/effects/node/proof.f.js +0 -409
  772. package/fjs/effects/node/virtual/module.f.d.ts +0 -49
  773. package/fjs/effects/node/virtual/module.f.js +0 -440
  774. package/fjs/effects/node/virtual/proof.f.d.ts +0 -33
  775. package/fjs/effects/node/virtual/proof.f.js +0 -186
  776. package/fjs/effects/proof.f.d.ts +0 -56
  777. package/fjs/effects/proof.f.js +0 -200
  778. package/fjs/emergent_testing/example.f.d.ts +0 -13
  779. package/fjs/emergent_testing/example.f.js +0 -31
  780. package/fjs/emergent_testing/module.f.d.ts +0 -140
  781. package/fjs/emergent_testing/module.f.js +0 -289
  782. package/fjs/emergent_testing/proof.f.d.ts +0 -67
  783. package/fjs/emergent_testing/proof.f.js +0 -416
  784. package/fjs/fsc/bnf.f.d.ts +0 -2
  785. package/fjs/fsc/bnf.f.js +0 -42
  786. package/fjs/fsc/json.f.d.ts +0 -7
  787. package/fjs/fsc/json.f.js +0 -64
  788. package/fjs/fsc/module.f.d.ts +0 -11
  789. package/fjs/fsc/module.f.js +0 -73
  790. package/fjs/fsc/proof.f.js +0 -104
  791. package/fjs/fsm/module.f.d.ts +0 -17
  792. package/fjs/fsm/module.f.js +0 -55
  793. package/fjs/fsm/proof.f.js +0 -126
  794. package/fjs/js/tokenizer/module.f.d.ts +0 -104
  795. package/fjs/js/tokenizer/module.f.js +0 -547
  796. package/fjs/js/tokenizer/proof.f.d.ts +0 -9
  797. package/fjs/js/tokenizer/proof.f.js +0 -986
  798. package/fjs/mcp/cas/module.f.d.ts +0 -27
  799. package/fjs/mcp/cas/module.f.js +0 -232
  800. package/fjs/mcp/evo/module.f.d.ts +0 -32
  801. package/fjs/mcp/evo/module.f.js +0 -99
  802. package/fjs/mcp/evo/proof.f.d.ts +0 -12
  803. package/fjs/mcp/evo/proof.f.js +0 -147
  804. package/fjs/mcp/module.f.d.ts +0 -56
  805. package/fjs/mcp/module.f.js +0 -69
  806. package/fjs/mcp/proof.f.d.ts +0 -45
  807. package/fjs/mcp/proof.f.js +0 -535
  808. package/fjs/media/html/module.f.d.ts +0 -52
  809. package/fjs/media/html/module.f.js +0 -117
  810. package/fjs/media/html/proof.f.js +0 -65
  811. package/fjs/media/json/module.f.d.ts +0 -64
  812. package/fjs/media/json/module.f.js +0 -109
  813. package/fjs/media/json/parser/module.f.d.ts +0 -21
  814. package/fjs/media/json/parser/module.f.js +0 -194
  815. package/fjs/media/json/parser/proof.f.d.ts +0 -5
  816. package/fjs/media/json/parser/proof.f.js +0 -314
  817. package/fjs/media/json/proof.f.js +0 -98
  818. package/fjs/media/json/schema/module.f.d.ts +0 -78
  819. package/fjs/media/json/schema/module.f.js +0 -96
  820. package/fjs/media/json/schema/proof.f.d.ts +0 -36
  821. package/fjs/media/json/schema/proof.f.js +0 -83
  822. package/fjs/media/json/serializer/module.f.d.ts +0 -28
  823. package/fjs/media/json/serializer/module.f.js +0 -73
  824. package/fjs/media/json/serializer/proof.f.js +0 -94
  825. package/fjs/media/json/tokenizer/module.f.d.ts +0 -15
  826. package/fjs/media/json/tokenizer/module.f.js +0 -63
  827. package/fjs/media/json/tokenizer/proof.f.d.ts +0 -5
  828. package/fjs/media/json/tokenizer/proof.f.js +0 -417
  829. package/fjs/media/module.f.d.ts +0 -119
  830. package/fjs/media/module.f.js +0 -88
  831. package/fjs/media/nix/module.f.d.ts +0 -30
  832. package/fjs/media/nix/module.f.js +0 -166
  833. package/fjs/media/nix/proof.f.js +0 -127
  834. package/fjs/media/proof.f.d.ts +0 -19
  835. package/fjs/media/proof.f.js +0 -127
  836. package/fjs/media/revision/module.f.d.ts +0 -86
  837. package/fjs/media/revision/module.f.js +0 -131
  838. package/fjs/media/revision/proof.f.d.ts +0 -31
  839. package/fjs/media/revision/proof.f.js +0 -140
  840. package/fjs/media/type/module.f.d.ts +0 -135
  841. package/fjs/media/type/module.f.js +0 -231
  842. package/fjs/media/type/proof.f.js +0 -213
  843. package/fjs/module.f.d.ts +0 -2
  844. package/fjs/module.f.js +0 -50
  845. package/fjs/module.js +0 -4
  846. package/fjs/path/module.f.d.ts +0 -46
  847. package/fjs/path/module.f.js +0 -71
  848. package/fjs/path/proof.f.js +0 -119
  849. package/fjs/proof.f.js +0 -38
  850. package/fjs/protocol/json_rpc/module.f.d.ts +0 -114
  851. package/fjs/protocol/json_rpc/module.f.js +0 -89
  852. package/fjs/protocol/json_rpc/proof.f.js +0 -68
  853. package/fjs/protocol/mcp/module.f.d.ts +0 -239
  854. package/fjs/protocol/mcp/module.f.js +0 -272
  855. package/fjs/protocol/mcp/proof.f.d.ts +0 -34
  856. package/fjs/protocol/mcp/proof.f.js +0 -208
  857. package/fjs/protocol/mcp/stdio/module.f.d.ts +0 -47
  858. package/fjs/protocol/mcp/stdio/module.f.js +0 -78
  859. package/fjs/protocol/mcp/stdio/proof.f.d.ts +0 -13
  860. package/fjs/protocol/mcp/stdio/proof.f.js +0 -143
  861. package/fjs/sul/id/module.f.d.ts +0 -33
  862. package/fjs/sul/id/module.f.js +0 -93
  863. package/fjs/sul/id/proof.f.js +0 -61
  864. package/fjs/sul/level/hash/module.f.d.ts +0 -38
  865. package/fjs/sul/level/hash/module.f.js +0 -43
  866. package/fjs/sul/level/hash/proof.f.d.ts +0 -13
  867. package/fjs/sul/level/hash/proof.f.js +0 -112
  868. package/fjs/sul/level/literal/module.f.d.ts +0 -64
  869. package/fjs/sul/level/literal/module.f.js +0 -88
  870. package/fjs/sul/level/literal/proof.f.js +0 -714
  871. package/fjs/sul/module.f.d.ts +0 -23
  872. package/fjs/sul/module.f.js +0 -46
  873. package/fjs/sul/proof.f.d.ts +0 -9
  874. package/fjs/sul/proof.f.js +0 -47
  875. package/fjs/text/ascii/module.f.d.ts +0 -136
  876. package/fjs/text/ascii/module.f.js +0 -154
  877. package/fjs/text/ascii/proof.f.js +0 -14
  878. package/fjs/text/code_point/module.f.d.ts +0 -65
  879. package/fjs/text/code_point/module.f.js +0 -103
  880. package/fjs/text/code_point/proof.f.js +0 -72
  881. package/fjs/text/module.f.d.ts +0 -40
  882. package/fjs/text/module.f.js +0 -43
  883. package/fjs/text/proof.f.js +0 -44
  884. package/fjs/text/sgr/module.f.d.ts +0 -53
  885. package/fjs/text/sgr/module.f.js +0 -63
  886. package/fjs/text/sgr/proof.f.js +0 -33
  887. package/fjs/text/utf16/module.f.d.ts +0 -161
  888. package/fjs/text/utf16/module.f.js +0 -311
  889. package/fjs/text/utf16/proof.f.d.ts +0 -10
  890. package/fjs/text/utf16/proof.f.js +0 -144
  891. package/fjs/text/utf8/module.f.d.ts +0 -83
  892. package/fjs/text/utf8/module.f.js +0 -247
  893. package/fjs/text/utf8/proof.f.js +0 -217
  894. package/fjs/types/array/module.f.d.ts +0 -49
  895. package/fjs/types/array/module.f.js +0 -42
  896. package/fjs/types/array/proof.f.js +0 -92
  897. package/fjs/types/bigfloat/module.f.d.ts +0 -6
  898. package/fjs/types/bigfloat/module.f.js +0 -69
  899. package/fjs/types/bigfloat/proof.f.js +0 -217
  900. package/fjs/types/bigint/module.f.d.ts +0 -172
  901. package/fjs/types/bigint/module.f.js +0 -251
  902. package/fjs/types/bigint/proof.f.d.ts +0 -37
  903. package/fjs/types/bigint/proof.f.js +0 -400
  904. package/fjs/types/bit_vec/module.f.d.ts +0 -302
  905. package/fjs/types/bit_vec/module.f.js +0 -375
  906. package/fjs/types/bit_vec/proof.f.js +0 -465
  907. package/fjs/types/btree/find/module.f.d.ts +0 -25
  908. package/fjs/types/btree/find/module.f.js +0 -80
  909. package/fjs/types/btree/find/proof.f.d.ts +0 -3
  910. package/fjs/types/btree/find/proof.f.js +0 -108
  911. package/fjs/types/btree/module.f.d.ts +0 -9
  912. package/fjs/types/btree/module.f.js +0 -33
  913. package/fjs/types/btree/proof.f.d.ts +0 -13
  914. package/fjs/types/btree/proof.f.js +0 -64
  915. package/fjs/types/btree/remove/module.f.d.ts +0 -14
  916. package/fjs/types/btree/remove/module.f.js +0 -186
  917. package/fjs/types/btree/remove/proof.f.js +0 -484
  918. package/fjs/types/btree/set/module.f.d.ts +0 -8
  919. package/fjs/types/btree/set/module.f.js +0 -128
  920. package/fjs/types/btree/set/proof.f.js +0 -368
  921. package/fjs/types/btree/types/module.f.d.ts +0 -23
  922. package/fjs/types/btree/types/module.f.js +0 -9
  923. package/fjs/types/byte_set/module.f.d.ts +0 -16
  924. package/fjs/types/byte_set/module.f.js +0 -30
  925. package/fjs/types/byte_set/proof.f.d.ts +0 -11
  926. package/fjs/types/byte_set/proof.f.js +0 -79
  927. package/fjs/types/function/compare/module.f.d.ts +0 -49
  928. package/fjs/types/function/compare/module.f.js +0 -51
  929. package/fjs/types/function/compare/proof.f.js +0 -47
  930. package/fjs/types/function/module.f.d.ts +0 -28
  931. package/fjs/types/function/module.f.js +0 -19
  932. package/fjs/types/function/operator/module.f.d.ts +0 -48
  933. package/fjs/types/function/operator/module.f.js +0 -16
  934. package/fjs/types/function/operator/proof.f.js +0 -53
  935. package/fjs/types/function/proof.f.js +0 -10
  936. package/fjs/types/list/module.f.d.ts +0 -75
  937. package/fjs/types/list/module.f.js +0 -190
  938. package/fjs/types/list/proof.f.d.ts +0 -31
  939. package/fjs/types/list/proof.f.js +0 -330
  940. package/fjs/types/map/module.f.d.ts +0 -2
  941. package/fjs/types/map/module.f.js +0 -22
  942. package/fjs/types/map/proof.f.js +0 -22
  943. package/fjs/types/nibble_set/module.f.d.ts +0 -27
  944. package/fjs/types/nibble_set/module.f.js +0 -25
  945. package/fjs/types/nibble_set/proof.f.js +0 -60
  946. package/fjs/types/nominal/module.f.d.ts +0 -22
  947. package/fjs/types/nominal/module.f.js +0 -13
  948. package/fjs/types/nominal/proof.f.d.ts +0 -4
  949. package/fjs/types/nominal/proof.f.js +0 -48
  950. package/fjs/types/nullable/module.f.d.ts +0 -21
  951. package/fjs/types/nullable/module.f.js +0 -29
  952. package/fjs/types/nullable/proof.f.js +0 -29
  953. package/fjs/types/number/module.f.d.ts +0 -16
  954. package/fjs/types/number/module.f.js +0 -30
  955. package/fjs/types/number/proof.f.js +0 -124
  956. package/fjs/types/object/module.f.d.ts +0 -54
  957. package/fjs/types/object/module.f.js +0 -25
  958. package/fjs/types/object/proof.f.d.ts +0 -4
  959. package/fjs/types/object/proof.f.js +0 -14
  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.js +0 -73
  963. package/fjs/types/patricia_trie/module.f.d.ts +0 -25
  964. package/fjs/types/patricia_trie/module.f.js +0 -35
  965. package/fjs/types/patricia_trie/proof.f.d.ts +0 -13
  966. package/fjs/types/patricia_trie/proof.f.js +0 -121
  967. package/fjs/types/prime_field/module.f.d.ts +0 -62
  968. package/fjs/types/prime_field/module.f.js +0 -112
  969. package/fjs/types/prime_field/proof.f.js +0 -128
  970. package/fjs/types/range/module.f.d.ts +0 -8
  971. package/fjs/types/range/module.f.js +0 -2
  972. package/fjs/types/range/proof.f.js +0 -9
  973. package/fjs/types/range_map/module.f.d.ts +0 -92
  974. package/fjs/types/range_map/module.f.js +0 -82
  975. package/fjs/types/range_map/proof.f.d.ts +0 -6
  976. package/fjs/types/range_map/proof.f.js +0 -151
  977. package/fjs/types/range_set/module.f.d.ts +0 -5
  978. package/fjs/types/range_set/module.f.js +0 -16
  979. package/fjs/types/range_set/proof.f.d.ts +0 -1
  980. package/fjs/types/range_set/proof.f.js +0 -19
  981. package/fjs/types/result/module.d.ts +0 -3
  982. package/fjs/types/result/module.f.d.ts +0 -61
  983. package/fjs/types/result/module.f.js +0 -54
  984. package/fjs/types/result/module.js +0 -19
  985. package/fjs/types/result/proof.f.js +0 -31
  986. package/fjs/types/rtti/common/module.f.d.ts +0 -121
  987. package/fjs/types/rtti/common/module.f.js +0 -94
  988. package/fjs/types/rtti/common/proof.f.d.ts +0 -8
  989. package/fjs/types/rtti/common/proof.f.js +0 -51
  990. package/fjs/types/rtti/module.f.d.ts +0 -75
  991. package/fjs/types/rtti/module.f.js +0 -34
  992. package/fjs/types/rtti/parse/module.f.d.ts +0 -36
  993. package/fjs/types/rtti/parse/module.f.js +0 -114
  994. package/fjs/types/rtti/parse/proof.f.d.ts +0 -115
  995. package/fjs/types/rtti/parse/proof.f.js +0 -334
  996. package/fjs/types/rtti/proof.f.d.ts +0 -5
  997. package/fjs/types/rtti/proof.f.js +0 -16
  998. package/fjs/types/rtti/ts/module.f.d.ts +0 -118
  999. package/fjs/types/rtti/ts/module.f.js +0 -59
  1000. package/fjs/types/rtti/ts/proof.f.js +0 -75
  1001. package/fjs/types/rtti/validate/module.f.d.ts +0 -4
  1002. package/fjs/types/rtti/validate/module.f.js +0 -74
  1003. package/fjs/types/rtti/validate/proof.f.d.ts +0 -118
  1004. package/fjs/types/rtti/validate/proof.f.js +0 -349
  1005. package/fjs/types/sorted_list/module.f.d.ts +0 -26
  1006. package/fjs/types/sorted_list/module.f.js +0 -51
  1007. package/fjs/types/sorted_list/proof.f.d.ts +0 -4
  1008. package/fjs/types/sorted_list/proof.f.js +0 -46
  1009. package/fjs/types/sorted_set/module.f.d.ts +0 -33
  1010. package/fjs/types/sorted_set/module.f.js +0 -5
  1011. package/fjs/types/sorted_set/proof.f.d.ts +0 -6
  1012. package/fjs/types/sorted_set/proof.f.js +0 -67
  1013. package/fjs/types/string/module.f.d.ts +0 -24
  1014. package/fjs/types/string/module.f.js +0 -35
  1015. package/fjs/types/string/proof.f.js +0 -77
  1016. package/fjs/types/string_set/module.f.d.ts +0 -30
  1017. package/fjs/types/string_set/module.f.js +0 -37
  1018. package/fjs/types/string_set/proof.f.js +0 -43
  1019. package/fjs/types/ts/module.f.d.ts +0 -23
  1020. package/fjs/types/ts/module.f.js +0 -27
  1021. package/fjs/types/ts/proof.f.js +0 -86
  1022. package/fjs/types/uint8array/module.f.d.ts +0 -13
  1023. package/fjs/types/uint8array/module.f.js +0 -34
  1024. package/fjs/types/uint8array/proof.f.d.ts +0 -17
  1025. package/fjs/types/uint8array/proof.f.js +0 -64
  1026. package/fjs/website/module.f.d.ts +0 -3
  1027. package/fjs/website/module.f.js +0 -14
  1028. package/fjs/website/proof.f.js +0 -13
  1029. package/nanvm-lib/tests/proof.f.d.ts +0 -122
  1030. package/nanvm-lib/tests/proof.f.js +0 -330
  1031. package/todo/031-json.f.js +0 -241
  1032. package/todo/proof.f.d.ts +0 -20
  1033. package/todo/proof.f.js +0 -62
  1034. /package/fjs/asn.1/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1035. /package/fjs/asserts/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1036. /package/fjs/{base_n/proof.f.d.ts → basen/proof.f.d.mts} +0 -0
  1037. /package/fjs/bnf/token_symbol/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1038. /package/{todo/031-json.f.d.ts → fjs/ci/common/types.js} +0 -0
  1039. /package/fjs/ci/node/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1040. /package/fjs/crypto/hmac/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1041. /package/fjs/crypto/pow/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1042. /package/fjs/crypto/vdf/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1043. /package/fjs/dev/package_json/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1044. /package/fjs/djs/ast/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1045. /package/fjs/djs/examples/{input.f.d.ts → input.f.d.mts} +0 -0
  1046. /package/fjs/djs/examples/{m.f.d.ts → m.f.d.mts} +0 -0
  1047. /package/fjs/djs/parser/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1048. /package/fjs/djs/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1049. /package/fjs/djs/serializer/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1050. /package/fjs/djs/tokenizer/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1051. /package/fjs/djs/transpiler/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1052. /package/fjs/effects/node/memory/{proof.d.ts → proof.d.mts} +0 -0
  1053. /package/fjs/fsc/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1054. /package/fjs/fsm/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1055. /package/fjs/media/html/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1056. /package/fjs/media/json/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1057. /package/fjs/media/json/serializer/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1058. /package/fjs/media/nix/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1059. /package/fjs/media/type/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1060. /package/fjs/{module.d.ts → module.d.mts} +0 -0
  1061. /package/fjs/path/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1062. /package/fjs/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1063. /package/fjs/protocol/json_rpc/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1064. /package/fjs/sul/id/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1065. /package/fjs/sul/level/literal/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1066. /package/fjs/text/ascii/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1067. /package/fjs/text/code_point/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1068. /package/fjs/text/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1069. /package/fjs/text/sgr/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1070. /package/fjs/text/utf8/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1071. /package/fjs/types/array/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1072. /package/fjs/types/bigfloat/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1073. /package/fjs/types/bit_vec/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1074. /package/fjs/types/btree/remove/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1075. /package/fjs/types/btree/set/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1076. /package/fjs/{basen/base128/proof.f.d.ts → types/function/compare/proof.f.d.mts} +0 -0
  1077. /package/fjs/types/function/operator/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1078. /package/fjs/types/function/{compare/proof.f.d.ts → proof.f.d.mts} +0 -0
  1079. /package/fjs/types/map/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1080. /package/fjs/types/nibble_set/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1081. /package/fjs/types/nullable/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1082. /package/fjs/types/number/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1083. /package/fjs/types/option/{module.f.d.ts → types.d.ts} +0 -0
  1084. /package/fjs/types/option/{module.f.js → types.js} +0 -0
  1085. /package/fjs/types/ordered_map/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1086. /package/fjs/types/phantom/{module.f.d.ts → types.d.ts} +0 -0
  1087. /package/fjs/types/phantom/{module.f.js → types.js} +0 -0
  1088. /package/fjs/types/prime_field/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1089. /package/fjs/types/{function/proof.f.d.ts → range/proof.f.d.mts} +0 -0
  1090. /package/fjs/types/{range/proof.f.d.ts → range_set/proof.f.d.mts} +0 -0
  1091. /package/fjs/types/result/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1092. /package/fjs/types/rtti/ts/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1093. /package/fjs/types/string/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1094. /package/fjs/types/string_set/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1095. /package/fjs/types/ts/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1096. /package/fjs/website/{proof.f.d.ts → proof.f.d.mts} +0 -0
@@ -1,653 +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
- // A raw CAS write (e.g. `cas_add`) of valid revision content is folded
600
- // into the cache exactly as `addRevision` would, without going through
601
- // `evo.add` — this is what keeps `cas_add` and `evo_add` writes to the
602
- // same store consistent (see `fjs/mcp`).
603
- syncRevisionFoldsValidRevisionIntoCache: () => {
604
- const c = fileCas(sha256)(home);
605
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
606
- const subjectHash = vecToCBase32(vec8(0x13n));
607
- const text = `{"dialect":"${revisionDialect}","subject":"${subjectHash}","parents":[],"snapshot":"${subjectHash}","generation":0}`;
608
- const bytes = tryUtf8(text);
609
- assert(bytes !== null, 'expected sample revision to encode as UTF-8');
610
- const hashVec = vec8(0x14n);
611
- const [state1] = virtual(state0)(syncRevision(cacheKey)(hashVec)(bytes));
612
- const [, heads] = virtual(state1)(evo(c)(cacheKey).head(subjectHash));
613
- assertEq(heads.length, 1);
614
- assertEq(heads[0], vecToCBase32(hashVec));
615
- },
616
- syncRevisionIgnoresNonRevisionContent: () => {
617
- const c = fileCas(sha256)(home);
618
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
619
- const [state1] = virtual(state0)(syncRevision(cacheKey)(vec8(0x15n))(vec8(0x41n)));
620
- const [, subjects] = virtual(state1)(evo(c)(cacheKey).list());
621
- assertEq(subjects.length, 0);
622
- },
623
- evoHeadUnknownSubjectIsEmpty: () => {
624
- const c = fileCas(sha256)(home);
625
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
626
- const e = evo(c)(cacheKey);
627
- const [, heads] = virtual(state0)(e.head('nope'));
628
- assertEq(heads.length, 0);
629
- },
630
- // Regression: subjects are arbitrary caller-supplied strings, so one can
631
- // collide with an inherited `Object.prototype` name. Plain bracket
632
- // indexing on the `bySubject` map would return the inherited value
633
- // (e.g. the `toString` function) instead of "no entry yet", crashing on
634
- // `.hashes` — the cache must use an own-property lookup instead.
635
- evoHeadUnknownPrototypeNamedSubjectIsEmpty: () => {
636
- const c = fileCas(sha256)(home);
637
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
638
- const e = evo(c)(cacheKey);
639
- const [, heads] = virtual(state0)(e.head('constructor'));
640
- assertEq(heads.length, 0);
641
- },
642
- evoAddAndHeadHandlePrototypeNamedSubject: () => {
643
- const c = fileCas(sha256)(home);
644
- const [state0, cacheKey] = virtual(emptyState)(initEvo(c));
645
- const e = evo(c)(cacheKey);
646
- const input = { parents: [], subject: 'toString', snapshot: vecToCBase32(vec8(0x16n)) };
647
- const [state1, result] = virtual(state0)(e.add(input));
648
- assert(result[0] === 'ok', ['expected add ok', result]);
649
- const [, heads] = virtual(state1)(e.head('toString'));
650
- assertEq(heads.length, 1);
651
- assertEq(heads[0], result[1]);
652
- },
653
- };