functionalscript 0.44.0 → 0.45.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 (453) hide show
  1. package/fjs/asn.1/proof.f.d.mts +5 -0
  2. package/fjs/asn.1/proof.f.mjs +15 -3
  3. package/fjs/asserts/module.f.d.mts +14 -0
  4. package/fjs/asserts/module.f.mjs +20 -0
  5. package/fjs/asserts/proof.f.d.mts +3 -0
  6. package/fjs/asserts/proof.f.mjs +15 -1
  7. package/fjs/basen/base128/proof.f.d.mts +3 -1
  8. package/fjs/basen/base128/proof.f.mjs +3 -1
  9. package/fjs/basen/base64/module.f.mjs +7 -3
  10. package/fjs/basen/base64/proof.f.d.mts +3 -1
  11. package/fjs/basen/base64/proof.f.mjs +7 -4
  12. package/fjs/basen/cbase32/proof.f.d.mts +3 -1
  13. package/fjs/basen/cbase32/proof.f.mjs +3 -1
  14. package/fjs/bnf/data/proof.f.mjs +0 -1
  15. package/fjs/bnf/descent/module.f.d.mts +17 -2
  16. package/fjs/bnf/descent/module.f.mjs +118 -41
  17. package/fjs/bnf/descent/proof.f.d.mts +1 -0
  18. package/fjs/bnf/descent/proof.f.mjs +77 -1
  19. package/fjs/bnf/descent/types.d.ts +12 -4
  20. package/fjs/bnf/ll1/module.f.d.mts +28 -2
  21. package/fjs/bnf/ll1/module.f.mjs +180 -38
  22. package/fjs/bnf/ll1/proof.f.d.mts +2 -0
  23. package/fjs/bnf/ll1/proof.f.mjs +62 -1
  24. package/fjs/bnf/ll1/types.d.ts +14 -8
  25. package/fjs/bnf/module.f.d.mts +15 -6
  26. package/fjs/bnf/module.f.mjs +52 -11
  27. package/fjs/bnf/proof.f.d.mts +2 -0
  28. package/fjs/bnf/proof.f.mjs +79 -3
  29. package/fjs/bnf/token_symbol/module.f.d.mts +4 -3
  30. package/fjs/bnf/token_symbol/module.f.mjs +7 -6
  31. package/fjs/bnf/token_symbol/proof.f.mjs +5 -2
  32. package/fjs/bnf/token_symbol/types.d.ts +2 -2
  33. package/fjs/bnf/types.d.ts +10 -3
  34. package/fjs/cas/cli/proof.f.d.mts +3 -1
  35. package/fjs/cas/cli/proof.f.mjs +3 -1
  36. package/fjs/cas/evo/module.f.d.mts +7 -13
  37. package/fjs/cas/evo/module.f.mjs +103 -96
  38. package/fjs/cas/evo/proof.f.mjs +6 -3
  39. package/fjs/cas/module.f.mjs +96 -109
  40. package/fjs/ci/common/module.f.d.mts +1 -1
  41. package/fjs/ci/common/module.f.mjs +1 -0
  42. package/fjs/ci/config/module.f.d.mts +2 -2
  43. package/fjs/ci/config/module.f.mjs +2 -2
  44. package/fjs/ci/nix/proof.f.d.mts +2 -0
  45. package/fjs/ci/nix/proof.f.mjs +2 -2
  46. package/fjs/ci/proof.f.d.mts +4 -2
  47. package/fjs/ci/proof.f.mjs +4 -3
  48. package/fjs/cli/proof.f.d.mts +4 -2
  49. package/fjs/cli/proof.f.mjs +4 -2
  50. package/fjs/common/monoid/module.f.d.mts +70 -12
  51. package/fjs/common/monoid/module.f.mjs +177 -14
  52. package/fjs/common/monoid/proof.f.d.mts +12 -1
  53. package/fjs/common/monoid/proof.f.mjs +88 -4
  54. package/fjs/common/monoid/types.d.ts +23 -0
  55. package/fjs/crypto/secp/proof.f.d.mts +3 -1
  56. package/fjs/crypto/secp/proof.f.mjs +3 -1
  57. package/fjs/crypto/sha2/proof.f.d.mts +3 -1
  58. package/fjs/crypto/sha2/proof.f.mjs +3 -1
  59. package/fjs/crypto/vdf/module.f.d.mts +23 -4
  60. package/fjs/crypto/vdf/module.f.mjs +6 -4
  61. package/fjs/dev/module.f.d.mts +5 -2
  62. package/fjs/dev/module.f.mjs +5 -4
  63. package/fjs/dev/package_json/module.f.d.mts +7 -0
  64. package/fjs/dev/package_json/module.f.mjs +10 -7
  65. package/fjs/dev/update/module.f.d.mts +3 -0
  66. package/fjs/dev/update/module.f.mjs +3 -2
  67. package/fjs/dev/update/proof.f.d.mts +3 -0
  68. package/fjs/dev/update/proof.f.mjs +1 -2
  69. package/fjs/djs/parser/module.f.d.mts +3 -0
  70. package/fjs/djs/parser/module.f.mjs +18 -0
  71. package/fjs/djs/parser/proof.f.d.mts +3 -0
  72. package/fjs/djs/parser/proof.f.mjs +13 -1
  73. package/fjs/djs/proof.f.d.mts +3 -0
  74. package/fjs/djs/proof.f.mjs +4 -1
  75. package/fjs/djs/serializer/module.f.mjs +5 -4
  76. package/fjs/djs/tokenizer/module.f.mjs +21 -13
  77. package/fjs/djs/tokenizer/proof.f.d.mts +3 -0
  78. package/fjs/djs/tokenizer/proof.f.mjs +14 -2
  79. package/fjs/djs/transpiler/module.f.d.mts +1 -12
  80. package/fjs/djs/transpiler/module.f.mjs +1 -20
  81. package/fjs/djs/transpiler/types.d.ts +25 -0
  82. package/fjs/effects/eff/module.f.d.mts +10 -0
  83. package/fjs/effects/eff/module.f.mjs +4 -2
  84. package/fjs/effects/eff/proof.f.d.mts +3 -0
  85. package/fjs/effects/eff/proof.f.mjs +4 -1
  86. package/fjs/effects/list/module.f.d.mts +10 -2
  87. package/fjs/effects/list/module.f.mjs +4 -2
  88. package/fjs/effects/memory/module.f.d.mts +4 -2
  89. package/fjs/effects/memory/module.f.mjs +4 -3
  90. package/fjs/effects/memory/proof.f.d.mts +4 -0
  91. package/fjs/effects/memory/proof.f.mjs +5 -2
  92. package/fjs/effects/mock/module.f.d.mts +10 -2
  93. package/fjs/effects/mock/module.f.mjs +4 -2
  94. package/fjs/effects/module.d.mts +8 -0
  95. package/fjs/effects/module.f.d.mts +6 -4
  96. package/fjs/effects/module.f.mjs +6 -5
  97. package/fjs/effects/module.mjs +9 -1
  98. package/fjs/effects/node/memory/module.d.mts +3 -0
  99. package/fjs/effects/node/memory/module.mjs +3 -2
  100. package/fjs/effects/node/memory/proof.d.mts +2 -0
  101. package/fjs/effects/node/memory/proof.mjs +2 -1
  102. package/fjs/effects/node/module.d.mts +5 -0
  103. package/fjs/effects/node/module.f.d.mts +17 -12
  104. package/fjs/effects/node/module.f.mjs +6 -12
  105. package/fjs/effects/node/module.mjs +5 -17
  106. package/fjs/effects/node/virtual/module.f.d.mts +6 -3
  107. package/fjs/effects/node/virtual/module.f.mjs +6 -5
  108. package/fjs/effects/node/virtual/proof.f.d.mts +4 -1
  109. package/fjs/effects/node/virtual/proof.f.mjs +13 -1
  110. package/fjs/effects/proof.f.d.mts +3 -0
  111. package/fjs/effects/proof.f.mjs +4 -1
  112. package/fjs/emergent_testing/all.test.d.mts +8 -0
  113. package/fjs/emergent_testing/all.test.mjs +14 -0
  114. package/fjs/emergent_testing/module.f.d.mts +6 -1
  115. package/fjs/emergent_testing/module.f.mjs +40 -66
  116. package/fjs/emergent_testing/proof.f.mjs +5 -5
  117. package/fjs/fsc/bnf.f.d.mts +3 -0
  118. package/fjs/fsc/bnf.f.mjs +4 -1
  119. package/fjs/fsc/json.f.d.mts +3 -0
  120. package/fjs/fsc/json.f.mjs +4 -1
  121. package/fjs/fsc/module.f.d.mts +9 -0
  122. package/fjs/fsc/module.f.mjs +5 -3
  123. package/fjs/fsm/proof.f.d.mts +3 -0
  124. package/fjs/fsm/proof.f.mjs +4 -1
  125. package/fjs/js/tokenizer/module.f.d.mts +7 -0
  126. package/fjs/js/tokenizer/module.f.mjs +19 -55
  127. package/fjs/mcp/module.f.d.mts +36 -1
  128. package/fjs/mcp/module.f.mjs +9 -7
  129. package/fjs/mcp/proof.f.d.mts +11 -1
  130. package/fjs/mcp/proof.f.mjs +11 -18
  131. package/fjs/media/html/module.f.d.mts +12 -0
  132. package/fjs/media/html/module.f.mjs +6 -4
  133. package/fjs/media/html/proof.f.d.mts +3 -0
  134. package/fjs/media/html/proof.f.mjs +4 -1
  135. package/fjs/media/json/parser/module.f.d.mts +1 -1
  136. package/fjs/media/json/parser/module.f.mjs +25 -8
  137. package/fjs/media/json/parser/types.d.ts +5 -0
  138. package/fjs/media/json/rtti/proof.f.d.mts +3 -0
  139. package/fjs/media/json/rtti/proof.f.mjs +3 -3
  140. package/fjs/media/json/schema/module.f.d.mts +61 -27
  141. package/fjs/media/json/schema/module.f.mjs +228 -63
  142. package/fjs/media/json/schema/proof.f.d.mts +41 -0
  143. package/fjs/media/json/schema/proof.f.mjs +219 -7
  144. package/fjs/media/json/serializer/module.f.d.mts +13 -0
  145. package/fjs/media/json/serializer/module.f.mjs +7 -7
  146. package/fjs/media/json/tokenizer/module.f.d.mts +8 -0
  147. package/fjs/media/json/tokenizer/module.f.mjs +24 -5
  148. package/fjs/media/nix/module.f.d.mts +13 -0
  149. package/fjs/media/nix/module.f.mjs +4 -2
  150. package/fjs/media/nix/proof.f.d.mts +3 -0
  151. package/fjs/media/nix/proof.f.mjs +4 -1
  152. package/fjs/media/revision/module.f.d.mts +5 -0
  153. package/fjs/media/revision/module.f.mjs +8 -11
  154. package/fjs/media/revision/proof.f.d.mts +4 -0
  155. package/fjs/media/revision/proof.f.mjs +5 -2
  156. package/fjs/media/type/module.f.d.mts +28 -11
  157. package/fjs/media/type/module.f.mjs +69 -85
  158. package/fjs/media/type/proof.f.d.mts +16 -0
  159. package/fjs/media/type/proof.f.mjs +44 -4
  160. package/fjs/module.d.mts +5 -0
  161. package/fjs/module.f.d.mts +8 -0
  162. package/fjs/module.f.mjs +4 -2
  163. package/fjs/module.mjs +6 -0
  164. package/fjs/path/module.f.d.mts +8 -0
  165. package/fjs/path/module.f.mjs +4 -2
  166. package/fjs/proof.f.d.mts +4 -0
  167. package/fjs/proof.f.mjs +5 -2
  168. package/fjs/protocol/json_rpc/module.f.d.mts +1 -1
  169. package/fjs/protocol/json_rpc/module.f.mjs +7 -4
  170. package/fjs/protocol/json_rpc/proof.f.d.mts +6 -0
  171. package/fjs/protocol/json_rpc/proof.f.mjs +22 -1
  172. package/fjs/protocol/mcp/proof.f.d.mts +4 -0
  173. package/fjs/protocol/mcp/proof.f.mjs +47 -24
  174. package/fjs/protocol/mcp/stdio/module.f.d.mts +2 -4
  175. package/fjs/protocol/mcp/stdio/module.f.mjs +1 -8
  176. package/fjs/protocol/mcp/stdio/proof.f.d.mts +1 -1
  177. package/fjs/protocol/mcp/stdio/proof.f.mjs +1 -1
  178. package/fjs/protocol/mcp/stdio/types.d.ts +14 -0
  179. package/fjs/sul/id/module.f.d.mts +5 -0
  180. package/fjs/sul/id/module.f.mjs +5 -4
  181. package/fjs/sul/level/hash/module.f.d.mts +4 -1
  182. package/fjs/sul/level/hash/module.f.mjs +4 -3
  183. package/fjs/sul/level/hash/proof.f.d.mts +4 -0
  184. package/fjs/sul/level/hash/proof.f.mjs +5 -2
  185. package/fjs/sul/level/literal/module.f.d.mts +4 -1
  186. package/fjs/sul/level/literal/module.f.mjs +4 -3
  187. package/fjs/sul/level/literal/proof.f.d.mts +3 -0
  188. package/fjs/sul/level/literal/proof.f.mjs +4 -1
  189. package/fjs/sul/module.f.d.mts +5 -3
  190. package/fjs/sul/module.f.mjs +5 -4
  191. package/fjs/sul/proof.f.d.mts +4 -0
  192. package/fjs/sul/proof.f.mjs +5 -2
  193. package/fjs/text/ascii/module.f.d.mts +26 -0
  194. package/fjs/text/ascii/module.f.mjs +49 -1
  195. package/fjs/text/ascii/proof.f.d.mts +10 -0
  196. package/fjs/text/ascii/proof.f.mjs +33 -1
  197. package/fjs/text/code_point/module.f.d.mts +21 -3
  198. package/fjs/text/code_point/module.f.mjs +24 -8
  199. package/fjs/text/code_point/proof.f.d.mts +1 -0
  200. package/fjs/text/code_point/proof.f.mjs +28 -0
  201. package/fjs/text/module.f.d.mts +4 -2
  202. package/fjs/text/module.f.mjs +4 -3
  203. package/fjs/text/proof.f.d.mts +3 -0
  204. package/fjs/text/proof.f.mjs +4 -1
  205. package/fjs/text/sgr/module.f.d.mts +4 -1
  206. package/fjs/text/sgr/module.f.mjs +4 -3
  207. package/fjs/text/sgr/proof.f.d.mts +3 -0
  208. package/fjs/text/sgr/proof.f.mjs +4 -1
  209. package/fjs/text/utf16/module.f.d.mts +5 -1
  210. package/fjs/text/utf16/module.f.mjs +31 -33
  211. package/fjs/text/utf16/proof.f.d.mts +3 -1
  212. package/fjs/text/utf16/proof.f.mjs +18 -1
  213. package/fjs/text/utf8/module.f.d.mts +9 -5
  214. package/fjs/text/utf8/module.f.mjs +16 -18
  215. package/fjs/types/array/module.f.d.mts +2 -1
  216. package/fjs/types/array/module.f.mjs +2 -2
  217. package/fjs/types/bigfloat/module.f.d.mts +21 -1
  218. package/fjs/types/bigfloat/module.f.mjs +33 -7
  219. package/fjs/types/bigfloat/proof.f.d.mts +1 -0
  220. package/fjs/types/bigfloat/proof.f.mjs +46 -0
  221. package/fjs/types/bigint/module.f.d.mts +4 -0
  222. package/fjs/types/bigint/module.f.mjs +4 -3
  223. package/fjs/types/bit_vec/module.f.d.mts +10 -14
  224. package/fjs/types/bit_vec/module.f.mjs +61 -71
  225. package/fjs/types/bit_vec/proof.f.d.mts +6 -0
  226. package/fjs/types/bit_vec/proof.f.mjs +29 -3
  227. package/fjs/types/btree/find/module.f.d.mts +5 -1
  228. package/fjs/types/btree/find/module.f.mjs +5 -5
  229. package/fjs/types/btree/find/proof.f.d.mts +5 -1
  230. package/fjs/types/btree/find/proof.f.mjs +5 -3
  231. package/fjs/types/btree/module.f.d.mts +3 -0
  232. package/fjs/types/btree/module.f.mjs +3 -2
  233. package/fjs/types/btree/proof.f.d.mts +5 -1
  234. package/fjs/types/btree/proof.f.mjs +5 -3
  235. package/fjs/types/btree/remove/module.f.d.mts +11 -0
  236. package/fjs/types/btree/remove/module.f.mjs +9 -9
  237. package/fjs/types/btree/remove/proof.f.d.mts +3 -0
  238. package/fjs/types/btree/remove/proof.f.mjs +4 -1
  239. package/fjs/types/btree/set/module.f.d.mts +9 -0
  240. package/fjs/types/btree/set/module.f.mjs +5 -6
  241. package/fjs/types/btree/set/proof.f.d.mts +3 -0
  242. package/fjs/types/btree/set/proof.f.mjs +4 -1
  243. package/fjs/types/btree/types/module.f.d.mts +2 -1
  244. package/fjs/types/btree/types/module.f.mjs +2 -1
  245. package/fjs/types/byte_set/module.f.d.mts +10 -1
  246. package/fjs/types/byte_set/module.f.mjs +5 -3
  247. package/fjs/types/byte_set/proof.f.d.mts +3 -1
  248. package/fjs/types/byte_set/proof.f.mjs +3 -1
  249. package/fjs/types/function/compare/module.f.d.mts +3 -2
  250. package/fjs/types/function/compare/module.f.mjs +3 -2
  251. package/fjs/types/function/module.f.d.mts +8 -1
  252. package/fjs/types/function/module.f.mjs +8 -1
  253. package/fjs/types/function/operator/module.f.d.mts +2 -1
  254. package/fjs/types/function/operator/module.f.mjs +2 -2
  255. package/fjs/types/list/module.f.d.mts +9 -2
  256. package/fjs/types/list/module.f.mjs +5 -3
  257. package/fjs/types/list/proof.f.d.mts +4 -1
  258. package/fjs/types/list/proof.f.mjs +4 -2
  259. package/fjs/types/nibble_set/module.f.d.mts +2 -1
  260. package/fjs/types/nibble_set/module.f.mjs +2 -2
  261. package/fjs/types/nominal/module.f.d.mts +2 -1
  262. package/fjs/types/nominal/module.f.mjs +2 -1
  263. package/fjs/types/nullable/module.f.d.mts +8 -2
  264. package/fjs/types/nullable/module.f.mjs +4 -2
  265. package/fjs/types/number/module.f.d.mts +4 -0
  266. package/fjs/types/number/module.f.mjs +4 -3
  267. package/fjs/types/object/module.f.d.mts +14 -2
  268. package/fjs/types/object/module.f.mjs +15 -6
  269. package/fjs/types/object/proof.f.d.mts +5 -2
  270. package/fjs/types/object/proof.f.mjs +6 -3
  271. package/fjs/types/object/structurally_same/module.f.d.mts +39 -0
  272. package/fjs/types/object/structurally_same/module.f.mjs +59 -0
  273. package/fjs/types/object/structurally_same/proof.f.d.mts +6 -0
  274. package/fjs/types/object/structurally_same/proof.f.mjs +73 -0
  275. package/fjs/types/ordered_map/module.f.d.mts +5 -0
  276. package/fjs/types/ordered_map/module.f.mjs +5 -4
  277. package/fjs/types/ordered_map/proof.f.d.mts +3 -0
  278. package/fjs/types/ordered_map/proof.f.mjs +4 -1
  279. package/fjs/types/patricia_trie/module.f.d.mts +2 -1
  280. package/fjs/types/patricia_trie/module.f.mjs +2 -2
  281. package/fjs/types/patricia_trie/proof.f.d.mts +3 -0
  282. package/fjs/types/patricia_trie/proof.f.mjs +4 -1
  283. package/fjs/types/prime_field/module.f.d.mts +3 -1
  284. package/fjs/types/prime_field/module.f.mjs +3 -2
  285. package/fjs/types/range/module.f.d.mts +2 -1
  286. package/fjs/types/range/module.f.mjs +2 -2
  287. package/fjs/types/range_map/module.f.d.mts +6 -0
  288. package/fjs/types/range_map/module.f.mjs +6 -9
  289. package/fjs/types/range_map/proof.f.d.mts +5 -1
  290. package/fjs/types/range_map/proof.f.mjs +5 -3
  291. package/fjs/types/range_set/module.f.d.mts +5 -0
  292. package/fjs/types/range_set/module.f.mjs +1 -0
  293. package/fjs/types/range_set/proof.f.d.mts +3 -0
  294. package/fjs/types/range_set/proof.f.mjs +4 -1
  295. package/fjs/types/result/module.d.mts +8 -0
  296. package/fjs/types/result/module.f.d.mts +37 -7
  297. package/fjs/types/result/module.f.mjs +38 -8
  298. package/fjs/types/result/module.mjs +9 -1
  299. package/fjs/types/result/proof.f.d.mts +5 -0
  300. package/fjs/types/result/proof.f.mjs +22 -2
  301. package/fjs/types/rtti/common/module.f.d.mts +35 -2
  302. package/fjs/types/rtti/common/module.f.mjs +9 -7
  303. package/fjs/types/rtti/common/proof.f.d.mts +4 -0
  304. package/fjs/types/rtti/common/proof.f.mjs +5 -2
  305. package/fjs/types/rtti/data/module.f.d.mts +120 -0
  306. package/fjs/types/rtti/data/module.f.mjs +1030 -0
  307. package/fjs/types/rtti/data/proof.f.d.mts +75 -0
  308. package/fjs/types/rtti/data/proof.f.mjs +566 -0
  309. package/fjs/types/rtti/data/types.d.ts +83 -0
  310. package/fjs/types/rtti/module.f.d.mts +12 -5
  311. package/fjs/types/rtti/module.f.mjs +7 -5
  312. package/fjs/types/rtti/parse/module.f.d.mts +38 -0
  313. package/fjs/types/rtti/parse/module.f.mjs +9 -7
  314. package/fjs/types/rtti/parse/proof.f.mjs +18 -38
  315. package/fjs/types/rtti/proof.f.d.mts +3 -1
  316. package/fjs/types/rtti/proof.f.mjs +3 -1
  317. package/fjs/types/rtti/ts/module.f.d.mts +68 -9
  318. package/fjs/types/rtti/ts/module.f.mjs +262 -30
  319. package/fjs/types/rtti/ts/proof.f.d.mts +44 -0
  320. package/fjs/types/rtti/ts/proof.f.mjs +152 -4
  321. package/fjs/types/rtti/ts/types.d.ts +11 -0
  322. package/fjs/types/rtti/types.d.ts +40 -0
  323. package/fjs/types/rtti/validate/module.f.d.mts +36 -1
  324. package/fjs/types/rtti/validate/module.f.mjs +6 -4
  325. package/fjs/types/sorted_list/module.f.d.mts +4 -1
  326. package/fjs/types/sorted_list/module.f.mjs +21 -12
  327. package/fjs/types/sorted_list/proof.f.d.mts +3 -1
  328. package/fjs/types/sorted_list/proof.f.mjs +3 -1
  329. package/fjs/types/sorted_set/module.f.d.mts +31 -1
  330. package/fjs/types/sorted_set/module.f.mjs +4 -2
  331. package/fjs/types/sorted_set/proof.f.d.mts +3 -1
  332. package/fjs/types/sorted_set/proof.f.mjs +3 -1
  333. package/fjs/types/string/module.f.d.mts +4 -0
  334. package/fjs/types/string/module.f.mjs +4 -3
  335. package/fjs/types/string_set/module.f.d.mts +3 -1
  336. package/fjs/types/string_set/module.f.mjs +3 -2
  337. package/fjs/types/ts/module.f.d.mts +2 -0
  338. package/fjs/types/ts/module.f.mjs +3 -3
  339. package/fjs/types/ts/proof.f.d.mts +1 -0
  340. package/fjs/types/ts/proof.f.mjs +5 -0
  341. package/fjs/types/ts/types.d.ts +6 -1
  342. package/fjs/types/uint8array/module.f.d.mts +13 -2
  343. package/fjs/types/uint8array/module.f.mjs +20 -15
  344. package/fjs/website/module.f.d.mts +3 -0
  345. package/fjs/website/module.f.mjs +3 -2
  346. package/package.json +3 -3
  347. package/fjs/asn.1/types.js +0 -6
  348. package/fjs/asserts/types.js +0 -6
  349. package/fjs/basen/types.js +0 -6
  350. package/fjs/bnf/data/types.js +0 -6
  351. package/fjs/bnf/descent/types.js +0 -6
  352. package/fjs/bnf/ll1/types.js +0 -6
  353. package/fjs/bnf/token_symbol/types.js +0 -6
  354. package/fjs/bnf/types.js +0 -6
  355. package/fjs/cas/evo/types.js +0 -7
  356. package/fjs/cas/types.js +0 -6
  357. package/fjs/ci/common/types.js +0 -1
  358. package/fjs/ci/nix/types.js +0 -6
  359. package/fjs/ci/types.js +0 -6
  360. package/fjs/cli/types.js +0 -6
  361. package/fjs/common/monoid/types.js +0 -6
  362. package/fjs/crypto/pow/types.js +0 -6
  363. package/fjs/crypto/secp/types.js +0 -6
  364. package/fjs/crypto/sha2/types.js +0 -6
  365. package/fjs/crypto/sign/types.js +0 -6
  366. package/fjs/crypto/vdf/types.js +0 -6
  367. package/fjs/dev/types.js +0 -6
  368. package/fjs/djs/ast/types.js +0 -8
  369. package/fjs/djs/parser/types.js +0 -7
  370. package/fjs/djs/tokenizer/types.js +0 -7
  371. package/fjs/djs/types.js +0 -7
  372. package/fjs/effects/eff/types.js +0 -6
  373. package/fjs/effects/list/types.js +0 -6
  374. package/fjs/effects/memory/types.js +0 -6
  375. package/fjs/effects/mock/types.js +0 -6
  376. package/fjs/effects/node/types.js +0 -6
  377. package/fjs/effects/node/virtual/types.js +0 -7
  378. package/fjs/effects/types.js +0 -6
  379. package/fjs/emergent_testing/all.test.d.ts +0 -1
  380. package/fjs/emergent_testing/all.test.js +0 -5
  381. package/fjs/emergent_testing/scenarios/all.d.ts +0 -1
  382. package/fjs/emergent_testing/scenarios/all.js +0 -1
  383. package/fjs/emergent_testing/scenarios/async-subtests.fail.d.ts +0 -6
  384. package/fjs/emergent_testing/scenarios/async-subtests.fail.js +0 -9
  385. package/fjs/emergent_testing/scenarios/async-subtests.pass.d.ts +0 -6
  386. package/fjs/emergent_testing/scenarios/async-subtests.pass.js +0 -9
  387. package/fjs/emergent_testing/scenarios/async.fail.d.ts +0 -3
  388. package/fjs/emergent_testing/scenarios/async.fail.js +0 -6
  389. package/fjs/emergent_testing/scenarios/async.pass.d.ts +0 -3
  390. package/fjs/emergent_testing/scenarios/async.pass.js +0 -5
  391. package/fjs/emergent_testing/scenarios/fail.fail.d.ts +0 -3
  392. package/fjs/emergent_testing/scenarios/fail.fail.js +0 -3
  393. package/fjs/emergent_testing/scenarios/return-value.pass.d.ts +0 -3
  394. package/fjs/emergent_testing/scenarios/return-value.pass.js +0 -4
  395. package/fjs/emergent_testing/scenarios/thenable.pass.d.ts +0 -5
  396. package/fjs/emergent_testing/scenarios/thenable.pass.js +0 -11
  397. package/fjs/emergent_testing/scenarios/thenable2.pass.d.ts +0 -5
  398. package/fjs/emergent_testing/scenarios/thenable2.pass.js +0 -3
  399. package/fjs/emergent_testing/scenarios/throw.pass.d.ts +0 -5
  400. package/fjs/emergent_testing/scenarios/throw.pass.js +0 -3
  401. package/fjs/emergent_testing/types.js +0 -6
  402. package/fjs/js/tokenizer/types.js +0 -6
  403. package/fjs/media/html/types.js +0 -6
  404. package/fjs/media/json/parser/types.js +0 -6
  405. package/fjs/media/json/tokenizer/types.js +0 -6
  406. package/fjs/media/json/types.js +0 -13
  407. package/fjs/media/nix/types.js +0 -6
  408. package/fjs/media/revision/types.js +0 -8
  409. package/fjs/media/type/types.js +0 -6
  410. package/fjs/media/types.js +0 -7
  411. package/fjs/nanvm/types.js +0 -11
  412. package/fjs/protocol/json_rpc/types.js +0 -8
  413. package/fjs/protocol/mcp/types.js +0 -8
  414. package/fjs/sul/id/types.js +0 -6
  415. package/fjs/sul/level/hash/types.js +0 -6
  416. package/fjs/sul/level/literal/types.js +0 -6
  417. package/fjs/sul/types.js +0 -6
  418. package/fjs/text/sgr/types.js +0 -6
  419. package/fjs/text/types.js +0 -6
  420. package/fjs/text/utf16/types.js +0 -6
  421. package/fjs/text/utf8/types.js +0 -6
  422. package/fjs/types/array/types.js +0 -6
  423. package/fjs/types/bigfloat/types.js +0 -6
  424. package/fjs/types/bigint/types.js +0 -6
  425. package/fjs/types/bit_vec/types.js +0 -6
  426. package/fjs/types/btree/find/types.js +0 -6
  427. package/fjs/types/btree/types/types.js +0 -6
  428. package/fjs/types/byte_set/types.js +0 -6
  429. package/fjs/types/function/compare/types.js +0 -6
  430. package/fjs/types/function/operator/types.js +0 -6
  431. package/fjs/types/function/types.js +0 -6
  432. package/fjs/types/list/types.js +0 -6
  433. package/fjs/types/nibble_set/types.js +0 -6
  434. package/fjs/types/nominal/types.js +0 -6
  435. package/fjs/types/nullable/types.js +0 -6
  436. package/fjs/types/object/types.js +0 -8
  437. package/fjs/types/option/types.js +0 -6
  438. package/fjs/types/ordered_map/types.js +0 -6
  439. package/fjs/types/patricia_trie/types.js +0 -6
  440. package/fjs/types/phantom/types.js +0 -11
  441. package/fjs/types/prime_field/types.js +0 -6
  442. package/fjs/types/range/types.js +0 -6
  443. package/fjs/types/range_map/types.js +0 -6
  444. package/fjs/types/result/types.js +0 -6
  445. package/fjs/types/rtti/common/types.js +0 -1
  446. package/fjs/types/rtti/parse/types.js +0 -1
  447. package/fjs/types/rtti/ts/types.js +0 -1
  448. package/fjs/types/rtti/types.js +0 -1
  449. package/fjs/types/rtti/validate/types.js +0 -1
  450. package/fjs/types/sorted_list/types.js +0 -6
  451. package/fjs/types/sorted_set/types.js +0 -6
  452. package/fjs/types/string_set/types.js +0 -6
  453. package/fjs/types/ts/types.js +0 -8
