functionalscript 0.37.0 → 0.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. package/README.md +1 -1
  2. package/{fs → fjs}/asn.1/proof.f.js +32 -94
  3. package/fjs/asserts/module.f.d.ts +36 -0
  4. package/fjs/asserts/module.f.js +39 -0
  5. package/fjs/asserts/proof.f.d.ts +11 -0
  6. package/fjs/asserts/proof.f.js +18 -0
  7. package/{fs → fjs}/base_n/proof.f.js +12 -36
  8. package/{fs → fjs}/basen/base64/proof.f.d.ts +1 -0
  9. package/{fs → fjs}/basen/base64/proof.f.js +15 -1
  10. package/{fs → fjs}/basen/cbase32/proof.f.js +15 -42
  11. package/fjs/bnf/data/module.f.d.ts +52 -0
  12. package/{fs → fjs}/bnf/data/module.f.js +53 -3
  13. package/{fs → fjs}/bnf/data/proof.f.d.ts +1 -0
  14. package/{fs → fjs}/bnf/data/proof.f.js +54 -19
  15. package/{fs → fjs}/bnf/descent/module.f.d.ts +4 -14
  16. package/fjs/bnf/descent/module.f.js +124 -0
  17. package/{fs → fjs}/bnf/descent/proof.f.d.ts +1 -0
  18. package/{fs → fjs}/bnf/descent/proof.f.js +55 -24
  19. package/{fs → fjs}/bnf/ll1/module.f.d.ts +4 -4
  20. package/{fs → fjs}/bnf/ll1/module.f.js +7 -5
  21. package/{fs → fjs}/bnf/ll1/proof.f.d.ts +1 -0
  22. package/{fs → fjs}/bnf/ll1/proof.f.js +27 -10
  23. package/{fs → fjs}/bnf/module.f.d.ts +19 -5
  24. package/{fs → fjs}/bnf/module.f.js +10 -11
  25. package/fjs/bnf/proof.f.js +69 -0
  26. package/{fs → fjs}/bnf/testlib.f.js +2 -2
  27. package/fjs/bnf/token_symbol/module.f.d.ts +38 -0
  28. package/fjs/bnf/token_symbol/module.f.js +48 -0
  29. package/fjs/bnf/token_symbol/proof.f.d.ts +10 -0
  30. package/fjs/bnf/token_symbol/proof.f.js +37 -0
  31. package/{fs → fjs}/cas/cli/module.f.js +6 -9
  32. package/{fs → fjs}/cas/cli/proof.f.d.ts +4 -1
  33. package/{fs → fjs}/cas/cli/proof.f.js +29 -66
  34. package/fjs/cas/evo/mcp/module.f.d.ts +27 -0
  35. package/fjs/cas/evo/mcp/module.f.js +94 -0
  36. package/fjs/cas/evo/mcp/proof.f.d.ts +11 -0
  37. package/fjs/cas/evo/mcp/proof.f.js +126 -0
  38. package/fjs/cas/evo/module.f.d.ts +202 -0
  39. package/fjs/cas/evo/module.f.js +421 -0
  40. package/fjs/cas/evo/proof.f.d.ts +39 -0
  41. package/fjs/cas/evo/proof.f.js +572 -0
  42. package/fjs/cas/mcp/module.f.d.ts +49 -0
  43. package/{fs → fjs}/cas/mcp/module.f.js +61 -81
  44. package/{fs → fjs}/cas/mcp/proof.f.d.ts +4 -1
  45. package/{fs → fjs}/cas/mcp/proof.f.js +45 -17
  46. package/{fs → fjs}/cas/module.f.d.ts +10 -0
  47. package/{fs → fjs}/cas/module.f.js +89 -36
  48. package/fjs/cas/proof.f.d.ts +18 -0
  49. package/fjs/cas/proof.f.js +305 -0
  50. package/{fs → fjs}/ci/bun/module.f.js +3 -3
  51. package/{fs → fjs}/ci/common/module.f.d.ts +1 -2
  52. package/{fs → fjs}/ci/common/module.f.js +1 -5
  53. package/{fs → fjs}/ci/config/module.f.d.ts +8 -8
  54. package/{fs → fjs}/ci/config/module.f.js +8 -8
  55. package/{fs → fjs}/ci/deno/module.f.js +3 -3
  56. package/{fs → fjs}/ci/module.f.js +3 -4
  57. package/{fs → fjs}/ci/node/module.f.js +11 -9
  58. package/{fs → fjs}/ci/proof.f.js +16 -9
  59. package/{fs → fjs}/ci/rust/module.f.js +9 -1
  60. package/{fs → fjs}/cli/module.f.js +2 -2
  61. package/{fs → fjs}/cli/proof.f.js +22 -63
  62. package/{fs → fjs}/common/monoid/module.f.d.ts +46 -2
  63. package/fjs/common/monoid/module.f.js +88 -0
  64. package/fjs/common/monoid/proof.f.d.ts +9 -0
  65. package/fjs/common/monoid/proof.f.js +48 -0
  66. package/{fs → fjs}/crypto/hmac/proof.f.js +4 -12
  67. package/fjs/crypto/pow/proof.f.js +111 -0
  68. package/{fs → fjs}/crypto/secp/proof.f.js +12 -33
  69. package/{fs → fjs}/crypto/sha2/proof.f.js +18 -49
  70. package/{fs → fjs}/crypto/sign/module.f.d.ts +0 -5
  71. package/{fs → fjs}/crypto/sign/module.f.js +7 -4
  72. package/{fs → fjs}/crypto/sign/proof.f.js +36 -105
  73. package/{fs → fjs}/crypto/vdf/proof.f.js +22 -63
  74. package/{fs → fjs}/dev/module.f.js +25 -25
  75. package/{fs → fjs}/dev/package_json/proof.f.js +7 -7
  76. package/{fs → fjs}/dev/proof.f.js +2 -4
  77. package/{fs → fjs}/djs/ast/proof.f.js +4 -12
  78. package/{fs → fjs}/djs/module.f.js +5 -8
  79. package/{fs → fjs}/djs/parser/module.f.d.ts +8 -0
  80. package/{fs → fjs}/djs/parser/module.f.js +37 -0
  81. package/{fs → fjs}/djs/parser/proof.f.js +138 -400
  82. package/{fs → fjs}/djs/proof.f.js +13 -36
  83. package/{fs → fjs}/djs/serializer/proof.f.js +14 -39
  84. package/fjs/djs/tokenizer/module.f.d.ts +24 -0
  85. package/fjs/djs/tokenizer/module.f.js +472 -0
  86. package/{fs/djs/tokenizer-new → fjs/djs/tokenizer}/proof.f.d.ts +4 -3
  87. package/{fs/djs/tokenizer-new → fjs/djs/tokenizer}/proof.f.js +446 -445
  88. package/{fs → fjs}/djs/transpiler/module.f.js +6 -6
  89. package/{fs → fjs}/djs/transpiler/proof.f.d.ts +3 -0
  90. package/{fs → fjs}/djs/transpiler/proof.f.js +29 -30
  91. package/fjs/effects/eff/module.f.d.ts +72 -0
  92. package/fjs/effects/eff/module.f.js +46 -0
  93. package/fjs/effects/eff/proof.f.d.ts +11 -0
  94. package/fjs/effects/eff/proof.f.js +58 -0
  95. package/{fs → fjs}/effects/list/module.f.d.ts +11 -5
  96. package/{fs → fjs}/effects/list/module.f.js +2 -1
  97. package/{fs → fjs}/effects/memory/proof.f.js +15 -29
  98. package/fjs/effects/module.f.d.ts +388 -0
  99. package/fjs/effects/module.f.js +288 -0
  100. package/{fs → fjs}/effects/node/memory/proof.js +7 -13
  101. package/{fs → fjs}/effects/node/module.d.ts +1 -1
  102. package/{fs → fjs}/effects/node/module.f.d.ts +2 -2
  103. package/{fs → fjs}/effects/node/module.f.js +9 -11
  104. package/{fs → fjs}/effects/node/module.js +3 -3
  105. package/{fs → fjs}/effects/node/proof.f.d.ts +1 -0
  106. package/{fs → fjs}/effects/node/proof.f.js +121 -299
  107. package/{fs → fjs}/effects/node/virtual/proof.f.d.ts +1 -0
  108. package/{fs → fjs}/effects/node/virtual/proof.f.js +36 -29
  109. package/fjs/effects/proof.f.d.ts +51 -0
  110. package/fjs/effects/proof.f.js +178 -0
  111. package/{fs → fjs}/emergent_testing/module.f.js +55 -39
  112. package/{fs → fjs}/emergent_testing/proof.f.d.ts +4 -0
  113. package/{fs → fjs}/emergent_testing/proof.f.js +60 -27
  114. package/{fs → fjs}/fsc/proof.f.js +12 -34
  115. package/{fs → fjs}/fsm/proof.f.js +5 -12
  116. package/{fs → fjs}/mcp/module.f.d.ts +7 -0
  117. package/{fs → fjs}/mcp/module.f.js +17 -10
  118. package/{fs → fjs}/mcp/proof.f.js +17 -16
  119. package/{fs → fjs}/mcp/stdio/module.f.d.ts +4 -4
  120. package/{fs → fjs}/mcp/stdio/module.f.js +14 -14
  121. package/{fs → fjs}/media/html/proof.f.js +12 -33
  122. package/{fs → fjs}/media/json/parser/module.f.d.ts +5 -0
  123. package/{fs → fjs}/media/json/parser/module.f.js +14 -0
  124. package/{fs → fjs}/media/json/parser/proof.f.js +39 -114
  125. package/{fs → fjs}/media/json/rpc/module.f.js +1 -1
  126. package/{fs → fjs}/media/json/schema/module.f.d.ts +2 -2
  127. package/{fs → fjs}/media/json/schema/module.f.js +23 -39
  128. package/{fs → fjs}/media/json/schema/proof.f.js +3 -6
  129. package/{fs → fjs}/media/json/serializer/proof.f.js +10 -27
  130. package/{fs → fjs}/media/module.f.d.ts +6 -6
  131. package/{fs → fjs}/media/module.f.js +3 -4
  132. package/{fs → fjs}/media/proof.f.js +5 -4
  133. package/{fs → fjs}/media/revision/module.f.d.ts +31 -4
  134. package/{fs → fjs}/media/revision/module.f.js +35 -23
  135. package/{fs → fjs}/media/revision/proof.f.d.ts +10 -8
  136. package/fjs/media/revision/proof.f.js +140 -0
  137. package/{fs → fjs}/media/type/module.f.js +2 -2
  138. package/{fs → fjs}/media/type/proof.f.js +8 -15
  139. package/{fs → fjs}/module.f.js +5 -9
  140. package/{fs → fjs}/path/proof.f.js +27 -78
  141. package/{fs → fjs}/proof.f.js +2 -0
  142. package/{fs → fjs}/sul/id/proof.f.js +7 -21
  143. package/{fs → fjs}/sul/level/hash/proof.f.js +5 -5
  144. package/{fs → fjs}/sul/level/literal/proof.f.js +12 -26
  145. package/fjs/text/ascii/proof.f.d.ts +6 -0
  146. package/{fs → fjs}/text/ascii/proof.f.js +4 -14
  147. package/{fs → fjs}/text/code_point/module.f.js +10 -10
  148. package/{fs → fjs}/text/proof.f.js +4 -9
  149. package/{fs → fjs}/text/sgr/proof.f.js +6 -15
  150. package/{fs → fjs}/text/utf16/module.f.js +1 -1
  151. package/{fs → fjs}/text/utf16/proof.f.js +23 -66
  152. package/{fs → fjs}/text/utf8/proof.f.js +56 -125
  153. package/{fs → fjs}/types/array/proof.f.js +18 -52
  154. package/fjs/types/bigfloat/proof.f.js +217 -0
  155. package/{fs → fjs}/types/bigint/module.f.js +4 -3
  156. package/{fs → fjs}/types/bigint/proof.f.js +49 -145
  157. package/{fs → fjs}/types/bit_vec/module.f.js +5 -15
  158. package/{fs → fjs}/types/bit_vec/proof.f.js +72 -214
  159. package/{fs → fjs}/types/btree/find/proof.f.js +23 -66
  160. package/{fs → fjs}/types/btree/proof.f.js +5 -12
  161. package/{fs → fjs}/types/btree/remove/module.f.d.ts +5 -0
  162. package/{fs → fjs}/types/btree/remove/module.f.js +12 -0
  163. package/{fs → fjs}/types/btree/remove/proof.f.d.ts +2 -0
  164. package/{fs → fjs}/types/btree/remove/proof.f.js +83 -230
  165. package/{fs → fjs}/types/btree/set/module.f.js +5 -2
  166. package/{fs → fjs}/types/btree/set/proof.f.js +35 -24
  167. package/{fs → fjs}/types/byte_set/proof.f.js +22 -63
  168. package/{fs → fjs}/types/function/compare/proof.f.js +13 -36
  169. package/{fs → fjs}/types/function/operator/proof.f.js +17 -48
  170. package/{fs → fjs}/types/function/proof.f.js +2 -3
  171. package/{fs → fjs}/types/list/module.f.d.ts +21 -0
  172. package/{fs → fjs}/types/list/module.f.js +17 -0
  173. package/{fs → fjs}/types/list/proof.f.d.ts +1 -0
  174. package/{fs → fjs}/types/list/proof.f.js +79 -164
  175. package/{fs → fjs}/types/map/proof.f.js +4 -12
  176. package/{fs → fjs}/types/nibble_set/proof.f.js +16 -45
  177. package/{fs → fjs}/types/nominal/proof.f.js +5 -10
  178. package/fjs/types/nullable/proof.f.js +29 -0
  179. package/{fs → fjs}/types/number/module.f.js +2 -1
  180. package/{fs → fjs}/types/number/proof.f.js +9 -24
  181. package/{fs → fjs}/types/object/proof.f.js +3 -6
  182. package/{fs → fjs}/types/patricia_trie/proof.f.js +21 -21
  183. package/{fs → fjs}/types/prime_field/module.f.js +2 -7
  184. package/{fs → fjs}/types/range/module.f.d.ts +1 -1
  185. package/fjs/types/range/module.f.js +2 -0
  186. package/fjs/types/range/proof.f.js +9 -0
  187. package/{fs → fjs}/types/range_map/proof.f.js +28 -81
  188. package/{fs → fjs}/types/result/proof.f.d.ts +3 -2
  189. package/fjs/types/result/proof.f.js +31 -0
  190. package/{fs → fjs}/types/rtti/common/module.f.d.ts +36 -1
  191. package/{fs → fjs}/types/rtti/common/module.f.js +44 -0
  192. package/fjs/types/rtti/common/proof.f.d.ts +8 -0
  193. package/fjs/types/rtti/common/proof.f.js +51 -0
  194. package/{fs → fjs}/types/rtti/parse/module.f.js +13 -22
  195. package/{fs → fjs}/types/rtti/parse/proof.f.js +7 -18
  196. package/{fs → fjs}/types/rtti/ts/module.f.d.ts +10 -4
  197. package/{fs → fjs}/types/rtti/validate/module.f.js +8 -29
  198. package/{fs → fjs}/types/rtti/validate/proof.f.js +4 -9
  199. package/{fs → fjs}/types/sorted_list/proof.f.js +8 -21
  200. package/{fs → fjs}/types/sorted_set/proof.f.js +14 -39
  201. package/{fs → fjs}/types/string/module.f.js +10 -2
  202. package/fjs/types/string/proof.f.js +77 -0
  203. package/fjs/types/string_set/proof.f.js +43 -0
  204. package/{fs → fjs}/types/ts/proof.f.js +15 -42
  205. package/{fs → fjs}/types/uint8array/module.f.js +7 -7
  206. package/{fs → fjs}/types/uint8array/proof.f.d.ts +4 -1
  207. package/{fs → fjs}/types/uint8array/proof.f.js +7 -7
  208. package/{fs → fjs}/website/module.f.js +2 -3
  209. package/{fs → fjs}/website/proof.f.js +3 -6
  210. package/package.json +8 -8
  211. package/fs/asserts/module.f.d.ts +0 -4
  212. package/fs/asserts/module.f.js +0 -9
  213. package/fs/asserts/proof.f.d.ts +0 -8
  214. package/fs/asserts/proof.f.js +0 -51
  215. package/fs/bnf/data/module.f.d.ts +0 -30
  216. package/fs/bnf/descent/module.f.js +0 -119
  217. package/fs/bnf/proof.f.js +0 -104
  218. package/fs/cas/mcp/module.f.d.ts +0 -36
  219. package/fs/cas/proof.f.d.ts +0 -20
  220. package/fs/cas/proof.f.js +0 -294
  221. package/fs/common/monoid/module.f.js +0 -44
  222. package/fs/common/monoid/proof.f.d.ts +0 -4
  223. package/fs/common/monoid/proof.f.js +0 -27
  224. package/fs/crypto/pow/proof.f.js +0 -161
  225. package/fs/djs/tokenizer/module.f.d.ts +0 -12
  226. package/fs/djs/tokenizer/module.f.js +0 -62
  227. package/fs/djs/tokenizer/proof.f.d.ts +0 -7
  228. package/fs/djs/tokenizer/proof.f.js +0 -543
  229. package/fs/djs/tokenizer-new/module.f.d.ts +0 -3
  230. package/fs/djs/tokenizer-new/module.f.js +0 -155
  231. package/fs/effects/module.f.d.ts +0 -106
  232. package/fs/effects/module.f.js +0 -80
  233. package/fs/effects/proof.f.d.ts +0 -25
  234. package/fs/effects/proof.f.js +0 -115
  235. package/fs/media/revision/proof.f.js +0 -119
  236. package/fs/text/ascii/proof.f.d.ts +0 -4
  237. package/fs/types/bigfloat/proof.f.js +0 -348
  238. package/fs/types/nullable/proof.f.js +0 -50
  239. package/fs/types/range/module.f.js +0 -2
  240. package/fs/types/range/proof.f.js +0 -18
  241. package/fs/types/result/proof.f.js +0 -52
  242. package/fs/types/string/proof.f.js +0 -118
  243. package/fs/types/string_set/proof.f.js +0 -82
  244. /package/{fs → fjs}/asn.1/module.f.d.ts +0 -0
  245. /package/{fs → fjs}/asn.1/module.f.js +0 -0
  246. /package/{fs → fjs}/asn.1/proof.f.d.ts +0 -0
  247. /package/{fs → fjs}/base_n/module.f.d.ts +0 -0
  248. /package/{fs → fjs}/base_n/module.f.js +0 -0
  249. /package/{fs → fjs}/base_n/proof.f.d.ts +0 -0
  250. /package/{fs → fjs}/basen/base128/module.f.d.ts +0 -0
  251. /package/{fs → fjs}/basen/base128/module.f.js +0 -0
  252. /package/{fs → fjs}/basen/base128/proof.f.d.ts +0 -0
  253. /package/{fs → fjs}/basen/base128/proof.f.js +0 -0
  254. /package/{fs → fjs}/basen/base64/module.f.d.ts +0 -0
  255. /package/{fs → fjs}/basen/base64/module.f.js +0 -0
  256. /package/{fs → fjs}/basen/cbase32/module.f.d.ts +0 -0
  257. /package/{fs → fjs}/basen/cbase32/module.f.js +0 -0
  258. /package/{fs → fjs}/basen/cbase32/proof.f.d.ts +0 -0
  259. /package/{fs → fjs}/bnf/proof.f.d.ts +0 -0
  260. /package/{fs → fjs}/bnf/testlib.f.d.ts +0 -0
  261. /package/{fs → fjs}/cas/cli/module.f.d.ts +0 -0
  262. /package/{fs → fjs}/ci/bun/module.f.d.ts +0 -0
  263. /package/{fs → fjs}/ci/deno/module.f.d.ts +0 -0
  264. /package/{fs → fjs}/ci/module.f.d.ts +0 -0
  265. /package/{fs → fjs}/ci/node/module.f.d.ts +0 -0
  266. /package/{fs → fjs}/ci/playwright/module.f.d.ts +0 -0
  267. /package/{fs → fjs}/ci/playwright/module.f.js +0 -0
  268. /package/{fs → fjs}/ci/proof.f.d.ts +0 -0
  269. /package/{fs → fjs}/ci/rust/module.f.d.ts +0 -0
  270. /package/{fs → fjs}/cli/module.f.d.ts +0 -0
  271. /package/{fs → fjs}/cli/proof.f.d.ts +0 -0
  272. /package/{fs → fjs}/crypto/hmac/module.f.d.ts +0 -0
  273. /package/{fs → fjs}/crypto/hmac/module.f.js +0 -0
  274. /package/{fs → fjs}/crypto/hmac/proof.f.d.ts +0 -0
  275. /package/{fs → fjs}/crypto/pow/module.f.d.ts +0 -0
  276. /package/{fs → fjs}/crypto/pow/module.f.js +0 -0
  277. /package/{fs → fjs}/crypto/pow/proof.f.d.ts +0 -0
  278. /package/{fs → fjs}/crypto/secp/module.f.d.ts +0 -0
  279. /package/{fs → fjs}/crypto/secp/module.f.js +0 -0
  280. /package/{fs → fjs}/crypto/secp/proof.f.d.ts +0 -0
  281. /package/{fs → fjs}/crypto/sha2/module.f.d.ts +0 -0
  282. /package/{fs → fjs}/crypto/sha2/module.f.js +0 -0
  283. /package/{fs → fjs}/crypto/sha2/proof.f.d.ts +0 -0
  284. /package/{fs → fjs}/crypto/sign/proof.f.d.ts +0 -0
  285. /package/{fs → fjs}/crypto/vdf/module.f.d.ts +0 -0
  286. /package/{fs → fjs}/crypto/vdf/module.f.js +0 -0
  287. /package/{fs → fjs}/crypto/vdf/proof.f.d.ts +0 -0
  288. /package/{fs → fjs}/dev/module.f.d.ts +0 -0
  289. /package/{fs → fjs}/dev/package_json/module.f.d.ts +0 -0
  290. /package/{fs → fjs}/dev/package_json/module.f.js +0 -0
  291. /package/{fs → fjs}/dev/package_json/proof.f.d.ts +0 -0
  292. /package/{fs → fjs}/dev/proof.f.d.ts +0 -0
  293. /package/{fs → fjs}/djs/ast/module.f.d.ts +0 -0
  294. /package/{fs → fjs}/djs/ast/module.f.js +0 -0
  295. /package/{fs → fjs}/djs/ast/proof.f.d.ts +0 -0
  296. /package/{fs → fjs}/djs/examples/input.f.d.ts +0 -0
  297. /package/{fs → fjs}/djs/examples/input.f.js +0 -0
  298. /package/{fs → fjs}/djs/examples/m.f.d.ts +0 -0
  299. /package/{fs → fjs}/djs/examples/m.f.js +0 -0
  300. /package/{fs → fjs}/djs/module.f.d.ts +0 -0
  301. /package/{fs → fjs}/djs/parser/proof.f.d.ts +0 -0
  302. /package/{fs → fjs}/djs/proof.f.d.ts +0 -0
  303. /package/{fs → fjs}/djs/serializer/module.f.d.ts +0 -0
  304. /package/{fs → fjs}/djs/serializer/module.f.js +0 -0
  305. /package/{fs → fjs}/djs/serializer/proof.f.d.ts +0 -0
  306. /package/{fs → fjs}/djs/transpiler/module.f.d.ts +0 -0
  307. /package/{fs → fjs}/effects/memory/module.f.d.ts +0 -0
  308. /package/{fs → fjs}/effects/memory/module.f.js +0 -0
  309. /package/{fs → fjs}/effects/memory/proof.f.d.ts +0 -0
  310. /package/{fs → fjs}/effects/mock/module.f.d.ts +0 -0
  311. /package/{fs → fjs}/effects/mock/module.f.js +0 -0
  312. /package/{fs → fjs}/effects/module.d.ts +0 -0
  313. /package/{fs → fjs}/effects/module.js +0 -0
  314. /package/{fs → fjs}/effects/node/memory/module.d.ts +0 -0
  315. /package/{fs → fjs}/effects/node/memory/module.js +0 -0
  316. /package/{fs → fjs}/effects/node/memory/proof.d.ts +0 -0
  317. /package/{fs → fjs}/effects/node/virtual/module.f.d.ts +0 -0
  318. /package/{fs → fjs}/effects/node/virtual/module.f.js +0 -0
  319. /package/{fs → fjs}/emergent_testing/all.test.d.ts +0 -0
  320. /package/{fs → fjs}/emergent_testing/all.test.js +0 -0
  321. /package/{fs → fjs}/emergent_testing/example.f.d.ts +0 -0
  322. /package/{fs → fjs}/emergent_testing/example.f.js +0 -0
  323. /package/{fs → fjs}/emergent_testing/module.f.d.ts +0 -0
  324. /package/{fs → fjs}/emergent_testing/scenarios/all.d.ts +0 -0
  325. /package/{fs → fjs}/emergent_testing/scenarios/all.js +0 -0
  326. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.fail.d.ts +0 -0
  327. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.fail.js +0 -0
  328. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.pass.d.ts +0 -0
  329. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.pass.js +0 -0
  330. /package/{fs → fjs}/emergent_testing/scenarios/async.fail.d.ts +0 -0
  331. /package/{fs → fjs}/emergent_testing/scenarios/async.fail.js +0 -0
  332. /package/{fs → fjs}/emergent_testing/scenarios/async.pass.d.ts +0 -0
  333. /package/{fs → fjs}/emergent_testing/scenarios/async.pass.js +0 -0
  334. /package/{fs → fjs}/emergent_testing/scenarios/fail.fail.d.ts +0 -0
  335. /package/{fs → fjs}/emergent_testing/scenarios/fail.fail.js +0 -0
  336. /package/{fs → fjs}/emergent_testing/scenarios/return-value.pass.d.ts +0 -0
  337. /package/{fs → fjs}/emergent_testing/scenarios/return-value.pass.js +0 -0
  338. /package/{fs → fjs}/emergent_testing/scenarios/thenable.pass.d.ts +0 -0
  339. /package/{fs → fjs}/emergent_testing/scenarios/thenable.pass.js +0 -0
  340. /package/{fs → fjs}/emergent_testing/scenarios/thenable2.pass.d.ts +0 -0
  341. /package/{fs → fjs}/emergent_testing/scenarios/thenable2.pass.js +0 -0
  342. /package/{fs → fjs}/emergent_testing/scenarios/throw.pass.d.ts +0 -0
  343. /package/{fs → fjs}/emergent_testing/scenarios/throw.pass.js +0 -0
  344. /package/{fs → fjs}/fsc/bnf.f.d.ts +0 -0
  345. /package/{fs → fjs}/fsc/bnf.f.js +0 -0
  346. /package/{fs → fjs}/fsc/json.f.d.ts +0 -0
  347. /package/{fs → fjs}/fsc/json.f.js +0 -0
  348. /package/{fs → fjs}/fsc/module.f.d.ts +0 -0
  349. /package/{fs → fjs}/fsc/module.f.js +0 -0
  350. /package/{fs → fjs}/fsc/proof.f.d.ts +0 -0
  351. /package/{fs → fjs}/fsm/module.f.d.ts +0 -0
  352. /package/{fs → fjs}/fsm/module.f.js +0 -0
  353. /package/{fs → fjs}/fsm/proof.f.d.ts +0 -0
  354. /package/{fs → fjs}/js/tokenizer/module.f.d.ts +0 -0
  355. /package/{fs → fjs}/js/tokenizer/module.f.js +0 -0
  356. /package/{fs → fjs}/js/tokenizer/proof.f.d.ts +0 -0
  357. /package/{fs → fjs}/js/tokenizer/proof.f.js +0 -0
  358. /package/{fs → fjs}/mcp/proof.f.d.ts +0 -0
  359. /package/{fs → fjs}/mcp/stdio/proof.f.d.ts +0 -0
  360. /package/{fs → fjs}/mcp/stdio/proof.f.js +0 -0
  361. /package/{fs → fjs}/media/html/module.f.d.ts +0 -0
  362. /package/{fs → fjs}/media/html/module.f.js +0 -0
  363. /package/{fs → fjs}/media/html/proof.f.d.ts +0 -0
  364. /package/{fs → fjs}/media/json/module.f.d.ts +0 -0
  365. /package/{fs → fjs}/media/json/module.f.js +0 -0
  366. /package/{fs → fjs}/media/json/parser/proof.f.d.ts +0 -0
  367. /package/{fs → fjs}/media/json/proof.f.d.ts +0 -0
  368. /package/{fs → fjs}/media/json/proof.f.js +0 -0
  369. /package/{fs → fjs}/media/json/rpc/module.f.d.ts +0 -0
  370. /package/{fs → fjs}/media/json/rpc/proof.f.d.ts +0 -0
  371. /package/{fs → fjs}/media/json/rpc/proof.f.js +0 -0
  372. /package/{fs → fjs}/media/json/schema/proof.f.d.ts +0 -0
  373. /package/{fs → fjs}/media/json/serializer/module.f.d.ts +0 -0
  374. /package/{fs → fjs}/media/json/serializer/module.f.js +0 -0
  375. /package/{fs → fjs}/media/json/serializer/proof.f.d.ts +0 -0
  376. /package/{fs → fjs}/media/json/tokenizer/module.f.d.ts +0 -0
  377. /package/{fs → fjs}/media/json/tokenizer/module.f.js +0 -0
  378. /package/{fs → fjs}/media/json/tokenizer/proof.f.d.ts +0 -0
  379. /package/{fs → fjs}/media/json/tokenizer/proof.f.js +0 -0
  380. /package/{fs → fjs}/media/proof.f.d.ts +0 -0
  381. /package/{fs → fjs}/media/type/module.f.d.ts +0 -0
  382. /package/{fs → fjs}/media/type/proof.f.d.ts +0 -0
  383. /package/{fs → fjs}/module.d.ts +0 -0
  384. /package/{fs → fjs}/module.f.d.ts +0 -0
  385. /package/{fs → fjs}/module.js +0 -0
  386. /package/{fs → fjs}/path/module.f.d.ts +0 -0
  387. /package/{fs → fjs}/path/module.f.js +0 -0
  388. /package/{fs → fjs}/path/proof.f.d.ts +0 -0
  389. /package/{fs → fjs}/proof.f.d.ts +0 -0
  390. /package/{fs → fjs}/sul/id/module.f.d.ts +0 -0
  391. /package/{fs → fjs}/sul/id/module.f.js +0 -0
  392. /package/{fs → fjs}/sul/id/proof.f.d.ts +0 -0
  393. /package/{fs → fjs}/sul/level/hash/module.f.d.ts +0 -0
  394. /package/{fs → fjs}/sul/level/hash/module.f.js +0 -0
  395. /package/{fs → fjs}/sul/level/hash/proof.f.d.ts +0 -0
  396. /package/{fs → fjs}/sul/level/literal/module.f.d.ts +0 -0
  397. /package/{fs → fjs}/sul/level/literal/module.f.js +0 -0
  398. /package/{fs → fjs}/sul/level/literal/proof.f.d.ts +0 -0
  399. /package/{fs → fjs}/sul/module.f.d.ts +0 -0
  400. /package/{fs → fjs}/sul/module.f.js +0 -0
  401. /package/{fs → fjs}/sul/proof.f.d.ts +0 -0
  402. /package/{fs → fjs}/sul/proof.f.js +0 -0
  403. /package/{fs → fjs}/text/ascii/module.f.d.ts +0 -0
  404. /package/{fs → fjs}/text/ascii/module.f.js +0 -0
  405. /package/{fs → fjs}/text/code_point/module.f.d.ts +0 -0
  406. /package/{fs → fjs}/text/code_point/proof.f.d.ts +0 -0
  407. /package/{fs → fjs}/text/code_point/proof.f.js +0 -0
  408. /package/{fs → fjs}/text/module.f.d.ts +0 -0
  409. /package/{fs → fjs}/text/module.f.js +0 -0
  410. /package/{fs → fjs}/text/proof.f.d.ts +0 -0
  411. /package/{fs → fjs}/text/sgr/module.f.d.ts +0 -0
  412. /package/{fs → fjs}/text/sgr/module.f.js +0 -0
  413. /package/{fs → fjs}/text/sgr/proof.f.d.ts +0 -0
  414. /package/{fs → fjs}/text/utf16/module.f.d.ts +0 -0
  415. /package/{fs → fjs}/text/utf16/proof.f.d.ts +0 -0
  416. /package/{fs → fjs}/text/utf8/module.f.d.ts +0 -0
  417. /package/{fs → fjs}/text/utf8/module.f.js +0 -0
  418. /package/{fs → fjs}/text/utf8/proof.f.d.ts +0 -0
  419. /package/{fs → fjs}/types/array/module.f.d.ts +0 -0
  420. /package/{fs → fjs}/types/array/module.f.js +0 -0
  421. /package/{fs → fjs}/types/array/proof.f.d.ts +0 -0
  422. /package/{fs → fjs}/types/bigfloat/module.f.d.ts +0 -0
  423. /package/{fs → fjs}/types/bigfloat/module.f.js +0 -0
  424. /package/{fs → fjs}/types/bigfloat/proof.f.d.ts +0 -0
  425. /package/{fs → fjs}/types/bigint/module.f.d.ts +0 -0
  426. /package/{fs → fjs}/types/bigint/proof.f.d.ts +0 -0
  427. /package/{fs → fjs}/types/bit_vec/module.f.d.ts +0 -0
  428. /package/{fs → fjs}/types/bit_vec/proof.f.d.ts +0 -0
  429. /package/{fs → fjs}/types/btree/find/module.f.d.ts +0 -0
  430. /package/{fs → fjs}/types/btree/find/module.f.js +0 -0
  431. /package/{fs → fjs}/types/btree/find/proof.f.d.ts +0 -0
  432. /package/{fs → fjs}/types/btree/module.f.d.ts +0 -0
  433. /package/{fs → fjs}/types/btree/module.f.js +0 -0
  434. /package/{fs → fjs}/types/btree/proof.f.d.ts +0 -0
  435. /package/{fs → fjs}/types/btree/set/module.f.d.ts +0 -0
  436. /package/{fs → fjs}/types/btree/set/proof.f.d.ts +0 -0
  437. /package/{fs → fjs}/types/btree/types/module.f.d.ts +0 -0
  438. /package/{fs → fjs}/types/btree/types/module.f.js +0 -0
  439. /package/{fs → fjs}/types/byte_set/module.f.d.ts +0 -0
  440. /package/{fs → fjs}/types/byte_set/module.f.js +0 -0
  441. /package/{fs → fjs}/types/byte_set/proof.f.d.ts +0 -0
  442. /package/{fs → fjs}/types/function/compare/module.f.d.ts +0 -0
  443. /package/{fs → fjs}/types/function/compare/module.f.js +0 -0
  444. /package/{fs → fjs}/types/function/compare/proof.f.d.ts +0 -0
  445. /package/{fs → fjs}/types/function/module.f.d.ts +0 -0
  446. /package/{fs → fjs}/types/function/module.f.js +0 -0
  447. /package/{fs → fjs}/types/function/operator/module.f.d.ts +0 -0
  448. /package/{fs → fjs}/types/function/operator/module.f.js +0 -0
  449. /package/{fs → fjs}/types/function/operator/proof.f.d.ts +0 -0
  450. /package/{fs → fjs}/types/function/proof.f.d.ts +0 -0
  451. /package/{fs → fjs}/types/map/module.f.d.ts +0 -0
  452. /package/{fs → fjs}/types/map/module.f.js +0 -0
  453. /package/{fs → fjs}/types/map/proof.f.d.ts +0 -0
  454. /package/{fs → fjs}/types/nibble_set/module.f.d.ts +0 -0
  455. /package/{fs → fjs}/types/nibble_set/module.f.js +0 -0
  456. /package/{fs → fjs}/types/nibble_set/proof.f.d.ts +0 -0
  457. /package/{fs → fjs}/types/nominal/module.f.d.ts +0 -0
  458. /package/{fs → fjs}/types/nominal/module.f.js +0 -0
  459. /package/{fs → fjs}/types/nominal/proof.f.d.ts +0 -0
  460. /package/{fs → fjs}/types/nullable/module.f.d.ts +0 -0
  461. /package/{fs → fjs}/types/nullable/module.f.js +0 -0
  462. /package/{fs → fjs}/types/nullable/proof.f.d.ts +0 -0
  463. /package/{fs → fjs}/types/number/module.f.d.ts +0 -0
  464. /package/{fs → fjs}/types/number/proof.f.d.ts +0 -0
  465. /package/{fs → fjs}/types/object/module.f.d.ts +0 -0
  466. /package/{fs → fjs}/types/object/module.f.js +0 -0
  467. /package/{fs → fjs}/types/object/proof.f.d.ts +0 -0
  468. /package/{fs → fjs}/types/option/module.f.d.ts +0 -0
  469. /package/{fs → fjs}/types/option/module.f.js +0 -0
  470. /package/{fs → fjs}/types/ordered_map/module.f.d.ts +0 -0
  471. /package/{fs → fjs}/types/ordered_map/module.f.js +0 -0
  472. /package/{fs → fjs}/types/ordered_map/proof.f.d.ts +0 -0
  473. /package/{fs → fjs}/types/ordered_map/proof.f.js +0 -0
  474. /package/{fs → fjs}/types/patricia_trie/module.f.d.ts +0 -0
  475. /package/{fs → fjs}/types/patricia_trie/module.f.js +0 -0
  476. /package/{fs → fjs}/types/patricia_trie/proof.f.d.ts +0 -0
  477. /package/{fs → fjs}/types/phantom/module.f.d.ts +0 -0
  478. /package/{fs → fjs}/types/phantom/module.f.js +0 -0
  479. /package/{fs → fjs}/types/prime_field/module.f.d.ts +0 -0
  480. /package/{fs → fjs}/types/prime_field/proof.f.d.ts +0 -0
  481. /package/{fs → fjs}/types/prime_field/proof.f.js +0 -0
  482. /package/{fs → fjs}/types/range/proof.f.d.ts +0 -0
  483. /package/{fs → fjs}/types/range_map/module.f.d.ts +0 -0
  484. /package/{fs → fjs}/types/range_map/module.f.js +0 -0
  485. /package/{fs → fjs}/types/range_map/proof.f.d.ts +0 -0
  486. /package/{fs → fjs}/types/result/module.d.ts +0 -0
  487. /package/{fs → fjs}/types/result/module.f.d.ts +0 -0
  488. /package/{fs → fjs}/types/result/module.f.js +0 -0
  489. /package/{fs → fjs}/types/result/module.js +0 -0
  490. /package/{fs → fjs}/types/rtti/module.f.d.ts +0 -0
  491. /package/{fs → fjs}/types/rtti/module.f.js +0 -0
  492. /package/{fs → fjs}/types/rtti/parse/module.f.d.ts +0 -0
  493. /package/{fs → fjs}/types/rtti/parse/proof.f.d.ts +0 -0
  494. /package/{fs → fjs}/types/rtti/proof.f.d.ts +0 -0
  495. /package/{fs → fjs}/types/rtti/proof.f.js +0 -0
  496. /package/{fs → fjs}/types/rtti/ts/module.f.js +0 -0
  497. /package/{fs → fjs}/types/rtti/ts/proof.f.d.ts +0 -0
  498. /package/{fs → fjs}/types/rtti/ts/proof.f.js +0 -0
  499. /package/{fs → fjs}/types/rtti/validate/module.f.d.ts +0 -0
  500. /package/{fs → fjs}/types/rtti/validate/proof.f.d.ts +0 -0
  501. /package/{fs → fjs}/types/sorted_list/module.f.d.ts +0 -0
  502. /package/{fs → fjs}/types/sorted_list/module.f.js +0 -0
  503. /package/{fs → fjs}/types/sorted_list/proof.f.d.ts +0 -0
  504. /package/{fs → fjs}/types/sorted_set/module.f.d.ts +0 -0
  505. /package/{fs → fjs}/types/sorted_set/module.f.js +0 -0
  506. /package/{fs → fjs}/types/sorted_set/proof.f.d.ts +0 -0
  507. /package/{fs → fjs}/types/string/module.f.d.ts +0 -0
  508. /package/{fs → fjs}/types/string/proof.f.d.ts +0 -0
  509. /package/{fs → fjs}/types/string_set/module.f.d.ts +0 -0
  510. /package/{fs → fjs}/types/string_set/module.f.js +0 -0
  511. /package/{fs → fjs}/types/string_set/proof.f.d.ts +0 -0
  512. /package/{fs → fjs}/types/ts/module.f.d.ts +0 -0
  513. /package/{fs → fjs}/types/ts/module.f.js +0 -0
  514. /package/{fs → fjs}/types/ts/proof.f.d.ts +0 -0
  515. /package/{fs → fjs}/types/uint8array/module.f.d.ts +0 -0
  516. /package/{fs → fjs}/website/module.f.d.ts +0 -0
  517. /package/{fs → fjs}/website/proof.f.d.ts +0 -0
