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
@@ -2,30 +2,30 @@
2
2
  * Conversions between `Uint8Array` values and bit vectors.
3
3
  *
4
4
  * @deprecated FunctionalScript represents byte data as `bigint`-based bit
5
- * vectors (`Vec` from `fs/types/bit_vec`). Use `utf8`/`utf8ToString` from
6
- * `fs/text` for string encoding, and the `bit_vec` module directly for raw
5
+ * vectors (`Vec` from `fjs/types/bit_vec`). Use `utf8`/`utf8ToString` from
6
+ * `fjs/text` for string encoding, and the `bit_vec` module directly for raw
7
7
  * byte manipulation. `Uint8Array` interop belongs at Node.js boundaries only
8
8
  * (e.g. `fromVec`/`toVec` when reading or writing files).
9
9
  *
10
10
  * @module
11
11
  */
12
+ import { assert, assertNotNullish } from '../../asserts/module.f.js';
12
13
  import { utf8, utf8ToString } from '../../text/module.f.js';
13
- import { maxLengthBytes, msb, u8List, u8ListToVec } from '../bit_vec/module.f.js';
14
+ import { maxLengthBytes, msb, tryU8ListToVec, u8List, u8ListToVec } from '../bit_vec/module.f.js';
14
15
  import { compose } from '../function/module.f.js';
15
16
  import { flat, fromArrayLike, iterable, map } from '../list/module.f.js';
16
17
  const u8ListToVecMsb = u8ListToVec(msb);
18
+ const tryU8ListToVecMsb = tryU8ListToVec(msb);
17
19
  const u8ListMsb = u8List(msb);
18
20
  /**
19
21
  * Converts a Uint8Array into an MSB-first bit vector.
20
22
  */
21
23
  export const toVec = (input) => {
22
- if (input.length > maxLengthBytes) {
23
- throw "the array is too big";
24
- }
24
+ assert(input.length <= maxLengthBytes, "the array is too big");
25
25
  return u8ListToVecMsb(fromArrayLike(input));
26
26
  };
27
27
  const m = map(fromArrayLike);
28
- export const listToVec = (input) => u8ListToVecMsb(flat(m(input)));
28
+ export const listToVec = (input) => assertNotNullish(tryU8ListToVecMsb(flat(m(input))), "the array is too big");
29
29
  /**
30
30
  * Converts an MSB-first bit vector into a Uint8Array.
31
31
  */
@@ -10,5 +10,8 @@ export declare const proof: {
10
10
  utf8RoundTrip: () => void;
11
11
  listToVec: () => void;
12
12
  maxLength: () => import("../bit_vec/module.f.ts").Vec;
13
- throw: () => import("../bit_vec/module.f.ts").Vec;
13
+ throw: {
14
+ toVec: () => import("../bit_vec/module.f.ts").Vec;
15
+ listToVec: () => import("../bit_vec/module.f.ts").Vec;
16
+ };
14
17
  };
@@ -2,15 +2,12 @@ import { maxLength, maxLengthBytes, vec } from '../bit_vec/module.f.js';
2
2
  import { toVec, fromVec, listToVec, decodeUtf8, encodeUtf8 } from './module.f.js';
3
3
  import { strictEqual } from '../function/operator/module.f.js';
4
4
  import { equal, fromArrayLike } from '../list/module.f.js';
5
+ import { assert } from '../../asserts/module.f.js';
5
6
  const assertEq = (a, b) => {
6
- if (a !== b) {
7
- throw [a, b];
8
- }
7
+ assert(a === b, [a, b]);
9
8
  };
10
9
  const assertArrayEq = (a, b) => {
11
- if (!equal(strictEqual)(fromArrayLike(a))(fromArrayLike(b))) {
12
- throw [a, b];
13
- }
10
+ assert(equal(strictEqual)(fromArrayLike(a))(fromArrayLike(b)), [a, b]);
14
11
  };
