functionalscript 0.36.0 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (523) hide show
  1. package/README.md +1 -1
  2. package/{fs → fjs}/asn.1/module.f.js +1 -1
  3. package/{fs → fjs}/asn.1/proof.f.js +32 -94
  4. package/fjs/asserts/module.f.d.ts +36 -0
  5. package/fjs/asserts/module.f.js +39 -0
  6. package/fjs/asserts/proof.f.d.ts +11 -0
  7. package/fjs/asserts/proof.f.js +18 -0
  8. package/{fs → fjs}/base_n/module.f.js +3 -3
  9. package/{fs → fjs}/base_n/proof.f.js +15 -39
  10. package/{fs → fjs/basen}/base128/module.f.d.ts +1 -1
  11. package/{fs → fjs/basen}/base128/module.f.js +1 -1
  12. package/{fs → fjs/basen}/base128/proof.f.js +3 -3
  13. package/{fs → fjs/basen}/base64/module.f.d.ts +2 -2
  14. package/{fs → fjs/basen}/base64/module.f.js +25 -15
  15. package/{fs → fjs/basen}/base64/proof.f.d.ts +2 -0
  16. package/{fs → fjs/basen}/base64/proof.f.js +26 -6
  17. package/{fs → fjs/basen}/cbase32/module.f.d.ts +2 -2
  18. package/{fs → fjs/basen}/cbase32/module.f.js +2 -2
  19. package/{fs → fjs/basen}/cbase32/proof.f.js +16 -43
  20. package/fjs/bnf/data/module.f.d.ts +52 -0
  21. package/{fs → fjs}/bnf/data/module.f.js +56 -6
  22. package/{fs → fjs}/bnf/data/proof.f.d.ts +1 -0
  23. package/{fs → fjs}/bnf/data/proof.f.js +59 -24
  24. package/{fs → fjs}/bnf/descent/module.f.d.ts +4 -14
  25. package/fjs/bnf/descent/module.f.js +124 -0
  26. package/{fs → fjs}/bnf/descent/proof.f.d.ts +1 -0
  27. package/{fs → fjs}/bnf/descent/proof.f.js +59 -28
  28. package/{fs → fjs}/bnf/ll1/module.f.d.ts +4 -4
  29. package/{fs → fjs}/bnf/ll1/module.f.js +15 -13
  30. package/{fs → fjs}/bnf/ll1/proof.f.d.ts +1 -0
  31. package/{fs → fjs}/bnf/ll1/proof.f.js +33 -16
  32. package/{fs → fjs}/bnf/module.f.d.ts +19 -5
  33. package/{fs → fjs}/bnf/module.f.js +14 -15
  34. package/fjs/bnf/proof.f.js +69 -0
  35. package/{fs → fjs}/bnf/testlib.f.js +2 -2
  36. package/{fs → fjs}/cas/cli/module.f.js +7 -7
  37. package/{fs → fjs}/cas/cli/proof.f.d.ts +4 -1
  38. package/{fs → fjs}/cas/cli/proof.f.js +37 -74
  39. package/fjs/cas/evo/mcp/module.f.d.ts +19 -0
  40. package/fjs/cas/evo/mcp/module.f.js +56 -0
  41. package/fjs/cas/evo/mcp/proof.f.d.ts +9 -0
  42. package/fjs/cas/evo/mcp/proof.f.js +95 -0
  43. package/fjs/cas/evo/module.f.d.ts +138 -0
  44. package/fjs/cas/evo/module.f.js +309 -0
  45. package/fjs/cas/evo/proof.f.d.ts +32 -0
  46. package/fjs/cas/evo/proof.f.js +453 -0
  47. package/fjs/cas/mcp/module.f.d.ts +49 -0
  48. package/fjs/cas/mcp/module.f.js +267 -0
  49. package/{fs → fjs}/cas/mcp/proof.f.d.ts +7 -2
  50. package/{fs → fjs}/cas/mcp/proof.f.js +116 -60
  51. package/{fs → fjs}/cas/module.f.d.ts +10 -0
  52. package/{fs → fjs}/cas/module.f.js +36 -10
  53. package/{fs → fjs}/cas/proof.f.d.ts +8 -2
  54. package/{fs → fjs}/cas/proof.f.js +85 -94
  55. package/{fs → fjs}/ci/bun/module.f.js +2 -2
  56. package/{fs → fjs}/ci/common/module.f.d.ts +2 -2
  57. package/{fs → fjs}/ci/common/module.f.js +4 -4
  58. package/fjs/ci/config/module.f.d.ts +42 -0
  59. package/{fs → fjs}/ci/config/module.f.js +6 -8
  60. package/fjs/ci/deno/module.f.js +20 -0
  61. package/{fs → fjs}/ci/module.f.js +9 -9
  62. package/{fs → fjs}/ci/node/module.f.d.ts +1 -1
  63. package/{fs → fjs}/ci/node/module.f.js +3 -5
  64. package/{fs → fjs}/ci/playwright/module.f.js +3 -3
  65. package/{fs → fjs}/ci/proof.f.js +27 -22
  66. package/{fs → fjs}/ci/rust/module.f.js +11 -3
  67. package/{fs → fjs}/cli/module.f.js +3 -3
  68. package/{fs → fjs}/cli/proof.f.js +25 -66
  69. package/{fs/types → fjs/common}/monoid/module.f.d.ts +1 -1
  70. package/{fs/types → fjs/common}/monoid/proof.f.js +4 -9
  71. package/{fs → fjs}/crypto/hmac/module.f.js +2 -2
  72. package/{fs → fjs}/crypto/hmac/proof.f.js +9 -17
  73. package/{fs → fjs}/crypto/pow/module.f.js +3 -3
  74. package/fjs/crypto/pow/proof.f.js +111 -0
  75. package/{fs → fjs}/crypto/secp/module.f.js +2 -2
  76. package/{fs → fjs}/crypto/secp/proof.f.js +14 -35
  77. package/{fs → fjs}/crypto/sha2/module.f.js +2 -2
  78. package/{fs → fjs}/crypto/sha2/proof.f.js +23 -54
  79. package/{fs → fjs}/crypto/sign/module.f.d.ts +0 -5
  80. package/{fs → fjs}/crypto/sign/module.f.js +11 -8
  81. package/{fs → fjs}/crypto/sign/proof.f.js +36 -105
  82. package/{fs → fjs}/crypto/vdf/module.f.js +1 -1
  83. package/{fs → fjs}/crypto/vdf/proof.f.js +23 -64
  84. package/{fs → fjs}/dev/module.f.js +6 -6
  85. package/{fs → fjs}/dev/package_json/module.f.js +6 -6
  86. package/{fs → fjs}/dev/package_json/proof.f.js +9 -9
  87. package/{fs → fjs}/dev/proof.f.js +3 -5
  88. package/{fs → fjs}/djs/ast/module.f.js +2 -2
  89. package/{fs → fjs}/djs/ast/proof.f.js +8 -16
  90. package/fjs/djs/examples/m.f.d.ts +2 -0
  91. package/{fs → fjs}/djs/module.f.d.ts +1 -1
  92. package/{fs → fjs}/djs/module.f.js +5 -5
  93. package/{fs → fjs}/djs/parser/module.f.d.ts +5 -0
  94. package/{fs → fjs}/djs/parser/module.f.js +24 -4
  95. package/{fs → fjs}/djs/parser/proof.f.js +145 -407
  96. package/{fs → fjs}/djs/proof.f.js +16 -39
  97. package/{fs → fjs}/djs/serializer/module.f.js +6 -6
  98. package/{fs → fjs}/djs/serializer/proof.f.js +18 -43
  99. package/fjs/djs/tokenizer/module.f.d.ts +24 -0
  100. package/fjs/djs/tokenizer/module.f.js +472 -0
  101. package/{fs/djs/tokenizer-new → fjs/djs/tokenizer}/proof.f.d.ts +4 -3
  102. package/{fs/djs/tokenizer-new → fjs/djs/tokenizer}/proof.f.js +447 -446
  103. package/{fs → fjs}/djs/transpiler/module.f.d.ts +5 -0
  104. package/{fs → fjs}/djs/transpiler/module.f.js +21 -11
  105. package/{fs → fjs}/djs/transpiler/proof.f.d.ts +3 -0
  106. package/fjs/djs/transpiler/proof.f.js +67 -0
  107. package/{fs → fjs}/effects/memory/module.f.js +4 -4
  108. package/{fs → fjs}/effects/memory/proof.f.js +11 -24
  109. package/{fs → fjs}/effects/module.f.js +1 -1
  110. package/{fs → fjs}/effects/node/memory/module.js +2 -2
  111. package/{fs → fjs}/effects/node/memory/proof.js +8 -15
  112. package/{fs → fjs}/effects/node/module.d.ts +1 -1
  113. package/{fs → fjs}/effects/node/module.f.d.ts +1 -1
  114. package/{fs → fjs}/effects/node/module.f.js +7 -7
  115. package/{fs → fjs}/effects/node/module.js +13 -13
  116. package/{fs → fjs}/effects/node/proof.f.d.ts +1 -0
  117. package/{fs → fjs}/effects/node/proof.f.js +106 -292
  118. package/{fs → fjs}/effects/node/virtual/module.f.js +7 -7
  119. package/{fs → fjs}/effects/node/virtual/proof.f.d.ts +2 -0
  120. package/{fs → fjs}/effects/node/virtual/proof.f.js +44 -30
  121. package/{fs → fjs}/effects/proof.f.js +18 -47
  122. package/fjs/emergent_testing/all.test.js +4 -0
  123. package/{fs → fjs}/emergent_testing/example.f.d.ts +1 -1
  124. package/{fs → fjs}/emergent_testing/module.f.js +6 -6
  125. package/{fs → fjs}/emergent_testing/proof.f.d.ts +19 -17
  126. package/{fs → fjs}/emergent_testing/proof.f.js +14 -14
  127. package/fjs/emergent_testing/scenarios/all.js +1 -0
  128. package/{fs → fjs}/fsc/bnf.f.js +2 -2
  129. package/{fs → fjs}/fsc/json.f.js +1 -1
  130. package/{fs → fjs}/fsc/module.f.js +7 -7
  131. package/{fs → fjs}/fsc/proof.f.js +16 -38
  132. package/{fs → fjs}/fsm/module.f.js +9 -9
  133. package/{fs → fjs}/fsm/proof.f.js +12 -19
  134. package/{fs → fjs}/js/tokenizer/module.f.js +7 -7
  135. package/{fs → fjs}/js/tokenizer/proof.f.js +5 -5
  136. package/{fs → fjs}/mcp/module.f.d.ts +20 -13
  137. package/{fs → fjs}/mcp/module.f.js +16 -9
  138. package/{fs → fjs}/mcp/proof.f.js +17 -17
  139. package/{fs → fjs}/mcp/stdio/module.f.d.ts +4 -4
  140. package/{fs → fjs}/mcp/stdio/module.f.js +12 -12
  141. package/{fs → fjs}/mcp/stdio/proof.f.js +10 -10
  142. package/{fs → fjs/media}/html/module.f.d.ts +3 -3
  143. package/{fs → fjs/media}/html/module.f.js +9 -9
  144. package/{fs → fjs/media}/html/proof.f.js +12 -33
  145. package/fjs/media/json/module.f.d.ts +50 -0
  146. package/{fs → fjs/media}/json/module.f.js +7 -7
  147. package/{fs → fjs/media}/json/parser/module.f.d.ts +7 -2
  148. package/{fs → fjs/media}/json/parser/module.f.js +21 -7
  149. package/{fs → fjs/media}/json/parser/proof.f.js +45 -120
  150. package/{fs → fjs/media}/json/proof.f.js +4 -4
  151. package/fjs/media/json/rpc/module.f.d.ts +114 -0
  152. package/{fs → fjs/media}/json/rpc/module.f.js +4 -4
  153. package/{fs → fjs/media}/json/rpc/proof.f.js +4 -4
  154. package/fjs/media/json/schema/module.f.d.ts +78 -0
  155. package/{fs → fjs/media}/json/schema/module.f.js +25 -41
  156. package/{fs → fjs/media}/json/schema/proof.f.js +6 -9
  157. package/{fs → fjs/media}/json/serializer/module.f.d.ts +1 -1
  158. package/{fs → fjs/media}/json/serializer/module.f.js +2 -2
  159. package/{fs → fjs/media}/json/serializer/proof.f.js +12 -29
  160. package/{fs → fjs/media}/json/tokenizer/module.f.d.ts +2 -2
  161. package/{fs → fjs/media}/json/tokenizer/module.f.js +4 -4
  162. package/{fs → fjs/media}/json/tokenizer/proof.f.js +5 -5
  163. package/fjs/media/module.f.d.ts +37 -0
  164. package/fjs/media/module.f.js +23 -0
  165. package/fjs/media/proof.f.d.ts +9 -0
  166. package/fjs/media/proof.f.js +58 -0
  167. package/fjs/media/revision/module.f.d.ts +78 -0
  168. package/fjs/media/revision/module.f.js +122 -0
  169. package/fjs/media/revision/proof.f.d.ts +31 -0
  170. package/fjs/media/revision/proof.f.js +140 -0
  171. package/{fs/mime → fjs/media/type}/module.f.d.ts +6 -6
  172. package/{fs/mime → fjs/media/type}/module.f.js +6 -6
  173. package/{fs/mime → fjs/media/type}/proof.f.js +8 -12
  174. package/fjs/module.f.d.ts +2 -0
  175. package/{fs/fjs → fjs}/module.f.js +9 -9
  176. package/fjs/module.js +4 -0
  177. package/{fs → fjs}/path/module.f.js +2 -2
  178. package/{fs → fjs}/path/proof.f.js +27 -78
  179. package/{fs/fjs → fjs}/proof.f.js +6 -4
  180. package/{fs → fjs}/sul/id/module.f.js +9 -9
  181. package/{fs → fjs}/sul/id/proof.f.js +12 -26
  182. package/{fs → fjs}/sul/level/hash/module.f.js +3 -3
  183. package/{fs → fjs}/sul/level/hash/proof.f.js +8 -8
  184. package/{fs → fjs}/sul/level/literal/module.f.js +5 -5
  185. package/{fs → fjs}/sul/level/literal/proof.f.js +15 -29
  186. package/{fs → fjs}/sul/module.f.js +3 -3
  187. package/{fs → fjs}/sul/proof.f.js +3 -3
  188. package/fjs/text/ascii/proof.f.d.ts +6 -0
  189. package/fjs/text/ascii/proof.f.js +14 -0
  190. package/{fs → fjs}/text/code_point/module.f.js +12 -12
  191. package/{fs → fjs}/text/code_point/proof.f.js +1 -1
  192. package/{fs → fjs}/text/module.f.js +5 -5
  193. package/{fs → fjs}/text/proof.f.js +7 -12
  194. package/{fs → fjs}/text/sgr/module.f.js +2 -2
  195. package/{fs → fjs}/text/sgr/proof.f.js +8 -17
  196. package/{fs → fjs}/text/utf16/module.f.js +6 -6
  197. package/{fs → fjs}/text/utf16/proof.f.js +27 -70
  198. package/{fs → fjs}/text/utf8/module.f.js +22 -17
  199. package/{fs → fjs}/text/utf8/proof.f.js +59 -128
  200. package/{fs → fjs}/types/array/module.f.js +1 -1
  201. package/{fs → fjs}/types/array/proof.f.js +21 -55
  202. package/{fs → fjs}/types/bigfloat/module.f.js +1 -1
  203. package/fjs/types/bigfloat/proof.f.js +217 -0
  204. package/{fs → fjs}/types/bigint/module.f.js +2 -2
  205. package/{fs → fjs}/types/bigint/proof.f.js +51 -147
  206. package/{fs → fjs}/types/bit_vec/module.f.js +8 -8
  207. package/{fs → fjs}/types/bit_vec/proof.f.js +76 -218
  208. package/{fs → fjs}/types/btree/find/module.f.js +1 -1
  209. package/fjs/types/btree/find/proof.f.d.ts +3 -0
  210. package/fjs/types/btree/find/proof.f.js +108 -0
  211. package/{fs → fjs}/types/btree/module.f.js +2 -2
  212. package/fjs/types/btree/proof.f.d.ts +13 -0
  213. package/{fs → fjs}/types/btree/proof.f.js +12 -19
  214. package/{fs → fjs}/types/btree/remove/module.f.js +4 -4
  215. package/fjs/types/btree/remove/proof.f.d.ts +9 -0
  216. package/{fs → fjs}/types/btree/remove/proof.f.js +88 -235
  217. package/{fs → fjs}/types/btree/set/module.f.js +8 -5
  218. package/{fs → fjs}/types/btree/set/proof.f.js +39 -28
  219. package/{fs → fjs}/types/byte_set/module.f.js +2 -2
  220. package/fjs/types/byte_set/proof.f.js +79 -0
  221. package/{fs → fjs}/types/function/compare/proof.f.js +14 -37
  222. package/fjs/types/function/operator/proof.f.d.ts +23 -0
  223. package/{fs → fjs}/types/function/operator/proof.f.js +18 -49
  224. package/{fs → fjs}/types/function/proof.f.js +3 -4
  225. package/{fs → fjs}/types/list/module.f.js +2 -2
  226. package/fjs/types/list/proof.f.d.ts +30 -0
  227. package/{fs → fjs}/types/list/proof.f.js +59 -167
  228. package/{fs → fjs}/types/map/proof.f.js +6 -14
  229. package/fjs/types/nibble_set/proof.f.js +60 -0
  230. package/{fs → fjs}/types/nominal/proof.f.js +5 -10
  231. package/{fs → fjs}/types/nullable/module.f.js +2 -2
  232. package/fjs/types/nullable/proof.f.js +29 -0
  233. package/{fs → fjs}/types/number/module.f.js +5 -5
  234. package/{fs → fjs}/types/number/proof.f.js +10 -25
  235. package/{fs → fjs}/types/object/module.f.js +4 -4
  236. package/{fs → fjs}/types/object/proof.f.js +4 -7
  237. package/{fs → fjs}/types/ordered_map/module.f.js +6 -6
  238. package/{fs → fjs}/types/ordered_map/proof.f.js +3 -3
  239. package/fjs/types/patricia_trie/proof.f.d.ts +13 -0
  240. package/{fs → fjs}/types/patricia_trie/proof.f.js +22 -22
  241. package/{fs → fjs}/types/prime_field/module.f.js +3 -8
  242. package/{fs → fjs}/types/prime_field/proof.f.js +2 -2
  243. package/{fs → fjs}/types/range/module.f.d.ts +1 -1
  244. package/fjs/types/range/module.f.js +2 -0
  245. package/fjs/types/range/proof.f.js +9 -0
  246. package/{fs → fjs}/types/range_map/module.f.js +4 -4
  247. package/{fs → fjs}/types/range_map/proof.f.js +35 -88
  248. package/{fs → fjs}/types/result/module.js +1 -1
  249. package/fjs/types/result/proof.f.d.ts +12 -0
  250. package/fjs/types/result/proof.f.js +31 -0
  251. package/{fs → fjs}/types/rtti/common/module.f.d.ts +36 -1
  252. package/{fs → fjs}/types/rtti/common/module.f.js +48 -4
  253. package/fjs/types/rtti/common/proof.f.d.ts +8 -0
  254. package/fjs/types/rtti/common/proof.f.js +51 -0
  255. package/{fs → fjs}/types/rtti/module.f.d.ts +2 -2
  256. package/{fs → fjs}/types/rtti/module.f.js +1 -1
  257. package/{fs → fjs}/types/rtti/parse/module.f.js +16 -25
  258. package/{fs → fjs}/types/rtti/parse/proof.f.js +9 -20
  259. package/{fs → fjs}/types/rtti/ts/module.f.d.ts +10 -4
  260. package/{fs → fjs}/types/rtti/ts/module.f.js +1 -1
  261. package/{fs → fjs}/types/rtti/ts/proof.f.js +2 -2
  262. package/{fs → fjs}/types/rtti/validate/module.f.js +11 -32
  263. package/{fs → fjs}/types/rtti/validate/proof.f.js +6 -11
  264. package/{fs → fjs}/types/sorted_list/module.f.js +3 -3
  265. package/{fs → fjs}/types/sorted_list/proof.f.js +14 -27
  266. package/{fs → fjs}/types/sorted_set/module.f.js +1 -1
  267. package/{fs → fjs}/types/sorted_set/proof.f.js +20 -45
  268. package/{fs → fjs}/types/string/module.f.js +4 -4
  269. package/fjs/types/string/proof.f.js +77 -0
  270. package/{fs → fjs}/types/string_set/module.f.js +6 -6
  271. package/fjs/types/string_set/proof.f.js +43 -0
  272. package/{fs → fjs}/types/ts/proof.f.d.ts +18 -18
  273. package/{fs → fjs}/types/ts/proof.f.js +16 -43
  274. package/{fs → fjs}/types/uint8array/module.f.js +10 -10
  275. package/{fs → fjs}/types/uint8array/proof.f.d.ts +4 -1
  276. package/{fs → fjs}/types/uint8array/proof.f.js +11 -11
  277. package/{fs → fjs}/website/module.f.js +3 -3
  278. package/fjs/website/proof.f.js +13 -0
  279. package/package.json +8 -8
  280. package/fs/asserts/module.f.d.ts +0 -4
  281. package/fs/asserts/module.f.js +0 -9
  282. package/fs/asserts/proof.f.d.ts +0 -8
  283. package/fs/asserts/proof.f.js +0 -51
  284. package/fs/bnf/data/module.f.d.ts +0 -30
  285. package/fs/bnf/descent/module.f.js +0 -119
  286. package/fs/bnf/proof.f.js +0 -104
  287. package/fs/cas/mcp/module.f.d.ts +0 -36
  288. package/fs/cas/mcp/module.f.js +0 -249
  289. package/fs/ci/config/module.f.d.ts +0 -43
  290. package/fs/ci/deno/module.f.js +0 -16
  291. package/fs/crypto/pow/proof.f.js +0 -161
  292. package/fs/djs/examples/m.f.d.ts +0 -2
  293. package/fs/djs/tokenizer/module.f.d.ts +0 -12
  294. package/fs/djs/tokenizer/module.f.js +0 -62
  295. package/fs/djs/tokenizer/proof.f.d.ts +0 -7
  296. package/fs/djs/tokenizer/proof.f.js +0 -543
  297. package/fs/djs/tokenizer-new/module.f.d.ts +0 -3
  298. package/fs/djs/tokenizer-new/module.f.js +0 -155
  299. package/fs/djs/transpiler/proof.f.js +0 -68
  300. package/fs/emergent_testing/all.test.js +0 -4
  301. package/fs/emergent_testing/scenarios/all.js +0 -1
  302. package/fs/fjs/module.f.d.ts +0 -2
  303. package/fs/fjs/module.js +0 -4
  304. package/fs/json/module.f.d.ts +0 -50
  305. package/fs/json/rpc/module.f.d.ts +0 -114
  306. package/fs/json/schema/module.f.d.ts +0 -77
  307. package/fs/text/ascii/proof.f.d.ts +0 -4
  308. package/fs/text/ascii/proof.f.js +0 -24
  309. package/fs/types/bigfloat/proof.f.js +0 -348
  310. package/fs/types/btree/find/proof.f.js +0 -151
  311. package/fs/types/btree/proof.f.d.ts +0 -7
  312. package/fs/types/btree/remove/proof.f.d.ts +0 -4
  313. package/fs/types/byte_set/proof.f.js +0 -120
  314. package/fs/types/function/operator/proof.f.d.ts +0 -12
  315. package/fs/types/list/proof.f.d.ts +0 -22
  316. package/fs/types/nibble_set/proof.f.js +0 -89
  317. package/fs/types/nullable/proof.f.js +0 -50
  318. package/fs/types/patricia_trie/proof.f.d.ts +0 -7
  319. package/fs/types/range/module.f.js +0 -2
  320. package/fs/types/range/proof.f.d.ts +0 -1
  321. package/fs/types/range/proof.f.js +0 -18
  322. package/fs/types/result/proof.f.d.ts +0 -6
  323. package/fs/types/result/proof.f.js +0 -52
  324. package/fs/types/string/proof.f.js +0 -118
  325. package/fs/types/string_set/proof.f.js +0 -82
  326. package/fs/website/proof.f.js +0 -16
  327. /package/{fs → fjs}/asn.1/module.f.d.ts +0 -0
  328. /package/{fs → fjs}/asn.1/proof.f.d.ts +0 -0
  329. /package/{fs → fjs}/base_n/module.f.d.ts +0 -0
  330. /package/{fs → fjs}/base_n/proof.f.d.ts +0 -0
  331. /package/{fs → fjs/basen}/base128/proof.f.d.ts +0 -0
  332. /package/{fs → fjs/basen}/cbase32/proof.f.d.ts +0 -0
  333. /package/{fs → fjs}/bnf/proof.f.d.ts +0 -0
  334. /package/{fs → fjs}/bnf/testlib.f.d.ts +0 -0
  335. /package/{fs → fjs}/cas/cli/module.f.d.ts +0 -0
  336. /package/{fs → fjs}/ci/bun/module.f.d.ts +0 -0
  337. /package/{fs → fjs}/ci/deno/module.f.d.ts +0 -0
  338. /package/{fs → fjs}/ci/module.f.d.ts +0 -0
  339. /package/{fs → fjs}/ci/playwright/module.f.d.ts +0 -0
  340. /package/{fs → fjs}/ci/proof.f.d.ts +0 -0
  341. /package/{fs → fjs}/ci/rust/module.f.d.ts +0 -0
  342. /package/{fs → fjs}/cli/module.f.d.ts +0 -0
  343. /package/{fs → fjs}/cli/proof.f.d.ts +0 -0
  344. /package/{fs/types → fjs/common}/monoid/module.f.js +0 -0
  345. /package/{fs/types → fjs/common}/monoid/proof.f.d.ts +0 -0
  346. /package/{fs → fjs}/crypto/hmac/module.f.d.ts +0 -0
  347. /package/{fs → fjs}/crypto/hmac/proof.f.d.ts +0 -0
  348. /package/{fs → fjs}/crypto/pow/module.f.d.ts +0 -0
  349. /package/{fs → fjs}/crypto/pow/proof.f.d.ts +0 -0
  350. /package/{fs → fjs}/crypto/secp/module.f.d.ts +0 -0
  351. /package/{fs → fjs}/crypto/secp/proof.f.d.ts +0 -0
  352. /package/{fs → fjs}/crypto/sha2/module.f.d.ts +0 -0
  353. /package/{fs → fjs}/crypto/sha2/proof.f.d.ts +0 -0
  354. /package/{fs → fjs}/crypto/sign/proof.f.d.ts +0 -0
  355. /package/{fs → fjs}/crypto/vdf/module.f.d.ts +0 -0
  356. /package/{fs → fjs}/crypto/vdf/proof.f.d.ts +0 -0
  357. /package/{fs → fjs}/dev/module.f.d.ts +0 -0
  358. /package/{fs → fjs}/dev/package_json/module.f.d.ts +0 -0
  359. /package/{fs → fjs}/dev/package_json/proof.f.d.ts +0 -0
  360. /package/{fs → fjs}/dev/proof.f.d.ts +0 -0
  361. /package/{fs → fjs}/djs/ast/module.f.d.ts +0 -0
  362. /package/{fs → fjs}/djs/ast/proof.f.d.ts +0 -0
  363. /package/{fs → fjs}/djs/examples/input.f.d.ts +0 -0
  364. /package/{fs → fjs}/djs/examples/input.f.js +0 -0
  365. /package/{fs → fjs}/djs/examples/m.f.js +0 -0
  366. /package/{fs → fjs}/djs/parser/proof.f.d.ts +0 -0
  367. /package/{fs → fjs}/djs/proof.f.d.ts +0 -0
  368. /package/{fs → fjs}/djs/serializer/module.f.d.ts +0 -0
  369. /package/{fs → fjs}/djs/serializer/proof.f.d.ts +0 -0
  370. /package/{fs → fjs}/effects/list/module.f.d.ts +0 -0
  371. /package/{fs → fjs}/effects/list/module.f.js +0 -0
  372. /package/{fs → fjs}/effects/memory/module.f.d.ts +0 -0
  373. /package/{fs → fjs}/effects/memory/proof.f.d.ts +0 -0
  374. /package/{fs → fjs}/effects/mock/module.f.d.ts +0 -0
  375. /package/{fs → fjs}/effects/mock/module.f.js +0 -0
  376. /package/{fs → fjs}/effects/module.d.ts +0 -0
  377. /package/{fs → fjs}/effects/module.f.d.ts +0 -0
  378. /package/{fs → fjs}/effects/module.js +0 -0
  379. /package/{fs → fjs}/effects/node/memory/module.d.ts +0 -0
  380. /package/{fs → fjs}/effects/node/memory/proof.d.ts +0 -0
  381. /package/{fs → fjs}/effects/node/virtual/module.f.d.ts +0 -0
  382. /package/{fs → fjs}/effects/proof.f.d.ts +0 -0
  383. /package/{fs → fjs}/emergent_testing/all.test.d.ts +0 -0
  384. /package/{fs → fjs}/emergent_testing/example.f.js +0 -0
  385. /package/{fs → fjs}/emergent_testing/module.f.d.ts +0 -0
  386. /package/{fs → fjs}/emergent_testing/scenarios/all.d.ts +0 -0
  387. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.fail.d.ts +0 -0
  388. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.fail.js +0 -0
  389. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.pass.d.ts +0 -0
  390. /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.pass.js +0 -0
  391. /package/{fs → fjs}/emergent_testing/scenarios/async.fail.d.ts +0 -0
  392. /package/{fs → fjs}/emergent_testing/scenarios/async.fail.js +0 -0
  393. /package/{fs → fjs}/emergent_testing/scenarios/async.pass.d.ts +0 -0
  394. /package/{fs → fjs}/emergent_testing/scenarios/async.pass.js +0 -0
  395. /package/{fs → fjs}/emergent_testing/scenarios/fail.fail.d.ts +0 -0
  396. /package/{fs → fjs}/emergent_testing/scenarios/fail.fail.js +0 -0
  397. /package/{fs → fjs}/emergent_testing/scenarios/return-value.pass.d.ts +0 -0
  398. /package/{fs → fjs}/emergent_testing/scenarios/return-value.pass.js +0 -0
  399. /package/{fs → fjs}/emergent_testing/scenarios/thenable.pass.d.ts +0 -0
  400. /package/{fs → fjs}/emergent_testing/scenarios/thenable.pass.js +0 -0
  401. /package/{fs → fjs}/emergent_testing/scenarios/thenable2.pass.d.ts +0 -0
  402. /package/{fs → fjs}/emergent_testing/scenarios/thenable2.pass.js +0 -0
  403. /package/{fs → fjs}/emergent_testing/scenarios/throw.pass.d.ts +0 -0
  404. /package/{fs → fjs}/emergent_testing/scenarios/throw.pass.js +0 -0
  405. /package/{fs → fjs}/fsc/bnf.f.d.ts +0 -0
  406. /package/{fs → fjs}/fsc/json.f.d.ts +0 -0
  407. /package/{fs → fjs}/fsc/module.f.d.ts +0 -0
  408. /package/{fs → fjs}/fsc/proof.f.d.ts +0 -0
  409. /package/{fs → fjs}/fsm/module.f.d.ts +0 -0
  410. /package/{fs → fjs}/fsm/proof.f.d.ts +0 -0
  411. /package/{fs → fjs}/js/tokenizer/module.f.d.ts +0 -0
  412. /package/{fs → fjs}/js/tokenizer/proof.f.d.ts +0 -0
  413. /package/{fs → fjs}/mcp/proof.f.d.ts +0 -0
  414. /package/{fs → fjs}/mcp/stdio/proof.f.d.ts +0 -0
  415. /package/{fs → fjs/media}/html/proof.f.d.ts +0 -0
  416. /package/{fs → fjs/media}/json/parser/proof.f.d.ts +0 -0
  417. /package/{fs → fjs/media}/json/proof.f.d.ts +0 -0
  418. /package/{fs → fjs/media}/json/rpc/proof.f.d.ts +0 -0
  419. /package/{fs → fjs/media}/json/schema/proof.f.d.ts +0 -0
  420. /package/{fs → fjs/media}/json/serializer/proof.f.d.ts +0 -0
  421. /package/{fs → fjs/media}/json/tokenizer/proof.f.d.ts +0 -0
  422. /package/{fs/mime → fjs/media/type}/proof.f.d.ts +0 -0
  423. /package/{fs/fjs → fjs}/module.d.ts +0 -0
  424. /package/{fs → fjs}/path/module.f.d.ts +0 -0
  425. /package/{fs → fjs}/path/proof.f.d.ts +0 -0
  426. /package/{fs/fjs → fjs}/proof.f.d.ts +0 -0
  427. /package/{fs → fjs}/sul/id/module.f.d.ts +0 -0
  428. /package/{fs → fjs}/sul/id/proof.f.d.ts +0 -0
  429. /package/{fs → fjs}/sul/level/hash/module.f.d.ts +0 -0
  430. /package/{fs → fjs}/sul/level/hash/proof.f.d.ts +0 -0
  431. /package/{fs → fjs}/sul/level/literal/module.f.d.ts +0 -0
  432. /package/{fs → fjs}/sul/level/literal/proof.f.d.ts +0 -0
  433. /package/{fs → fjs}/sul/module.f.d.ts +0 -0
  434. /package/{fs → fjs}/sul/proof.f.d.ts +0 -0
  435. /package/{fs → fjs}/text/ascii/module.f.d.ts +0 -0
  436. /package/{fs → fjs}/text/ascii/module.f.js +0 -0
  437. /package/{fs → fjs}/text/code_point/module.f.d.ts +0 -0
  438. /package/{fs → fjs}/text/code_point/proof.f.d.ts +0 -0
  439. /package/{fs → fjs}/text/module.f.d.ts +0 -0
  440. /package/{fs → fjs}/text/proof.f.d.ts +0 -0
  441. /package/{fs → fjs}/text/sgr/module.f.d.ts +0 -0
  442. /package/{fs → fjs}/text/sgr/proof.f.d.ts +0 -0
  443. /package/{fs → fjs}/text/utf16/module.f.d.ts +0 -0
  444. /package/{fs → fjs}/text/utf16/proof.f.d.ts +0 -0
  445. /package/{fs → fjs}/text/utf8/module.f.d.ts +0 -0
  446. /package/{fs → fjs}/text/utf8/proof.f.d.ts +0 -0
  447. /package/{fs → fjs}/types/array/module.f.d.ts +0 -0
  448. /package/{fs → fjs}/types/array/proof.f.d.ts +0 -0
  449. /package/{fs → fjs}/types/bigfloat/module.f.d.ts +0 -0
  450. /package/{fs → fjs}/types/bigfloat/proof.f.d.ts +0 -0
  451. /package/{fs → fjs}/types/bigint/module.f.d.ts +0 -0
  452. /package/{fs → fjs}/types/bigint/proof.f.d.ts +0 -0
  453. /package/{fs → fjs}/types/bit_vec/module.f.d.ts +0 -0
  454. /package/{fs → fjs}/types/bit_vec/proof.f.d.ts +0 -0
  455. /package/{fs → fjs}/types/btree/find/module.f.d.ts +0 -0
  456. /package/{fs → fjs}/types/btree/module.f.d.ts +0 -0
  457. /package/{fs → fjs}/types/btree/remove/module.f.d.ts +0 -0
  458. /package/{fs → fjs}/types/btree/set/module.f.d.ts +0 -0
  459. /package/{fs → fjs}/types/btree/set/proof.f.d.ts +0 -0
  460. /package/{fs → fjs}/types/btree/types/module.f.d.ts +0 -0
  461. /package/{fs → fjs}/types/btree/types/module.f.js +0 -0
  462. /package/{fs → fjs}/types/byte_set/module.f.d.ts +0 -0
  463. /package/{fs → fjs}/types/byte_set/proof.f.d.ts +0 -0
  464. /package/{fs → fjs}/types/function/compare/module.f.d.ts +0 -0
  465. /package/{fs → fjs}/types/function/compare/module.f.js +0 -0
  466. /package/{fs/types/btree/find → fjs/types/function/compare}/proof.f.d.ts +0 -0
  467. /package/{fs → fjs}/types/function/module.f.d.ts +0 -0
  468. /package/{fs → fjs}/types/function/module.f.js +0 -0
  469. /package/{fs → fjs}/types/function/operator/module.f.d.ts +0 -0
  470. /package/{fs → fjs}/types/function/operator/module.f.js +0 -0
  471. /package/{fs/types/function/compare → fjs/types/function}/proof.f.d.ts +0 -0
  472. /package/{fs → fjs}/types/list/module.f.d.ts +0 -0
  473. /package/{fs → fjs}/types/map/module.f.d.ts +0 -0
  474. /package/{fs → fjs}/types/map/module.f.js +0 -0
  475. /package/{fs → fjs}/types/map/proof.f.d.ts +0 -0
  476. /package/{fs → fjs}/types/nibble_set/module.f.d.ts +0 -0
  477. /package/{fs → fjs}/types/nibble_set/module.f.js +0 -0
  478. /package/{fs → fjs}/types/nibble_set/proof.f.d.ts +0 -0
  479. /package/{fs → fjs}/types/nominal/module.f.d.ts +0 -0
  480. /package/{fs → fjs}/types/nominal/module.f.js +0 -0
  481. /package/{fs → fjs}/types/nominal/proof.f.d.ts +0 -0
  482. /package/{fs → fjs}/types/nullable/module.f.d.ts +0 -0
  483. /package/{fs → fjs}/types/nullable/proof.f.d.ts +0 -0
  484. /package/{fs → fjs}/types/number/module.f.d.ts +0 -0
  485. /package/{fs → fjs}/types/number/proof.f.d.ts +0 -0
  486. /package/{fs → fjs}/types/object/module.f.d.ts +0 -0
  487. /package/{fs → fjs}/types/object/proof.f.d.ts +0 -0
  488. /package/{fs → fjs}/types/option/module.f.d.ts +0 -0
  489. /package/{fs → fjs}/types/option/module.f.js +0 -0
  490. /package/{fs → fjs}/types/ordered_map/module.f.d.ts +0 -0
  491. /package/{fs → fjs}/types/ordered_map/proof.f.d.ts +0 -0
  492. /package/{fs → fjs}/types/patricia_trie/module.f.d.ts +0 -0
  493. /package/{fs → fjs}/types/patricia_trie/module.f.js +0 -0
  494. /package/{fs → fjs}/types/phantom/module.f.d.ts +0 -0
  495. /package/{fs → fjs}/types/phantom/module.f.js +0 -0
  496. /package/{fs → fjs}/types/prime_field/module.f.d.ts +0 -0
  497. /package/{fs → fjs}/types/prime_field/proof.f.d.ts +0 -0
  498. /package/{fs/types/function → fjs/types/range}/proof.f.d.ts +0 -0
  499. /package/{fs → fjs}/types/range_map/module.f.d.ts +0 -0
  500. /package/{fs → fjs}/types/range_map/proof.f.d.ts +0 -0
  501. /package/{fs → fjs}/types/result/module.d.ts +0 -0
  502. /package/{fs → fjs}/types/result/module.f.d.ts +0 -0
  503. /package/{fs → fjs}/types/result/module.f.js +0 -0
  504. /package/{fs → fjs}/types/rtti/parse/module.f.d.ts +0 -0
  505. /package/{fs → fjs}/types/rtti/parse/proof.f.d.ts +0 -0
  506. /package/{fs → fjs}/types/rtti/proof.f.d.ts +0 -0
  507. /package/{fs → fjs}/types/rtti/proof.f.js +0 -0
  508. /package/{fs → fjs}/types/rtti/ts/proof.f.d.ts +0 -0
  509. /package/{fs → fjs}/types/rtti/validate/module.f.d.ts +0 -0
  510. /package/{fs → fjs}/types/rtti/validate/proof.f.d.ts +0 -0
  511. /package/{fs → fjs}/types/sorted_list/module.f.d.ts +0 -0
  512. /package/{fs → fjs}/types/sorted_list/proof.f.d.ts +0 -0
  513. /package/{fs → fjs}/types/sorted_set/module.f.d.ts +0 -0
  514. /package/{fs → fjs}/types/sorted_set/proof.f.d.ts +0 -0
  515. /package/{fs → fjs}/types/string/module.f.d.ts +0 -0
  516. /package/{fs → fjs}/types/string/proof.f.d.ts +0 -0
  517. /package/{fs → fjs}/types/string_set/module.f.d.ts +0 -0
  518. /package/{fs → fjs}/types/string_set/proof.f.d.ts +0 -0
  519. /package/{fs → fjs}/types/ts/module.f.d.ts +0 -0
  520. /package/{fs → fjs}/types/ts/module.f.js +0 -0
  521. /package/{fs → fjs}/types/uint8array/module.f.d.ts +0 -0
  522. /package/{fs → fjs}/website/module.f.d.ts +0 -0
  523. /package/{fs → fjs}/website/proof.f.d.ts +0 -0
