functionalscript 0.37.0 → 0.39.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 (517) hide show
  1. package/README.md +1 -1
  2. package/{fs → fjs}/asn.1/proof.f.js +32 -94
  3. package/fjs/asserts/module.f.d.ts +36 -0
  4. package/fjs/asserts/module.f.js +39 -0
  5. package/fjs/asserts/proof.f.d.ts +11 -0
  6. package/fjs/asserts/proof.f.js +18 -0
  7. package/{fs → fjs}/base_n/proof.f.js +12 -36
  8. package/{fs → fjs}/basen/base64/proof.f.d.ts +1 -0
  9. package/{fs → fjs}/basen/base64/proof.f.js +15 -1
  10. package/{fs → fjs}/basen/cbase32/proof.f.js +15 -42
  11. package/fjs/bnf/data/module.f.d.ts +52 -0
  12. package/{fs → fjs}/bnf/data/module.f.js +53 -3
  13. package/{fs → fjs}/bnf/data/proof.f.d.ts +1 -0
  14. package/{fs → fjs}/bnf/data/proof.f.js +54 -19
  15. package/{fs → fjs}/bnf/descent/module.f.d.ts +4 -14
  16. package/fjs/bnf/descent/module.f.js +124 -0
  17. package/{fs → fjs}/bnf/descent/proof.f.d.ts +1 -0
  18. package/{fs → fjs}/bnf/descent/proof.f.js +55 -24
  19. package/{fs → fjs}/bnf/ll1/module.f.d.ts +4 -4
  20. package/{fs → fjs}/bnf/ll1/module.f.js +7 -5
  21. package/{fs → fjs}/bnf/ll1/proof.f.d.ts +1 -0
  22. package/{fs → fjs}/bnf/ll1/proof.f.js +27 -10
  23. package/{fs → fjs}/bnf/module.f.d.ts +19 -5
  24. package/{fs → fjs}/bnf/module.f.js +10 -11
  25. package/fjs/bnf/proof.f.js +69 -0
  26. package/{fs → fjs}/bnf/testlib.f.js +2 -2
  27. package/fjs/bnf/token_symbol/module.f.d.ts +38 -0
  28. package/fjs/bnf/token_symbol/module.f.js +48 -0
  29. package/fjs/bnf/token_symbol/proof.f.d.ts +10 -0
  30. package/fjs/bnf/token_symbol/proof.f.js +37 -0
  31. package/{fs → fjs}/cas/cli/module.f.js +6 -9
  32. package/{fs → fjs}/cas/cli/proof.f.d.ts +4 -1
  33. package/{fs → fjs}/cas/cli/proof.f.js +29 -66
  34. package/fjs/cas/evo/mcp/module.f.d.ts +27 -0
  35. package/fjs/cas/evo/mcp/module.f.js +94 -0
  36. package/fjs/cas/evo/mcp/proof.f.d.ts +11 -0
  37. package/fjs/cas/evo/mcp/proof.f.js +126 -0
  38. package/fjs/cas/evo/module.f.d.ts +202 -0
  39. package/fjs/cas/evo/module.f.js +421 -0
  40. package/fjs/cas/evo/proof.f.d.ts +39 -0
  41. package/fjs/cas/evo/proof.f.js +572 -0
  42. package/fjs/cas/mcp/module.f.d.ts +49 -0
  43. package/{fs → fjs}/cas/mcp/module.f.js +61 -81
  44. package/{fs → fjs}/cas/mcp/proof.f.d.ts +4 -1
  45. package/{fs → fjs}/cas/mcp/proof.f.js +45 -17
  46. package/{fs → fjs}/cas/module.f.d.ts +10 -0
  47. package/{fs → fjs}/cas/module.f.js +89 -36
  48. package/fjs/cas/proof.f.d.ts +18 -0
  49. package/fjs/cas/proof.f.js +305 -0
  50. package/{fs → fjs}/ci/bun/module.f.js +3 -3
  51. package/{fs → fjs}/ci/common/module.f.d.ts +1 -2
  52. package/{fs → fjs}/ci/common/module.f.js +1 -5
  53. package/{fs → fjs}/ci/config/module.f.d.ts +8 -8
  54. package/{fs → fjs}/ci/config/module.f.js +8 -8
  55. package/{fs → fjs}/ci/deno/module.f.js +3 -3
  56. package/{fs → fjs}/ci/module.f.js +3 -4
  57. package/{fs → fjs}/ci/node/module.f.js +11 -9
  58. package/{fs → fjs}/ci/proof.f.js +16 -9
  59. package/{fs → fjs}/ci/rust/module.f.js +9 -1
  60. package/{fs → fjs}/cli/module.f.js +2 -2
  61. package/{fs → fjs}/cli/proof.f.js +22 -63
  62. package/{fs → fjs}/common/monoid/module.f.d.ts +46 -2
  63. package/fjs/common/monoid/module.f.js +88 -0
  64. package/fjs/common/monoid/proof.f.d.ts +9 -0
  65. package/fjs/common/monoid/proof.f.js +48 -0
  66. package/{fs → fjs}/crypto/hmac/proof.f.js +4 -12
  67. package/fjs/crypto/pow/proof.f.js +111 -0
  68. package/{fs → fjs}/crypto/secp/proof.f.js +12 -33
  69. package/{fs → fjs}/crypto/sha2/proof.f.js +18 -49
  70. package/{fs → fjs}/crypto/sign/module.f.d.ts +0 -5
  71. package/{fs → fjs}/crypto/sign/module.f.js +7 -4
  72. package/{fs → fjs}/crypto/sign/proof.f.js +36 -105
  73. package/{fs → fjs}/crypto/vdf/proof.f.js +22 -63
  74. package/{fs → fjs}/dev/module.f.js +25 -25
  75. package/{fs → fjs}/dev/package_json/proof.f.js +7 -7
  76. package/{fs → fjs}/dev/proof.f.js +2 -4
  77. package/{fs → fjs}/djs/ast/proof.f.js +4 -12
  78. package/{fs → fjs}/djs/module.f.js +5 -8
  79. package/{fs → fjs}/djs/parser/module.f.d.ts +8 -0
  80. package/{fs → fjs}/djs/parser/module.f.js +37 -0
  81. package/{fs → fjs}/djs/parser/proof.f.js +138 -400
  82. package/{fs → fjs}/djs/proof.f.js +13 -36
  83. package/{fs → fjs}/djs/serializer/proof.f.js +14 -39
  84. package/fjs/djs/tokenizer/module.f.d.ts +24 -0
  85. package/fjs/djs/tokenizer/module.f.js +472 -0
  86. package/{fs/djs/tokenizer-new → fjs/djs/tokenizer}/proof.f.d.ts +4 -3
  87. package/{fs/djs/tokenizer-new → fjs/djs/tokenizer}/proof.f.js +446 -445
  88. package/{fs → fjs}/djs/transpiler/module.f.js +6 -6
  89. package/{fs → fjs}/djs/transpiler/proof.f.d.ts +3 -0
  90. package/{fs → fjs}/djs/transpiler/proof.f.js +29 -30
  91. package/fjs/effects/eff/module.f.d.ts +72 -0
  92. package/fjs/effects/eff/module.f.js +46 -0
  93. package/fjs/effects/eff/proof.f.d.ts +11 -0
  94. package/fjs/effects/eff/proof.f.js +58 -0
  95. package/{fs → fjs}/effects/list/module.f.d.ts +11 -5
  96. package/{fs → fjs}/effects/list/module.f.js +2 -1
  97. package/{fs → fjs}/effects/memory/proof.f.js +15 -29
  98. package/fjs/effects/module.f.d.ts +388 -0
  99. package/fjs/effects/module.f.js +288 -0
  100. package/{fs → fjs}/effects/node/memory/proof.js +7 -13
  101. package/{fs → fjs}/effects/node/module.d.ts +1 -1
  102. package/{fs → fjs}/effects/node/module.f.d.ts +2 -2
  103. package/{fs → fjs}/effects/node/module.f.js +9 -11
  104. package/{fs → fjs}/effects/node/module.js +3 -3
  105. package/{fs → fjs}/effects/node/proof.f.d.ts +1 -0
  106. package/{fs → fjs}/effects/node/proof.f.js +121 -299
  107. package/{fs → fjs}/effects/node/virtual/proof.f.d.ts +1 -0
  108. package/{fs → fjs}/effects/node/virtual/proof.f.js +36 -29
  109. package/fjs/effects/proof.f.d.ts +51 -0
  110. package/fjs/effects/proof.f.js +178 -0
  111. package/{fs → fjs}/emergent_testing/module.f.js +55 -39
  112. package/{fs → fjs}/emergent_testing/proof.f.d.ts +4 -0
  113. package/{fs → fjs}/emergent_testing/proof.f.js +60 -27
  114. package/{fs → fjs}/fsc/proof.f.js +12 -34
  115. package/{fs → fjs}/fsm/proof.f.js +5 -12
  116. package/{fs → fjs}/mcp/module.f.d.ts +7 -0
  117. package/{fs → fjs}/mcp/module.f.js +17 -10
  118. package/{fs → fjs}/mcp/proof.f.js +17 -16
  119. package/{fs → fjs}/mcp/stdio/module.f.d.ts +4 -4
  120. package/{fs → fjs}/mcp/stdio/module.f.js +14 -14
  121. package/{fs → fjs}/media/html/proof.f.js +12 -33
  122. package/{fs → fjs}/media/json/parser/module.f.d.ts +5 -0
  123. package/{fs → fjs}/media/json/parser/module.f.js +14 -0
  124. package/{fs → fjs}/media/json/parser/proof.f.js +39 -114
  125. package/{fs → fjs}/media/json/rpc/module.f.js +1 -1
  126. package/{fs → fjs}/media/json/schema/module.f.d.ts +2 -2
  127. package/{fs → fjs}/media/json/schema/module.f.js +23 -39
  128. package/{fs → fjs}/media/json/schema/proof.f.js +3 -6
  129. package/{fs → fjs}/media/json/serializer/proof.f.js +10 -27
  130. package/{fs → fjs}/media/module.f.d.ts +6 -6
  131. package/{fs → fjs}/media/module.f.js +3 -4
  132. package/{fs → fjs}/media/proof.f.js +5 -4
  133. package/{fs → fjs}/media/revision/module.f.d.ts +31 -4
  134. package/{fs → fjs}/media/revision/module.f.js +35 -23
  135. package/{fs → fjs}/media/revision/proof.f.d.ts +10 -8
  136. package/fjs/media/revision/proof.f.js +140 -0
  137. package/{fs → fjs}/media/type/module.f.js +2 -2
  138. package/{fs → fjs}/media/type/proof.f.js +8 -15
  139. package/{fs → fjs}/module.f.js +5 -9
  140. package/{fs → fjs}/path/proof.f.js +27 -78
  141. package/{fs → fjs}/proof.f.js +2 -0
  142. package/{fs → fjs}/sul/id/proof.f.js +7 -21
  143. package/{fs → fjs}/sul/level/hash/proof.f.js +5 -5
  144. package/{fs → fjs}/sul/level/literal/proof.f.js +12 -26
  145. package/fjs/text/ascii/proof.f.d.ts +6 -0
  146. package/{fs → fjs}/text/ascii/proof.f.js +4 -14
  147. package/{fs → fjs}/text/code_point/module.f.js +10 -10
  148. package/{fs → fjs}/text/proof.f.js +4 -9
  149. package/{fs → fjs}/text/sgr/proof.f.js +6 -15
  150. package/{fs → fjs}/text/utf16/module.f.js +1 -1
  151. package/{fs → fjs}/text/utf16/proof.f.js +23 -66
  152. package/{fs → fjs}/text/utf8/proof.f.js +56 -125
  153. package/{fs → fjs}/types/array/proof.f.js +18 -52
  154. package/fjs/types/bigfloat/proof.f.js +217 -0
  155. package/{fs → fjs}/types/bigint/module.f.js +4 -3
  156. package/{fs → fjs}/types/bigint/proof.f.js +49 -145
  157. package/{fs → fjs}/types/bit_vec/module.f.js +5 -15
  158. package/{fs → fjs}/types/bit_vec/proof.f.js +72 -214
  159. package/{fs → fjs}/types/btree/find/proof.f.js +23 -66
  160. package/{fs → fjs}/types/btree/proof.f.js +5 -12
  161. package/{fs → fjs}/types/btree/remove/module.f.d.ts +5 -0
  162. package/{fs → fjs}/types/btree/remove/module.f.js +12 -0
  163. package/{fs → fjs}/types/btree/remove/proof.f.d.ts +2 -0
  164. package/{fs → fjs}/types/btree/remove/proof.f.js +83 -230
  165. package/{fs → fjs}/types/btree/set/module.f.js +5 -2
  166. package/{fs → fjs}/types/btree/set/proof.f.js +35 -24
  167. package/{fs → fjs}/types/byte_set/proof.f.js +22 -63
  168. package/{fs → fjs}/types/function/compare/proof.f.js +13 -36
  169. package/{fs → fjs}/types/function/operator/proof.f.js +17 -48
  170. package/{fs → fjs}/types/function/proof.f.js +2 -3
  171. package/{fs → fjs}/types/list/module.f.d.ts +21 -0
  172. package/{fs → fjs}/types/list/module.f.js +17 -0
  173. package/{fs → fjs}/types/list/proof.f.d.ts +1 -0
  174. package/{fs → fjs}/types/list/proof.f.js +79 -164
  175. package/{fs → fjs}/types/map/proof.f.js +4 -12
  176. package/{fs → fjs}/types/nibble_set/proof.f.js +16 -45
  177. package/{fs → fjs}/types/nominal/proof.f.js +5 -10
  178. package/fjs/types/nullable/proof.f.js +29 -0
  179. package/{fs → fjs}/types/number/module.f.js +2 -1
  180. package/{fs → fjs}/types/number/proof.f.js +9 -24
  181. package/{fs → fjs}/types/object/proof.f.js +3 -6
  182. package/{fs → fjs}/types/patricia_trie/proof.f.js +21 -21
  183. package/{fs → fjs}/types/prime_field/module.f.js +2 -7
  184. package/{fs → fjs}/types/range/module.f.d.ts +1 -1
  185. package/fjs/types/range/module.f.js +2 -0
  186. package/fjs/types/range/proof.f.js +9 -0
  187. package/{fs → fjs}/types/range_map/proof.f.js +28 -81
  188. package/{fs → fjs}/types/result/proof.f.d.ts +3 -2
  189. package/fjs/types/result/proof.f.js +31 -0
  190. package/{fs → fjs}/types/rtti/common/module.f.d.ts +36 -1
  191. package/{fs → fjs}/types/rtti/common/module.f.js +44 -0
  192. package/fjs/types/rtti/common/proof.f.d.ts +8 -0
  193. package/fjs/types/rtti/common/proof.f.js +51 -0
  194. package/{fs → fjs}/types/rtti/parse/module.f.js +13 -22
  195. package/{fs → fjs}/types/rtti/parse/proof.f.js +7 -18
  196. package/{fs → fjs}/types/rtti/ts/module.f.d.ts +10 -4
  197. package/{fs → fjs}/types/rtti/validate/module.f.js +8 -29
  198. package/{fs → fjs}/types/rtti/validate/proof.f.js +4 -9
  199. package/{fs → fjs}/types/sorted_list/proof.f.js +8 -21
  200. package/{fs → fjs}/types/sorted_set/proof.f.js +14 -39
  201. package/{fs → fjs}/types/string/module.f.js +10 -2
  202. package/fjs/types/string/proof.f.js +77 -0
  203. package/fjs/types/string_set/proof.f.js +43 -0
  204. package/{fs → fjs}/types/ts/proof.f.js +15 -42
  205. package/{fs → fjs}/types/uint8array/module.f.js +7 -7
  206. package/{fs → fjs}/types/uint8array/proof.f.d.ts +4 -1
  207. package/{fs → fjs}/types/uint8array/proof.f.js +7 -7
  208. package/{fs → fjs}/website/module.f.js +2 -3
  209. package/{fs → fjs}/website/proof.f.js +3 -6
  210. package/package.json +8 -8
  211. package/fs/asserts/module.f.d.ts +0 -4
  212. package/fs/asserts/module.f.js +0 -9
  213. package/fs/asserts/proof.f.d.ts +0 -8
  214. package/fs/asserts/proof.f.js +0 -51
  215. package/fs/bnf/data/module.f.d.ts +0 -30
  216. package/fs/bnf/descent/module.f.js +0 -119
  217. package/fs/bnf/proof.f.js +0 -104
  218. package/fs/cas/mcp/module.f.d.ts +0 -36
  219. package/fs/cas/proof.f.d.ts +0 -20
  220. package/fs/cas/proof.f.js +0 -294
  221. package/fs/common/monoid/module.f.js +0 -44
  222. package/fs/common/monoid/proof.f.d.ts +0 -4
  223. package/fs/common/monoid/proof.f.js +0 -27
  224. package/fs/crypto/pow/proof.f.js +0 -161
  225. package/fs/djs/tokenizer/module.f.d.ts +0 -12
  226. package/fs/djs/tokenizer/module.f.js +0 -62
  227. package/fs/djs/tokenizer/proof.f.d.ts +0 -7
  228. package/fs/djs/tokenizer/proof.f.js +0 -543
  229. package/fs/djs/tokenizer-new/module.f.d.ts +0 -3
  230. package/fs/djs/tokenizer-new/module.f.js +0 -155
  231. package/fs/effects/module.f.d.ts +0 -106
  232. package/fs/effects/module.f.js +0 -80
  233. package/fs/effects/proof.f.d.ts +0 -25
  234. package/fs/effects/proof.f.js +0 -115
  235. package/fs/media/revision/proof.f.js +0 -119
  236. package/fs/text/ascii/proof.f.d.ts +0 -4
  237. package/fs/types/bigfloat/proof.f.js +0 -348
  238. package/fs/types/nullable/proof.f.js +0 -50
  239. package/fs/types/range/module.f.js +0 -2
  240. package/fs/types/range/proof.f.js +0 -18
  241. package/fs/types/result/proof.f.js +0 -52
  242. package/fs/types/string/proof.f.js +0 -118
  243. package/fs/types/string_set/proof.f.js +0 -82
  244. /package/{fs → fjs}/asn.1/module.f.d.ts +0 -0
  245. /package/{fs → fjs}/asn.1/module.f.js +0 -0
  246. /package/{fs → fjs}/asn.1/proof.f.d.ts +0 -0
  247. /package/{fs → fjs}/base_n/module.f.d.ts +0 -0
  248. /package/{fs → fjs}/base_n/module.f.js +0 -0
  249. /package/{fs → fjs}/base_n/proof.f.d.ts +0 -0
  250. /package/{fs → fjs}/basen/base128/module.f.d.ts +0 -0
  251. /package/{fs → fjs}/basen/base128/module.f.js +0 -0
  252. /package/{fs → fjs}/basen/base128/proof.f.d.ts +0 -0
  253. /package/{fs → fjs}/basen/base128/proof.f.js +0 -0
  254. /package/{fs → fjs}/basen/base64/module.f.d.ts +0 -0
  255. /package/{fs → fjs}/basen/base64/module.f.js +0 -0
  256. /package/{fs → fjs}/basen/cbase32/module.f.d.ts +0 -0
  257. /package/{fs → fjs}/basen/cbase32/module.f.js +0 -0
  258. /package/{fs → fjs}/basen/cbase32/proof.f.d.ts +0 -0
  259. /package/{fs → fjs}/bnf/proof.f.d.ts +0 -0
  260. /package/{fs → fjs}/bnf/testlib.f.d.ts +0 -0
  261. /package/{fs → fjs}/cas/cli/module.f.d.ts +0 -0
  262. /package/{fs → fjs}/ci/bun/module.f.d.ts +0 -0
  263. /package/{fs → fjs}/ci/deno/module.f.d.ts +0 -0
  264. /package/{fs → fjs}/ci/module.f.d.ts +0 -0
  265. /package/{fs → fjs}/ci/node/module.f.d.ts +0 -0
  266. /package/{fs → fjs}/ci/playwright/module.f.d.ts +0 -0
  267. /package/{fs → fjs}/ci/playwright/module.f.js +0 -0
  268. /package/{fs → fjs}/ci/proof.f.d.ts +0 -0
  269. /package/{fs → fjs}/ci/rust/module.f.d.ts +0 -0
  270. /package/{fs → fjs}/cli/module.f.d.ts +0 -0
  271. /package/{fs → fjs}/cli/proof.f.d.ts +0 -0
  272. /package/{fs → fjs}/crypto/hmac/module.f.d.ts +0 -0
  273. /package/{fs → fjs}/crypto/hmac/module.f.js +0 -0
  274. /package/{fs → fjs}/crypto/hmac/proof.f.d.ts +0 -0
  275. /package/{fs → fjs}/crypto/pow/module.f.d.ts +0 -0
  276. /package/{fs → fjs}/crypto/pow/module.f.js +0 -0
  277. /package/{fs → fjs}/crypto/pow/proof.f.d.ts +0 -0
  278. /package/{fs → fjs}/crypto/secp/module.f.d.ts +0 -0
  279. /package/{fs → fjs}/crypto/secp/module.f.js +0 -0
  280. /package/{fs → fjs}/crypto/secp/proof.f.d.ts +0 -0
  281. /package/{fs → fjs}/crypto/sha2/module.f.d.ts +0 -0
  282. /package/{fs → fjs}/crypto/sha2/module.f.js +0 -0
  283. /package/{fs → fjs}/crypto/sha2/proof.f.d.ts +0 -0
  284. /package/{fs → fjs}/crypto/sign/proof.f.d.ts +0 -0
  285. /package/{fs → fjs}/crypto/vdf/module.f.d.ts +0 -0
  286. /package/{fs → fjs}/crypto/vdf/module.f.js +0 -0
  287. /package/{fs → fjs}/crypto/vdf/proof.f.d.ts +0 -0
  288. /package/{fs → fjs}/dev/module.f.d.ts +0 -0
  289. /package/{fs → fjs}/dev/package_json/module.f.d.ts +0 -0
  290. /package/{fs → fjs}/dev/package_json/module.f.js +0 -0
  291. /package/{fs → fjs}/dev/package_json/proof.f.d.ts +0 -0
  292. /package/{fs → fjs}/dev/proof.f.d.ts +0 -0
  293. /package/{fs → fjs}/djs/ast/module.f.d.ts +0 -0
  294. /package/{fs → fjs}/djs/ast/module.f.js +0 -0
  295. /package/{fs → fjs}/djs/ast/proof.f.d.ts +0 -0
  296. /package/{fs → fjs}/djs/examples/input.f.d.ts +0 -0
  297. /package/{fs → fjs}/djs/examples/input.f.js +0 -0
  298. /package/{fs → fjs}/djs/examples/m.f.d.ts +0 -0
  299. /package/{fs → fjs}/djs/examples/m.f.js +0 -0
  300. /package/{fs → fjs}/djs/module.f.d.ts +0 -0
  301. /package/{fs → fjs}/djs/parser/proof.f.d.ts +0 -0
  302. /package/{fs → fjs}/djs/proof.f.d.ts +0 -0
  303. /package/{fs → fjs}/djs/serializer/module.f.d.ts +0 -0
  304. /package/{fs → fjs}/djs/serializer/module.f.js +0 -0
  305. /package/{fs → fjs}/djs/serializer/proof.f.d.ts +0 -0
  306. /package/{fs → fjs}/djs/transpiler/module.f.d.ts +0 -0
  307. /package/{fs → fjs}/effects/memory/module.f.d.ts +0 -0
  308. /package/{fs → fjs}/effects/memory/module.f.js +0 -0
  309. /package/{fs → fjs}/effects/memory/proof.f.d.ts +0 -0
  310. /package/{fs → fjs}/effects/mock/module.f.d.ts +0 -0
  311. /package/{fs → fjs}/effects/mock/module.f.js +0 -0
  312. /package/{fs → fjs}/effects/module.d.ts +0 -0
  313. /package/{fs → fjs}/effects/module.js +0 -0
  314. /package/{fs → fjs}/effects/node/memory/module.d.ts +0 -0
  315. /package/{fs → fjs}/effects/node/memory/module.js +0 -0
  316. /package/{fs → fjs}/effects/node/memory/proof.d.ts +0 -0
  317. /package/{fs → fjs}/effects/node/virtual/module.f.d.ts +0 -0
  318. /package/{fs → fjs}/effects/node/virtual/module.f.js +0 -0
  319. /package/{fs → fjs}/emergent_testing/all.test.d.ts +0 -0
  320. /package/{fs → fjs}/emergent_testing/all.test.js +0 -0
  321. /package/{fs → fjs}/emergent_testing/example.f.d.ts +0 -0
  322. /package/{fs → fjs}/emergent_testing/example.f.js +0 -0
  323. /package/{fs → fjs}/emergent_testing/module.f.d.ts +0 -0
  324. /package/{fs → fjs}/emergent_testing/scenarios/all.d.ts +0 -0
  325. /package/{fs → fjs}/emergent_testing/scenarios/all.js +0 -0
  326. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.fail.d.ts +0 -0
  327. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.fail.js +0 -0
  328. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.pass.d.ts +0 -0
  329. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.pass.js +0 -0
  330. /package/{fs → fjs}/emergent_testing/scenarios/async.fail.d.ts +0 -0
  331. /package/{fs → fjs}/emergent_testing/scenarios/async.fail.js +0 -0
  332. /package/{fs → fjs}/emergent_testing/scenarios/async.pass.d.ts +0 -0
  333. /package/{fs → fjs}/emergent_testing/scenarios/async.pass.js +0 -0
  334. /package/{fs → fjs}/emergent_testing/scenarios/fail.fail.d.ts +0 -0
  335. /package/{fs → fjs}/emergent_testing/scenarios/fail.fail.js +0 -0
  336. /package/{fs → fjs}/emergent_testing/scenarios/return-value.pass.d.ts +0 -0
  337. /package/{fs → fjs}/emergent_testing/scenarios/return-value.pass.js +0 -0
  338. /package/{fs → fjs}/emergent_testing/scenarios/thenable.pass.d.ts +0 -0
  339. /package/{fs → fjs}/emergent_testing/scenarios/thenable.pass.js +0 -0
  340. /package/{fs → fjs}/emergent_testing/scenarios/thenable2.pass.d.ts +0 -0
  341. /package/{fs → fjs}/emergent_testing/scenarios/thenable2.pass.js +0 -0
  342. /package/{fs → fjs}/emergent_testing/scenarios/throw.pass.d.ts +0 -0
  343. /package/{fs → fjs}/emergent_testing/scenarios/throw.pass.js +0 -0
  344. /package/{fs → fjs}/fsc/bnf.f.d.ts +0 -0
  345. /package/{fs → fjs}/fsc/bnf.f.js +0 -0
  346. /package/{fs → fjs}/fsc/json.f.d.ts +0 -0
  347. /package/{fs → fjs}/fsc/json.f.js +0 -0
  348. /package/{fs → fjs}/fsc/module.f.d.ts +0 -0
  349. /package/{fs → fjs}/fsc/module.f.js +0 -0
  350. /package/{fs → fjs}/fsc/proof.f.d.ts +0 -0
  351. /package/{fs → fjs}/fsm/module.f.d.ts +0 -0
  352. /package/{fs → fjs}/fsm/module.f.js +0 -0
  353. /package/{fs → fjs}/fsm/proof.f.d.ts +0 -0
  354. /package/{fs → fjs}/js/tokenizer/module.f.d.ts +0 -0
  355. /package/{fs → fjs}/js/tokenizer/module.f.js +0 -0
  356. /package/{fs → fjs}/js/tokenizer/proof.f.d.ts +0 -0
  357. /package/{fs → fjs}/js/tokenizer/proof.f.js +0 -0
  358. /package/{fs → fjs}/mcp/proof.f.d.ts +0 -0
  359. /package/{fs → fjs}/mcp/stdio/proof.f.d.ts +0 -0
  360. /package/{fs → fjs}/mcp/stdio/proof.f.js +0 -0
  361. /package/{fs → fjs}/media/html/module.f.d.ts +0 -0
  362. /package/{fs → fjs}/media/html/module.f.js +0 -0
  363. /package/{fs → fjs}/media/html/proof.f.d.ts +0 -0
  364. /package/{fs → fjs}/media/json/module.f.d.ts +0 -0
  365. /package/{fs → fjs}/media/json/module.f.js +0 -0
  366. /package/{fs → fjs}/media/json/parser/proof.f.d.ts +0 -0
  367. /package/{fs → fjs}/media/json/proof.f.d.ts +0 -0
  368. /package/{fs → fjs}/media/json/proof.f.js +0 -0
  369. /package/{fs → fjs}/media/json/rpc/module.f.d.ts +0 -0
  370. /package/{fs → fjs}/media/json/rpc/proof.f.d.ts +0 -0
  371. /package/{fs → fjs}/media/json/rpc/proof.f.js +0 -0
  372. /package/{fs → fjs}/media/json/schema/proof.f.d.ts +0 -0
  373. /package/{fs → fjs}/media/json/serializer/module.f.d.ts +0 -0
  374. /package/{fs → fjs}/media/json/serializer/module.f.js +0 -0
  375. /package/{fs → fjs}/media/json/serializer/proof.f.d.ts +0 -0
  376. /package/{fs → fjs}/media/json/tokenizer/module.f.d.ts +0 -0
  377. /package/{fs → fjs}/media/json/tokenizer/module.f.js +0 -0
  378. /package/{fs → fjs}/media/json/tokenizer/proof.f.d.ts +0 -0
  379. /package/{fs → fjs}/media/json/tokenizer/proof.f.js +0 -0
  380. /package/{fs → fjs}/media/proof.f.d.ts +0 -0
  381. /package/{fs → fjs}/media/type/module.f.d.ts +0 -0
  382. /package/{fs → fjs}/media/type/proof.f.d.ts +0 -0
  383. /package/{fs → fjs}/module.d.ts +0 -0
  384. /package/{fs → fjs}/module.f.d.ts +0 -0
  385. /package/{fs → fjs}/module.js +0 -0
  386. /package/{fs → fjs}/path/module.f.d.ts +0 -0
  387. /package/{fs → fjs}/path/module.f.js +0 -0
  388. /package/{fs → fjs}/path/proof.f.d.ts +0 -0
  389. /package/{fs → fjs}/proof.f.d.ts +0 -0
  390. /package/{fs → fjs}/sul/id/module.f.d.ts +0 -0
  391. /package/{fs → fjs}/sul/id/module.f.js +0 -0
  392. /package/{fs → fjs}/sul/id/proof.f.d.ts +0 -0
  393. /package/{fs → fjs}/sul/level/hash/module.f.d.ts +0 -0
  394. /package/{fs → fjs}/sul/level/hash/module.f.js +0 -0
  395. /package/{fs → fjs}/sul/level/hash/proof.f.d.ts +0 -0
  396. /package/{fs → fjs}/sul/level/literal/module.f.d.ts +0 -0
  397. /package/{fs → fjs}/sul/level/literal/module.f.js +0 -0
  398. /package/{fs → fjs}/sul/level/literal/proof.f.d.ts +0 -0
  399. /package/{fs → fjs}/sul/module.f.d.ts +0 -0
  400. /package/{fs → fjs}/sul/module.f.js +0 -0
  401. /package/{fs → fjs}/sul/proof.f.d.ts +0 -0
  402. /package/{fs → fjs}/sul/proof.f.js +0 -0
  403. /package/{fs → fjs}/text/ascii/module.f.d.ts +0 -0
  404. /package/{fs → fjs}/text/ascii/module.f.js +0 -0
  405. /package/{fs → fjs}/text/code_point/module.f.d.ts +0 -0
  406. /package/{fs → fjs}/text/code_point/proof.f.d.ts +0 -0
  407. /package/{fs → fjs}/text/code_point/proof.f.js +0 -0
  408. /package/{fs → fjs}/text/module.f.d.ts +0 -0
  409. /package/{fs → fjs}/text/module.f.js +0 -0
  410. /package/{fs → fjs}/text/proof.f.d.ts +0 -0
  411. /package/{fs → fjs}/text/sgr/module.f.d.ts +0 -0
  412. /package/{fs → fjs}/text/sgr/module.f.js +0 -0
  413. /package/{fs → fjs}/text/sgr/proof.f.d.ts +0 -0
  414. /package/{fs → fjs}/text/utf16/module.f.d.ts +0 -0
  415. /package/{fs → fjs}/text/utf16/proof.f.d.ts +0 -0
  416. /package/{fs → fjs}/text/utf8/module.f.d.ts +0 -0
  417. /package/{fs → fjs}/text/utf8/module.f.js +0 -0
  418. /package/{fs → fjs}/text/utf8/proof.f.d.ts +0 -0
  419. /package/{fs → fjs}/types/array/module.f.d.ts +0 -0
  420. /package/{fs → fjs}/types/array/module.f.js +0 -0
  421. /package/{fs → fjs}/types/array/proof.f.d.ts +0 -0
  422. /package/{fs → fjs}/types/bigfloat/module.f.d.ts +0 -0
  423. /package/{fs → fjs}/types/bigfloat/module.f.js +0 -0
  424. /package/{fs → fjs}/types/bigfloat/proof.f.d.ts +0 -0
  425. /package/{fs → fjs}/types/bigint/module.f.d.ts +0 -0
  426. /package/{fs → fjs}/types/bigint/proof.f.d.ts +0 -0
  427. /package/{fs → fjs}/types/bit_vec/module.f.d.ts +0 -0
  428. /package/{fs → fjs}/types/bit_vec/proof.f.d.ts +0 -0
  429. /package/{fs → fjs}/types/btree/find/module.f.d.ts +0 -0
  430. /package/{fs → fjs}/types/btree/find/module.f.js +0 -0
  431. /package/{fs → fjs}/types/btree/find/proof.f.d.ts +0 -0
  432. /package/{fs → fjs}/types/btree/module.f.d.ts +0 -0
  433. /package/{fs → fjs}/types/btree/module.f.js +0 -0
  434. /package/{fs → fjs}/types/btree/proof.f.d.ts +0 -0
  435. /package/{fs → fjs}/types/btree/set/module.f.d.ts +0 -0
  436. /package/{fs → fjs}/types/btree/set/proof.f.d.ts +0 -0
  437. /package/{fs → fjs}/types/btree/types/module.f.d.ts +0 -0
  438. /package/{fs → fjs}/types/btree/types/module.f.js +0 -0
  439. /package/{fs → fjs}/types/byte_set/module.f.d.ts +0 -0
  440. /package/{fs → fjs}/types/byte_set/module.f.js +0 -0
  441. /package/{fs → fjs}/types/byte_set/proof.f.d.ts +0 -0
  442. /package/{fs → fjs}/types/function/compare/module.f.d.ts +0 -0
  443. /package/{fs → fjs}/types/function/compare/module.f.js +0 -0
  444. /package/{fs → fjs}/types/function/compare/proof.f.d.ts +0 -0
  445. /package/{fs → fjs}/types/function/module.f.d.ts +0 -0
  446. /package/{fs → fjs}/types/function/module.f.js +0 -0
  447. /package/{fs → fjs}/types/function/operator/module.f.d.ts +0 -0
  448. /package/{fs → fjs}/types/function/operator/module.f.js +0 -0
  449. /package/{fs → fjs}/types/function/operator/proof.f.d.ts +0 -0
  450. /package/{fs → fjs}/types/function/proof.f.d.ts +0 -0
  451. /package/{fs → fjs}/types/map/module.f.d.ts +0 -0
  452. /package/{fs → fjs}/types/map/module.f.js +0 -0
  453. /package/{fs → fjs}/types/map/proof.f.d.ts +0 -0
  454. /package/{fs → fjs}/types/nibble_set/module.f.d.ts +0 -0
  455. /package/{fs → fjs}/types/nibble_set/module.f.js +0 -0
  456. /package/{fs → fjs}/types/nibble_set/proof.f.d.ts +0 -0
  457. /package/{fs → fjs}/types/nominal/module.f.d.ts +0 -0
  458. /package/{fs → fjs}/types/nominal/module.f.js +0 -0
  459. /package/{fs → fjs}/types/nominal/proof.f.d.ts +0 -0
  460. /package/{fs → fjs}/types/nullable/module.f.d.ts +0 -0
  461. /package/{fs → fjs}/types/nullable/module.f.js +0 -0
  462. /package/{fs → fjs}/types/nullable/proof.f.d.ts +0 -0
  463. /package/{fs → fjs}/types/number/module.f.d.ts +0 -0
  464. /package/{fs → fjs}/types/number/proof.f.d.ts +0 -0
  465. /package/{fs → fjs}/types/object/module.f.d.ts +0 -0
  466. /package/{fs → fjs}/types/object/module.f.js +0 -0
  467. /package/{fs → fjs}/types/object/proof.f.d.ts +0 -0
  468. /package/{fs → fjs}/types/option/module.f.d.ts +0 -0
  469. /package/{fs → fjs}/types/option/module.f.js +0 -0
  470. /package/{fs → fjs}/types/ordered_map/module.f.d.ts +0 -0
  471. /package/{fs → fjs}/types/ordered_map/module.f.js +0 -0
  472. /package/{fs → fjs}/types/ordered_map/proof.f.d.ts +0 -0
  473. /package/{fs → fjs}/types/ordered_map/proof.f.js +0 -0
  474. /package/{fs → fjs}/types/patricia_trie/module.f.d.ts +0 -0
  475. /package/{fs → fjs}/types/patricia_trie/module.f.js +0 -0
  476. /package/{fs → fjs}/types/patricia_trie/proof.f.d.ts +0 -0
  477. /package/{fs → fjs}/types/phantom/module.f.d.ts +0 -0
  478. /package/{fs → fjs}/types/phantom/module.f.js +0 -0
  479. /package/{fs → fjs}/types/prime_field/module.f.d.ts +0 -0
  480. /package/{fs → fjs}/types/prime_field/proof.f.d.ts +0 -0
  481. /package/{fs → fjs}/types/prime_field/proof.f.js +0 -0
  482. /package/{fs → fjs}/types/range/proof.f.d.ts +0 -0
  483. /package/{fs → fjs}/types/range_map/module.f.d.ts +0 -0
  484. /package/{fs → fjs}/types/range_map/module.f.js +0 -0
  485. /package/{fs → fjs}/types/range_map/proof.f.d.ts +0 -0
  486. /package/{fs → fjs}/types/result/module.d.ts +0 -0
  487. /package/{fs → fjs}/types/result/module.f.d.ts +0 -0
  488. /package/{fs → fjs}/types/result/module.f.js +0 -0
  489. /package/{fs → fjs}/types/result/module.js +0 -0
  490. /package/{fs → fjs}/types/rtti/module.f.d.ts +0 -0
  491. /package/{fs → fjs}/types/rtti/module.f.js +0 -0
  492. /package/{fs → fjs}/types/rtti/parse/module.f.d.ts +0 -0
  493. /package/{fs → fjs}/types/rtti/parse/proof.f.d.ts +0 -0
  494. /package/{fs → fjs}/types/rtti/proof.f.d.ts +0 -0
  495. /package/{fs → fjs}/types/rtti/proof.f.js +0 -0
  496. /package/{fs → fjs}/types/rtti/ts/module.f.js +0 -0
  497. /package/{fs → fjs}/types/rtti/ts/proof.f.d.ts +0 -0
  498. /package/{fs → fjs}/types/rtti/ts/proof.f.js +0 -0
  499. /package/{fs → fjs}/types/rtti/validate/module.f.d.ts +0 -0
  500. /package/{fs → fjs}/types/rtti/validate/proof.f.d.ts +0 -0
  501. /package/{fs → fjs}/types/sorted_list/module.f.d.ts +0 -0
  502. /package/{fs → fjs}/types/sorted_list/module.f.js +0 -0
  503. /package/{fs → fjs}/types/sorted_list/proof.f.d.ts +0 -0
  504. /package/{fs → fjs}/types/sorted_set/module.f.d.ts +0 -0
  505. /package/{fs → fjs}/types/sorted_set/module.f.js +0 -0
  506. /package/{fs → fjs}/types/sorted_set/proof.f.d.ts +0 -0
  507. /package/{fs → fjs}/types/string/module.f.d.ts +0 -0
  508. /package/{fs → fjs}/types/string/proof.f.d.ts +0 -0
  509. /package/{fs → fjs}/types/string_set/module.f.d.ts +0 -0
  510. /package/{fs → fjs}/types/string_set/module.f.js +0 -0
  511. /package/{fs → fjs}/types/string_set/proof.f.d.ts +0 -0
  512. /package/{fs → fjs}/types/ts/module.f.d.ts +0 -0
  513. /package/{fs → fjs}/types/ts/module.f.js +0 -0
  514. /package/{fs → fjs}/types/ts/proof.f.d.ts +0 -0
  515. /package/{fs → fjs}/types/uint8array/module.f.d.ts +0 -0
  516. /package/{fs → fjs}/website/module.f.d.ts +0 -0
  517. /package/{fs → fjs}/website/proof.f.d.ts +0 -0
