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,32 +1,25 @@
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
3
  import { decode, pure } 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';
8
9
  export const proof = {
9
10
  map: () => {
10
11
  const e = readFile('hello').step(([k, v]) => {
11
- if (k === 'error') {
12
- throw v;
13
- }
12
+ assert(k !== 'error', v);
14
13
  return pure(uint(v) * 2n);
15
14
  });
16
15
  //
17
16
  let d = decode(e);
18
17
  while (!d.done) {
19
- if (d.command !== 'readFile') {
20
- throw d.command;
21
- }
22
- if (d.payload[0] !== 'hello') {
23
- throw d.payload;
24
- }
18
+ assertEq(d.command, 'readFile');
19
+ assert(d.payload[0] === 'hello', d.payload);
25
20
  d = decode(d.continuation(['ok', vec8(0x15n)]));
26
21
  }
27
- if (d.result !== 0x2an) {
28
- throw d.result;
29
- }
22
+ assertEq(d.result, 0x2an);
30
23
  },
31
24
  fetch: () => {
32
25
  const [_, [t, result]] = virtual({
@@ -35,49 +28,29 @@ export const proof = {
35
28
  'https://example.com/data': vec8(0x2an),
36
29
  },
37
30
  })(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
- }
31
+ assert(t !== 'error', result);
32
+ assert(isVec(result), result);
33
+ assertEq(uint(result), 0x2an, result);
47
34
  },
48
35
  mkdir: {
49
36
  one: () => {
50
37
  const [state, [t, result]] = virtual(emptyState)(mkdir('a'));
51
- if (t === 'error') {
52
- throw result;
53
- }
38
+ assert(t !== 'error', result);
54
39
  const a = state.root.a;
55
- if (a === undefined || Array.isArray(a)) {
56
- throw a;
57
- }
40
+ assert(!(a === undefined || Array.isArray(a)), a);
58
41
  },
59
42
  rec: () => {
60
43
  const [state, [t, result]] = virtual(emptyState)(mkdir('tmp/cache', { recursive: true }));
61
- if (t !== 'ok') {
62
- throw result;
63
- }
44
+ assert(t === 'ok', result);
64
45
  const tmp = state.root.tmp;
65
- if (typeof tmp !== 'object' || Array.isArray(tmp)) {
66
- throw state.root;
67
- }
46
+ assert(!(typeof tmp !== 'object' || Array.isArray(tmp)), state.root);
68
47
  const cache = tmp.cache;
69
- if (typeof cache !== 'object' || Array.isArray(cache)) {
70
- throw tmp;
71
- }
48
+ assert(!(typeof cache !== 'object' || Array.isArray(cache)), tmp);
72
49
  },
73
50
  nonRec: () => {
74
51
  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
- }
52
+ assert(t === 'error', result);
53
+ assertEq(state.root.tmp, undefined);
81
54
  }
82
55
  },
83
56
  readFile: {
@@ -89,42 +62,26 @@ export const proof = {
89
62
  },
90
63
  };
91
64
  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
- }
65
+ assert(t !== 'error', result);
66
+ assert(isVec(result), result);
67
+ assertEq(uint(result), 0x2an, result);
68
+ assert(state.root.hello !== undefined, state.root);
104
69
  },
105
70
  nested: () => {
106
71
  const [_, [tag, result]] = virtual({
107
72
  ...emptyState,
108
73
  root: { tmp: { cache: [vec8(0x15n)] } }
109
74
  })(readFile('tmp/cache'));
110
- if (tag === 'error') {
111
- throw result;
112
- }
113
- if (uint(result) !== 0x15n) {
114
- throw result;
115
- }
75
+ assert(tag !== 'error', result);
76
+ assertEq(uint(result), 0x15n, result);
116
77
  },
117
78
  noSuchFile: () => {
118
79
  const [_, [t, result]] = virtual(emptyState)(readFile('hello'));
119
- if (t !== 'error') {
120
- throw result;
121
- }
80
+ assert(t === 'error', result);
122
81
  },
123
82
  nestedPath: () => {
124
83
  const [_, [t, result]] = virtual(emptyState)(readFile('tmp/cache'));
125
- if (t !== 'error') {
126
- throw result;
127
- }
84
+ assert(t === 'error', result);
128
85
  if (result.code !== 'ENOENT') {
129
86
  throw result;
130
87
  }
@@ -138,12 +95,8 @@ export const proof = {
138
95
  },
139
96
  };
140
97
  const [_, [t, result]] = virtual(initial)(readFile('smallFile'));
141
- if (t === 'error') {
142
- throw result;
143
- }
144
- if (!isVec(result)) {
145
- throw result;
146
- }
98
+ assert(t !== 'error', result);
99
+ assert(isVec(result), result);
147
100
  }
148
101
  },