@@ -0,0 +1,50 @@
1
+ /**
2
+ * JSON value types, rtti schemas, and utilities: `serialize`, `stringify`,
3
+ * `parse`, and `setProperty` for immutable nested updates.
4
+ *
5
+ * The JSON value types (`Unknown`, `Primitive`) are derived from the rtti
6
+ * schemas defined here, so the schema is the single source of truth — no
7
+ * hand-written types to keep in sync.
8
+ *
9
+ * @module
10
+ */
11
+ import { type List } from '../../types/list/module.f.ts';
12
+ import { type Entry as ObjectEntry } from '../../types/object/module.f.ts';
13
+ import type { Ts } from '../../types/rtti/ts/module.f.ts';
14
+ /** rtti schema matching any JSON primitive: `null`, `boolean`, `number`, or `string`. */
15
+ export declare const primitive: import("../../types/rtti/module.f.ts").Or<[null, import("../../types/rtti/module.f.ts").Boolean, import("../../types/rtti/module.f.ts").Number, import("../../types/rtti/module.f.ts").String]>;
16
+ /**
17
+ * rtti schema matching any JSON value: a primitive, an array of JSON values,
18
+ * or an object whose values are JSON values. Self-referential via a thunk;
19
+ * rtti instantiates array/record item validators lazily so recursion terminates
20
+ * on acyclic input.
21
+ *
22
+ * A struct field typed `unknown` is **required when present** — unlike rtti
23
+ * core's `unknown`, the JSON `unknown` excludes `undefined`.
24
+ */
25
+ export declare const unknown: () => readonly ['or', import("../../types/rtti/module.f.ts").Or<[null, import("../../types/rtti/module.f.ts").Boolean, import("../../types/rtti/module.f.ts").Number, import("../../types/rtti/module.f.ts").String]>, import("../../types/rtti/module.f.ts").Type1<"record", () => readonly ['or', import("../../types/rtti/module.f.ts").Or<[null, import("../../types/rtti/module.f.ts").Boolean, import("../../types/rtti/module.f.ts").Number, import("../../types/rtti/module.f.ts").String]>, import("../../types/rtti/module.f.ts").Type1<"record", /*elided*/ any>, import("../../types/rtti/module.f.ts").Type1<"array", /*elided*/ any>]>, import("../../types/rtti/module.f.ts").Type1<"array", () => readonly ['or', import("../../types/rtti/module.f.ts").Or<[null, import("../../types/rtti/module.f.ts").Boolean, import("../../types/rtti/module.f.ts").Number, import("../../types/rtti/module.f.ts").String]>, import("../../types/rtti/module.f.ts").Type1<"record", any>, import("../../types/rtti/module.f.ts").Type1<"array", any>]>];
26
+ /**
27
+ * rtti schema matching a JSON object: `{ readonly [k: string]?: Unknown }`.
28
+ */
29
+ export declare const object: import("../../types/rtti/module.f.ts").Type1<"record", typeof unknown>;
30
+ /** rtti schema matching a JSON array: `readonly Unknown[]`. */
31
+ export declare const array: import("../../types/rtti/module.f.ts").Type1<"array", typeof unknown>;
32
+ export type Primitive = Ts<typeof primitive>;
33
+ export type Unknown = Object | Array | Primitive;
34
+ export type Object = {
35
+ readonly [k in string]?: Unknown;
36
+ };
37
+ export type Array = readonly Unknown[];
38
+ export declare const setProperty: (value: Unknown) => (path: List<string>) => (src: Unknown) => Unknown;
39
+ export type Entry = ObjectEntry<Unknown>;
40
+ type Entries = List<Entry>;
41
+ type MapEntries = (entries: Entries) => Entries;
42
+ export declare const serialize: (mapEntries: MapEntries) => (value: Unknown) => List<string>;
43
+ /**
44
+ * The standard `JSON.stringify` rules determined by
45
+ * https://262.ecma-international.org/6.0/#sec-ordinary-object-internal-methods-and-internal-slots-ownpropertykeys
46
+ * https://tc39.es/ecma262/#sec-serializejsonproperty
47
+ */
48
+ export declare const stringify: (mapEntries: MapEntries) => (value: Unknown) => string;
49
+ export declare const parse: (value: string) => Unknown;
50
+ export {};
@@ -8,12 +8,12 @@
8
8
  *