@@ -1,8 +1,27 @@
1
+ /**
2
+ * Sloth verifiable delay function over a fixed 3072-bit safe prime.
3
+ *
4
+ * See `./types.ts` for the `Sloth` type-level API.
5
+ *
6
+ * @module
7
+ *
8
+ * @example
9
+ *
10
+ * ```js
11
+ * import { sloth } from './module.f.mjs'
12
+ *
13
+ * const steps = 4n
14
+ * const x = 42n
15
+ * const y = sloth.eval(steps)(x)
16
+ * if (y === null || !sloth.verify(steps)(x)(y)) { throw y }
17
+ * ```
18
+ *
19
+ * @import { PrimeField } from '../../types/prime_field/types.ts'
20
+ * @import { Nullable } from '../../types/nullable/types.ts'
21
+ * @import { Unary } from '../../types/bigint/types.ts'
22
+ * @import { Sloth } from './types.ts'
23
+ */
1
24
  import type { Sloth } from './types.ts';
2
- /** @import { PrimeField } from '../../types/prime_field/types.ts' */
3
- /** @import { Nullable } from '../../types/nullable/types.ts' */
4
- /** @import { Unary } from '../../types/bigint/types.ts' */
5
- /** @import { Sloth } from './types.ts' */
6
25
  /** Sloth VDF modulus (3072-bit safe prime, same as reference implementations). */
