functionalscript 0.43.1 → 0.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1074) hide show
  1. package/README.md +53 -21
  2. package/fjs/asn.1/module.f.d.mts +123 -0
  3. package/fjs/asn.1/module.f.mjs +459 -0
  4. package/fjs/asn.1/proof.f.d.mts +53 -0
  5. package/fjs/asn.1/proof.f.mjs +321 -0
  6. package/fjs/asn.1/types.d.ts +37 -0
  7. package/fjs/asserts/module.f.d.mts +51 -0
  8. package/fjs/asserts/module.f.mjs +69 -0
  9. package/fjs/asserts/proof.f.d.mts +14 -0
  10. package/fjs/asserts/proof.f.mjs +33 -0
  11. package/fjs/asserts/types.d.ts +11 -0
  12. package/fjs/basen/base128/module.f.d.mts +22 -0
  13. package/fjs/basen/base128/module.f.mjs +51 -0
  14. package/fjs/basen/base128/proof.f.d.mts +4 -0
  15. package/fjs/basen/base128/proof.f.mjs +32 -0
  16. package/fjs/basen/base64/module.f.d.mts +14 -0
  17. package/fjs/basen/base64/module.f.mjs +75 -0
  18. package/fjs/basen/base64/proof.f.d.mts +19 -0
  19. package/fjs/basen/base64/proof.f.mjs +150 -0
  20. package/fjs/basen/cbase32/module.f.d.mts +18 -0
  21. package/fjs/basen/cbase32/module.f.mjs +61 -0
  22. package/fjs/basen/cbase32/proof.f.d.mts +10 -0
  23. package/fjs/basen/cbase32/proof.f.mjs +79 -0
  24. package/fjs/basen/module.f.d.mts +30 -0
  25. package/fjs/basen/module.f.mjs +88 -0
  26. package/fjs/basen/proof.f.mjs +69 -0
  27. package/fjs/basen/types.d.ts +14 -0
  28. package/fjs/bnf/data/module.f.d.mts +47 -0
  29. package/fjs/bnf/data/module.f.mjs +188 -0
  30. package/fjs/bnf/data/proof.f.d.mts +13 -0
  31. package/fjs/bnf/data/proof.f.mjs +159 -0
  32. package/fjs/bnf/data/types.d.ts +35 -0
  33. package/fjs/bnf/descent/module.f.d.mts +48 -0
  34. package/fjs/bnf/descent/module.f.mjs +289 -0
  35. package/fjs/bnf/descent/proof.f.d.mts +14 -0
  36. package/fjs/bnf/descent/proof.f.mjs +427 -0
  37. package/fjs/bnf/descent/types.d.ts +79 -0
  38. package/fjs/bnf/ll1/module.f.d.mts +67 -0
  39. package/fjs/bnf/ll1/module.f.mjs +341 -0
  40. package/fjs/bnf/ll1/proof.f.d.mts +18 -0
  41. package/fjs/bnf/ll1/proof.f.mjs +413 -0
  42. package/fjs/bnf/ll1/types.d.ts +65 -0
  43. package/fjs/bnf/module.f.d.mts +173 -0
  44. package/fjs/bnf/module.f.mjs +339 -0
  45. package/fjs/bnf/proof.f.d.mts +19 -0
  46. package/fjs/bnf/proof.f.mjs +165 -0
  47. package/fjs/bnf/testlib.f.d.mts +10 -0
  48. package/fjs/bnf/testlib.f.mjs +196 -0
  49. package/fjs/bnf/token_symbol/module.f.d.mts +36 -0
  50. package/fjs/bnf/token_symbol/module.f.mjs +63 -0
  51. package/fjs/bnf/token_symbol/proof.f.mjs +46 -0
  52. package/fjs/bnf/token_symbol/types.d.ts +27 -0
  53. package/fjs/bnf/types.d.ts +74 -0
  54. package/fjs/cas/cli/module.f.d.mts +17 -0
  55. package/fjs/cas/cli/module.f.mjs +73 -0
  56. package/fjs/cas/cli/proof.f.d.mts +20 -0
  57. package/fjs/cas/cli/proof.f.mjs +120 -0
  58. package/fjs/cas/evo/module.f.d.mts +157 -0
  59. package/fjs/cas/evo/module.f.mjs +563 -0
  60. package/fjs/cas/evo/proof.f.d.mts +55 -0
  61. package/fjs/cas/evo/proof.f.mjs +752 -0
  62. package/fjs/cas/evo/types.d.ts +111 -0
  63. package/fjs/cas/module.f.d.mts +68 -0
  64. package/fjs/cas/module.f.mjs +350 -0
  65. package/fjs/cas/proof.f.d.mts +29 -0
  66. package/fjs/cas/proof.f.mjs +371 -0
  67. package/fjs/cas/types.d.ts +35 -0
  68. package/fjs/ci/bun/module.f.d.mts +11 -0
  69. package/fjs/ci/bun/module.f.mjs +20 -0
  70. package/fjs/ci/common/module.f.d.mts +80 -0
  71. package/fjs/ci/common/module.f.mjs +88 -0
  72. package/fjs/ci/common/types.d.ts +27 -0
  73. package/fjs/ci/config/module.f.d.mts +45 -0
  74. package/fjs/ci/config/module.f.mjs +89 -0
  75. package/fjs/ci/deno/module.f.d.mts +16 -0
  76. package/fjs/ci/deno/module.f.mjs +29 -0
  77. package/fjs/ci/deno/proof.f.d.mts +4 -0
  78. package/fjs/ci/deno/proof.f.mjs +26 -0
  79. package/fjs/ci/module.f.d.mts +19 -0
  80. package/fjs/ci/module.f.mjs +89 -0
  81. package/fjs/ci/nix/module.f.d.mts +69 -0
  82. package/fjs/ci/nix/module.f.mjs +136 -0
  83. package/fjs/ci/nix/proof.f.d.mts +30 -0
  84. package/fjs/ci/nix/proof.f.mjs +146 -0
  85. package/fjs/ci/nix/types.d.ts +16 -0
  86. package/fjs/ci/node/module.f.d.mts +48 -0
  87. package/fjs/ci/node/module.f.mjs +139 -0
  88. package/fjs/ci/node/proof.f.mjs +18 -0
  89. package/fjs/ci/proof.f.d.mts +22 -0
  90. package/fjs/ci/proof.f.mjs +220 -0
  91. package/fjs/ci/rust/module.f.d.mts +15 -0
  92. package/fjs/ci/rust/module.f.mjs +108 -0
  93. package/fjs/ci/types.d.ts +9 -0
  94. package/fjs/cli/module.f.d.mts +16 -0
  95. package/fjs/cli/module.f.mjs +51 -0
  96. package/fjs/cli/proof.f.d.mts +18 -0
  97. package/fjs/cli/proof.f.mjs +132 -0
  98. package/fjs/cli/types.d.ts +15 -0
  99. package/fjs/common/monoid/module.f.d.mts +145 -0
  100. package/fjs/common/monoid/module.f.mjs +267 -0
  101. package/fjs/common/monoid/proof.f.d.mts +21 -0
  102. package/fjs/common/monoid/proof.f.mjs +142 -0
  103. package/fjs/common/monoid/types.d.ts +73 -0
  104. package/fjs/crypto/hmac/module.f.d.mts +32 -0
  105. package/fjs/crypto/hmac/module.f.mjs +65 -0
  106. package/fjs/crypto/hmac/proof.f.mjs +34 -0
  107. package/fjs/crypto/pow/module.f.d.mts +43 -0
  108. package/fjs/crypto/pow/module.f.mjs +93 -0
  109. package/fjs/crypto/pow/proof.f.mjs +121 -0
  110. package/fjs/crypto/pow/types.d.ts +19 -0
  111. package/fjs/crypto/secp/module.f.d.mts +61 -0
  112. package/fjs/crypto/secp/module.f.mjs +204 -0
  113. package/fjs/crypto/secp/proof.f.d.mts +11 -0
  114. package/fjs/crypto/secp/proof.f.mjs +139 -0
  115. package/fjs/crypto/secp/types.d.ts +36 -0
  116. package/fjs/crypto/sha2/module.f.d.mts +80 -0
  117. package/fjs/crypto/sha2/module.f.mjs +431 -0
  118. package/fjs/crypto/sha2/proof.f.d.mts +34 -0
  119. package/fjs/crypto/sha2/proof.f.mjs +146 -0
  120. package/fjs/crypto/sha2/types.d.ts +57 -0
  121. package/fjs/crypto/sign/module.f.d.mts +46 -0
  122. package/fjs/crypto/sign/module.f.mjs +189 -0
  123. package/fjs/crypto/sign/proof.f.d.mts +17 -0
  124. package/fjs/crypto/sign/proof.f.mjs +604 -0
  125. package/fjs/crypto/sign/types.d.ts +13 -0
  126. package/fjs/crypto/vdf/module.f.d.mts +34 -0
  127. package/fjs/crypto/vdf/module.f.mjs +86 -0
  128. package/fjs/crypto/vdf/proof.f.mjs +106 -0
  129. package/fjs/crypto/vdf/types.d.ts +18 -0
  130. package/fjs/dev/module.f.d.mts +59 -0
  131. package/fjs/dev/module.f.mjs +171 -0
  132. package/fjs/dev/package_json/module.f.d.mts +39 -0
  133. package/fjs/dev/package_json/module.f.mjs +40 -0
  134. package/fjs/dev/package_json/proof.f.mjs +32 -0
  135. package/fjs/dev/proof.f.d.mts +13 -0
  136. package/fjs/dev/proof.f.mjs +78 -0
  137. package/fjs/dev/types.d.ts +14 -0
  138. package/fjs/dev/update/module.f.d.mts +22 -0
  139. package/fjs/dev/update/module.f.mjs +37 -0
  140. package/fjs/dev/update/proof.f.d.mts +10 -0
  141. package/fjs/dev/update/proof.f.mjs +35 -0
  142. package/fjs/djs/ast/module.f.d.mts +35 -0
  143. package/fjs/djs/ast/module.f.mjs +82 -0
  144. package/fjs/djs/ast/proof.f.mjs +48 -0
  145. package/fjs/djs/ast/types.d.ts +54 -0
  146. package/fjs/djs/examples/input.f.mjs +4 -0
  147. package/fjs/djs/examples/m.f.mjs +1 -0
  148. package/fjs/djs/module.f.d.mts +17 -0
  149. package/fjs/djs/module.f.mjs +47 -0
  150. package/fjs/djs/parser/module.f.d.mts +78 -0
  151. package/fjs/djs/parser/module.f.mjs +565 -0
  152. package/fjs/djs/parser/proof.f.d.mts +17 -0
  153. package/fjs/djs/parser/proof.f.mjs +555 -0
  154. package/fjs/djs/parser/types.d.ts +11 -0
  155. package/fjs/djs/proof.f.d.mts +13 -0
  156. package/fjs/djs/proof.f.mjs +55 -0
  157. package/fjs/djs/serializer/module.f.d.mts +30 -0
  158. package/fjs/djs/serializer/module.f.mjs +207 -0
  159. package/fjs/djs/serializer/proof.f.mjs +116 -0
  160. package/fjs/djs/tokenizer/module.f.d.mts +65 -0
  161. package/fjs/djs/tokenizer/module.f.mjs +632 -0
  162. package/fjs/djs/tokenizer/proof.f.d.mts +17 -0
  163. package/fjs/djs/tokenizer/proof.f.mjs +992 -0
  164. package/fjs/djs/tokenizer/types.d.ts +20 -0
  165. package/fjs/djs/transpiler/module.f.d.mts +33 -0
  166. package/fjs/djs/transpiler/module.f.mjs +122 -0
  167. package/fjs/djs/transpiler/proof.f.mjs +76 -0
  168. package/fjs/djs/transpiler/types.d.ts +25 -0
  169. package/fjs/djs/types.d.ts +13 -0
  170. package/fjs/effects/eff/module.f.d.mts +20 -0
  171. package/fjs/effects/eff/module.f.mjs +70 -0
  172. package/fjs/effects/eff/proof.f.d.mts +15 -0
  173. package/fjs/effects/eff/proof.f.mjs +69 -0
  174. package/fjs/effects/eff/types.d.ts +71 -0
  175. package/fjs/effects/list/module.f.d.mts +32 -0
  176. package/fjs/effects/list/module.f.mjs +36 -0
  177. package/fjs/effects/list/types.d.ts +26 -0
  178. package/fjs/effects/memory/module.f.d.mts +34 -0
  179. package/fjs/effects/memory/module.f.mjs +45 -0
  180. package/fjs/effects/memory/proof.f.d.mts +16 -0
  181. package/fjs/effects/memory/proof.f.mjs +86 -0
  182. package/fjs/effects/memory/types.d.ts +18 -0
  183. package/fjs/effects/mock/module.f.d.mts +14 -0
  184. package/fjs/effects/mock/module.f.mjs +28 -0
  185. package/fjs/effects/mock/types.d.ts +15 -0
  186. package/fjs/effects/module.d.mts +15 -0
  187. package/fjs/effects/module.f.d.mts +352 -0
  188. package/fjs/effects/module.f.mjs +383 -0
  189. package/fjs/effects/module.mjs +26 -0
  190. package/fjs/effects/node/memory/module.d.mts +27 -0
  191. package/fjs/effects/node/memory/module.mjs +60 -0
  192. package/fjs/effects/node/memory/proof.d.mts +12 -0
  193. package/fjs/effects/node/memory/proof.mjs +44 -0
  194. package/fjs/effects/node/module.d.mts +59 -0
  195. package/fjs/effects/node/module.f.d.mts +177 -0
  196. package/fjs/effects/node/module.f.mjs +348 -0
  197. package/fjs/effects/node/module.mjs +381 -0
  198. package/fjs/effects/node/proof.f.d.mts +76 -0
  199. package/fjs/effects/node/proof.f.mjs +444 -0
  200. package/fjs/effects/node/types.d.ts +203 -0
  201. package/fjs/effects/node/virtual/module.f.d.mts +34 -0
  202. package/fjs/effects/node/virtual/module.f.mjs +435 -0
  203. package/fjs/effects/node/virtual/proof.f.d.mts +38 -0
  204. package/fjs/effects/node/virtual/proof.f.mjs +238 -0
  205. package/fjs/effects/node/virtual/types.d.ts +39 -0
  206. package/fjs/effects/proof.f.d.mts +65 -0
  207. package/fjs/effects/proof.f.mjs +234 -0
  208. package/fjs/effects/types.d.ts +115 -0
  209. package/fjs/emergent_testing/all.test.d.mts +8 -0
  210. package/fjs/emergent_testing/all.test.mjs +14 -0
  211. package/fjs/emergent_testing/example.f.d.mts +16 -0
  212. package/fjs/emergent_testing/example.f.mjs +34 -0
  213. package/fjs/emergent_testing/module.f.d.mts +155 -0
  214. package/fjs/emergent_testing/module.f.mjs +388 -0
  215. package/fjs/emergent_testing/proof.f.d.mts +97 -0
  216. package/fjs/emergent_testing/proof.f.mjs +518 -0
  217. package/fjs/emergent_testing/types.d.ts +53 -0
  218. package/fjs/fsc/bnf.f.d.mts +6 -0
  219. package/fjs/fsc/bnf.f.mjs +80 -0
  220. package/fjs/fsc/json.f.d.mts +16 -0
  221. package/fjs/fsc/json.f.mjs +127 -0
  222. package/fjs/fsc/module.f.d.mts +23 -0
  223. package/fjs/fsc/module.f.mjs +140 -0
  224. package/fjs/fsc/proof.f.mjs +119 -0
  225. package/fjs/fsm/module.f.d.mts +27 -0
  226. package/fjs/fsm/module.f.mjs +99 -0
  227. package/fjs/fsm/proof.f.d.mts +7 -0
  228. package/fjs/fsm/proof.f.mjs +149 -0
  229. package/fjs/js/tokenizer/module.f.d.mts +26 -0
  230. package/fjs/js/tokenizer/module.f.mjs +759 -0
  231. package/fjs/js/tokenizer/proof.f.d.mts +12 -0
  232. package/fjs/js/tokenizer/proof.f.mjs +681 -0
  233. package/fjs/js/tokenizer/types.d.ts +193 -0
  234. package/fjs/mcp/cas/module.f.d.mts +156 -0
  235. package/fjs/mcp/cas/module.f.mjs +302 -0
  236. package/fjs/mcp/evo/module.f.d.mts +88 -0
  237. package/fjs/mcp/evo/module.f.mjs +153 -0
  238. package/fjs/mcp/evo/proof.f.d.mts +17 -0
  239. package/fjs/mcp/evo/proof.f.mjs +166 -0
  240. package/fjs/mcp/module.f.d.mts +67 -0
  241. package/fjs/mcp/module.f.mjs +98 -0
  242. package/fjs/mcp/proof.f.d.mts +56 -0
  243. package/fjs/mcp/proof.f.mjs +718 -0
  244. package/fjs/media/html/module.f.d.mts +55 -0
  245. package/fjs/media/html/module.f.mjs +169 -0
  246. package/fjs/media/html/proof.f.d.mts +19 -0
  247. package/fjs/media/html/proof.f.mjs +80 -0
  248. package/fjs/media/html/types.d.ts +19 -0
  249. package/fjs/media/json/module.f.d.mts +48 -0
  250. package/fjs/media/json/module.f.mjs +104 -0
  251. package/fjs/media/json/parser/module.f.d.mts +30 -0
  252. package/fjs/media/json/parser/module.f.mjs +236 -0
  253. package/fjs/media/json/parser/proof.f.d.mts +8 -0
  254. package/fjs/media/json/parser/proof.f.mjs +314 -0
  255. package/fjs/media/json/parser/types.d.ts +39 -0
  256. package/fjs/media/json/proof.f.mjs +79 -0
  257. package/fjs/media/json/rtti/module.f.d.mts +38 -0
  258. package/fjs/media/json/rtti/module.f.mjs +51 -0
  259. package/fjs/media/json/rtti/proof.f.d.mts +29 -0
  260. package/fjs/media/json/rtti/proof.f.mjs +86 -0
  261. package/fjs/media/json/schema/module.f.d.mts +113 -0
  262. package/fjs/media/json/schema/module.f.mjs +309 -0
  263. package/fjs/media/json/schema/proof.f.d.mts +81 -0
  264. package/fjs/media/json/schema/proof.f.mjs +305 -0
  265. package/fjs/media/json/serializer/module.f.d.mts +40 -0
  266. package/fjs/media/json/serializer/module.f.mjs +131 -0
  267. package/fjs/media/json/serializer/proof.f.mjs +92 -0
  268. package/fjs/media/json/tokenizer/module.f.d.mts +25 -0
  269. package/fjs/media/json/tokenizer/module.f.mjs +96 -0
  270. package/fjs/media/json/tokenizer/proof.f.d.mts +8 -0
  271. package/fjs/media/json/tokenizer/proof.f.mjs +291 -0
  272. package/fjs/media/json/tokenizer/types.d.ts +17 -0
  273. package/fjs/media/json/types.d.ts +25 -0
  274. package/fjs/media/module.f.d.mts +116 -0
  275. package/fjs/media/module.f.mjs +152 -0
  276. package/fjs/media/nix/module.f.d.mts +27 -0
  277. package/fjs/media/nix/module.f.mjs +263 -0
  278. package/fjs/media/nix/proof.f.d.mts +35 -0
  279. package/fjs/media/nix/proof.f.mjs +184 -0
  280. package/fjs/media/nix/types.d.ts +22 -0
  281. package/fjs/media/proof.f.d.mts +19 -0
  282. package/fjs/media/proof.f.mjs +159 -0
  283. package/fjs/media/revision/module.f.d.mts +124 -0
  284. package/fjs/media/revision/module.f.mjs +163 -0
  285. package/fjs/media/revision/proof.f.d.mts +46 -0
  286. package/fjs/media/revision/proof.f.mjs +231 -0
  287. package/fjs/media/revision/types.d.ts +16 -0
  288. package/fjs/media/rust/module.f.d.mts +61 -0
  289. package/fjs/media/rust/module.f.mjs +93 -0
  290. package/fjs/media/rust/proof.f.d.mts +17 -0
  291. package/fjs/media/rust/proof.f.mjs +50 -0
  292. package/fjs/media/type/module.f.d.mts +114 -0
  293. package/fjs/media/type/module.f.mjs +265 -0
  294. package/fjs/media/type/proof.f.d.mts +56 -0
  295. package/fjs/media/type/proof.f.mjs +325 -0
  296. package/fjs/media/type/types.d.ts +67 -0
  297. package/fjs/media/types.d.ts +26 -0
  298. package/fjs/module.d.mts +7 -0
  299. package/fjs/module.f.d.mts +11 -0
  300. package/fjs/module.f.mjs +62 -0
  301. package/fjs/module.mjs +12 -0
  302. package/fjs/nanvm/module.f.d.mts +54 -0
  303. package/fjs/nanvm/module.f.mjs +240 -0
  304. package/fjs/nanvm/proof.f.d.mts +41 -0
  305. package/fjs/nanvm/proof.f.mjs +173 -0
  306. package/fjs/nanvm/rust/module.f.d.mts +54 -0
  307. package/fjs/nanvm/rust/module.f.mjs +166 -0
  308. package/fjs/nanvm/rust/proof.f.d.mts +21 -0
  309. package/fjs/nanvm/rust/proof.f.mjs +119 -0
  310. package/fjs/nanvm/types.d.ts +105 -0
  311. package/fjs/nanvm/update/module.f.d.mts +23 -0
  312. package/fjs/nanvm/update/module.f.mjs +33 -0
  313. package/fjs/nanvm/update/proof.f.d.mts +9 -0
  314. package/fjs/nanvm/update/proof.f.mjs +32 -0
  315. package/fjs/path/module.f.d.mts +63 -0
  316. package/fjs/path/module.f.mjs +98 -0
  317. package/fjs/path/proof.f.mjs +125 -0
  318. package/fjs/proof.f.d.mts +13 -0
  319. package/fjs/proof.f.mjs +51 -0
  320. package/fjs/protocol/json_rpc/module.f.d.mts +127 -0
  321. package/fjs/protocol/json_rpc/module.f.mjs +115 -0
  322. package/fjs/protocol/json_rpc/proof.f.d.mts +41 -0
  323. package/fjs/protocol/json_rpc/proof.f.mjs +105 -0
  324. package/fjs/protocol/json_rpc/types.d.ts +30 -0
  325. package/fjs/protocol/mcp/module.f.d.mts +227 -0
  326. package/fjs/protocol/mcp/module.f.mjs +369 -0
  327. package/fjs/protocol/mcp/proof.f.d.mts +57 -0
  328. package/fjs/protocol/mcp/proof.f.mjs +335 -0
  329. package/fjs/protocol/mcp/stdio/module.f.d.mts +50 -0
  330. package/fjs/protocol/mcp/stdio/module.f.mjs +125 -0
  331. package/fjs/protocol/mcp/stdio/proof.f.d.mts +20 -0
  332. package/fjs/protocol/mcp/stdio/proof.f.mjs +190 -0
  333. package/fjs/protocol/mcp/stdio/types.d.ts +14 -0
  334. package/fjs/protocol/mcp/types.d.ts +59 -0
  335. package/fjs/sul/id/module.f.d.mts +42 -0
  336. package/fjs/sul/id/module.f.mjs +144 -0
  337. package/fjs/sul/id/proof.f.mjs +72 -0
  338. package/fjs/sul/id/types.d.ts +8 -0
  339. package/fjs/sul/level/hash/module.f.d.mts +40 -0
  340. package/fjs/sul/level/hash/module.f.mjs +62 -0
  341. package/fjs/sul/level/hash/proof.f.d.mts +19 -0
  342. package/fjs/sul/level/hash/proof.f.mjs +134 -0
  343. package/fjs/sul/level/hash/types.d.ts +20 -0
  344. package/fjs/sul/level/literal/module.f.d.mts +57 -0
  345. package/fjs/sul/level/literal/module.f.mjs +121 -0
  346. package/fjs/sul/level/literal/proof.f.d.mts +15 -0
  347. package/fjs/sul/level/literal/proof.f.mjs +791 -0
  348. package/fjs/sul/level/literal/types.d.ts +31 -0
  349. package/fjs/sul/module.f.d.mts +27 -0
  350. package/fjs/sul/module.f.mjs +70 -0
  351. package/fjs/sul/proof.f.d.mts +15 -0
  352. package/fjs/sul/proof.f.mjs +65 -0
  353. package/fjs/sul/types.d.ts +19 -0
  354. package/fjs/text/ascii/module.f.d.mts +162 -0
  355. package/fjs/text/ascii/module.f.mjs +272 -0
  356. package/fjs/text/ascii/proof.f.d.mts +16 -0
  357. package/fjs/text/ascii/proof.f.mjs +48 -0
  358. package/fjs/text/code_point/module.f.d.mts +92 -0
  359. package/fjs/text/code_point/module.f.mjs +155 -0
  360. package/fjs/text/code_point/proof.f.d.mts +9 -0
  361. package/fjs/text/code_point/proof.f.mjs +108 -0
  362. package/fjs/text/module.f.d.mts +41 -0
  363. package/fjs/text/module.f.mjs +62 -0
  364. package/fjs/text/proof.f.d.mts +13 -0
  365. package/fjs/text/proof.f.mjs +51 -0
  366. package/fjs/text/sgr/module.f.d.mts +61 -0
  367. package/fjs/text/sgr/module.f.mjs +100 -0
  368. package/fjs/text/sgr/proof.f.d.mts +4 -0
  369. package/fjs/text/sgr/proof.f.mjs +42 -0
  370. package/fjs/text/sgr/types.d.ts +12 -0
  371. package/fjs/text/types.d.ts +13 -0
  372. package/fjs/text/utf16/module.f.d.mts +151 -0
  373. package/fjs/text/utf16/module.f.mjs +348 -0
  374. package/fjs/text/utf16/proof.f.d.mts +13 -0
  375. package/fjs/text/utf16/proof.f.mjs +175 -0
  376. package/fjs/text/utf16/types.d.ts +19 -0
  377. package/fjs/text/utf8/module.f.d.mts +73 -0
  378. package/fjs/text/utf8/module.f.mjs +278 -0
  379. package/fjs/text/utf8/proof.f.mjs +217 -0
  380. package/fjs/text/utf8/types.d.ts +26 -0
  381. package/fjs/types/array/module.f.d.mts +69 -0
  382. package/fjs/types/array/module.f.mjs +101 -0
  383. package/fjs/types/array/proof.f.mjs +98 -0
  384. package/fjs/types/array/types.d.ts +13 -0
  385. package/fjs/types/bigfloat/module.f.d.mts +34 -0
  386. package/fjs/types/bigfloat/module.f.mjs +125 -0
  387. package/fjs/types/bigfloat/proof.f.d.mts +6 -0
  388. package/fjs/types/bigfloat/proof.f.mjs +264 -0
  389. package/fjs/types/bigfloat/types.d.ts +6 -0
  390. package/fjs/types/bigint/benchmark.mjs +205 -0
  391. package/fjs/types/bigint/module.f.d.mts +180 -0
  392. package/fjs/types/bigint/module.f.mjs +290 -0
  393. package/fjs/types/bigint/proof.f.d.mts +39 -0
  394. package/fjs/types/bigint/proof.f.mjs +443 -0
  395. package/fjs/types/bigint/types.d.ts +14 -0
  396. package/fjs/types/bit_vec/module.f.d.mts +195 -0
  397. package/fjs/types/bit_vec/module.f.mjs +475 -0
  398. package/fjs/types/bit_vec/proof.f.d.mts +71 -0
  399. package/fjs/types/bit_vec/proof.f.mjs +521 -0
  400. package/fjs/types/bit_vec/types.d.ts +51 -0
  401. package/fjs/types/btree/find/module.f.d.mts +19 -0
  402. package/fjs/types/btree/find/module.f.mjs +80 -0
  403. package/fjs/types/btree/find/proof.f.d.mts +8 -0
  404. package/fjs/types/btree/find/proof.f.mjs +123 -0
  405. package/fjs/types/btree/find/types.d.ts +22 -0
  406. package/fjs/types/btree/module.f.d.mts +13 -0
  407. package/fjs/types/btree/module.f.mjs +40 -0
  408. package/fjs/types/btree/proof.f.d.mts +18 -0
  409. package/fjs/types/btree/proof.f.mjs +87 -0
  410. package/fjs/types/btree/remove/module.f.d.mts +32 -0
  411. package/fjs/types/btree/remove/module.f.mjs +187 -0
  412. package/fjs/types/btree/remove/proof.f.d.mts +12 -0
  413. package/fjs/types/btree/remove/proof.f.mjs +475 -0
  414. package/fjs/types/btree/set/module.f.d.mts +14 -0
  415. package/fjs/types/btree/set/module.f.mjs +116 -0
  416. package/fjs/types/btree/set/proof.f.d.mts +4 -0
  417. package/fjs/types/btree/set/proof.f.mjs +430 -0
  418. package/fjs/types/btree/types/module.f.d.mts +20 -0
  419. package/fjs/types/btree/types/module.f.mjs +20 -0
  420. package/fjs/types/btree/types/types.d.ts +14 -0
  421. package/fjs/types/byte_set/module.f.d.mts +35 -0
  422. package/fjs/types/byte_set/module.f.mjs +68 -0
  423. package/fjs/types/byte_set/proof.f.d.mts +14 -0
  424. package/fjs/types/byte_set/proof.f.mjs +86 -0
  425. package/fjs/types/byte_set/types.d.ts +6 -0
  426. package/fjs/types/function/compare/module.f.d.mts +45 -0
  427. package/fjs/types/function/compare/module.f.mjs +72 -0
  428. package/fjs/types/function/compare/proof.f.mjs +50 -0
  429. package/fjs/types/function/compare/types.d.ts +22 -0
  430. package/fjs/types/function/module.f.d.mts +33 -0
  431. package/fjs/types/function/module.f.mjs +39 -0
  432. package/fjs/types/function/operator/module.f.d.mts +38 -0
  433. package/fjs/types/function/operator/module.f.mjs +55 -0
  434. package/fjs/types/function/operator/proof.f.mjs +76 -0
  435. package/fjs/types/function/operator/types.d.ts +39 -0
  436. package/fjs/types/function/proof.f.mjs +16 -0
  437. package/fjs/types/function/types.d.ts +16 -0
  438. package/fjs/types/list/module.f.d.mts +95 -0
  439. package/fjs/types/list/module.f.mjs +311 -0
  440. package/fjs/types/list/proof.f.d.mts +35 -0
  441. package/fjs/types/list/proof.f.mjs +365 -0
  442. package/fjs/types/list/types.d.ts +36 -0
  443. package/fjs/types/map/module.f.d.mts +13 -0
  444. package/fjs/types/map/module.f.mjs +42 -0
  445. package/fjs/types/map/proof.f.mjs +25 -0
  446. package/fjs/types/nibble_set/module.f.d.mts +31 -0
  447. package/fjs/types/nibble_set/module.f.mjs +43 -0
  448. package/fjs/types/nibble_set/proof.f.mjs +59 -0
  449. package/fjs/types/nibble_set/types.d.ts +9 -0
  450. package/fjs/types/nominal/module.f.d.mts +10 -0
  451. package/fjs/types/nominal/module.f.mjs +17 -0
  452. package/fjs/types/nominal/proof.f.d.mts +7 -0
  453. package/fjs/types/nominal/proof.f.mjs +79 -0
  454. package/fjs/types/nominal/types.d.ts +25 -0
  455. package/fjs/types/nullable/module.f.d.mts +44 -0
  456. package/fjs/types/nullable/module.f.mjs +55 -0
  457. package/fjs/types/nullable/proof.f.mjs +34 -0
  458. package/fjs/types/nullable/types.d.ts +6 -0
  459. package/fjs/types/number/module.f.d.mts +27 -0
  460. package/fjs/types/number/module.f.mjs +56 -0
  461. package/fjs/types/number/proof.f.mjs +204 -0
  462. package/fjs/types/object/module.f.d.mts +45 -0
  463. package/fjs/types/object/module.f.mjs +67 -0
  464. package/fjs/types/object/proof.f.d.mts +28 -0
  465. package/fjs/types/object/proof.f.mjs +29 -0
  466. package/fjs/types/object/structurally_same/module.f.d.mts +39 -0
  467. package/fjs/types/object/structurally_same/module.f.mjs +59 -0
  468. package/fjs/types/object/structurally_same/proof.f.d.mts +6 -0
  469. package/fjs/types/object/structurally_same/proof.f.mjs +73 -0
  470. package/fjs/types/object/types.d.ts +50 -0
  471. package/fjs/types/ordered_map/module.f.d.mts +26 -0
  472. package/fjs/types/ordered_map/module.f.mjs +55 -0
  473. package/fjs/types/ordered_map/proof.f.d.mts +8 -0
  474. package/fjs/types/ordered_map/proof.f.mjs +91 -0
  475. package/fjs/types/ordered_map/types.d.ts +8 -0
  476. package/fjs/types/patricia_trie/module.f.d.mts +20 -0
  477. package/fjs/types/patricia_trie/module.f.mjs +43 -0
  478. package/fjs/types/patricia_trie/proof.f.d.mts +17 -0
  479. package/fjs/types/patricia_trie/proof.f.mjs +151 -0
  480. package/fjs/types/patricia_trie/types.d.ts +34 -0
  481. package/fjs/types/prime_field/module.f.d.mts +44 -0
  482. package/fjs/types/prime_field/module.f.mjs +137 -0
  483. package/fjs/types/prime_field/proof.f.mjs +131 -0
  484. package/fjs/types/prime_field/types.d.ts +38 -0
  485. package/fjs/types/range/module.f.d.mts +12 -0
  486. package/fjs/types/range/module.f.mjs +13 -0
  487. package/fjs/types/range/proof.f.mjs +10 -0
  488. package/fjs/types/range/types.d.ts +6 -0
  489. package/fjs/types/range_map/module.f.d.mts +78 -0
  490. package/fjs/types/range_map/module.f.mjs +127 -0
  491. package/fjs/types/range_map/proof.f.d.mts +11 -0
  492. package/fjs/types/range_map/proof.f.mjs +188 -0
  493. package/fjs/types/range_map/types.d.ts +56 -0
  494. package/fjs/types/range_set/module.f.d.mts +10 -0
  495. package/fjs/types/range_set/module.f.mjs +20 -0
  496. package/fjs/types/range_set/proof.f.d.mts +4 -0
  497. package/fjs/types/range_set/proof.f.mjs +29 -0
  498. package/fjs/types/result/module.d.mts +13 -0
  499. package/fjs/types/result/module.f.d.mts +89 -0
  500. package/fjs/types/result/module.f.mjs +97 -0
  501. package/fjs/types/result/module.mjs +30 -0
  502. package/fjs/types/result/proof.f.d.mts +17 -0
  503. package/fjs/types/result/proof.f.mjs +61 -0
  504. package/fjs/types/result/types.d.ts +17 -0
  505. package/fjs/types/rtti/common/module.f.d.mts +119 -0
  506. package/fjs/types/rtti/common/module.f.mjs +185 -0
  507. package/fjs/types/rtti/common/proof.f.d.mts +13 -0
  508. package/fjs/types/rtti/common/proof.f.mjs +67 -0
  509. package/fjs/types/rtti/common/types.d.ts +43 -0
  510. package/fjs/types/rtti/data/module.f.d.mts +120 -0
  511. package/fjs/types/rtti/data/module.f.mjs +1030 -0
  512. package/fjs/types/rtti/data/proof.f.d.mts +75 -0
  513. package/fjs/types/rtti/data/proof.f.mjs +566 -0
  514. package/fjs/types/rtti/data/types.d.ts +83 -0
  515. package/fjs/types/rtti/module.f.d.mts +83 -0
  516. package/fjs/types/rtti/module.f.mjs +112 -0
  517. package/fjs/types/rtti/parse/module.f.d.mts +47 -0
  518. package/fjs/types/rtti/parse/module.f.mjs +198 -0
  519. package/fjs/types/rtti/parse/proof.f.d.mts +122 -0
  520. package/fjs/types/rtti/parse/proof.f.mjs +343 -0
  521. package/fjs/types/rtti/parse/types.d.ts +12 -0
  522. package/fjs/types/rtti/proof.f.d.mts +10 -0
  523. package/fjs/types/rtti/proof.f.mjs +22 -0
  524. package/fjs/types/rtti/ts/module.f.d.mts +93 -0
  525. package/fjs/types/rtti/ts/module.f.mjs +296 -0
  526. package/fjs/types/rtti/ts/proof.f.d.mts +103 -0
  527. package/fjs/types/rtti/ts/proof.f.mjs +236 -0
  528. package/fjs/types/rtti/ts/types.d.ts +99 -0
  529. package/fjs/types/rtti/types.d.ts +83 -0
  530. package/fjs/types/rtti/validate/module.f.d.mts +41 -0
  531. package/fjs/types/rtti/validate/module.f.mjs +171 -0
  532. package/fjs/types/rtti/validate/proof.f.d.mts +125 -0
  533. package/fjs/types/rtti/validate/proof.f.mjs +437 -0
  534. package/fjs/types/rtti/validate/types.d.ts +6 -0
  535. package/fjs/types/sorted_list/module.f.d.mts +46 -0
  536. package/fjs/types/sorted_list/module.f.mjs +119 -0
  537. package/fjs/types/sorted_list/proof.f.d.mts +7 -0
  538. package/fjs/types/sorted_list/proof.f.mjs +54 -0
  539. package/fjs/types/sorted_list/types.d.ts +15 -0
  540. package/fjs/types/sorted_set/module.f.d.mts +54 -0
  541. package/fjs/types/sorted_set/module.f.mjs +58 -0
  542. package/fjs/types/sorted_set/proof.f.d.mts +9 -0
  543. package/fjs/types/sorted_set/proof.f.mjs +79 -0
  544. package/fjs/types/sorted_set/types.d.ts +6 -0
  545. package/fjs/types/string/module.f.d.mts +40 -0
  546. package/fjs/types/string/module.f.mjs +59 -0
  547. package/fjs/types/string/proof.f.mjs +76 -0
  548. package/fjs/types/string_set/module.f.d.mts +39 -0
  549. package/fjs/types/string_set/module.f.mjs +54 -0
  550. package/fjs/types/string_set/proof.f.mjs +46 -0
  551. package/fjs/types/string_set/types.d.ts +7 -0
  552. package/fjs/types/ts/module.f.d.mts +22 -0
  553. package/fjs/types/ts/module.f.mjs +51 -0
  554. package/fjs/types/ts/proof.f.d.mts +39 -0
  555. package/fjs/types/ts/proof.f.mjs +102 -0
  556. package/fjs/types/ts/types.d.ts +21 -0
  557. package/fjs/types/uint8array/module.f.d.mts +42 -0
  558. package/fjs/types/uint8array/module.f.mjs +58 -0
  559. package/fjs/types/uint8array/proof.f.d.mts +17 -0
  560. package/fjs/types/uint8array/proof.f.mjs +73 -0
  561. package/fjs/website/module.f.d.mts +11 -0
  562. package/fjs/website/module.f.mjs +25 -0
  563. package/fjs/website/proof.f.mjs +14 -0
  564. package/package.json +12 -10
  565. package/todo/proof.f.d.mts +22 -0
  566. package/todo/proof.f.mjs +59 -0
  567. package/fjs/asn.1/module.f.d.ts +0 -62
  568. package/fjs/asn.1/module.f.js +0 -278
  569. package/fjs/asn.1/proof.f.d.ts +0 -48
  570. package/fjs/asn.1/proof.f.js +0 -285
  571. package/fjs/asserts/module.f.d.ts +0 -36
  572. package/fjs/asserts/module.f.js +0 -39
  573. package/fjs/asserts/proof.f.d.ts +0 -11
  574. package/fjs/asserts/proof.f.js +0 -18
  575. package/fjs/base_n/module.f.d.ts +0 -45
  576. package/fjs/base_n/module.f.js +0 -72
  577. package/fjs/base_n/proof.f.js +0 -73
  578. package/fjs/basen/base128/module.f.d.ts +0 -20
  579. package/fjs/basen/base128/module.f.js +0 -43
  580. package/fjs/basen/base128/proof.f.js +0 -26
  581. package/fjs/basen/base64/module.f.d.ts +0 -9
  582. package/fjs/basen/base64/module.f.js +0 -71
  583. package/fjs/basen/base64/proof.f.d.ts +0 -16
  584. package/fjs/basen/base64/proof.f.js +0 -139
  585. package/fjs/basen/cbase32/module.f.d.ts +0 -11
  586. package/fjs/basen/cbase32/module.f.js +0 -55
  587. package/fjs/basen/cbase32/proof.f.d.ts +0 -7
  588. package/fjs/basen/cbase32/proof.f.js +0 -62
  589. package/fjs/bnf/data/module.f.d.ts +0 -52
  590. package/fjs/bnf/data/module.f.js +0 -143
  591. package/fjs/bnf/data/proof.f.d.ts +0 -8
  592. package/fjs/bnf/data/proof.f.js +0 -169
  593. package/fjs/bnf/descent/module.f.d.ts +0 -87
  594. package/fjs/bnf/descent/module.f.js +0 -149
  595. package/fjs/bnf/descent/proof.f.d.ts +0 -7
  596. package/fjs/bnf/descent/proof.f.js +0 -368
  597. package/fjs/bnf/ll1/module.f.d.ts +0 -72
  598. package/fjs/bnf/ll1/module.f.js +0 -155
  599. package/fjs/bnf/ll1/proof.f.d.ts +0 -10
  600. package/fjs/bnf/ll1/proof.f.js +0 -375
  601. package/fjs/bnf/module.f.d.ts +0 -165
  602. package/fjs/bnf/module.f.js +0 -174
  603. package/fjs/bnf/proof.f.d.ts +0 -12
  604. package/fjs/bnf/proof.f.js +0 -69
  605. package/fjs/bnf/testlib.f.d.ts +0 -3
  606. package/fjs/bnf/testlib.f.js +0 -138
  607. package/fjs/bnf/token_symbol/module.f.d.ts +0 -38
  608. package/fjs/bnf/token_symbol/module.f.js +0 -48
  609. package/fjs/bnf/token_symbol/proof.f.js +0 -37
  610. package/fjs/cas/cli/module.f.d.ts +0 -6
  611. package/fjs/cas/cli/module.f.js +0 -53
  612. package/fjs/cas/cli/proof.f.d.ts +0 -17
  613. package/fjs/cas/cli/proof.f.js +0 -112
  614. package/fjs/cas/evo/module.f.d.ts +0 -223
  615. package/fjs/cas/evo/module.f.js +0 -455
  616. package/fjs/cas/evo/proof.f.d.ts +0 -47
  617. package/fjs/cas/evo/proof.f.js +0 -707
  618. package/fjs/cas/module.f.d.ts +0 -64
  619. package/fjs/cas/module.f.js +0 -255
  620. package/fjs/cas/proof.f.d.ts +0 -18
  621. package/fjs/cas/proof.f.js +0 -305
  622. package/fjs/ci/bun/module.f.d.ts +0 -2
  623. package/fjs/ci/bun/module.f.js +0 -15
  624. package/fjs/ci/common/module.f.d.ts +0 -88
  625. package/fjs/ci/common/module.f.js +0 -63
  626. package/fjs/ci/config/module.f.d.ts +0 -45
  627. package/fjs/ci/config/module.f.js +0 -80
  628. package/fjs/ci/deno/module.f.d.ts +0 -10
  629. package/fjs/ci/deno/module.f.js +0 -28
  630. package/fjs/ci/deno/proof.f.d.ts +0 -5
  631. package/fjs/ci/deno/proof.f.js +0 -26
  632. package/fjs/ci/module.f.d.ts +0 -13
  633. package/fjs/ci/module.f.js +0 -58
  634. package/fjs/ci/nix/module.f.d.ts +0 -61
  635. package/fjs/ci/nix/module.f.js +0 -92
  636. package/fjs/ci/nix/proof.f.d.ts +0 -23
  637. package/fjs/ci/nix/proof.f.js +0 -109
  638. package/fjs/ci/node/module.f.d.ts +0 -28
  639. package/fjs/ci/node/module.f.js +0 -92
  640. package/fjs/ci/node/proof.f.js +0 -17
  641. package/fjs/ci/proof.f.d.ts +0 -18
  642. package/fjs/ci/proof.f.js +0 -182
  643. package/fjs/ci/rust/module.f.d.ts +0 -3
  644. package/fjs/ci/rust/module.f.js +0 -75
  645. package/fjs/cli/module.f.d.ts +0 -11
  646. package/fjs/cli/module.f.js +0 -34
  647. package/fjs/cli/proof.f.d.ts +0 -14
  648. package/fjs/cli/proof.f.js +0 -111
  649. package/fjs/common/monoid/module.f.d.ts +0 -126
  650. package/fjs/common/monoid/module.f.js +0 -88
  651. package/fjs/common/monoid/proof.f.d.ts +0 -9
  652. package/fjs/common/monoid/proof.f.js +0 -48
  653. package/fjs/crypto/hmac/module.f.d.ts +0 -29
  654. package/fjs/crypto/hmac/module.f.js +0 -56
  655. package/fjs/crypto/hmac/proof.f.js +0 -32
  656. package/fjs/crypto/pow/module.f.d.ts +0 -37
  657. package/fjs/crypto/pow/module.f.js +0 -72
  658. package/fjs/crypto/pow/proof.f.js +0 -111
  659. package/fjs/crypto/secp/module.f.d.ts +0 -85
  660. package/fjs/crypto/secp/module.f.js +0 -176
  661. package/fjs/crypto/secp/proof.f.d.ts +0 -8
  662. package/fjs/crypto/secp/proof.f.js +0 -124
  663. package/fjs/crypto/sha2/module.f.d.ts +0 -102
  664. package/fjs/crypto/sha2/module.f.js +0 -266
  665. package/fjs/crypto/sha2/proof.f.d.ts +0 -31
  666. package/fjs/crypto/sha2/proof.f.js +0 -139
  667. package/fjs/crypto/sign/module.f.d.ts +0 -33
  668. package/fjs/crypto/sign/module.f.js +0 -163
  669. package/fjs/crypto/sign/proof.f.d.ts +0 -11
  670. package/fjs/crypto/sign/proof.f.js +0 -562
  671. package/fjs/crypto/vdf/module.f.d.ts +0 -21
  672. package/fjs/crypto/vdf/module.f.js +0 -57
  673. package/fjs/crypto/vdf/proof.f.js +0 -94
  674. package/fjs/dev/module.f.d.ts +0 -57
  675. package/fjs/dev/module.f.js +0 -135
  676. package/fjs/dev/package_json/module.f.d.ts +0 -16
  677. package/fjs/dev/package_json/module.f.js +0 -24
  678. package/fjs/dev/package_json/proof.f.js +0 -28
  679. package/fjs/dev/proof.f.d.ts +0 -13
  680. package/fjs/dev/proof.f.js +0 -77
  681. package/fjs/dev/update/module.f.d.ts +0 -11
  682. package/fjs/dev/update/module.f.js +0 -20
  683. package/fjs/dev/update/proof.f.d.ts +0 -7
  684. package/fjs/dev/update/proof.f.js +0 -35
  685. package/fjs/djs/ast/module.f.d.ts +0 -62
  686. package/fjs/djs/ast/module.f.js +0 -61
  687. package/fjs/djs/ast/proof.f.js +0 -49
  688. package/fjs/djs/examples/input.f.js +0 -4
  689. package/fjs/djs/examples/m.f.js +0 -1
  690. package/fjs/djs/module.f.d.ts +0 -17
  691. package/fjs/djs/module.f.js +0 -22
  692. package/fjs/djs/parser/module.f.d.ts +0 -23
  693. package/fjs/djs/parser/module.f.js +0 -410
  694. package/fjs/djs/parser/proof.f.d.ts +0 -14
  695. package/fjs/djs/parser/proof.f.js +0 -556
  696. package/fjs/djs/proof.f.d.ts +0 -10
  697. package/fjs/djs/proof.f.js +0 -50
  698. package/fjs/djs/serializer/module.f.d.ts +0 -17
  699. package/fjs/djs/serializer/module.f.js +0 -173
  700. package/fjs/djs/serializer/proof.f.js +0 -133
  701. package/fjs/djs/tokenizer/module.f.d.ts +0 -24
  702. package/fjs/djs/tokenizer/module.f.js +0 -472
  703. package/fjs/djs/tokenizer/proof.f.d.ts +0 -14
  704. package/fjs/djs/tokenizer/proof.f.js +0 -1211
  705. package/fjs/djs/transpiler/module.f.d.ts +0 -41
  706. package/fjs/djs/transpiler/module.f.js +0 -88
  707. package/fjs/djs/transpiler/proof.f.js +0 -67
  708. package/fjs/effects/eff/module.f.d.ts +0 -72
  709. package/fjs/effects/eff/module.f.js +0 -46
  710. package/fjs/effects/eff/proof.f.d.ts +0 -11
  711. package/fjs/effects/eff/proof.f.js +0 -58
  712. package/fjs/effects/list/module.f.d.ts +0 -37
  713. package/fjs/effects/list/module.f.js +0 -17
  714. package/fjs/effects/memory/module.f.d.ts +0 -37
  715. package/fjs/effects/memory/module.f.js +0 -24
  716. package/fjs/effects/memory/proof.f.d.ts +0 -6
  717. package/fjs/effects/memory/proof.f.js +0 -50
  718. package/fjs/effects/mock/module.f.d.ts +0 -16
  719. package/fjs/effects/mock/module.f.js +0 -20
  720. package/fjs/effects/module.d.ts +0 -2
  721. package/fjs/effects/module.f.d.ts +0 -408
  722. package/fjs/effects/module.f.js +0 -312
  723. package/fjs/effects/module.js +0 -11
  724. package/fjs/effects/node/memory/module.d.ts +0 -20
  725. package/fjs/effects/node/memory/module.js +0 -44
  726. package/fjs/effects/node/memory/proof.d.ts +0 -10
  727. package/fjs/effects/node/memory/proof.js +0 -29
  728. package/fjs/effects/node/module.d.ts +0 -20
  729. package/fjs/effects/node/module.f.d.ts +0 -300
  730. package/fjs/effects/node/module.f.js +0 -171
  731. package/fjs/effects/node/module.js +0 -305
  732. package/fjs/effects/node/proof.f.d.ts +0 -69
  733. package/fjs/effects/node/proof.f.js +0 -409
  734. package/fjs/effects/node/virtual/module.f.d.ts +0 -49
  735. package/fjs/effects/node/virtual/module.f.js +0 -440
  736. package/fjs/effects/node/virtual/proof.f.d.ts +0 -33
  737. package/fjs/effects/node/virtual/proof.f.js +0 -186
  738. package/fjs/effects/proof.f.d.ts +0 -56
  739. package/fjs/effects/proof.f.js +0 -200
  740. package/fjs/emergent_testing/all.test.js +0 -5
  741. package/fjs/emergent_testing/example.f.d.ts +0 -13
  742. package/fjs/emergent_testing/example.f.js +0 -31
  743. package/fjs/emergent_testing/module.f.d.ts +0 -140
  744. package/fjs/emergent_testing/module.f.js +0 -289
  745. package/fjs/emergent_testing/proof.f.d.ts +0 -67
  746. package/fjs/emergent_testing/proof.f.js +0 -416
  747. package/fjs/emergent_testing/scenarios/all.d.ts +0 -1
  748. package/fjs/emergent_testing/scenarios/all.js +0 -1
  749. package/fjs/emergent_testing/scenarios/async-subtests.fail.d.ts +0 -6
  750. package/fjs/emergent_testing/scenarios/async-subtests.fail.js +0 -9
  751. package/fjs/emergent_testing/scenarios/async-subtests.pass.d.ts +0 -6
  752. package/fjs/emergent_testing/scenarios/async-subtests.pass.js +0 -9
  753. package/fjs/emergent_testing/scenarios/async.fail.d.ts +0 -3
  754. package/fjs/emergent_testing/scenarios/async.fail.js +0 -6
  755. package/fjs/emergent_testing/scenarios/async.pass.d.ts +0 -3
  756. package/fjs/emergent_testing/scenarios/async.pass.js +0 -5
  757. package/fjs/emergent_testing/scenarios/fail.fail.d.ts +0 -3
  758. package/fjs/emergent_testing/scenarios/fail.fail.js +0 -3
  759. package/fjs/emergent_testing/scenarios/return-value.pass.d.ts +0 -3
  760. package/fjs/emergent_testing/scenarios/return-value.pass.js +0 -4
  761. package/fjs/emergent_testing/scenarios/thenable.pass.d.ts +0 -5
  762. package/fjs/emergent_testing/scenarios/thenable.pass.js +0 -11
  763. package/fjs/emergent_testing/scenarios/thenable2.pass.d.ts +0 -5
  764. package/fjs/emergent_testing/scenarios/thenable2.pass.js +0 -3
  765. package/fjs/emergent_testing/scenarios/throw.pass.d.ts +0 -5
  766. package/fjs/emergent_testing/scenarios/throw.pass.js +0 -3
  767. package/fjs/fsc/bnf.f.d.ts +0 -2
  768. package/fjs/fsc/bnf.f.js +0 -42
  769. package/fjs/fsc/json.f.d.ts +0 -7
  770. package/fjs/fsc/json.f.js +0 -64
  771. package/fjs/fsc/module.f.d.ts +0 -11
  772. package/fjs/fsc/module.f.js +0 -73
  773. package/fjs/fsc/proof.f.js +0 -104
  774. package/fjs/fsm/module.f.d.ts +0 -17
  775. package/fjs/fsm/module.f.js +0 -55
  776. package/fjs/fsm/proof.f.d.ts +0 -4
  777. package/fjs/fsm/proof.f.js +0 -126
  778. package/fjs/js/tokenizer/module.f.d.ts +0 -104
  779. package/fjs/js/tokenizer/module.f.js +0 -547
  780. package/fjs/js/tokenizer/proof.f.d.ts +0 -9
  781. package/fjs/js/tokenizer/proof.f.js +0 -986
  782. package/fjs/mcp/cas/module.f.d.ts +0 -27
  783. package/fjs/mcp/cas/module.f.js +0 -232
  784. package/fjs/mcp/evo/module.f.d.ts +0 -32
  785. package/fjs/mcp/evo/module.f.js +0 -99
  786. package/fjs/mcp/evo/proof.f.d.ts +0 -12
  787. package/fjs/mcp/evo/proof.f.js +0 -147
  788. package/fjs/mcp/module.f.d.ts +0 -56
  789. package/fjs/mcp/module.f.js +0 -69
  790. package/fjs/mcp/proof.f.d.ts +0 -45
  791. package/fjs/mcp/proof.f.js +0 -535
  792. package/fjs/media/html/module.f.d.ts +0 -52
  793. package/fjs/media/html/module.f.js +0 -117
  794. package/fjs/media/html/proof.f.d.ts +0 -16
  795. package/fjs/media/html/proof.f.js +0 -65
  796. package/fjs/media/json/module.f.d.ts +0 -64
  797. package/fjs/media/json/module.f.js +0 -109
  798. package/fjs/media/json/parser/module.f.d.ts +0 -21
  799. package/fjs/media/json/parser/module.f.js +0 -194
  800. package/fjs/media/json/parser/proof.f.d.ts +0 -5
  801. package/fjs/media/json/parser/proof.f.js +0 -314
  802. package/fjs/media/json/proof.f.js +0 -98
  803. package/fjs/media/json/schema/module.f.d.ts +0 -78
  804. package/fjs/media/json/schema/module.f.js +0 -96
  805. package/fjs/media/json/schema/proof.f.d.ts +0 -36
  806. package/fjs/media/json/schema/proof.f.js +0 -83
  807. package/fjs/media/json/serializer/module.f.d.ts +0 -28
  808. package/fjs/media/json/serializer/module.f.js +0 -73
  809. package/fjs/media/json/serializer/proof.f.js +0 -94
  810. package/fjs/media/json/tokenizer/module.f.d.ts +0 -15
  811. package/fjs/media/json/tokenizer/module.f.js +0 -63
  812. package/fjs/media/json/tokenizer/proof.f.d.ts +0 -5
  813. package/fjs/media/json/tokenizer/proof.f.js +0 -417
  814. package/fjs/media/module.f.d.ts +0 -119
  815. package/fjs/media/module.f.js +0 -88
  816. package/fjs/media/nix/module.f.d.ts +0 -30
  817. package/fjs/media/nix/module.f.js +0 -166
  818. package/fjs/media/nix/proof.f.d.ts +0 -32
  819. package/fjs/media/nix/proof.f.js +0 -127
  820. package/fjs/media/proof.f.d.ts +0 -19
  821. package/fjs/media/proof.f.js +0 -127
  822. package/fjs/media/revision/module.f.d.ts +0 -94
  823. package/fjs/media/revision/module.f.js +0 -143
  824. package/fjs/media/revision/proof.f.d.ts +0 -42
  825. package/fjs/media/revision/proof.f.js +0 -190
  826. package/fjs/media/type/module.f.d.ts +0 -135
  827. package/fjs/media/type/module.f.js +0 -231
  828. package/fjs/media/type/proof.f.d.ts +0 -40
  829. package/fjs/media/type/proof.f.js +0 -213
  830. package/fjs/module.d.ts +0 -2
  831. package/fjs/module.f.d.ts +0 -2
  832. package/fjs/module.f.js +0 -50
  833. package/fjs/module.js +0 -4
  834. package/fjs/path/module.f.d.ts +0 -46
  835. package/fjs/path/module.f.js +0 -71
  836. package/fjs/path/proof.f.js +0 -119
  837. package/fjs/proof.f.d.ts +0 -9
  838. package/fjs/proof.f.js +0 -38
  839. package/fjs/protocol/json_rpc/module.f.d.ts +0 -114
  840. package/fjs/protocol/json_rpc/module.f.js +0 -89
  841. package/fjs/protocol/json_rpc/proof.f.d.ts +0 -35
  842. package/fjs/protocol/json_rpc/proof.f.js +0 -68
  843. package/fjs/protocol/mcp/module.f.d.ts +0 -239
  844. package/fjs/protocol/mcp/module.f.js +0 -272
  845. package/fjs/protocol/mcp/proof.f.d.ts +0 -34
  846. package/fjs/protocol/mcp/proof.f.js +0 -208
  847. package/fjs/protocol/mcp/stdio/module.f.d.ts +0 -47
  848. package/fjs/protocol/mcp/stdio/module.f.js +0 -78
  849. package/fjs/protocol/mcp/stdio/proof.f.d.ts +0 -13
  850. package/fjs/protocol/mcp/stdio/proof.f.js +0 -143
  851. package/fjs/sul/id/module.f.d.ts +0 -33
  852. package/fjs/sul/id/module.f.js +0 -93
  853. package/fjs/sul/id/proof.f.js +0 -61
  854. package/fjs/sul/level/hash/module.f.d.ts +0 -38
  855. package/fjs/sul/level/hash/module.f.js +0 -43
  856. package/fjs/sul/level/hash/proof.f.d.ts +0 -13
  857. package/fjs/sul/level/hash/proof.f.js +0 -112
  858. package/fjs/sul/level/literal/module.f.d.ts +0 -64
  859. package/fjs/sul/level/literal/module.f.js +0 -88
  860. package/fjs/sul/level/literal/proof.f.d.ts +0 -12
  861. package/fjs/sul/level/literal/proof.f.js +0 -714
  862. package/fjs/sul/module.f.d.ts +0 -23
  863. package/fjs/sul/module.f.js +0 -46
  864. package/fjs/sul/proof.f.d.ts +0 -9
  865. package/fjs/sul/proof.f.js +0 -47
  866. package/fjs/text/ascii/module.f.d.ts +0 -136
  867. package/fjs/text/ascii/module.f.js +0 -154
  868. package/fjs/text/ascii/proof.f.d.ts +0 -6
  869. package/fjs/text/ascii/proof.f.js +0 -14
  870. package/fjs/text/code_point/module.f.d.ts +0 -65
  871. package/fjs/text/code_point/module.f.js +0 -103
  872. package/fjs/text/code_point/proof.f.d.ts +0 -8
  873. package/fjs/text/code_point/proof.f.js +0 -72
  874. package/fjs/text/module.f.d.ts +0 -40
  875. package/fjs/text/module.f.js +0 -43
  876. package/fjs/text/proof.f.d.ts +0 -10
  877. package/fjs/text/proof.f.js +0 -44
  878. package/fjs/text/sgr/module.f.d.ts +0 -53
  879. package/fjs/text/sgr/module.f.js +0 -63
  880. package/fjs/text/sgr/proof.f.js +0 -33
  881. package/fjs/text/utf16/module.f.d.ts +0 -161
  882. package/fjs/text/utf16/module.f.js +0 -311
  883. package/fjs/text/utf16/proof.f.d.ts +0 -10
  884. package/fjs/text/utf16/proof.f.js +0 -144
  885. package/fjs/text/utf8/module.f.d.ts +0 -83
  886. package/fjs/text/utf8/module.f.js +0 -247
  887. package/fjs/text/utf8/proof.f.js +0 -217
  888. package/fjs/types/array/module.f.d.ts +0 -49
  889. package/fjs/types/array/module.f.js +0 -42
  890. package/fjs/types/array/proof.f.js +0 -92
  891. package/fjs/types/bigfloat/module.f.d.ts +0 -6
  892. package/fjs/types/bigfloat/module.f.js +0 -69
  893. package/fjs/types/bigfloat/proof.f.d.ts +0 -5
  894. package/fjs/types/bigfloat/proof.f.js +0 -217
  895. package/fjs/types/bigint/module.f.d.ts +0 -172
  896. package/fjs/types/bigint/module.f.js +0 -251
  897. package/fjs/types/bigint/proof.f.d.ts +0 -37
  898. package/fjs/types/bigint/proof.f.js +0 -400
  899. package/fjs/types/bit_vec/module.f.d.ts +0 -302
  900. package/fjs/types/bit_vec/module.f.js +0 -375
  901. package/fjs/types/bit_vec/proof.f.d.ts +0 -65
  902. package/fjs/types/bit_vec/proof.f.js +0 -465
  903. package/fjs/types/btree/find/module.f.d.ts +0 -25
  904. package/fjs/types/btree/find/module.f.js +0 -80
  905. package/fjs/types/btree/find/proof.f.d.ts +0 -3
  906. package/fjs/types/btree/find/proof.f.js +0 -108
  907. package/fjs/types/btree/module.f.d.ts +0 -9
  908. package/fjs/types/btree/module.f.js +0 -33
  909. package/fjs/types/btree/proof.f.d.ts +0 -13
  910. package/fjs/types/btree/proof.f.js +0 -64
  911. package/fjs/types/btree/remove/module.f.d.ts +0 -14
  912. package/fjs/types/btree/remove/module.f.js +0 -186
  913. package/fjs/types/btree/remove/proof.f.d.ts +0 -9
  914. package/fjs/types/btree/remove/proof.f.js +0 -484
  915. package/fjs/types/btree/set/module.f.d.ts +0 -8
  916. package/fjs/types/btree/set/module.f.js +0 -128
  917. package/fjs/types/btree/set/proof.f.d.ts +0 -1
  918. package/fjs/types/btree/set/proof.f.js +0 -368
  919. package/fjs/types/btree/types/module.f.d.ts +0 -23
  920. package/fjs/types/btree/types/module.f.js +0 -9
  921. package/fjs/types/byte_set/module.f.d.ts +0 -16
  922. package/fjs/types/byte_set/module.f.js +0 -30
  923. package/fjs/types/byte_set/proof.f.d.ts +0 -11
  924. package/fjs/types/byte_set/proof.f.js +0 -79
  925. package/fjs/types/function/compare/module.f.d.ts +0 -49
  926. package/fjs/types/function/compare/module.f.js +0 -51
  927. package/fjs/types/function/compare/proof.f.js +0 -47
  928. package/fjs/types/function/module.f.d.ts +0 -28
  929. package/fjs/types/function/module.f.js +0 -19
  930. package/fjs/types/function/operator/module.f.d.ts +0 -48
  931. package/fjs/types/function/operator/module.f.js +0 -16
  932. package/fjs/types/function/operator/proof.f.js +0 -53
  933. package/fjs/types/function/proof.f.js +0 -10
  934. package/fjs/types/list/module.f.d.ts +0 -75
  935. package/fjs/types/list/module.f.js +0 -190
  936. package/fjs/types/list/proof.f.d.ts +0 -31
  937. package/fjs/types/list/proof.f.js +0 -330
  938. package/fjs/types/map/module.f.d.ts +0 -2
  939. package/fjs/types/map/module.f.js +0 -22
  940. package/fjs/types/map/proof.f.js +0 -22
  941. package/fjs/types/nibble_set/module.f.d.ts +0 -27
  942. package/fjs/types/nibble_set/module.f.js +0 -25
  943. package/fjs/types/nibble_set/proof.f.js +0 -60
  944. package/fjs/types/nominal/module.f.d.ts +0 -22
  945. package/fjs/types/nominal/module.f.js +0 -13
  946. package/fjs/types/nominal/proof.f.d.ts +0 -4
  947. package/fjs/types/nominal/proof.f.js +0 -48
  948. package/fjs/types/nullable/module.f.d.ts +0 -21
  949. package/fjs/types/nullable/module.f.js +0 -29
  950. package/fjs/types/nullable/proof.f.d.ts +0 -1
  951. package/fjs/types/nullable/proof.f.js +0 -29
  952. package/fjs/types/number/module.f.d.ts +0 -16
  953. package/fjs/types/number/module.f.js +0 -30
  954. package/fjs/types/number/proof.f.js +0 -124
  955. package/fjs/types/object/module.f.d.ts +0 -54
  956. package/fjs/types/object/module.f.js +0 -25
  957. package/fjs/types/object/proof.f.d.ts +0 -4
  958. package/fjs/types/object/proof.f.js +0 -14
  959. package/fjs/types/option/module.f.js +0 -6
  960. package/fjs/types/ordered_map/module.f.d.ts +0 -17
  961. package/fjs/types/ordered_map/module.f.js +0 -22
  962. package/fjs/types/ordered_map/proof.f.d.ts +0 -5
  963. package/fjs/types/ordered_map/proof.f.js +0 -73
  964. package/fjs/types/patricia_trie/module.f.d.ts +0 -25
  965. package/fjs/types/patricia_trie/module.f.js +0 -35
  966. package/fjs/types/patricia_trie/proof.f.d.ts +0 -13
  967. package/fjs/types/patricia_trie/proof.f.js +0 -121
  968. package/fjs/types/phantom/module.f.js +0 -11
  969. package/fjs/types/prime_field/module.f.d.ts +0 -62
  970. package/fjs/types/prime_field/module.f.js +0 -112
  971. package/fjs/types/prime_field/proof.f.js +0 -128
  972. package/fjs/types/range/module.f.d.ts +0 -8
  973. package/fjs/types/range/module.f.js +0 -2
  974. package/fjs/types/range/proof.f.d.ts +0 -1
  975. package/fjs/types/range/proof.f.js +0 -9
  976. package/fjs/types/range_map/module.f.d.ts +0 -92
  977. package/fjs/types/range_map/module.f.js +0 -82
  978. package/fjs/types/range_map/proof.f.d.ts +0 -6
  979. package/fjs/types/range_map/proof.f.js +0 -151
  980. package/fjs/types/range_set/module.f.d.ts +0 -5
  981. package/fjs/types/range_set/module.f.js +0 -16
  982. package/fjs/types/range_set/proof.f.d.ts +0 -1
  983. package/fjs/types/range_set/proof.f.js +0 -19
  984. package/fjs/types/result/module.d.ts +0 -3
  985. package/fjs/types/result/module.f.d.ts +0 -61
  986. package/fjs/types/result/module.f.js +0 -54
  987. package/fjs/types/result/module.js +0 -19
  988. package/fjs/types/result/proof.f.d.ts +0 -12
  989. package/fjs/types/result/proof.f.js +0 -31
  990. package/fjs/types/rtti/common/module.f.d.ts +0 -121
  991. package/fjs/types/rtti/common/module.f.js +0 -94
  992. package/fjs/types/rtti/common/proof.f.d.ts +0 -8
  993. package/fjs/types/rtti/common/proof.f.js +0 -51
  994. package/fjs/types/rtti/module.f.d.ts +0 -75
  995. package/fjs/types/rtti/module.f.js +0 -34
  996. package/fjs/types/rtti/parse/module.f.d.ts +0 -36
  997. package/fjs/types/rtti/parse/module.f.js +0 -114
  998. package/fjs/types/rtti/parse/proof.f.d.ts +0 -115
  999. package/fjs/types/rtti/parse/proof.f.js +0 -334
  1000. package/fjs/types/rtti/proof.f.d.ts +0 -5
  1001. package/fjs/types/rtti/proof.f.js +0 -16
  1002. package/fjs/types/rtti/ts/module.f.d.ts +0 -118
  1003. package/fjs/types/rtti/ts/module.f.js +0 -59
  1004. package/fjs/types/rtti/ts/proof.f.d.ts +0 -59
  1005. package/fjs/types/rtti/ts/proof.f.js +0 -75
  1006. package/fjs/types/rtti/validate/module.f.d.ts +0 -4
  1007. package/fjs/types/rtti/validate/module.f.js +0 -74
  1008. package/fjs/types/rtti/validate/proof.f.d.ts +0 -118
  1009. package/fjs/types/rtti/validate/proof.f.js +0 -349
  1010. package/fjs/types/sorted_list/module.f.d.ts +0 -26
  1011. package/fjs/types/sorted_list/module.f.js +0 -51
  1012. package/fjs/types/sorted_list/proof.f.d.ts +0 -4
  1013. package/fjs/types/sorted_list/proof.f.js +0 -46
  1014. package/fjs/types/sorted_set/module.f.d.ts +0 -33
  1015. package/fjs/types/sorted_set/module.f.js +0 -5
  1016. package/fjs/types/sorted_set/proof.f.d.ts +0 -6
  1017. package/fjs/types/sorted_set/proof.f.js +0 -67
  1018. package/fjs/types/string/module.f.d.ts +0 -24
  1019. package/fjs/types/string/module.f.js +0 -35
  1020. package/fjs/types/string/proof.f.js +0 -77
  1021. package/fjs/types/string_set/module.f.d.ts +0 -30
  1022. package/fjs/types/string_set/module.f.js +0 -37
  1023. package/fjs/types/string_set/proof.f.js +0 -43
  1024. package/fjs/types/ts/module.f.d.ts +0 -23
  1025. package/fjs/types/ts/module.f.js +0 -27
  1026. package/fjs/types/ts/proof.f.d.ts +0 -38
  1027. package/fjs/types/ts/proof.f.js +0 -86
  1028. package/fjs/types/uint8array/module.f.d.ts +0 -13
  1029. package/fjs/types/uint8array/module.f.js +0 -34
  1030. package/fjs/types/uint8array/proof.f.d.ts +0 -17
  1031. package/fjs/types/uint8array/proof.f.js +0 -64
  1032. package/fjs/website/module.f.d.ts +0 -3
  1033. package/fjs/website/module.f.js +0 -14
  1034. package/fjs/website/proof.f.js +0 -13
  1035. package/nanvm-lib/tests/proof.f.d.ts +0 -122
  1036. package/nanvm-lib/tests/proof.f.js +0 -330
  1037. package/todo/031-json.f.d.ts +0 -1
  1038. package/todo/031-json.f.js +0 -241
  1039. package/todo/proof.f.d.ts +0 -20
  1040. package/todo/proof.f.js +0 -62
  1041. /package/fjs/{base_n/proof.f.d.ts → basen/proof.f.d.mts} +0 -0
  1042. /package/fjs/bnf/token_symbol/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1043. /package/fjs/ci/node/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1044. /package/fjs/crypto/hmac/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1045. /package/fjs/crypto/pow/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1046. /package/fjs/crypto/vdf/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1047. /package/fjs/dev/package_json/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1048. /package/fjs/djs/ast/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1049. /package/fjs/djs/examples/{input.f.d.ts → input.f.d.mts} +0 -0
  1050. /package/fjs/djs/examples/{m.f.d.ts → m.f.d.mts} +0 -0
  1051. /package/fjs/djs/serializer/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1052. /package/fjs/djs/transpiler/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1053. /package/fjs/fsc/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1054. /package/fjs/media/json/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1055. /package/fjs/media/json/serializer/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1056. /package/fjs/path/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1057. /package/fjs/sul/id/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1058. /package/fjs/text/utf8/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1059. /package/fjs/types/array/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1060. /package/fjs/{emergent_testing/all.test.d.ts → types/bigint/benchmark.d.mts} +0 -0
  1061. /package/fjs/{basen/base128/proof.f.d.ts → types/function/compare/proof.f.d.mts} +0 -0
  1062. /package/fjs/types/function/operator/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1063. /package/fjs/types/function/{compare/proof.f.d.ts → proof.f.d.mts} +0 -0
  1064. /package/fjs/types/map/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1065. /package/fjs/types/nibble_set/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1066. /package/fjs/{text/sgr/proof.f.d.ts → types/nullable/proof.f.d.mts} +0 -0
  1067. /package/fjs/types/number/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1068. /package/fjs/types/option/{module.f.d.ts → types.d.ts} +0 -0
  1069. /package/fjs/types/phantom/{module.f.d.ts → types.d.ts} +0 -0
  1070. /package/fjs/types/prime_field/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1071. /package/fjs/types/{function/proof.f.d.ts → range/proof.f.d.mts} +0 -0
  1072. /package/fjs/types/string/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1073. /package/fjs/types/string_set/{proof.f.d.ts → proof.f.d.mts} +0 -0
  1074. /package/fjs/website/{proof.f.d.ts → proof.f.d.mts} +0 -0
