functionalscript 0.36.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 (523) hide show
  1. package/README.md +1 -1
  2. package/{fs → fjs}/asn.1/module.f.js +1 -1
  3. package/{fs → fjs}/asn.1/proof.f.js +32 -94
  4. package/fjs/asserts/module.f.d.ts +36 -0
  5. package/fjs/asserts/module.f.js +39 -0
  6. package/fjs/asserts/proof.f.d.ts +11 -0
  7. package/fjs/asserts/proof.f.js +18 -0
  8. package/{fs → fjs}/base_n/module.f.js +3 -3
  9. package/{fs → fjs}/base_n/proof.f.js +15 -39
  10. package/{fs → fjs/basen}/base128/module.f.d.ts +1 -1
  11. package/{fs → fjs/basen}/base128/module.f.js +1 -1
  12. package/{fs → fjs/basen}/base128/proof.f.js +3 -3
  13. package/{fs → fjs/basen}/base64/module.f.d.ts +2 -2
  14. package/{fs → fjs/basen}/base64/module.f.js +25 -15
  15. package/{fs → fjs/basen}/base64/proof.f.d.ts +2 -0
  16. package/{fs → fjs/basen}/base64/proof.f.js +26 -6
  17. package/{fs → fjs/basen}/cbase32/module.f.d.ts +2 -2
  18. package/{fs → fjs/basen}/cbase32/module.f.js +2 -2
  19. package/{fs → fjs/basen}/cbase32/proof.f.js +16 -43
  20. package/fjs/bnf/data/module.f.d.ts +52 -0
  21. package/{fs → fjs}/bnf/data/module.f.js +56 -6
  22. package/{fs → fjs}/bnf/data/proof.f.d.ts +1 -0
  23. package/{fs → fjs}/bnf/data/proof.f.js +59 -24
  24. package/{fs → fjs}/bnf/descent/module.f.d.ts +4 -14
  25. package/fjs/bnf/descent/module.f.js +124 -0
  26. package/{fs → fjs}/bnf/descent/proof.f.d.ts +1 -0
  27. package/{fs → fjs}/bnf/descent/proof.f.js +59 -28
  28. package/{fs → fjs}/bnf/ll1/module.f.d.ts +4 -4
  29. package/{fs → fjs}/bnf/ll1/module.f.js +15 -13
  30. package/{fs → fjs}/bnf/ll1/proof.f.d.ts +1 -0
  31. package/{fs → fjs}/bnf/ll1/proof.f.js +33 -16
  32. package/{fs → fjs}/bnf/module.f.d.ts +19 -5
  33. package/{fs → fjs}/bnf/module.f.js +14 -15
  34. package/fjs/bnf/proof.f.js +69 -0
  35. package/{fs → fjs}/bnf/testlib.f.js +2 -2
  36. package/{fs → fjs}/cas/cli/module.f.js +7 -7
  37. package/{fs → fjs}/cas/cli/proof.f.d.ts +4 -1
  38. package/{fs → fjs}/cas/cli/proof.f.js +37 -74
  39. package/fjs/cas/evo/mcp/module.f.d.ts +19 -0
  40. package/fjs/cas/evo/mcp/module.f.js +56 -0
  41. package/fjs/cas/evo/mcp/proof.f.d.ts +9 -0
  42. package/fjs/cas/evo/mcp/proof.f.js +95 -0
  43. package/fjs/cas/evo/module.f.d.ts +138 -0
  44. package/fjs/cas/evo/module.f.js +309 -0
  45. package/fjs/cas/evo/proof.f.d.ts +32 -0
  46. package/fjs/cas/evo/proof.f.js +453 -0
  47. package/fjs/cas/mcp/module.f.d.ts +49 -0
  48. package/fjs/cas/mcp/module.f.js +267 -0
  49. package/{fs → fjs}/cas/mcp/proof.f.d.ts +7 -2
  50. package/{fs → fjs}/cas/mcp/proof.f.js +116 -60
  51. package/{fs → fjs}/cas/module.f.d.ts +10 -0
  52. package/{fs → fjs}/cas/module.f.js +36 -10
  53. package/{fs → fjs}/cas/proof.f.d.ts +8 -2
  54. package/{fs → fjs}/cas/proof.f.js +85 -94
  55. package/{fs → fjs}/ci/bun/module.f.js +2 -2
  56. package/{fs → fjs}/ci/common/module.f.d.ts +2 -2
  57. package/{fs → fjs}/ci/common/module.f.js +4 -4
  58. package/fjs/ci/config/module.f.d.ts +42 -0
  59. package/{fs → fjs}/ci/config/module.f.js +6 -8
  60. package/fjs/ci/deno/module.f.js +20 -0
  61. package/{fs → fjs}/ci/module.f.js +9 -9
  62. package/{fs → fjs}/ci/node/module.f.d.ts +1 -1
  63. package/{fs → fjs}/ci/node/module.f.js +3 -5
  64. package/{fs → fjs}/ci/playwright/module.f.js +3 -3
  65. package/{fs → fjs}/ci/proof.f.js +27 -22
  66. package/{fs → fjs}/ci/rust/module.f.js +11 -3
  67. package/{fs → fjs}/cli/module.f.js +3 -3
  68. package/{fs → fjs}/cli/proof.f.js +25 -66
  69. package/{fs/types → fjs/common}/monoid/module.f.d.ts +1 -1
  70. package/{fs/types → fjs/common}/monoid/proof.f.js +4 -9
  71. package/{fs → fjs}/crypto/hmac/module.f.js +2 -2
  72. package/{fs → fjs}/crypto/hmac/proof.f.js +9 -17
  73. package/{fs → fjs}/crypto/pow/module.f.js +3 -3
  74. package/fjs/crypto/pow/proof.f.js +111 -0
  75. package/{fs → fjs}/crypto/secp/module.f.js +2 -2
  76. package/{fs → fjs}/crypto/secp/proof.f.js +14 -35
  77. package/{fs → fjs}/crypto/sha2/module.f.js +2 -2
  78. package/{fs → fjs}/crypto/sha2/proof.f.js +23 -54
  79. package/{fs → fjs}/crypto/sign/module.f.d.ts +0 -5
  80. package/{fs → fjs}/crypto/sign/module.f.js +11 -8
  81. package/{fs → fjs}/crypto/sign/proof.f.js +36 -105
  82. package/{fs → fjs}/crypto/vdf/module.f.js +1 -1
  83. package/{fs → fjs}/crypto/vdf/proof.f.js +23 -64
  84. package/{fs → fjs}/dev/module.f.js +6 -6
  85. package/{fs → fjs}/dev/package_json/module.f.js +6 -6
  86. package/{fs → fjs}/dev/package_json/proof.f.js +9 -9
  87. package/{fs → fjs}/dev/proof.f.js +3 -5
  88. package/{fs → fjs}/djs/ast/module.f.js +2 -2
  89. package/{fs → fjs}/djs/ast/proof.f.js +8 -16
  90. package/fjs/djs/examples/m.f.d.ts +2 -0
  91. package/{fs → fjs}/djs/module.f.d.ts +1 -1
  92. package/{fs → fjs}/djs/module.f.js +5 -5
  93. package/{fs → fjs}/djs/parser/module.f.d.ts +5 -0
  94. package/{fs → fjs}/djs/parser/module.f.js +24 -4
  95. package/{fs → fjs}/djs/parser/proof.f.js +145 -407
  96. package/{fs → fjs}/djs/proof.f.js +16 -39
  97. package/{fs → fjs}/djs/serializer/module.f.js +6 -6
  98. package/{fs → fjs}/djs/serializer/proof.f.js +18 -43
  99. package/fjs/djs/tokenizer/module.f.d.ts +24 -0
  100. package/fjs/djs/tokenizer/module.f.js +472 -0
  101. package/{fs/djs/tokenizer-new → fjs/djs/tokenizer}/proof.f.d.ts +4 -3
  102. package/{fs/djs/tokenizer-new → fjs/djs/tokenizer}/proof.f.js +447 -446
  103. package/{fs → fjs}/djs/transpiler/module.f.d.ts +5 -0
  104. package/{fs → fjs}/djs/transpiler/module.f.js +21 -11
  105. package/{fs → fjs}/djs/transpiler/proof.f.d.ts +3 -0
  106. package/fjs/djs/transpiler/proof.f.js +67 -0
  107. package/{fs → fjs}/effects/memory/module.f.js +4 -4
  108. package/{fs → fjs}/effects/memory/proof.f.js +11 -24
  109. package/{fs → fjs}/effects/module.f.js +1 -1
  110. package/{fs → fjs}/effects/node/memory/module.js +2 -2
  111. package/{fs → fjs}/effects/node/memory/proof.js +8 -15
  112. package/{fs → fjs}/effects/node/module.d.ts +1 -1
  113. package/{fs → fjs}/effects/node/module.f.d.ts +1 -1
  114. package/{fs → fjs}/effects/node/module.f.js +7 -7
  115. package/{fs → fjs}/effects/node/module.js +13 -13
  116. package/{fs → fjs}/effects/node/proof.f.d.ts +1 -0
  117. package/{fs → fjs}/effects/node/proof.f.js +106 -292
  118. package/{fs → fjs}/effects/node/virtual/module.f.js +7 -7
  119. package/{fs → fjs}/effects/node/virtual/proof.f.d.ts +2 -0
  120. package/{fs → fjs}/effects/node/virtual/proof.f.js +44 -30
  121. package/{fs → fjs}/effects/proof.f.js +18 -47
  122. package/fjs/emergent_testing/all.test.js +4 -0
  123. package/{fs → fjs}/emergent_testing/example.f.d.ts +1 -1
  124. package/{fs → fjs}/emergent_testing/module.f.js +6 -6
  125. package/{fs → fjs}/emergent_testing/proof.f.d.ts +19 -17
  126. package/{fs → fjs}/emergent_testing/proof.f.js +14 -14
  127. package/fjs/emergent_testing/scenarios/all.js +1 -0
  128. package/{fs → fjs}/fsc/bnf.f.js +2 -2
  129. package/{fs → fjs}/fsc/json.f.js +1 -1
  130. package/{fs → fjs}/fsc/module.f.js +7 -7
  131. package/{fs → fjs}/fsc/proof.f.js +16 -38
  132. package/{fs → fjs}/fsm/module.f.js +9 -9
  133. package/{fs → fjs}/fsm/proof.f.js +12 -19
  134. package/{fs → fjs}/js/tokenizer/module.f.js +7 -7
  135. package/{fs → fjs}/js/tokenizer/proof.f.js +5 -5
  136. package/{fs → fjs}/mcp/module.f.d.ts +20 -13
  137. package/{fs → fjs}/mcp/module.f.js +16 -9
  138. package/{fs → fjs}/mcp/proof.f.js +17 -17
  139. package/{fs → fjs}/mcp/stdio/module.f.d.ts +4 -4
  140. package/{fs → fjs}/mcp/stdio/module.f.js +12 -12
  141. package/{fs → fjs}/mcp/stdio/proof.f.js +10 -10
  142. package/{fs → fjs/media}/html/module.f.d.ts +3 -3
  143. package/{fs → fjs/media}/html/module.f.js +9 -9
  144. package/{fs → fjs/media}/html/proof.f.js +12 -33
  145. package/fjs/media/json/module.f.d.ts +50 -0
  146. package/{fs → fjs/media}/json/module.f.js +7 -7
  147. package/{fs → fjs/media}/json/parser/module.f.d.ts +7 -2
  148. package/{fs → fjs/media}/json/parser/module.f.js +21 -7
  149. package/{fs → fjs/media}/json/parser/proof.f.js +45 -120
  150. package/{fs → fjs/media}/json/proof.f.js +4 -4
  151. package/fjs/media/json/rpc/module.f.d.ts +114 -0
  152. package/{fs → fjs/media}/json/rpc/module.f.js +4 -4
  153. package/{fs → fjs/media}/json/rpc/proof.f.js +4 -4
  154. package/fjs/media/json/schema/module.f.d.ts +78 -0
  155. package/{fs → fjs/media}/json/schema/module.f.js +25 -41
  156. package/{fs → fjs/media}/json/schema/proof.f.js +6 -9
  157. package/{fs → fjs/media}/json/serializer/module.f.d.ts +1 -1
  158. package/{fs → fjs/media}/json/serializer/module.f.js +2 -2
  159. package/{fs → fjs/media}/json/serializer/proof.f.js +12 -29
  160. package/{fs → fjs/media}/json/tokenizer/module.f.d.ts +2 -2
  161. package/{fs → fjs/media}/json/tokenizer/module.f.js +4 -4
  162. package/{fs → fjs/media}/json/tokenizer/proof.f.js +5 -5
  163. package/fjs/media/module.f.d.ts +37 -0
  164. package/fjs/media/module.f.js +23 -0
  165. package/fjs/media/proof.f.d.ts +9 -0
  166. package/fjs/media/proof.f.js +58 -0
  167. package/fjs/media/revision/module.f.d.ts +78 -0
  168. package/fjs/media/revision/module.f.js +122 -0
  169. package/fjs/media/revision/proof.f.d.ts +31 -0
  170. package/fjs/media/revision/proof.f.js +140 -0
  171. package/{fs/mime → fjs/media/type}/module.f.d.ts +6 -6
  172. package/{fs/mime → fjs/media/type}/module.f.js +6 -6
  173. package/{fs/mime → fjs/media/type}/proof.f.js +8 -12
  174. package/fjs/module.f.d.ts +2 -0
  175. package/{fs/fjs → fjs}/module.f.js +9 -9
  176. package/fjs/module.js +4 -0
  177. package/{fs → fjs}/path/module.f.js +2 -2
  178. package/{fs → fjs}/path/proof.f.js +27 -78
  179. package/{fs/fjs → fjs}/proof.f.js +6 -4
  180. package/{fs → fjs}/sul/id/module.f.js +9 -9
  181. package/{fs → fjs}/sul/id/proof.f.js +12 -26
  182. package/{fs → fjs}/sul/level/hash/module.f.js +3 -3
  183. package/{fs → fjs}/sul/level/hash/proof.f.js +8 -8
  184. package/{fs → fjs}/sul/level/literal/module.f.js +5 -5
  185. package/{fs → fjs}/sul/level/literal/proof.f.js +15 -29
  186. package/{fs → fjs}/sul/module.f.js +3 -3
  187. package/{fs → fjs}/sul/proof.f.js +3 -3
  188. package/fjs/text/ascii/proof.f.d.ts +6 -0
  189. package/fjs/text/ascii/proof.f.js +14 -0
  190. package/{fs → fjs}/text/code_point/module.f.js +12 -12
  191. package/{fs → fjs}/text/code_point/proof.f.js +1 -1
  192. package/{fs → fjs}/text/module.f.js +5 -5
  193. package/{fs → fjs}/text/proof.f.js +7 -12
  194. package/{fs → fjs}/text/sgr/module.f.js +2 -2
  195. package/{fs → fjs}/text/sgr/proof.f.js +8 -17
  196. package/{fs → fjs}/text/utf16/module.f.js +6 -6
  197. package/{fs → fjs}/text/utf16/proof.f.js +27 -70
  198. package/{fs → fjs}/text/utf8/module.f.js +22 -17
  199. package/{fs → fjs}/text/utf8/proof.f.js +59 -128
  200. package/{fs → fjs}/types/array/module.f.js +1 -1
  201. package/{fs → fjs}/types/array/proof.f.js +21 -55
  202. package/{fs → fjs}/types/bigfloat/module.f.js +1 -1
  203. package/fjs/types/bigfloat/proof.f.js +217 -0
  204. package/{fs → fjs}/types/bigint/module.f.js +2 -2
  205. package/{fs → fjs}/types/bigint/proof.f.js +51 -147
  206. package/{fs → fjs}/types/bit_vec/module.f.js +8 -8
  207. package/{fs → fjs}/types/bit_vec/proof.f.js +76 -218
  208. package/{fs → fjs}/types/btree/find/module.f.js +1 -1
  209. package/fjs/types/btree/find/proof.f.d.ts +3 -0
  210. package/fjs/types/btree/find/proof.f.js +108 -0
  211. package/{fs → fjs}/types/btree/module.f.js +2 -2
  212. package/fjs/types/btree/proof.f.d.ts +13 -0
  213. package/{fs → fjs}/types/btree/proof.f.js +12 -19
  214. package/{fs → fjs}/types/btree/remove/module.f.js +4 -4
  215. package/fjs/types/btree/remove/proof.f.d.ts +9 -0
  216. package/{fs → fjs}/types/btree/remove/proof.f.js +88 -235
  217. package/{fs → fjs}/types/btree/set/module.f.js +8 -5
  218. package/{fs → fjs}/types/btree/set/proof.f.js +39 -28
  219. package/{fs → fjs}/types/byte_set/module.f.js +2 -2
  220. package/fjs/types/byte_set/proof.f.js +79 -0
  221. package/{fs → fjs}/types/function/compare/proof.f.js +14 -37
  222. package/fjs/types/function/operator/proof.f.d.ts +23 -0
  223. package/{fs → fjs}/types/function/operator/proof.f.js +18 -49
  224. package/{fs → fjs}/types/function/proof.f.js +3 -4
  225. package/{fs → fjs}/types/list/module.f.js +2 -2
  226. package/fjs/types/list/proof.f.d.ts +30 -0
  227. package/{fs → fjs}/types/list/proof.f.js +59 -167
  228. package/{fs → fjs}/types/map/proof.f.js +6 -14
  229. package/fjs/types/nibble_set/proof.f.js +60 -0
  230. package/{fs → fjs}/types/nominal/proof.f.js +5 -10
  231. package/{fs → fjs}/types/nullable/module.f.js +2 -2
  232. package/fjs/types/nullable/proof.f.js +29 -0
  233. package/{fs → fjs}/types/number/module.f.js +5 -5
  234. package/{fs → fjs}/types/number/proof.f.js +10 -25
  235. package/{fs → fjs}/types/object/module.f.js +4 -4
  236. package/{fs → fjs}/types/object/proof.f.js +4 -7
  237. package/{fs → fjs}/types/ordered_map/module.f.js +6 -6
  238. package/{fs → fjs}/types/ordered_map/proof.f.js +3 -3
  239. package/fjs/types/patricia_trie/proof.f.d.ts +13 -0
  240. package/{fs → fjs}/types/patricia_trie/proof.f.js +22 -22
  241. package/{fs → fjs}/types/prime_field/module.f.js +3 -8
  242. package/{fs → fjs}/types/prime_field/proof.f.js +2 -2
  243. package/{fs → fjs}/types/range/module.f.d.ts +1 -1
  244. package/fjs/types/range/module.f.js +2 -0
  245. package/fjs/types/range/proof.f.js +9 -0
  246. package/{fs → fjs}/types/range_map/module.f.js +4 -4
  247. package/{fs → fjs}/types/range_map/proof.f.js +35 -88
  248. package/{fs → fjs}/types/result/module.js +1 -1
  249. package/fjs/types/result/proof.f.d.ts +12 -0
  250. package/fjs/types/result/proof.f.js +31 -0
  251. package/{fs → fjs}/types/rtti/common/module.f.d.ts +36 -1
  252. package/{fs → fjs}/types/rtti/common/module.f.js +48 -4
  253. package/fjs/types/rtti/common/proof.f.d.ts +8 -0
  254. package/fjs/types/rtti/common/proof.f.js +51 -0
  255. package/{fs → fjs}/types/rtti/module.f.d.ts +2 -2
  256. package/{fs → fjs}/types/rtti/module.f.js +1 -1
  257. package/{fs → fjs}/types/rtti/parse/module.f.js +16 -25
  258. package/{fs → fjs}/types/rtti/parse/proof.f.js +9 -20
  259. package/{fs → fjs}/types/rtti/ts/module.f.d.ts +10 -4
  260. package/{fs → fjs}/types/rtti/ts/module.f.js +1 -1
  261. package/{fs → fjs}/types/rtti/ts/proof.f.js +2 -2
  262. package/{fs → fjs}/types/rtti/validate/module.f.js +11 -32
  263. package/{fs → fjs}/types/rtti/validate/proof.f.js +6 -11
  264. package/{fs → fjs}/types/sorted_list/module.f.js +3 -3
  265. package/{fs → fjs}/types/sorted_list/proof.f.js +14 -27
  266. package/{fs → fjs}/types/sorted_set/module.f.js +1 -1
  267. package/{fs → fjs}/types/sorted_set/proof.f.js +20 -45
  268. package/{fs → fjs}/types/string/module.f.js +4 -4
  269. package/fjs/types/string/proof.f.js +77 -0
  270. package/{fs → fjs}/types/string_set/module.f.js +6 -6
  271. package/fjs/types/string_set/proof.f.js +43 -0
  272. package/{fs → fjs}/types/ts/proof.f.d.ts +18 -18
  273. package/{fs → fjs}/types/ts/proof.f.js +16 -43
  274. package/{fs → fjs}/types/uint8array/module.f.js +10 -10
  275. package/{fs → fjs}/types/uint8array/proof.f.d.ts +4 -1
  276. package/{fs → fjs}/types/uint8array/proof.f.js +11 -11
  277. package/{fs → fjs}/website/module.f.js +3 -3
  278. package/fjs/website/proof.f.js +13 -0
  279. package/package.json +8 -8
  280. package/fs/asserts/module.f.d.ts +0 -4
  281. package/fs/asserts/module.f.js +0 -9
  282. package/fs/asserts/proof.f.d.ts +0 -8
  283. package/fs/asserts/proof.f.js +0 -51
  284. package/fs/bnf/data/module.f.d.ts +0 -30
  285. package/fs/bnf/descent/module.f.js +0 -119
  286. package/fs/bnf/proof.f.js +0 -104
  287. package/fs/cas/mcp/module.f.d.ts +0 -36
  288. package/fs/cas/mcp/module.f.js +0 -249
  289. package/fs/ci/config/module.f.d.ts +0 -43
  290. package/fs/ci/deno/module.f.js +0 -16
  291. package/fs/crypto/pow/proof.f.js +0 -161
  292. package/fs/djs/examples/m.f.d.ts +0 -2
  293. package/fs/djs/tokenizer/module.f.d.ts +0 -12
  294. package/fs/djs/tokenizer/module.f.js +0 -62
  295. package/fs/djs/tokenizer/proof.f.d.ts +0 -7
  296. package/fs/djs/tokenizer/proof.f.js +0 -543
  297. package/fs/djs/tokenizer-new/module.f.d.ts +0 -3
  298. package/fs/djs/tokenizer-new/module.f.js +0 -155
  299. package/fs/djs/transpiler/proof.f.js +0 -68
  300. package/fs/emergent_testing/all.test.js +0 -4
  301. package/fs/emergent_testing/scenarios/all.js +0 -1
  302. package/fs/fjs/module.f.d.ts +0 -2
  303. package/fs/fjs/module.js +0 -4
  304. package/fs/json/module.f.d.ts +0 -50
  305. package/fs/json/rpc/module.f.d.ts +0 -114
  306. package/fs/json/schema/module.f.d.ts +0 -77
  307. package/fs/text/ascii/proof.f.d.ts +0 -4
  308. package/fs/text/ascii/proof.f.js +0 -24
  309. package/fs/types/bigfloat/proof.f.js +0 -348
  310. package/fs/types/btree/find/proof.f.js +0 -151
  311. package/fs/types/btree/proof.f.d.ts +0 -7
  312. package/fs/types/btree/remove/proof.f.d.ts +0 -4
  313. package/fs/types/byte_set/proof.f.js +0 -120
  314. package/fs/types/function/operator/proof.f.d.ts +0 -12
  315. package/fs/types/list/proof.f.d.ts +0 -22
  316. package/fs/types/nibble_set/proof.f.js +0 -89
  317. package/fs/types/nullable/proof.f.js +0 -50
  318. package/fs/types/patricia_trie/proof.f.d.ts +0 -7
  319. package/fs/types/range/module.f.js +0 -2
  320. package/fs/types/range/proof.f.d.ts +0 -1
  321. package/fs/types/range/proof.f.js +0 -18
  322. package/fs/types/result/proof.f.d.ts +0 -6
  323. package/fs/types/result/proof.f.js +0 -52
  324. package/fs/types/string/proof.f.js +0 -118
  325. package/fs/types/string_set/proof.f.js +0 -82
  326. package/fs/website/proof.f.js +0 -16
  327. /package/{fs → fjs}/asn.1/module.f.d.ts +0 -0
  328. /package/{fs → fjs}/asn.1/proof.f.d.ts +0 -0
  329. /package/{fs → fjs}/base_n/module.f.d.ts +0 -0
  330. /package/{fs → fjs}/base_n/proof.f.d.ts +0 -0
  331. /package/{fs → fjs/basen}/base128/proof.f.d.ts +0 -0
  332. /package/{fs → fjs/basen}/cbase32/proof.f.d.ts +0 -0
  333. /package/{fs → fjs}/bnf/proof.f.d.ts +0 -0
  334. /package/{fs → fjs}/bnf/testlib.f.d.ts +0 -0
  335. /package/{fs → fjs}/cas/cli/module.f.d.ts +0 -0
  336. /package/{fs → fjs}/ci/bun/module.f.d.ts +0 -0
  337. /package/{fs → fjs}/ci/deno/module.f.d.ts +0 -0
  338. /package/{fs → fjs}/ci/module.f.d.ts +0 -0
  339. /package/{fs → fjs}/ci/playwright/module.f.d.ts +0 -0
  340. /package/{fs → fjs}/ci/proof.f.d.ts +0 -0
  341. /package/{fs → fjs}/ci/rust/module.f.d.ts +0 -0
  342. /package/{fs → fjs}/cli/module.f.d.ts +0 -0
  343. /package/{fs → fjs}/cli/proof.f.d.ts +0 -0
  344. /package/{fs/types → fjs/common}/monoid/module.f.js +0 -0
  345. /package/{fs/types → fjs/common}/monoid/proof.f.d.ts +0 -0
  346. /package/{fs → fjs}/crypto/hmac/module.f.d.ts +0 -0
  347. /package/{fs → fjs}/crypto/hmac/proof.f.d.ts +0 -0
  348. /package/{fs → fjs}/crypto/pow/module.f.d.ts +0 -0
  349. /package/{fs → fjs}/crypto/pow/proof.f.d.ts +0 -0
  350. /package/{fs → fjs}/crypto/secp/module.f.d.ts +0 -0
  351. /package/{fs → fjs}/crypto/secp/proof.f.d.ts +0 -0
  352. /package/{fs → fjs}/crypto/sha2/module.f.d.ts +0 -0
  353. /package/{fs → fjs}/crypto/sha2/proof.f.d.ts +0 -0
  354. /package/{fs → fjs}/crypto/sign/proof.f.d.ts +0 -0
  355. /package/{fs → fjs}/crypto/vdf/module.f.d.ts +0 -0
  356. /package/{fs → fjs}/crypto/vdf/proof.f.d.ts +0 -0
  357. /package/{fs → fjs}/dev/module.f.d.ts +0 -0
  358. /package/{fs → fjs}/dev/package_json/module.f.d.ts +0 -0
  359. /package/{fs → fjs}/dev/package_json/proof.f.d.ts +0 -0
  360. /package/{fs → fjs}/dev/proof.f.d.ts +0 -0
  361. /package/{fs → fjs}/djs/ast/module.f.d.ts +0 -0
  362. /package/{fs → fjs}/djs/ast/proof.f.d.ts +0 -0
  363. /package/{fs → fjs}/djs/examples/input.f.d.ts +0 -0
  364. /package/{fs → fjs}/djs/examples/input.f.js +0 -0
  365. /package/{fs → fjs}/djs/examples/m.f.js +0 -0
  366. /package/{fs → fjs}/djs/parser/proof.f.d.ts +0 -0
  367. /package/{fs → fjs}/djs/proof.f.d.ts +0 -0
  368. /package/{fs → fjs}/djs/serializer/module.f.d.ts +0 -0
  369. /package/{fs → fjs}/djs/serializer/proof.f.d.ts +0 -0
  370. /package/{fs → fjs}/effects/list/module.f.d.ts +0 -0
  371. /package/{fs → fjs}/effects/list/module.f.js +0 -0
  372. /package/{fs → fjs}/effects/memory/module.f.d.ts +0 -0
  373. /package/{fs → fjs}/effects/memory/proof.f.d.ts +0 -0
  374. /package/{fs → fjs}/effects/mock/module.f.d.ts +0 -0
  375. /package/{fs → fjs}/effects/mock/module.f.js +0 -0
  376. /package/{fs → fjs}/effects/module.d.ts +0 -0
  377. /package/{fs → fjs}/effects/module.f.d.ts +0 -0
  378. /package/{fs → fjs}/effects/module.js +0 -0
  379. /package/{fs → fjs}/effects/node/memory/module.d.ts +0 -0
  380. /package/{fs → fjs}/effects/node/memory/proof.d.ts +0 -0
  381. /package/{fs → fjs}/effects/node/virtual/module.f.d.ts +0 -0
  382. /package/{fs → fjs}/effects/proof.f.d.ts +0 -0
  383. /package/{fs → fjs}/emergent_testing/all.test.d.ts +0 -0
  384. /package/{fs → fjs}/emergent_testing/example.f.js +0 -0
  385. /package/{fs → fjs}/emergent_testing/module.f.d.ts +0 -0
  386. /package/{fs → fjs}/emergent_testing/scenarios/all.d.ts +0 -0
  387. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.fail.d.ts +0 -0
  388. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.fail.js +0 -0
  389. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.pass.d.ts +0 -0
  390. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.pass.js +0 -0
  391. /package/{fs → fjs}/emergent_testing/scenarios/async.fail.d.ts +0 -0
  392. /package/{fs → fjs}/emergent_testing/scenarios/async.fail.js +0 -0
  393. /package/{fs → fjs}/emergent_testing/scenarios/async.pass.d.ts +0 -0
  394. /package/{fs → fjs}/emergent_testing/scenarios/async.pass.js +0 -0
  395. /package/{fs → fjs}/emergent_testing/scenarios/fail.fail.d.ts +0 -0
  396. /package/{fs → fjs}/emergent_testing/scenarios/fail.fail.js +0 -0
  397. /package/{fs → fjs}/emergent_testing/scenarios/return-value.pass.d.ts +0 -0
  398. /package/{fs → fjs}/emergent_testing/scenarios/return-value.pass.js +0 -0
  399. /package/{fs → fjs}/emergent_testing/scenarios/thenable.pass.d.ts +0 -0
  400. /package/{fs → fjs}/emergent_testing/scenarios/thenable.pass.js +0 -0
  401. /package/{fs → fjs}/emergent_testing/scenarios/thenable2.pass.d.ts +0 -0
  402. /package/{fs → fjs}/emergent_testing/scenarios/thenable2.pass.js +0 -0
  403. /package/{fs → fjs}/emergent_testing/scenarios/throw.pass.d.ts +0 -0
  404. /package/{fs → fjs}/emergent_testing/scenarios/throw.pass.js +0 -0
  405. /package/{fs → fjs}/fsc/bnf.f.d.ts +0 -0
  406. /package/{fs → fjs}/fsc/json.f.d.ts +0 -0
  407. /package/{fs → fjs}/fsc/module.f.d.ts +0 -0
  408. /package/{fs → fjs}/fsc/proof.f.d.ts +0 -0
  409. /package/{fs → fjs}/fsm/module.f.d.ts +0 -0
  410. /package/{fs → fjs}/fsm/proof.f.d.ts +0 -0
  411. /package/{fs → fjs}/js/tokenizer/module.f.d.ts +0 -0
  412. /package/{fs → fjs}/js/tokenizer/proof.f.d.ts +0 -0
  413. /package/{fs → fjs}/mcp/proof.f.d.ts +0 -0
  414. /package/{fs → fjs}/mcp/stdio/proof.f.d.ts +0 -0
  415. /package/{fs → fjs/media}/html/proof.f.d.ts +0 -0
  416. /package/{fs → fjs/media}/json/parser/proof.f.d.ts +0 -0
  417. /package/{fs → fjs/media}/json/proof.f.d.ts +0 -0
  418. /package/{fs → fjs/media}/json/rpc/proof.f.d.ts +0 -0
  419. /package/{fs → fjs/media}/json/schema/proof.f.d.ts +0 -0
  420. /package/{fs → fjs/media}/json/serializer/proof.f.d.ts +0 -0
  421. /package/{fs → fjs/media}/json/tokenizer/proof.f.d.ts +0 -0
  422. /package/{fs/mime → fjs/media/type}/proof.f.d.ts +0 -0
  423. /package/{fs/fjs → fjs}/module.d.ts +0 -0
  424. /package/{fs → fjs}/path/module.f.d.ts +0 -0
  425. /package/{fs → fjs}/path/proof.f.d.ts +0 -0
  426. /package/{fs/fjs → fjs}/proof.f.d.ts +0 -0
  427. /package/{fs → fjs}/sul/id/module.f.d.ts +0 -0
  428. /package/{fs → fjs}/sul/id/proof.f.d.ts +0 -0
  429. /package/{fs → fjs}/sul/level/hash/module.f.d.ts +0 -0
  430. /package/{fs → fjs}/sul/level/hash/proof.f.d.ts +0 -0
  431. /package/{fs → fjs}/sul/level/literal/module.f.d.ts +0 -0
  432. /package/{fs → fjs}/sul/level/literal/proof.f.d.ts +0 -0
  433. /package/{fs → fjs}/sul/module.f.d.ts +0 -0
  434. /package/{fs → fjs}/sul/proof.f.d.ts +0 -0
  435. /package/{fs → fjs}/text/ascii/module.f.d.ts +0 -0
  436. /package/{fs → fjs}/text/ascii/module.f.js +0 -0
  437. /package/{fs → fjs}/text/code_point/module.f.d.ts +0 -0
  438. /package/{fs → fjs}/text/code_point/proof.f.d.ts +0 -0
  439. /package/{fs → fjs}/text/module.f.d.ts +0 -0
  440. /package/{fs → fjs}/text/proof.f.d.ts +0 -0
  441. /package/{fs → fjs}/text/sgr/module.f.d.ts +0 -0
  442. /package/{fs → fjs}/text/sgr/proof.f.d.ts +0 -0
  443. /package/{fs → fjs}/text/utf16/module.f.d.ts +0 -0
  444. /package/{fs → fjs}/text/utf16/proof.f.d.ts +0 -0
  445. /package/{fs → fjs}/text/utf8/module.f.d.ts +0 -0
  446. /package/{fs → fjs}/text/utf8/proof.f.d.ts +0 -0
  447. /package/{fs → fjs}/types/array/module.f.d.ts +0 -0
  448. /package/{fs → fjs}/types/array/proof.f.d.ts +0 -0
  449. /package/{fs → fjs}/types/bigfloat/module.f.d.ts +0 -0
  450. /package/{fs → fjs}/types/bigfloat/proof.f.d.ts +0 -0
  451. /package/{fs → fjs}/types/bigint/module.f.d.ts +0 -0
  452. /package/{fs → fjs}/types/bigint/proof.f.d.ts +0 -0
  453. /package/{fs → fjs}/types/bit_vec/module.f.d.ts +0 -0
  454. /package/{fs → fjs}/types/bit_vec/proof.f.d.ts +0 -0
  455. /package/{fs → fjs}/types/btree/find/module.f.d.ts +0 -0
  456. /package/{fs → fjs}/types/btree/module.f.d.ts +0 -0
  457. /package/{fs → fjs}/types/btree/remove/module.f.d.ts +0 -0
  458. /package/{fs → fjs}/types/btree/set/module.f.d.ts +0 -0
  459. /package/{fs → fjs}/types/btree/set/proof.f.d.ts +0 -0
  460. /package/{fs → fjs}/types/btree/types/module.f.d.ts +0 -0
  461. /package/{fs → fjs}/types/btree/types/module.f.js +0 -0
  462. /package/{fs → fjs}/types/byte_set/module.f.d.ts +0 -0
  463. /package/{fs → fjs}/types/byte_set/proof.f.d.ts +0 -0
  464. /package/{fs → fjs}/types/function/compare/module.f.d.ts +0 -0
  465. /package/{fs → fjs}/types/function/compare/module.f.js +0 -0
  466. /package/{fs/types/btree/find → fjs/types/function/compare}/proof.f.d.ts +0 -0
  467. /package/{fs → fjs}/types/function/module.f.d.ts +0 -0
  468. /package/{fs → fjs}/types/function/module.f.js +0 -0
  469. /package/{fs → fjs}/types/function/operator/module.f.d.ts +0 -0
  470. /package/{fs → fjs}/types/function/operator/module.f.js +0 -0
  471. /package/{fs/types/function/compare → fjs/types/function}/proof.f.d.ts +0 -0
  472. /package/{fs → fjs}/types/list/module.f.d.ts +0 -0
  473. /package/{fs → fjs}/types/map/module.f.d.ts +0 -0
  474. /package/{fs → fjs}/types/map/module.f.js +0 -0
  475. /package/{fs → fjs}/types/map/proof.f.d.ts +0 -0
  476. /package/{fs → fjs}/types/nibble_set/module.f.d.ts +0 -0
  477. /package/{fs → fjs}/types/nibble_set/module.f.js +0 -0
  478. /package/{fs → fjs}/types/nibble_set/proof.f.d.ts +0 -0
  479. /package/{fs → fjs}/types/nominal/module.f.d.ts +0 -0
  480. /package/{fs → fjs}/types/nominal/module.f.js +0 -0
  481. /package/{fs → fjs}/types/nominal/proof.f.d.ts +0 -0
  482. /package/{fs → fjs}/types/nullable/module.f.d.ts +0 -0
  483. /package/{fs → fjs}/types/nullable/proof.f.d.ts +0 -0
  484. /package/{fs → fjs}/types/number/module.f.d.ts +0 -0
  485. /package/{fs → fjs}/types/number/proof.f.d.ts +0 -0
  486. /package/{fs → fjs}/types/object/module.f.d.ts +0 -0
  487. /package/{fs → fjs}/types/object/proof.f.d.ts +0 -0
  488. /package/{fs → fjs}/types/option/module.f.d.ts +0 -0
  489. /package/{fs → fjs}/types/option/module.f.js +0 -0
  490. /package/{fs → fjs}/types/ordered_map/module.f.d.ts +0 -0
  491. /package/{fs → fjs}/types/ordered_map/proof.f.d.ts +0 -0
  492. /package/{fs → fjs}/types/patricia_trie/module.f.d.ts +0 -0
  493. /package/{fs → fjs}/types/patricia_trie/module.f.js +0 -0
  494. /package/{fs → fjs}/types/phantom/module.f.d.ts +0 -0
  495. /package/{fs → fjs}/types/phantom/module.f.js +0 -0
  496. /package/{fs → fjs}/types/prime_field/module.f.d.ts +0 -0
  497. /package/{fs → fjs}/types/prime_field/proof.f.d.ts +0 -0
  498. /package/{fs/types/function → fjs/types/range}/proof.f.d.ts +0 -0
  499. /package/{fs → fjs}/types/range_map/module.f.d.ts +0 -0
  500. /package/{fs → fjs}/types/range_map/proof.f.d.ts +0 -0
  501. /package/{fs → fjs}/types/result/module.d.ts +0 -0
  502. /package/{fs → fjs}/types/result/module.f.d.ts +0 -0
  503. /package/{fs → fjs}/types/result/module.f.js +0 -0
  504. /package/{fs → fjs}/types/rtti/parse/module.f.d.ts +0 -0
  505. /package/{fs → fjs}/types/rtti/parse/proof.f.d.ts +0 -0
  506. /package/{fs → fjs}/types/rtti/proof.f.d.ts +0 -0
  507. /package/{fs → fjs}/types/rtti/proof.f.js +0 -0
  508. /package/{fs → fjs}/types/rtti/ts/proof.f.d.ts +0 -0
  509. /package/{fs → fjs}/types/rtti/validate/module.f.d.ts +0 -0
  510. /package/{fs → fjs}/types/rtti/validate/proof.f.d.ts +0 -0
  511. /package/{fs → fjs}/types/sorted_list/module.f.d.ts +0 -0
  512. /package/{fs → fjs}/types/sorted_list/proof.f.d.ts +0 -0
  513. /package/{fs → fjs}/types/sorted_set/module.f.d.ts +0 -0
  514. /package/{fs → fjs}/types/sorted_set/proof.f.d.ts +0 -0
  515. /package/{fs → fjs}/types/string/module.f.d.ts +0 -0
  516. /package/{fs → fjs}/types/string/proof.f.d.ts +0 -0
  517. /package/{fs → fjs}/types/string_set/module.f.d.ts +0 -0
  518. /package/{fs → fjs}/types/string_set/proof.f.d.ts +0 -0
  519. /package/{fs → fjs}/types/ts/module.f.d.ts +0 -0
  520. /package/{fs → fjs}/types/ts/module.f.js +0 -0
  521. /package/{fs → fjs}/types/uint8array/module.f.d.ts +0 -0
  522. /package/{fs → fjs}/website/module.f.d.ts +0 -0
  523. /package/{fs → fjs}/website/proof.f.d.ts +0 -0
