functionalscript 0.37.0 → 0.38.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 (500) 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/{fs → fjs}/cas/cli/proof.f.d.ts +4 -1
  28. package/{fs → fjs}/cas/cli/proof.f.js +29 -66
  29. package/fjs/cas/evo/mcp/module.f.d.ts +19 -0
  30. package/fjs/cas/evo/mcp/module.f.js +56 -0
  31. package/fjs/cas/evo/mcp/proof.f.d.ts +9 -0
  32. package/fjs/cas/evo/mcp/proof.f.js +95 -0
  33. package/fjs/cas/evo/module.f.d.ts +138 -0
  34. package/fjs/cas/evo/module.f.js +309 -0
  35. package/fjs/cas/evo/proof.f.d.ts +32 -0
  36. package/fjs/cas/evo/proof.f.js +453 -0
  37. package/fjs/cas/mcp/module.f.d.ts +49 -0
  38. package/{fs → fjs}/cas/mcp/module.f.js +54 -76
  39. package/{fs → fjs}/cas/mcp/proof.f.d.ts +4 -1
  40. package/{fs → fjs}/cas/mcp/proof.f.js +41 -13
  41. package/{fs → fjs}/cas/module.f.d.ts +10 -0
  42. package/{fs → fjs}/cas/module.f.js +27 -1
  43. package/{fs → fjs}/cas/proof.f.d.ts +4 -0
  44. package/{fs → fjs}/cas/proof.f.js +77 -86
  45. package/{fs → fjs}/ci/config/module.f.d.ts +5 -5
  46. package/{fs → fjs}/ci/config/module.f.js +5 -5
  47. package/{fs → fjs}/ci/proof.f.js +14 -9
  48. package/{fs → fjs}/ci/rust/module.f.js +9 -1
  49. package/{fs → fjs}/cli/proof.f.js +22 -63
  50. package/{fs → fjs}/common/monoid/proof.f.js +4 -9
  51. package/{fs → fjs}/crypto/hmac/proof.f.js +4 -12
  52. package/fjs/crypto/pow/proof.f.js +111 -0
  53. package/{fs → fjs}/crypto/secp/proof.f.js +12 -33
  54. package/{fs → fjs}/crypto/sha2/proof.f.js +18 -49
  55. package/{fs → fjs}/crypto/sign/module.f.d.ts +0 -5
  56. package/{fs → fjs}/crypto/sign/module.f.js +7 -4
  57. package/{fs → fjs}/crypto/sign/proof.f.js +36 -105
  58. package/{fs → fjs}/crypto/vdf/proof.f.js +22 -63
  59. package/{fs → fjs}/dev/package_json/proof.f.js +7 -7
  60. package/{fs → fjs}/dev/proof.f.js +2 -4
  61. package/{fs → fjs}/djs/ast/proof.f.js +4 -12
  62. package/{fs → fjs}/djs/parser/module.f.d.ts +5 -0
  63. package/{fs → fjs}/djs/parser/module.f.js +20 -0
  64. package/{fs → fjs}/djs/parser/proof.f.js +138 -400
  65. package/{fs → fjs}/djs/proof.f.js +13 -36
  66. package/{fs → fjs}/djs/serializer/proof.f.js +14 -39
  67. package/fjs/djs/tokenizer/module.f.d.ts +24 -0
  68. package/fjs/djs/tokenizer/module.f.js +472 -0
  69. package/{fs/djs/tokenizer-new → fjs/djs/tokenizer}/proof.f.d.ts +4 -3
  70. package/{fs/djs/tokenizer-new → fjs/djs/tokenizer}/proof.f.js +446 -445
  71. package/{fs → fjs}/djs/transpiler/proof.f.d.ts +3 -0
  72. package/{fs → fjs}/djs/transpiler/proof.f.js +29 -30
  73. package/{fs → fjs}/effects/memory/proof.f.js +8 -21
  74. package/{fs → fjs}/effects/node/memory/proof.js +5 -12
  75. package/{fs → fjs}/effects/node/module.d.ts +1 -1
  76. package/{fs → fjs}/effects/node/module.f.d.ts +1 -1
  77. package/{fs → fjs}/effects/node/module.js +3 -3
  78. package/{fs → fjs}/effects/node/proof.f.d.ts +1 -0
  79. package/{fs → fjs}/effects/node/proof.f.js +106 -292
  80. package/{fs → fjs}/effects/node/virtual/proof.f.d.ts +1 -0
  81. package/{fs → fjs}/effects/node/virtual/proof.f.js +36 -29
  82. package/{fs → fjs}/effects/proof.f.js +16 -45
  83. package/{fs → fjs}/emergent_testing/proof.f.js +7 -7
  84. package/{fs → fjs}/fsc/proof.f.js +12 -34
  85. package/{fs → fjs}/fsm/proof.f.js +5 -12
  86. package/{fs → fjs}/mcp/module.f.d.ts +7 -0
  87. package/{fs → fjs}/mcp/module.f.js +9 -2
  88. package/{fs → fjs}/mcp/proof.f.js +12 -12
  89. package/{fs → fjs}/mcp/stdio/module.f.d.ts +2 -2
  90. package/{fs → fjs}/mcp/stdio/module.f.js +2 -2
  91. package/{fs → fjs}/media/html/proof.f.js +12 -33
  92. package/{fs → fjs}/media/json/parser/module.f.d.ts +5 -0
  93. package/{fs → fjs}/media/json/parser/module.f.js +14 -0
  94. package/{fs → fjs}/media/json/parser/proof.f.js +39 -114
  95. package/{fs → fjs}/media/json/rpc/module.f.js +1 -1
  96. package/{fs → fjs}/media/json/schema/module.f.d.ts +2 -2
  97. package/{fs → fjs}/media/json/schema/module.f.js +23 -39
  98. package/{fs → fjs}/media/json/schema/proof.f.js +3 -6
  99. package/{fs → fjs}/media/json/serializer/proof.f.js +10 -27
  100. package/{fs → fjs}/media/module.f.d.ts +6 -6
  101. package/{fs → fjs}/media/module.f.js +3 -4
  102. package/{fs → fjs}/media/proof.f.js +5 -4
  103. package/{fs → fjs}/media/revision/module.f.d.ts +31 -4
  104. package/{fs → fjs}/media/revision/module.f.js +35 -23
  105. package/{fs → fjs}/media/revision/proof.f.d.ts +10 -8
  106. package/fjs/media/revision/proof.f.js +140 -0
  107. package/{fs → fjs}/media/type/proof.f.js +2 -6
  108. package/{fs → fjs}/module.f.js +1 -1
  109. package/{fs → fjs}/path/proof.f.js +27 -78
  110. package/{fs → fjs}/proof.f.js +2 -0
  111. package/{fs → fjs}/sul/id/proof.f.js +7 -21
  112. package/{fs → fjs}/sul/level/hash/proof.f.js +5 -5
  113. package/{fs → fjs}/sul/level/literal/proof.f.js +12 -26
  114. package/fjs/text/ascii/proof.f.d.ts +6 -0
  115. package/{fs → fjs}/text/ascii/proof.f.js +4 -14
  116. package/{fs → fjs}/text/code_point/module.f.js +10 -10
  117. package/{fs → fjs}/text/proof.f.js +4 -9
  118. package/{fs → fjs}/text/sgr/proof.f.js +6 -15
  119. package/{fs → fjs}/text/utf16/module.f.js +1 -1
  120. package/{fs → fjs}/text/utf16/proof.f.js +23 -66
  121. package/{fs → fjs}/text/utf8/proof.f.js +56 -125
  122. package/{fs → fjs}/types/array/proof.f.js +18 -52
  123. package/fjs/types/bigfloat/proof.f.js +217 -0
  124. package/{fs → fjs}/types/bigint/proof.f.js +49 -145
  125. package/{fs → fjs}/types/bit_vec/proof.f.js +72 -214
  126. package/{fs → fjs}/types/btree/find/proof.f.js +23 -66
  127. package/{fs → fjs}/types/btree/proof.f.js +5 -12
  128. package/{fs → fjs}/types/btree/remove/proof.f.d.ts +2 -0
  129. package/{fs → fjs}/types/btree/remove/proof.f.js +83 -230
  130. package/{fs → fjs}/types/btree/set/module.f.js +5 -2
  131. package/{fs → fjs}/types/btree/set/proof.f.js +35 -24
  132. package/{fs → fjs}/types/byte_set/proof.f.js +22 -63
  133. package/{fs → fjs}/types/function/compare/proof.f.js +13 -36
  134. package/{fs → fjs}/types/function/operator/proof.f.js +17 -48
  135. package/{fs → fjs}/types/function/proof.f.js +2 -3
  136. package/{fs → fjs}/types/list/proof.f.js +55 -163
  137. package/{fs → fjs}/types/map/proof.f.js +4 -12
  138. package/{fs → fjs}/types/nibble_set/proof.f.js +16 -45
  139. package/{fs → fjs}/types/nominal/proof.f.js +5 -10
  140. package/fjs/types/nullable/proof.f.js +29 -0
  141. package/{fs → fjs}/types/number/proof.f.js +9 -24
  142. package/{fs → fjs}/types/object/proof.f.js +3 -6
  143. package/{fs → fjs}/types/patricia_trie/proof.f.js +21 -21
  144. package/{fs → fjs}/types/prime_field/module.f.js +2 -7
  145. package/{fs → fjs}/types/range/module.f.d.ts +1 -1
  146. package/fjs/types/range/module.f.js +2 -0
  147. package/fjs/types/range/proof.f.js +9 -0
  148. package/{fs → fjs}/types/range_map/proof.f.js +28 -81
  149. package/{fs → fjs}/types/result/proof.f.d.ts +3 -2
  150. package/fjs/types/result/proof.f.js +31 -0
  151. package/{fs → fjs}/types/rtti/common/module.f.d.ts +36 -1
  152. package/{fs → fjs}/types/rtti/common/module.f.js +44 -0
  153. package/fjs/types/rtti/common/proof.f.d.ts +8 -0
  154. package/fjs/types/rtti/common/proof.f.js +51 -0
  155. package/{fs → fjs}/types/rtti/parse/module.f.js +13 -22
  156. package/{fs → fjs}/types/rtti/parse/proof.f.js +7 -18
  157. package/{fs → fjs}/types/rtti/ts/module.f.d.ts +10 -4
  158. package/{fs → fjs}/types/rtti/validate/module.f.js +8 -29
  159. package/{fs → fjs}/types/rtti/validate/proof.f.js +4 -9
  160. package/{fs → fjs}/types/sorted_list/proof.f.js +8 -21
  161. package/{fs → fjs}/types/sorted_set/proof.f.js +14 -39
  162. package/fjs/types/string/proof.f.js +77 -0
  163. package/fjs/types/string_set/proof.f.js +43 -0
  164. package/{fs → fjs}/types/ts/proof.f.js +15 -42
  165. package/{fs → fjs}/types/uint8array/module.f.js +7 -7
  166. package/{fs → fjs}/types/uint8array/proof.f.d.ts +4 -1
  167. package/{fs → fjs}/types/uint8array/proof.f.js +7 -7
  168. package/{fs → fjs}/website/proof.f.js +3 -6
  169. package/package.json +6 -6
  170. package/fs/asserts/module.f.d.ts +0 -4
  171. package/fs/asserts/module.f.js +0 -9
  172. package/fs/asserts/proof.f.d.ts +0 -8
  173. package/fs/asserts/proof.f.js +0 -51
  174. package/fs/bnf/data/module.f.d.ts +0 -30
  175. package/fs/bnf/descent/module.f.js +0 -119
  176. package/fs/bnf/proof.f.js +0 -104
  177. package/fs/cas/mcp/module.f.d.ts +0 -36
  178. package/fs/crypto/pow/proof.f.js +0 -161
  179. package/fs/djs/tokenizer/module.f.d.ts +0 -12
  180. package/fs/djs/tokenizer/module.f.js +0 -62
  181. package/fs/djs/tokenizer/proof.f.d.ts +0 -7
  182. package/fs/djs/tokenizer/proof.f.js +0 -543
  183. package/fs/djs/tokenizer-new/module.f.d.ts +0 -3
  184. package/fs/djs/tokenizer-new/module.f.js +0 -155
  185. package/fs/media/revision/proof.f.js +0 -119
  186. package/fs/text/ascii/proof.f.d.ts +0 -4
  187. package/fs/types/bigfloat/proof.f.js +0 -348
  188. package/fs/types/nullable/proof.f.js +0 -50
  189. package/fs/types/range/module.f.js +0 -2
  190. package/fs/types/range/proof.f.js +0 -18
  191. package/fs/types/result/proof.f.js +0 -52
  192. package/fs/types/string/proof.f.js +0 -118
  193. package/fs/types/string_set/proof.f.js +0 -82
  194. /package/{fs → fjs}/asn.1/module.f.d.ts +0 -0
  195. /package/{fs → fjs}/asn.1/module.f.js +0 -0
  196. /package/{fs → fjs}/asn.1/proof.f.d.ts +0 -0
  197. /package/{fs → fjs}/base_n/module.f.d.ts +0 -0
  198. /package/{fs → fjs}/base_n/module.f.js +0 -0
  199. /package/{fs → fjs}/base_n/proof.f.d.ts +0 -0
  200. /package/{fs → fjs}/basen/base128/module.f.d.ts +0 -0
  201. /package/{fs → fjs}/basen/base128/module.f.js +0 -0
  202. /package/{fs → fjs}/basen/base128/proof.f.d.ts +0 -0
  203. /package/{fs → fjs}/basen/base128/proof.f.js +0 -0
  204. /package/{fs → fjs}/basen/base64/module.f.d.ts +0 -0
  205. /package/{fs → fjs}/basen/base64/module.f.js +0 -0
  206. /package/{fs → fjs}/basen/cbase32/module.f.d.ts +0 -0
  207. /package/{fs → fjs}/basen/cbase32/module.f.js +0 -0
  208. /package/{fs → fjs}/basen/cbase32/proof.f.d.ts +0 -0
  209. /package/{fs → fjs}/bnf/proof.f.d.ts +0 -0
  210. /package/{fs → fjs}/bnf/testlib.f.d.ts +0 -0
  211. /package/{fs → fjs}/cas/cli/module.f.d.ts +0 -0
  212. /package/{fs → fjs}/cas/cli/module.f.js +0 -0
  213. /package/{fs → fjs}/ci/bun/module.f.d.ts +0 -0
  214. /package/{fs → fjs}/ci/bun/module.f.js +0 -0
  215. /package/{fs → fjs}/ci/common/module.f.d.ts +0 -0
  216. /package/{fs → fjs}/ci/common/module.f.js +0 -0
  217. /package/{fs → fjs}/ci/deno/module.f.d.ts +0 -0
  218. /package/{fs → fjs}/ci/deno/module.f.js +0 -0
  219. /package/{fs → fjs}/ci/module.f.d.ts +0 -0
  220. /package/{fs → fjs}/ci/module.f.js +0 -0
  221. /package/{fs → fjs}/ci/node/module.f.d.ts +0 -0
  222. /package/{fs → fjs}/ci/node/module.f.js +0 -0
  223. /package/{fs → fjs}/ci/playwright/module.f.d.ts +0 -0
  224. /package/{fs → fjs}/ci/playwright/module.f.js +0 -0
  225. /package/{fs → fjs}/ci/proof.f.d.ts +0 -0
  226. /package/{fs → fjs}/ci/rust/module.f.d.ts +0 -0
  227. /package/{fs → fjs}/cli/module.f.d.ts +0 -0
  228. /package/{fs → fjs}/cli/module.f.js +0 -0
  229. /package/{fs → fjs}/cli/proof.f.d.ts +0 -0
  230. /package/{fs → fjs}/common/monoid/module.f.d.ts +0 -0
  231. /package/{fs → fjs}/common/monoid/module.f.js +0 -0
  232. /package/{fs → fjs}/common/monoid/proof.f.d.ts +0 -0
  233. /package/{fs → fjs}/crypto/hmac/module.f.d.ts +0 -0
  234. /package/{fs → fjs}/crypto/hmac/module.f.js +0 -0
  235. /package/{fs → fjs}/crypto/hmac/proof.f.d.ts +0 -0
  236. /package/{fs → fjs}/crypto/pow/module.f.d.ts +0 -0
  237. /package/{fs → fjs}/crypto/pow/module.f.js +0 -0
  238. /package/{fs → fjs}/crypto/pow/proof.f.d.ts +0 -0
  239. /package/{fs → fjs}/crypto/secp/module.f.d.ts +0 -0
  240. /package/{fs → fjs}/crypto/secp/module.f.js +0 -0
  241. /package/{fs → fjs}/crypto/secp/proof.f.d.ts +0 -0
  242. /package/{fs → fjs}/crypto/sha2/module.f.d.ts +0 -0
  243. /package/{fs → fjs}/crypto/sha2/module.f.js +0 -0
  244. /package/{fs → fjs}/crypto/sha2/proof.f.d.ts +0 -0
  245. /package/{fs → fjs}/crypto/sign/proof.f.d.ts +0 -0
  246. /package/{fs → fjs}/crypto/vdf/module.f.d.ts +0 -0
  247. /package/{fs → fjs}/crypto/vdf/module.f.js +0 -0
  248. /package/{fs → fjs}/crypto/vdf/proof.f.d.ts +0 -0
  249. /package/{fs → fjs}/dev/module.f.d.ts +0 -0
  250. /package/{fs → fjs}/dev/module.f.js +0 -0
  251. /package/{fs → fjs}/dev/package_json/module.f.d.ts +0 -0
  252. /package/{fs → fjs}/dev/package_json/module.f.js +0 -0
  253. /package/{fs → fjs}/dev/package_json/proof.f.d.ts +0 -0
  254. /package/{fs → fjs}/dev/proof.f.d.ts +0 -0
  255. /package/{fs → fjs}/djs/ast/module.f.d.ts +0 -0
  256. /package/{fs → fjs}/djs/ast/module.f.js +0 -0
  257. /package/{fs → fjs}/djs/ast/proof.f.d.ts +0 -0
  258. /package/{fs → fjs}/djs/examples/input.f.d.ts +0 -0
  259. /package/{fs → fjs}/djs/examples/input.f.js +0 -0
  260. /package/{fs → fjs}/djs/examples/m.f.d.ts +0 -0
  261. /package/{fs → fjs}/djs/examples/m.f.js +0 -0
  262. /package/{fs → fjs}/djs/module.f.d.ts +0 -0
  263. /package/{fs → fjs}/djs/module.f.js +0 -0
  264. /package/{fs → fjs}/djs/parser/proof.f.d.ts +0 -0
  265. /package/{fs → fjs}/djs/proof.f.d.ts +0 -0
  266. /package/{fs → fjs}/djs/serializer/module.f.d.ts +0 -0
  267. /package/{fs → fjs}/djs/serializer/module.f.js +0 -0
  268. /package/{fs → fjs}/djs/serializer/proof.f.d.ts +0 -0
  269. /package/{fs → fjs}/djs/transpiler/module.f.d.ts +0 -0
  270. /package/{fs → fjs}/djs/transpiler/module.f.js +0 -0
  271. /package/{fs → fjs}/effects/list/module.f.d.ts +0 -0
  272. /package/{fs → fjs}/effects/list/module.f.js +0 -0
  273. /package/{fs → fjs}/effects/memory/module.f.d.ts +0 -0
  274. /package/{fs → fjs}/effects/memory/module.f.js +0 -0
  275. /package/{fs → fjs}/effects/memory/proof.f.d.ts +0 -0
  276. /package/{fs → fjs}/effects/mock/module.f.d.ts +0 -0
  277. /package/{fs → fjs}/effects/mock/module.f.js +0 -0
  278. /package/{fs → fjs}/effects/module.d.ts +0 -0
  279. /package/{fs → fjs}/effects/module.f.d.ts +0 -0
  280. /package/{fs → fjs}/effects/module.f.js +0 -0
  281. /package/{fs → fjs}/effects/module.js +0 -0
  282. /package/{fs → fjs}/effects/node/memory/module.d.ts +0 -0
  283. /package/{fs → fjs}/effects/node/memory/module.js +0 -0
  284. /package/{fs → fjs}/effects/node/memory/proof.d.ts +0 -0
  285. /package/{fs → fjs}/effects/node/module.f.js +0 -0
  286. /package/{fs → fjs}/effects/node/virtual/module.f.d.ts +0 -0
  287. /package/{fs → fjs}/effects/node/virtual/module.f.js +0 -0
  288. /package/{fs → fjs}/effects/proof.f.d.ts +0 -0
  289. /package/{fs → fjs}/emergent_testing/all.test.d.ts +0 -0
  290. /package/{fs → fjs}/emergent_testing/all.test.js +0 -0
  291. /package/{fs → fjs}/emergent_testing/example.f.d.ts +0 -0
  292. /package/{fs → fjs}/emergent_testing/example.f.js +0 -0
  293. /package/{fs → fjs}/emergent_testing/module.f.d.ts +0 -0
  294. /package/{fs → fjs}/emergent_testing/module.f.js +0 -0
  295. /package/{fs → fjs}/emergent_testing/proof.f.d.ts +0 -0
  296. /package/{fs → fjs}/emergent_testing/scenarios/all.d.ts +0 -0
  297. /package/{fs → fjs}/emergent_testing/scenarios/all.js +0 -0
  298. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.fail.d.ts +0 -0
  299. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.fail.js +0 -0
  300. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.pass.d.ts +0 -0
  301. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.pass.js +0 -0
  302. /package/{fs → fjs}/emergent_testing/scenarios/async.fail.d.ts +0 -0
  303. /package/{fs → fjs}/emergent_testing/scenarios/async.fail.js +0 -0
  304. /package/{fs → fjs}/emergent_testing/scenarios/async.pass.d.ts +0 -0
  305. /package/{fs → fjs}/emergent_testing/scenarios/async.pass.js +0 -0
  306. /package/{fs → fjs}/emergent_testing/scenarios/fail.fail.d.ts +0 -0
  307. /package/{fs → fjs}/emergent_testing/scenarios/fail.fail.js +0 -0
  308. /package/{fs → fjs}/emergent_testing/scenarios/return-value.pass.d.ts +0 -0
  309. /package/{fs → fjs}/emergent_testing/scenarios/return-value.pass.js +0 -0
  310. /package/{fs → fjs}/emergent_testing/scenarios/thenable.pass.d.ts +0 -0
  311. /package/{fs → fjs}/emergent_testing/scenarios/thenable.pass.js +0 -0
  312. /package/{fs → fjs}/emergent_testing/scenarios/thenable2.pass.d.ts +0 -0
  313. /package/{fs → fjs}/emergent_testing/scenarios/thenable2.pass.js +0 -0
  314. /package/{fs → fjs}/emergent_testing/scenarios/throw.pass.d.ts +0 -0
  315. /package/{fs → fjs}/emergent_testing/scenarios/throw.pass.js +0 -0
  316. /package/{fs → fjs}/fsc/bnf.f.d.ts +0 -0
  317. /package/{fs → fjs}/fsc/bnf.f.js +0 -0
  318. /package/{fs → fjs}/fsc/json.f.d.ts +0 -0
  319. /package/{fs → fjs}/fsc/json.f.js +0 -0
  320. /package/{fs → fjs}/fsc/module.f.d.ts +0 -0
  321. /package/{fs → fjs}/fsc/module.f.js +0 -0
  322. /package/{fs → fjs}/fsc/proof.f.d.ts +0 -0
  323. /package/{fs → fjs}/fsm/module.f.d.ts +0 -0
  324. /package/{fs → fjs}/fsm/module.f.js +0 -0
  325. /package/{fs → fjs}/fsm/proof.f.d.ts +0 -0
  326. /package/{fs → fjs}/js/tokenizer/module.f.d.ts +0 -0
  327. /package/{fs → fjs}/js/tokenizer/module.f.js +0 -0
  328. /package/{fs → fjs}/js/tokenizer/proof.f.d.ts +0 -0
  329. /package/{fs → fjs}/js/tokenizer/proof.f.js +0 -0
  330. /package/{fs → fjs}/mcp/proof.f.d.ts +0 -0
  331. /package/{fs → fjs}/mcp/stdio/proof.f.d.ts +0 -0
  332. /package/{fs → fjs}/mcp/stdio/proof.f.js +0 -0
  333. /package/{fs → fjs}/media/html/module.f.d.ts +0 -0
  334. /package/{fs → fjs}/media/html/module.f.js +0 -0
  335. /package/{fs → fjs}/media/html/proof.f.d.ts +0 -0
  336. /package/{fs → fjs}/media/json/module.f.d.ts +0 -0
  337. /package/{fs → fjs}/media/json/module.f.js +0 -0
  338. /package/{fs → fjs}/media/json/parser/proof.f.d.ts +0 -0
  339. /package/{fs → fjs}/media/json/proof.f.d.ts +0 -0
  340. /package/{fs → fjs}/media/json/proof.f.js +0 -0
  341. /package/{fs → fjs}/media/json/rpc/module.f.d.ts +0 -0
  342. /package/{fs → fjs}/media/json/rpc/proof.f.d.ts +0 -0
  343. /package/{fs → fjs}/media/json/rpc/proof.f.js +0 -0
  344. /package/{fs → fjs}/media/json/schema/proof.f.d.ts +0 -0
  345. /package/{fs → fjs}/media/json/serializer/module.f.d.ts +0 -0
  346. /package/{fs → fjs}/media/json/serializer/module.f.js +0 -0
  347. /package/{fs → fjs}/media/json/serializer/proof.f.d.ts +0 -0
  348. /package/{fs → fjs}/media/json/tokenizer/module.f.d.ts +0 -0
  349. /package/{fs → fjs}/media/json/tokenizer/module.f.js +0 -0
  350. /package/{fs → fjs}/media/json/tokenizer/proof.f.d.ts +0 -0
  351. /package/{fs → fjs}/media/json/tokenizer/proof.f.js +0 -0
  352. /package/{fs → fjs}/media/proof.f.d.ts +0 -0
  353. /package/{fs → fjs}/media/type/module.f.d.ts +0 -0
  354. /package/{fs → fjs}/media/type/module.f.js +0 -0
  355. /package/{fs → fjs}/media/type/proof.f.d.ts +0 -0
  356. /package/{fs → fjs}/module.d.ts +0 -0
  357. /package/{fs → fjs}/module.f.d.ts +0 -0
  358. /package/{fs → fjs}/module.js +0 -0
  359. /package/{fs → fjs}/path/module.f.d.ts +0 -0
  360. /package/{fs → fjs}/path/module.f.js +0 -0
  361. /package/{fs → fjs}/path/proof.f.d.ts +0 -0
  362. /package/{fs → fjs}/proof.f.d.ts +0 -0
  363. /package/{fs → fjs}/sul/id/module.f.d.ts +0 -0
  364. /package/{fs → fjs}/sul/id/module.f.js +0 -0
  365. /package/{fs → fjs}/sul/id/proof.f.d.ts +0 -0
  366. /package/{fs → fjs}/sul/level/hash/module.f.d.ts +0 -0
  367. /package/{fs → fjs}/sul/level/hash/module.f.js +0 -0
  368. /package/{fs → fjs}/sul/level/hash/proof.f.d.ts +0 -0
  369. /package/{fs → fjs}/sul/level/literal/module.f.d.ts +0 -0
  370. /package/{fs → fjs}/sul/level/literal/module.f.js +0 -0
  371. /package/{fs → fjs}/sul/level/literal/proof.f.d.ts +0 -0
  372. /package/{fs → fjs}/sul/module.f.d.ts +0 -0
  373. /package/{fs → fjs}/sul/module.f.js +0 -0
  374. /package/{fs → fjs}/sul/proof.f.d.ts +0 -0
  375. /package/{fs → fjs}/sul/proof.f.js +0 -0
  376. /package/{fs → fjs}/text/ascii/module.f.d.ts +0 -0
  377. /package/{fs → fjs}/text/ascii/module.f.js +0 -0
  378. /package/{fs → fjs}/text/code_point/module.f.d.ts +0 -0
  379. /package/{fs → fjs}/text/code_point/proof.f.d.ts +0 -0
  380. /package/{fs → fjs}/text/code_point/proof.f.js +0 -0
  381. /package/{fs → fjs}/text/module.f.d.ts +0 -0
  382. /package/{fs → fjs}/text/module.f.js +0 -0
  383. /package/{fs → fjs}/text/proof.f.d.ts +0 -0
  384. /package/{fs → fjs}/text/sgr/module.f.d.ts +0 -0
  385. /package/{fs → fjs}/text/sgr/module.f.js +0 -0
  386. /package/{fs → fjs}/text/sgr/proof.f.d.ts +0 -0
  387. /package/{fs → fjs}/text/utf16/module.f.d.ts +0 -0
  388. /package/{fs → fjs}/text/utf16/proof.f.d.ts +0 -0
  389. /package/{fs → fjs}/text/utf8/module.f.d.ts +0 -0
  390. /package/{fs → fjs}/text/utf8/module.f.js +0 -0
  391. /package/{fs → fjs}/text/utf8/proof.f.d.ts +0 -0
  392. /package/{fs → fjs}/types/array/module.f.d.ts +0 -0
  393. /package/{fs → fjs}/types/array/module.f.js +0 -0
  394. /package/{fs → fjs}/types/array/proof.f.d.ts +0 -0
  395. /package/{fs → fjs}/types/bigfloat/module.f.d.ts +0 -0
  396. /package/{fs → fjs}/types/bigfloat/module.f.js +0 -0
  397. /package/{fs → fjs}/types/bigfloat/proof.f.d.ts +0 -0
  398. /package/{fs → fjs}/types/bigint/module.f.d.ts +0 -0
  399. /package/{fs → fjs}/types/bigint/module.f.js +0 -0
  400. /package/{fs → fjs}/types/bigint/proof.f.d.ts +0 -0
  401. /package/{fs → fjs}/types/bit_vec/module.f.d.ts +0 -0
  402. /package/{fs → fjs}/types/bit_vec/module.f.js +0 -0
  403. /package/{fs → fjs}/types/bit_vec/proof.f.d.ts +0 -0
  404. /package/{fs → fjs}/types/btree/find/module.f.d.ts +0 -0
  405. /package/{fs → fjs}/types/btree/find/module.f.js +0 -0
  406. /package/{fs → fjs}/types/btree/find/proof.f.d.ts +0 -0
  407. /package/{fs → fjs}/types/btree/module.f.d.ts +0 -0
  408. /package/{fs → fjs}/types/btree/module.f.js +0 -0
  409. /package/{fs → fjs}/types/btree/proof.f.d.ts +0 -0
  410. /package/{fs → fjs}/types/btree/remove/module.f.d.ts +0 -0
  411. /package/{fs → fjs}/types/btree/remove/module.f.js +0 -0
  412. /package/{fs → fjs}/types/btree/set/module.f.d.ts +0 -0
  413. /package/{fs → fjs}/types/btree/set/proof.f.d.ts +0 -0
  414. /package/{fs → fjs}/types/btree/types/module.f.d.ts +0 -0
  415. /package/{fs → fjs}/types/btree/types/module.f.js +0 -0
  416. /package/{fs → fjs}/types/byte_set/module.f.d.ts +0 -0
  417. /package/{fs → fjs}/types/byte_set/module.f.js +0 -0
  418. /package/{fs → fjs}/types/byte_set/proof.f.d.ts +0 -0
  419. /package/{fs → fjs}/types/function/compare/module.f.d.ts +0 -0
  420. /package/{fs → fjs}/types/function/compare/module.f.js +0 -0
  421. /package/{fs → fjs}/types/function/compare/proof.f.d.ts +0 -0
  422. /package/{fs → fjs}/types/function/module.f.d.ts +0 -0
  423. /package/{fs → fjs}/types/function/module.f.js +0 -0
  424. /package/{fs → fjs}/types/function/operator/module.f.d.ts +0 -0
  425. /package/{fs → fjs}/types/function/operator/module.f.js +0 -0
  426. /package/{fs → fjs}/types/function/operator/proof.f.d.ts +0 -0
  427. /package/{fs → fjs}/types/function/proof.f.d.ts +0 -0
  428. /package/{fs → fjs}/types/list/module.f.d.ts +0 -0
  429. /package/{fs → fjs}/types/list/module.f.js +0 -0
  430. /package/{fs → fjs}/types/list/proof.f.d.ts +0 -0
  431. /package/{fs → fjs}/types/map/module.f.d.ts +0 -0
  432. /package/{fs → fjs}/types/map/module.f.js +0 -0
  433. /package/{fs → fjs}/types/map/proof.f.d.ts +0 -0
  434. /package/{fs → fjs}/types/nibble_set/module.f.d.ts +0 -0
  435. /package/{fs → fjs}/types/nibble_set/module.f.js +0 -0
  436. /package/{fs → fjs}/types/nibble_set/proof.f.d.ts +0 -0
  437. /package/{fs → fjs}/types/nominal/module.f.d.ts +0 -0
  438. /package/{fs → fjs}/types/nominal/module.f.js +0 -0
  439. /package/{fs → fjs}/types/nominal/proof.f.d.ts +0 -0
  440. /package/{fs → fjs}/types/nullable/module.f.d.ts +0 -0
  441. /package/{fs → fjs}/types/nullable/module.f.js +0 -0
  442. /package/{fs → fjs}/types/nullable/proof.f.d.ts +0 -0
  443. /package/{fs → fjs}/types/number/module.f.d.ts +0 -0
  444. /package/{fs → fjs}/types/number/module.f.js +0 -0
  445. /package/{fs → fjs}/types/number/proof.f.d.ts +0 -0
  446. /package/{fs → fjs}/types/object/module.f.d.ts +0 -0
  447. /package/{fs → fjs}/types/object/module.f.js +0 -0
  448. /package/{fs → fjs}/types/object/proof.f.d.ts +0 -0
  449. /package/{fs → fjs}/types/option/module.f.d.ts +0 -0
  450. /package/{fs → fjs}/types/option/module.f.js +0 -0
  451. /package/{fs → fjs}/types/ordered_map/module.f.d.ts +0 -0
  452. /package/{fs → fjs}/types/ordered_map/module.f.js +0 -0
  453. /package/{fs → fjs}/types/ordered_map/proof.f.d.ts +0 -0
  454. /package/{fs → fjs}/types/ordered_map/proof.f.js +0 -0
  455. /package/{fs → fjs}/types/patricia_trie/module.f.d.ts +0 -0
  456. /package/{fs → fjs}/types/patricia_trie/module.f.js +0 -0
  457. /package/{fs → fjs}/types/patricia_trie/proof.f.d.ts +0 -0
  458. /package/{fs → fjs}/types/phantom/module.f.d.ts +0 -0
  459. /package/{fs → fjs}/types/phantom/module.f.js +0 -0
  460. /package/{fs → fjs}/types/prime_field/module.f.d.ts +0 -0
  461. /package/{fs → fjs}/types/prime_field/proof.f.d.ts +0 -0
  462. /package/{fs → fjs}/types/prime_field/proof.f.js +0 -0
  463. /package/{fs → fjs}/types/range/proof.f.d.ts +0 -0
  464. /package/{fs → fjs}/types/range_map/module.f.d.ts +0 -0
  465. /package/{fs → fjs}/types/range_map/module.f.js +0 -0
  466. /package/{fs → fjs}/types/range_map/proof.f.d.ts +0 -0
  467. /package/{fs → fjs}/types/result/module.d.ts +0 -0
  468. /package/{fs → fjs}/types/result/module.f.d.ts +0 -0
  469. /package/{fs → fjs}/types/result/module.f.js +0 -0
  470. /package/{fs → fjs}/types/result/module.js +0 -0
  471. /package/{fs → fjs}/types/rtti/module.f.d.ts +0 -0
  472. /package/{fs → fjs}/types/rtti/module.f.js +0 -0
  473. /package/{fs → fjs}/types/rtti/parse/module.f.d.ts +0 -0
  474. /package/{fs → fjs}/types/rtti/parse/proof.f.d.ts +0 -0
  475. /package/{fs → fjs}/types/rtti/proof.f.d.ts +0 -0
  476. /package/{fs → fjs}/types/rtti/proof.f.js +0 -0
  477. /package/{fs → fjs}/types/rtti/ts/module.f.js +0 -0
  478. /package/{fs → fjs}/types/rtti/ts/proof.f.d.ts +0 -0
  479. /package/{fs → fjs}/types/rtti/ts/proof.f.js +0 -0
  480. /package/{fs → fjs}/types/rtti/validate/module.f.d.ts +0 -0
  481. /package/{fs → fjs}/types/rtti/validate/proof.f.d.ts +0 -0
  482. /package/{fs → fjs}/types/sorted_list/module.f.d.ts +0 -0
  483. /package/{fs → fjs}/types/sorted_list/module.f.js +0 -0
  484. /package/{fs → fjs}/types/sorted_list/proof.f.d.ts +0 -0
  485. /package/{fs → fjs}/types/sorted_set/module.f.d.ts +0 -0
  486. /package/{fs → fjs}/types/sorted_set/module.f.js +0 -0
  487. /package/{fs → fjs}/types/sorted_set/proof.f.d.ts +0 -0
  488. /package/{fs → fjs}/types/string/module.f.d.ts +0 -0
  489. /package/{fs → fjs}/types/string/module.f.js +0 -0
  490. /package/{fs → fjs}/types/string/proof.f.d.ts +0 -0
  491. /package/{fs → fjs}/types/string_set/module.f.d.ts +0 -0
  492. /package/{fs → fjs}/types/string_set/module.f.js +0 -0
  493. /package/{fs → fjs}/types/string_set/proof.f.d.ts +0 -0
  494. /package/{fs → fjs}/types/ts/module.f.d.ts +0 -0
  495. /package/{fs → fjs}/types/ts/module.f.js +0 -0
  496. /package/{fs → fjs}/types/ts/proof.f.d.ts +0 -0
  497. /package/{fs → fjs}/types/uint8array/module.f.d.ts +0 -0
  498. /package/{fs → fjs}/website/module.f.d.ts +0 -0
  499. /package/{fs → fjs}/website/module.f.js +0 -0
  500. /package/{fs → fjs}/website/proof.f.d.ts +0 -0