7
26
  export declare const p = 170082004324204494273811327264862981553264701145937538369570764779791492622392118654022654452947093285873855529044371650895045691292912712699015605832276411308653107069798639938826015099738961427172366594187783204437869906954750443653318078358839409699824714551430573905637228307966826784684174483831608534979n;
8
27
  /**
@@ -15,12 +15,14 @@
15
15
  * const y = sloth.eval(steps)(x)
16
16
  * if (y === null || !sloth.verify(steps)(x)(y)) { throw y }
17
17
  * ```
18
+ *
19
+ * @import { PrimeField } from '../../types/prime_field/types.ts'
20
+ * @import { Nullable } from '../../types/nullable/types.ts'
21
+ * @import { Unary } from '../../types/bigint/types.ts'
22
+ * @import { Sloth } from './types.ts'
18
23
  */
24
+
19
25
  import { modSqrt, prime_field } from '../../types/prime_field/module.f.mjs'
20
- /** @import { PrimeField } from '../../types/prime_field/types.ts' */
21
- /** @import { Nullable } from '../../types/nullable/types.ts' */
22
- /** @import { Unary } from '../../types/bigint/types.ts' */
23
- /** @import { Sloth } from './types.ts' */
24
26
 
25
27
  /** Sloth VDF modulus (3072-bit safe prime, same as reference implementations). */
