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,16 +1,13 @@
1
1
  import { main } from './module.f.js';
2
2
  import { emptyState, virtual } from '../effects/node/virtual/module.f.js';
3
- import { assert } from '../asserts/module.f.js';
3
+ import { assertEq, assertNotNullish } from '../asserts/module.f.js';
4
4
  export const proof = {
5
5
  main: () => {
6
- const program = main();
7
- if (program === undefined) {
8
- throw 'expected a program effect';
9
- }
6
+ assertNotNullish(main(), 'expected a program effect');
10
7
  },
11
8
  run: () => {
12
9
  const state = { ...emptyState, root: { '.github': { workflows: {} } } };
13
10
  const [_, result] = virtual(state)(main());
14
- assert(result === 0, result);
11
+ assertEq(result, 0);
15
12
  },
16
13
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "functionalscript",
3
- "version": "0.37.0",
3
+ "version": "0.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/module.ts t",
12
+ "test": "tsc && node ./fjs/module.ts t",
13
13
  "cov": "node --test --experimental-test-coverage --test-coverage-include=**/module.f.ts",
14
- "start": "node ./fs/module.ts",
15
- "ci-update": "node ./fs/module.ts ci",
14
+ "start": "node ./fjs/module.ts",
15
+ "ci-update": "node ./fjs/module.ts ci",
16
16
  "update": "npx npm-check-updates -u && npm install && deno install && bun install && npm run ci-update",
17
- "index-html": "node ./fs/module.ts r ./fs/website/module.f.ts",
17
+ "index-html": "node ./fjs/module.ts r ./fjs/website/module.f.ts",
18
18
  "website": "npm run prepack && npm run index-html"
19
19
  },
20
20
  "engines": {
21
21
  "node": ">=22"
22
22
  },
23
23
  "bin": {
24
- "fjs": "fs/module.js"
24
+ "fjs": "fjs/module.js"
25
25
  },