@@ -1,32 +1,33 @@
1
- import { empty, isVec, uint, vec8 } from "../../types/bit_vec/module.f.js";
1
+ import { empty, isVec, uint, vec, vec8 } from "../../types/bit_vec/module.f.js";
2
2
  import { utf8, utf8ToString } from "../../text/module.f.js";
3
- import { decode, pure } from "../module.f.js";
3
+ import { match, pure, step } from "../module.f.js";
4
4
  import { both, fetch, mkdir, now, readdir, readFile, readUtf8File, rm, sandbox, writeFile, writeUtf8File, rename, readBytes, randomInt, writeFromStream } from "./module.f.js";
5
5
  import { create as memCreate, read as memRead, write as memWrite } from "../memory/module.f.js";
6
- import { empty as listEmpty } from "../list/module.f.js";
6
+ import { empty as listEmpty, nonEmpty as listNonEmpty } from "../list/module.f.js";
7
7
  import { emptyState, virtual } from "./virtual/module.f.js";
8
+ import { assert, assertEq, assertNotNullish } from '../../asserts/module.f.js';
9
+ import { ok } from '../../types/result/module.f.js';
10
+ // Answers the one command the `map` proof below drives. Routing the loop
11
+ // through `match` keeps the `Pure`/`Do` layout out of this module: the map key
12
+ // is the command assertion, and `MatchResult` types the continuation.
13
+ const readHello = match({
14
+ readFile: path => {
15
+ assertEq(path, 'hello');
16
+ return ok(vec8(0x15n));
17
+ },
18
+ });
8
19
  export const proof = {
9
20
  map: () => {
10
- const e = readFile('hello').step(([k, v]) => {
11
- if (k === 'error') {
12
- throw v;
13
- }
21
+ const e = step(readFile('hello'), ([k, v]) => {
22
+ assert(k !== 'error', v);
14
23
  return pure(uint(v) * 2n);
15
24
  });
16
25
  //
17
- let d = decode(e);
18
- while (!d.done) {
19
- if (d.command !== 'readFile') {
20
- throw d.command;
21
- }
22
- if (d.payload[0] !== 'hello') {
23
- throw d.payload;
24
- }
25
- d = decode(d.continuation(['ok', vec8(0x15n)]));
26
- }
27
- if (d.result !== 0x2an) {
28
- throw d.result;
26
+ let r = readHello(e);
27
+ while (r[0] === 'cont') {
28
+ r = readHello(r[2](r[1]));
29
29
  }
30
+ assertEq(r[1], 0x2an);
30
31
  },
31
32
  fetch: () => {
32
33
  const [_, [t, result]] = virtual({
@@ -35,49 +36,29 @@ export const proof = {
35
36
  'https://example.com/data': vec8(0x2an),
36
37
  },
37
38
  })(fetch('https://example.com/data'));
38
- if (t === 'error') {
39
- throw result;
40
- }
41
- if (!isVec(result)) {
42
- throw result;
43
- }
44
- if (uint(result) !== 0x2an) {
45
- throw result;
46
- }
39
+ assert(t !== 'error', result);
40
+ assert(isVec(result), result);
41
+ assertEq(uint(result), 0x2an, result);
47
42
  },
48
43
  mkdir: {
49
44
  one: () => {
50
45
  const [state, [t, result]] = virtual(emptyState)(mkdir('a'));
51
- if (t === 'error') {
52
- throw result;
53
- }
46
+ assert(t !== 'error', result);
54
47
  const a = state.root.a;
55
- if (a === undefined || Array.isArray(a)) {
56
- throw a;
57
- }
48
+ assert(!(a === undefined || Array.isArray(a)), a);
58
49
  },
59
50
  rec: () => {
60
51
  const [state, [t, result]] = virtual(emptyState)(mkdir('tmp/cache', { recursive: true }));
61
- if (t !== 'ok') {
62
- throw result;
63
- }
52
+ assert(t === 'ok', result);
64
53
  const tmp = state.root.tmp;
65
- if (typeof tmp !== 'object' || Array.isArray(tmp)) {
66
- throw state.root;
67
- }
54
+ assert(!(typeof tmp !== 'object' || Array.isArray(tmp)), state.root);
68
55
  const cache = tmp.cache;
69
- if (typeof cache !== 'object' || Array.isArray(cache)) {
70
- throw tmp;
71
- }
56
+ assert(!(typeof cache !== 'object' || Array.isArray(cache)), tmp);
72
57
  },
73
58
  nonRec: () => {
74
59
  const [state, [t, result]] = virtual(emptyState)(mkdir('tmp/cache'));
75
- if (t !== 'error') {
76
- throw result;
77
- }
78
- if (state.root.tmp !== undefined) {
79
- throw state.root.tmp;
80
- }
60
+ assert(t === 'error', result);
61
+ assertEq(state.root.tmp, undefined);
81
62
  }
82
63
  },
83
64
  readFile: {
@@ -89,42 +70,26 @@ export const proof = {
89
70
  },
90
71
  };
91
72
  const [state, [t, result]] = virtual(initial)(readFile('hello'));
92
- if (t === 'error') {
93
- throw result;
94
- }
95
- if (!isVec(result)) {
96
- throw result;
97
- }
98
- if (uint(result) !== 0x2an) {
99
- throw result;
100
- }
101
- if (state.root.hello === undefined) {
102
- throw state.root;
103
- }
73
+ assert(t !== 'error', result);
74
+ assert(isVec(result), result);
75
+ assertEq(uint(result), 0x2an, result);
76
+ assert(state.root.hello !== undefined, state.root);
104
77
  },
105
78
  nested: () => {
106
79
  const [_, [tag, result]] = virtual({
107
80
  ...emptyState,
108
81
  root: { tmp: { cache: [vec8(0x15n)] } }
109
82
  })(readFile('tmp/cache'));
110
- if (tag === 'error') {
111
- throw result;
112
- }
113
- if (uint(result) !== 0x15n) {
114
- throw result;
115
- }
83
+ assert(tag !== 'error', result);
84
+ assertEq(uint(result), 0x15n, result);
116
85
  },
117
86
  noSuchFile: () => {
118
87
  const [_, [t, result]] = virtual(emptyState)(readFile('hello'));
119
- if (t !== 'error') {
120
- throw result;
121
- }
88
+ assert(t === 'error', result);
122
89
  },
123
90
  nestedPath: () => {
124
91
  const [_, [t, result]] = virtual(emptyState)(readFile('tmp/cache'));
125
- if (t !== 'error') {
126
- throw result;
127
- }
92
+ assert(t === 'error', result);
128
93
  if (result.code !== 'ENOENT') {
129
94
  throw result;
130
95
  }
@@ -138,12 +103,8 @@ export const proof = {
138
103
  },
139
104
  };
140
105
  const [_, [t, result]] = virtual(initial)(readFile('smallFile'));
141
- if (t === 'error') {
142
- throw result;
143
- }
144
- if (!isVec(result)) {
145
- throw result;
146
- }
106
+ assert(t !== 'error', result);
107
+ assert(isVec(result), result);
147
108
  }
148
109
  },
149
110
  readUtf8File: {
@@ -152,18 +113,12 @@ export const proof = {
152
113
  ...emptyState,
153
114
  root: { hello: [utf8('Hello, world!')] },
154
115
  })(readUtf8File('hello'));
155
- if (t !== 'ok') {
156
- throw result;
157
- }
158
- if (result !== 'Hello, world!') {
159
- throw result;
160
- }
116
+ assert(t === 'ok', result);
117
+ assertEq(result, 'Hello, world!');
161
118
  },