@@ -1,5 +1,5 @@
1
- import { assertEq } from '../../../asserts/module.f.js';
2
- import { awaitIfPromise, fetch, rm, writeFile, readFile, readdir, import_, rename, readBytes, writeBytes } from '../module.f.js';
1
+ import { assert, assertEq } from '../../../asserts/module.f.js';
2
+ import { access, awaitIfPromise, fetch, rm, writeFile, readFile, readdir, import_, rename, readBytes, writeBytes } from '../module.f.js';
3
3
  import { maxLengthBytes, vec, vec8 } from '../../../types/bit_vec/module.f.js';
4
4
  import { emptyState, virtual } from './module.f.js';
5
5
  export const proof = {
@@ -7,24 +7,24 @@ export const proof = {
7
7
  success: () => {
8
8
  const root = { 'a.txt': [vec8(0x42n)] };
9
9
  const [, result] = virtual({ ...emptyState, root })(rm('a.txt'));
10
- assertEq(result[0], 'ok');
10
+ assert(result[0] === 'ok');
11
11
  },
12
12
  notFound: () => {
13
13
  const [, result] = virtual(emptyState)(rm('notexist.txt'));
14
- assertEq(result[0], 'error');
14
+ assert(result[0] === 'error');
15
15
  },
16
16
  isDirectory: () => {
17
17
  const inner = {};
18
18
  const root = { 'mydir': inner };
19
19
  const [, result] = virtual({ ...emptyState, root })(rm('mydir'));
20
- assertEq(result[0], 'error');
20
+ assert(result[0] === 'error');
21
21
  },
22
22
  },
23
23
  writeFileOnDirectory: () => {
24
24
  const inner = {};
25
25
  const root = { 'mydir': inner };
26
26
  const [, result] = virtual({ ...emptyState, root })(writeFile('mydir', vec8(0x42n)));
27
- assertEq(result[0], 'error');
27
+ assert(result[0] === 'error');
28
28
  },
29
29
  readdirRecursive: () => {
30
30
  const file = [vec8(0x42n)];
@@ -32,12 +32,19 @@ export const proof = {
32
32
  const outer = { 'sub': sub };
33
33
  const root = { 'mydir': outer };
34
34
  const [, result] = virtual({ ...emptyState, root })(readdir('mydir', { recursive: true }));
35
- assertEq(result[0], 'ok');
36
- if (result[0] !== 'ok') {
37
- throw result;
38
- }
35
+ assert(result[0] === 'ok');
36
+ assert(result[0] === 'ok', result);
39
37
  assertEq(result[1].length, 2);
40
38
  },
39
+ accessNestedPathThroughFile: () => {
40
+ // 'a/b/c' where 'a' is a file: the operation wrapper's "not a directory"
41
+ // fallback passes the full remaining path through unchanged, covering the
42
+ // path.length !== 1 branch of the access op (only path.length === 0 was
43
+ // otherwise exercised).
44
+ const root = { 'a': [vec8(0x42n)] };
45
+ const [, result] = virtual({ ...emptyState, root })(access('a/b/c'));
46
+ assert(result[0] === 'error');
47
+ },
41
48
  readFileIntoDir: () => {
42
49
  // 'a/b' where both 'a' and 'b' are directories
43
50
  // hits path.length === 0 in operation's f and path.length !== 1 in readFile op
@@ -45,7 +52,7 @@ export const proof = {
45
52
  const outer = { 'b': inner };
46
53
  const root = { 'a': outer };
47
54
  const [, result] = virtual({ ...emptyState, root })(readFile('a/b'));
48
- assertEq(result[0], 'error');
55
+ assert(result[0] === 'error');
49
56
  },
50
57
  awaitNonPromise: () => {
51
58
  // a non-promise value passes through the virtual `await` handler as-is
@@ -55,19 +62,19 @@ export const proof = {
55
62
  fetchNotFound: () => {
56
63
  // covers the `result === undefined` branch of the `fetch` handler
57
64
  const [, result] = virtual(emptyState)(fetch('https://example.com/missing'));
58
- assertEq(result[0], 'error');
65
+ assert(result[0] === 'error');
59
66
  },
60
67
  importNestedPath: () => {
61
68
  // import_ on a path whose parent does not exist covers the
62
69
  // path.length !== 1 branch of the import_ op
63
70
  const [, result] = virtual(emptyState)(import_('a/b'));
64
- assertEq(result[0], 'error');
71
+ assert(result[0] === 'error');
65
72
  },
66
73
  importNonModule: () => {
67
74
  // import_ on a Vec (not a JsModule) covers typeof entry !== 'function' branch
68
75
  const root = { 'module.f.ts': [vec8(0x42n)] };
69
76
  const [, result] = virtual({ ...emptyState, root })(import_('module.f.ts'));
70
- assertEq(result[0], 'error');
77
+ assert(result[0] === 'error');
71
78
  },
72
79
  throw: {
73
80
  readFileOnJsModule: () => {
@@ -80,37 +87,37 @@ export const proof = {
80
87
  // rename('a', 'a') should succeed as a no-op, not reject
81
88
  const root = { 'a': [vec8(0x42n)] };
82
89
  const [, result] = virtual({ ...emptyState, root })(rename('a', 'a'));
83
- assertEq(result[0], 'ok');
90
+ assert(result[0] === 'ok');
84
91
  },
85
92
  renameIntoOwnSubtree: () => {
86
93
  // rename('a', 'a/b') should fail (dst inside src's subtree)
87
94
  const root = { 'a': { 'b': [vec8(0x42n)] } };
88
95
  const [, result] = virtual({ ...emptyState, root })(rename('a', 'a/b'));
89
- assertEq(result[0], 'error');
96
+ assert(result[0] === 'error');
90
97
  },
91
98
  renameOntoOwnAncestor: () => {
92
99
  // rename('a/b', 'a') should fail (src inside dst's subtree)
93
100
  const root = { 'a': { 'b': [vec8(0x42n)] } };
94
101
  const [, result] = virtual({ ...emptyState, root })(rename('a/b', 'a'));
95
- assertEq(result[0], 'error');
102
+ assert(result[0] === 'error');
96
103
  },
97
104
  renameNonEmptyDirOverEmptyDir: () => {
98
105
  // rename a directory onto an empty directory should succeed
99
106
  const root = { 'src': { 'file': [vec8(0x42n)] }, 'dst': {} };
100
107
  const [, result] = virtual({ ...emptyState, root })(rename('src', 'dst'));
101
- assertEq(result[0], 'ok');
108
+ assert(result[0] === 'ok');
102
109
  },
103
110
  renameEmptyDirOverNonEmptyDir: () => {
104
111
  // rename an empty directory onto a non-empty directory should fail
105
112
  const root = { 'src': {}, 'dst': { 'file': [vec8(0x42n)] } };
106
113
  const [, result] = virtual({ ...emptyState, root })(rename('src', 'dst'));
107
- assertEq(result[0], 'error');
114
+ assert(result[0] === 'error');
108
115
  },
109
116
  renameFileOntoDirectory: () => {
110
117
  // rename a file to a path that is already an existing directory should fail
111
118
  const root = { 'myfile': [vec8(0x42n)], 'mydir': {} };
112
119
  const [, result] = virtual({ ...emptyState, root })(rename('myfile', 'mydir'));
113
- assertEq(result[0], 'error');
120
+ assert(result[0] === 'error');
114
121
  },
115
122
  readFileTooLarge: () => {
116
123
  // a file stored as two max-size chunks exceeds the limit; readFile must return an error
@@ -118,37 +125,37 @@ export const proof = {
118
125
  const chunk1 = vec(1n)(1n);
119
126
  const root = { 'big': [chunk0, chunk1] };
120
127
  const [, result] = virtual({ ...emptyState, root })(readFile('big'));
121
- assertEq(result[0], 'error');
128
+ assert(result[0] === 'error');
122
129
  },
123
130
  readBytesNegativeSize: () => {
124
131
  // readBytes with negative size should fail
125
132
  const root = { 'file': [vec8(0x42n)] };
126
133
  const [, result] = virtual({ ...emptyState, root })(readBytes('file', 0, -1));
127
- assertEq(result[0], 'error');
134
+ assert(result[0] === 'error');
128
135
  },
129
136
  readBytesZeroSize: () => {
130
137
  // readBytes with zero size should succeed and return empty vec
131
138
  const root = { 'file': [vec8(0x42n)] };
132
139
  const [, result] = virtual({ ...emptyState, root })(readBytes('file', 0, 0));
133
- assertEq(result[0], 'ok');
140
+ assert(result[0] === 'ok');
134
141
  },
135
142
  readBytesNegativeOffset: () => {
136
143
  // readBytes with negative offset should fail
137
144
  const root = { 'file': [vec8(0x42n)] };
138
145
  const [, result] = virtual({ ...emptyState, root })(readBytes('file', -1, 1));
139
- assertEq(result[0], 'error');
146
+ assert(result[0] === 'error');
140
147
  },
141
148
  readBytesFractionalSize: () => {
142
149
  // readBytes with fractional size should fail rather than throw RangeError
143
150
  const root = { 'file': [vec8(0x42n)] };
144
151
  const [, result] = virtual({ ...emptyState, root })(readBytes('file', 0, 1.5));
145
- assertEq(result[0], 'error');
152
+ assert(result[0] === 'error');
146
153
  },
147
154
  readBytesFractionalOffset: () => {
148
155
  // readBytes with fractional offset should fail rather than throw RangeError
149
156
  const root = { 'file': [vec8(0x42n)] };
150
157
  const [, result] = virtual({ ...emptyState, root })(readBytes('file', 0.5, 1));
151
- assertEq(result[0], 'error');
158
+ assert(result[0] === 'error');
152
159
  },
153
160
  readBytesAcrossChunkBoundary: () => {
154
161
  // Two 128 KiB chunks; read 2 bytes spanning the boundary (last byte of chunk 0, first of chunk 1).
@@ -157,14 +164,14 @@ export const proof = {
157
164
  const chunk1 = vec(maxLengthBytes * 8n)(0xbbn);
158
165
  const root = { 'big': [chunk0, chunk1] };
159
166
  const [, result] = virtual({ ...emptyState, root })(readBytes('big', chunkSize - 1, 2));
160
- assertEq(result[0], 'ok');
167
+ assert(result[0] === 'ok');
161
168
  },
162
169
  writeBytesWrongOffset: () => {
163
170
  // writeBytes is append-only; an offset that doesn't match the current
164
171
  // file size must fail rather than silently create a hole.
165
172
  const root = { 'file': [vec8(0x42n)] };
166
173
  const [, result] = virtual({ ...emptyState, root })(writeBytes('file', 5, vec8(0x43n)));
167
- assertEq(result[0], 'error');
174
+ assert(result[0] === 'error');
168
175
  },
169
176
  largeFileReadBytes: () => {
170
177
  // A file stored as two 128 KiB chunks is larger than maxLengthBytes.
@@ -174,6 +181,6 @@ export const proof = {
174
181
  const chunk1 = vec(maxLengthBytes * 8n)(0xffn);
175
182
  const root = { 'large': [chunk0, chunk1] };
176
183
  const [, result] = virtual({ ...emptyState, root })(readBytes('large', chunkSize, 1));
177
- assertEq(result[0], 'ok');
184
+ assert(result[0] === 'ok');
178
185
  },
179
186
  };
@@ -1,13 +1,10 @@
1
1
  import { decode, do_, foldStep, forEachStep, lazy, match, okStep, pure } from './module.f.js';
2
2
  import { error, ok } from '../types/result/module.f.js';
3
+ import { assert, assertEq } from '../asserts/module.f.js';
3
4
  const assertPure = (e, expected) => {
4
5
  const d = decode(e);
5
- if (!d.done) {
6
- throw e.value;
7
- }
8
- if (d.result !== expected) {
9
- throw d.result;
10
- }
6
+ assert(d.done, e.value);
7
+ assertEq(d.result, expected);
11
8
  };
12
9
  const next = match({ add: (a, b) => a + b });
13
10
  export const proof = {
@@ -19,13 +16,9 @@ export const proof = {
19
16
  // The thunk runs only when the effect is decoded, not when `lazy` is called.
20
17
  let evaluated = false;
21
18
  const e = lazy(() => { evaluated = true; return 7; });
22
- if (evaluated) {
23
- throw 'lazy must not evaluate eagerly';
24
- }
19
+ assert(!(evaluated), 'lazy must not evaluate eagerly');
25
20
  assertPure(e, 7);
26
- if (!evaluated) {
27
- throw 'decode must force the thunk';
28
- }
21
+ assert(evaluated, 'decode must force the thunk');
29
22
  },
30
23
  step: () => {
31
24
  const e = lazy(() => 5).step(v => pure(v * 2));
@@ -60,56 +53,34 @@ export const proof = {
60
53
  ok: () => {
61
54
  const e = pure(ok(5)).step(okStep((v) => pure(ok(v * 2))));
62
55
  const d = decode(e);
63
- if (!d.done || d.result[0] !== 'ok' || d.result[1] !== 10) {
64
- throw e.value;
65
- }
56
+ assert(!(!d.done || d.result[0] !== 'ok' || d.result[1] !== 10), e.value);
66
57
  },
67
58
  error: () => {
68
59
  const e = pure(error('oops')).step(okStep(v => pure(ok(v * 2))));
69
60
  const d = decode(e);
70
- if (!d.done || d.result[0] !== 'error' || d.result[1] !== 'oops') {
71
- throw e.value;
72
- }
61
+ assert(!(!d.done || d.result[0] !== 'error' || d.result[1] !== 'oops'), e.value);
73
62
  },
74
63
  },
75
64
  decode: () => {
76
65
  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
- }
66
+ assert(!(d.done), d);
67
+ assertEq(d.command, 'add');
68
+ assert(!(d.payload[0] !== 2 || d.payload[1] !== 3), d.payload);
86
69
  assertPure(d.continuation(5), 5);
87
70
  },
88
71
  match: {
89
72
  done: () => {
90
73
  const r = next(pure(7));
91
- if (r[0] !== 'done') {
92
- throw r;
93
- }
94
- if (r[1] !== 7) {
95
- throw r[1];
96
- }
74
+ assert(r[0] === 'done', r);
75
+ assertEq(r[1], 7);
97
76
  },
98
77
  cont: () => {
99
78
  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
- }
79
+ assert(r[0] === 'cont', r);
80
+ assertEq(r[1], 5);
106
81
  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
- }
82
+ assert(r2[0] === 'done', r2);
83
+ assertEq(r2[1], 5);
113
84
  },
114
85
  },
115
86
  };
@@ -42,7 +42,7 @@ export const flat = () => {
42
42
  const [e0, e1, e2] = events;
43
43
  assert(e0[0] === 'result' && e0[2][0] === 'a');
44
44
  assert(e1[0] === 'result' && e1[2][0] === 'b');
45
- assertEq(e2[0], 'summary');
45
+ assert(e2[0] === 'summary');
46
46
  const [, pass, fail] = e2;
47
47
  assertEq(pass, 2);
48
48
  assertEq(fail, 0);
@@ -56,7 +56,7 @@ export const nested = () => {
56
56
  const [e0, e1, e2] = events;
57
57
  assert(e0[0] === 'result' && e0[2][1] === 'add');
58
58
  assert(e1[0] === 'result' && e1[2][1] === 'sub');
59
- assertEq(e2[0], 'summary');
59
+ assert(e2[0] === 'summary');
60
60
  const [, pass, fail] = e2;
61
61
  assertEq(pass, 2);
62
62
  assertEq(fail, 0);
@@ -69,7 +69,7 @@ export const throwKey = () => {
69
69
  assertEq(exit, 0);
70
70
  const [e0, e1] = events;
71
71
  assert(e0[0] === 'result' && e0[2][0] === 'throw' && e0[2][1] === 'a');
72
- assertEq(e1[0], 'summary');
72
+ assert(e1[0] === 'summary');
73
73
  const [, pass, fail] = e1;
74
74
  assertEq(pass, 1);
75
75
  assertEq(fail, 0);
@@ -81,7 +81,7 @@ export const throwKeyFail = () => {
81
81
  });
82
82
  assertEq(exit, 1);
83
83
  const [e0, e1] = events;
84
- assertEq(e0[0], 'result');
84
+ assert(e0[0] === 'result');
85
85
  const [, pass, fail] = e1;
86
86
  assertEq(pass, 0);
87
87
  assertEq(fail, 1);
@@ -93,7 +93,7 @@ export const mixedPassFail = () => {
93
93
  });
94
94
  assertEq(exit, 1);
95
95
  const summary = events[events.length - 1];
96
- assertEq(summary[0], 'summary');
96
+ assert(summary[0] === 'summary');
97
97
  const [, pass, fail] = summary;
98
98
  assertEq(pass, 1);
99
99
  assertEq(fail, 1);
@@ -245,12 +245,12 @@ export const registerSuffixes = () => {
245
245
  // Node (star = ''): no suffixes
246
246
  const [nodeNames] = runner([])(registerModule(noopCtx, './a.f.ts', proof, ''));
247
247
  assertEq(nodeNames.length, 2);
248
- assertEq(nodeNames[0], 'import("./a.f.ts").proof.ok()');
248
+ assert(nodeNames[0] === 'import("./a.f.ts").proof.ok()');
249
249
  assertEq(nodeNames[1], 'import("./a.f.ts").proof.throw.a()');
250
250
  // Bun/Playwright (star = ' ...'): ... on normal tests, path shows throw for throw-tests
251
251
  const [inlineNames] = runner([])(registerModule(noopCtx, './a.f.ts', proof, ' ...'));
252
252
  assertEq(inlineNames.length, 2);
253
- assertEq(inlineNames[0], 'import("./a.f.ts").proof.ok() ...');
253
+ assert(inlineNames[0] === 'import("./a.f.ts").proof.ok() ...');
254
254
  assertEq(inlineNames[1], 'import("./a.f.ts").proof.throw.a()');
255
255
  };
256
256
  // direct unit tests for the pure path-format helpers
@@ -15,24 +15,18 @@ Object.getOwnPropertyDescriptor({ [name]: () => undefined }, name).value;
15
15
  export const proof = {
16
16
  a: () => {
17
17
  const x = f('1');
18
- if (x !== '["1"]') {
19
- throw x;
20
- }
18
+ assertEq(x, '["1"]');
21
19
  },
22
20
  b: () => {
23
21
  // exercises toInit: terminal returns empty output and loops back to init
24
22
  const result = init(terminal);
25
- if (result[0].length !== 0) {
26
- throw result[0];
27
- }
23
+ assertEq(result[0].length, 0, result[0]);
28
24
  },
29
25
  c: () => {
30
26
  // exercises unexpectedSymbol: next state after a token returns an error message
31
27
  const next = init(one('1'))[1];
32
28
  const result = next(42);
33
- if (result[0][0] !== 'unexpected symbol 42') {
34
- throw result[0][0];
35
- }
29
+ assertEq(result[0][0], 'unexpected symbol 42');
36
30
  },
37
31
  fn: () => {
38
32
  const o = {
@@ -40,58 +34,42 @@ export const proof = {
40
34
  };
41
35
  const f = o["hello world!"];
42
36
  const { name } = f;
43
- if (name !== "hello world!") {
44
- throw name;
45
- }
37
+ assertEq(name, "hello world!");
46
38
  //
47
39
  const f1 = { ["boring"]: () => undefined }["boring"];
48
- if (f1.name !== "boring") {
49
- throw f1.name;
50
- }
40
+ assertEq(f1.name, "boring");
51
41
  //
52
42
  const x = fn(() => undefined, "hello").name;
53
- if (x !== "") {
54
- throw x;
55
- }
43
+ assertEq(x, "");
56
44
  //
57
45
  const m = withName("boring2").name;
58
- if (m !== "boring2") {
59
- throw m;
60
- }
46
+ assertEq(m, "boring2");
61
47
  //
62
48
  const a = function x() { return undefined; };
63
- if (a.name !== "x") {
64
- throw a.name;
65
- }
49
+ assertEq(a.name, "x");
66
50
  },
67
51
  //
68
52
  f1: () => {
69
53
  const m1 = () => undefined;
70
- if (m1.name !== "m1") {
71
- throw m1.name;
72
- }
54
+ assertEq(m1.name, "m1");
73
55
  },
74
56
  //
75
57
  f2: () => {
76
58
  const m11 = (() => undefined);
77
- if (m11.name !== "m11") {
78
- throw m11.name;
79
- }
59
+ assertEq(m11.name, "m11");
80
60
  },
81
61
  //
82
62
  f3: () => {
83
63
  const m2 = true ? () => undefined : () => undefined;
84
64
  // for `bun` it is `m2`:
85
- // if (m2.name !== "") { throw m2.name }
65
+ // assertEq(m2.name, "")
86
66
  // see also https://github.com/oven-sh/bun/issues/20398
87
67
  },
88
68
  f4: () => {
89
69
  const id = (i) => i;
90
70
  const f = id(() => undefined);
91
71
  // for `bun` it is `m2`:
92
- if (f.name !== "") {
93
- throw f.name;
94
- }
72
+ assertEq(f.name, "");
95
73
  },
96
74
  chars: {
97
75
  whitespace: () => {
@@ -5,6 +5,7 @@ import { stringify } from '../media/json/module.f.js';
5
5
  import { identity } from '../types/function/module.f.js';
6
6
  import { toArray } from '../types/list/module.f.js';
7
7
  import { stringToList } from '../text/utf16/module.f.js';
8
+ import { assertEq } from '../asserts/module.f.js';
8
9
  const stringifyIdentity = stringify(identity);
9
10
  const buildDfa = () => {
10
11
  const lowercaseAlpha = toRange('az');
@@ -85,9 +86,7 @@ export const proof = {
85
86
  '["id"]'
86
87
  ];
87
88
  const expectedResult = stringifyIdentity(expectedOutput);
88
- if (result !== expectedResult) {
89
- throw result;
90
- }
89
+ assertEq(result, expectedResult);
91
90
  },
92
91
  () => {
93
92
  const dfa = buildDfa();
@@ -99,9 +98,7 @@ export const proof = {
99
98
  '["float"]'
100
99
  ];
101
100
  const expectedResult = stringifyIdentity(expectedOutput);
102
- if (result !== expectedResult) {
103
- throw result;
104
- }
101
+ assertEq(result, expectedResult);
105
102
  },
106
103
  () => {
107
104
  const dfa = buildDfa();
@@ -112,9 +109,7 @@ export const proof = {
112
109
  '[]'
113
110
  ];
114
111
  const expectedResult = stringifyIdentity(expectedOutput);
115
- if (result !== expectedResult) {
116
- throw result;
117
- }
112
+ assertEq(result, expectedResult);
118
113
  },
119
114
  () => {
120
115
  const dfa = buildDfa();
@@ -125,9 +120,7 @@ export const proof = {
125
120
  '[]'
126
121
  ];
127
122
  const expectedResult = stringifyIdentity(expectedOutput);
128
- if (result !== expectedResult) {
129
- throw result;
130
- }
123
+ assertEq(result, expectedResult);
131
124
  }
132
125
  ]
133
126
  };
@@ -166,6 +166,13 @@ export type ToolEntry<O extends Operation> = {
166
166
  * @returns A `ToolEntry` ready to be added to a registry
167
167
  */
168
168
  export declare const toolEntry: <T extends Type, O extends Operation>(name: string, description: string, inputRtti: T, handle: (args: Ts<T>) => Effect<O, ToolsCallResult>) => ToolEntry<O>;
169
+ /**
170
+ * Helper to create a successful single-text-block tool result.
171
+ *
172
+ * @param text - The text to return to the client
173
+ * @returns A `ToolsCallResult` with the text content
174
+ */
175
+ export declare const okResult: (text: string) => ToolsCallResult;
169
176
  /**
170
177
  * Helper to create a tool-level error result with plain text explanation.
171
178
  *
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * Each schema is both a runtime decoder (`validate(schema)`) and a static
11
11
  * TypeScript type (`Ts<typeof schema>`). Transport framing (stdio) and the
12
- * JSON-RPC dispatcher are in `fs/media/json/rpc/module.f.ts`.
12
+ * JSON-RPC dispatcher are in `fjs/media/json/rpc/module.f.ts`.
13
13
  *
14
14
  * @module
15
15
  */
@@ -125,13 +125,20 @@ export const toolEntry = (name, description, inputRtti, handle) => ({
125
125
  : handle(r);
126
126
  }
127
127
  });
128
+ /**
129
+ * Helper to create a successful single-text-block tool result.
130
+ *
131
+ * @param text - The text to return to the client
132
+ * @returns A `ToolsCallResult` with the text content
133
+ */
134
+ export const okResult = (text) => ({ content: [{ type: 'text', text }] });
128
135
  /**
129
136
  * Helper to create a tool-level error result with plain text explanation.
130
137
  *
131
138
  * @param text - The error message to return to the client
132
139
  * @returns A `ToolsCallResult` with `isError: true` and the text explanation
133
140
  */
134
- export const errorResult = (text) => ({ content: [{ type: 'text', text }], isError: true });
141
+ export const errorResult = (text) => ({ ...okResult(text), isError: true });
135
142
  /**
136
143
  * Builds `McpHandlers` from a registry of tool entries.
137
144
  *
@@ -49,16 +49,16 @@ const initNotif = { jsonrpc: '2.0', method: 'notifications/initialized' };
49
49
  export const proof = {
50
50
  lifecycle: {
51
51
  initialStateIsUninitialized: () => {
52
- assertEq(uninitializedState[0], 'uninitialized');
52
+ assert(uninitializedState[0] === 'uninitialized');
53
53
  },
54
54
  initializeTransitionsToInitializing: () => {
55
55
  const [, newState] = step1(config)(initMsg);
56
- assertEq(newState[0], 'initializing');
56
+ assert(newState[0] === 'initializing');
57
57
  },
58
58
  initializedNotificationTransitionsToInitialized: () => {
59
59
  const [resp, newState] = step2(config)(initMsg)(initNotif);
60
60
  assertEq(resp, null);
61
- assertEq(newState[0], 'initialized');
61
+ assert(newState[0] === 'initialized');
62
62
  },
63
63
  initializeReturnsResult: () => {
64
64
  const [resp] = step1(config)(initMsg);
@@ -69,12 +69,12 @@ export const proof = {
69
69
  initializeWithBadParamsReturnsInvalidParams: () => {
70
70
  const bad = { jsonrpc: '2.0', method: 'initialize', id: 2, params: { wrong: true } };
71
71
  const [resp, newState] = step1(config)(bad);
72
- assertEq(newState[0], 'uninitialized');
72
+ assert(newState[0] === 'uninitialized');
73
73
  assertEq(resp.error.code, -32602);
74
74
  },
75
75
  notificationBeforeInitReturnNull: () => {
76
76
  const [resp, newState] = step1(config)(initNotif);
77
- assertEq(newState[0], 'uninitialized');
77
+ assert(newState[0] === 'uninitialized');
78
78
  assertEq(resp, null);
79
79
  },
80
80
  unknownNotificationReturnNull: () => {
@@ -84,19 +84,19 @@ export const proof = {
84
84
  },
85
85
  doubleInitializeReturnsInvalidRequest: () => {
86
86
  const [resp, newState] = step2(config)(initMsg)(initMsg);
87
- assertEq(newState[0], 'initializing');
87
+ assert(newState[0] === 'initializing');
88
88
  assertEq(resp.error.code, -32600);
89
89
  },
90
90
  pingBeforeInitSucceeds: () => {
91
91
  const msg = { jsonrpc: '2.0', method: 'ping', id: 11 };
92
92
  const [resp, newState] = step1(config)(msg);
93
- assertEq(newState[0], 'uninitialized');
93
+ assert(newState[0] === 'uninitialized');
94
94
  assert(!('error' in resp));
95
95
  },
96
96
  pingDuringInitializingSucceeds: () => {
97
97
  const msg = { jsonrpc: '2.0', method: 'ping', id: 12 };
98
98
  const [resp, newState] = step2(config)(initMsg)(msg);
99
- assertEq(newState[0], 'initializing');
99
+ assert(newState[0] === 'initializing');
100
100
  assert(!('error' in resp));
101
101
  },
102
102
  pingAfterInitSucceeds: () => {
@@ -118,24 +118,24 @@ export const proof = {
118
118
  const notif = { jsonrpc: '2.0', method: 'notifications/initialized', params: {} };
119
119
  const [resp, newState] = step2(config)(initMsg)(notif);
120
120
  assertEq(resp, null);
121
- assertEq(newState[0], 'initialized');
121
+ assert(newState[0] === 'initialized');
122
122
  },
123
123
  initializedNotificationBadParamsIgnored: () => {
124
124
  const notif = { jsonrpc: '2.0', method: 'notifications/initialized', params: 1 };
125
125
  const [resp, newState] = step2(config)(initMsg)(notif);
126
126
  assertEq(resp, null);
127
- assertEq(newState[0], 'initializing');
127
+ assert(newState[0] === 'initializing');
128
128
  },
129
129
  methodBeforeInitReturnsNotInitialized: () => {
130
130
  const msg = { jsonrpc: '2.0', method: 'tools/list', id: 3 };
131
131
  const [resp, newState] = step1(config)(msg);
132
- assertEq(newState[0], 'uninitialized');
132
+ assert(newState[0] === 'uninitialized');
133
133
  assertEq(resp.error.code, notInitialized.code);
134
134
  },
135
135
  methodDuringInitializingReturnsNotInitialized: () => {
136
136
  const msg = { jsonrpc: '2.0', method: 'tools/list', id: 16 };
137
137
  const [resp, newState] = step2(config)(initMsg)(msg);
138
- assertEq(newState[0], 'initializing');
138
+ assert(newState[0] === 'initializing');
139
139
  assertEq(resp.error.code, notInitialized.code);
140
140
  },
141
141
  invalidEnvelopeReturnsInvalidRequest: () => {
@@ -2,10 +2,10 @@
2
2
  * stdio transport for JSON-RPC / MCP servers.
3
3
  *
4
4
  * `stdioTransport` wraps a step function — the `mcpStep`-shaped
5
- * `(value) => Effect<O, Response | null>` from `fs/mcp/module.f.ts` — in the
5
+ * `(value) => Effect<O, Response | null>` from `fjs/mcp/module.f.ts` — in the
6
6
  * canonical read → parse → dispatch → write loop, expressed as a recursive
7
7
  * effect so it stays in the pure effect model and is fully testable against a
8
- * mock stdin / stdout (see `fs/effects/node/virtual`) with no real process.
8
+ * mock stdin / stdout (see `fjs/effects/node/virtual`) with no real process.
9
9
  *
10
10
  * The loop only consumes `Read` (stdin, one byte at a time, via the pure
11
11
  * `readLine` combinator) and emits `Write` (stdout) on top of whatever `O` the