26
26
  "repository": {
27
27
  "type": "git",
@@ -1,4 +0,0 @@
1
- export declare const todo: () => never;
2
- export declare const assert: (v: boolean, msg?: unknown) => asserts v;
3
- export declare const assertEq: <T>(...x: readonly [T, T, unknown?]) => void;
4
- export type Assert<T extends true> = T;
@@ -1,9 +0,0 @@
1
- export const todo = () => { throw 'not implemented'; };
2
- export const assert = (v, msg = 'assertion failed') => {
3
- if (!v)
4
- throw msg;
5
- };
6
- export const assertEq = (...x) => {
7
- const [a, b] = x;
8
- assert(a === b, x);
9
- };
@@ -1,8 +0,0 @@
1
- export declare const proof: {
2
- assertPassesOnTrue: () => void;
3
- assertThrowsDefaultMsg: () => void;
4
- assertThrowsCustomMsg: () => void;
5
- assertEqPassesOnEqual: () => void;
6
- assertEqThrowsOnUnequal: () => void;
7
- todoThrows: () => void;
8
- };
@@ -1,51 +0,0 @@
1
- import { assert, assertEq, todo } from './module.f.js';
2
- const throws = (f, expected) => {
3
- let caught = false;
4
- try {
5
- f();
6
- }
7
- catch (e) {
8
- caught = true;
9
- if (e !== expected) {
10
- throw ['unexpected throw value', e];
11
- }
12
- }
13
- if (!caught) {
14
- throw 'expected function to throw but it did not';
15
- }
16
- };
17
- export const proof = {
18
- assertPassesOnTrue: () => {
19
- assert(true);
20
- assert(true, 'with message');
21
- },
22
- assertThrowsDefaultMsg: () => {
23
- throws(() => assert(false), 'assertion failed');
24
- },
25
- assertThrowsCustomMsg: () => {
26
- throws(() => assert(false, 'oops'), 'oops');
27
- },
28
- assertEqPassesOnEqual: () => {
29
- assertEq(1, 1);
30
- assertEq('x', 'x');
31
- },
32
- assertEqThrowsOnUnequal: () => {
33
- let caught = false;
34
- try {
35
- assertEq(1, 2);
36
- }
37
- catch (e) {
38
- caught = true;
39
- const arr = e;
40
- if (arr[0] !== 1 || arr[1] !== 2) {
41
- throw ['wrong throw value', e];
42
- }
43
- }
44
- if (!caught) {
45
- throw 'expected assertEq to throw';
46
- }
47
- },
48
- todoThrows: () => {
49
- throws(() => todo(), 'not implemented');
50
- },
51
- };
@@ -1,30 +0,0 @@
1
- import { type Rule as FRule } from '../module.f.ts';
2
- import { type StringMap } from '../../types/object/module.f.ts';
3
- /**
4
- * Encoded terminal range value used by BNF data rules.
5
- *
6
- * The same as the functional TerminalRange.
7
- */
8
- export type TerminalRange = number;
9
- /**
10
- * Ordered list of grammar rule names.
11
- */
12
- export type Sequence = readonly string[];
13
- /** A variant of rule names. */
14
- export type Variant = StringMap<string, string>;
15
- /**
16
- * Grammar rule definition.
17
- *
18
- * It can be one of:
19
- * - a tagged variant map,
20
- * - a sequence of referenced rule names,
21
- * - an encoded terminal range.
22
- */
23
- export type Rule = Variant | Sequence | TerminalRange;
24
- /** The full grammar */
25
- export type RuleSet = Readonly<Record<string, Rule>>;
26
- /**
27
- * Converts a functional grammar rule into serializable BNF data and returns
28
- * the generated rule set with the entry rule identifier.
29
- */
30
- export declare const toData: (fr: FRule) => readonly [RuleSet, string];
@@ -1,119 +0,0 @@
1
- /**
2
- * Recursive descent matcher backend over the BNF data {@link RuleSet}.
3
- *
4
- * Built from the serializable IR in `fs/bnf/data`, this is a sibling of the
5
- * LL(1) dispatch builder (`fs/bnf/ll1`). It walks the grammar by recursive
6
- * descent and preserves per-code-point metadata, producing a metadata-aware
7
- * AST ({@link AstRuleMeta}). It also exposes {@link createEmptyTagMap}, which
8
- * records whether each rule can match the empty input.
9
- *
10
- * @module
11
- */
12
- import {} from '../../text/utf16/module.f.js';
13
- import { rangeDecode } from '../module.f.js';
14
- import { contains as rangeContains } from '../../types/range/module.f.js';
15
- import { definedEntries } from '../../types/object/module.f.js';
16
- import { toData } from '../data/module.f.js';
17
- import {} from '../module.f.js';
18
- const emptyTagMapAdd = (ruleSet) => (map) => (name) => {
19
- if (name in map) {
20
- return [ruleSet, map, map[name]];
21
- }
22
- const rule = ruleSet[name];
23
- if (typeof rule === 'number') {
24
- return [ruleSet, { ...map, [name]: false }, false];
25
- }
26
- else if (rule instanceof Array) {
27
- map = { ...map, [name]: true };
28
- let emptyTag = rule.length == 0;
29
- for (const item of rule) {
30
- const [, newMap, itemEmptyTag] = emptyTagMapAdd(ruleSet)(map)(item);
31
- map = newMap;
32
- if (emptyTag === false) {
33
- emptyTag = itemEmptyTag !== false;
34
- }
35
- }
36
- return [ruleSet, { ...map, [name]: emptyTag }, emptyTag];
37
- }
38
- else {
39
- map = { ...map, [name]: true };
40
- const entries = definedEntries(rule);
41
- let emptyTag = false;
42
- for (const [tag, item] of entries) {
43
- const [, newMap, itemEmptyTag] = emptyTagMapAdd(ruleSet)(map)(item);
44
- map = newMap;
45
- if (itemEmptyTag !== false) {
46
- emptyTag = tag;
47
- }
48
- }
49
- return [ruleSet, { ...map, [name]: emptyTag }, emptyTag];
50
- }
51
- };
52
- /**
53
- * Creates a map that describes whether each rule can consume empty input and,
54
- * for tagged variants, which tag represents the empty match.
55
- */
56
- export const createEmptyTagMap = (data) => {
57
- return emptyTagMapAdd(data[0])({})(data[1])[1];
58
- };
59
- /**
60
- * Creates a recursive descent parser that preserves metadata for each consumed
61
- * code point.
62
- */
63
- export const descentParser = (fr) => {
64
- const data = toData(fr);
65
- const emptyTagMap = createEmptyTagMap(data);
66
- const getEmptyTag = (name) => {
67
- const res = emptyTagMap[name];
68
- return res === false ? undefined : res;
69
- };
70
- const f = (name, tag, cp, idx) => {
71
- const mrSuccess = (tag, sequence, idx) => [{ tag, sequence }, true, idx];
72
- const mrFail = (tag, sequence, idx) => [{ tag, sequence }, false, idx];
73
- const rule = data[0][name];
74
- if (typeof rule === 'number') {
75
- const emptyTag = getEmptyTag(name);
76
- if (idx >= cp.length) {
77
- return emptyTag === undefined ? mrFail(emptyTag, [], idx) : mrSuccess(emptyTag, [], idx);
78
- }
79
- const cpi = cp[idx];
80
- const range = rangeDecode(rule);
81
- if (rangeContains(range)(cpi[0])) {
82
- return mrSuccess(tag, [cpi], idx + 1);
83
- }
84
- return mrFail(emptyTag, [], idx);
85
- }
86
- else if (rule instanceof Array) {
87
- let seq = [];
88
- let tidx = idx;
89
- for (const item of rule) {
90
- const m = f(item, undefined, cp, tidx);
91
- const [astRule, success, nidx] = m;
92
- tidx = nidx;
93
- if (success === false) {
94
- return mrFail(tag, [], idx);
95
- }
96
- seq = [...seq, astRule];
97
- }
98
- return mrSuccess(tag, seq, tidx);
99
- }
100
- else {
101
- const entries = definedEntries(rule);
102
- const emptyTag = getEmptyTag(name);
103
- let emptyResult = mrFail(emptyTag, [], idx);
104
- for (const [tag, item] of entries) {
105
- const m = f(item, tag, cp, idx);
106
- if (m[1]) {
107
- if (idx !== m[2])
108
- return m;
109
- emptyResult = m;
110
- }
111
- }
112
- return emptyResult;
113
- }
114
- };
115
- const match = (name, cp) => {
116
- return f(name, undefined, cp, 0);
117
- };
118
- return match;
119
- };
package/fs/bnf/proof.f.js DELETED
@@ -1,104 +0,0 @@
1
- import { classic, deterministic } from './testlib.f.js';
2
- import { rangeEncode, str, set, range, commaJoin0Plus, isEmpty, oneEncode, repeat1Plus, } from './module.f.js';
3
- export const proof = {
4
- test: () => {
5
- classic();
6
- deterministic();
7
- },
8
- throw: {
9
- rangeEncodeInvalid: [
10
- () => { rangeEncode(-1, 0); },
11
- () => { rangeEncode(0, -1); },
12
- () => { rangeEncode(5, 3); },
13
- ],
14
- rangeInvalid: [
15
- () => { range('a'); },
16
- () => { range('abc'); },
17
- ],
18
- },
19
- str: [
20
- () => {
21
- const result = str('a');
22
- if (typeof result !== 'number') {
23
- throw result;
24
- }
25
- if (result !== oneEncode(0x61)) {
26
- throw result;
27
- }
28
- },
29
- () => {
30
- const result = str('ab');
31
- if (!Array.isArray(result)) {
32
- throw result;
33
- }
34
- if (result.length !== 2) {
35
- throw result;
36
- }
37
- },
38
- ],
39
- set: () => {
40
- const result = set('abc');
41
- if (typeof result !== 'object' || result === null) {
42
- throw result;
43
- }
44
- if (!('a' in result)) {
45
- throw result;
46
- }
47
- if (!('b' in result)) {
48
- throw result;
49
- }
50
- if (!('c' in result)) {
51
- throw result;
52
- }
53
- },
54
- commaJoin0Plus: () => {
55
- const ws = '';
56
- const item = 'x';
57
- const result = commaJoin0Plus(ws)('[]', item);
58
- if (!Array.isArray(result)) {
59
- throw result;
60
- }
61
- if (result[0] !== '[') {
62
- throw result;
63
- }
64
- },
65
- isEmpty: [
66
- () => { if (!isEmpty('')) {
67
- throw 'empty string should be empty';
68
- } },
69
- () => { if (!isEmpty([])) {
70
- throw 'empty array should be empty';
71
- } },
72
- () => { if (isEmpty('a')) {
73
- throw 'non-empty string should not be empty';
74
- } },
75
- () => {
76
- const f = () => '';
77
- if (!isEmpty(f)) {
78
- throw 'function returning empty string should be empty';
79
- }
80
- },
81
- ],
82
- repeat1Plus: [
83
- () => {
84
- const result = repeat1Plus('x');
85
- if (result[0] !== 'x') {
86
- throw result[0];
87
- }
88
- if (typeof result[1] !== 'function') {
89
- throw 'expected repeat0Plus function';
90
- }
91
- },
92
- () => {
93
- const rule = 'ab';
94
- const result = repeat1Plus(rule);
95
- if (result[0] !== rule) {
96
- throw result[0];
97
- }
98
- const inner = result[1]();
99
- if (!('some' in inner) || !('none' in inner)) {
100
- throw 'expected Option shape';
101
- }
102
- },
103
- ],
104
- };
@@ -1,36 +0,0 @@
1
- import { type Effect } from '../../effects/module.f.ts';
2
- import { type MemOp } from '../../effects/memory/module.f.ts';
3
- import { type Read, type Write } from '../../effects/node/module.f.ts';
4
- import { type McpConfig, type McpHandlers } from '../../mcp/module.f.ts';
5
- import { type FileCasOperation } from '../module.f.ts';
6
- /** Arguments for `cas_add`: content to store, with optional encoding type. */
7
- export declare const casAddArgs: {
8
- readonly content: import("../../types/rtti/module.f.ts").String;
9
- readonly type: import("../../types/rtti/module.f.ts").Or<["text", "base64", undefined]>;
10
- };
11
- /** Arguments for `cas_get`: the cBase32 hash to look up; optionally request inline content. */
12
- export declare const casGetArgs: {
13
- readonly hash: import("../../types/rtti/module.f.ts").String;
14
- readonly content: import("../../types/rtti/module.f.ts").Or<readonly [import("../../types/rtti/module.f.ts").Boolean, undefined]>;
15
- };
16
- /** Arguments for `cas_list`: none. */
17
- export declare const casListArgs: {};
18
- /**
19
- * MCP handlers for `FileCas`.
20
- */
21
- export declare const casMcpHandlers: (home: string) => McpHandlers<FileCasOperation>;
22
- /**
23
- * Static MCP configuration for the CAS server: advertises the `tools`
24
- * capability, identifies the server, and pins the protocol version.
25
- */
26
- export declare const casConfig: McpConfig;
27
- /**
28
- * Runs the file CAS MCP server over stdio: allocates the session-state slot, builds
29
- * the `mcpStep` for `c`, and drives the read → parse → dispatch → write loop
30
- * until stdin EOF.
31
- */
32
- export declare const casMcpServer: (home: string) => Effect<Read | Write | MemOp | FileCasOperation, void>;
33
- export declare const proof: {
34
- casMcpServer: () => void;
35
- collectReadOverflow: () => void;
36
- };
@@ -1,161 +0,0 @@
1
- import { utf8 } from '../../text/module.f.js';
2
- import { empty, uint } from '../../types/bit_vec/module.f.js';
3
- import { computeSync, sha224, sha256 } from '../sha2/module.f.js';
4
- import { bitcoinPow, genesisNBits, genesisTarget, pow, sha256Pow, targetFromNBits } from './module.f.js';
5
- const p256 = sha256Pow;
6
- const p224 = pow(sha224);
7
- const sample = utf8('functionalscript pow proof');
8
- const emptyData = empty;
9
- /** Target large enough for {@link sample} under SHA-256 (`0x207fffff`). */
10
- const easyNBits = 0x207fffffn;
11
- /** Compact encoding for target `1` (`0x03000001`). */
12
- const hardNBits = 0x03000001n;
13
- /** SHA-256 of the empty message (NIST / Bitcoin block merkle uses this primitive). */
14
- const sha256EmptyHash = 0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855n;
15
- /** Bitcoin block #0 header hash as big-endian uint256. */
16
- const block0Hash = 0x000000000019d6689c085ae165831e934ff763ae46a2a6cffb388491c27dc990n;
17
- const expectNull = (nBits) => {
18
- if (targetFromNBits(nBits) !== null) {
19
- throw nBits;
20
- }
21
- };
22
- export const proof = {
23
- targetFromNBits: {
24
- genesis: () => {
25
- if (targetFromNBits(genesisNBits) !== genesisTarget) {
26
- throw 'genesis target';
27
- }
28
- },
29
- block0HashWithinGenesisTarget: () => {
30
- if (block0Hash > genesisTarget) {
31
- throw 'block0 hash exceeds genesis target';
32
- }
33
- },
34
- exponent3: () => {
35
- if (targetFromNBits(0x030000ffn) !== 0xffn) {
36
- throw 'exponent 3';
37
- }
38
- },
39
- exponent2: () => {
40
- if (targetFromNBits(0x02008000n) !== 0x80n) {
41
- throw 'exponent 2';
42
- }
43
- },
44
- hardTargetOne: () => {
45
- if (targetFromNBits(hardNBits) !== 1n) {
46
- throw 'hard target';
47
- }
48
- },
49
- zero: () => {
50
- if (targetFromNBits(0n) !== 0n) {
51
- throw 'zero nBits';
52
- }
53
- },
54
- negative: () => {
55
- expectNull(0x01800001n);
56
- },
57
- negativeHighMantissa: () => {
58
- expectNull(0x22ffffffn);
59
- },
60
- overflowExponent: () => {
61
- expectNull(0x23000001n);
62
- },
63
- exceeds256: () => {
64
- expectNull(0x227fffffn);
65
- },
66
- },
67
- meets: {
68
- easy: () => {
69
- if (!p256.meets(easyNBits)(sample)) {
70
- throw 'easy nBits should pass';
71
- }
72
- },
73
- hard: () => {
74
- if (p256.meets(hardNBits)(sample)) {
75
- throw 'target 1 should fail';
76
- }
77
- },
78
- genesisFailsSample: () => {
79
- if (p256.meets(genesisNBits)(sample)) {
80
- throw 'genesis target too hard for sample';
81
- }
82
- },
83
- zeroTargetRejectsSample: () => {
84
- if (p256.meets(0n)(sample)) {
85
- throw 'non-zero hash vs zero target';
86
- }
87
- },
88
- invalidNBits: () => {
89
- if (p256.meets(0x01800001n)(sample)) {
90
- throw 'invalid nBits should not pass';
91
- }
92
- },
93
- hashLeqTarget: () => {
94
- const h = p256.hashInt(sample);
95
- const target = targetFromNBits(easyNBits);
96
- if (target === null) {
97
- throw 'easy nBits decode';
98
- }
99
- if (h > target) {
100
- throw 'hash above easy target';
101
- }
102
- if (!(h <= target)) {
103
- throw 'hash <= target';
104
- }
105
- },
106
- },
107
- hashInt: {
108
- sha256Sample: () => {
109
- const digest = computeSync(sha256)([sample]);
110
- if (p256.hashInt(sample) !== uint(digest)) {
111
- throw 'sha256 sample';
112
- }
113
- },
114
- sha256Empty: () => {
115
- if (p256.hashInt(emptyData) !== sha256EmptyHash) {
116
- throw 'sha256 empty constant';
117
- }
118
- const digest = computeSync(sha256)([emptyData]);
119
- if (p256.hashInt(emptyData) !== uint(digest)) {
120
- throw 'sha256 empty';
121
- }
122
- },
123
- sha224: () => {
124
- const digest = computeSync(sha224)([sample]);
125
- if (p224.hashInt(sample) !== uint(digest)) {
126
- throw 'sha224';
127
- }
128
- },
129
- stable: () => {
130
- if (p256.hashInt(sample) !== p256.hashInt(sample)) {
131
- throw 'stable';
132
- }
133
- },
134
- },
135
- pow: {
136
- sha256Pow: () => {
137
- const built = pow(sha256);
138
- if (sha256Pow.hashInt(sample) !== built.hashInt(sample)) {
139
- throw 'hashInt';
140
- }
141
- if (sha256Pow.meets(easyNBits)(sample) !== built.meets(easyNBits)(sample)) {
142
- throw 'meets';
143
- }
144
- },
145
- bitcoinPow: () => {
146
- if (bitcoinPow.hashInt(sample) !== sha256Pow.hashInt(sample)) {
147
- throw 'bitcoinPow';
148
- }
149
- },
150
- independentInstances: () => {
151
- const a = pow(sha256);
152
- const b = pow(sha256);
153
- if (a.hashInt(sample) !== b.hashInt(sample)) {
154
- throw 'hashInt';
155
- }
156
- if (a.meets(easyNBits)(sample) !== b.meets(easyNBits)(sample)) {
157
- throw 'meets';
158
- }
159
- },
160
- },
161
- };
@@ -1,12 +0,0 @@
1
- import { type List } from '../../types/list/module.f.ts';
2
- import * as jsTokenizer from '../../js/tokenizer/module.f.ts';
3
- export type DjsToken = {
4
- readonly kind: 'true' | 'false' | 'null' | 'undefined';
5
- } | {
6
- readonly kind: '{' | '}' | ':' | ',' | '[' | ']' | '.' | '=';
7
- } | jsTokenizer.StringToken | jsTokenizer.NumberToken | jsTokenizer.ErrorToken | jsTokenizer.IdToken | jsTokenizer.BigIntToken | jsTokenizer.WhitespaceToken | jsTokenizer.NewLineToken | jsTokenizer.CommentToken | jsTokenizer.EofToken;
8
- export type DjsTokenWithMetadata = {
9
- readonly token: DjsToken;
10
- readonly metadata: jsTokenizer.TokenMetadata;
11
- };
12
- export declare const tokenize: (input: List<number>) => (path: string) => List<DjsTokenWithMetadata>;
@@ -1,62 +0,0 @@
1
- import { empty, flat, map, stateScan } from '../../types/list/module.f.js';
2
- import { multiply } from '../../types/bigfloat/module.f.js';
3
- import * as jsTokenizer from '../../js/tokenizer/module.f.js';
4
- const mapToken = input => {
5
- switch (input.kind) {
6
- case 'id':
7
- case 'bigint':
8
- case '{':
9
- case '}':
10
- case ':':
11
- case ',':
12
- case '[':
13
- case ']':
14
- case '.':
15
- case '=':
16
- case 'true':
17
- case 'false':
18
- case 'null':
19
- case 'string':
20
- case 'number':
21
- case 'ws':
22
- case 'nl':
23
- case 'undefined':
24
- case '//':
25
- case '/*':
26
- case 'eof':
27
- case 'error': return [input];
28
- default: return jsTokenizer.isKeywordToken(input) ? [{ kind: 'id', value: input.kind }] : [{ kind: 'error', message: 'invalid token' }];
29
- }
30
- };
31
- const parseDefaultState = input => {
32
- switch (input.kind) {
33
- case 'eof': return [[{ kind: 'eof' }], { kind: 'def' }];
34
- case '-': return [empty, { kind: '-' }];
35
- default: return [mapToken(input), { kind: 'def' }];
36
- }
37
- };
38
- const parseMinusState = input => {
39
- switch (input.kind) {
40
- case 'eof': return [[{ kind: 'error', message: 'invalid token' }, { kind: 'eof' }], { kind: 'def' }];
41
- case '-': return [[{ kind: 'error', message: 'invalid token' }], { kind: '-' }];
42
- case 'bigint': return [[{ kind: 'bigint', value: -1n * input.value }], { kind: 'def' }];
43
- case 'number': return [[{ kind: 'number', bf: multiply(input.bf)(-1n), value: `-${input.value}` }], { kind: 'def' }];
44
- default: return [{ first: { kind: 'error', message: 'invalid token' }, tail: mapToken(input) }, { kind: 'def' }];
45
- }
46
- };
47
- const scanToken = (input, state) => {
48
- switch (state.kind) {
49
- case '-': return parseMinusState(input);
50
- default: return parseDefaultState(input);
51
- }
52
- };
53
- const mapTokenWithMetadata = metadata => token => { return { token, metadata }; };
54
- const scanTokenWithMetadata = (input, state) => {
55
- const [djsTokens, newState] = scanToken(input.token, state);
56
- const djsTokensWithMetadata = map(mapTokenWithMetadata(input.metadata))(djsTokens);
57
- return [djsTokensWithMetadata, newState];
58
- };
59
- export const tokenize = input => path => {
60
- const jsTokens = jsTokenizer.tokenize(input)(path);
61
- return flat(stateScan(scanTokenWithMetadata)({ kind: 'def' })(jsTokens));
62
- };
@@ -1,7 +0,0 @@
1
- export declare const proof: {
2
- djs: (() => void)[];
3
- id: (() => void)[];
4
- keywords: (() => void)[];
5
- comments: (() => void)[];
6
- metadata: (() => void)[];
7
- };