26
28
  export const p =
@@ -2,12 +2,15 @@
2
2
  * Development utilities for indexing modules and loading FunctionalScript files.
3
3
  *
4
4
  * @module
5
+ *
6
+ * @import { Access, All, Env, Import, Readdir } from '../effects/node/types.ts'
7
+ * @import { Effect } from '../effects/types.ts'
8
+ * @import { Dir } from '../effects/node/virtual/types.ts'
9
+ * @import { Module, ModuleMap, LoadModuleOperations } from './types.ts'
5
10
  */
6
11
  import type { Env } from '../effects/node/types.ts';
7
12
  import type { Effect } from '../effects/types.ts';
8
13
  import type { ModuleMap, LoadModuleOperations } from './types.ts';
9
- /** @import { Dir } from '../effects/node/virtual/types.ts' */
10
- /** @import { Module, ModuleMap, LoadModuleOperations } from './types.ts' */
11
14
  /**
12
15
  * Returns `true` if the file should be loaded for proof discovery.
13
16
  *
@@ -2,19 +2,20 @@
2
2
  * Development utilities for indexing modules and loading FunctionalScript files.
3
3
  *
4
4
  * @module
5
+ *
6
+ * @import { Access, All, Env, Import, Readdir } from '../effects/node/types.ts'
7
+ * @import { Effect } from '../effects/types.ts'
8
+ * @import { Dir } from '../effects/node/virtual/types.ts'
9
+ * @import { Module, ModuleMap, LoadModuleOperations } from './types.ts'
5
10
  */