162
119
  noSuchFile: () => {
163
120
  const [_, [t, result]] = virtual(emptyState)(readUtf8File('hello'));
164
- if (t !== 'error') {
165
- throw result;
166
- }
121
+ assert(t === 'error', result);
167
122
  },
168
123
  },
169
124
  readdir: {
@@ -177,9 +132,7 @@ export const proof = {
177
132
  },
178
133
  },
179
134
  })(readdir('', { recursive: true }));
180
- if (t !== 'ok') {
181
- throw result;
182
- }
135
+ assert(t === 'ok', result);
183
136
  const file = result.find(x => x.name === 'file');
184
137
  if (file === undefined || file.parentPath !== '' || !file.isFile) {
185
138
  throw `file: ${file}`;
@@ -199,63 +152,35 @@ export const proof = {
199
152
  },
200
153
  },
201
154
  })(readdir('', {}));
202
- if (t !== 'ok') {
203
- throw result;
204
- }
205
- if (result.length !== 2) {
206
- throw result;
207
- }
208
- const file = result.find(x => x.name === 'file');
209
- if (file === undefined) {
210
- throw file;
211
- }
212
- const dir = result.find(x => x.name === 'dir');
213
- if (dir === undefined) {
214
- throw dir;
215
- }
155
+ assert(t === 'ok', result);
156
+ assertEq(result.length, 2, result);
157
+ assertNotNullish(result.find(x => x.name === 'file'));
158
+ assertNotNullish(result.find(x => x.name === 'dir'));
216
159
  },