9
9
  * @module
10
10
  */
11
- import { next, flat, map } from "../types/list/module.f.js";
12
- import { concat } from "../types/string/module.f.js";
13
- import { at, definedEntries } from "../types/object/module.f.js";
14
- import { compose, fn } from "../types/function/module.f.js";
15
- import { objectWrap, arrayWrap, stringSerialize, numberSerialize, nullSerialize, boolSerialize } from "./serializer/module.f.js";
16
- import { boolean as rttiBoolean, number as rttiNumber, string as rttiString, or, record, array as rttiArray } from "../types/rtti/module.f.js";
11
+ import { next, flat, map } from '../../types/list/module.f.js';
12
+ import { concat } from '../../types/string/module.f.js';
13
+ import { at, definedEntries } from '../../types/object/module.f.js';
14
+ import { compose, fn } from '../../types/function/module.f.js';
15
+ import { objectWrap, arrayWrap, stringSerialize, numberSerialize, nullSerialize, boolSerialize } from './serializer/module.f.js';
16
+ import { boolean as rttiBoolean, number as rttiNumber, string as rttiString, or, record, array as rttiArray } from '../../types/rtti/module.f.js';
17
17
  // ── rtti schemas ──────────────────────────────────────────────────────────────
18
18
  /** rtti schema matching any JSON primitive: `null`, `boolean`, `number`, or `string`. */
