functionalscript 0.44.0 → 0.46.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 (571) hide show
  1. package/README.md +5 -3
  2. package/fjs/asn.1/module.f.mjs +8 -1
  3. package/fjs/asn.1/proof.f.d.mts +15 -0
  4. package/fjs/asn.1/proof.f.mjs +31 -3
  5. package/fjs/asserts/module.f.d.mts +14 -0
  6. package/fjs/asserts/module.f.mjs +20 -0
  7. package/fjs/asserts/proof.f.d.mts +3 -0
  8. package/fjs/asserts/proof.f.mjs +15 -1
  9. package/fjs/basen/base128/module.f.mjs +22 -5
  10. package/fjs/basen/base128/proof.f.d.mts +3 -1
  11. package/fjs/basen/base128/proof.f.mjs +3 -1
  12. package/fjs/basen/base64/module.f.mjs +7 -3
  13. package/fjs/basen/base64/proof.f.d.mts +3 -1
  14. package/fjs/basen/base64/proof.f.mjs +7 -4
  15. package/fjs/basen/cbase32/proof.f.d.mts +3 -1
  16. package/fjs/basen/cbase32/proof.f.mjs +3 -1
  17. package/fjs/bnf/data/module.f.d.mts +32 -6
  18. package/fjs/bnf/data/module.f.mjs +112 -7
  19. package/fjs/bnf/data/proof.f.d.mts +2 -0
  20. package/fjs/bnf/data/proof.f.mjs +74 -4
  21. package/fjs/bnf/data/types.d.ts +20 -2
  22. package/fjs/bnf/descent/module.f.d.mts +34 -5
  23. package/fjs/bnf/descent/module.f.mjs +176 -54
  24. package/fjs/bnf/descent/proof.f.d.mts +3 -0
  25. package/fjs/bnf/descent/proof.f.mjs +189 -27
  26. package/fjs/bnf/descent/types.d.ts +24 -18
  27. package/fjs/bnf/ll1/module.f.d.mts +74 -6
  28. package/fjs/bnf/ll1/module.f.mjs +297 -95
  29. package/fjs/bnf/ll1/proof.f.d.mts +17 -2
  30. package/fjs/bnf/ll1/proof.f.mjs +372 -137
  31. package/fjs/bnf/ll1/types.d.ts +25 -27
  32. package/fjs/bnf/matcher/module.f.d.mts +66 -0
  33. package/fjs/bnf/matcher/module.f.mjs +81 -0
  34. package/fjs/bnf/matcher/proof.f.d.mts +10 -0
  35. package/fjs/bnf/matcher/proof.f.mjs +79 -0
  36. package/fjs/bnf/matcher/types.d.ts +54 -0
  37. package/fjs/bnf/module.f.d.mts +15 -6
  38. package/fjs/bnf/module.f.mjs +52 -11
  39. package/fjs/bnf/proof.f.d.mts +2 -0
  40. package/fjs/bnf/proof.f.mjs +79 -3
  41. package/fjs/bnf/testlib.f.d.mts +31 -0
  42. package/fjs/bnf/testlib.f.mjs +80 -0
  43. package/fjs/bnf/token_symbol/module.f.d.mts +4 -3
  44. package/fjs/bnf/token_symbol/module.f.mjs +7 -6
  45. package/fjs/bnf/token_symbol/proof.f.mjs +5 -2
  46. package/fjs/bnf/token_symbol/types.d.ts +2 -2
  47. package/fjs/bnf/types.d.ts +10 -3
  48. package/fjs/cas/cli/module.f.d.mts +1 -1
  49. package/fjs/cas/cli/module.f.mjs +14 -20
  50. package/fjs/cas/cli/proof.f.d.mts +4 -4
  51. package/fjs/cas/cli/proof.f.mjs +47 -34
  52. package/fjs/cas/evo/module.f.d.mts +71 -31
  53. package/fjs/cas/evo/module.f.mjs +223 -138
  54. package/fjs/cas/evo/proof.f.d.mts +10 -1
  55. package/fjs/cas/evo/proof.f.mjs +311 -226
  56. package/fjs/cas/evo/types.d.ts +45 -9
  57. package/fjs/cas/module.f.d.mts +18 -32
  58. package/fjs/cas/module.f.mjs +164 -176
  59. package/fjs/cas/proof.f.d.mts +11 -8
  60. package/fjs/cas/proof.f.mjs +259 -147
  61. package/fjs/cas/types.d.ts +24 -10
  62. package/fjs/ci/common/module.f.d.mts +1 -1
  63. package/fjs/ci/common/module.f.mjs +1 -0
  64. package/fjs/ci/config/module.f.d.mts +3 -3
  65. package/fjs/ci/config/module.f.mjs +3 -3
  66. package/fjs/ci/module.f.d.mts +5 -5
  67. package/fjs/ci/module.f.mjs +8 -7
  68. package/fjs/ci/nix/module.f.d.mts +7 -5
  69. package/fjs/ci/nix/module.f.mjs +13 -12
  70. package/fjs/ci/nix/proof.f.d.mts +2 -0
  71. package/fjs/ci/nix/proof.f.mjs +4 -4
  72. package/fjs/ci/proof.f.d.mts +4 -2
  73. package/fjs/ci/proof.f.mjs +13 -8
  74. package/fjs/cli/module.f.d.mts +4 -6
  75. package/fjs/cli/module.f.mjs +4 -8
  76. package/fjs/cli/proof.f.d.mts +4 -2
  77. package/fjs/cli/proof.f.mjs +21 -18
  78. package/fjs/cli/types.d.ts +2 -3
  79. package/fjs/common/monoid/module.f.d.mts +70 -12
  80. package/fjs/common/monoid/module.f.mjs +177 -14
  81. package/fjs/common/monoid/proof.f.d.mts +12 -1
  82. package/fjs/common/monoid/proof.f.mjs +88 -4
  83. package/fjs/common/monoid/types.d.ts +23 -0
  84. package/fjs/crypto/hmac/module.f.mjs +2 -2
  85. package/fjs/crypto/secp/proof.f.d.mts +3 -1
  86. package/fjs/crypto/secp/proof.f.mjs +3 -1
  87. package/fjs/crypto/sha2/module.f.mjs +3 -1
  88. package/fjs/crypto/sha2/proof.f.d.mts +4 -1
  89. package/fjs/crypto/sha2/proof.f.mjs +27 -1
  90. package/fjs/crypto/sha2/types.d.ts +11 -0
  91. package/fjs/crypto/sign/module.f.mjs +2 -2
  92. package/fjs/crypto/vdf/module.f.d.mts +23 -4
  93. package/fjs/crypto/vdf/module.f.mjs +6 -4
  94. package/fjs/dev/module.f.d.mts +17 -5
  95. package/fjs/dev/module.f.mjs +60 -30
  96. package/fjs/dev/update/module.f.d.mts +11 -3
  97. package/fjs/dev/update/module.f.mjs +16 -11
  98. package/fjs/dev/update/proof.f.d.mts +4 -3
  99. package/fjs/dev/update/proof.f.mjs +11 -7
  100. package/fjs/djs/module.f.d.mts +13 -5
  101. package/fjs/djs/module.f.mjs +31 -16
  102. package/fjs/djs/parser/module.f.d.mts +16 -3
  103. package/fjs/djs/parser/module.f.mjs +135 -16
  104. package/fjs/djs/parser/proof.f.d.mts +8 -1
  105. package/fjs/djs/parser/proof.f.mjs +287 -13
  106. package/fjs/djs/parser/types.d.ts +7 -1
  107. package/fjs/djs/proof.f.d.mts +20 -1
  108. package/fjs/djs/proof.f.mjs +190 -12
  109. package/fjs/djs/serializer/module.f.d.mts +25 -8
  110. package/fjs/djs/serializer/module.f.mjs +66 -19
  111. package/fjs/djs/serializer/proof.f.d.mts +5 -0
  112. package/fjs/djs/serializer/proof.f.mjs +23 -1
  113. package/fjs/djs/tokenizer/module.f.d.mts +17 -5
  114. package/fjs/djs/tokenizer/module.f.mjs +120 -73
  115. package/fjs/djs/tokenizer/proof.f.d.mts +3 -0
  116. package/fjs/djs/tokenizer/proof.f.mjs +86 -67
  117. package/fjs/djs/transpiler/module.f.d.mts +13 -19
  118. package/fjs/djs/transpiler/module.f.mjs +79 -72
  119. package/fjs/djs/transpiler/types.d.ts +29 -0
  120. package/fjs/djs/types.d.ts +7 -1
  121. package/fjs/effects/list/module.f.d.mts +23 -12
  122. package/fjs/effects/list/module.f.mjs +16 -12
  123. package/fjs/effects/list/types.d.ts +27 -7
  124. package/fjs/effects/memory/module.f.d.mts +6 -3
  125. package/fjs/effects/memory/module.f.mjs +7 -7
  126. package/fjs/effects/memory/proof.f.d.mts +4 -0
  127. package/fjs/effects/memory/proof.f.mjs +18 -9
  128. package/fjs/effects/memory/types.d.ts +4 -3
  129. package/fjs/effects/mock/module.f.d.mts +28 -4
  130. package/fjs/effects/mock/module.f.mjs +39 -5
  131. package/fjs/effects/mock/types.d.ts +10 -1
  132. package/fjs/effects/module.d.mts +12 -2
  133. package/fjs/effects/module.f.d.mts +469 -281
  134. package/fjs/effects/module.f.mjs +538 -299
  135. package/fjs/effects/module.mjs +11 -2
  136. package/fjs/effects/node/memory/module.d.mts +7 -2
  137. package/fjs/effects/node/memory/module.mjs +9 -5
  138. package/fjs/effects/node/memory/proof.d.mts +2 -0
  139. package/fjs/effects/node/memory/proof.mjs +12 -5
  140. package/fjs/effects/node/module.d.mts +8 -2
  141. package/fjs/effects/node/module.f.d.mts +183 -43
  142. package/fjs/effects/node/module.f.mjs +260 -62
  143. package/fjs/effects/node/module.mjs +61 -50
  144. package/fjs/effects/node/proof.f.d.mts +28 -2
  145. package/fjs/effects/node/proof.f.mjs +161 -42
  146. package/fjs/effects/node/types.d.ts +106 -18
  147. package/fjs/effects/node/virtual/module.f.d.mts +21 -4
  148. package/fjs/effects/node/virtual/module.f.mjs +113 -70
  149. package/fjs/effects/node/virtual/proof.f.d.mts +31 -2
  150. package/fjs/effects/node/virtual/proof.f.mjs +201 -8
  151. package/fjs/effects/proof.f.d.mts +69 -34
  152. package/fjs/effects/proof.f.mjs +413 -130
  153. package/fjs/effects/types.d.ts +161 -33
  154. package/fjs/emergent_testing/all.test.d.mts +8 -0
  155. package/fjs/emergent_testing/all.test.mjs +14 -0
  156. package/fjs/emergent_testing/module.f.d.mts +22 -10
  157. package/fjs/emergent_testing/module.f.mjs +119 -85
  158. package/fjs/emergent_testing/proof.f.d.mts +21 -7
  159. package/fjs/emergent_testing/proof.f.mjs +169 -35
  160. package/fjs/emergent_testing/types.d.ts +22 -4
  161. package/fjs/fsc/bnf.f.d.mts +3 -0
  162. package/fjs/fsc/bnf.f.mjs +4 -1
  163. package/fjs/fsc/json.f.d.mts +3 -0
  164. package/fjs/fsc/json.f.mjs +4 -1
  165. package/fjs/fsc/module.f.d.mts +9 -0
  166. package/fjs/fsc/module.f.mjs +5 -3
  167. package/fjs/fsm/module.f.d.mts +14 -4
  168. package/fjs/fsm/module.f.mjs +54 -37
  169. package/fjs/fsm/proof.f.d.mts +5 -0
  170. package/fjs/fsm/proof.f.mjs +87 -115
  171. package/fjs/js/keywords/module.f.d.mts +52 -0
  172. package/fjs/js/keywords/module.f.mjs +72 -0
  173. package/fjs/{emergent_testing/scenarios/return-value.pass.d.ts → js/keywords/proof.f.d.mts} +1 -1
  174. package/fjs/js/keywords/proof.f.mjs +13 -0
  175. package/fjs/js/tokenizer/module.f.d.mts +30 -3
  176. package/fjs/js/tokenizer/module.f.mjs +161 -211
  177. package/fjs/js/tokenizer/proof.f.d.mts +1 -0
  178. package/fjs/js/tokenizer/proof.f.mjs +54 -24
  179. package/fjs/js/tokenizer/types.d.ts +33 -24
  180. package/fjs/mcp/cas/module.f.d.mts +1 -6
  181. package/fjs/mcp/cas/module.f.mjs +55 -51
  182. package/fjs/mcp/cas/proof.f.d.mts +15 -0
  183. package/fjs/mcp/cas/proof.f.mjs +174 -0
  184. package/fjs/mcp/evo/module.f.d.mts +19 -10
  185. package/fjs/mcp/evo/module.f.mjs +48 -27
  186. package/fjs/mcp/evo/proof.f.d.mts +6 -1
  187. package/fjs/mcp/evo/proof.f.mjs +115 -31
  188. package/fjs/mcp/module.f.d.mts +39 -4
  189. package/fjs/mcp/module.f.mjs +14 -12
  190. package/fjs/mcp/proof.f.d.mts +13 -1
  191. package/fjs/mcp/proof.f.mjs +120 -61
  192. package/fjs/media/html/module.f.d.mts +12 -0
  193. package/fjs/media/html/module.f.mjs +7 -5
  194. package/fjs/media/html/proof.f.d.mts +3 -0
  195. package/fjs/media/html/proof.f.mjs +4 -1
  196. package/fjs/media/json/extended/module.f.d.mts +82 -0
  197. package/fjs/media/json/extended/module.f.mjs +153 -0
  198. package/fjs/media/json/extended/proof.f.d.mts +42 -0
  199. package/fjs/media/json/extended/proof.f.mjs +127 -0
  200. package/fjs/media/json/extended/types.d.ts +23 -0
  201. package/fjs/media/json/module.f.d.mts +8 -2
  202. package/fjs/media/json/module.f.mjs +43 -41
  203. package/fjs/media/json/number/module.f.d.mts +59 -0
  204. package/fjs/media/json/number/module.f.mjs +136 -0
  205. package/fjs/media/json/number/proof.f.d.mts +24 -0
  206. package/fjs/media/json/number/proof.f.mjs +86 -0
  207. package/fjs/media/json/number/types.d.ts +28 -0
  208. package/fjs/media/json/parser/module.f.d.mts +25 -13
  209. package/fjs/media/json/parser/module.f.mjs +133 -72
  210. package/fjs/media/json/parser/proof.f.d.mts +5 -0
  211. package/fjs/media/json/parser/proof.f.mjs +31 -1
  212. package/fjs/media/json/parser/types.d.ts +38 -14
  213. package/fjs/media/json/rtti/module.f.d.mts +1 -1
  214. package/fjs/media/json/rtti/module.f.mjs +1 -1
  215. package/fjs/media/json/rtti/proof.f.d.mts +3 -0
  216. package/fjs/media/json/rtti/proof.f.mjs +12 -12
  217. package/fjs/media/json/schema/module.f.d.mts +61 -27
  218. package/fjs/media/json/schema/module.f.mjs +218 -63
  219. package/fjs/media/json/schema/proof.f.d.mts +41 -1
  220. package/fjs/media/json/schema/proof.f.mjs +220 -9
  221. package/fjs/media/json/serializer/module.f.d.mts +44 -0
  222. package/fjs/media/json/serializer/module.f.mjs +71 -9
  223. package/fjs/media/json/tokenizer/module.f.d.mts +8 -0
  224. package/fjs/media/json/tokenizer/module.f.mjs +31 -8
  225. package/fjs/media/json/tokenizer/proof.f.d.mts +6 -0
  226. package/fjs/media/json/tokenizer/proof.f.mjs +62 -21
  227. package/fjs/media/json/types.d.ts +36 -10
  228. package/fjs/media/lock/module.f.d.mts +100 -0
  229. package/fjs/media/lock/module.f.mjs +125 -0
  230. package/fjs/media/lock/proof.f.d.mts +33 -0
  231. package/fjs/media/lock/proof.f.mjs +196 -0
  232. package/fjs/media/lock/types.d.ts +15 -0
  233. package/fjs/media/module.f.d.mts +6 -5
  234. package/fjs/media/module.f.mjs +8 -7
  235. package/fjs/media/nix/module.f.d.mts +13 -0
  236. package/fjs/media/nix/module.f.mjs +4 -2
  237. package/fjs/media/nix/proof.f.d.mts +3 -0
  238. package/fjs/media/nix/proof.f.mjs +4 -1
  239. package/fjs/media/note/module.f.d.mts +121 -0
  240. package/fjs/media/note/module.f.mjs +131 -0
  241. package/fjs/media/note/proof.f.d.mts +29 -0
  242. package/fjs/media/note/proof.f.mjs +150 -0
  243. package/fjs/media/note/types.d.ts +10 -0
  244. package/fjs/media/proof.f.d.mts +4 -1
  245. package/fjs/media/proof.f.mjs +40 -21
  246. package/fjs/media/revision/module.f.d.mts +83 -7
  247. package/fjs/media/revision/module.f.mjs +127 -23
  248. package/fjs/media/revision/proof.f.d.mts +14 -0
  249. package/fjs/media/revision/proof.f.mjs +93 -2
  250. package/fjs/media/revision/types.d.ts +34 -5
  251. package/fjs/media/type/module.f.d.mts +53 -18
  252. package/fjs/media/type/module.f.mjs +87 -97
  253. package/fjs/media/type/proof.f.d.mts +17 -0
  254. package/fjs/media/type/proof.f.mjs +73 -13
  255. package/fjs/module.d.mts +5 -0
  256. package/fjs/module.f.d.mts +8 -0
  257. package/fjs/module.f.mjs +33 -10
  258. package/fjs/module.mjs +6 -0
  259. package/fjs/nanvm/proof.f.mjs +3 -3
  260. package/fjs/nanvm/rust/module.f.mjs +1 -1
  261. package/fjs/nanvm/update/module.f.d.mts +4 -4
  262. package/fjs/nanvm/update/module.f.mjs +8 -9
  263. package/fjs/nanvm/update/proof.f.mjs +4 -3
  264. package/fjs/path/module.f.d.mts +8 -0
  265. package/fjs/path/module.f.mjs +4 -2
  266. package/fjs/proof.f.d.mts +7 -3
  267. package/fjs/proof.f.mjs +41 -12
  268. package/fjs/protocol/json_rpc/module.f.d.mts +3 -3
  269. package/fjs/protocol/json_rpc/module.f.mjs +10 -7
  270. package/fjs/protocol/json_rpc/proof.f.d.mts +6 -0
  271. package/fjs/protocol/json_rpc/proof.f.mjs +26 -5
  272. package/fjs/protocol/mcp/module.f.d.mts +10 -13
  273. package/fjs/protocol/mcp/module.f.mjs +74 -58
  274. package/fjs/protocol/mcp/proof.f.d.mts +16 -3
  275. package/fjs/protocol/mcp/proof.f.mjs +224 -69
  276. package/fjs/protocol/mcp/stdio/module.f.d.mts +17 -11
  277. package/fjs/protocol/mcp/stdio/module.f.mjs +39 -33
  278. package/fjs/protocol/mcp/stdio/proof.f.d.mts +5 -3
  279. package/fjs/protocol/mcp/stdio/proof.f.mjs +46 -13
  280. package/fjs/protocol/mcp/stdio/types.d.ts +14 -0
  281. package/fjs/protocol/mcp/types.d.ts +17 -6
  282. package/fjs/sul/id/module.f.d.mts +4 -0
  283. package/fjs/sul/id/module.f.mjs +6 -6
  284. package/fjs/sul/level/hash/module.f.d.mts +4 -1
  285. package/fjs/sul/level/hash/module.f.mjs +6 -4
  286. package/fjs/sul/level/hash/proof.f.d.mts +4 -0
  287. package/fjs/sul/level/hash/proof.f.mjs +7 -4
  288. package/fjs/sul/level/literal/module.f.d.mts +4 -1
  289. package/fjs/sul/level/literal/module.f.mjs +4 -3
  290. package/fjs/sul/level/literal/proof.f.d.mts +3 -0
  291. package/fjs/sul/level/literal/proof.f.mjs +4 -1
  292. package/fjs/sul/module.f.d.mts +5 -3
  293. package/fjs/sul/module.f.mjs +23 -17
  294. package/fjs/sul/proof.f.d.mts +4 -0
  295. package/fjs/sul/proof.f.mjs +5 -2
  296. package/fjs/text/ascii/module.f.d.mts +26 -0
  297. package/fjs/text/ascii/module.f.mjs +49 -1
  298. package/fjs/text/ascii/proof.f.d.mts +10 -0
  299. package/fjs/text/ascii/proof.f.mjs +33 -1
  300. package/fjs/text/code_point/module.f.d.mts +29 -3
  301. package/fjs/text/code_point/module.f.mjs +32 -9
  302. package/fjs/text/code_point/proof.f.d.mts +2 -0
  303. package/fjs/text/code_point/proof.f.mjs +39 -0
  304. package/fjs/text/module.f.d.mts +4 -2
  305. package/fjs/text/module.f.mjs +4 -3
  306. package/fjs/text/proof.f.d.mts +3 -0
  307. package/fjs/text/proof.f.mjs +4 -1
  308. package/fjs/text/sgr/module.f.d.mts +6 -5
  309. package/fjs/text/sgr/module.f.mjs +8 -8
  310. package/fjs/text/sgr/proof.f.d.mts +3 -0
  311. package/fjs/text/sgr/proof.f.mjs +4 -1
  312. package/fjs/text/utf16/module.f.d.mts +5 -1
  313. package/fjs/text/utf16/module.f.mjs +38 -35
  314. package/fjs/text/utf16/proof.f.d.mts +3 -1
  315. package/fjs/text/utf16/proof.f.mjs +19 -2
  316. package/fjs/text/utf8/module.f.d.mts +9 -5
  317. package/fjs/text/utf8/module.f.mjs +20 -20
  318. package/fjs/types/array/module.f.d.mts +2 -1
  319. package/fjs/types/array/module.f.mjs +16 -4
  320. package/fjs/types/bigfloat/module.f.d.mts +21 -1
  321. package/fjs/types/bigfloat/module.f.mjs +33 -7
  322. package/fjs/types/bigfloat/proof.f.d.mts +1 -0
  323. package/fjs/types/bigfloat/proof.f.mjs +46 -0
  324. package/fjs/types/bigint/module.f.d.mts +4 -0
  325. package/fjs/types/bigint/module.f.mjs +4 -3
  326. package/fjs/types/bit_vec/module.f.d.mts +10 -16
  327. package/fjs/types/bit_vec/module.f.mjs +99 -95
  328. package/fjs/types/bit_vec/proof.f.d.mts +6 -0
  329. package/fjs/types/bit_vec/proof.f.mjs +31 -5
  330. package/fjs/types/btree/find/module.f.d.mts +5 -1
  331. package/fjs/types/btree/find/module.f.mjs +5 -5
  332. package/fjs/types/btree/find/proof.f.d.mts +5 -1
  333. package/fjs/types/btree/find/proof.f.mjs +5 -3
  334. package/fjs/types/btree/module.f.d.mts +3 -0
  335. package/fjs/types/btree/module.f.mjs +3 -2
  336. package/fjs/types/btree/proof.f.d.mts +5 -1
  337. package/fjs/types/btree/proof.f.mjs +5 -3
  338. package/fjs/types/btree/remove/module.f.d.mts +11 -0
  339. package/fjs/types/btree/remove/module.f.mjs +10 -10
  340. package/fjs/types/btree/remove/proof.f.d.mts +3 -0
  341. package/fjs/types/btree/remove/proof.f.mjs +4 -1
  342. package/fjs/types/btree/set/module.f.d.mts +9 -0
  343. package/fjs/types/btree/set/module.f.mjs +14 -17
  344. package/fjs/types/btree/set/proof.f.d.mts +3 -0
  345. package/fjs/types/btree/set/proof.f.mjs +16 -1
  346. package/fjs/types/btree/types/module.f.d.mts +2 -1
  347. package/fjs/types/btree/types/module.f.mjs +2 -1
  348. package/fjs/types/byte_set/module.f.d.mts +20 -4
  349. package/fjs/types/byte_set/module.f.mjs +18 -8
  350. package/fjs/types/byte_set/proof.f.d.mts +3 -1
  351. package/fjs/types/byte_set/proof.f.mjs +10 -8
  352. package/fjs/types/function/compare/module.f.d.mts +3 -2
  353. package/fjs/types/function/compare/module.f.mjs +13 -5
  354. package/fjs/types/function/module.f.d.mts +8 -1
  355. package/fjs/types/function/module.f.mjs +8 -1
  356. package/fjs/types/function/operator/module.f.d.mts +2 -1
  357. package/fjs/types/function/operator/module.f.mjs +2 -2
  358. package/fjs/types/list/module.f.d.mts +10 -3
  359. package/fjs/types/list/module.f.mjs +6 -4
  360. package/fjs/types/list/proof.f.d.mts +4 -1
  361. package/fjs/types/list/proof.f.mjs +4 -2
  362. package/fjs/types/nibble_set/module.f.d.mts +2 -1
  363. package/fjs/types/nibble_set/module.f.mjs +2 -2
  364. package/fjs/types/nominal/module.f.d.mts +2 -1
  365. package/fjs/types/nominal/module.f.mjs +2 -1
  366. package/fjs/types/nullable/module.f.d.mts +26 -6
  367. package/fjs/types/nullable/module.f.mjs +25 -6
  368. package/fjs/types/nullable/proof.f.d.mts +4 -0
  369. package/fjs/types/nullable/proof.f.mjs +15 -0
  370. package/fjs/types/number/module.f.d.mts +4 -0
  371. package/fjs/types/number/module.f.mjs +4 -3
  372. package/fjs/types/object/module.f.d.mts +26 -4
  373. package/fjs/types/object/module.f.mjs +26 -7
  374. package/fjs/types/object/proof.f.d.mts +5 -2
  375. package/fjs/types/object/proof.f.mjs +6 -3
  376. package/fjs/types/object/structurally_same/module.f.d.mts +39 -0
  377. package/fjs/types/object/structurally_same/module.f.mjs +59 -0
  378. package/fjs/types/object/structurally_same/proof.f.d.mts +6 -0
  379. package/fjs/types/object/structurally_same/proof.f.mjs +73 -0
  380. package/fjs/types/ordered_map/module.f.d.mts +5 -0
  381. package/fjs/types/ordered_map/module.f.mjs +5 -4
  382. package/fjs/types/ordered_map/proof.f.d.mts +3 -0
  383. package/fjs/types/ordered_map/proof.f.mjs +4 -1
  384. package/fjs/types/patricia_trie/module.f.d.mts +2 -1
  385. package/fjs/types/patricia_trie/module.f.mjs +27 -12
  386. package/fjs/types/patricia_trie/proof.f.d.mts +3 -0
  387. package/fjs/types/patricia_trie/proof.f.mjs +4 -1
  388. package/fjs/types/prime_field/module.f.d.mts +3 -1
  389. package/fjs/types/prime_field/module.f.mjs +3 -2
  390. package/fjs/types/range/module.f.d.mts +2 -1
  391. package/fjs/types/range/module.f.mjs +2 -2
  392. package/fjs/types/range_map/module.f.d.mts +6 -0
  393. package/fjs/types/range_map/module.f.mjs +6 -9
  394. package/fjs/types/range_map/proof.f.d.mts +5 -1
  395. package/fjs/types/range_map/proof.f.mjs +5 -3
  396. package/fjs/types/range_set/module.f.d.mts +5 -0
  397. package/fjs/types/range_set/module.f.mjs +1 -0
  398. package/fjs/types/range_set/proof.f.d.mts +3 -0
  399. package/fjs/types/range_set/proof.f.mjs +4 -1
  400. package/fjs/types/result/module.d.mts +8 -0
  401. package/fjs/types/result/module.f.d.mts +37 -7
  402. package/fjs/types/result/module.f.mjs +38 -8
  403. package/fjs/types/result/module.mjs +9 -1
  404. package/fjs/types/result/proof.f.d.mts +5 -0
  405. package/fjs/types/result/proof.f.mjs +22 -2
  406. package/fjs/types/rtti/common/module.f.d.mts +44 -14
  407. package/fjs/types/rtti/common/module.f.mjs +42 -36
  408. package/fjs/types/rtti/common/proof.f.d.mts +4 -0
  409. package/fjs/types/rtti/common/proof.f.mjs +10 -7
  410. package/fjs/types/rtti/data/module.f.d.mts +134 -0
  411. package/fjs/types/rtti/data/module.f.mjs +1053 -0
  412. package/fjs/types/rtti/data/proof.f.d.mts +76 -0
  413. package/fjs/types/rtti/data/proof.f.mjs +589 -0
  414. package/fjs/types/rtti/data/types.d.ts +83 -0
  415. package/fjs/types/rtti/module.f.d.mts +12 -5
  416. package/fjs/types/rtti/module.f.mjs +7 -5
  417. package/fjs/types/rtti/parse/module.f.d.mts +48 -0
  418. package/fjs/types/rtti/parse/module.f.mjs +45 -34
  419. package/fjs/types/rtti/parse/proof.f.d.mts +3 -2
  420. package/fjs/types/rtti/parse/proof.f.mjs +51 -52
  421. package/fjs/types/rtti/proof.f.d.mts +3 -1
  422. package/fjs/types/rtti/proof.f.mjs +6 -2
  423. package/fjs/types/rtti/ts/module.f.d.mts +68 -9
  424. package/fjs/types/rtti/ts/module.f.mjs +258 -30
  425. package/fjs/types/rtti/ts/proof.f.d.mts +44 -0
  426. package/fjs/types/rtti/ts/proof.f.mjs +152 -4
  427. package/fjs/types/rtti/ts/types.d.ts +25 -1
  428. package/fjs/types/rtti/types.d.ts +40 -0
  429. package/fjs/types/sorted_list/module.f.d.mts +4 -1
  430. package/fjs/types/sorted_list/module.f.mjs +21 -12
  431. package/fjs/types/sorted_list/proof.f.d.mts +3 -1
  432. package/fjs/types/sorted_list/proof.f.mjs +3 -1
  433. package/fjs/types/sorted_set/module.f.d.mts +49 -1
  434. package/fjs/types/sorted_set/module.f.mjs +26 -2
  435. package/fjs/types/sorted_set/proof.f.d.mts +4 -1
  436. package/fjs/types/sorted_set/proof.f.mjs +19 -2
  437. package/fjs/types/string/module.f.d.mts +4 -0
  438. package/fjs/types/string/module.f.mjs +4 -3
  439. package/fjs/types/string_set/module.f.d.mts +3 -1
  440. package/fjs/types/string_set/module.f.mjs +3 -2
  441. package/fjs/types/ts/module.f.d.mts +2 -0
  442. package/fjs/types/ts/module.f.mjs +3 -3
  443. package/fjs/types/ts/proof.f.d.mts +1 -0
  444. package/fjs/types/ts/proof.f.mjs +5 -0
  445. package/fjs/types/ts/types.d.ts +6 -1
  446. package/fjs/types/uint8array/module.f.d.mts +13 -2
  447. package/fjs/types/uint8array/module.f.mjs +20 -15
  448. package/fjs/website/module.f.d.mts +5 -2
  449. package/fjs/website/module.f.mjs +6 -8
  450. package/fjs/website/proof.f.mjs +2 -1
  451. package/package.json +3 -3
  452. package/fjs/asn.1/types.js +0 -6
  453. package/fjs/asserts/types.js +0 -6
  454. package/fjs/basen/types.js +0 -6
  455. package/fjs/bnf/data/types.js +0 -6
  456. package/fjs/bnf/descent/types.js +0 -6
  457. package/fjs/bnf/ll1/types.js +0 -6
  458. package/fjs/bnf/token_symbol/types.js +0 -6
  459. package/fjs/bnf/types.js +0 -6
  460. package/fjs/cas/evo/types.js +0 -7
  461. package/fjs/cas/types.js +0 -6
  462. package/fjs/ci/common/types.js +0 -1
  463. package/fjs/ci/nix/types.js +0 -6
  464. package/fjs/ci/types.js +0 -6
  465. package/fjs/cli/types.js +0 -6
  466. package/fjs/common/monoid/types.js +0 -6
  467. package/fjs/crypto/pow/types.js +0 -6
  468. package/fjs/crypto/secp/types.js +0 -6
  469. package/fjs/crypto/sha2/types.js +0 -6
  470. package/fjs/crypto/sign/types.js +0 -6
  471. package/fjs/crypto/vdf/types.js +0 -6
  472. package/fjs/dev/package_json/module.f.d.mts +0 -32
  473. package/fjs/dev/package_json/module.f.mjs +0 -37
  474. package/fjs/dev/package_json/proof.f.d.mts +0 -6
  475. package/fjs/dev/package_json/proof.f.mjs +0 -32
  476. package/fjs/dev/types.js +0 -6
  477. package/fjs/djs/ast/types.js +0 -8
  478. package/fjs/djs/parser/types.js +0 -7
  479. package/fjs/djs/tokenizer/types.js +0 -7
  480. package/fjs/djs/types.js +0 -7
  481. package/fjs/effects/eff/module.f.d.mts +0 -10
  482. package/fjs/effects/eff/module.f.mjs +0 -68
  483. package/fjs/effects/eff/proof.f.d.mts +0 -12
  484. package/fjs/effects/eff/proof.f.mjs +0 -66
  485. package/fjs/effects/eff/types.d.ts +0 -71
  486. package/fjs/effects/eff/types.js +0 -6
  487. package/fjs/effects/list/types.js +0 -6
  488. package/fjs/effects/memory/types.js +0 -6
  489. package/fjs/effects/mock/types.js +0 -6
  490. package/fjs/effects/node/types.js +0 -6
  491. package/fjs/effects/node/virtual/types.js +0 -7
  492. package/fjs/effects/types.js +0 -6
  493. package/fjs/emergent_testing/all.test.d.ts +0 -1
  494. package/fjs/emergent_testing/all.test.js +0 -5
  495. package/fjs/emergent_testing/scenarios/all.d.ts +0 -1
  496. package/fjs/emergent_testing/scenarios/all.js +0 -1
  497. package/fjs/emergent_testing/scenarios/async-subtests.fail.d.ts +0 -6
  498. package/fjs/emergent_testing/scenarios/async-subtests.fail.js +0 -9
  499. package/fjs/emergent_testing/scenarios/async-subtests.pass.d.ts +0 -6
  500. package/fjs/emergent_testing/scenarios/async-subtests.pass.js +0 -9
  501. package/fjs/emergent_testing/scenarios/async.fail.d.ts +0 -3
  502. package/fjs/emergent_testing/scenarios/async.fail.js +0 -6
  503. package/fjs/emergent_testing/scenarios/async.pass.d.ts +0 -3
  504. package/fjs/emergent_testing/scenarios/async.pass.js +0 -5
  505. package/fjs/emergent_testing/scenarios/fail.fail.d.ts +0 -3
  506. package/fjs/emergent_testing/scenarios/fail.fail.js +0 -3
  507. package/fjs/emergent_testing/scenarios/return-value.pass.js +0 -4
  508. package/fjs/emergent_testing/scenarios/thenable.pass.d.ts +0 -5
  509. package/fjs/emergent_testing/scenarios/thenable.pass.js +0 -11
  510. package/fjs/emergent_testing/scenarios/thenable2.pass.d.ts +0 -5
  511. package/fjs/emergent_testing/scenarios/thenable2.pass.js +0 -3
  512. package/fjs/emergent_testing/scenarios/throw.pass.d.ts +0 -5
  513. package/fjs/emergent_testing/scenarios/throw.pass.js +0 -3
  514. package/fjs/emergent_testing/types.js +0 -6
  515. package/fjs/js/tokenizer/types.js +0 -6
  516. package/fjs/media/html/types.js +0 -6
  517. package/fjs/media/json/parser/types.js +0 -6
  518. package/fjs/media/json/tokenizer/types.js +0 -6
  519. package/fjs/media/json/types.js +0 -13
  520. package/fjs/media/nix/types.js +0 -6
  521. package/fjs/media/revision/types.js +0 -8
  522. package/fjs/media/type/types.js +0 -6
  523. package/fjs/media/types.js +0 -7
  524. package/fjs/nanvm/types.js +0 -11
  525. package/fjs/protocol/json_rpc/types.js +0 -8
  526. package/fjs/protocol/mcp/types.js +0 -8
  527. package/fjs/sul/id/types.js +0 -6
  528. package/fjs/sul/level/hash/types.js +0 -6
  529. package/fjs/sul/level/literal/types.js +0 -6
  530. package/fjs/sul/types.js +0 -6
  531. package/fjs/text/sgr/types.js +0 -6
  532. package/fjs/text/types.js +0 -6
  533. package/fjs/text/utf16/types.js +0 -6
  534. package/fjs/text/utf8/types.js +0 -6
  535. package/fjs/types/array/types.js +0 -6
  536. package/fjs/types/bigfloat/types.js +0 -6
  537. package/fjs/types/bigint/types.js +0 -6
  538. package/fjs/types/bit_vec/types.js +0 -6
  539. package/fjs/types/btree/find/types.js +0 -6
  540. package/fjs/types/btree/types/types.js +0 -6
  541. package/fjs/types/byte_set/types.js +0 -6
  542. package/fjs/types/function/compare/types.js +0 -6
  543. package/fjs/types/function/operator/types.js +0 -6
  544. package/fjs/types/function/types.js +0 -6
  545. package/fjs/types/list/types.js +0 -6
  546. package/fjs/types/nibble_set/types.js +0 -6
  547. package/fjs/types/nominal/types.js +0 -6
  548. package/fjs/types/nullable/types.js +0 -6
  549. package/fjs/types/object/types.js +0 -8
  550. package/fjs/types/option/types.js +0 -6
  551. package/fjs/types/ordered_map/types.js +0 -6
  552. package/fjs/types/patricia_trie/types.js +0 -6
  553. package/fjs/types/phantom/types.js +0 -11
  554. package/fjs/types/prime_field/types.js +0 -6
  555. package/fjs/types/range/types.js +0 -6
  556. package/fjs/types/range_map/types.js +0 -6
  557. package/fjs/types/result/types.js +0 -6
  558. package/fjs/types/rtti/common/types.js +0 -1
  559. package/fjs/types/rtti/parse/types.js +0 -1
  560. package/fjs/types/rtti/ts/types.js +0 -1
  561. package/fjs/types/rtti/types.js +0 -1
  562. package/fjs/types/rtti/validate/module.f.d.mts +0 -6
  563. package/fjs/types/rtti/validate/module.f.mjs +0 -169
  564. package/fjs/types/rtti/validate/proof.f.d.mts +0 -125
  565. package/fjs/types/rtti/validate/proof.f.mjs +0 -437
  566. package/fjs/types/rtti/validate/types.d.ts +0 -6
  567. package/fjs/types/rtti/validate/types.js +0 -1
  568. package/fjs/types/sorted_list/types.js +0 -6
  569. package/fjs/types/sorted_set/types.js +0 -6
  570. package/fjs/types/string_set/types.js +0 -6
  571. package/fjs/types/ts/types.js +0 -8