217
160
  nested: () => {
218
161
  const [_, [t, result]] = virtual({
219
162
  ...emptyState,
220
163
  root: { tmp: { cache: [vec8(0x15n)] } }
221
164
  })(readdir('tmp', { recursive: true }));
222
- if (t !== 'ok') {
223
- throw result;
224
- }
225
- if (result.length !== 1) {
226
- throw result;
227
- }
165
+ assert(t === 'ok', result);
166
+ assertEq(result.length, 1, result);
228
167
  const [r0] = result;
229
- if (r0.name !== 'cache') {
230
- throw r0;
231
- }
232
- if (r0.parentPath !== 'tmp') {
233
- throw r0;
234
- }
168
+ assertEq(r0.name, 'cache', r0);
169
+ assertEq(r0.parentPath, 'tmp', r0);
235
170
  },
236
171
  noSuchDir: () => {
237
172
  const [_, [t, result]] = virtual(emptyState)(readdir('tmp', { recursive: true }));
238
- if (t !== 'error') {
239
- throw result;
240
- }
241
- if (result !== 'invalid path') {
242
- throw result;
243
- }
173
+ assert(t === 'error', result);
174
+ assertEq(result, 'invalid path');
244
175
  },
245
176
  },
246
177
  writeFile: {
247
178
  one: () => {
248
179
  const [state, [t, result]] = virtual(emptyState)(writeFile('hello', vec8(0x2an)));
249
- if (t !== 'ok') {
250
- throw result;
251
- }
180
+ assert(t === 'ok', result);
252
181
  const file = state.root.hello;
253
- if (!Array.isArray(file)) {
254
- throw file;
255
- }
256
- if (uint(file[0]) !== 0x2an) {
257
- throw file;
258
- }
182
+ assert(Array.isArray(file), file);
183
+ assertEq(uint(file[0]), 0x2an, file);
259
184
  },
260
185
  overwrite: () => {
261
186
  const [state, [t, result]] = virtual({
@@ -264,28 +189,16 @@ export const proof = {
264
189
  hello: [vec8(0x15n)],
265
190
  },
266
191
  })(writeFile('hello', vec8(0x2an)));
267
- if (t !== 'ok') {
268
- throw result;
269
- }
192
+ assert(t === 'ok', result);
270
193
  const file = state.root.hello;
271
- if (!Array.isArray(file)) {
272
- throw file;
273
- }
274
- if (uint(file[0]) !== 0x2an) {
275
- throw file;
276
- }
194
+ assert(Array.isArray(file), file);
195
+ assertEq(uint(file[0]), 0x2an, file);
277
196
  },
278
197
  nestedPath: () => {
279
198
  const [state, [t, result]] = virtual(emptyState)(writeFile('tmp/cache', vec8(0x2an)));
280
- if (t !== 'error') {
281
- throw result;
282
- }
283
- if (result !== 'invalid file') {
284
- throw result;
285
- }
286
- if (state.root.tmp !== undefined) {
287
- throw state.root;
288
- }
199
+ assert(t === 'error', result);
200
+ assertEq(result, 'invalid file');
201
+ assertEq(state.root.tmp, undefined, state.root);
289
202
  },
290
203
  directory: () => {
291
204
  const [state, [t, result]] = virtual({
@@ -294,30 +207,18 @@ export const proof = {
294
207
  tmp: {},
295
208
  },
296
209
  })(writeFile('tmp', vec8(0x2an)));
297
- if (t !== 'error') {
298
- throw result;
299
- }
300
- if (result !== 'invalid file') {
301
- throw result;
302
- }
210
+ assert(t === 'error', result);
211
+ assertEq(result, 'invalid file');
303
212
  const tmp = state.root.tmp;
304
- if (tmp === undefined || Array.isArray(tmp)) {
305
- throw tmp;
306
- }
213
+ assert(!(tmp === undefined || Array.isArray(tmp)), tmp);
307
214
  },
308
215
  },