149
102
  readUtf8File: {
@@ -152,18 +105,12 @@ export const proof = {
152
105
  ...emptyState,
153
106
  root: { hello: [utf8('Hello, world!')] },
154
107
  })(readUtf8File('hello'));
155
- if (t !== 'ok') {
156
- throw result;
157
- }
158
- if (result !== 'Hello, world!') {
159
- throw result;
160
- }
108
+ assert(t === 'ok', result);
109
+ assertEq(result, 'Hello, world!');
161
110
  },
162
111
  noSuchFile: () => {
163
112
  const [_, [t, result]] = virtual(emptyState)(readUtf8File('hello'));
164
- if (t !== 'error') {
165
- throw result;
166
- }
113
+ assert(t === 'error', result);
167
114
  },
168
115
  },
169
116
  readdir: {
@@ -177,9 +124,7 @@ export const proof = {
177
124
  },
178
125
  },
179
126
  })(readdir('', { recursive: true }));
180
- if (t !== 'ok') {
181
- throw result;
182
- }
127
+ assert(t === 'ok', result);
183
128
  const file = result.find(x => x.name === 'file');
184
129
  if (file === undefined || file.parentPath !== '' || !file.isFile) {
185
130
  throw `file: ${file}`;
@@ -199,63 +144,35 @@ export const proof = {
199
144
  },
200
145
  },
201
146
  })(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
- }
147
+ assert(t === 'ok', result);
148
+ assertEq(result.length, 2, result);
149
+ assertNotNullish(result.find(x => x.name === 'file'));
150
+ assertNotNullish(result.find(x => x.name === 'dir'));
216
151
  },
217
152
  nested: () => {
218
153
  const [_, [t, result]] = virtual({
219
154
  ...emptyState,
220
155
  root: { tmp: { cache: [vec8(0x15n)] } }
221
156
  })(readdir('tmp', { recursive: true }));
222
- if (t !== 'ok') {
223
- throw result;
224
- }
225
- if (result.length !== 1) {
226
- throw result;
227
- }
157
+ assert(t === 'ok', result);
158
+ assertEq(result.length, 1, result);
228
159
  const [r0] = result;
229
- if (r0.name !== 'cache') {
230
- throw r0;
231
- }
232
- if (r0.parentPath !== 'tmp') {
233
- throw r0;
234
- }
160
+ assertEq(r0.name, 'cache', r0);
161
+ assertEq(r0.parentPath, 'tmp', r0);
235
162
  },
236
163
  noSuchDir: () => {
237
164
  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
- }
165
+ assert(t === 'error', result);
166
+ assertEq(result, 'invalid path');
244
167
  },
245
168
  },
246
169
  writeFile: {
247
170
  one: () => {
248
171
  const [state, [t, result]] = virtual(emptyState)(writeFile('hello', vec8(0x2an)));
249
- if (t !== 'ok') {
250
- throw result;
251
- }
172
+ assert(t === 'ok', result);
252
173
  const file = state.root.hello;
253
- if (!Array.isArray(file)) {
254
- throw file;
255
- }
256
- if (uint(file[0]) !== 0x2an) {
257
- throw file;
258
- }
174
+ assert(Array.isArray(file), file);
175
+ assertEq(uint(file[0]), 0x2an, file);
259
176
  },
260
177
  overwrite: () => {
261
178
  const [state, [t, result]] = virtual({
@@ -264,28 +181,16 @@ export const proof = {
264
181
  hello: [vec8(0x15n)],
265
182
  },
266
183
  })(writeFile('hello', vec8(0x2an)));
267
- if (t !== 'ok') {
268
- throw result;
269
- }
184
+ assert(t === 'ok', result);
270
185
  const file = state.root.hello;
271
- if (!Array.isArray(file)) {
272
- throw file;
273
- }
274
- if (uint(file[0]) !== 0x2an) {
275
- throw file;
276
- }
186
+ assert(Array.isArray(file), file);
187
+ assertEq(uint(file[0]), 0x2an, file);
277
188
  },
278
189
  nestedPath: () => {
279
190
  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
- }
191
+ assert(t === 'error', result);
192
+ assertEq(result, 'invalid file');
193
+ assertEq(state.root.tmp, undefined, state.root);
289
194
  },
290
195
  directory: () => {
291
196
  const [state, [t, result]] = virtual({
@@ -294,30 +199,18 @@ export const proof = {
294
199
  tmp: {},
295
200
  },
296
201
  })(writeFile('tmp', vec8(0x2an)));
297
- if (t !== 'error') {
298
- throw result;
299
- }
300
- if (result !== 'invalid file') {
301
- throw result;
302
- }
202
+ assert(t === 'error', result);
203
+ assertEq(result, 'invalid file');
303
204
  const tmp = state.root.tmp;
304
- if (tmp === undefined || Array.isArray(tmp)) {
305
- throw tmp;
306
- }
205
+ assert(!(tmp === undefined || Array.isArray(tmp)), tmp);
307
206
  },