6
11
 
7
12
  import { all, import_, readdir } from '../effects/node/module.f.mjs'
8
- /** @import { Access, All, Env, Import, Readdir } from '../effects/node/types.ts' */
9
13
  import { cmp as strCmp } from '../types/string/module.f.mjs'
10
14
  import { unwrap } from '../types/result/module.f.mjs'
11
15
  import { pure, step } from '../effects/module.f.mjs'
12
- /** @import { Effect } from '../effects/types.ts' */
13
16
  import { join, relativize, toPosix } from '../path/module.f.mjs'
14
17
  import { assert, assertEq } from '../asserts/module.f.mjs'
15
18
  import { emptyState, virtual } from '../effects/node/virtual/module.f.mjs'
16
- /** @import { Dir } from '../effects/node/virtual/types.ts' */
17
- /** @import { Module, ModuleMap, LoadModuleOperations } from './types.ts' */
18
19
 
19
20
  /**
20
21
  * Returns `true` if the file should be loaded for proof discovery.
@@ -26,6 +26,13 @@ export declare const validatePackageJson: import("../../types/rtti/common/types.
26
26
  readonly scripts: import("../../types/rtti/types.ts").Or<readonly [import("../../types/rtti/types.ts").Type1<"record", import("../../types/rtti/types.ts")._Type0<"string">>, undefined]>;
27
27
  }>;
28
28
  /**
29
+ * Parses `text` as JSON and validates it against {@link packageJsonSchema}.
30
+ *
31
+ * Both failures reach the caller as they were raised: a parse failure is a
32
+ * `string`, a schema failure a `ValidationError`, and `JsonTextError` is
33
+ * exactly that union — which is what `okThen` produces from the two steps'
34
+ * own error types, with no rewrapping to widen either one.
35
+ *
29
36
  * @param {string} text
30
37
  * @returns {Result<PackageJson, JsonTextError>}
31
38
  */
@@ -12,7 +12,7 @@
12
12
  import { parse as parseJsonText } from '../../media/json/module.f.mjs'
13
13
  import { option, record, string } from '../../types/rtti/module.f.mjs'
14
14
  import { validate as rttiValidate } from '../../types/rtti/validate/module.f.mjs'
15
- import { error, ok } from '../../types/result/module.f.mjs'
15
+ import { okThen } from '../../types/result/module.f.mjs'
16
16
 