309
216
  writeUtf8File: () => {
310
217
  const [state, [t, result]] = virtual(emptyState)(writeUtf8File('hello', 'Hello, world!'));
311
- if (t !== 'ok') {
312
- throw result;
313
- }
218
+ assert(t === 'ok', result);
314
219
  const file = state.root.hello;
315
- if (!Array.isArray(file)) {
316
- throw file;
317
- }
318
- if (utf8ToString(file[0]) !== 'Hello, world!') {
319
- throw file;
320
- }
220
+ assert(Array.isArray(file), file);
221
+ assertEq(utf8ToString(file[0]), 'Hello, world!', file);
321
222
  },
322
223
  rm: {
323
224
  one: () => {
@@ -325,52 +226,32 @@ export const proof = {
325
226
  ...emptyState,
326
227
  root: { hello: [vec8(0x2an)] },
327
228
  })(rm('hello'));
328
- if (t !== 'ok') {
329
- throw result;
330
- }
331
- if (state.root.hello !== undefined) {
332
- throw state.root;
333
- }
229
+ assert(t === 'ok', result);
230
+ assertEq(state.root.hello, undefined, state.root);
334
231
  },
335
232
  nested: () => {
336
233
  const [state, [t, result]] = virtual({
337
234
  ...emptyState,
338
235
  root: { tmp: { cache: [vec8(0x15n)] } },
339
236
  })(rm('tmp/cache'));
340
- if (t !== 'ok') {
341
- throw result;
342
- }
237
+ assert(t === 'ok', result);
343
238
  const tmp = state.root.tmp;
344
- if (typeof tmp !== 'object' || Array.isArray(tmp)) {
345
- throw state.root;
346
- }
347
- if (tmp.cache !== undefined) {
348
- throw tmp;
349
- }
239
+ assert(!(typeof tmp !== 'object' || Array.isArray(tmp)), state.root);
240
+ assertEq(tmp.cache, undefined, tmp);
350
241
  },