@@ -0,0 +1,1030 @@
1
+ /**
2
+ * The serializable RTTI data form and the {@link toData} conversion from the
3
+ * thunk form.
4
+ *
5
+ * A schema denotes a set of values. The data form partitions that set into
6
+ * six disjoint kinds — unit values (`null`, `undefined`, `false`, `true`),
7
+ * numbers, strings, bigints, arrays and objects — so that all schema algebra
8
+ * (union normalization, coverage collapse, {@link equal}, {@link subset},
9
+ * canonical ordering via {@link cmp}) reduces to kind-wise set operations.
10
+ * {@link toData} is the single bridge from the thunk form; {@link validate}
11
+ * is the data-driven counterpart of `../validate`. The form serializes as
12
+ * DJS — plain JSON when no `bigint` literals are involved. See `./README.md`
13
+ * for the design rationale and serialization notes, and `./types.ts` for the
14
+ * type-level API.
15
+ *
16
+ * @module
17
+ *
18
+ * @import { Const, ConstObject, Type } from '../types.ts'
19
+ * @import { Primitive, Unknown } from '../ts/types.ts'
20
+ * @import { ResultE } from '../common/types.ts'
21
+ * @import { StringMap } from '../../object/types.ts'
22
+ * @import { ArraySet, Data, KindSet, Node, ObjectSet, RuleSet, UnionSet } from './types.ts'
23
+ */
24
+
25
+ import { assertNotNullish } from '../../../asserts/module.f.mjs'
26
+ import { at, definedEntries, definedValues } from '../../object/module.f.mjs'
27
+ import { ok } from '../../result/module.f.mjs'
28
+ import { eachEntry, isArray, verror } from '../common/module.f.mjs'
29
+
30
+ /**
31
+ * The unit kind's enumeration: bit `1 << i` of a {@link UnionSet}'s `unit`
32
+ * bitset stands for `unitList[i]`.
33
+ */
34
+ export const unitList = /** @type {const} */ (['null', 'undefined', 'false', 'true'])
35
+
36
+ /**
37
+ * The `unit` bit of one unit value.
38
+ *
39
+ * @type {(v: null | undefined | boolean) => number}
40
+ */
41
+ export const unitBit = v =>
42
+ v === null ? 1 :
43
+ v === undefined ? 2 :
44
+ v ? 8 : 4
45
+
46
+ const allUnits = unitBit(null) | unitBit(undefined) | unitBit(false) | unitBit(true)
47
+
48
+ const booleanUnits = unitBit(false) | unitBit(true)
49
+
50
+ /**
51
+ * The data form of the empty set — rtti `never`.
52
+ *
53
+ * @type {UnionSet}
54
+ */
55
+ export const never = {}
56
+
57
+ /**
58
+ * The data form of the set of all values — rtti `unknown`.
59
+ *
60
+ * @type {UnionSet}
61
+ */
62
+ export const unknown = {
63
+ unit: allUnits,
64
+ number: true,
65
+ string: true,
66
+ bigint: true,
67
+ array: true,
68
+ object: true,
69
+ }
70
+
71
+ // ── canonical order ──────────────────────────────────────────────────────────
72
+
73
+ /** @type {(a: string, b: string) => number} */
74
+ const cmpString = (a, b) => a < b ? -1 : a > b ? 1 : 0
75
+
76
+ /**
77
+ * Total order on number literals matching the SameValue equality the
78
+ * validators use: ascending, `-0` before `0`, `NaN` last.
79
+ *
80
+ * @type {(a: number, b: number) => number}
81
+ */
82
+ const cmpNumber = (a, b) => {
83
+ if (Object.is(a, b)) { return 0 }
84
+ if (Number.isNaN(a)) { return 1 }
85
+ if (Number.isNaN(b)) { return -1 }
86
+ if (a < b) { return -1 }
87
+ if (a > b) { return 1 }
88
+ // `a` and `b` are `+0` and `-0`, in one of the two orders
89
+ return Object.is(a, -0) ? -1 : 1
90
+ }
91
+
92
+ /** @type {(a: bigint, b: bigint) => number} */
93
+ const cmpBigint = (a, b) => a < b ? -1 : a > b ? 1 : 0
94
+
95
+ /**
96
+ * Lexicographic order, shorter lists first.
97
+ *
98
+ * @template T
99
+ * @param {(a: T, b: T) => number} cmpItem
100
+ * @returns {(a: readonly T[], b: readonly T[]) => number}
101
+ */
102
+ const cmpList = cmpItem => (a, b) => {
103
+ const d = a.length - b.length
104
+ if (d !== 0) { return d }
105
+ for (let i = 0; i < a.length; ++i) {
106
+ const c = cmpItem(a[i], b[i])
107
+ if (c !== 0) { return c }
108
+ }
109
+ return 0
110
+ }
111
+
112
+ /**
113
+ * Order on one kind component: absent, then member lists, then `true`.
114
+ *
115
+ * @template T
116
+ * @param {(a: T, b: T) => number} cmpItem
117
+ * @returns {(a: KindSet<T> | undefined, b: KindSet<T> | undefined) => number}
118
+ */
119
+ const cmpKind = cmpItem => (a, b) => {
120
+ if (a === undefined) { return b === undefined ? 0 : -1 }
121
+ if (b === undefined) { return 1 }
122
+ if (a === true) { return b === true ? 0 : 1 }
123
+ if (b === true) { return -1 }
124
+ return cmpList(cmpItem)(a, b)
125
+ }
126
+
127
+ /**
128
+ * @template T
129
+ * @param {(a: T, b: T) => number} cmpValue
130
+ * @returns {(a: readonly [string, T], b: readonly [string, T]) => number}
131
+ */
132
+ const cmpEntry = cmpValue => ([ak, av], [bk, bv]) => {
133
+ const c = cmpString(ak, bk)
134
+ return c !== 0 ? c : cmpValue(av, bv)
135
+ }
136
+
137
+ /** @type {(a: Node | undefined, b: Node | undefined) => number} */
138
+ const cmpRest = (a, b) => {
139
+ if (a === undefined) { return b === undefined ? 0 : -1 }
140
+ if (b === undefined) { return 1 }
141
+ return cmpNode(a, b)
142
+ }
143
+
144
+ /** @type {(a: ArraySet, b: ArraySet) => number} */
145
+ const cmpArraySet = (a, b) => {
146
+ const c = cmpList(cmpNode)(a.prefix, b.prefix)
147
+ return c !== 0 ? c : cmpRest(a.rest, b.rest)
148
+ }
149
+
150
+ /** @type {(a: ObjectSet, b: ObjectSet) => number} */
151
+ const cmpObjectSet = (a, b) => {
152
+ const c = cmpList(cmpEntry(cmpNode))(definedEntries(a.props), definedEntries(b.props))
153
+ return c !== 0 ? c : cmpRest(a.rest, b.rest)
154
+ }
155
+
156
+ /** @type {(a: UnionSet, b: UnionSet) => number} */
157
+ const cmpUnion = (a, b) => {
158
+ const c0 = (a.unit ?? 0) - (b.unit ?? 0)
159
+ if (c0 !== 0) { return c0 }
160
+ const c1 = cmpKind(cmpNumber)(a.number, b.number)
161
+ if (c1 !== 0) { return c1 }
162
+ const c2 = cmpKind(cmpString)(a.string, b.string)
163
+ if (c2 !== 0) { return c2 }
164
+ const c3 = cmpKind(cmpBigint)(a.bigint, b.bigint)
165
+ if (c3 !== 0) { return c3 }
166
+ const c4 = cmpKind(cmpArraySet)(a.array, b.array)
167
+ return c4 !== 0 ? c4 : cmpKind(cmpObjectSet)(a.object, b.object)
168
+ }
169
+
170
+ /**
171
+ * Inline unions sort before references; references sort by rule name.
172
+ *
173
+ * @type {(a: Node, b: Node) => number}
174
+ */
175
+ const cmpNode = (a, b) => {
176
+ if (typeof a === 'string') {
177
+ return typeof b === 'string' ? cmpString(a, b) : 1
178
+ }
179
+ return typeof b === 'string' ? -1 : cmpUnion(a, b)
180
+ }
181
+
182
+ /**
183
+ * Total order over the data form: negative, zero or positive, with zero
184
+ * exactly on structural identity. {@link toData} output is canonical, so two
185
+ * conversions of equivalent thunk schemas compare equal — this is what makes
186
+ * the data form comparable and sortable.
187
+ *
188
+ * @type {(a: Data) => (b: Data) => number}
189
+ */
190
+ export const cmp = ([aRules, aNode]) => ([bRules, bNode]) => {
191
+ const c = cmpNode(aNode, bNode)
192
+ return c !== 0
193
+ ? c
194
+ : cmpList(cmpEntry(cmpUnion))(definedEntries(aRules), definedEntries(bRules))
195
+ }
196
+
197
+ /**
198
+ * Structural equality of canonical forms: `equal(toData(a))(toData(b))`
199
+ * holds exactly when `a` and `b` normalize to the same data — e.g.
200
+ * `or(a, b)` and `or(b, a)` are equal. Recursive definitions compare by
201
+ * their rule names, which are derived from the defining functions' names.
202
+ *
203
+ * @type {(a: Data) => (b: Data) => boolean}
204
+ */
205
+ export const equal = a => b => cmp(a)(b) === 0
206
+
207
+ // ── kind-wise union ──────────────────────────────────────────────────────────
208
+
209
+ /**
210
+ * Merges two sorted, deduplicated lists into one.
211
+ *
212
+ * @template T
213
+ * @param {(a: T, b: T) => number} cmpItem
214
+ * @returns {(a: readonly T[], b: readonly T[]) => readonly T[]}
215
+ */
216
+ const mergeSorted = cmpItem => (a, b) => {
217
+ if (a.length === 0) { return b }
218
+ if (b.length === 0) { return a }
219
+ const c = cmpItem(a[0], b[0])
220
+ if (c < 0) { return [a[0], ...mergeSorted(cmpItem)(a.slice(1), b)] }
221
+ if (c > 0) { return [b[0], ...mergeSorted(cmpItem)(a, b.slice(1))] }
222
+ return [a[0], ...mergeSorted(cmpItem)(a.slice(1), b.slice(1))]
223
+ }
224
+
225
+ /**
226
+ * Union of one kind component: absent = empty, `true` = the whole kind, so
227
+ * `or(42, number)` collapses to all numbers here with no special-case rule.
228
+ *
229
+ * @template T
230
+ * @param {(a: T, b: T) => number} cmpItem
231
+ * @returns {(a: KindSet<T> | undefined, b: KindSet<T> | undefined) => KindSet<T> | undefined}
232
+ */
233
+ const mergeKind = cmpItem => (a, b) => {
234
+ if (a === undefined) { return b }
235
+ if (b === undefined) { return a }
236
+ if (a === true || b === true) { return true }
237
+ return mergeSorted(cmpItem)(a, b)
238
+ }
239
+
240
+ /**
241
+ * Kind-wise union of two union sets.
242
+ *
243
+ * @type {(a: UnionSet, b: UnionSet) => UnionSet}
244
+ */
245
+ const merge = (a, b) => {
246
+ const unit = (a.unit ?? 0) | (b.unit ?? 0)
247
+ const number = mergeKind(cmpNumber)(a.number, b.number)
248
+ const string = mergeKind(cmpString)(a.string, b.string)
249
+ const bigint = mergeKind(cmpBigint)(a.bigint, b.bigint)
250
+ const array = mergeKind(cmpArraySet)(a.array, b.array)
251
+ const object = mergeKind(cmpObjectSet)(a.object, b.object)
252
+ return {
253
+ ...(unit === 0 ? {} : { unit }),
254
+ ...(number === undefined ? {} : { number }),
255
+ ...(string === undefined ? {} : { string }),
256
+ ...(bigint === undefined ? {} : { bigint }),
257
+ ...(array === undefined ? {} : { array }),
258
+ ...(object === undefined ? {} : { object }),
259
+ }
260
+ }
261
+
262
+ // ── canonical constructors ───────────────────────────────────────────────────
263
+
264
+ /** @type {(n: Node) => boolean} */
265
+ const isNever = n => typeof n !== 'string' && cmpUnion(n, never) === 0
266
+
267
+ /** @type {(n: Node) => boolean} */
268
+ const isTop = n => typeof n !== 'string' && cmpUnion(n, unknown) === 0
269
+
270
+ /**
271
+ * Canonical array-kind singleton. A syntactically empty position makes the
272
+ * whole pattern empty; an empty `rest` is the same set as no `rest`; an
273
+ * unconstrained `rest` with no prefix is every array.
274
+ *
275
+ * @type {(prefix: readonly Node[], rest: Node | undefined) => UnionSet}
276
+ */
277
+ const arraySet = (prefix, rest) => {
278
+ if (prefix.some(isNever)) { return never }
279
+ const r = rest !== undefined && isNever(rest) ? undefined : rest
280
+ return prefix.length === 0 && r !== undefined && isTop(r)
281
+ ? { array: true }
282
+ : { array: [r === undefined ? { prefix } : { prefix, rest: r }] }
283
+ }
284
+
285
+ /**
286
+ * Canonical object-kind singleton. An unconstrained key is dropped (reading
287
+ * it yields some value regardless); a syntactically empty key set makes the
288
+ * whole pattern empty; an unconstrained `rest` is the same set as no `rest`;
289
+ * with nothing left, the pattern is every object.
290
+ *
291
+ * @type {(props: readonly (readonly [string, Node])[], rest: Node | undefined) => UnionSet}
292
+ */
293
+ const objectSet = (props, rest) => {
294
+ const constrained = props.filter(([, v]) => !isTop(v))
295
+ if (constrained.some(([, v]) => isNever(v))) { return never }
296
+ const r = rest !== undefined && isTop(rest) ? undefined : rest
297
+ if (constrained.length === 0 && r === undefined) { return { object: true } }
298
+ /** @type {StringMap<Node>} */
299
+ const sorted = Object.fromEntries(constrained.toSorted(([ak], [bk]) => cmpString(ak, bk)))
300
+ return { object: [r === undefined ? { props: sorted } : { props: sorted, rest: r }] }
301
+ }
302
+
303
+ // ── subset ───────────────────────────────────────────────────────────────────
304
+
305
+ /** The rule sets of the two compared schemas: `[left, right]`. */
306
+ /** @typedef {readonly [RuleSet, RuleSet]} _Ctx */
307
+
308
+ /**
309
+ * Node pairs assumed included while they are being checked — the standard
310
+ * coinductive treatment of reference cycles, keyed by {@link _Keyed} node
311
+ * identities.
312
+ */
313
+ /** @typedef {StringMap<StringMap<true>>} _Assumed */
314
+
315
+ /**
316
+ * A node with a canonical identity for the coinductive memo: `r:<name>` a
317
+ * rule reference, `u:<name>` a rule's object read-set (its rest plus
318
+ * `undefined`), `t` the top set. A node synthesized from inline data has no
319
+ * identity (`undefined`) — recursion through it descends its finite tree,
320
+ * so every cycle still crosses identified pairs and the memo closes it.
321
+ */
322
+ /** @typedef {readonly [Node, string | undefined]} _Keyed */
323
+
324
+ /**
325
+ * Own-property lookups only: a `RuleSet`/`props` map is a plain object, so
326
+ * reading through the prototype chain would return `Object.prototype`
327
+ * members (`toString`, `constructor`, …) for names that are not defined.
328
+ *
329
+ * @type {(rules: RuleSet) => (n: Node) => UnionSet}
330
+ */
331
+ const resolve = rules => n => typeof n === 'string' ? assertNotNullish(at(n)(rules)) : n
332
+
333
+ /** @type {<T>(a: T, b: T) => boolean} */
334
+ const strictEqual = (a, b) => a === b
335
+
336
+ /**
337
+ * Inclusion of one kind component: every member of `a` below some member of
338
+ * `b`; absent = empty, `true` = the whole kind.
339
+ *
340
+ * @template T
341
+ * @param {(a: T, b: T) => boolean} le
342
+ * @returns {(a: KindSet<T> | undefined, b: KindSet<T> | undefined) => boolean}
343
+ */
344
+ const kindSubset = le => (a, b) => {
345
+ if (a === undefined) { return true }
346
+ if (b === true) { return true }
347
+ if (a === true || b === undefined) { return false }
348
+ return a.every(x => b.some(y => le(x, y)))
349
+ }
350
+
351
+ /** @type {(ctx: _Ctx) => (assumed: _Assumed) => (p: ArraySet, q: ArraySet) => boolean} */
352
+ const arraySetSubset = ctx => assumed => (p, q) => {
353
+ const le = nodeSubset(ctx)(assumed)
354
+ const pn = p.prefix.length
355
+ const qn = q.prefix.length
356
+ // `p` admits lengths `{pn}` or `[pn, ∞)`; they must fit `q`'s admitted lengths
357
+ const lengthOk = q.rest !== undefined
358
+ ? qn <= pn
359
+ : p.rest === undefined && qn === pn
360
+ if (!lengthOk) { return false }
361
+ /** @type {(i: number) => Node} */
362
+ const qAt = i => i < qn ? q.prefix[i] : assertNotNullish(q.rest)
363
+ return p.prefix.every((el, i) => le(el, qAt(i)))
364
+ && (p.rest === undefined || le(p.rest, assertNotNullish(q.rest)))
365
+ }
366
+
367
+ /** @type {(n: Node) => _Keyed} */
368
+ const keyed = n => [n, typeof n === 'string' ? `r:${n}` : undefined]
369
+
370
+ /**
371
+ * The set of values *read* at key `k` from objects of the pattern: the
372
+ * declared set, else — since the key may also be absent, reading
373
+ * `undefined` — the `rest` set plus `undefined`, else anything. A read-set
374
+ * synthesized from a referenced rest keeps that rule's identity (`u:`), so
375
+ * the coinductive memo closes cycles through it.
376
+ *
377
+ * @type {(rules: RuleSet) => (pattern: ObjectSet) => (k: string) => _Keyed}
378
+ */
379
+ const objectReadSet = rules => pattern => k => {
380
+ const n = at(k)(pattern.props)
381
+ if (n !== null) { return keyed(n) }
382
+ const { rest } = pattern
383
+ return rest === undefined
384
+ ? [unknown, 't']
385
+ : [
386
+ merge(resolve(rules)(rest), { unit: unitBit(undefined) }),
387
+ typeof rest === 'string' ? `u:${rest}` : undefined,
388
+ ]
389
+ }
390
+
391
+ /** @type {(list: readonly string[]) => readonly string[]} */
392
+ const dedup = list => list.filter((n, i) => list.indexOf(n) === i)
393
+
394
+ /** @type {(ctx: _Ctx) => (assumed: _Assumed) => (p: ObjectSet, q: ObjectSet) => boolean} */
395
+ const objectSetSubset = ctx => assumed => (p, q) => {
396
+ const le = keyedSubset(ctx)(assumed)
397
+ const keys = dedup([
398
+ ...definedEntries(p.props).map(([k]) => k),
399
+ ...definedEntries(q.props).map(([k]) => k),
400
+ ])
401
+ return keys.every(k => le(objectReadSet(ctx[0])(p)(k), objectReadSet(ctx[1])(q)(k)))
402
+ // values at the keys declared by neither side
403
+ && (q.rest === undefined || nodeSubset(ctx)(assumed)(p.rest ?? unknown, q.rest))
404
+ }
405
+
406
+ /** @type {(ctx: _Ctx) => (assumed: _Assumed) => (a: UnionSet, b: UnionSet) => boolean} */
407
+ const unionSubset = ctx => assumed => (a, b) =>
408
+ ((a.unit ?? 0) & ~(b.unit ?? 0)) === 0
409
+ && kindSubset(Object.is)(a.number, b.number)
410
+ && kindSubset(strictEqual)(a.string, b.string)
411
+ && kindSubset(strictEqual)(a.bigint, b.bigint)
412
+ && kindSubset(arraySetSubset(ctx)(assumed))(a.array, b.array)
413
+ && kindSubset(objectSetSubset(ctx)(assumed))(a.object, b.object)
414
+
415
+ /** @type {(ctx: _Ctx) => (assumed: _Assumed) => (a: _Keyed, b: _Keyed) => boolean} */
416
+ const keyedSubset = ctx => assumed => ([a, aKey], [b, bKey]) => {
417
+ let assumed1 = assumed
418
+ if (aKey !== undefined && bKey !== undefined) {
419
+ const inner = assumed[aKey]
420
+ if (inner !== undefined && inner[bKey] === true) { return true }
421
+ assumed1 = { ...assumed, [aKey]: inner === undefined ? { [bKey]: true } : { ...inner, [bKey]: true } }
422
+ }
423
+ return unionSubset(ctx)(assumed1)(resolve(ctx[0])(a), resolve(ctx[1])(b))
424
+ }
425
+
426
+ /** @type {(ctx: _Ctx) => (assumed: _Assumed) => (a: Node, b: Node) => boolean} */
427
+ const nodeSubset = ctx => assumed => (a, b) =>
428
+ keyedSubset(ctx)(assumed)(keyed(a), keyed(b))
429
+
430
+ /**
431
+ * Sound subset test: `true` means every value of `a` is a value of `b`.
432
+ * Kind-wise on unions, pattern-wise on arrays/objects, coinductive on
433
+ * reference cycles. Incomplete in the known-hard corners of semantic
434
+ * subtyping (see `./README.md`): it may answer `false` for an inclusion
435
+ * that only holds by distributing a union across positions, or one whose
436
+ * left side is a non-syntactic empty set — never `true` for a non-inclusion.
437
+ *
438
+ * @type {(a: Data) => (b: Data) => boolean}
439
+ */
440
+ export const subset = ([aRules, aNode]) => ([bRules, bNode]) =>
441
+ nodeSubset([aRules, bRules])({})(aNode, bNode)
442
+
443
+ // ── coverage collapse ────────────────────────────────────────────────────────
444
+
445
+ /**
446
+ * Drops every pattern subsumed by another pattern of the same list.
447
+ *
448
+ * Two *distinct* patterns can subsume each other: references to
449
+ * α-equivalent rules under different names spell the same value set two
450
+ * ways (e.g. `list` and a differently-named `X = readonly X[]`). A
451
+ * mutually-subsumed pattern is therefore dropped only in favor of an
452
+ * earlier one, keeping exactly the first member of each such group —
453
+ * dropping on subsumption alone would drop the whole group.
454
+ *
455
+ * @template T
456
+ * @param {(p: T, q: T) => boolean} le
457
+ * @returns {(list: readonly T[]) => readonly T[]}
458
+ */
459
+ const dropSubsumed = le => list =>
460
+ list.filter((p, i) => !list.some((q, j) => j !== i && le(p, q) && (j < i || !le(q, p))))
461
+
462
+ /**
463
+ * @template T
464
+ * @param {(a: T, b: T) => number} cmpItem
465
+ * @returns {(list: readonly T[]) => readonly T[]}
466
+ */
467
+ const sortedDedup = cmpItem => list => {
468
+ const sorted = list.toSorted(cmpItem)
469
+ return sorted.filter((x, i) => i === 0 || cmpItem(sorted[i - 1], x) !== 0)
470
+ }
471
+
472
+ /** @typedef {(n: Node) => Node} _NodeMap */
473
+
474
+ /** @type {(f: _NodeMap) => (p: ArraySet) => ArraySet} */
475
+ const mapArraySet = f => p => ({
476
+ prefix: p.prefix.map(f),
477
+ ...(p.rest === undefined ? {} : { rest: f(p.rest) }),
478
+ })
479
+
480
+ /** @type {(f: _NodeMap) => (p: ObjectSet) => ObjectSet} */
481
+ const mapObjectSet = f => p => ({
482
+ props: Object.fromEntries(definedEntries(p.props).map(
483
+ ([k, v]) => /** @type {const} */ ([k, f(v)]))),
484
+ ...(p.rest === undefined ? {} : { rest: f(p.rest) }),
485
+ })
486
+
487
+ /**
488
+ * Rewrites a union's nested nodes with `f`, keeping each pattern list
489
+ * sorted and deduplicated.
490
+ *
491
+ * @type {(f: _NodeMap) => (u: UnionSet) => UnionSet}
492
+ */
493
+ const mapChildren = f => u => ({
494
+ ...u,
495
+ ...(u.array === undefined || u.array === true ? {} : {
496
+ array: sortedDedup(cmpArraySet)(u.array.map(mapArraySet(f))),
497
+ }),
498
+ ...(u.object === undefined || u.object === true ? {} : {
499
+ object: sortedDedup(cmpObjectSet)(u.object.map(mapObjectSet(f))),
500
+ }),
501
+ })
502
+
503
+ /**
504
+ * Bottom-up node rewrite: children first, then `post` on every node.
505
+ *
506
+ * @type {(post: _NodeMap) => _NodeMap}
507
+ */
508
+ const rewriteNodes = post => {
509
+ /** @type {_NodeMap} */
510
+ const go = n => post(typeof n === 'string' ? n : mapChildren(go)(n))
511
+ return go
512
+ }
513
+
514
+ /**
515
+ * Drops every subsumed array/object pattern of one union.
516
+ *
517
+ * @type {(ctx: _Ctx) => (u: UnionSet) => UnionSet}
518
+ */
519
+ const dropSubsumedUnion = ctx => u => ({
520
+ ...u,
521
+ ...(u.array === undefined || u.array === true ? {} : {
522
+ array: dropSubsumed(arraySetSubset(ctx)({}))(u.array),
523
+ }),
524
+ ...(u.object === undefined || u.object === true ? {} : {
525
+ object: dropSubsumed(objectSetSubset(ctx)({}))(u.object),
526
+ }),
527
+ })
528
+
529
+ /** @type {(ctx: _Ctx) => _NodeMap} */
530
+ const collapsePost = ctx => n => typeof n === 'string' ? n : dropSubsumedUnion(ctx)(n)
531
+
532
+ /**
533
+ * The coverage collapse: every subsumed array/object pattern dropped,
534
+ * recursively through inline nodes.
535
+ *
536
+ * @type {(ctx: _Ctx) => _NodeMap}
537
+ */
538
+ const collapseNode = ctx => rewriteNodes(collapsePost(ctx))
539
+
540
+ /** @type {(ctx: _Ctx) => (u: UnionSet) => UnionSet} */
541
+ const collapseUnion = ctx => u => dropSubsumedUnion(ctx)(mapChildren(collapseNode(ctx))(u))
542
+
543
+ /**
544
+ * Replaces a union structurally equal to a rule's body with a reference to
545
+ * that rule (the alphabetically first one on a tie). This is what keeps
546
+ * `or` idempotent over recursive schemas — the union of a rule with itself
547
+ * is the rule's body, which reads back as the rule — and it also collapses
548
+ * re-stated fixpoints such as `array(list)` for `list = readonly list[]`.
549
+ *
550
+ * @type {(rules: RuleSet) => _NodeMap}
551
+ */
552
+ const internPost = rules => n => {
553
+ if (typeof n === 'string') { return n }
554
+ for (const [name, body] of definedEntries(rules)) {
555
+ if (cmpUnion(n, body) === 0) { return name }
556
+ }
557
+ return n
558
+ }
559
+
560
+ /** @type {(rules: RuleSet) => _NodeMap} */
561
+ const internNode = rules => rewriteNodes(internPost(rules))
562
+
563
+ /** @type {(rules: RuleSet) => (u: UnionSet) => UnionSet} */
564
+ const internUnion = rules => mapChildren(internNode(rules))
565
+
566
+ /**
567
+ * The final canonical step: interns rule-body copies in the entry and in
568
+ * every rule body's nested positions. `rules` must already be sorted so a
569
+ * tie between equal rule bodies resolves deterministically.
570
+ *
571
+ * @type {(rules: RuleSet, entry: Node) => Data}
572
+ */
573
+ const internData = (rules, entry) => [
574
+ Object.fromEntries(definedEntries(rules).map(
575
+ ([n, u]) => /** @type {const} */ ([n, internUnion(rules)(u)]))),
576
+ internNode(rules)(entry),
577
+ ]
578
+
579
+ // ── toData ───────────────────────────────────────────────────────────────────
580
+
581
+ /** A thunk — the only schema form that can close a reference cycle. */
582
+ /** @typedef {Exclude<Type, Const>} _Thunk */
583
+
584
+ /** A schema tracked by identity: a thunk or a const container. */
585
+ /** @typedef {Exclude<Type, Primitive>} _Key */
586
+
587
+ /**
588
+ * The conversion state, threaded functionally:
589
+ *
590
+ * - `converting` — thunks whose union is being computed (the recursion stack).
591
+ * - `names` — rule names, assigned to a thunk the moment something needs to
592
+ * reference it (a cycle, or a deferred merge).
593
+ * - `done` — computed unions, memoized by identity.
594
+ * - `deferred` — union merges `target ∪= source` that could not run eagerly
595
+ * because `source`'s union was not final; resolved by {@link fixpoint}.
596
+ *
597
+ * @typedef {{
598
+ * readonly converting: readonly _Thunk[]
599
+ * readonly names: readonly (readonly [_Thunk, string])[]
600
+ * readonly done: readonly (readonly [_Key, UnionSet])[]
601
+ * readonly deferred: readonly (readonly [_Thunk, _Thunk])[]
602
+ * }} _State
603
+ */
604
+
605
+ /**
606
+ * The first value associated with `key` by identity.
607
+ *
608
+ * @template K
609
+ * @template T
610
+ * @param {readonly (readonly [K, T])[]} list
611
+ * @param {unknown} key
612
+ * @returns {T | undefined}
613
+ */
614
+ const assoc = (list, key) => {
615
+ for (const [k, v] of list) {
616
+ if (k === key) { return v }
617
+ }
618
+ return undefined
619
+ }
620
+
621
+ /**
622
+ * The rule name of `t`, assigning a fresh one on first request — the
623
+ * defining function's name, disambiguated with a counter on collision.
624
+ *
625
+ * @type {(state: _State, t: _Thunk) => readonly [_State, string]}
626
+ */
627
+ const ensureName = (state, t) => {
628
+ const existing = assoc(state.names, t)
629
+ if (existing !== undefined) { return [state, existing] }
630
+ const used = state.names.map(([, n]) => n)
631
+ let name = t.name
632
+ let i = 0
633
+ while (used.some(n => n === name)) {
634
+ name = t.name + i
635
+ ++i
636
+ }
637
+ return [{ ...state, names: [...state.names, [t, name]] }, name]
638
+ }
639
+
640
+ /**
641
+ * Records the pending merge `t ∪= op` and names `t`, so every embedding of
642
+ * `t` stays a reference that late-binds to the final, merged union.
643
+ *
644
+ * @type {(state: _State, t: _Thunk, op: _Thunk) => _State}
645
+ */
646
+ const defer = (state, t, op) => {
647
+ const [state1] = ensureName(state, t)
648
+ return { ...state1, deferred: [...state1.deferred, [t, op]] }
649
+ }
650
+
651
+ /** @type {(p: Primitive) => UnionSet} */
652
+ const primitiveUnion = p => {
653
+ switch (typeof p) {
654
+ case 'number': { return { number: [p] } }
655
+ case 'string': { return { string: [p] } }
656
+ case 'bigint': { return { bigint: [p] } }
657
+ default: { return { unit: unitBit(p) } }
658
+ }
659
+ }
660
+
661
+ /**
662
+ * The union of a const container, memoized by identity.
663
+ *
664
+ * @type {(state: _State, c: ConstObject) => readonly [_State, UnionSet]}
665
+ */
666
+ const containerMemo = (state, c) => {
667
+ const done = assoc(state.done, c)
668
+ if (done !== undefined) { return [state, done] }
669
+ const [state1, u] = containerUnion(state, c)
670
+ return [{ ...state1, done: [...state1.done, [c, u]] }, u]
671
+ }
672
+
673
+ /** @type {(state: _State, c: ConstObject) => readonly [_State, UnionSet]} */
674
+ const containerUnion = (state, c) => {
675
+ let s = state
676
+ if (c instanceof Array) {
677
+ /** @type {readonly Node[]} */
678
+ let prefix = []
679
+ for (const item of c) {
680
+ const [s1, n] = nodeOf(s)(item)
681
+ s = s1
682
+ prefix = [...prefix, n]
683
+ }
684
+ return [s, arraySet(prefix, undefined)]
685
+ }
686
+ /** @type {readonly (readonly [string, Node])[]} */
687
+ let props = []
688
+ for (const [k, v] of Object.entries(c)) {
689
+ const [s1, n] = nodeOf(s)(v)
690
+ s = s1
691
+ props = [...props, [k, n]]
692
+ }
693
+ return [s, objectSet(props, undefined)]
694
+ }
695
+
696
+ /** @type {(state: _State, c: Const) => readonly [_State, UnionSet]} */
697
+ const constUnion = (state, c) =>
698
+ c !== null && typeof c === 'object'
699
+ ? containerMemo(state, c)
700
+ : [state, primitiveUnion(c)]
701
+
702
+ /**
703
+ * The union of the `or` operands of `t`.
704
+ *
705
+ * A direct self-operand is skipped: `X = A ∪ X` collapses to `X = A`. An
706
+ * operand whose union is not final — one still being converted (an ancestor
707
+ * on the recursion stack), or a named rule with its own merges pending — is
708
+ * {@link defer}red instead of merged eagerly.
709
+ *
710
+ * @type {(state: _State, t: _Thunk, operands: readonly Type[]) => readonly [_State, UnionSet]}
711
+ */
712
+ const orUnion = (state, t, operands) => {
713
+ let s = state
714
+ let result = never
715
+ for (const op of operands) {
716
+ if (op === t) { continue }
717
+ if (op === null || (typeof op !== 'object' && typeof op !== 'function')) {
718
+ result = merge(result, primitiveUnion(op))
719
+ continue
720
+ }
721
+ if (typeof op !== 'function') {
722
+ const [s1, u] = containerMemo(s, op)
723
+ s = s1
724
+ result = merge(result, u)
725
+ continue
726
+ }
727
+ if (s.converting.some(k => k === op)) {
728
+ s = defer(s, t, op)
729
+ continue
730
+ }
731
+ let u = assoc(s.done, op)
732
+ if (u === undefined) {
733
+ const [s1, u1] = convertThunk(s, op)
734
+ s = s1
735
+ u = u1
736
+ }
737
+ if (s.deferred.some(([target]) => target === op)) {
738
+ s = defer(s, t, op)
739
+ } else {
740
+ result = merge(result, u)
741
+ }
742
+ }
743
+ return [s, result]
744
+ }
745
+
746
+ /** @type {(state: _State, t: _Thunk) => readonly [_State, UnionSet]} */
747
+ const thunkUnion = (state, t) => {
748
+ const [tag, ...rest] = t()
749
+ switch (tag) {
750
+ case 'const': { return constUnion(state, /** @type {Const} */ (rest[0])) }
751
+ case 'boolean': { return [state, { unit: booleanUnits }] }
752
+ case 'number': { return [state, { number: true }] }
753
+ case 'string': { return [state, { string: true }] }
754
+ case 'bigint': { return [state, { bigint: true }] }
755
+ case 'unknown': { return [state, unknown] }
756
+ case 'array': {
757
+ const [state1, item] = nodeOf(state)(rest[0])
758
+ return [state1, arraySet([], item)]
759
+ }
760
+ case 'record': {
761
+ const [state1, value] = nodeOf(state)(rest[0])
762
+ return [state1, objectSet([], value)]
763
+ }
764
+ default: { return orUnion(state, t, rest) }
765
+ }
766
+ }
767
+
768
+ /**
769
+ * Computes and memoizes the union of a thunk.
770
+ *
771
+ * @type {(state: _State, t: _Thunk) => readonly [_State, UnionSet]}
772
+ */
773
+ const convertThunk = (state, t) => {
774
+ const [state1, u] = thunkUnion({ ...state, converting: [...state.converting, t] }, t)
775
+ return [{
776
+ ...state1,
777
+ converting: state1.converting.filter(k => k !== t),
778
+ done: [...state1.done, [t, u]],
779
+ }, u]
780
+ }
781
+
782
+ /**
783
+ * Converts a schema into a {@link Node} for a nested position: a reference
784
+ * for named (recursive) thunks, an inline union for everything else.
785
+ *
786
+ * @type {(state: _State) => (t: Type) => readonly [_State, Node]}
787
+ */
788
+ const nodeOf = state => t => {
789
+ if (t === null || (typeof t !== 'object' && typeof t !== 'function')) {
790
+ return [state, primitiveUnion(t)]
791
+ }
792
+ if (typeof t !== 'function') {
793
+ return containerMemo(state, t)
794
+ }
795
+ const name = assoc(state.names, t)
796
+ if (name !== undefined) { return [state, name] }
797
+ const done = assoc(state.done, t)
798
+ if (done !== undefined) { return [state, done] }
799
+ if (state.converting.some(k => k === t)) {
800
+ // a cycle: from here on, `t` is a named rule
801
+ const [state1, name1] = ensureName(state, t)
802
+ return [state1, name1]
803
+ }
804
+ const [state1] = convertThunk(state, t)
805
+ return nodeOf(state1)(t)
806
+ }
807
+
808
+ /**
809
+ * Applies the deferred merges until nothing changes. Every round only grows
810
+ * unions with patterns drawn from the finite already-computed content, so
811
+ * the loop terminates.
812
+ *
813
+ * @type {(state: _State) => readonly (readonly [_Key, UnionSet])[]}
814
+ */
815
+ const fixpoint = state => {
816
+ let done = state.done
817
+ let changed = true
818
+ while (changed) {
819
+ changed = false
820
+ for (const [target, source] of state.deferred) {
821
+ const targetUnion = assertNotNullish(assoc(done, target))
822
+ const merged = merge(targetUnion, assertNotNullish(assoc(done, source)))
823
+ if (cmpUnion(merged, targetUnion) !== 0) {
824
+ changed = true
825
+ done = done.map(e => e[0] === target ? /** @type {const} */ ([target, merged]) : e)
826
+ }
827
+ }
828
+ }
829
+ return done
830
+ }
831
+
832
+ /** @type {(n: Node) => readonly string[]} */
833
+ const nodeRefs = n => typeof n === 'string' ? [n] : unionRefs(n)
834
+
835
+ /** @type {(rest: Node | undefined) => readonly string[]} */
836
+ const restRefs = rest => rest === undefined ? [] : nodeRefs(rest)
837
+
838
+ /** @type {(p: ArraySet) => readonly string[]} */
839
+ const arraySetRefs = p => [...p.prefix.flatMap(nodeRefs), ...restRefs(p.rest)]
840
+
841
+ /** @type {(p: ObjectSet) => readonly string[]} */
842
+ const objectSetRefs = p => [
843
+ ...definedEntries(p.props).flatMap(([, v]) => nodeRefs(v)),
844
+ ...restRefs(p.rest),
845
+ ]
846
+
847
+ /**
848
+ * @template T
849
+ * @param {(p: T) => readonly string[]} f
850
+ * @returns {(k: KindSet<T> | undefined) => readonly string[]}
851
+ */
852
+ const kindRefs = f => k => k === undefined || k === true ? [] : k.flatMap(f)
853
+
854
+ /** @type {(u: UnionSet) => readonly string[]} */
855
+ const unionRefs = u => [...kindRefs(arraySetRefs)(u.array), ...kindRefs(objectSetRefs)(u.object)]
856
+
857
+ /**
858
+ * All rule names reachable from `init` through rule bodies.
859
+ *
860
+ * @type {(rules: RuleSet, init: readonly string[]) => readonly string[]}
861
+ */
862
+ const reachableFrom = (rules, init) => {
863
+ let result = dedup(init)
864
+ let frontier = result
865
+ while (frontier.length !== 0) {
866
+ const next = dedup(frontier
867
+ .flatMap(n => unionRefs(assertNotNullish(rules[n])))
868
+ .filter(n => !result.some(r => r === n)))
869
+ result = [...result, ...next]
870
+ frontier = next
871
+ }
872
+ return result
873
+ }
874
+
875
+ /** @type {(rules: RuleSet) => RuleSet} */
876
+ const sortRules = rules =>
877
+ Object.fromEntries(definedEntries(rules).toSorted(([an], [bn]) => cmpString(an, bn)))
878
+
879
+ /**
880
+ * Converts a thunk-form schema into its canonical data form.
881
+ *
882
+ * Runs once per consumer need; schemas that are built but never consumed pay
883
+ * nothing. The output is normalized — unions are flattened and merged
884
+ * kind-wise, literals are sorted and deduplicated, subsumed array/object
885
+ * patterns are dropped, rules are pruned to the reachable set and sorted,
886
+ * and a union equal to a rule's body reads back as a reference — so schema
887
+ * identity is a property of this form: `toData(or(a, b))` and
888
+ * `toData(or(b, a))` are structurally identical even though the two thunks
889
+ * are distinct, and `or` is idempotent on recursive schemas.
890
+ *
891
+ * Only recursive definitions become named rules (named after their defining
892
+ * functions), everything else is inlined; a schema with no reference cycles
893
+ * converts to `[{}, unionSet]`.
894
+ *
895
+ * @type {(t: Type) => Data}
896
+ */
897
+ export const toData = t => {
898
+ /** @type {_State} */
899
+ const empty = { converting: [], names: [], done: [], deferred: [] }
900
+ const [state, node] = nodeOf(empty)(t)
901
+ const done = fixpoint(state)
902
+ const ruleEntries = done.flatMap(
903
+ /** @returns {readonly (readonly [string, UnionSet])[]} */
904
+ ([key, u]) => {
905
+ const name = assoc(state.names, key)
906
+ return name === undefined ? [] : [[name, u]]
907
+ })
908
+ /** @type {RuleSet} */
909
+ const rules = Object.fromEntries(ruleEntries)
910
+ /** @type {_Ctx} */
911
+ const ctx = [rules, rules]
912
+ /** @type {RuleSet} */
913
+ const collapsed = Object.fromEntries(definedEntries(rules).map(
914
+ ([n, u]) => /** @type {const} */ ([n, collapseUnion(ctx)(u)])))
915
+ const entry = collapseNode(ctx)(node)
916
+ const keep = reachableFrom(collapsed, nodeRefs(entry))
917
+ /** @type {RuleSet} */
918
+ const kept = Object.fromEntries(definedEntries(collapsed).filter(([n]) => keep.some(k => k === n)))
919
+ if (typeof entry === 'string'
920
+ && !definedValues(kept).some(u => unionRefs(u).some(r => r === entry))) {
921
+ // the entry rule is not referenced by any rule body — inline it
922
+ const entryUnion = assertNotNullish(kept[entry])
923
+ /** @type {RuleSet} */
924
+ const rest = Object.fromEntries(definedEntries(kept).filter(([n]) => n !== entry))
925
+ return internData(sortRules(rest), entryUnion)
926
+ }
927
+ return internData(sortRules(kept), entry)
928
+ }
929
+
930
+ // ── data-driven validation ───────────────────────────────────────────────────
931
+
932
+ /** @type {(cond: boolean, value: Unknown) => ResultE} */
933
+ const checkValue = (cond, value) => cond ? ok(value) : verror('unexpected value')
934
+
935
+ /**
936
+ * @template T
937
+ * @param {(a: T, b: T) => boolean} eq
938
+ * @returns {(k: KindSet<T> | undefined, v: T) => boolean}
939
+ */
940
+ const kindHas = eq => (k, v) => k !== undefined && (k === true || k.some(x => eq(x, v)))
941
+
942
+ /** `validate` has nothing to collect from a successful entry — only pass/fail matters. */
943
+ const noAccumulate = () => undefined
944
+
945
+ /**
946
+ * The first matching pattern wins; a single pattern's error is kept intact
947
+ * (paths included), several candidates report `no match` like `or` does.
948
+ *
949
+ * @template T
950
+ * @template {Unknown} V
951
+ * @param {KindSet<T> | undefined} k
952
+ * @param {(p: T) => (value: V) => ResultE} item
953
+ * @param {V} value
954
+ * @returns {ResultE}
955
+ */
956
+ const patternsValidate = (k, item, value) => {
957
+ if (k === undefined) { return verror('unexpected value') }
958
+ if (k === true) { return ok(value) }
959
+ if (k.length === 1) { return item(k[0])(value) }
960
+ for (const p of k) {
961
+ const r = item(p)(value)
962
+ if (r[0] === 'ok') { return r }
963
+ }
964
+ return verror('no match')
965
+ }
966
+
967
+ /** @type {(p: ArraySet, i: number) => Node} */
968
+ const atIndex = (p, i) => i < p.prefix.length ? p.prefix[i] : assertNotNullish(p.rest)
969
+
970
+ /** @type {(rules: RuleSet) => (p: ArraySet) => (value: readonly Unknown[]) => ResultE} */
971
+ const arraySetValidate = rules => p => value => {
972
+ const pn = p.prefix.length
973
+ if (p.rest === undefined ? value.length !== pn : value.length < pn) {
974
+ return verror('unexpected value')
975
+ }
976
+ const r = eachEntry(
977
+ Object.entries(value),
978
+ (k, v) => nodeValidate(rules)(atIndex(p, Number(k)))(v),
979
+ undefined,
980
+ noAccumulate,
981
+ )
982
+ return r[0] === 'error' ? r : ok(value)
983
+ }
984
+
985
+ /** @type {(rules: RuleSet) => (p: ObjectSet) => (value: StringMap<Unknown>) => ResultE} */
986
+ const objectSetValidate = rules => p => value => {
987
+ const declared = eachEntry(
988
+ definedEntries(p.props),
989
+ (k, n) => nodeValidate(rules)(n)(value[k]),
990
+ undefined,
991
+ noAccumulate,
992
+ )
993
+ if (declared[0] === 'error') { return declared }
994
+ const { rest } = p
995
+ if (rest === undefined) { return ok(value) }
996
+ const extra = eachEntry(
997
+ Object.entries(value).filter(([k]) => at(k)(p.props) === null),
998
+ (_k, v) => nodeValidate(rules)(rest)(v),
999
+ undefined,
1000
+ noAccumulate,
1001
+ )
1002
+ return extra[0] === 'error' ? extra : ok(value)
1003
+ }
1004
+
1005
+ /** @type {(rules: RuleSet) => (u: UnionSet) => (value: Unknown) => ResultE} */
1006
+ const unionValidate = rules => u => value => {
1007
+ if (typeof value === 'number') { return checkValue(kindHas(Object.is)(u.number, value), value) }
1008
+ if (typeof value === 'string') { return checkValue(kindHas(strictEqual)(u.string, value), value) }
1009
+ if (typeof value === 'bigint') { return checkValue(kindHas(strictEqual)(u.bigint, value), value) }
1010
+ if (value === null || value === undefined || typeof value === 'boolean') {
1011
+ return checkValue(((u.unit ?? 0) & unitBit(value)) !== 0, value)
1012
+ }
1013
+ if (isArray(value)) {
1014
+ return patternsValidate(u.array, arraySetValidate(rules), value)
1015
+ }
1016
+ return patternsValidate(u.object, objectSetValidate(rules), value)
1017
+ }
1018
+
1019
+ /** @type {(rules: RuleSet) => (n: Node) => (value: Unknown) => ResultE} */
1020
+ const nodeValidate = rules => n => unionValidate(rules)(resolve(rules)(n))
1021
+
1022
+ /**
1023
+ * Data-driven validation — the counterpart of `../validate` that consumes a
1024
+ * {@link Data} produced by {@link toData} instead of walking the thunk
1025
+ * graph. Returns the original value on success, or the first
1026
+ * `{ path, message }` error.
1027
+ *
1028
+ * @type {(data: Data) => (value: Unknown) => ResultE}
1029
+ */
1030
+ export const validate = ([rules, node]) => nodeValidate(rules)(node)