17
17
  export const packageJsonSchema = /** @type {const} */ ({
18
18
  name: option(string),
@@ -26,12 +26,15 @@ export const packageJsonSchema = /** @type {const} */ ({
26
26
  export const validatePackageJson = rttiValidate(packageJsonSchema)
27
27
 
28
28
  /**
29
+ * Parses `text` as JSON and validates it against {@link packageJsonSchema}.
30
+ *
31
+ * Both failures reach the caller as they were raised: a parse failure is a
32
+ * `string`, a schema failure a `ValidationError`, and `JsonTextError` is
33
+ * exactly that union — which is what `okThen` produces from the two steps'
34
+ * own error types, with no rewrapping to widen either one.
35
+ *
29
36
  * @param {string} text
30
37
  * @returns {Result<PackageJson, JsonTextError>}
31
38
  */
32
- export const validatePackageJsonText = text => {
33
- const [t, v] = parseJsonText(text)
34
- if (t === 'error') { return error(v) }
35
- const [t2, v2] = validatePackageJson(v)
36
- return t2 === 'ok' ? ok(v2) : error(v2)
37
- }
39
+ export const validatePackageJsonText = text =>
40
+ okThen(validatePackageJson)(parseJsonText(text))
@@ -2,6 +2,9 @@
2
2
  * Synchronizes local development configuration generated from canonical repository files.
3
3
  *
4
4
  * @module
5
+ *
6
+ * @import { Effect } from '../../effects/types.ts'
7
+ * @import { Mkdir, NodeProgram, ReadFile, WriteFile } from '../../effects/node/types.ts'
5
8
  */
6
9
  import type { Effect } from '../../effects/types.ts';
7
10
  import type { Mkdir, NodeProgram, ReadFile, WriteFile } from '../../effects/node/types.ts';
@@ -2,12 +2,13 @@
2
2
  * Synchronizes local development configuration generated from canonical repository files.
3
3
  *
4
4
  * @module
5
+ *
6
+ * @import { Effect } from '../../effects/types.ts'
7
+ * @import { Mkdir, NodeProgram, ReadFile, WriteFile } from '../../effects/node/types.ts'
5
8
  */
6
9
 
7
10
  import { history, historyStep, mapStep, step } from '../../effects/module.f.mjs'
8
- /** @import { Effect } from '../../effects/types.ts' */
9
11
  import { mkdir, readUtf8File, writeUtf8File } from '../../effects/node/module.f.mjs'
10
- /** @import { Mkdir, NodeProgram, ReadFile, WriteFile } from '../../effects/node/types.ts' */
11
12
  import { unwrap } from '../../types/result/module.f.mjs'
12
13
 
13
14
  const source = /** @type {const} */ ('.copilot/mcp.json')
@@ -1,3 +1,6 @@
1
+ /**
2
+ * Proofs for local development configuration generation.
3
+ */
1
4
  export declare const proof: {
2
5
  syncMcp: () => void;
3
6
  main: () => void;
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * Proofs for local development configuration generation.
3
- *
4
- * @module
5
3
  */
4
+
6
5
  import { assert, assertEq } from '../../asserts/module.f.mjs'
7
6
  import { utf8 } from '../../text/module.f.mjs'
8
7
  import { readUtf8File } from '../../effects/node/module.f.mjs'
@@ -72,4 +72,7 @@ export declare const proof: {
72
72
  endArray: {
73
73
  nonArrayTop: () => void;
74
74
  };
75
+ endObject: {
76
+ nonObjectTop: () => void;
77
+ };
75
78
  };
@@ -544,4 +544,22 @@ export const proof = {
544
544
  assertEq(result.state, 'result')
545
545
  },
546
546
  },
547
+ endObject: {
548
+ // `endObject` is only ever invoked while `state.top` is an object
549
+ // (the `'{'`/`'{k'`/`'{:'`/`'{v'`/`'{,'` value-states guarantee it),
550
+ // so its non-object guard is a defensive branch unreachable through
551
+ // `parseFromTokens`. Call it directly to cover that branch.
552
+ nonObjectTop: () => {
553
+ /** @type {_ParseValueState} */
554
+ const state = {
555
+ state: 'exportValue',
556
+ module: { refs: null, modules: null, consts: null },
557
+ valueState: '{,',
558
+ top: null,
559
+ stack: null,
560
+ }
561
+ const result = endObject(state)
562
+ assertEq(result.state, 'result')
563
+ },
564
+ },
547
565
  }
@@ -1,3 +1,6 @@
1
+ /**
2
+ * @import { DjsTokenWithMetadata } from '../tokenizer/types.ts'
3
+ */
1
4
  export declare const proof: {
2
5
  valid: (() => void)[];
3
6
  invalid: (() => void)[];
@@ -1,6 +1,9 @@
1
+ /**
2
+ * @import { DjsTokenWithMetadata } from '../tokenizer/types.ts'
3
+ */
4
+
1
5
  import { parseFromTokens } from './module.f.mjs'
2
6
  import { tokenize } from '../tokenizer/module.f.mjs'
3
- /** @import { DjsTokenWithMetadata } from '../tokenizer/types.ts' */
4
7
  import { toArray } from '../../types/list/module.f.mjs'
5
8
  import { sort } from '../../types/object/module.f.mjs'
6
9
  import { stringToList } from '../../text/utf16/module.f.mjs'
@@ -439,6 +442,15 @@ export const proof = {
439
442
  assert(obj[0] === 'error', obj)
440
443
  assertEq(obj[1].message, 'duplicate id', obj)
441
444
  },
445
+ () => {
446
+ // No newline after the const's value: the parser hits `eof` while
447
+ // still in the newline-required state, instead of the following
448
+ // `nl` token every other `const` test provides.
449
+ const tokenList = tokenizeString('const a = 1')
450
+ const obj = parseFromTokens(tokenList)
451
+ assert(obj[0] === 'error', obj)
452
+ assertEq(obj[1].message, 'unexpected end', obj)
453
+ },
442
454
  ],
443
455
  validWithArgs:[
444
456
  () => {
@@ -1,3 +1,6 @@
1
+ /**
2
+ * @import { Vec } from '../types/bit_vec/types.ts'
3
+ */
1
4
  export declare const proof: {
2
5
  tooFewArgs: {
3
6
  noArgs: () => void;
@@ -1,4 +1,7 @@
1
- /** @import { Vec } from '../types/bit_vec/types.ts' */
1
+ /**
2
+ * @import { Vec } from '../types/bit_vec/types.ts'
3
+ */
4
+
2
5
  import { compile } from './module.f.mjs'
3
6
  import { virtual, emptyState } from '../effects/node/virtual/module.f.mjs'
4
7
  import { utf8, utf8ToString } from '../text/module.f.mjs'
@@ -16,6 +16,7 @@ const { entries } = Object
16
16
  import { compose, fn } from '../../types/function/module.f.mjs'
17
17
  import { serialize as bigintSerialize } from '../../types/bigint/module.f.mjs'
18
18
  import { objectWrap, arrayWrap, stringSerialize, numberSerialize, nullSerialize, boolSerialize } from '../../media/json/serializer/module.f.mjs'
19
+ import { assertNotNullish } from '../../asserts/module.f.mjs'
19
20
 
20
21
  const colon = [':']
21
22
 
@@ -183,12 +184,12 @@ const addRef = djs => refs => {
183
184
  export const stringify = sort => djs => {
184
185
  const refs = countRefs(djs)
185
186
  const consts = getConstants(refs)(djs)
187
+ // `consts` only ever holds values `getConstants` found `shared` for, i.e.
188
+ // values with an entry already in `refs` — so `refs.get(entry)` here is
189
+ // always defined.
186
190
  /** @type {(entry: Unknown) => List<string>} */
187
191
  const constSerialize = entry => {
188
- const refCounter = refs.get(entry)
189
- if (refCounter === undefined) {
190
- throw 'unexpected behavior'
191
- }
192
+ const refCounter = assertNotNullish(refs.get(entry))
192
193
  return flat([['const c'], numberSerialize(refCounter[0]), [' = '], serializeWithConst(sort)(refs)(entry)(entry), ['\n']])
193
194
  }
194
195
  const constStrings = flatMap(constSerialize)(consts)
@@ -52,14 +52,12 @@ import { multiply } from '../../types/bigfloat/module.f.mjs'
52
52
  import {
53
53
  asterisk, backspace, ht, lf, ff, cr,
54
54
  quotationMark, solidus, reverseSolidus,
55
- digitRange, digit0,
56
- latinCapitalLetterA,
57
- latinSmallLetterA, latinSmallLetterB, latinSmallLetterF,
55
+ hexDigitValue,
56
+ latinSmallLetterB, latinSmallLetterF,
58
57
  latinSmallLetterN, latinSmallLetterR, latinSmallLetterT, latinSmallLetterU,
59
- range as asciiRange,
60
58
  } from '../../text/ascii/module.f.mjs'
61
59
  import { codePointListToString, stringToCodePointList } from '../../text/utf16/module.f.mjs'
62
- import { contains } from '../../types/range/module.f.mjs'
60
+ import { mapUnwrap } from '../../types/nullable/module.f.mjs'
63
61
  import { concat, empty, filter, flat, flatMap, fold, map, stateScan, toArray } from '../../types/list/module.f.mjs'
64
62
  import { stringifyAsTree } from '../serializer/module.f.mjs'
65
63
  import { sort } from '../../types/object/module.f.mjs'
@@ -333,7 +331,13 @@ const filterFunc = tk => {
333
331
  }
334
332
  }
335
333
 
336
- const rangeCapitalAF = asciiRange('AF')
334
+ /**
335
+ * A `\uXXXX` escape reaches the `unicode` state only after the grammar has
336
+ * accepted its four hex digits, so a non-hex code point here is a tokenizer
337
+ * bug rather than bad input — assert instead of decoding it to a garbage
338
+ * value, which is what the hand-rolled ternary chain used to do.
339
+ */
340
+ const unwrapHexDigitValue = mapUnwrap(hexDigitValue)
337
341
 
338
342
  /** @typedef {
339
343
  * | { readonly kind: 'normal' }
@@ -358,11 +362,7 @@ const stringDecodeScan = (cp, state) => {
358
362
  default: return [[cp], { kind: 'normal' }]
359
363
  }
360
364
  case 'unicode': {
361
- // convert hex digit char to its numeric value: '0'-'9', 'A'-'F', 'a'-'f'
362
- const digit = contains(...digitRange)(cp) ? cp - digit0
363
- : contains(...rangeCapitalAF)(cp) ? cp - (latinCapitalLetterA - 10)
364
- : cp - (latinSmallLetterA - 10)
365
- const acc = (state.acc << 4) | digit
365
+ const acc = (state.acc << 4) | unwrapHexDigitValue(cp)
366
366
  return state.count === 3 ? [[acc], { kind: 'normal' }] : [null, { kind: 'unicode', acc, count: state.count + 1 }]
367
367
  }
368
368
  default:
@@ -511,10 +511,13 @@ export const tokenizeString = s => {
511
511
  // Finds `tag` in flatTokens and returns the metadata of the next code point after it.
512
512
  // numError/unterminated tags are followed by the poisoning char / EOF-hitting position
513
513
  // in the flattened AST walk order, so this pinpoints roughly where tokenization failed.
514
+ //
515
+ // The single call site only passes a `tag` it already confirmed via
516
+ // `flatTokens.includes(tag)`, so `indexOf` here is never -1.
514
517
  /** @type {(tag: string, flatTokens: readonly _FlatToken[], fallback: TokenMetadata) => TokenMetadata} */
515
518
  const metadataAfterTag = (tag, flatTokens, fallback) => {
516
519
  const idx = flatTokens.indexOf(tag)
517
- const found = idx < 0 ? undefined : flatTokens.slice(idx + 1).find((/** @type {_FlatToken} */ t) => t instanceof Array)
520
+ const found = flatTokens.slice(idx + 1).find((/** @type {_FlatToken} */ t) => t instanceof Array)
518
521
  return found === undefined ? fallback : found[1]
519
522
  }
520
523
 
@@ -592,11 +595,16 @@ const parseDjsDefaultState = input => {
592
595
 
593
596
  // Folds a leading '-' into the following number/bigint token, mirroring the old
594
597
  // fjs/djs/tokenizer's minus-state exactly.
598
+ //
599
+ // No `case '-'` here: the underlying `js/tokenizer` always merges two adjacent
600
+ // `-` characters into a single `'--'` token (the decrement operator), so this
601
+ // state — entered only after a single, unmerged `-` — can never itself see
602
+ // another `'-'`-kind input. Such an input falls through to `default`, which
603
+ // handles it exactly like any other non-number/bigint/eof token.
595
604
  /** @type {(input: JsToken) => readonly [List<DjsToken>, _DjsScanState]} */
596
605
  const parseDjsMinusState = input => {
597
606
  switch (input.kind) {
598
607
  case 'eof': return [[{ kind: 'error', message: 'invalid token' }, { kind: 'eof' }], { kind: 'def' }]
599
- case '-': return [[{ kind: 'error', message: 'invalid token' }], { kind: '-' }]
600
608
  case 'bigint': return [[{ kind: 'bigint', value: -1n * input.value }], { kind: 'def' }]
601
609
  case 'number': return [[{ kind: 'number', bf: multiply(input.bf)(-1n), value: `-${input.value}` }], { kind: 'def' }]
602
610
  default: return [{ first: { kind: 'error', message: 'invalid token' }, tail: mapDjsToken(input) }, { kind: 'def' }]
@@ -1,3 +1,6 @@
1
+ /**
2
+ * @import { Unknown } from '../types.ts'
3
+ */
1
4
  export declare const proof: {
2
5
  isValid: (() => void)[];
3
6
  tokenizer: (() => void)[];
@@ -1,4 +1,7 @@
1
- /** @import { Unknown } from '../types.ts' */
1
+ /**
2
+ * @import { Unknown } from '../types.ts'
3
+ */
4
+
2
5
  import { descentParser } from '../../bnf/descent/module.f.mjs'
3
6
  import { stringToCodePointList, stringToList } from '../../text/utf16/module.f.mjs'
4
7
  import { toArray } from '../../types/list/module.f.mjs'
@@ -898,7 +901,10 @@ export const proof = {
898
901
  assertEq(stringify(/** @type {Unknown} */ (result)), '[{"metadata":{"column":2,"line":1,"path":""},"token":{"kind":"bigint","value":-1234567890n}},{"metadata":{"column":13,"line":1,"path":""},"token":{"kind":"eof"}}]')
899
902
  },
900
903
  () => {
901
- // '-' followed by '-': one error, stays in minus-state waiting for what follows
904
+ // `js/tokenizer` merges '--' into one decrement-operator token, so
905
+ // this never enters (or re-enters) minus-state via a second '-';
906
+ // it's one error straight from the default state's unknown-token
907
+ // fallback, mapping the whole '--' token to a single error.
902
908
  const result = toArray(tokenize(stringToList('--'))(''))
903
909
  assertEq(stringify(/** @type {Unknown} */ (result)), '[{"metadata":{"column":1,"line":1,"path":""},"token":{"kind":"error","message":"invalid token"}},{"metadata":{"column":3,"line":1,"path":""},"token":{"kind":"eof"}}]')
904
910
  },
@@ -911,6 +917,12 @@ export const proof = {
911
917
  const result = toArray(tokenize(stringToList('-'))(''))
912
918
  assertEq(stringify(/** @type {Unknown} */ (result)), '[{"metadata":{"column":2,"line":1,"path":""},"token":{"kind":"error","message":"invalid token"}},{"metadata":{"column":2,"line":1,"path":""},"token":{"kind":"eof"}}]')
913
919
  },
920
+ () => {
921
+ // '-' followed by neither a number/bigint nor eof: one error for
922
+ // the dangling '-', then the following token maps through normally.
923
+ const result = toArray(tokenize(stringToList('-{'))(''))
924
+ assertEq(stringify(/** @type {Unknown} */ (result)), '[{"metadata":{"column":2,"line":1,"path":""},"token":{"kind":"error","message":"invalid token"}},{"metadata":{"column":2,"line":1,"path":""},"token":{"kind":"{"}},{"metadata":{"column":3,"line":1,"path":""},"token":{"kind":"eof"}}]')
925
+ },
914
926
  () => {
915
927
  const result = toArray(tokenize(stringToList('[-1234567890n]'))(''))
916
928
  assertEq(stringify(/** @type {Unknown} */ (result)), '[{"metadata":{"column":1,"line":1,"path":""},"token":{"kind":"["}},{"metadata":{"column":3,"line":1,"path":""},"token":{"kind":"bigint","value":-1234567890n}},{"metadata":{"column":14,"line":1,"path":""},"token":{"kind":"]"}},{"metadata":{"column":15,"line":1,"path":""},"token":{"kind":"eof"}}]')
@@ -5,28 +5,17 @@
5
5
  *
6
6
  * @import { Unknown } from '../types.ts'
7
7
  * @import { Result } from '../../types/result/types.ts'
8
- * @import { List } from '../../types/list/types.ts'
9
- * @import { OrderedMap } from '../../types/ordered_map/types.ts'
10
8
  * @import { ParseError } from '../parser/types.ts'
11
9
  * @import { AstModule } from '../ast/types.ts'
12
10
  * @import { Effect } from '../../effects/types.ts'
13
11
  * @import { ReadFile } from '../../effects/node/types.ts'
12
+ * @import { ParseContext } from './types.ts'
14
13
  */
15
14
  import type { Unknown } from '../types.ts';
16
15
  import type { Result } from '../../types/result/types.ts';
17
- import type { List } from '../../types/list/types.ts';
18
- import type { OrderedMap } from '../../types/ordered_map/types.ts';
19
16
  import type { ParseError } from '../parser/types.ts';
20
17
  import type { Effect } from '../../effects/types.ts';
21
18
  import type { ReadFile } from '../../effects/node/types.ts';
22
- export type ParseContext = {
23
- readonly complete: OrderedMap<djsResult>;
24
- readonly stack: List<string>;
25
- readonly error: ParseError | null;
26
- };
27
- export type djsResult = {
28
- djs: Unknown;
29
- };
30
19
  /**
31
20
  * Transpiles a DJS module graph rooted at `path` into a single `Unknown` value.
32
21
  *
@@ -5,12 +5,11 @@
5
5
  *
6
6
  * @import { Unknown } from '../types.ts'
7
7
  * @import { Result } from '../../types/result/types.ts'
8
- * @import { List } from '../../types/list/types.ts'
9
- * @import { OrderedMap } from '../../types/ordered_map/types.ts'
10
8
  * @import { ParseError } from '../parser/types.ts'
11
9
  * @import { AstModule } from '../ast/types.ts'
12
10
  * @import { Effect } from '../../effects/types.ts'
13
11
  * @import { ReadFile } from '../../effects/node/types.ts'
12
+ * @import { ParseContext } from './types.ts'
14
13
  */
15
14
 
16
15
  import { error, ok } from '../../types/result/module.f.mjs'
@@ -24,24 +23,6 @@ import { run } from '../ast/module.f.mjs'
24
23
  import { foldStep, pure, step } from '../../effects/module.f.mjs'
25
24
  import { readUtf8File } from '../../effects/node/module.f.mjs'
26
25
 
27
- /**
28
- * State threaded through the recursive transpilation of a DJS module graph.
29
- *
30
- * - `complete`: modules that have been fully parsed and evaluated, keyed by path.
31
- * - `stack`: import chain currently being resolved (used to detect circular dependencies).
32
- * - `error`: the first parse error encountered, or `null` while everything is clean.
33
- * @typedef {{
34
- * readonly complete: OrderedMap<djsResult>
35
- * readonly stack: List<string>
36
- * readonly error: ParseError | null
37
- * }} ParseContext
38
- */
39
-
40
- /**
41
- * The evaluated DJS value produced for one successfully transpiled module.
42
- * @typedef {{ djs: Unknown }} djsResult
43
- */
44
-
45
26
  /** @type {(context: ParseContext) => (path: string) => Unknown} */
46
27
  const mapDjs = context => path => {
47
28
  const res = at(path)(context.complete)
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Types for the DJS transpiler.
3
+ *
4
+ * @module
5
+ */
6
+ import type { Unknown } from '../types.ts';
7
+ import type { List } from '../../types/list/types.ts';
8
+ import type { OrderedMap } from '../../types/ordered_map/types.ts';
9
+ import type { ParseError } from '../parser/types.ts';
10
+ /** The evaluated DJS value produced for one successfully transpiled module. */
11
+ export type djsResult = {
12
+ djs: Unknown;
13
+ };
14
+ /**
15
+ * State threaded through the recursive transpilation of a DJS module graph.
16
+ *
17
+ * - `complete`: modules that have been fully parsed and evaluated, keyed by path.
18
+ * - `stack`: import chain currently being resolved (used to detect circular dependencies).
19
+ * - `error`: the first parse error encountered, or `null` while everything is clean.
20
+ */
21
+ export type ParseContext = {
22
+ readonly complete: OrderedMap<djsResult>;
23
+ readonly stack: List<string>;
24
+ readonly error: ParseError | null;
25
+ };
@@ -1,3 +1,13 @@
1
+ /**
2
+ * A fluent, method-chaining wrapper over the raw `Effect`.
3
+ *
4
+ * See `./types.ts` for the `Eff` type-level API.
5
+ *
6
+ * @module
7
+ *
8
+ * @import { Effect, Operation } from '../types.ts'
9
+ * @import { Eff } from './types.ts'
10
+ */
1
11
  import type { Effect, Operation } from '../types.ts';
2
12
  import type { Eff } from './types.ts';
3
13
  /**
@@ -4,10 +4,12 @@
4
4
  * See `./types.ts` for the `Eff` type-level API.
5
5
  *
6
6
  * @module
7
+ *
8
+ * @import { Effect, Operation } from '../types.ts'
9
+ * @import { Eff } from './types.ts'
7
10
  */
11
+
8
12
  import { history, historyStep, mapStep, pure } from '../module.f.mjs'
9
- /** @import { Effect, Operation } from '../types.ts' */
10
- /** @import { Eff } from './types.ts' */
11
13
 
12
14
  /**
13
15
  * Builds an `Eff` from two views of the same chain: `value`, the effect for the
@@ -1,3 +1,6 @@
1
+ /**
2
+ * @import { Effect, OperationMap } from '../types.ts'
3
+ */
1
4
  export type _AddOp = readonly ['add', (a: number, b: number) => number];
2
5
  export declare const proof: {
3
6
  value: () => void;
@@ -1,8 +1,11 @@
1
+ /**
2
+ * @import { Effect, OperationMap } from '../types.ts'
3
+ */
4
+
1
5
  import { do_, match, pure } from '../module.f.mjs'
2
6
  import { assert, assertEq } from '../../asserts/module.f.mjs'
3
7
  import { assertPure } from '../proof.f.mjs'
4
8
  import { eff } from './module.f.mjs'
5
- /** @import { Effect, OperationMap } from '../types.ts' */
6
9
 
7
10
  /** @typedef {readonly['add', (a: number, b: number) => number]} _AddOp */
8
11
 
@@ -1,7 +1,15 @@
1
+ /**
2
+ * Effectful cons-list construction.
3
+ *
4
+ * See `./types.ts` for the type-level API.
5
+ *
6
+ * @module
7
+ *
8
+ * @import { Effect, Operation } from "../types.ts"
9
+ * @import { List, Next } from "./types.ts"
10
+ */
1
11
  import type { Effect, Operation } from "../types.ts";
2
12
  import type { List, Next } from "./types.ts";
3
- /** @import { Effect, Operation } from "../types.ts" */
4
- /** @import { List, Next } from "./types.ts" */
5
13
  /**
6
14
  * The empty `List`: a pure end-of-stream marker (`undefined`).
7
15
  *
@@ -4,10 +4,12 @@
4
4
  * See `./types.ts` for the type-level API.
5
5
  *
6
6
  * @module
7
+ *
8
+ * @import { Effect, Operation } from "../types.ts"
9
+ * @import { List, Next } from "./types.ts"
7
10
  */
11
+
8
12
  import { pure } from "../module.f.mjs"
9
- /** @import { Effect, Operation } from "../types.ts" */
10
- /** @import { List, Next } from "./types.ts" */
11
13
 
12
14
  /**
13
15
  * The empty `List`: a pure end-of-stream marker (`undefined`).
@@ -14,12 +14,14 @@
14
14
  * type-level API.
15
15
  *
16
16
  * @module
17
+ *
18
+ * @import { Nominal } from '../../types/nominal/types.ts'
19
+ * @import { Effect } from '../types.ts'
20
+ * @import { Key, MemCreate, MemRead, MemWrite, _MemKeyHash } from './types.ts'
17
21
  */
18
22
  import type { Nominal } from '../../types/nominal/types.ts';
19
23
  import type { Effect } from '../types.ts';
20
24
  import type { Key, MemCreate, MemRead, MemWrite, _MemKeyHash } from './types.ts';
21
- /** @import { Effect } from '../types.ts' */
22
- /** @import { Key, MemCreate, MemRead, MemWrite, _MemKeyHash } from './types.ts' */
23
25
  /** @type {(n: Nominal<'MemKey', _MemKeyHash, string>) => string} */
24
26
  export declare const asBase: (n: Nominal<'MemKey', _MemKeyHash, string>) => string;
25
27
  /** @type {(b: string) => Nominal<'MemKey', _MemKeyHash, string>} */