351
242
  noSuchFile: () => {
352
243
  const [_, [t, result]] = virtual(emptyState)(rm('hello'));
353
- if (t !== 'error') {
354
- throw result;
355
- }
356
- if (result !== 'no such file') {
357
- throw result;
358
- }
244
+ assert(t === 'error', result);
245
+ assertEq(result, 'no such file');
359
246
  },
360
247
  isDirectory: () => {
361
248
  const [state, [t, result]] = virtual({
362
249
  ...emptyState,
363
250
  root: { tmp: {} },
364
251
  })(rm('tmp'));
365
- if (t !== 'error') {
366
- throw result;
367
- }
368
- if (result !== 'invalid path') {
369
- throw result;
370
- }
371
- if (state.root.tmp === undefined) {
372
- throw state.root;
373
- }
252
+ assert(t === 'error', result);
253
+ assertEq(result, 'invalid path');
254
+ assert(state.root.tmp !== undefined, state.root);
374
255
  },
375
256
  },
376
257
  both: () => {
@@ -381,24 +262,14 @@ export const proof = {
381
262
  b: [vec8(0x15n)],
382
263
  },
383
264
  })(both(readFile('a'))(readFile('b')));
384
- if (results[0][0] !== 'ok') {
385
- throw results[0];
386
- }
387
- if (results[1][0] !== 'ok') {
388
- throw results[1];
389
- }
390
- if (uint(results[0][1]) !== 0x2an) {
391
- throw results[0][1];
392
- }
393
- if (uint(results[1][1]) !== 0x15n) {
394
- throw results[1][1];
395
- }
265
+ assert(results[0][0] === 'ok', results[0]);
266
+ assert(results[1][0] === 'ok', results[1]);
267
+ assertEq(uint(results[0][1]), 0x2an, results[0][1]);
268
+ assertEq(uint(results[1][1]), 0x15n, results[1][1]);
396
269
  },