19
19
  export const primitive = or(null, rttiBoolean, rttiNumber, rttiString);
@@ -54,7 +54,7 @@ export const serialize = sort => {
54
54
  f(v)
55
55
  ]);
56
56
  const mapPropertySerialize = map(propertySerialize);
57
- const objectSerialize = fn((definedEntries))
57
+ const objectSerialize = fn(definedEntries)
58
58
  .map(sort)
59
59
  .map(mapPropertySerialize)
60
60
  .map(objectWrap)
@@ -3,8 +3,8 @@
3
3
  *
4
4
  * @module
5
5
  */
6
- import { type Result } from '../../types/result/module.f.ts';
7
- import { type List } from '../../types/list/module.f.ts';
6
+ import { type Result } from '../../../types/result/module.f.ts';
7
+ import { type List } from '../../../types/list/module.f.ts';
8
8
  import { type JsonToken } from '../tokenizer/module.f.ts';
9
9
  import { type Unknown } from '../module.f.ts';
10
10
  /**
@@ -14,3 +14,8 @@ import { type Unknown } from '../module.f.ts';
14
14
  * when the token sequence is invalid or incomplete.
15
15
  */
16
16
  export declare const parse: (tokenList: List<JsonToken>) => Result<Unknown, string>;
17
+ export declare const proof: {
18
+ pushKey: {
19
+ nonObjectTop: () => void;
20
+ };
21
+ };
@@ -3,13 +3,14 @@
3
3
  *