@@ -1,6 +0,0 @@
1
- /**
2
- * Types for the shared bit-codec factory.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1,6 +0,0 @@
1
- /**
2
- * Types for the serializable BNF intermediate representation (IR).
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1,6 +0,0 @@
1
- /**
2
- * Types for the recursive descent matcher backend.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1,6 +0,0 @@
1
- /**
2
- * Types for the LL(1) dispatch/matcher backend.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1,6 +0,0 @@
1
- /**
2
- * Types for encoding multi-character token names as single BNF input symbols.
3
- *
4
- * @module
5
- */
6
- export {};
package/fjs/bnf/types.js DELETED
@@ -1,6 +0,0 @@
1
- /**
2
- * Type-level API for BNF grammar primitives and helpers.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1,7 +0,0 @@
1
- /**
2
- * Type-level API for `fjs/cas/evo/module.f.mjs`: the Evo cache shape and the
3
- * `Evo<O>` API surface it builds.
4
- *
5
- * @module
6
- */
7
- export {};
package/fjs/cas/types.js DELETED
@@ -1,6 +0,0 @@
1
- /**
2
- * Types for content-addressable storage utilities.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,6 +0,0 @@
1
- /**
2
- * Types for generated CI Nix flakes.
3
- *
4
- * @module
5
- */
6
- export {};
package/fjs/ci/types.js DELETED
@@ -1,6 +0,0 @@
1
- /**
2
- * Types for the CI workflow generator.
3
- *
4
- * @module
5
- */
6
- export {};
package/fjs/cli/types.js DELETED
@@ -1,6 +0,0 @@
1
- /**
2
- * Types for the CLI command dispatch table.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1,6 +0,0 @@
1
- /**
2
- * The `Monoid<T>` algebraic structure.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1,6 +0,0 @@
1
- /**
2
- * Types for Bitcoin-style proof-of-work verification.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1,6 +0,0 @@
1
- /**
2
- * Types for short Weierstrass elliptic-curve arithmetic over a prime field.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1,6 +0,0 @@
1
- /**
2
- * Types for the SHA-2 family of hash functions.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1,6 +0,0 @@
1
- /**
2
- * Type-level API for signing helpers built on secp256k1 and SHA-256 primitives.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1,6 +0,0 @@
1
- /**
2
- * Types for the Sloth verifiable delay function.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1,32 +0,0 @@
1
- /**
2
- * Helpers for reading package.json-style metadata without losing unrelated
3
- * fields before write-back.
4
- *
5
- * @module
6
- *
7
- * @import { ValidationError } from '../../types/rtti/common/types.ts'
8
- * @import { Ts } from '../../types/rtti/ts/types.ts'
9
- * @import { Result } from '../../types/result/types.ts'
10
- */
11
- import type { ValidationError } from '../../types/rtti/common/types.ts';
12
- import type { Ts } from '../../types/rtti/ts/types.ts';
13
- import type { Result } from '../../types/result/types.ts';
14
- export declare const packageJsonSchema: {
15
- readonly name: import("../../types/rtti/types.ts").Or<readonly [import("../../types/rtti/types.ts")._Type0<"string">, undefined]>;
16
- readonly version: import("../../types/rtti/types.ts").Or<readonly [import("../../types/rtti/types.ts")._Type0<"string">, undefined]>;
17
- readonly scripts: import("../../types/rtti/types.ts").Or<readonly [import("../../types/rtti/types.ts").Type1<"record", import("../../types/rtti/types.ts")._Type0<"string">>, undefined]>;
18
- };
19
- export type PackageJson = Ts<typeof packageJsonSchema>;
20
- export type JsonTextError = string | ValidationError;
21
- /** @typedef {Ts<typeof packageJsonSchema>} PackageJson */
22
- /** @typedef {string | ValidationError} JsonTextError */
23
- export declare const validatePackageJson: import("../../types/rtti/common/types.ts").Validate<{
24
- readonly name: import("../../types/rtti/types.ts").Or<readonly [import("../../types/rtti/types.ts")._Type0<"string">, undefined]>;
25
- readonly version: import("../../types/rtti/types.ts").Or<readonly [import("../../types/rtti/types.ts")._Type0<"string">, undefined]>;
26
- readonly scripts: import("../../types/rtti/types.ts").Or<readonly [import("../../types/rtti/types.ts").Type1<"record", import("../../types/rtti/types.ts")._Type0<"string">>, undefined]>;
27
- }>;
28
- /**
29
- * @param {string} text
30
- * @returns {Result<PackageJson, JsonTextError>}
31
- */
32
- export declare const validatePackageJsonText: (text: string) => Result<PackageJson, JsonTextError>;
@@ -1,37 +0,0 @@
1
- /**
2
- * Helpers for reading package.json-style metadata without losing unrelated
3
- * fields before write-back.
4
- *
5
- * @module
6
- *
7
- * @import { ValidationError } from '../../types/rtti/common/types.ts'
8
- * @import { Ts } from '../../types/rtti/ts/types.ts'
9
- * @import { Result } from '../../types/result/types.ts'
10
- */
11
-
12
- import { parse as parseJsonText } from '../../media/json/module.f.mjs'
13
- import { option, record, string } from '../../types/rtti/module.f.mjs'
14
- import { validate as rttiValidate } from '../../types/rtti/validate/module.f.mjs'
15
- import { error, ok } from '../../types/result/module.f.mjs'
16
-
17
- export const packageJsonSchema = /** @type {const} */ ({
18
- name: option(string),
19
- version: option(string),
20
- scripts: option(record(string)),
21
- })
22
-
23
- /** @typedef {Ts<typeof packageJsonSchema>} PackageJson */
24
- /** @typedef {string | ValidationError} JsonTextError */
25
-
26
- export const validatePackageJson = rttiValidate(packageJsonSchema)
27
-
28
- /**
29
- * @param {string} text
30
- * @returns {Result<PackageJson, JsonTextError>}
31
- */
32
- export const validatePackageJsonText = text => {
33
- const [t, v] = parseJsonText(text)
34
- if (t === 'error') { return error(v) }
35
- const [t2, v2] = validatePackageJson(v)
36
- return t2 === 'ok' ? ok(v2) : error(v2)
37
- }
@@ -1,6 +0,0 @@
1
- export declare const proof: {
2
- parseMetadata: () => void;
3
- malformedJson: () => void;
4
- validationError: () => void;
5
- validatePreservesOriginalObject: () => void;
6
- };
@@ -1,32 +0,0 @@
1
- import { assert, assertEq } from '../../asserts/module.f.mjs'
2
- import { unwrap } from '../../types/result/module.f.mjs'
3
- import {
4
- validatePackageJson,
5
- validatePackageJsonText,
6
- } from './module.f.mjs'
7
-
8
- export const proof = {
9
- parseMetadata: () => {
10
- const result = unwrap(validatePackageJsonText('{"name":"x","version":"1.0.0","scripts":{"test":"node test.js"}}'))
11
- assertEq(result.name, 'x', result)
12
- assertEq(result.version, '1.0.0', result)
13
- assertEq(result.scripts?.test, 'node test.js', result)
14
- },
15
- malformedJson: () => {
16
- const result = validatePackageJsonText('{')
17
- assert(result[0] === 'error', result)
18
- },
19
- validationError: () => {
20
- // valid JSON but `name` is a number, not a string — validation should fail
21
- const result = validatePackageJsonText('{"name": 42}')
22
- assert(result[0] === 'error', result)
23
- },
24
- validatePreservesOriginalObject: () => {
25
- const object = /** @type {const} */ ({ name: 'x', version: '1.0.0', private: true })
26
- const metadata = unwrap(validatePackageJson(object))
27
- assertEq(metadata.name, 'x', metadata)
28
- assertEq(metadata.version, '1.0.0', metadata)
29
- assert(Object.is(metadata, object), metadata)
30
- assertEq(object.private, true, object)
31
- },
32
- }
package/fjs/dev/types.js DELETED
@@ -1,6 +0,0 @@
1
- /**
2
- * Types for indexing modules and loading FunctionalScript files.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1,8 +0,0 @@
1
- /**
2
- * Type-level API for `fjs/djs/ast/module.f.mjs`: the AST shape `run`
3
- * evaluates — `AstModule`, `AstConst`, `AstModuleRef`, `AstArray`,
4
- * `AstObject`, and `AstBody`.
5
- *
6
- * @module
7
- */
8
- export {};
@@ -1,7 +0,0 @@
1
- /**
2
- * Type-level API for `fjs/djs/parser/module.f.mjs`: the `ParseError` shape
3
- * `parseFromTokens` reports.
4
- *
5
- * @module
6
- */
7
- export {};
@@ -1,7 +0,0 @@
1
- /**
2
- * Type-level API for `fjs/djs/tokenizer/module.f.mjs`: the DJS token shapes
3
- * `tokenize`/`tokenizeJs`/`tokenizeString` produce.
4
- *
5
- * @module
6
- */
7
- export {};
package/fjs/djs/types.js DELETED
@@ -1,7 +0,0 @@
1
- /**
2
- * DJS's own value model: `Primitive`, `Unknown`, `Object`, and `Array`,
3
- * layered on top of JSON's `Primitive` with `bigint` and `undefined` added.
4
- *
5
- * @module
6
- */
7
- export {};
@@ -1,10 +0,0 @@
1
- import type { Effect, Operation } from '../types.ts';
2
- import type { Eff } from './types.ts';
3
- /**
4
- * Wraps a raw {@link Effect}; the bridge into the `Eff` world, with an empty
5
- * history. The empty tuple is spelled out because {@link Eff} deliberately has
6
- * no default for `P` — see its docs.
7
- *
8
- * @type {<O extends Operation, T>(value: Effect<O, T>) => Eff<O, T, readonly[]>}
9
- */
10
- export declare const eff: <O extends Operation, T>(value: Effect<O, T>) => Eff<O, T, readonly []>;
@@ -1,68 +0,0 @@
1
- /**
2
- * A fluent, method-chaining wrapper over the raw `Effect`.
3
- *
4
- * See `./types.ts` for the `Eff` type-level API.
5
- *
6
- * @module
7
- */
8
- import { history, historyStep, mapStep, pure } from '../module.f.mjs'
9
- /** @import { Effect, Operation } from '../types.ts' */
10
- /** @import { Eff } from './types.ts' */
11
-
12
- /**
13
- * Builds an `Eff` from two views of the same chain: `value`, the effect for the
14
- * current value alone, and `h`, a thunk for the `[current, ...history]` tuple.
15
- *
16
- * **The two must denote the same computation** — `value` has to be what `h()`
17
- * produces with the history dropped. Nothing enforces it. The
18
- * redundancy is deliberate: `value` used to be derived from `h` on demand,
19
- * which made disagreement impossible but also forced the entry case to rebuild
20
- * an effect it was already holding. Passing it in is what lets {@link eff} hand
21
- * the original back.
22
- *
23
- * The asymmetry between the two — one built, one deferred — is the point.
24
- * `value` is either already in hand ({@link eff} was given it) or already built
25
- * (`.step` has just composed the chain it projects from), so storing it costs
26
- * no more than the projection itself. `h` is different: nothing needs the
27
- * history tuple until a later `.step` asks for it, and composing effects is
28
- * eager, so holding a thunk is the only way to not compose it yet. That keeps
29
- * `eff(e)` free of work entirely.
30
- *
31
- * `.step` calls `h()` once and closes over the effect, so everything built
32
- * from that link shares it. `eff`'s thunk is not memoized, so calling `.step`
33
- * twice on the same `eff(e)` rebuilds and re-forces `e` — harmless under
34
- * `Pure`'s contract, which requires the thunk to be pure and to tolerate
35
- * repeat calls.
36
- *
37
- * @template {Operation} O
38
- * @template T
39
- * @template {readonly unknown[]} P
40
- * @param {Effect<O, T>} value
41
- * @param {() => Effect<O, readonly[T, ...P]>} h
42
- * @returns {Eff<O, T, P>}
43
- */
44
- const create = (value, h) => {
45
- // `self` is named so `.map` can be *defined* as the `.step` call it is
46
- // documented to equal, rather than as a second copy of `.step`'s body that
47
- // has to be re-checked against it.
48
- /** @type {Eff<O, T, P>} */
49
- const self = {
50
- value,
51
- step: f => {
52
- const x1 = historyStep(h(), f)
53
- return create(mapStep(x1, ([t]) => t), () => x1)
54
- },
55
- map: f => self.step((...tp) => pure(f(...tp)))
56
- }
57
- return self
58
- }
59
-
60
- /**
61
- * Wraps a raw {@link Effect}; the bridge into the `Eff` world, with an empty
62
- * history. The empty tuple is spelled out because {@link Eff} deliberately has
63
- * no default for `P` — see its docs.
64
- *
65
- * @type {<O extends Operation, T>(value: Effect<O, T>) => Eff<O, T, readonly[]>}
66
- */
67
- export const eff = value =>
68
- create(value, () => history(value))
@@ -1,12 +0,0 @@
1
- export type _AddOp = readonly ['add', (a: number, b: number) => number];
2
- export declare const proof: {
3
- value: () => void;
4
- pure: () => void;
5
- chain: () => void;
6
- overDo: () => void;
7
- map: {
8
- chain: () => void;
9
- growsHistory: () => void;
10
- overDo: () => void;
11
- };
12
- };
@@ -1,66 +0,0 @@
1
- import { do_, match, pure } from '../module.f.mjs'
2
- import { assert, assertEq } from '../../asserts/module.f.mjs'
3
- import { assertPure } from '../proof.f.mjs'
4
- import { eff } from './module.f.mjs'
5
- /** @import { Effect, OperationMap } from '../types.ts' */
6
-
7
- /** @typedef {readonly['add', (a: number, b: number) => number]} _AddOp */
8
-
9
- /** @type {(command: 'add') => (a: number, b: number) => Effect<_AddOp, number>} */
10
- const doAdd = do_
11
-
12
- const next = match(/** @type {OperationMap<_AddOp, number>} */ ({ add: (a, b) => a + b }))
13
-
14
- export const proof = {
15
- value: () => {
16
- assertPure(eff(pure(5)).value, 5)
17
- },
18
- pure: () => {
19
- assertPure(pure(5), 5)
20
- },
21
- chain: () => {
22
- const x = eff(pure(5))
23
- .step(v => pure(v + 1))
24
- .step(v => pure(v * 2))
25
- .value
26
- assertPure(x, 12)
27
- },
28
- overDo: () => {
29
- const e = eff(doAdd('add')(2, 3))
30
- .step(r => pure(r + 1))
31
- .value
32
- const r = next(e)
33
- assert(r[0] === 'cont', r)
34
- assertEq(r[1], 5)
35
- assertPure(r[2](r[1]), 6)
36
- },
37
- map: {
38
- chain: () => {
39
- const x = eff(pure(5))
40
- .map(v => v + 1)
41
- .map(v => v * 2)
42
- .value
43
- assertPure(x, 12)
44
- },
45
- // `.map` grows the history exactly as `.step` does, so a callback after
46
- // it still reaches the pre-`map` value. This is the contract that makes
47
- // rewriting `.step(v => pure(f(v)))` into `.map(f)` a pure readability
48
- // change rather than one that alters what later callbacks receive.
49
- growsHistory: () => {
50
- const x = eff(pure(5))
51
- .map(v => v + 1)
52
- .step((v, prev) => pure(`${prev}${v}`))
53
- .value
54
- assertPure(x, '56')
55
- },
56
- overDo: () => {
57
- const e = eff(doAdd('add')(2, 3))
58
- .map(r => r + 1)
59
- .value
60
- const r = next(e)
61
- assert(r[0] === 'cont', r)
62
- assertEq(r[1], 5)
63
- assertPure(r[2](r[1]), 6)
64
- },
65
- },
66
- }
@@ -1,71 +0,0 @@
1
- /**
2
- * Types for the `Eff` fluent, method-chaining monad.
3
- *
4
- * @module
5
- */
6
- import type { Effect, Operation } from '../types.ts';
7
- /**
8
- * A fluent, method-chaining monad over a raw `Effect` that also
9
- * accumulates the history of every value the chain has produced. `.step(f)`
10
- * is bind — `f` receives the current value followed by every prior value,
11
- * most recent first (`f(t, ...p)`), and returns a raw `Effect`; `.step`
12
- * re-wraps the result together with that history so `.step(f).step(g)`
13
- * chains and stays in the `Eff` world throughout. `.map(f)` is the functor
14
- * map — the same thing for an `f` that returns a plain value rather than an
15
- * effect, so it is exactly `.step((...tp) => pure(f(...tp)))`. `P` is the
16
- * tuple of prior values available to the *next* `.step` call; it grows by one
17
- * element (the current `T`) on every step, starting empty at `eff`.
18
- * `.value` is the exit back to a raw `Effect`, discarding the history. An
19
- * `Eff` is not assignable to `Effect`; unwrap through `.value`.
20
- *
21
- * **`.map` grows the history just as `.step` does, and does not widen `O`.**
22
- * Both follow from it being that `.step` call and nothing else: a chain
23
- * rewritten from `.step(v => pure(f(v)))` to `.map(f)` must hand later
24
- * callbacks the same prior values it did before, and a projection performs no
25
- * command, so it contributes no operation for a runner to interpret.
26
- *
27
- * **The history is positional, so every parameter a callback declares is
28
- * meaningful.** `f` is applied as `f(...tp)`, so a callback written
29
- * `(v, n = 1) => …` or `(v, ...rest) => …` receives prior chain values in `n` /
30
- * `rest` rather than the default or an empty rest — and where the types line up,
31
- * TypeScript will not object. Declare exactly as many parameters as the callback
32
- * intends to read; a defaulted or rest parameter after the current value is a
33
- * bug, not a convenience. This is what makes `.map(g)` a *different* call from
34
- * `.step(v => pure(g(v)))` whenever `g` is not genuinely unary — the lambda
35
- * pins the arity at one, while passing `g` point-free exposes it to the prior
36
- * values, the way `['1', '2', '3'].map(parseInt)` does.
37
- *
38
- * **`.value` is always an already-built `Effect`.** Reading it composes
39
- * nothing: the projection that drops the history tuple to its current value is
40
- * performed by the `.step` that produced the link, not deferred to the read.
41
- * An `Eff` is a record to look into, not an object with a method that quietly
42
- * does work when called.
43
- *
44
- * That costs one projection per link, paid whether or not the link is ever
45
- * unwrapped — an n-link chain builds n of them where a deferred `.result()`
46
- * method would build one. It is a constant factor on construction, with no
47
- * extra forcing of the wrapped effect and no change in growth rate, bought in
48
- * exchange for a uniform rule at the boundary every caller touches.
49
- *
50
- * At the entry it costs nothing at all: `eff(e).value` **is** `e`, because
51
- * `eff` stores what it was handed rather than rebuilding it from the
52
- * history, so wrapping and unwrapping round-trip to identity. `h` is still a
53
- * thunk, so `eff(e)` composes nothing and never forces `e`: an `Eff` that is
54
- * built and only read does no work at all.
55
- *
56
- * **`P` has no default, on purpose.** A default of `readonly[]` would make
57
- * `Eff<O, T>` a spelling that silently erases history: an
58
- * `Eff<O, T, readonly[A]>` is assignable to it, because `f` sits in a
59
- * contravariant position and TypeScript accepts a callback declaring fewer
60
- * parameters than the type it is checked against. The next `.step` callback
61
- * would then be typed as receiving no prior values while the runtime still
62
- * passes them, and any callback destructuring a rest parameter would be handed
63
- * entries its type says cannot exist. Requiring the third argument means that
64
- * erasure cannot be written at all, rather than merely being discouraged;
65
- * `eff` spells `readonly[]` itself.
66
- */
67
- export type Eff<O extends Operation, T, P extends readonly unknown[]> = {
68
- readonly value: Effect<O, T>;
69
- readonly step: <Q extends Operation, R>(f: (...tp: readonly [T, ...P]) => Effect<Q, R>) => Eff<O | Q, R, readonly [T, ...P]>;
70
- readonly map: <R>(f: (...tp: readonly [T, ...P]) => R) => Eff<O, R, readonly [T, ...P]>;
71
- };
@@ -1,6 +0,0 @@
1
- /**
2
- * Types for the `Eff` fluent, method-chaining monad.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1,6 +0,0 @@
1
- /**
2
- * Types for the effectful cons-list.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1,6 +0,0 @@
1
- /**
2
- * Types for typed key-value memory effects.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1,6 +0,0 @@
1
- /**
2
- * Types for mock effect runtimes.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1,6 +0,0 @@
1
- /**
2
- * Types for Node.js effect operations.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1,7 +0,0 @@
1
- /**
2
- * Types for the virtual Node-effect operations used by filesystem and
3
- * process tests.
4
- *
5
- * @module
6
- */
7
- export {};
@@ -1,6 +0,0 @@
1
- /**
2
- * Types for the core effect system.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,5 +0,0 @@
1
- import { runEffect } from '../effects/node/module.mjs';
2
- import { register } from './module.f.mjs';
3
- // Top-level `await`: every proof must be registered before the runner starts
4
- // collecting tests.
5
- await runEffect(register);
@@ -1 +0,0 @@
1
- import '../all.test.ts';
@@ -1 +0,0 @@
1
- import '../all.test.js';
@@ -1,6 +0,0 @@
1
- export declare const proof: {
2
- withSubtests: () => Promise<{
3
- sub1: () => void;
4
- sub2: () => never;
5
- }>;
6
- };
@@ -1,9 +0,0 @@
1
- export const proof = {
2
- withSubtests: async () => {
3
- await new Promise(resolve => setTimeout(resolve, 10));
4
- return {
5
- sub1: () => { },
6
- sub2: () => { throw 'sub-test failure'; },
7
- };
8
- }
9
- };
@@ -1,6 +0,0 @@
1
- export declare const proof: {
2
- withSubtests: () => Promise<{
3
- sub1: () => void;
4
- sub2: () => void;
5
- }>;
6
- };
@@ -1,9 +0,0 @@
1
- export const proof = {
2
- withSubtests: async () => {
3
- await new Promise(resolve => setTimeout(resolve, 10));
4
- return {
5
- sub1: () => { },
6
- sub2: () => { },
7
- };
8
- }
9
- };
@@ -1,3 +0,0 @@
1
- export declare const proof: {
2
- sleep_fail: () => Promise<never>;
3
- };
@@ -1,6 +0,0 @@
1
- export const proof = {
2
- sleep_fail: async () => {
3
- await new Promise(resolve => setTimeout(resolve, 10));
4
- throw 'async failure';
5
- }
6
- };