308
207
  },
309
208
  writeUtf8File: () => {
310
209
  const [state, [t, result]] = virtual(emptyState)(writeUtf8File('hello', 'Hello, world!'));
311
- if (t !== 'ok') {
312
- throw result;
313
- }
210
+ assert(t === 'ok', result);
314
211
  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
- }
212
+ assert(Array.isArray(file), file);
213
+ assertEq(utf8ToString(file[0]), 'Hello, world!', file);
321
214
  },
322
215
  rm: {
323
216
  one: () => {
@@ -325,52 +218,32 @@ export const proof = {
325
218
  ...emptyState,
326
219
  root: { hello: [vec8(0x2an)] },
327
220
  })(rm('hello'));
328
- if (t !== 'ok') {
329
- throw result;
330
- }
331
- if (state.root.hello !== undefined) {
332
- throw state.root;
333
- }
221
+ assert(t === 'ok', result);
222
+ assertEq(state.root.hello, undefined, state.root);
334
223
  },
335
224
  nested: () => {
336
225
  const [state, [t, result]] = virtual({
337
226
  ...emptyState,
338
227
  root: { tmp: { cache: [vec8(0x15n)] } },
339
228
  })(rm('tmp/cache'));
340
- if (t !== 'ok') {
341
- throw result;
342
- }
229
+ assert(t === 'ok', result);
343
230
  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
- }
231
+ assert(!(typeof tmp !== 'object' || Array.isArray(tmp)), state.root);
232
+ assertEq(tmp.cache, undefined, tmp);
350
233
  },
351
234
  noSuchFile: () => {
352
235
  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
- }
236
+ assert(t === 'error', result);
237
+ assertEq(result, 'no such file');
359
238
  },
360
239
  isDirectory: () => {
361
240
  const [state, [t, result]] = virtual({
362
241
  ...emptyState,
363
242
  root: { tmp: {} },
364
243
  })(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
- }
244
+ assert(t === 'error', result);
245
+ assertEq(result, 'invalid path');
246
+ assert(state.root.tmp !== undefined, state.root);
374
247
  },
375
248
  },
376
249
  both: () => {
@@ -381,24 +254,14 @@ export const proof = {
381
254
  b: [vec8(0x15n)],
382
255
  },
383
256
  })(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
- }
257
+ assert(results[0][0] === 'ok', results[0]);
258
+ assert(results[1][0] === 'ok', results[1]);
259
+ assertEq(uint(results[0][1]), 0x2an, results[0][1]);
260
+ assertEq(uint(results[1][1]), 0x15n, results[1][1]);
396
261
  },
397
262
  now: () => {
398
263
  const [_, result] = virtual({ ...emptyState, epochNs: 1_000_000 })(now());
399
- if (result !== 1_000_000) {
400
- throw result;
401
- }
264
+ assertEq(result, 1_000_000);
402
265
  },
403
266
  sandbox: {
404
267
  // Virtual `sandbox` is now a pass-through: the function is expected
@@ -406,41 +269,27 @@ export const proof = {
406
269
  // (and `duration`) instead of the runner measuring.
407
270
  ok: () => {
408
271
  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
- }
272
+ assert(result[0] === 'ok', result);
273
+ assertEq(result[1], 42);
274
+ assertEq(duration, 0);
418
275
  },
419
276
  error: () => {
420
277
  const err = new Error('fail');
421
278
  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
- }
279
+ assert(result[0] === 'error', result);
280
+ assertEq(result[1], err);
428
281
  },
429
282
  },
430
283
  memory: {
431
284
  createAndRead: () => {
432
285
  const effect = memCreate(42).step(key => memRead(key));
433
286
  const [_, value] = virtual(emptyState)(effect);
434
- if (value !== 42) {
435
- throw value;
436
- }
287
+ assertEq(value, 42);
437
288
  },
438
289
  createAndWrite: () => {
439
290
  const effect = memCreate(1).step(key => memWrite(key, 99).step(() => memRead(key)));
440
291
  const [_, value] = virtual(emptyState)(effect);
441
- if (value !== 99) {
442
- throw value;
443
- }
292
+ assertEq(value, 99);
444
293
  },
445
294
  },
446
295
  rename: {
@@ -449,52 +298,32 @@ export const proof = {
449
298
  ...emptyState,
450
299
  root: { src: [vec8(0x2an)], dst: [vec8(0x15n)] },
451
300
  })(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
- }
301
+ assert(t === 'ok', result);
302
+ assertEq(state.root.src, undefined, state.root);
303
+ assert(Array.isArray(state.root.dst), state.root);
304
+ assertEq(uint(state.root.dst[0]), 0x2an, state.root);
464
305
  },