397
270
  now: () => {
398
271
  const [_, result] = virtual({ ...emptyState, epochNs: 1_000_000 })(now());
399
- if (result !== 1_000_000) {
400
- throw result;
401
- }
272
+ assertEq(result, 1_000_000);
402
273
  },
403
274
  sandbox: {
404
275
  // Virtual `sandbox` is now a pass-through: the function is expected
@@ -406,41 +277,27 @@ export const proof = {
406
277
  // (and `duration`) instead of the runner measuring.
407
278
  ok: () => {
408
279
  const [_, { result, duration }] = virtual(emptyState)(sandbox(() => ({ result: ['ok', 42], duration: 0 })));
409
- if (result[0] !== 'ok') {
410
- throw result;
411
- }
412
- if (result[1] !== 42) {
413
- throw result[1];
414
- }
415
- if (duration !== 0) {
416
- throw duration;
417
- }
280
+ assert(result[0] === 'ok', result);
281
+ assertEq(result[1], 42);
282
+ assertEq(duration, 0);
418
283
  },
419
284
  error: () => {
420
285
  const err = new Error('fail');
421
286
  const [_, { result }] = virtual(emptyState)(sandbox(() => ({ result: ['error', err], duration: 0 })));
422
- if (result[0] !== 'error') {
423
- throw result;
424
- }
425
- if (result[1] !== err) {
426
- throw result[1];
427
- }
287
+ assert(result[0] === 'error', result);
288
+ assertEq(result[1], err);
428
289
  },
429
290
  },
430
291
  memory: {
431
292
  createAndRead: () => {
432
- const effect = memCreate(42).step(key => memRead(key));
293
+ const effect = step(memCreate(42), key => memRead(key));
433
294
  const [_, value] = virtual(emptyState)(effect);
434
- if (value !== 42) {
435
- throw value;
436
- }
295
+ assertEq(value, 42);
437
296
  },
438
297
  createAndWrite: () => {
439
- const effect = memCreate(1).step(key => memWrite(key, 99).step(() => memRead(key)));
298
+ const effect = step(memCreate(1), key => step(memWrite(key, 99), () => memRead(key)));
440
299
  const [_, value] = virtual(emptyState)(effect);
441
- if (value !== 99) {
442
- throw value;
443
- }
300
+ assertEq(value, 99);
444
301
  },
445
302
  },
446
303
  rename: {
@@ -449,52 +306,32 @@ export const proof = {
449
306
  ...emptyState,
450
307
  root: { src: [vec8(0x2an)], dst: [vec8(0x15n)] },
451
308
  })(rename('src', 'dst'));
452
- if (t !== 'ok') {
453
- throw result;
454
- }
455
- if (state.root.src !== undefined) {
456
- throw state.root;
457
- }
458
- if (!Array.isArray(state.root.dst)) {
459
- throw state.root;
460
- }
461
- if (uint(state.root.dst[0]) !== 0x2an) {
462
- throw state.root;
463
- }
309
+ assert(t === 'ok', result);
310
+ assertEq(state.root.src, undefined, state.root);
311
+ assert(Array.isArray(state.root.dst), state.root);
312
+ assertEq(uint(state.root.dst[0]), 0x2an, state.root);
464
313
  },