4
4
  * @module
5
5
  */
6
- import { error, ok } from "../../types/result/module.f.js";
7
- import { fold, first, drop, toArray, concat } from "../../types/list/module.f.js";
8
- import {} from "../../types/function/operator/module.f.js";
9
- import {} from "../tokenizer/module.f.js";
10
- import { setReplace } from "../../types/ordered_map/module.f.js";
11
- import {} from "../module.f.js";
12
- import { fromMap } from "../../types/object/module.f.js";
6
+ import { error, ok } from '../../../types/result/module.f.js';
7
+ import { fold, first, drop, toArray, concat } from '../../../types/list/module.f.js';
8
+ import {} from '../../../types/function/operator/module.f.js';
9
+ import {} from '../tokenizer/module.f.js';
10
+ import { setReplace } from '../../../types/ordered_map/module.f.js';
11
+ import {} from '../module.f.js';
12
+ import { fromMap } from '../../../types/object/module.f.js';
13
+ import { assertEq } from '../../../asserts/module.f.js';
13
14
  const addKeyToObject = obj => key => ({ kind: 'object', values: obj.values, key: key });
14
15
  const addValueToObject = obj => value => ({ kind: 'object', values: setReplace(obj.key)(value)(obj.values), key: '' });
15
16
  const addToArray = array => value => ({ kind: 'array', values: concat(array.values)([value]) });