465
306
  nestedRename: () => {
466
307
  const [state, [t, result]] = virtual({
467
308
  ...emptyState,
468
309
  root: { tmp: { src: [vec8(0x2an)] } },
469
310
  })(rename('tmp/src', 'tmp/dst'));
470
- if (t !== 'ok') {
471
- throw result;
472
- }
311
+ assert(t === 'ok', result);
473
312
  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
- }
313
+ assert(!(typeof tmp !== 'object' || Array.isArray(tmp)), state.root);
314
+ assertEq(tmp.src, undefined, tmp);
480
315
  },
481
316
  dirOverFile: () => {
482
317
  const [state, [t, result]] = virtual({
483
318
  ...emptyState,
484
319
  root: { src: {}, dst: [vec8(0x15n)] },
485
320
  })(rename('src', 'dst'));
486
- if (t !== 'error') {
487
- throw result;
488
- }
489
- if (!Array.isArray(state.root.dst)) {
490
- throw state.root;
491
- }
321
+ assert(t === 'error', result);
322
+ assert(Array.isArray(state.root.dst), state.root);
492
323
  },
493
324
  missingSource: () => {
494
325
  const [_, [t, result]] = virtual(emptyState)(rename('missing', 'dst'));
495
- if (t !== 'error') {
496
- throw result;
497
- }
326
+ assert(t === 'error', result);
498
327
  },
499
328
  },
500
329
  readBytes: {
@@ -503,55 +332,37 @@ export const proof = {
503
332
  ...emptyState,
504
333
  root: { file: [vec8(0xabn)] },
505
334
  })(readBytes('file', 0, 1));
506
- if (t !== 'ok') {
507
- throw result;
508
- }
509
- if (!isVec(result)) {
510
- throw result;
511
- }
335
+ assert(t === 'ok', result);
336
+ assert(isVec(result), result);
512
337
  },
513
338
  withOffset: () => {
514
339
  const [_, [t, result]] = virtual({
515
340
  ...emptyState,
516
341
  root: { file: [vec8(0xabn), vec8(0xcdn)] },
517
342
  })(readBytes('file', 1, 1));
518
- if (t !== 'ok') {
519
- throw result;
520
- }
521
- if (!isVec(result)) {
522
- throw result;
523
- }
343
+ assert(t === 'ok', result);
344
+ assert(isVec(result), result);
524
345
  },
525
346
  oversizeChunk: () => {
526
347
  const [_, [t, result]] = virtual({
527
348
  ...emptyState,
528
349
  root: { file: [vec8(0x2an)] },
529
350
  })(readBytes('file', 0, Number(2n ** 32n)));
530
- if (t !== 'error') {
531
- throw result;
532
- }
351
+ assert(t === 'error', result);
533
352
  },
534
353
  missingFile: () => {
535
354
  const [_, [t, result]] = virtual(emptyState)(readBytes('missing', 0, 4));
536
- if (t !== 'error') {
537
- throw result;
538
- }
355
+ assert(t === 'error', result);
539
356
  },
540
357
  },
541
358
  randomInt: {
542
359
  increments: () => {
543
360
  const [state1, r1] = virtual(emptyState)(randomInt());
544
- if (r1 !== 0) {
545
- throw r1;
546
- }
361
+ assertEq(r1, 0);
547
362
  const [state2, r2] = virtual(state1)(randomInt());
548
- if (r2 !== 1) {
549
- throw r2;
550
- }
363
+ assertEq(r2, 1);
551
364
  const [_, r3] = virtual(state2)(randomInt());
552
- if (r3 !== 2) {
553
- throw r3;
554
- }
365
+ assertEq(r3, 2);
555
366
  },
556
367
  },
557
368
  writeFromStream: {
@@ -562,13 +373,16 @@ export const proof = {
562
373
  ...emptyState,
563
374
  root: { hello: [vec8(0x2an)] },
564
375
  })(writeFromStream('hello', listEmpty()));
565
- if (t !== 'error') {
566
- throw result;
567
- }
376
+ assert(t === 'error', result);
568
377
  const file = state.root.hello;
569
- if (!Array.isArray(file) || uint(file[0]) !== 0x2an) {
570
- throw file;
571
- }
378
+ assert(!(!Array.isArray(file) || uint(file[0]) !== 0x2an), file);
379
+ },
380
+ invalidBufferSize: () => {
381
+ // A chunk whose bit length isn't a multiple of 8 trips the
382
+ // byte-alignment guard before `writeBytes` is ever called.
383
+ const [_, [t, result]] = virtual(emptyState)(writeFromStream('hello', listNonEmpty(['ok', vec(4n)(10n)], listEmpty())));
384
+ assert(t === 'error', result);
385
+ assertEq(result, 'invalid buffer size');
572
386
  },
573
387
  },
574
388
  };
@@ -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;