15
12
  export const proof = {
16
13
  empty: () => {
@@ -60,5 +57,8 @@ export const proof = {
60
57
  assertArrayEq(fromVec(result), Uint8Array.from([1, 2, 3]));
61
58
  },
62
59
  maxLength: () => toVec(new Uint8Array(Number(maxLengthBytes))),
63
- throw: () => toVec(new Uint8Array(Number(maxLengthBytes) + 1)),
60
+ throw: {
61
+ toVec: () => toVec(new Uint8Array(Number(maxLengthBytes) + 1)),
62
+ listToVec: () => listToVec([new Uint8Array(Number(maxLengthBytes)), Uint8Array.from([0])]),
63
+ },
64
64
  };
@@ -5,11 +5,10 @@
5
5
  */
6
6
  import { htmlUtf8 } from '../media/html/module.f.js';
7
7
  import { writeFile } from '../effects/node/module.f.js';
8
- import { pure } from '../effects/module.f.js';
8
+ import { pure, step } from '../effects/module.f.js';
9
9
  const html = htmlUtf8()(['a',
10
10
  { href: 'https://github.com/functionalscript/functionalscript' },
11
11
  'GitHub Repository'
12
12
  ]);
13
- const program = writeFile('index.html', html)
14
- .step(() => pure(0));
13
+ const program = step(writeFile('index.html', html), () => pure(0));
15
14
  export const main = () => program;
@@ -1,16 +1,13 @@
1
1
  import { main } from './module.f.js';
2
2
  import { emptyState, virtual } from '../effects/node/virtual/module.f.js';
3
- import { assert } from '../asserts/module.f.js';
3
+ import { assertEq, assertNotNullish } from '../asserts/module.f.js';
4
4
  export const proof = {
5
5
  main: () => {
6
- const program = main();
7
- if (program === undefined) {
8
- throw 'expected a program effect';
9
- }
6
+ assertNotNullish(main(), 'expected a program effect');
10
7
  },
11
8
  run: () => {
12
9
  const state = { ...emptyState, root: { '.github': { workflows: {} } } };
13
10
  const [_, result] = virtual(state)(main());
14
- assert(result === 0, result);
11
+ assertEq(result, 0);
15
12
  },
16
13
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "functionalscript",
3
- "version": "0.37.0",
3
+ "version": "0.39.0",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "**/*.js",
@@ -9,19 +9,19 @@
9
9
  "description": "FunctionalScript is a purely functional subset of JavaScript",
10
10
  "scripts": {
11
11
  "prepack": "tsc --NoEmit false",
12
- "test": "tsc && node ./fs/module.ts t",
12
+ "test": "tsc && node ./fjs/module.ts t",
13
13
  "cov": "node --test --experimental-test-coverage --test-coverage-include=**/module.f.ts",
14
- "start": "node ./fs/module.ts",
15
- "ci-update": "node ./fs/module.ts ci",
14
+ "start": "node ./fjs/module.ts",
15
+ "ci-update": "node ./fjs/module.ts ci",
16
16
  "update": "npx npm-check-updates -u && npm install && deno install && bun install && npm run ci-update",
17
- "index-html": "node ./fs/module.ts r ./fs/website/module.f.ts",
17
+ "index-html": "node ./fjs/module.ts r ./fjs/website/module.f.ts",
18
18
  "website": "npm run prepack && npm run index-html"
19
19
  },
20
20
  "engines": {
21
21
  "node": ">=22"
22
22
  },
23
23
  "bin": {
24
- "fjs": "fs/module.js"
24
+ "fjs": "fjs/module.js"
25
25
  },
26
26
  "repository": {
27
27
  "type": "git",
@@ -43,8 +43,8 @@
43
43
  },
44
44
  "homepage": "https://github.com/functionalscript/functionalscript#readme",
45
45
  "devDependencies": {
46
- "@playwright/test": "1.61.1",
47
- "@types/node": "26.1.1",
46
+ "@playwright/test": "1.62.0",
47
+ "@types/node": "26.1.2",
48
48
  "typescript": "7.0.2"
49
49
  }
50
50
  }
@@ -1,4 +0,0 @@
1
- export declare const todo: () => never;
2
- export declare const assert: (v: boolean, msg?: unknown) => asserts v;
3
- export declare const assertEq: <T>(...x: readonly [T, T, unknown?]) => void;
4
- export type Assert<T extends true> = T;
@@ -1,9 +0,0 @@
1
- export const todo = () => { throw 'not implemented'; };
2
- export const assert = (v, msg = 'assertion failed') => {
3
- if (!v)
4
- throw msg;
5
- };
6
- export const assertEq = (...x) => {
7
- const [a, b] = x;
8
- assert(a === b, x);
9
- };
@@ -1,8 +0,0 @@
1
- export declare const proof: {
2
- assertPassesOnTrue: () => void;
3
- assertThrowsDefaultMsg: () => void;
4
- assertThrowsCustomMsg: () => void;
5
- assertEqPassesOnEqual: () => void;
6
- assertEqThrowsOnUnequal: () => void;
7
- todoThrows: () => void;
8
- };
@@ -1,51 +0,0 @@
1
- import { assert, assertEq, todo } from './module.f.js';
2
- const throws = (f, expected) => {
3
- let caught = false;
4
- try {
5
- f();
6
- }
7
- catch (e) {
8
- caught = true;
9
- if (e !== expected) {
10
- throw ['unexpected throw value', e];
11
- }
12
- }
13
- if (!caught) {
14
- throw 'expected function to throw but it did not';
15
- }
16
- };
17
- export const proof = {
18
- assertPassesOnTrue: () => {
19
- assert(true);
20
- assert(true, 'with message');
21
- },
22
- assertThrowsDefaultMsg: () => {
23
- throws(() => assert(false), 'assertion failed');
24
- },
25
- assertThrowsCustomMsg: () => {
26
- throws(() => assert(false, 'oops'), 'oops');
27
- },
28
- assertEqPassesOnEqual: () => {
29
- assertEq(1, 1);
30
- assertEq('x', 'x');
31
- },
32
- assertEqThrowsOnUnequal: () => {
33
- let caught = false;
34
- try {
35
- assertEq(1, 2);
36
- }
37
- catch (e) {
38
- caught = true;
39
- const arr = e;
40
- if (arr[0] !== 1 || arr[1] !== 2) {
41
- throw ['wrong throw value', e];
42
- }
43
- }
44
- if (!caught) {
45
- throw 'expected assertEq to throw';
46
- }
47
- },
48
- todoThrows: () => {
49
- throws(() => todo(), 'not implemented');
50
- },
51
- };
@@ -1,30 +0,0 @@
1
- import { type Rule as FRule } from '../module.f.ts';
2
- import { type StringMap } from '../../types/object/module.f.ts';
3
- /**
4
- * Encoded terminal range value used by BNF data rules.
5
- *
6
- * The same as the functional TerminalRange.
7
- */
8
- export type TerminalRange = number;
9
- /**
10
- * Ordered list of grammar rule names.
11
- */
12
- export type Sequence = readonly string[];
13
- /** A variant of rule names. */
14
- export type Variant = StringMap<string, string>;
15
- /**
16
- * Grammar rule definition.
17
- *
18
- * It can be one of:
19
- * - a tagged variant map,
20
- * - a sequence of referenced rule names,
21
- * - an encoded terminal range.
22
- */
23
- export type Rule = Variant | Sequence | TerminalRange;
24
- /** The full grammar */
25
- export type RuleSet = Readonly<Record<string, Rule>>;
26
- /**
27
- * Converts a functional grammar rule into serializable BNF data and returns
28
- * the generated rule set with the entry rule identifier.
29
- */
30
- export declare const toData: (fr: FRule) => readonly [RuleSet, string];
@@ -1,119 +0,0 @@
1
- /**
2
- * Recursive descent matcher backend over the BNF data {@link RuleSet}.
3
- *
4
- * Built from the serializable IR in `fs/bnf/data`, this is a sibling of the
5
- * LL(1) dispatch builder (`fs/bnf/ll1`). It walks the grammar by recursive
6
- * descent and preserves per-code-point metadata, producing a metadata-aware
7
- * AST ({@link AstRuleMeta}). It also exposes {@link createEmptyTagMap}, which
8
- * records whether each rule can match the empty input.
9
- *
10
- * @module
11
- */
12
- import {} from '../../text/utf16/module.f.js';
13
- import { rangeDecode } from '../module.f.js';
14
- import { contains as rangeContains } from '../../types/range/module.f.js';
15
- import { definedEntries } from '../../types/object/module.f.js';
16
- import { toData } from '../data/module.f.js';
17
- import {} from '../module.f.js';
18
- const emptyTagMapAdd = (ruleSet) => (map) => (name) => {
19
- if (name in map) {
20
- return [ruleSet, map, map[name]];
21
- }
22
- const rule = ruleSet[name];
23
- if (typeof rule === 'number') {
24
- return [ruleSet, { ...map, [name]: false }, false];
25
- }
26
- else if (rule instanceof Array) {
27
- map = { ...map, [name]: true };
28
- let emptyTag = rule.length == 0;
29
- for (const item of rule) {
30
- const [, newMap, itemEmptyTag] = emptyTagMapAdd(ruleSet)(map)(item);
31
- map = newMap;
32
- if (emptyTag === false) {
33
- emptyTag = itemEmptyTag !== false;
34
- }
35
- }
36
- return [ruleSet, { ...map, [name]: emptyTag }, emptyTag];
37
- }
38
- else {
39
- map = { ...map, [name]: true };
40
- const entries = definedEntries(rule);
41
- let emptyTag = false;
42
- for (const [tag, item] of entries) {
43
- const [, newMap, itemEmptyTag] = emptyTagMapAdd(ruleSet)(map)(item);
44
- map = newMap;
45
- if (itemEmptyTag !== false) {
46
- emptyTag = tag;
47
- }
48
- }
49
- return [ruleSet, { ...map, [name]: emptyTag }, emptyTag];
50
- }
51
- };
52
- /**
53
- * Creates a map that describes whether each rule can consume empty input and,
54
- * for tagged variants, which tag represents the empty match.
55
- */
56
- export const createEmptyTagMap = (data) => {
57
- return emptyTagMapAdd(data[0])({})(data[1])[1];
58
- };
59
- /**
60
- * Creates a recursive descent parser that preserves metadata for each consumed
61
- * code point.
62
- */
63
- export const descentParser = (fr) => {
64
- const data = toData(fr);
65
- const emptyTagMap = createEmptyTagMap(data);
66
- const getEmptyTag = (name) => {
67
- const res = emptyTagMap[name];
68
- return res === false ? undefined : res;
69
- };
70
- const f = (name, tag, cp, idx) => {
71
- const mrSuccess = (tag, sequence, idx) => [{ tag, sequence }, true, idx];
72
- const mrFail = (tag, sequence, idx) => [{ tag, sequence }, false, idx];
73
- const rule = data[0][name];
74
- if (typeof rule === 'number') {
75
- const emptyTag = getEmptyTag(name);
76
- if (idx >= cp.length) {
77
- return emptyTag === undefined ? mrFail(emptyTag, [], idx) : mrSuccess(emptyTag, [], idx);
78
- }
79
- const cpi = cp[idx];
80
- const range = rangeDecode(rule);
81
- if (rangeContains(range)(cpi[0])) {
82
- return mrSuccess(tag, [cpi], idx + 1);
83
- }
84
- return mrFail(emptyTag, [], idx);
85
- }
86
- else if (rule instanceof Array) {
87
- let seq = [];
88
- let tidx = idx;
89
- for (const item of rule) {
90
- const m = f(item, undefined, cp, tidx);
91
- const [astRule, success, nidx] = m;
92
- tidx = nidx;
93
- if (success === false) {
94
- return mrFail(tag, [], idx);
95
- }
96
- seq = [...seq, astRule];
97
- }
98
- return mrSuccess(tag, seq, tidx);
99
- }
100
- else {
101
- const entries = definedEntries(rule);
102
- const emptyTag = getEmptyTag(name);
103
- let emptyResult = mrFail(emptyTag, [], idx);
104
- for (const [tag, item] of entries) {
105
- const m = f(item, tag, cp, idx);
106
- if (m[1]) {
107
- if (idx !== m[2])
108
- return m;
109
- emptyResult = m;
110
- }
111
- }
112
- return emptyResult;
113
- }
114
- };
115
- const match = (name, cp) => {
116
- return f(name, undefined, cp, 0);
117
- };
118
- return match;
119
- };
package/fs/bnf/proof.f.js DELETED
@@ -1,104 +0,0 @@
1
- import { classic, deterministic } from './testlib.f.js';
2
- import { rangeEncode, str, set, range, commaJoin0Plus, isEmpty, oneEncode, repeat1Plus, } from './module.f.js';
3
- export const proof = {
4
- test: () => {
5
- classic();
6
- deterministic();
7
- },
8
- throw: {
9
- rangeEncodeInvalid: [
10
- () => { rangeEncode(-1, 0); },
11
- () => { rangeEncode(0, -1); },
12
- () => { rangeEncode(5, 3); },
13
- ],
14
- rangeInvalid: [
15
- () => { range('a'); },
16
- () => { range('abc'); },
17
- ],
18
- },
19
- str: [
20
- () => {
21
- const result = str('a');
22
- if (typeof result !== 'number') {
23
- throw result;
24
- }
25
- if (result !== oneEncode(0x61)) {
26
- throw result;
27
- }
28
- },
29
- () => {
30
- const result = str('ab');
31
- if (!Array.isArray(result)) {
32
- throw result;
33
- }
34
- if (result.length !== 2) {
35
- throw result;
36
- }
37
- },
38
- ],
39
- set: () => {
40
- const result = set('abc');
41
- if (typeof result !== 'object' || result === null) {
42
- throw result;
43
- }
44
- if (!('a' in result)) {
45
- throw result;
46
- }
47
- if (!('b' in result)) {
48
- throw result;
49
- }
50
- if (!('c' in result)) {
51
- throw result;
52
- }
53
- },
54
- commaJoin0Plus: () => {
55
- const ws = '';
56
- const item = 'x';
57
- const result = commaJoin0Plus(ws)('[]', item);
58
- if (!Array.isArray(result)) {
59
- throw result;
60
- }
61
- if (result[0] !== '[') {
62
- throw result;
63
- }
64
- },
65
- isEmpty: [
66
- () => { if (!isEmpty('')) {
67
- throw 'empty string should be empty';
68
- } },
69
- () => { if (!isEmpty([])) {
70
- throw 'empty array should be empty';
71
- } },
72
- () => { if (isEmpty('a')) {
73
- throw 'non-empty string should not be empty';
74
- } },
75
- () => {
76
- const f = () => '';
77
- if (!isEmpty(f)) {
78
- throw 'function returning empty string should be empty';
79
- }
80
- },
81
- ],
82
- repeat1Plus: [
83
- () => {
84
- const result = repeat1Plus('x');
85
- if (result[0] !== 'x') {
86
- throw result[0];
87
- }
88
- if (typeof result[1] !== 'function') {
89
- throw 'expected repeat0Plus function';
90
- }
91
- },
92
- () => {
93
- const rule = 'ab';
94
- const result = repeat1Plus(rule);
95
- if (result[0] !== rule) {
96
- throw result[0];
97
- }
98
- const inner = result[1]();
99
- if (!('some' in inner) || !('none' in inner)) {
100
- throw 'expected Option shape';
101
- }
102
- },
103
- ],
104
- };
@@ -1,36 +0,0 @@
1
- import { type Effect } from '../../effects/module.f.ts';
2
- import { type MemOp } from '../../effects/memory/module.f.ts';
3
- import { type Read, type Write } from '../../effects/node/module.f.ts';
4
- import { type McpConfig, type McpHandlers } from '../../mcp/module.f.ts';
5
- import { type FileCasOperation } from '../module.f.ts';
6
- /** Arguments for `cas_add`: content to store, with optional encoding type. */
7
- export declare const casAddArgs: {
8
- readonly content: import("../../types/rtti/module.f.ts").String;
9
- readonly type: import("../../types/rtti/module.f.ts").Or<["text", "base64", undefined]>;
10
- };
11
- /** Arguments for `cas_get`: the cBase32 hash to look up; optionally request inline content. */
12
- export declare const casGetArgs: {
13
- readonly hash: import("../../types/rtti/module.f.ts").String;
14
- readonly content: import("../../types/rtti/module.f.ts").Or<readonly [import("../../types/rtti/module.f.ts").Boolean, undefined]>;
15
- };
16
- /** Arguments for `cas_list`: none. */
17
- export declare const casListArgs: {};
18
- /**
19
- * MCP handlers for `FileCas`.
20
- */
21
- export declare const casMcpHandlers: (home: string) => McpHandlers<FileCasOperation>;
22
- /**
23
- * Static MCP configuration for the CAS server: advertises the `tools`
24
- * capability, identifies the server, and pins the protocol version.
25
- */
26
- export declare const casConfig: McpConfig;
27
- /**
28
- * Runs the file CAS MCP server over stdio: allocates the session-state slot, builds
29
- * the `mcpStep` for `c`, and drives the read → parse → dispatch → write loop
30
- * until stdin EOF.
31
- */
32
- export declare const casMcpServer: (home: string) => Effect<Read | Write | MemOp | FileCasOperation, void>;
33
- export declare const proof: {
34
- casMcpServer: () => void;
35
- collectReadOverflow: () => void;
36
- };
@@ -1,20 +0,0 @@
1
- import { type FileCasOperation } from './module.f.ts';
2
- import { type Effect } from '../effects/module.f.ts';
3
- import { type ReadFile, type WriteFile, type Rm, type Mkdir } from '../effects/node/module.f.ts';
4
- type TestOp = FileCasOperation | WriteFile | ReadFile | Rm | Mkdir;
5
- declare const testAddBigFile: () => Effect<TestOp, void>;
6
- declare const testAddAndGetBigFile: () => Effect<TestOp, void>;
7
- export declare const proof: {
8
- addBigFile: typeof testAddBigFile;
9
- addAndGetBigFile: typeof testAddAndGetBigFile;
10
- casWriteRead: () => void;
11
- casReadMissingShard: () => void;
12
- casWriteMultiChunk: () => void;
13
- casWriteDedup: () => void;
14
- casWriteErrorItemAborts: () => void;
15
- casWriteReadExceedsMaxLength: () => void;
16
- casWriteGcReclaimsExpired: () => void;
17
- casUploadSuccess: () => void;
18
- casUploadFailureKeepsSource: () => void;
19
- };
20
- export {};