@@ -168,3 +169,16 @@ export const parse = tokenList => {
168
169
  default: return error('unexpected end');
169
170
  }
170
171
  };
172
+ export const proof = {
173
+ pushKey: {
174
+ // `pushKey` is only ever invoked while `state.top` is an object (the
175
+ // state machine's `'{'`/`'{,'` statuses guarantee it), so its
176
+ // non-object guard is a defensive branch unreachable through `parse`.
177
+ // Call it directly to cover that branch.
178
+ nonObjectTop: () => {
179
+ const state = { status: '[', top: { kind: 'array', values: null }, stack: null };
180
+ const result = pushKey(state)('key');
181
+ assertEq(result.status, 'error');
182
+ },
183
+ },
184
+ };
@@ -1,9 +1,10 @@
1
- import { parse } from "./module.f.js";
2
- import { tokenize } from "../tokenizer/module.f.js";
3
- import { toArray } from "../../types/list/module.f.js";
4
- import { stringify as jsonStringify } from "../module.f.js";
5
- import { sort } from "../../types/object/module.f.js";
6
- import { stringToList } from "../../text/utf16/module.f.js";
1
+ import { parse } from './module.f.js';
2
+ import { tokenize } from '../tokenizer/module.f.js';
3
+ import { toArray } from '../../../types/list/module.f.js';
4
+ import { stringify as jsonStringify } from '../module.f.js';
5
+ import { sort } from '../../../types/object/module.f.js';
6
+ import { stringToList } from '../../../text/utf16/module.f.js';
7
+ import { assertEq } from '../../../asserts/module.f.js';
7
8
  const tokenizeString = s => toArray(tokenize(stringToList(s)));
8
9
  const stringify = jsonStringify(sort);