@@ -19,13 +19,13 @@
19
19
  * if (contains('banana')(mySet)) { throw '4' }
20
20
  * ```
21
21
  */
22
- import { empty as btEmpty, values as btValues } from "../btree/module.f.js";
23
- import { find, isFound } from "../btree/find/module.f.js";
24
- import { remove as btreeRemove } from "../btree/remove/module.f.js";
25
- import { set as btreeSet } from "../btree/set/module.f.js";
22
+ import { empty as btEmpty, values as btValues } from '../btree/module.f.js';
23
+ import { find, isFound } from '../btree/find/module.f.js';
24
+ import { remove as btreeRemove } from '../btree/remove/module.f.js';
25
+ import { set as btreeSet } from '../btree/set/module.f.js';
26
26
  import { cmp } from "../string/module.f.js";
27
- import { fold } from "../list/module.f.js";
28
- import { compose } from "../function/module.f.js";
27
+ import { fold } from '../list/module.f.js';
28
+ import { compose } from '../function/module.f.js';
29
29
  export const values = btValues;
30
30
  export const empty = btEmpty;
31
31
  export const contains = value => {
@@ -0,0 +1,43 @@
1
+ import { contains, fromValues, remove, set } from './module.f.js';
2
+ import { assert, assertEq } from '../../asserts/module.f.js';
3
+ export const proof = {
4
+ example: () => {
5
+ let mySet = fromValues(['apple', 'banana', 'cherry']);
6
+ assert(contains('banana')(mySet), '1');
7
+ assert(!(contains('date')(mySet)), '2');
8
+ mySet = set('date')(mySet);
9
+ assert(contains('date')(mySet), '3');
10
+ mySet = remove('banana')(mySet);
11
+ assert(!(contains('banana')(mySet)), '4');
12
+ },
13
+ contains: () => {
14
+ const r = set('hello')(null);
15
+ assert(contains('hello')(r), r);
16
+ assert(!(contains('hello1')(r)), r);
17
+ },
18
+ remove: () => {
19
+ let r = set('hello')(null);
20
+ r = set('world')(r);
21
+ r = set('HELLO')(r);
22
+ r = set('WORLD!')(r);
23
+ assert(contains('hello')(r), r);
24
+ assert(!(contains('hello1')(r)), r);
25
+ assert(contains('HELLO')(r), r);
26
+ assert(!(contains('WORLD')(r)), r);
27
+ assert(contains('world')(r), r);
28
+ assert(!(contains('world!')(r)), r);
29
+ assert(contains('WORLD!')(r), r);
30
+ //
31
+ r = remove('hello')(r);
32
+ assert(!(contains('hello')(r)), r);
33
+ assert(contains('world')(r), r);
34
+ r = remove('world')(r);
35
+ assert(!(contains('world')(r)), r);
36
+ assert(contains('HELLO')(r), r);
37
+ r = remove('HELLO')(r);
38
+ assert(!(contains('HELLO')(r)), r);
39
+ assert(contains('WORLD!')(r), r);
40
+ r = remove('WORLD!')(r);
41
+ assertEq(r, null);
42
+ }
43
+ };
@@ -17,22 +17,22 @@ export declare const printerMutableStruct: () => void;
17
17
  export declare const printerMutableArray: () => void;
18
18
  export declare const printerMutableRecord: () => void;
19
19
  export declare const proof: {
20
- primitiveNull: () => void;
21
- primitiveBigint: () => void;
22
- primitiveString: () => void;
23
- primitiveNumberFinite: () => void;
24
- primitiveNumberInfinite: () => void;
25
- primitiveUndefined: () => void;
26
- primitiveBoolean: () => void;
27
- unionEmpty: () => void;
28
- unionSingle: () => void;
29
- unionMulti: () => void;
30
- printerReadonlyTuple: () => void;
31
- printerReadonlyStruct: () => void;
32
- printerReadonlyArray: () => void;
33
- printerReadonlyRecord: () => void;
34
- printerMutableTuple: () => void;
35
- printerMutableStruct: () => void;
36
- printerMutableArray: () => void;
37
- printerMutableRecord: () => void;
20
+ primitiveNull: typeof primitiveNull;
21
+ primitiveBigint: typeof primitiveBigint;
22
+ primitiveString: typeof primitiveString;
23
+ primitiveNumberFinite: typeof primitiveNumberFinite;
24
+ primitiveNumberInfinite: typeof primitiveNumberInfinite;
25
+ primitiveUndefined: typeof primitiveUndefined;
26
+ primitiveBoolean: typeof primitiveBoolean;
27
+ unionEmpty: typeof unionEmpty;
28
+ unionSingle: typeof unionSingle;
29
+ unionMulti: typeof unionMulti;
30
+ printerReadonlyTuple: typeof printerReadonlyTuple;
31
+ printerReadonlyStruct: typeof printerReadonlyStruct;
32
+ printerReadonlyArray: typeof printerReadonlyArray;
33
+ printerReadonlyRecord: typeof printerReadonlyRecord;
34
+ printerMutableTuple: typeof printerMutableTuple;
35
+ printerMutableStruct: typeof printerMutableStruct;
36
+ printerMutableArray: typeof printerMutableArray;
37
+ printerMutableRecord: typeof printerMutableRecord;
38
38
  };
@@ -1,71 +1,50 @@
1
- import { printer, primitive, union } from "./module.f.js";
1
+ import { printer, primitive, union } from './module.f.js';
2
+ import { assertEq } from '../../asserts/module.f.js';
2
3
  const ro = printer();
3
4
  const mut = printer(true);
4
5
  export const primitiveNull = () => {
5
6
  const r = primitive(null);
6
- if (r !== 'null') {
7
- throw r;
8
- }
7
+ assertEq(r, 'null');
9
8
  };
10
9
  export const primitiveBigint = () => {
11
10
  const r = primitive(42n);
12
- if (r !== '42n') {
13
- throw r;
14
- }
11
+ assertEq(r, '42n');
15
12
  };
16
13
  export const primitiveString = () => {
17
14
  const r = primitive('hello');
18
- if (r !== '"hello"') {
19
- throw r;
20
- }
15
+ assertEq(r, '"hello"');
21
16
  };
22
17
  export const primitiveNumberFinite = () => {
23
18
  const r = primitive(3.14);
24
- if (r !== '3.14') {
25
- throw r;
26
- }
19
+ assertEq(r, '3.14');
27
20
  };
28
21
  export const primitiveNumberInfinite = () => {
29
22
  const r = primitive(Infinity);
30
- if (r !== 'number') {
31
- throw r;
32
- }
23
+ assertEq(r, 'number');
33
24
  };
34
25
  export const primitiveUndefined = () => {
35
26
  const r = primitive(undefined);
36
- if (r !== 'undefined') {
37
- throw r;
38
- }
27
+ assertEq(r, 'undefined');
39
28
  };
40
29
  export const primitiveBoolean = () => {
41
30
  const r = primitive(true);
42
- if (r !== 'true') {
43
- throw r;
44
- }
31
+ assertEq(r, 'true');
45
32
  };
46
33
  export const unionEmpty = () => {
47
34
  const r = union([]);
48
- if (r !== 'never') {
49
- throw r;
50
- }
35
+ assertEq(r, 'never');
51
36
  };
52
37
  export const unionSingle = () => {
53
38
  const r = union(['string']);
54
- if (r !== 'string') {
55
- throw r;
56
- }
39
+ assertEq(r, 'string');
57
40
  };
58
41
  export const unionMulti = () => {
59
42
  const r = union(['string', 'number']);
60
- if (r !== 'string|number') {
61
- throw r;
62
- }
43
+ assertEq(r, 'string|number');
63
44
  };
64
45
  export const printerReadonlyTuple = () => {
65
46
  const r = ro.tuple(['string', 'number']);
66
- if (r !== 'readonly[string,number]') {
67
- throw r;
68
- }
47
+ assertEq(r, 'readonly[string,number]');
69
48
  };
70
49
  export const printerReadonlyStruct = () => {
71
50
  const r = ro.struct([['x', 'number'], ['y', 'string']]);
@@ -75,9 +54,7 @@ export const printerReadonlyStruct = () => {
75
54
  };
76
55
  export const printerReadonlyArray = () => {
77
56
  const r = ro.array('string');
78
- if (r !== 'readonly(string)[]') {
79
- throw r;
80
- }
57
+ assertEq(r, 'readonly(string)[]');
81
58
  };
82
59
  export const printerReadonlyRecord = () => {
83
60
  const r = ro.record('number');
@@ -87,9 +64,7 @@ export const printerReadonlyRecord = () => {
87
64
  };
88
65
  export const printerMutableTuple = () => {
89
66
  const r = mut.tuple(['string', 'number']);
90
- if (r !== '[string,number]') {
91
- throw r;
92
- }
67
+ assertEq(r, '[string,number]');
93
68
  };
94
69
  export const printerMutableStruct = () => {
95
70
  const r = mut.struct([['x', 'number']]);
@@ -99,9 +74,7 @@ export const printerMutableStruct = () => {
99
74
  };
100
75
  export const printerMutableArray = () => {
101
76
  const r = mut.array('string');
102
- if (r !== '(string)[]') {
103
- throw r;
104
- }
77
+ assertEq(r, '(string)[]');
105
78
  };
106
79
  export const printerMutableRecord = () => {
107
80
  const r = mut.record('number');
@@ -2,30 +2,30 @@
2
2
  * Conversions between `Uint8Array` values and bit vectors.
3
3
  *
4
4
  * @deprecated FunctionalScript represents byte data as `bigint`-based bit
5
- * vectors (`Vec` from `fs/types/bit_vec`). Use `utf8`/`utf8ToString` from
6
- * `fs/text` for string encoding, and the `bit_vec` module directly for raw
5
+ * vectors (`Vec` from `fjs/types/bit_vec`). Use `utf8`/`utf8ToString` from
6
+ * `fjs/text` for string encoding, and the `bit_vec` module directly for raw
7
7
  * byte manipulation. `Uint8Array` interop belongs at Node.js boundaries only
8
8
  * (e.g. `fromVec`/`toVec` when reading or writing files).
9
9
  *
10
10
  * @module
11
11
  */
12
- import { utf8, utf8ToString } from "../../text/module.f.js";
13
- import { maxLengthBytes, msb, u8List, u8ListToVec } from "../bit_vec/module.f.js";
14
- import { compose } from "../function/module.f.js";
15
- import { flat, fromArrayLike, iterable, map } from "../list/module.f.js";
12
+ import { assert, assertNotNullish } from '../../asserts/module.f.js';
13
+ import { utf8, utf8ToString } from '../../text/module.f.js';
14
+ import { maxLengthBytes, msb, tryU8ListToVec, u8List, u8ListToVec } from '../bit_vec/module.f.js';
15
+ import { compose } from '../function/module.f.js';
16
+ import { flat, fromArrayLike, iterable, map } from '../list/module.f.js';
16
17
  const u8ListToVecMsb = u8ListToVec(msb);
18
+ const tryU8ListToVecMsb = tryU8ListToVec(msb);
17
19
  const u8ListMsb = u8List(msb);
18
20
  /**
19
21
  * Converts a Uint8Array into an MSB-first bit vector.
20
22
  */
21
23
  export const toVec = (input) => {
22
- if (input.length > maxLengthBytes) {
23
- throw "the array is too big";
24
- }
24
+ assert(input.length <= maxLengthBytes, "the array is too big");
25
25
  return u8ListToVecMsb(fromArrayLike(input));
26
26
  };
27
27
  const m = map(fromArrayLike);
28
- export const listToVec = (input) => u8ListToVecMsb(flat(m(input)));
28
+ export const listToVec = (input) => assertNotNullish(tryU8ListToVecMsb(flat(m(input))), "the array is too big");
29
29
  /**
30
30
  * Converts an MSB-first bit vector into a Uint8Array.
31
31
  */
@@ -10,5 +10,8 @@ export declare const proof: {
10
10
  utf8RoundTrip: () => void;
11
11
  listToVec: () => void;
12
12
  maxLength: () => import("../bit_vec/module.f.ts").Vec;
13
- throw: () => import("../bit_vec/module.f.ts").Vec;
13
+ throw: {
14
+ toVec: () => import("../bit_vec/module.f.ts").Vec;
15
+ listToVec: () => import("../bit_vec/module.f.ts").Vec;
16
+ };
14
17
  };
@@ -1,16 +1,13 @@
1
- import { maxLength, maxLengthBytes, vec } from "../bit_vec/module.f.js";
2
- import { toVec, fromVec, listToVec, decodeUtf8, encodeUtf8 } from "./module.f.js";
3
- import { strictEqual } from "../function/operator/module.f.js";
4
- import { equal, fromArrayLike } from "../list/module.f.js";
1
+ import { maxLength, maxLengthBytes, vec } from '../bit_vec/module.f.js';
2
+ import { toVec, fromVec, listToVec, decodeUtf8, encodeUtf8 } from './module.f.js';
3
+ import { strictEqual } from '../function/operator/module.f.js';
4
+ import { equal, fromArrayLike } from '../list/module.f.js';
5
+ import { assert } from '../../asserts/module.f.js';
5
6
  const assertEq = (a, b) => {
6
- if (a !== b) {
7
- throw [a, b];
8
- }
7
+ assert(a === b, [a, b]);
9
8
  };
10
9
  const assertArrayEq = (a, b) => {
11
- if (!equal(strictEqual)(fromArrayLike(a))(fromArrayLike(b))) {
12
- throw [a, b];
13
- }
10
+ assert(equal(strictEqual)(fromArrayLike(a))(fromArrayLike(b)), [a, b]);
14
11
  };
15
12
  export const proof = {
16
13
  empty: () => {
@@ -60,5 +57,8 @@ export const proof = {
60
57
  assertArrayEq(fromVec(result), Uint8Array.from([1, 2, 3]));
61
58
  },
62
59
  maxLength: () => toVec(new Uint8Array(Number(maxLengthBytes))),
63
- throw: () => toVec(new Uint8Array(Number(maxLengthBytes) + 1)),
60
+ throw: {
61
+ toVec: () => toVec(new Uint8Array(Number(maxLengthBytes) + 1)),
62
+ listToVec: () => listToVec([new Uint8Array(Number(maxLengthBytes)), Uint8Array.from([0])]),
63
+ },
64
64
  };
@@ -3,9 +3,9 @@
3
3
  *
4
4
  * @module
5
5
  */
6
- import { htmlUtf8 } from "../html/module.f.js";
7
- import { writeFile } from "../effects/node/module.f.js";
8
- import { pure } from "../effects/module.f.js";
6
+ import { htmlUtf8 } from '../media/html/module.f.js';
7
+ import { writeFile } from '../effects/node/module.f.js';
8
+ import { pure } from '../effects/module.f.js';
9
9
  const html = htmlUtf8()(['a',
10
10
  { href: 'https://github.com/functionalscript/functionalscript' },
11
11
  'GitHub Repository'
@@ -0,0 +1,13 @@
1
+ import { main } from './module.f.js';
2
+ import { emptyState, virtual } from '../effects/node/virtual/module.f.js';
3
+ import { assertEq, assertNotNullish } from '../asserts/module.f.js';
4
+ export const proof = {
5
+ main: () => {
6
+ assertNotNullish(main(), 'expected a program effect');
7
+ },
8
+ run: () => {
9
+ const state = { ...emptyState, root: { '.github': { workflows: {} } } };
10
+ const [_, result] = virtual(state)(main());
11
+ assertEq(result, 0);
12
+ },
13
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "functionalscript",
3
- "version": "0.36.0",
3
+ "version": "0.38.0",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "**/*.js",
@@ -9,19 +9,19 @@
9
9
  "description": "FunctionalScript is a purely functional subset of JavaScript",
10
10
  "scripts": {
11
11
  "prepack": "tsc --NoEmit false",
12
- "test": "tsc && node ./fs/fjs/module.ts t",
12
+ "test": "tsc && node ./fjs/module.ts t",
13
13
  "cov": "node --test --experimental-test-coverage --test-coverage-include=**/module.f.ts",
14
- "start": "node ./fs/fjs/module.ts",
15
- "ci-update": "node ./fs/fjs/module.ts ci",
14
+ "start": "node ./fjs/module.ts",
15
+ "ci-update": "node ./fjs/module.ts ci",
16
16
  "update": "npx npm-check-updates -u && npm install && deno install && bun install && npm run ci-update",
17
- "index-html": "node ./fs/fjs/module.ts r ./fs/website/module.f.ts",
17
+ "index-html": "node ./fjs/module.ts r ./fjs/website/module.f.ts",
18
18
  "website": "npm run prepack && npm run index-html"
19
19
  },
20
20
  "engines": {
21
21
  "node": ">=22"
22
22
  },
23
23
  "bin": {
24
- "fjs": "fs/fjs/module.js"
24
+ "fjs": "fjs/module.js"
25
25
  },
26
26
  "repository": {
27
27
  "type": "git",
@@ -44,7 +44,7 @@
44
44
  "homepage": "https://github.com/functionalscript/functionalscript#readme",
45
45
  "devDependencies": {
46
46
  "@playwright/test": "1.61.1",
47
- "@types/node": "26.1.0",
48
- "typescript": "6.0.3"
47
+ "@types/node": "26.1.1",
48
+ "typescript": "7.0.2"
49
49
  }
50
50
  }
@@ -1,4 +0,0 @@
1
- export declare const todo: () => never;
2
- export declare const assert: (v: boolean, msg?: unknown) => asserts v;
3
- export declare const assertEq: <T>(...x: readonly [T, T, unknown?]) => void;
4
- export type Assert<T extends true> = T;
@@ -1,9 +0,0 @@
1
- export const todo = () => { throw 'not implemented'; };
2
- export const assert = (v, msg = 'assertion failed') => {
3
- if (!v)
4
- throw msg;
5
- };
6
- export const assertEq = (...x) => {
7
- const [a, b] = x;
8
- assert(a === b, x);
9
- };
@@ -1,8 +0,0 @@
1
- export declare const proof: {
2
- assertPassesOnTrue: () => void;
3
- assertThrowsDefaultMsg: () => void;
4
- assertThrowsCustomMsg: () => void;
5
- assertEqPassesOnEqual: () => void;
6
- assertEqThrowsOnUnequal: () => void;
7
- todoThrows: () => void;
8
- };
@@ -1,51 +0,0 @@
1
- import { assert, assertEq, todo } from "./module.f.js";
2
- const throws = (f, expected) => {
3
- let caught = false;
4
- try {
5
- f();
6
- }
7
- catch (e) {
8
- caught = true;
9
- if (e !== expected) {
10
- throw ['unexpected throw value', e];
11
- }
12
- }
13
- if (!caught) {
14
- throw 'expected function to throw but it did not';
15
- }
16
- };
17
- export const proof = {
18
- assertPassesOnTrue: () => {
19
- assert(true);
20
- assert(true, 'with message');
21
- },
22
- assertThrowsDefaultMsg: () => {
23
- throws(() => assert(false), 'assertion failed');
24
- },
25
- assertThrowsCustomMsg: () => {
26
- throws(() => assert(false, 'oops'), 'oops');
27
- },
28
- assertEqPassesOnEqual: () => {
29
- assertEq(1, 1);
30
- assertEq('x', 'x');
31
- },
32
- assertEqThrowsOnUnequal: () => {
33
- let caught = false;
34
- try {
35
- assertEq(1, 2);
36
- }
37
- catch (e) {
38
- caught = true;
39
- const arr = e;
40
- if (arr[0] !== 1 || arr[1] !== 2) {
41
- throw ['wrong throw value', e];
42
- }
43
- }
44
- if (!caught) {
45
- throw 'expected assertEq to throw';
46
- }
47
- },
48
- todoThrows: () => {
49
- throws(() => todo(), 'not implemented');
50
- },
51
- };
@@ -1,30 +0,0 @@
1
- import { type Rule as FRule } from '../module.f.ts';
2
- import { type StringMap } from '../../types/object/module.f.ts';
3
- /**
4
- * Encoded terminal range value used by BNF data rules.
5
- *
6
- * The same as the functional TerminalRange.
7
- */
8
- export type TerminalRange = number;
9
- /**
10
- * Ordered list of grammar rule names.
11
- */
12
- export type Sequence = readonly string[];
13
- /** A variant of rule names. */
14
- export type Variant = StringMap<string, string>;
15
- /**
16
- * Grammar rule definition.
17
- *
18
- * It can be one of:
19
- * - a tagged variant map,
20
- * - a sequence of referenced rule names,
21
- * - an encoded terminal range.
22
- */
23
- export type Rule = Variant | Sequence | TerminalRange;
24
- /** The full grammar */
25
- export type RuleSet = Readonly<Record<string, Rule>>;
26
- /**
27
- * Converts a functional grammar rule into serializable BNF data and returns
28
- * the generated rule set with the entry rule identifier.
29
- */
30
- export declare const toData: (fr: FRule) => readonly [RuleSet, string];
@@ -1,119 +0,0 @@
1
- /**
2
- * Recursive descent matcher backend over the BNF data {@link RuleSet}.
3
- *
4
- * Built from the serializable IR in `fs/bnf/data`, this is a sibling of the
5
- * LL(1) dispatch builder (`fs/bnf/ll1`). It walks the grammar by recursive
6
- * descent and preserves per-code-point metadata, producing a metadata-aware
7
- * AST ({@link AstRuleMeta}). It also exposes {@link createEmptyTagMap}, which
8
- * records whether each rule can match the empty input.
9
- *
10
- * @module
11
- */
12
- import {} from "../../text/utf16/module.f.js";
13
- import { rangeDecode } from "../module.f.js";
14
- import { contains as rangeContains } from "../../types/range/module.f.js";
15
- import { definedEntries } from "../../types/object/module.f.js";
16
- import { toData } from "../data/module.f.js";
17
- import {} from "../module.f.js";
18
- const emptyTagMapAdd = (ruleSet) => (map) => (name) => {
19
- if (name in map) {
20
- return [ruleSet, map, map[name]];
21
- }
22
- const rule = ruleSet[name];
23
- if (typeof rule === 'number') {
24
- return [ruleSet, { ...map, [name]: false }, false];
25
- }
26
- else if (rule instanceof Array) {
27
- map = { ...map, [name]: true };
28
- let emptyTag = rule.length == 0;
29
- for (const item of rule) {
30
- const [, newMap, itemEmptyTag] = emptyTagMapAdd(ruleSet)(map)(item);
31
- map = newMap;
32
- if (emptyTag === false) {
33
- emptyTag = itemEmptyTag !== false;
34
- }
35
- }
36
- return [ruleSet, { ...map, [name]: emptyTag }, emptyTag];
37
- }
38
- else {
39
- map = { ...map, [name]: true };
40
- const entries = definedEntries(rule);
41
- let emptyTag = false;
42
- for (const [tag, item] of entries) {
43
- const [, newMap, itemEmptyTag] = emptyTagMapAdd(ruleSet)(map)(item);
44
- map = newMap;
45
- if (itemEmptyTag !== false) {
46
- emptyTag = tag;
47
- }
48
- }
49
- return [ruleSet, { ...map, [name]: emptyTag }, emptyTag];
50
- }
51
- };
52
- /**
53
- * Creates a map that describes whether each rule can consume empty input and,
54
- * for tagged variants, which tag represents the empty match.
55
- */
56
- export const createEmptyTagMap = (data) => {
57
- return emptyTagMapAdd(data[0])({})(data[1])[1];
58
- };
59
- /**
60
- * Creates a recursive descent parser that preserves metadata for each consumed
61
- * code point.
62
- */
63
- export const descentParser = (fr) => {
64
- const data = toData(fr);
65
- const emptyTagMap = createEmptyTagMap(data);
66
- const getEmptyTag = (name) => {
67
- const res = emptyTagMap[name];
68
- return res === false ? undefined : res;
69
- };
70
- const f = (name, tag, cp, idx) => {
71
- const mrSuccess = (tag, sequence, idx) => [{ tag, sequence }, true, idx];
72
- const mrFail = (tag, sequence, idx) => [{ tag, sequence }, false, idx];
73
- const rule = data[0][name];
74
- if (typeof rule === 'number') {
75
- const emptyTag = getEmptyTag(name);
76
- if (idx >= cp.length) {
77
- return emptyTag === undefined ? mrFail(emptyTag, [], idx) : mrSuccess(emptyTag, [], idx);
78
- }
79
- const cpi = cp[idx];
80
- const range = rangeDecode(rule);
81
- if (rangeContains(range)(cpi[0])) {
82
- return mrSuccess(tag, [cpi], idx + 1);
83
- }
84
- return mrFail(emptyTag, [], idx);
85
- }
86
- else if (rule instanceof Array) {
87
- let seq = [];
88
- let tidx = idx;
89
- for (const item of rule) {
90
- const m = f(item, undefined, cp, tidx);
91
- const [astRule, success, nidx] = m;
92
- tidx = nidx;
93
- if (success === false) {
94
- return mrFail(tag, [], idx);
95
- }
96
- seq = [...seq, astRule];
97
- }
98
- return mrSuccess(tag, seq, tidx);
99
- }
100
- else {
101
- const entries = definedEntries(rule);
102
- const emptyTag = getEmptyTag(name);
103
- let emptyResult = mrFail(emptyTag, [], idx);
104
- for (const [tag, item] of entries) {
105
- const m = f(item, tag, cp, idx);
106
- if (m[1]) {
107
- if (idx !== m[2])
108
- return m;
109
- emptyResult = m;
110
- }
111
- }
112
- return emptyResult;
113
- }
114
- };
115
- const match = (name, cp) => {
116
- return f(name, undefined, cp, 0);
117
- };
118
- return match;
119
- };