@@ -1,155 +0,0 @@
1
- /**
2
- * Experimental DJS parser implementation.
3
- *
4
- * @module
5
- */
6
- import { descentParser } from "../../bnf/descent/module.f.js";
7
- import { eof, join0Plus, max, none, not, notSet, oneEncode, option, range, remove, repeat, repeat0Plus, repeat1Plus, set, unicodeRange } from "../../bnf/module.f.js";
8
- import { todo } from "../../asserts/module.f.js";
9
- export const parse = (input) => {
10
- const m = descentParser(jsGrammar());
11
- return todo();
12
- };
13
- export const jsGrammar = () => {
14
- const onenine = range('19');
15
- const digit = range('09');
16
- const string = [
17
- '"',
18
- repeat0Plus({
19
- ...remove(range(` ${max}`), set('"\\')),
20
- escape: [
21
- '\\',
22
- {
23
- ...set('"\\bfnrt'),
24
- solidus: '/',
25
- u: [
26
- 'u',
27
- ...repeat(4)({
28
- digit,
29
- AF: range('AF'),
30
- af: range('af'),
31
- })
32
- ],
33
- }
34
- ],
35
- }),
36
- '"'
37
- ];
38
- const digits0 = repeat0Plus(digit);
39
- const digits = [digit, digits0];
40
- const number = [
41
- {
42
- 0: '0',
43
- onenine: [onenine, digits0],
44
- },
45
- option({
46
- bigint: 'n',
47
- frac: [
48
- option(['.', digits]),
49
- option([set('Ee'), option(set('+-')), digits])
50
- ]
51
- })
52
- ];
53
- const ws = set(' \t');
54
- const newLine = set('\n\r');
55
- const idStart = {
56
- smallLetter: range('az'),
57
- bigLetter: range('AZ'),
58
- lowLine: '_',
59
- dollarSign: '$'
60
- };
61
- const idChar = {
62
- ...idStart,
63
- digit
64
- };
65
- const id = [idStart, repeat0Plus(idChar)];
66
- const operator = {
67
- '.': '.',
68
- '=>': '=>',
69
- '===': '===',
70
- '==': '==',
71
- '=': '=',
72
- '!==': '!==',
73
- '!=': '!=',
74
- '!': '!',
75
- '>>>=': '>>>=',
76
- '>>>': '>>>',
77
- '>>=': '>>=',
78
- '>>': '>>',
79
- '>=': '>=',
80
- '>': '>',
81
- '<<<<=': '<<<=',
82
- '<<<': '<<<',
83
- '<<=': '<<=',
84
- '<<': '<<',
85
- '<=': '<=',
86
- '<': '<',
87
- '+=': '+=',
88
- '++': '++',
89
- '+': '+',
90
- '-=': '-=',
91
- '--': '--',
92
- '-': '-',
93
- '**=': '**=',
94
- '**': '**',
95
- '*=': '*=',
96
- '*': '*',
97
- '/=': '/=',
98
- '/': '/',
99
- '%=': '%=',
100
- '%': '%',
101
- '&&=': '&&=',
102
- '&&': '&&',
103
- '&=': '&=',
104
- '&': '&',
105
- '||=': '||=',
106
- '||': '||',
107
- '|=': '|=',
108
- '|': '|',
109
- '^=': '^=',
110
- '^': '^',
111
- '~': '~',
112
- '??=': '??=',
113
- '??': '??',
114
- '?.': '?.',
115
- '?': '?',
116
- '[': '[',
117
- ']': ']',
118
- '{': '{',
119
- '}': '}',
120
- '(': '(',
121
- ')': ')',
122
- ',': ',',
123
- ':': ':'
124
- };
125
- const commentEnd = {
126
- ...newLine,
127
- eof
128
- };
129
- const comment = ['/', {
130
- // TODO: investigate why `not(commentEnd)` instead of `remove(unicodeRange, newLine)` fail tests.
131
- // TODO: should it be `repeat0Plus(not(commentEnd))` instead of `option(remove(unicodeRange, newLine))`.
132
- oneline: ['/', option(remove(unicodeRange, newLine)), commentEnd],
133
- multiline: [
134
- '*',
135
- repeat0Plus({
136
- na: notSet('*'),
137
- a: ['*', notSet('/')]
138
- }),
139
- '*/'
140
- ]
141
- }
142
- ];
143
- const token = {
144
- number,
145
- string,
146
- id,
147
- comment,
148
- operator,
149
- ws,
150
- newLine,
151
- eof
152
- };
153
- const tokens = repeat0Plus(token);
154
- return tokens;
155
- };
@@ -1,106 +0,0 @@
1
- /**
2
- * Core effect type constructors and combinators.
3
- *
4
- * Effect helpers are **step adapters**: functions that return a continuation
5
- * `(t: T) => Effect<Q, R>` meant to be passed into `.step`, never wrappers
6
- * that take the effect itself as an argument. `Effect` has no pipeline
7
- * operator to lean on and must not be extended with new methods, so
8
- * `.step(adapterA).step(adapterB)` is how helpers compose — flat,
9
- * left-to-right, in evaluation order. See {@link okStep} for an example.
10
- *
11
- * @module
12
- */
13
- import { type List } from '../types/list/module.f.ts';
14
- import type { Result } from '../types/result/module.f.ts';
15
- export type Operation = readonly [string, (..._: readonly never[]) => unknown];
16
- export type Effect<O extends Operation, T> = {
17
- value: Value<O, T>;
18
- step: <Q extends Operation, R>(f: (p: T) => Effect<Q, R>) => Effect<O | Q, R>;
19
- };
20
- export type Value<O extends Operation, T> = Pure<T> | Do<O, T>;
21
- export type Pure<T> = () => T;
22
- export type DoKPR<O extends Operation, T, K extends string, PR extends readonly [unknown, unknown]> = readonly [K, PR[0], (_: PR[1]) => Effect<O, T>];
23
- export type Pr<O extends Operation, K extends O[0]> = O extends readonly [K, (...args: infer P) => infer R] ? readonly [P, R] : never;
24
- export type DoK<O extends Operation, T, K extends O[0]> = DoKPR<O, T, K, Pr<O, K>>;
25
- export type Do<O extends Operation, T> = DoK<O, T, O[0]>;
26
- export declare const pure: <T>(v: T) => Effect<never, T>;
27
- /**
28
- * A lazy pure effect. Like {@link pure}, but takes a thunk and evaluates it on
29
- * demand instead of holding an already-computed value. Use this to produce the
30
- * next item of a list without instantiating the rest — the thunk runs only when
31
- * the effect is decoded (or stepped into).
32
- */
33
- export declare const lazy: <T>(t: () => T) => Effect<never, T>;
34
- export declare const doFull: <O extends Operation, T, K extends O[0]>(cmd: K, param: Pr<O, K>[0], cont: (input: Pr<O, K>[1]) => Effect<O, T>) => Effect<O, T>;
35
- export type Param<O extends Operation> = F<O>[0];
36
- export type Return<O extends Operation> = F<O>[1];
37
- export declare const do_: <O extends Operation>(cmd: O[0]) => (...param: Param<O>) => Effect<O, Return<O>>;
38
- /**
39
- * Sequentially threads a state value through an effect for each item in `items`.
40
- *
41
- * Given `f: item => state => Effect<O, state>`, `init: S`, and `items: [x₀, x₁, …]`,
42
- * builds `f(x₀)(init).step(f(x₁)).step(f(x₂)).…` and yields a single
43
- * `Effect<O, S>` that produces the final state.
44
- *
45
- * Sequential — each step depends on the previous state. Compare to `all`,
46
- * which fans out independent effects.
47
- */
48
- export declare const foldStep: <O extends Operation, T, S>(f: (item: T) => (state: S) => Effect<O, S>) => (init: S) => (items: List<T>) => Effect<O, S>;
49
- /**
50
- * Sequentially runs `f(item)` for each item in `items`, discarding intermediate
51
- * results. The `void` accumulator sibling of `foldStep`.
52
- */
53
- export declare const forEachStep: <O extends Operation, T>(f: (item: T) => Effect<O, void>) => (items: List<T>) => Effect<O, void>;
54
- /**
55
- * A step adapter for the `error` short-circuit: `error` → pass it through
56
- * unchanged as `pure`, `ok` → continue with `f`. Collapses the hand-written
57
- * `r[0] === 'error' ? pure(r) : f(r[1])` check that recurs at every site
58
- * chaining `Effect<O, Result<T, E>>` steps.
59
- */
60
- export declare const okStep: <T, E, O extends Operation, R>(f: (value: T) => Effect<O, Result<R, E>>) => (r: Result<T, E>) => Effect<O, Result<R, E>>;
61
- /**
62
- * The decoded form of an effect's next step: either a final `result`, or a
63
- * `command` to perform with its `payload` and the `continuation` to resume
64
- * with the command's output.
65
- */
66
- export type Decoded<O extends Operation, T> = {
67
- readonly done: true;
68
- readonly result: T;
69
- } | {
70
- readonly done: false;
71
- readonly command: Do<O, T>[0];
72
- readonly payload: Do<O, T>[1];
73
- readonly continuation: Do<O, T>[2];
74
- };
75
- /**
76
- * Decodes an effect's next step: a pure result, or a command to perform.
77
- *
78
- * This is the only function that knows how `Value` is laid out (a thunk
79
- * `() => T` for `Pure`, a `[command, payload, continuation]` tuple for `Do`).
80
- * Interpreters and proofs must go through `decode` (or `match`) instead of
81
- * inspecting the value, so the representation can change without touching
82
- * them.
83
- */
84
- export declare const decode: <O extends Operation, T>({ value }: Effect<O, T>) => Decoded<O, T>;
85
- /**
86
- * An operation map whose entries take a command's payload and return some
87
- * output `R`. Generalizes `ToAsyncOperationMap` (`R = Promise<…>`) and the
88
- * curried `MemOperationMap` (`R = (state) => [state, …]`).
89
- */
90
- export type OperationMap<O extends Operation, R> = {
91
- readonly [K in O[0]]: (...payload: Pr<O, K>[0]) => R;
92
- };
93
- export type MatchResult<O extends Operation, T, R> = readonly ['done', T] | readonly ['cont', R, Do<O, T>[2]];
94
- /**
95
- * Decodes an effect's next step and dispatches its command to `map`,
96
- * returning either the final result or the operation's output `R` paired
97
- * with the continuation. The one world-specific step — `await` for async
98
- * runners, state threading for sync ones — is left to the caller, so every
99
- * interpreter loop is this skeleton plus a single eliminator line.
100
- */
101
- export declare const match: <O extends Operation, R>(map: OperationMap<O, R>) => <O1 extends O, T>(effect: Effect<O1, T>) => MatchResult<O1, T, R>;
102
- export type ToAsyncOperationMap<O extends Operation> = {
103
- readonly [K in O[0]]: (...payload: Pr<O, K>[0]) => Promise<Pr<O, K>[1]>;
104
- };
105
- export type F<O extends Operation> = Pr<O, O[0]>;
106
- export type Func<O extends Operation> = (..._: Param<O>) => Effect<O, Return<O>>;
@@ -1,80 +0,0 @@
1
- /**
2
- * Core effect type constructors and combinators.
3
- *
4
- * Effect helpers are **step adapters**: functions that return a continuation
5
- * `(t: T) => Effect<Q, R>` meant to be passed into `.step`, never wrappers
6
- * that take the effect itself as an argument. `Effect` has no pipeline
7
- * operator to lean on and must not be extended with new methods, so
8
- * `.step(adapterA).step(adapterB)` is how helpers compose — flat,
9
- * left-to-right, in evaluation order. See {@link okStep} for an example.
10
- *
11
- * @module
12
- */
13
- import { fold } from '../types/list/module.f.js';
14
- export const pure = (v) => ({
15
- value: () => v,
16
- step: f => f(v)
17
- });
18
- /**
19
- * A lazy pure effect. Like {@link pure}, but takes a thunk and evaluates it on
20
- * demand instead of holding an already-computed value. Use this to produce the
21
- * next item of a list without instantiating the rest — the thunk runs only when
22
- * the effect is decoded (or stepped into).
23
- */
24
- export const lazy = (t) => ({
25
- value: t,
26
- step: f => f(t())
27
- });
28
- export const doFull = (cmd, param, cont) => ({
29
- value: [cmd, param, cont],
30
- step: (f) => doFull(cmd, param, x => cont(x).step(f)),
31
- });
32
- export const do_ = (cmd) => (...param) => doFull(cmd, param, pure);
33
- /**
34
- * Sequentially threads a state value through an effect for each item in `items`.
35
- *
36
- * Given `f: item => state => Effect<O, state>`, `init: S`, and `items: [x₀, x₁, …]`,
37
- * builds `f(x₀)(init).step(f(x₁)).step(f(x₂)).…` and yields a single
38
- * `Effect<O, S>` that produces the final state.
39
- *
40
- * Sequential — each step depends on the previous state. Compare to `all`,
41
- * which fans out independent effects.
42
- */
43
- export const foldStep = (f) => (init) => (items) => fold(item => acc => acc.step(f(item)))(pure(init))(items);
44
- /**
45
- * Sequentially runs `f(item)` for each item in `items`, discarding intermediate
46
- * results. The `void` accumulator sibling of `foldStep`.
47
- */
48
- export const forEachStep = (f) => (items) => foldStep((item) => () => f(item))(undefined)(items);
49
- /**
50
- * A step adapter for the `error` short-circuit: `error` → pass it through
51
- * unchanged as `pure`, `ok` → continue with `f`. Collapses the hand-written
52
- * `r[0] === 'error' ? pure(r) : f(r[1])` check that recurs at every site
53
- * chaining `Effect<O, Result<T, E>>` steps.
54
- */
55
- export const okStep = (f) => (r) => r[0] === 'error' ? pure(r) : f(r[1]);
56
- /**
57
- * Decodes an effect's next step: a pure result, or a command to perform.
58
- *
59
- * This is the only function that knows how `Value` is laid out (a thunk
60
- * `() => T` for `Pure`, a `[command, payload, continuation]` tuple for `Do`).
61
- * Interpreters and proofs must go through `decode` (or `match`) instead of
62
- * inspecting the value, so the representation can change without touching
63
- * them.
64
- */
65
- export const decode = ({ value }) => typeof value === 'function'
66
- ? { done: true, result: value() }
67
- : { done: false, command: value[0], payload: value[1], continuation: value[2] };
68
- /**
69
- * Decodes an effect's next step and dispatches its command to `map`,
70
- * returning either the final result or the operation's output `R` paired
71
- * with the continuation. The one world-specific step — `await` for async
72
- * runners, state threading for sync ones — is left to the caller, so every
73
- * interpreter loop is this skeleton plus a single eliminator line.
74
- */
75
- export const match = (map) => (effect) => {
76
- const d = decode(effect);
77
- return d.done
78
- ? ['done', d.result]
79
- : ['cont', map[d.command](...d.payload), d.continuation];
80
- };
@@ -1,25 +0,0 @@
1
- export declare const proof: {
2
- lazy: {
3
- value: () => void;
4
- deferred: () => void;
5
- step: () => void;
6
- };
7
- foldStep: {
8
- empty: () => void;
9
- threadsState: () => void;
10
- order: () => void;
11
- };
12
- forEachStep: {
13
- empty: () => void;
14
- runs: () => void;
15
- };
16
- okStep: {
17
- ok: () => void;
18
- error: () => void;
19
- };
20
- decode: () => void;
21
- match: {
22
- done: () => void;
23
- cont: () => void;
24
- };
25
- };
@@ -1,115 +0,0 @@
1
- import { decode, do_, foldStep, forEachStep, lazy, match, okStep, pure } from './module.f.js';
2
- import { error, ok } from '../types/result/module.f.js';
3
- const assertPure = (e, expected) => {
4
- const d = decode(e);
5
- if (!d.done) {
6
- throw e.value;
7
- }
8
- if (d.result !== expected) {
9
- throw d.result;
10
- }
11
- };
12
- const next = match({ add: (a, b) => a + b });
13
- export const proof = {
14
- lazy: {
15
- value: () => {
16
- assertPure(lazy(() => 42), 42);
17
- },
18
- deferred: () => {
19
- // The thunk runs only when the effect is decoded, not when `lazy` is called.
20
- let evaluated = false;
21
- const e = lazy(() => { evaluated = true; return 7; });
22
- if (evaluated) {
23
- throw 'lazy must not evaluate eagerly';
24
- }
25
- assertPure(e, 7);
26
- if (!evaluated) {
27
- throw 'decode must force the thunk';
28
- }
29
- },
30
- step: () => {
31
- const e = lazy(() => 5).step(v => pure(v * 2));
32
- assertPure(e, 10);
33
- },
34
- },
35
- foldStep: {
36
- empty: () => {
37
- const e = foldStep((x) => (s) => pure(s + x))(10)([]);
38
- assertPure(e, 10);
39
- },
40
- threadsState: () => {
41
- const e = foldStep((x) => (s) => pure(s + x))(0)([1, 2, 3, 4]);
42
- assertPure(e, 10);
43
- },
44
- order: () => {
45
- const e = foldStep((x) => (s) => pure(s + x))('')(['a', 'b', 'c']);
46
- assertPure(e, 'abc');
47
- },
48
- },
49
- forEachStep: {
50
- empty: () => {
51
- const e = forEachStep(() => pure(undefined))([]);
52
- assertPure(e, undefined);
53
- },
54
- runs: () => {
55
- const e = forEachStep(() => pure(undefined))([1, 2, 3]);
56
- assertPure(e, undefined);
57
- },
58
- },
59
- okStep: {
60
- ok: () => {
61
- const e = pure(ok(5)).step(okStep((v) => pure(ok(v * 2))));
62
- const d = decode(e);
63
- if (!d.done || d.result[0] !== 'ok' || d.result[1] !== 10) {
64
- throw e.value;
65
- }
66
- },
67
- error: () => {
68
- const e = pure(error('oops')).step(okStep(v => pure(ok(v * 2))));
69
- const d = decode(e);
70
- if (!d.done || d.result[0] !== 'error' || d.result[1] !== 'oops') {
71
- throw e.value;
72
- }
73
- },
74
- },
75
- decode: () => {
76
- const d = decode(do_('add')(2, 3));
77
- if (d.done) {
78
- throw d;
79
- }
80
- if (d.command !== 'add') {
81
- throw d.command;
82
- }
83
- if (d.payload[0] !== 2 || d.payload[1] !== 3) {
84
- throw d.payload;
85
- }
86
- assertPure(d.continuation(5), 5);
87
- },
88
- match: {
89
- done: () => {
90
- const r = next(pure(7));
91
- if (r[0] !== 'done') {
92
- throw r;
93
- }
94
- if (r[1] !== 7) {
95
- throw r[1];
96
- }
97
- },
98
- cont: () => {
99
- const r = next(do_('add')(2, 3));
100
- if (r[0] !== 'cont') {
101
- throw r;
102
- }
103
- if (r[1] !== 5) {
104
- throw r[1];
105
- }
106
- const r2 = next(r[2](r[1]));
107
- if (r2[0] !== 'done') {
108
- throw r2;
109
- }
110
- if (r2[1] !== 5) {
111
- throw r2[1];
112
- }
113
- },
114
- },
115
- };
@@ -1,119 +0,0 @@
1
- import { assert, assertEq } from '../../asserts/module.f.js';
2
- import { dialect, mediaType, isHash, validate, decodeText } from './module.f.js';
3
- // Valid cbase32 hashes (round-tripped in fs/basen/cbase32/proof.f.ts): single
4
- // cbase32 symbols, cheap to write inline here.
5
- const h1 = '8';
6
- const h2 = 'r';
7
- const revisionOf = (extra) => ({
8
- dialect,
9
- subject: h1,
10
- parents: [],
11
- ...extra,
12
- });
13
- export const proof = {
14
- dialectAndMediaType: () => {
15
- assertEq(dialect, 'vnd.fjs.revision');
16
- assertEq(mediaType, 'application/vnd.fjs.revision+json');
17
- },
18
- isHash: {
19
- validHash: () => assert(isHash(h1)),
20
- httpsRejected: () => assert(!isHash('https://example.com/blob/abc')),
21
- arbitraryStringRejected: () => assert(!isHash('not-a-hash!')),
22
- },
23
- validate: {
24
- // Zero parents, no `snapshot`: `subject` is the fallback snapshot
25
- // reference and must itself be a hash.
26
- firstRevisionFallsBackToSubjectHash: () => {
27
- const [t] = validate(revisionOf({}));
28
- assertEq(t, 'ok');
29
- },
30
- // Zero parents, no `snapshot`, `subject` is not a hash: invalid.
31
- firstRevisionRejectsNonHashSubject: () => {
32
- const [t] = validate(revisionOf({ subject: 'my-config' }));
33
- assertEq(t, 'error');
34
- },
35
- // `snapshot` present: `subject` may be an arbitrary string.
36
- explicitSnapshotAllowsArbitrarySubject: () => {
37
- const [t] = validate(revisionOf({ subject: 'my-config', snapshot: h2 }));
38
- assertEq(t, 'ok');
39
- },
40
- // Exactly one parent, no `snapshot`: the parent's snapshot is inherited,
41
- // and `subject` may be an arbitrary string.
42
- singleParentInheritsSnapshot: () => {
43
- const [t] = validate(revisionOf({ subject: 'my-config', parents: [h2] }));
44
- assertEq(t, 'ok');
45
- },
46
- // More than one parent with no `snapshot`: invalid — no single parent
47
- // snapshot to inherit, and falling back to `subject` would silently
48
- // lose the merge result.
49
- multiParentWithoutSnapshotRejected: () => {
50
- const [t] = validate(revisionOf({ subject: 'my-config', parents: [h1, h2] }));
51
- assertEq(t, 'error');
52
- },
53
- // A merge revision with an explicit `snapshot` is valid.
54
- multiParentWithSnapshotAccepted: () => {
55
- const [t, v] = validate(revisionOf({ subject: 'my-config', parents: [h1, h2], snapshot: h2 }));
56
- assertEq(t, 'ok');
57
- assertEq(v.snapshot, h2);
58
- },
59
- // `https://` bridge URLs are rejected wherever a hash is required.
60
- httpsRejectedInParents: () => {
61
- const [t] = validate(revisionOf({ subject: 'my-config', parents: ['https://example.com/x'], snapshot: h2 }));
62
- assertEq(t, 'error');
63
- },
64
- httpsRejectedInSnapshot: () => {
65
- const [t] = validate(revisionOf({ subject: 'my-config', snapshot: 'https://example.com/x' }));
66
- assertEq(t, 'error');
67
- },
68
- httpsRejectedAsFallbackSubject: () => {
69
- const [t] = validate(revisionOf({ subject: 'https://example.com/x' }));
70
- assertEq(t, 'error');
71
- },
72
- // `archived` follows the presence-only `option(true)` idiom.
73
- archivedAccepted: () => {
74
- const [t] = validate(revisionOf({ archived: true }));
75
- assertEq(t, 'ok');
76
- },
77
- // Wrong dialect tag: structural validation rejects it outright.
78
- wrongDialectRejected: () => {
79
- const [t] = validate({ dialect: 'vnd.fjs.other', subject: h1, parents: [] });
80
- assertEq(t, 'error');
81
- },
82
- // Missing required fields: rejected.
83
- missingSubjectRejected: () => {
84
- const [t] = validate({ dialect, parents: [] });
85
- assertEq(t, 'error');
86
- },
87
- // rtti structs are open: extra fields don't break validation — the
88
- // additive forward-compatibility path the versioning rule relies on.
89
- extraFieldsAccepted: () => {
90
- const [t] = validate(revisionOf({ future: 'field' }));
91
- assertEq(t, 'ok');
92
- },
93
- },
94
- decodeText: {
95
- validJson: () => {
96
- const [t, v] = decodeText(JSON.stringify(revisionOf({ generation: 0 })));
97
- assertEq(t, 'ok');
98
- assertEq(v.subject, h1);
99
- },
100
- // Key order carries no meaning: detection parses the JSON and
101
- // validates the parsed value, so `dialect` need not be first.
102
- keyOrderIndependent: () => {
103
- const text = `{"parents":[],"subject":"${h1}","dialect":"${dialect}"}`;
104
- const [t] = decodeText(text);
105
- assertEq(t, 'ok');
106
- },
107
- malformedJsonRejected: () => {
108
- const [t] = decodeText('{not json');
109
- assertEq(t, 'error');
110
- },
111
- // Ordinary JSON that isn't a revision at all falls through as an error
112
- // here — `fs/media`'s composed detector is what falls back to the
113
- // ordinary detector; this module only reports validity.
114
- ordinaryJsonRejected: () => {
115
- const [t] = decodeText('{"hello":"world"}');
116
- assertEq(t, 'error');
117
- },
118
- },
119
- };
@@ -1,4 +0,0 @@
1
- export declare const proof: {
2
- range: () => void;
3
- oneThrowsOnEmpty: () => void;
4
- };