9
10
  export const proof = {
@@ -12,81 +13,61 @@ export const proof = {
12
13
  const tokenList = tokenizeString('null');
13
14
  const obj = parse(tokenList);
14
15
  const result = stringify(obj);
15
- if (result !== '["ok",null]') {
16
- throw result;
17
- }
16
+ assertEq(result, '["ok",null]');
18
17
  },
19
18
  () => {
20
19
  const tokenList = tokenizeString('true');
21
20
  const obj = parse(tokenList);
22
21
  const result = stringify(obj);
23
- if (result !== '["ok",true]') {
24
- throw result;
25
- }
22
+ assertEq(result, '["ok",true]');
26
23
  },
27
24
  () => {
28
25
  const tokenList = tokenizeString('false');
29
26
  const obj = parse(tokenList);
30
27
  const result = stringify(obj);
31
- if (result !== '["ok",false]') {
32
- throw result;
33
- }
28
+ assertEq(result, '["ok",false]');
34
29
  },
35
30
  () => {
36
31
  const tokenList = tokenizeString('0.1');
37
32
  const obj = parse(tokenList);
38
33
  const result = stringify(obj);
39
- if (result !== '["ok",0.1]') {
40
- throw result;
41
- }
34
+ assertEq(result, '["ok",0.1]');
42
35
  },
43
36
  () => {
44
37
  const tokenList = tokenizeString('1.1e+2');
45
38
  const obj = parse(tokenList);
46
39
  const result = stringify(obj);
47
- if (result !== '["ok",110]') {
48
- throw result;
49
- }
40
+ assertEq(result, '["ok",110]');
50
41
  },
51
42
  () => {
52
43
  const tokenList = tokenizeString('"abc"');
53
44
  const obj = parse(tokenList);
54
45
  const result = stringify(obj);
55
- if (result !== '["ok","abc"]') {
56
- throw result;
57
- }
46
+ assertEq(result, '["ok","abc"]');
58
47
  },
59
48
  () => {
60
49
  const tokenList = tokenizeString('[]');
61
50
  const obj = parse(tokenList);
62
51
  const result = stringify(obj);
63
- if (result !== '["ok",[]]') {
64
- throw result;
65
- }
52
+ assertEq(result, '["ok",[]]');
66
53
  },
67
54
  () => {
68
55
  const tokenList = tokenizeString('[1]');
69
56
  const obj = parse(tokenList);
70
57
  const result = stringify(obj);
71
- if (result !== '["ok",[1]]') {
72
- throw result;
73
- }
58
+ assertEq(result, '["ok",[1]]');
74
59
  },
75
60
  () => {
76
61
  const tokenList = tokenizeString('[[]]');
77
62
  const obj = parse(tokenList);
78
63
  const result = stringify(obj);
79
- if (result !== '["ok",[[]]]') {
80
- throw result;
81
- }
64
+ assertEq(result, '["ok",[[]]]');
82
65
  },
83
66
  () => {
84
67
  const tokenList = tokenizeString('[0,[1,[2,[]]],3]');
85
68
  const obj = parse(tokenList);
86
69
  const result = stringify(obj);
87
- if (result !== '["ok",[0,[1,[2,[]]],3]]') {
88
- throw result;
89
- }
70
+ assertEq(result, '["ok",[0,[1,[2,[]]],3]]');
90
71
  },
91
72
  () => {
92
73
  const tokenList = tokenizeString('{}');
@@ -126,34 +107,26 @@ export const proof = {
126
107
  const tokenList = tokenizeString('');
127
108
  const obj = parse(tokenList);
128
109
  const result = stringify(obj);
129
- if (result !== '["error","unexpected end"]') {
130
- throw result;
131
- }
110
+ assertEq(result, '["error","unexpected end"]');
132
111
  },
133
112
  // Trailing commas are not valid JSON — strict parser rejects them.
134
113
  () => {
135
114
  const tokenList = tokenizeString('[1,]');
136
115
  const obj = parse(tokenList);
137
116
  const result = stringify(obj);
138
- if (result !== '["error","unexpected token"]') {
139
- throw result;
140
- }
117
+ assertEq(result, '["error","unexpected token"]');
141
118
  },
142
119
  () => {
143
120
  const tokenList = tokenizeString('{"a":1,}');
144
121
  const obj = parse(tokenList);
145
122
  const result = stringify(obj);
146
- if (result !== '["error","unexpected token"]') {
147
- throw result;
148
- }
123
+ assertEq(result, '["error","unexpected token"]');
149
124
  },
150
125
  () => {
151
126
  const tokenList = tokenizeString('"123');
152
127
  const obj = parse(tokenList);
153
128
  const result = stringify(obj);
154
- if (result !== '["error","unexpected token"]') {
155
- throw result;
156
- }
129
+ assertEq(result, '["error","unexpected token"]');
157
130
  },
158
131
  // A literal control character inside a string is not valid JSON (RFC
159
132
  // 8259 §7) even though the shared tokenizer would otherwise accept it.
@@ -161,193 +134,145 @@ export const proof = {
161
134
  const tokenList = tokenizeString('"\t"');
162
135
  const obj = parse(tokenList);
163
136
  const result = stringify(obj);
164
- if (result !== '["error","unexpected token"]') {
165
- throw result;
166
- }
137
+ assertEq(result, '["error","unexpected token"]');
167
138
  },
168
139
  () => {
169
140
  const tokenList = tokenizeString('{"a":"\t"}');
170
141
  const obj = parse(tokenList);
171
142
  const result = stringify(obj);
172
- if (result !== '["error","unexpected token"]') {
173
- throw result;
174
- }
143
+ assertEq(result, '["error","unexpected token"]');
175
144
  },
176
145
  () => {
177
146
  const tokenList = tokenizeString('[,]');
178
147
  const obj = parse(tokenList);
179
148
  const result = stringify(obj);
180
- if (result !== '["error","unexpected token"]') {
181
- throw result;
182
- }
149
+ assertEq(result, '["error","unexpected token"]');
183
150
  },
184
151
  () => {
185
152
  const tokenList = tokenizeString('[1 2]');
186
153
  const obj = parse(tokenList);
187
154
  const result = stringify(obj);
188
- if (result !== '["error","unexpected token"]') {
189
- throw result;
190
- }
155
+ assertEq(result, '["error","unexpected token"]');
191
156
  },
192
157
  () => {
193
158
  const tokenList = tokenizeString('[1,,2]');
194
159
  const obj = parse(tokenList);
195
160
  const result = stringify(obj);
196
- if (result !== '["error","unexpected token"]') {
197
- throw result;
198
- }
161
+ assertEq(result, '["error","unexpected token"]');
199
162
  },
200
163
  () => {
201
164
  const tokenList = tokenizeString('[]]');
202
165
  const obj = parse(tokenList);
203
166
  const result = stringify(obj);
204
- if (result !== '["error","unexpected token"]') {
205
- throw result;
206
- }
167
+ assertEq(result, '["error","unexpected token"]');
207
168
  },
208
169
  () => {
209
170
  const tokenList = tokenizeString('["a"');
210
171
  const obj = parse(tokenList);
211
172
  const result = stringify(obj);
212
- if (result !== '["error","unexpected end"]') {
213
- throw result;
214
- }
173
+ assertEq(result, '["error","unexpected end"]');
215
174
  },
216
175
  () => {
217
176
  const tokenList = tokenizeString('[,1]');
218
177
  const obj = parse(tokenList);
219
178
  const result = stringify(obj);
220
- if (result !== '["error","unexpected token"]') {
221
- throw result;
222
- }
179
+ assertEq(result, '["error","unexpected token"]');
223
180
  },
224
181
  () => {
225
182
  const tokenList = tokenizeString('[:]');
226
183
  const obj = parse(tokenList);
227
184
  const result = stringify(obj);
228
- if (result !== '["error","unexpected token"]') {
229
- throw result;
230
- }
185
+ assertEq(result, '["error","unexpected token"]');
231
186
  },
232
187
  () => {
233
188
  const tokenList = tokenizeString(']');
234
189
  const obj = parse(tokenList);
235
190
  const result = stringify(obj);
236
- if (result !== '["error","unexpected token"]') {
237
- throw result;
238
- }
191
+ assertEq(result, '["error","unexpected token"]');
239
192
  },
240
193
  () => {
241
194
  const tokenList = tokenizeString('{,}');
242
195
  const obj = parse(tokenList);
243
196
  const result = stringify(obj);
244
- if (result !== '["error","unexpected token"]') {
245
- throw result;
246
- }
197
+ assertEq(result, '["error","unexpected token"]');
247
198
  },
248
199
  () => {
249
200
  const tokenList = tokenizeString('{1:2}');
250
201
  const obj = parse(tokenList);
251
202
  const result = stringify(obj);
252
- if (result !== '["error","unexpected token"]') {
253
- throw result;
254
- }
203
+ assertEq(result, '["error","unexpected token"]');
255
204
  },
256
205
  () => {
257
206
  const tokenList = tokenizeString('{"1"2}');
258
207
  const obj = parse(tokenList);
259
208
  const result = stringify(obj);
260
- if (result !== '["error","unexpected token"]') {
261
- throw result;
262
- }
209
+ assertEq(result, '["error","unexpected token"]');
263
210
  },
264
211
  () => {
265
212
  const tokenList = tokenizeString('{"1"::2}');
266
213
  const obj = parse(tokenList);
267
214
  const result = stringify(obj);
268
- if (result !== '["error","unexpected token"]') {
269
- throw result;
270
- }
215
+ assertEq(result, '["error","unexpected token"]');
271
216
  },
272
217
  () => {
273
218
  const tokenList = tokenizeString('{"1":2,,"3":4');
274
219
  const obj = parse(tokenList);
275
220
  const result = stringify(obj);
276
- if (result !== '["error","unexpected token"]') {
277
- throw result;
278
- }
221
+ assertEq(result, '["error","unexpected token"]');
279
222
  },
280
223
  () => {
281
224
  const tokenList = tokenizeString('{}}');
282
225
  const obj = parse(tokenList);
283
226
  const result = stringify(obj);
284
- if (result !== '["error","unexpected token"]') {
285
- throw result;
286
- }
227
+ assertEq(result, '["error","unexpected token"]');
287
228
  },
288
229
  () => {
289
230
  const tokenList = tokenizeString('{"1":2');
290
231
  const obj = parse(tokenList);
291
232
  const result = stringify(obj);
292
- if (result !== '["error","unexpected end"]') {
293
- throw result;
294
- }
233
+ assertEq(result, '["error","unexpected end"]');
295
234
  },
296
235
  () => {
297
236
  const tokenList = tokenizeString('{,"1":2}');
298
237
  const obj = parse(tokenList);
299
238
  const result = stringify(obj);
300
- if (result !== '["error","unexpected token"]') {
301
- throw result;
302
- }
239
+ assertEq(result, '["error","unexpected token"]');
303
240
  },
304
241
  () => {
305
242
  const tokenList = tokenizeString('}');
306
243
  const obj = parse(tokenList);
307
244
  const result = stringify(obj);
308
- if (result !== '["error","unexpected token"]') {
309
- throw result;
310
- }
245
+ assertEq(result, '["error","unexpected token"]');
311
246
  },
312
247
  () => {
313
248
  const tokenList = tokenizeString('{"a":1 "b":2}');
314
249
  const obj = parse(tokenList);
315
250
  const result = stringify(obj);
316
- if (result !== '["error","unexpected token"]') {
317
- throw result;
318
- }
251
+ assertEq(result, '["error","unexpected token"]');
319
252
  },
320
253
  () => {
321
254
  const tokenList = tokenizeString('[{]}');
322
255
  const obj = parse(tokenList);
323
256
  const result = stringify(obj);
324
- if (result !== '["error","unexpected token"]') {
325
- throw result;
326
- }
257
+ assertEq(result, '["error","unexpected token"]');
327
258
  },
328
259
  () => {
329
260
  const tokenList = tokenizeString('{[}]');
330
261
  const obj = parse(tokenList);
331
262
  const result = stringify(obj);
332
- if (result !== '["error","unexpected token"]') {
333
- throw result;
334
- }
263
+ assertEq(result, '["error","unexpected token"]');
335
264
  },
336
265
  () => {
337
266
  const tokenList = tokenizeString('10-5');
338
267
  const obj = parse(tokenList);
339
268
  const result = stringify(obj);
340
- if (result !== '["error","unexpected token"]') {
341
- throw result;
342
- }
269
+ assertEq(result, '["error","unexpected token"]');
343
270
  },
344
271
  () => {
345
272
  const tokenList = tokenizeString('undefined');
346
273
  const obj = parse(tokenList);
347
274
  const result = stringify(obj);
348
- if (result !== '["error","unexpected token"]') {
349
- throw result;
350
- }
275
+ assertEq(result, '["error","unexpected token"]');
351
276
  },
352
277
  ]
353
278
  };