465
314
  nestedRename: () => {
466
315
  const [state, [t, result]] = virtual({
467
316
  ...emptyState,
468
317
  root: { tmp: { src: [vec8(0x2an)] } },
469
318
  })(rename('tmp/src', 'tmp/dst'));
470
- if (t !== 'ok') {
471
- throw result;
472
- }
319
+ assert(t === 'ok', result);
473
320
  const tmp = state.root.tmp;
474
- if (typeof tmp !== 'object' || Array.isArray(tmp)) {
475
- throw state.root;
476
- }
477
- if (tmp.src !== undefined) {
478
- throw tmp;
479
- }
321
+ assert(!(typeof tmp !== 'object' || Array.isArray(tmp)), state.root);
322
+ assertEq(tmp.src, undefined, tmp);
480
323
  },
481
324
  dirOverFile: () => {
482
325
  const [state, [t, result]] = virtual({
483
326
  ...emptyState,
484
327
  root: { src: {}, dst: [vec8(0x15n)] },
485
328
  })(rename('src', 'dst'));
486
- if (t !== 'error') {
487
- throw result;
488
- }
489
- if (!Array.isArray(state.root.dst)) {
490
- throw state.root;
491
- }
329
+ assert(t === 'error', result);
330
+ assert(Array.isArray(state.root.dst), state.root);
492
331
  },
493
332
  missingSource: () => {
494
333
  const [_, [t, result]] = virtual(emptyState)(rename('missing', 'dst'));
495
- if (t !== 'error') {
496
- throw result;
497
- }
334
+ assert(t === 'error', result);
498
335
  },
499
336
  },
500
337
  readBytes: {
@@ -503,55 +340,37 @@ export const proof = {
503
340
  ...emptyState,
504
341
  root: { file: [vec8(0xabn)] },
505
342
  })(readBytes('file', 0, 1));
506
- if (t !== 'ok') {
507
- throw result;
508
- }
509
- if (!isVec(result)) {
510
- throw result;
511
- }
343
+ assert(t === 'ok', result);
344
+ assert(isVec(result), result);
512
345
  },
513
346
  withOffset: () => {
514
347
  const [_, [t, result]] = virtual({
515
348
  ...emptyState,
516
349
  root: { file: [vec8(0xabn), vec8(0xcdn)] },
517
350
  })(readBytes('file', 1, 1));
518
- if (t !== 'ok') {
519
- throw result;
520
- }
521
- if (!isVec(result)) {
522
- throw result;
523
- }
351
+ assert(t === 'ok', result);
352
+ assert(isVec(result), result);
524
353
  },
525
354
  oversizeChunk: () => {
526
355
  const [_, [t, result]] = virtual({
527
356
  ...emptyState,
528
357
  root: { file: [vec8(0x2an)] },
529
358
  })(readBytes('file', 0, Number(2n ** 32n)));
530
- if (t !== 'error') {
531
- throw result;
532
- }
359
+ assert(t === 'error', result);
533
360
  },
534
361
  missingFile: () => {
535
362
  const [_, [t, result]] = virtual(emptyState)(readBytes('missing', 0, 4));
536
- if (t !== 'error') {
537
- throw result;
538
- }
363
+ assert(t === 'error', result);
539
364
  },
540
365
  },
541
366
  randomInt: {
542
367
  increments: () => {
543
368
  const [state1, r1] = virtual(emptyState)(randomInt());
544
- if (r1 !== 0) {
545
- throw r1;
546
- }
369
+ assertEq(r1, 0);
547
370
  const [state2, r2] = virtual(state1)(randomInt());
548
- if (r2 !== 1) {
549
- throw r2;
550
- }
371
+ assertEq(r2, 1);
551
372
  const [_, r3] = virtual(state2)(randomInt());
552
- if (r3 !== 2) {
553
- throw r3;
554
- }
373
+ assertEq(r3, 2);
555
374
  },
556
375
  },
557
376
  writeFromStream: {
@@ -562,13 +381,16 @@ export const proof = {
562
381
  ...emptyState,
563
382
  root: { hello: [vec8(0x2an)] },
564
383
  })(writeFromStream('hello', listEmpty()));
565
- if (t !== 'error') {
566
- throw result;
567
- }
384
+ assert(t === 'error', result);
568
385
  const file = state.root.hello;
569
- if (!Array.isArray(file) || uint(file[0]) !== 0x2an) {
570
- throw file;
571
- }
386
+ assert(!(!Array.isArray(file) || uint(file[0]) !== 0x2an), file);
387
+ },
388
+ invalidBufferSize: () => {
389
+ // A chunk whose bit length isn't a multiple of 8 trips the
390
+ // byte-alignment guard before `writeBytes` is ever called.
391
+ const [_, [t, result]] = virtual(emptyState)(writeFromStream('hello', listNonEmpty(['ok', vec(4n)(10n)], listEmpty())));
392
+ assert(t === 'error', result);
393
+ assertEq(result, 'invalid buffer size');
572
394
  },
573
395
  },
574
396
  };
@@ -6,6 +6,7 @@ export declare const proof: {
6
6
  };
7
7
  writeFileOnDirectory: () => void;
8
8
  readdirRecursive: () => void;
9
+ accessNestedPathThroughFile: () => void;
9
10
  readFileIntoDir: () => void;
10
11
  awaitNonPromise: () => void;
11
12
  fetchNotFound: () => void;