@@ -1,7 +1,7 @@
1
- import { setProperty, stringify } from "./module.f.js";
2
- import { sort } from "../types/object/module.f.js";
3
- import { identity } from "../types/function/module.f.js";
4
- import { assertEq } from "../asserts/module.f.js";
1
+ import { setProperty, stringify } from './module.f.js';
2
+ import { sort } from '../../types/object/module.f.js';
3
+ import { identity } from '../../types/function/module.f.js';
4
+ import { assertEq } from '../../asserts/module.f.js';
5
5
  export const proof = {
6
6
  setProperty: [
7
7
  () => {
@@ -0,0 +1,114 @@
1
+ import type { Ts } from '../../../types/rtti/ts/module.f.ts';
2
+ import type { Result } from '../../../types/result/module.f.ts';
3
+ import { unknown, type Unknown } from '../module.f.ts';
4
+ export declare const jsonrpc: '2.0';
5
+ /** Request/response identifier: a string, a number, or `null`. */
6
+ declare const id: import("../../../types/rtti/module.f.ts").Or<[import("../../../types/rtti/module.f.ts").String, import("../../../types/rtti/module.f.ts").Number, null]>;
7
+ /**
8
+ * A request or notification envelope. `id` present → request (a response is
9
+ * expected); `id` absent → notification (no response). `params` is optional.
10
+ *
11
+ * https://www.jsonrpc.org/specification#request_object
12
+ */
13
+ export declare const request: {
14
+ readonly jsonrpc: "2.0";
15
+ readonly method: import("../../../types/rtti/module.f.ts").String;
16
+ readonly params: import("../../../types/rtti/module.f.ts").Or<readonly [typeof unknown, undefined]>;
17
+ readonly id: import("../../../types/rtti/module.f.ts").Or<readonly [import("../../../types/rtti/module.f.ts").Or<[import("../../../types/rtti/module.f.ts").String, import("../../../types/rtti/module.f.ts").Number, null]>, undefined]>;
18
+ };
19
+ /** The JSON-RPC error object. */
20
+ export declare const error: {
21
+ readonly code: import("../../../types/rtti/module.f.ts").Number;
22
+ readonly message: import("../../../types/rtti/module.f.ts").String;
23
+ readonly data: import("../../../types/rtti/module.f.ts").Or<readonly [typeof unknown, undefined]>;
24
+ };
25
+ export type Id = Ts<typeof id>;
26
+ export type Request = Ts<typeof request>;
27
+ export type RpcError = Ts<typeof error>;
28
+ export declare const successResponse: {
29
+ readonly jsonrpc: "2.0";
30
+ readonly result: typeof unknown;
31
+ readonly id: import("../../../types/rtti/module.f.ts").Or<[import("../../../types/rtti/module.f.ts").String, import("../../../types/rtti/module.f.ts").Number, null]>;
32
+ };
33
+ export declare const errorResponse: {
34
+ readonly jsonrpc: "2.0";
35
+ readonly error: {
36
+ readonly code: import("../../../types/rtti/module.f.ts").Number;
37
+ readonly message: import("../../../types/rtti/module.f.ts").String;
38
+ readonly data: import("../../../types/rtti/module.f.ts").Or<readonly [typeof unknown, undefined]>;
39
+ };
40
+ readonly id: import("../../../types/rtti/module.f.ts").Or<[import("../../../types/rtti/module.f.ts").String, import("../../../types/rtti/module.f.ts").Number, null]>;
41
+ };
42
+ /**
43
+ * A response envelope: either a success (`result`) or an error (`error`).
44
+ * Derived from the rtti schema via `Ts<>` — the same declaration is the
45
+ * runtime decoder and the static type, with no drift. rtti structs are open
46
+ * (extra keys allowed), so "result XOR error" is not enforced at runtime; in
47
+ * practice the dispatcher only ever constructs one or the other.
48
+ *
49
+ * https://www.jsonrpc.org/specification#response_object
50
+ */
51
+ export declare const response: import("../../../types/rtti/module.f.ts").Or<[{
52
+ readonly jsonrpc: "2.0";
53
+ readonly result: typeof unknown;
54
+ readonly id: import("../../../types/rtti/module.f.ts").Or<[import("../../../types/rtti/module.f.ts").String, import("../../../types/rtti/module.f.ts").Number, null]>;
55
+ }, {
56
+ readonly jsonrpc: "2.0";
57
+ readonly error: {
58
+ readonly code: import("../../../types/rtti/module.f.ts").Number;
59
+ readonly message: import("../../../types/rtti/module.f.ts").String;
60
+ readonly data: import("../../../types/rtti/module.f.ts").Or<readonly [typeof unknown, undefined]>;
61
+ };
62
+ readonly id: import("../../../types/rtti/module.f.ts").Or<[import("../../../types/rtti/module.f.ts").String, import("../../../types/rtti/module.f.ts").Number, null]>;
63
+ }]>;
64
+ export type Response = Ts<typeof response>;
65
+ /** Decodes an untrusted value as a JSON-RPC request / notification. */
66
+ export declare const decodeRequest: import("../../../types/rtti/common/module.f.ts").Validate<{
67
+ readonly jsonrpc: "2.0";
68
+ readonly method: import("../../../types/rtti/module.f.ts").String;
69
+ readonly params: import("../../../types/rtti/module.f.ts").Or<readonly [typeof unknown, undefined]>;
70
+ readonly id: import("../../../types/rtti/module.f.ts").Or<readonly [import("../../../types/rtti/module.f.ts").Or<[import("../../../types/rtti/module.f.ts").String, import("../../../types/rtti/module.f.ts").Number, null]>, undefined]>;
71
+ }>;
72
+ /** A method implementation: maps `params` to a result or an `RpcError`. */
73
+ export type Handler = (params: Unknown | undefined) => Result<Unknown, RpcError>;
74
+ /** A `method` name → `Handler` map. */
75
+ export type Handlers = {
76
+ readonly [method: string]: Handler;
77
+ };
78
+ /** Builds an `RpcError` with the given `code` and `message` (no `data`). */
79
+ export declare const rpcError: (code: number) => (message: string) => RpcError;
80
+ export declare const parseError: import("../../../types/rtti/ts/module.f.ts").StructTs<{
81
+ readonly code: import("../../../types/rtti/module.f.ts").Number;
82
+ readonly message: import("../../../types/rtti/module.f.ts").String;
83
+ readonly data: import("../../../types/rtti/module.f.ts").Or<readonly [typeof unknown, undefined]>;
84
+ }>;
85
+ export declare const invalidRequest: import("../../../types/rtti/ts/module.f.ts").StructTs<{
86
+ readonly code: import("../../../types/rtti/module.f.ts").Number;
87
+ readonly message: import("../../../types/rtti/module.f.ts").String;
88
+ readonly data: import("../../../types/rtti/module.f.ts").Or<readonly [typeof unknown, undefined]>;
89
+ }>;
90
+ export declare const methodNotFound: import("../../../types/rtti/ts/module.f.ts").StructTs<{
91
+ readonly code: import("../../../types/rtti/module.f.ts").Number;
92
+ readonly message: import("../../../types/rtti/module.f.ts").String;
93
+ readonly data: import("../../../types/rtti/module.f.ts").Or<readonly [typeof unknown, undefined]>;
94
+ }>;
95
+ export declare const invalidParams: import("../../../types/rtti/ts/module.f.ts").StructTs<{
96
+ readonly code: import("../../../types/rtti/module.f.ts").Number;
97
+ readonly message: import("../../../types/rtti/module.f.ts").String;
98
+ readonly data: import("../../../types/rtti/module.f.ts").Or<readonly [typeof unknown, undefined]>;
99
+ }>;
100
+ export declare const internalError: import("../../../types/rtti/ts/module.f.ts").StructTs<{
101
+ readonly code: import("../../../types/rtti/module.f.ts").Number;
102
+ readonly message: import("../../../types/rtti/module.f.ts").String;
103
+ readonly data: import("../../../types/rtti/module.f.ts").Or<readonly [typeof unknown, undefined]>;
104
+ }>;
105
+ /**
106
+ * Dispatches an already-parsed JSON-RPC value against `handlers`.
107
+ *
108
+ * - invalid envelope → `Invalid Request` (`-32600`) with `id: null`
109
+ * - notification (no `id`) → `null` (never a response)
110
+ * - unknown method → `Method not found` (`-32601`)
111
+ * - otherwise the handler's `ok` / `error` result becomes a success / error response
112
+ */
113
+ export declare const dispatch: (handlers: Handlers) => (value: Unknown) => Response | null;
114
+ export {};