functionalscript 0.44.0 → 0.46.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 (571) hide show
  1. package/README.md +5 -3
  2. package/fjs/asn.1/module.f.mjs +8 -1
  3. package/fjs/asn.1/proof.f.d.mts +15 -0
  4. package/fjs/asn.1/proof.f.mjs +31 -3
  5. package/fjs/asserts/module.f.d.mts +14 -0
  6. package/fjs/asserts/module.f.mjs +20 -0
  7. package/fjs/asserts/proof.f.d.mts +3 -0
  8. package/fjs/asserts/proof.f.mjs +15 -1
  9. package/fjs/basen/base128/module.f.mjs +22 -5
  10. package/fjs/basen/base128/proof.f.d.mts +3 -1
  11. package/fjs/basen/base128/proof.f.mjs +3 -1
  12. package/fjs/basen/base64/module.f.mjs +7 -3
  13. package/fjs/basen/base64/proof.f.d.mts +3 -1
  14. package/fjs/basen/base64/proof.f.mjs +7 -4
  15. package/fjs/basen/cbase32/proof.f.d.mts +3 -1
  16. package/fjs/basen/cbase32/proof.f.mjs +3 -1
  17. package/fjs/bnf/data/module.f.d.mts +32 -6
  18. package/fjs/bnf/data/module.f.mjs +112 -7
  19. package/fjs/bnf/data/proof.f.d.mts +2 -0
  20. package/fjs/bnf/data/proof.f.mjs +74 -4
  21. package/fjs/bnf/data/types.d.ts +20 -2
  22. package/fjs/bnf/descent/module.f.d.mts +34 -5
  23. package/fjs/bnf/descent/module.f.mjs +176 -54
  24. package/fjs/bnf/descent/proof.f.d.mts +3 -0
  25. package/fjs/bnf/descent/proof.f.mjs +189 -27
  26. package/fjs/bnf/descent/types.d.ts +24 -18
  27. package/fjs/bnf/ll1/module.f.d.mts +74 -6
  28. package/fjs/bnf/ll1/module.f.mjs +297 -95
  29. package/fjs/bnf/ll1/proof.f.d.mts +17 -2
  30. package/fjs/bnf/ll1/proof.f.mjs +372 -137
  31. package/fjs/bnf/ll1/types.d.ts +25 -27
  32. package/fjs/bnf/matcher/module.f.d.mts +66 -0
  33. package/fjs/bnf/matcher/module.f.mjs +81 -0
  34. package/fjs/bnf/matcher/proof.f.d.mts +10 -0
  35. package/fjs/bnf/matcher/proof.f.mjs +79 -0
  36. package/fjs/bnf/matcher/types.d.ts +54 -0
  37. package/fjs/bnf/module.f.d.mts +15 -6
  38. package/fjs/bnf/module.f.mjs +52 -11
  39. package/fjs/bnf/proof.f.d.mts +2 -0
  40. package/fjs/bnf/proof.f.mjs +79 -3
  41. package/fjs/bnf/testlib.f.d.mts +31 -0
  42. package/fjs/bnf/testlib.f.mjs +80 -0
  43. package/fjs/bnf/token_symbol/module.f.d.mts +4 -3
  44. package/fjs/bnf/token_symbol/module.f.mjs +7 -6
  45. package/fjs/bnf/token_symbol/proof.f.mjs +5 -2
  46. package/fjs/bnf/token_symbol/types.d.ts +2 -2
  47. package/fjs/bnf/types.d.ts +10 -3
  48. package/fjs/cas/cli/module.f.d.mts +1 -1
  49. package/fjs/cas/cli/module.f.mjs +14 -20
  50. package/fjs/cas/cli/proof.f.d.mts +4 -4
  51. package/fjs/cas/cli/proof.f.mjs +47 -34
  52. package/fjs/cas/evo/module.f.d.mts +71 -31
  53. package/fjs/cas/evo/module.f.mjs +223 -138
  54. package/fjs/cas/evo/proof.f.d.mts +10 -1
  55. package/fjs/cas/evo/proof.f.mjs +311 -226
  56. package/fjs/cas/evo/types.d.ts +45 -9
  57. package/fjs/cas/module.f.d.mts +18 -32
  58. package/fjs/cas/module.f.mjs +164 -176
  59. package/fjs/cas/proof.f.d.mts +11 -8
  60. package/fjs/cas/proof.f.mjs +259 -147
  61. package/fjs/cas/types.d.ts +24 -10
  62. package/fjs/ci/common/module.f.d.mts +1 -1
  63. package/fjs/ci/common/module.f.mjs +1 -0
  64. package/fjs/ci/config/module.f.d.mts +3 -3
  65. package/fjs/ci/config/module.f.mjs +3 -3
  66. package/fjs/ci/module.f.d.mts +5 -5
  67. package/fjs/ci/module.f.mjs +8 -7
  68. package/fjs/ci/nix/module.f.d.mts +7 -5
  69. package/fjs/ci/nix/module.f.mjs +13 -12
  70. package/fjs/ci/nix/proof.f.d.mts +2 -0
  71. package/fjs/ci/nix/proof.f.mjs +4 -4
  72. package/fjs/ci/proof.f.d.mts +4 -2
  73. package/fjs/ci/proof.f.mjs +13 -8
  74. package/fjs/cli/module.f.d.mts +4 -6
  75. package/fjs/cli/module.f.mjs +4 -8
  76. package/fjs/cli/proof.f.d.mts +4 -2
  77. package/fjs/cli/proof.f.mjs +21 -18
  78. package/fjs/cli/types.d.ts +2 -3
  79. package/fjs/common/monoid/module.f.d.mts +70 -12
  80. package/fjs/common/monoid/module.f.mjs +177 -14
  81. package/fjs/common/monoid/proof.f.d.mts +12 -1
  82. package/fjs/common/monoid/proof.f.mjs +88 -4
  83. package/fjs/common/monoid/types.d.ts +23 -0
  84. package/fjs/crypto/hmac/module.f.mjs +2 -2
  85. package/fjs/crypto/secp/proof.f.d.mts +3 -1
  86. package/fjs/crypto/secp/proof.f.mjs +3 -1
  87. package/fjs/crypto/sha2/module.f.mjs +3 -1
  88. package/fjs/crypto/sha2/proof.f.d.mts +4 -1
  89. package/fjs/crypto/sha2/proof.f.mjs +27 -1
  90. package/fjs/crypto/sha2/types.d.ts +11 -0
  91. package/fjs/crypto/sign/module.f.mjs +2 -2
  92. package/fjs/crypto/vdf/module.f.d.mts +23 -4
  93. package/fjs/crypto/vdf/module.f.mjs +6 -4
  94. package/fjs/dev/module.f.d.mts +17 -5
  95. package/fjs/dev/module.f.mjs +60 -30
  96. package/fjs/dev/update/module.f.d.mts +11 -3
  97. package/fjs/dev/update/module.f.mjs +16 -11
  98. package/fjs/dev/update/proof.f.d.mts +4 -3
  99. package/fjs/dev/update/proof.f.mjs +11 -7
  100. package/fjs/djs/module.f.d.mts +13 -5
  101. package/fjs/djs/module.f.mjs +31 -16
  102. package/fjs/djs/parser/module.f.d.mts +16 -3
  103. package/fjs/djs/parser/module.f.mjs +135 -16
  104. package/fjs/djs/parser/proof.f.d.mts +8 -1
  105. package/fjs/djs/parser/proof.f.mjs +287 -13
  106. package/fjs/djs/parser/types.d.ts +7 -1
  107. package/fjs/djs/proof.f.d.mts +20 -1
  108. package/fjs/djs/proof.f.mjs +190 -12
  109. package/fjs/djs/serializer/module.f.d.mts +25 -8
  110. package/fjs/djs/serializer/module.f.mjs +66 -19
  111. package/fjs/djs/serializer/proof.f.d.mts +5 -0
  112. package/fjs/djs/serializer/proof.f.mjs +23 -1
  113. package/fjs/djs/tokenizer/module.f.d.mts +17 -5
  114. package/fjs/djs/tokenizer/module.f.mjs +120 -73
  115. package/fjs/djs/tokenizer/proof.f.d.mts +3 -0
  116. package/fjs/djs/tokenizer/proof.f.mjs +86 -67
  117. package/fjs/djs/transpiler/module.f.d.mts +13 -19
  118. package/fjs/djs/transpiler/module.f.mjs +79 -72
  119. package/fjs/djs/transpiler/types.d.ts +29 -0
  120. package/fjs/djs/types.d.ts +7 -1
  121. package/fjs/effects/list/module.f.d.mts +23 -12
  122. package/fjs/effects/list/module.f.mjs +16 -12
  123. package/fjs/effects/list/types.d.ts +27 -7
  124. package/fjs/effects/memory/module.f.d.mts +6 -3
  125. package/fjs/effects/memory/module.f.mjs +7 -7
  126. package/fjs/effects/memory/proof.f.d.mts +4 -0
  127. package/fjs/effects/memory/proof.f.mjs +18 -9
  128. package/fjs/effects/memory/types.d.ts +4 -3
  129. package/fjs/effects/mock/module.f.d.mts +28 -4
  130. package/fjs/effects/mock/module.f.mjs +39 -5
  131. package/fjs/effects/mock/types.d.ts +10 -1
  132. package/fjs/effects/module.d.mts +12 -2
  133. package/fjs/effects/module.f.d.mts +469 -281
  134. package/fjs/effects/module.f.mjs +538 -299
  135. package/fjs/effects/module.mjs +11 -2
  136. package/fjs/effects/node/memory/module.d.mts +7 -2
  137. package/fjs/effects/node/memory/module.mjs +9 -5
  138. package/fjs/effects/node/memory/proof.d.mts +2 -0
  139. package/fjs/effects/node/memory/proof.mjs +12 -5
  140. package/fjs/effects/node/module.d.mts +8 -2
  141. package/fjs/effects/node/module.f.d.mts +183 -43
  142. package/fjs/effects/node/module.f.mjs +260 -62
  143. package/fjs/effects/node/module.mjs +61 -50
  144. package/fjs/effects/node/proof.f.d.mts +28 -2
  145. package/fjs/effects/node/proof.f.mjs +161 -42
  146. package/fjs/effects/node/types.d.ts +106 -18
  147. package/fjs/effects/node/virtual/module.f.d.mts +21 -4
  148. package/fjs/effects/node/virtual/module.f.mjs +113 -70
  149. package/fjs/effects/node/virtual/proof.f.d.mts +31 -2
  150. package/fjs/effects/node/virtual/proof.f.mjs +201 -8
  151. package/fjs/effects/proof.f.d.mts +69 -34
  152. package/fjs/effects/proof.f.mjs +413 -130
  153. package/fjs/effects/types.d.ts +161 -33
  154. package/fjs/emergent_testing/all.test.d.mts +8 -0
  155. package/fjs/emergent_testing/all.test.mjs +14 -0
  156. package/fjs/emergent_testing/module.f.d.mts +22 -10
  157. package/fjs/emergent_testing/module.f.mjs +119 -85
  158. package/fjs/emergent_testing/proof.f.d.mts +21 -7
  159. package/fjs/emergent_testing/proof.f.mjs +169 -35
  160. package/fjs/emergent_testing/types.d.ts +22 -4
  161. package/fjs/fsc/bnf.f.d.mts +3 -0
  162. package/fjs/fsc/bnf.f.mjs +4 -1
  163. package/fjs/fsc/json.f.d.mts +3 -0
  164. package/fjs/fsc/json.f.mjs +4 -1
  165. package/fjs/fsc/module.f.d.mts +9 -0
  166. package/fjs/fsc/module.f.mjs +5 -3
  167. package/fjs/fsm/module.f.d.mts +14 -4
  168. package/fjs/fsm/module.f.mjs +54 -37
  169. package/fjs/fsm/proof.f.d.mts +5 -0
  170. package/fjs/fsm/proof.f.mjs +87 -115
  171. package/fjs/js/keywords/module.f.d.mts +52 -0
  172. package/fjs/js/keywords/module.f.mjs +72 -0
  173. package/fjs/{emergent_testing/scenarios/return-value.pass.d.ts → js/keywords/proof.f.d.mts} +1 -1
  174. package/fjs/js/keywords/proof.f.mjs +13 -0
  175. package/fjs/js/tokenizer/module.f.d.mts +30 -3
  176. package/fjs/js/tokenizer/module.f.mjs +161 -211
  177. package/fjs/js/tokenizer/proof.f.d.mts +1 -0
  178. package/fjs/js/tokenizer/proof.f.mjs +54 -24
  179. package/fjs/js/tokenizer/types.d.ts +33 -24
  180. package/fjs/mcp/cas/module.f.d.mts +1 -6
  181. package/fjs/mcp/cas/module.f.mjs +55 -51
  182. package/fjs/mcp/cas/proof.f.d.mts +15 -0
  183. package/fjs/mcp/cas/proof.f.mjs +174 -0
  184. package/fjs/mcp/evo/module.f.d.mts +19 -10
  185. package/fjs/mcp/evo/module.f.mjs +48 -27
  186. package/fjs/mcp/evo/proof.f.d.mts +6 -1
  187. package/fjs/mcp/evo/proof.f.mjs +115 -31
  188. package/fjs/mcp/module.f.d.mts +39 -4
  189. package/fjs/mcp/module.f.mjs +14 -12
  190. package/fjs/mcp/proof.f.d.mts +13 -1
  191. package/fjs/mcp/proof.f.mjs +120 -61
  192. package/fjs/media/html/module.f.d.mts +12 -0
  193. package/fjs/media/html/module.f.mjs +7 -5
  194. package/fjs/media/html/proof.f.d.mts +3 -0
  195. package/fjs/media/html/proof.f.mjs +4 -1
  196. package/fjs/media/json/extended/module.f.d.mts +82 -0
  197. package/fjs/media/json/extended/module.f.mjs +153 -0
  198. package/fjs/media/json/extended/proof.f.d.mts +42 -0
  199. package/fjs/media/json/extended/proof.f.mjs +127 -0
  200. package/fjs/media/json/extended/types.d.ts +23 -0
  201. package/fjs/media/json/module.f.d.mts +8 -2
  202. package/fjs/media/json/module.f.mjs +43 -41
  203. package/fjs/media/json/number/module.f.d.mts +59 -0
  204. package/fjs/media/json/number/module.f.mjs +136 -0
  205. package/fjs/media/json/number/proof.f.d.mts +24 -0
  206. package/fjs/media/json/number/proof.f.mjs +86 -0
  207. package/fjs/media/json/number/types.d.ts +28 -0
  208. package/fjs/media/json/parser/module.f.d.mts +25 -13
  209. package/fjs/media/json/parser/module.f.mjs +133 -72
  210. package/fjs/media/json/parser/proof.f.d.mts +5 -0
  211. package/fjs/media/json/parser/proof.f.mjs +31 -1
  212. package/fjs/media/json/parser/types.d.ts +38 -14
  213. package/fjs/media/json/rtti/module.f.d.mts +1 -1
  214. package/fjs/media/json/rtti/module.f.mjs +1 -1
  215. package/fjs/media/json/rtti/proof.f.d.mts +3 -0
  216. package/fjs/media/json/rtti/proof.f.mjs +12 -12
  217. package/fjs/media/json/schema/module.f.d.mts +61 -27
  218. package/fjs/media/json/schema/module.f.mjs +218 -63
  219. package/fjs/media/json/schema/proof.f.d.mts +41 -1
  220. package/fjs/media/json/schema/proof.f.mjs +220 -9
  221. package/fjs/media/json/serializer/module.f.d.mts +44 -0
  222. package/fjs/media/json/serializer/module.f.mjs +71 -9
  223. package/fjs/media/json/tokenizer/module.f.d.mts +8 -0
  224. package/fjs/media/json/tokenizer/module.f.mjs +31 -8
  225. package/fjs/media/json/tokenizer/proof.f.d.mts +6 -0
  226. package/fjs/media/json/tokenizer/proof.f.mjs +62 -21
  227. package/fjs/media/json/types.d.ts +36 -10
  228. package/fjs/media/lock/module.f.d.mts +100 -0
  229. package/fjs/media/lock/module.f.mjs +125 -0
  230. package/fjs/media/lock/proof.f.d.mts +33 -0
  231. package/fjs/media/lock/proof.f.mjs +196 -0
  232. package/fjs/media/lock/types.d.ts +15 -0
  233. package/fjs/media/module.f.d.mts +6 -5
  234. package/fjs/media/module.f.mjs +8 -7
  235. package/fjs/media/nix/module.f.d.mts +13 -0
  236. package/fjs/media/nix/module.f.mjs +4 -2
  237. package/fjs/media/nix/proof.f.d.mts +3 -0
  238. package/fjs/media/nix/proof.f.mjs +4 -1
  239. package/fjs/media/note/module.f.d.mts +121 -0
  240. package/fjs/media/note/module.f.mjs +131 -0
  241. package/fjs/media/note/proof.f.d.mts +29 -0
  242. package/fjs/media/note/proof.f.mjs +150 -0
  243. package/fjs/media/note/types.d.ts +10 -0
  244. package/fjs/media/proof.f.d.mts +4 -1
  245. package/fjs/media/proof.f.mjs +40 -21
  246. package/fjs/media/revision/module.f.d.mts +83 -7
  247. package/fjs/media/revision/module.f.mjs +127 -23
  248. package/fjs/media/revision/proof.f.d.mts +14 -0
  249. package/fjs/media/revision/proof.f.mjs +93 -2
  250. package/fjs/media/revision/types.d.ts +34 -5
  251. package/fjs/media/type/module.f.d.mts +53 -18
  252. package/fjs/media/type/module.f.mjs +87 -97
  253. package/fjs/media/type/proof.f.d.mts +17 -0
  254. package/fjs/media/type/proof.f.mjs +73 -13
  255. package/fjs/module.d.mts +5 -0
  256. package/fjs/module.f.d.mts +8 -0
  257. package/fjs/module.f.mjs +33 -10
  258. package/fjs/module.mjs +6 -0
  259. package/fjs/nanvm/proof.f.mjs +3 -3
  260. package/fjs/nanvm/rust/module.f.mjs +1 -1
  261. package/fjs/nanvm/update/module.f.d.mts +4 -4
  262. package/fjs/nanvm/update/module.f.mjs +8 -9
  263. package/fjs/nanvm/update/proof.f.mjs +4 -3
  264. package/fjs/path/module.f.d.mts +8 -0
  265. package/fjs/path/module.f.mjs +4 -2
  266. package/fjs/proof.f.d.mts +7 -3
  267. package/fjs/proof.f.mjs +41 -12
  268. package/fjs/protocol/json_rpc/module.f.d.mts +3 -3
  269. package/fjs/protocol/json_rpc/module.f.mjs +10 -7
  270. package/fjs/protocol/json_rpc/proof.f.d.mts +6 -0
  271. package/fjs/protocol/json_rpc/proof.f.mjs +26 -5
  272. package/fjs/protocol/mcp/module.f.d.mts +10 -13
  273. package/fjs/protocol/mcp/module.f.mjs +74 -58
  274. package/fjs/protocol/mcp/proof.f.d.mts +16 -3
  275. package/fjs/protocol/mcp/proof.f.mjs +224 -69
  276. package/fjs/protocol/mcp/stdio/module.f.d.mts +17 -11
  277. package/fjs/protocol/mcp/stdio/module.f.mjs +39 -33
  278. package/fjs/protocol/mcp/stdio/proof.f.d.mts +5 -3
  279. package/fjs/protocol/mcp/stdio/proof.f.mjs +46 -13
  280. package/fjs/protocol/mcp/stdio/types.d.ts +14 -0
  281. package/fjs/protocol/mcp/types.d.ts +17 -6
  282. package/fjs/sul/id/module.f.d.mts +4 -0
  283. package/fjs/sul/id/module.f.mjs +6 -6
  284. package/fjs/sul/level/hash/module.f.d.mts +4 -1
  285. package/fjs/sul/level/hash/module.f.mjs +6 -4
  286. package/fjs/sul/level/hash/proof.f.d.mts +4 -0
  287. package/fjs/sul/level/hash/proof.f.mjs +7 -4
  288. package/fjs/sul/level/literal/module.f.d.mts +4 -1
  289. package/fjs/sul/level/literal/module.f.mjs +4 -3
  290. package/fjs/sul/level/literal/proof.f.d.mts +3 -0
  291. package/fjs/sul/level/literal/proof.f.mjs +4 -1
  292. package/fjs/sul/module.f.d.mts +5 -3
  293. package/fjs/sul/module.f.mjs +23 -17
  294. package/fjs/sul/proof.f.d.mts +4 -0
  295. package/fjs/sul/proof.f.mjs +5 -2
  296. package/fjs/text/ascii/module.f.d.mts +26 -0
  297. package/fjs/text/ascii/module.f.mjs +49 -1
  298. package/fjs/text/ascii/proof.f.d.mts +10 -0
  299. package/fjs/text/ascii/proof.f.mjs +33 -1
  300. package/fjs/text/code_point/module.f.d.mts +29 -3
  301. package/fjs/text/code_point/module.f.mjs +32 -9
  302. package/fjs/text/code_point/proof.f.d.mts +2 -0
  303. package/fjs/text/code_point/proof.f.mjs +39 -0
  304. package/fjs/text/module.f.d.mts +4 -2
  305. package/fjs/text/module.f.mjs +4 -3
  306. package/fjs/text/proof.f.d.mts +3 -0
  307. package/fjs/text/proof.f.mjs +4 -1
  308. package/fjs/text/sgr/module.f.d.mts +6 -5
  309. package/fjs/text/sgr/module.f.mjs +8 -8
  310. package/fjs/text/sgr/proof.f.d.mts +3 -0
  311. package/fjs/text/sgr/proof.f.mjs +4 -1
  312. package/fjs/text/utf16/module.f.d.mts +5 -1
  313. package/fjs/text/utf16/module.f.mjs +38 -35
  314. package/fjs/text/utf16/proof.f.d.mts +3 -1
  315. package/fjs/text/utf16/proof.f.mjs +19 -2
  316. package/fjs/text/utf8/module.f.d.mts +9 -5
  317. package/fjs/text/utf8/module.f.mjs +20 -20
  318. package/fjs/types/array/module.f.d.mts +2 -1
  319. package/fjs/types/array/module.f.mjs +16 -4
  320. package/fjs/types/bigfloat/module.f.d.mts +21 -1
  321. package/fjs/types/bigfloat/module.f.mjs +33 -7
  322. package/fjs/types/bigfloat/proof.f.d.mts +1 -0
  323. package/fjs/types/bigfloat/proof.f.mjs +46 -0
  324. package/fjs/types/bigint/module.f.d.mts +4 -0
  325. package/fjs/types/bigint/module.f.mjs +4 -3
  326. package/fjs/types/bit_vec/module.f.d.mts +10 -16
  327. package/fjs/types/bit_vec/module.f.mjs +99 -95
  328. package/fjs/types/bit_vec/proof.f.d.mts +6 -0
  329. package/fjs/types/bit_vec/proof.f.mjs +31 -5
  330. package/fjs/types/btree/find/module.f.d.mts +5 -1
  331. package/fjs/types/btree/find/module.f.mjs +5 -5
  332. package/fjs/types/btree/find/proof.f.d.mts +5 -1
  333. package/fjs/types/btree/find/proof.f.mjs +5 -3
  334. package/fjs/types/btree/module.f.d.mts +3 -0
  335. package/fjs/types/btree/module.f.mjs +3 -2
  336. package/fjs/types/btree/proof.f.d.mts +5 -1
  337. package/fjs/types/btree/proof.f.mjs +5 -3
  338. package/fjs/types/btree/remove/module.f.d.mts +11 -0
  339. package/fjs/types/btree/remove/module.f.mjs +10 -10
  340. package/fjs/types/btree/remove/proof.f.d.mts +3 -0
  341. package/fjs/types/btree/remove/proof.f.mjs +4 -1
  342. package/fjs/types/btree/set/module.f.d.mts +9 -0
  343. package/fjs/types/btree/set/module.f.mjs +14 -17
  344. package/fjs/types/btree/set/proof.f.d.mts +3 -0
  345. package/fjs/types/btree/set/proof.f.mjs +16 -1
  346. package/fjs/types/btree/types/module.f.d.mts +2 -1
  347. package/fjs/types/btree/types/module.f.mjs +2 -1
  348. package/fjs/types/byte_set/module.f.d.mts +20 -4
  349. package/fjs/types/byte_set/module.f.mjs +18 -8
  350. package/fjs/types/byte_set/proof.f.d.mts +3 -1
  351. package/fjs/types/byte_set/proof.f.mjs +10 -8
  352. package/fjs/types/function/compare/module.f.d.mts +3 -2
  353. package/fjs/types/function/compare/module.f.mjs +13 -5
  354. package/fjs/types/function/module.f.d.mts +8 -1
  355. package/fjs/types/function/module.f.mjs +8 -1
  356. package/fjs/types/function/operator/module.f.d.mts +2 -1
  357. package/fjs/types/function/operator/module.f.mjs +2 -2
  358. package/fjs/types/list/module.f.d.mts +10 -3
  359. package/fjs/types/list/module.f.mjs +6 -4
  360. package/fjs/types/list/proof.f.d.mts +4 -1
  361. package/fjs/types/list/proof.f.mjs +4 -2
  362. package/fjs/types/nibble_set/module.f.d.mts +2 -1
  363. package/fjs/types/nibble_set/module.f.mjs +2 -2
  364. package/fjs/types/nominal/module.f.d.mts +2 -1
  365. package/fjs/types/nominal/module.f.mjs +2 -1
  366. package/fjs/types/nullable/module.f.d.mts +26 -6
  367. package/fjs/types/nullable/module.f.mjs +25 -6
  368. package/fjs/types/nullable/proof.f.d.mts +4 -0
  369. package/fjs/types/nullable/proof.f.mjs +15 -0
  370. package/fjs/types/number/module.f.d.mts +4 -0
  371. package/fjs/types/number/module.f.mjs +4 -3
  372. package/fjs/types/object/module.f.d.mts +26 -4
  373. package/fjs/types/object/module.f.mjs +26 -7
  374. package/fjs/types/object/proof.f.d.mts +5 -2
  375. package/fjs/types/object/proof.f.mjs +6 -3
  376. package/fjs/types/object/structurally_same/module.f.d.mts +39 -0
  377. package/fjs/types/object/structurally_same/module.f.mjs +59 -0
  378. package/fjs/types/object/structurally_same/proof.f.d.mts +6 -0
  379. package/fjs/types/object/structurally_same/proof.f.mjs +73 -0
  380. package/fjs/types/ordered_map/module.f.d.mts +5 -0
  381. package/fjs/types/ordered_map/module.f.mjs +5 -4
  382. package/fjs/types/ordered_map/proof.f.d.mts +3 -0
  383. package/fjs/types/ordered_map/proof.f.mjs +4 -1
  384. package/fjs/types/patricia_trie/module.f.d.mts +2 -1
  385. package/fjs/types/patricia_trie/module.f.mjs +27 -12
  386. package/fjs/types/patricia_trie/proof.f.d.mts +3 -0
  387. package/fjs/types/patricia_trie/proof.f.mjs +4 -1
  388. package/fjs/types/prime_field/module.f.d.mts +3 -1
  389. package/fjs/types/prime_field/module.f.mjs +3 -2
  390. package/fjs/types/range/module.f.d.mts +2 -1
  391. package/fjs/types/range/module.f.mjs +2 -2
  392. package/fjs/types/range_map/module.f.d.mts +6 -0
  393. package/fjs/types/range_map/module.f.mjs +6 -9
  394. package/fjs/types/range_map/proof.f.d.mts +5 -1
  395. package/fjs/types/range_map/proof.f.mjs +5 -3
  396. package/fjs/types/range_set/module.f.d.mts +5 -0
  397. package/fjs/types/range_set/module.f.mjs +1 -0
  398. package/fjs/types/range_set/proof.f.d.mts +3 -0
  399. package/fjs/types/range_set/proof.f.mjs +4 -1
  400. package/fjs/types/result/module.d.mts +8 -0
  401. package/fjs/types/result/module.f.d.mts +37 -7
  402. package/fjs/types/result/module.f.mjs +38 -8
  403. package/fjs/types/result/module.mjs +9 -1
  404. package/fjs/types/result/proof.f.d.mts +5 -0
  405. package/fjs/types/result/proof.f.mjs +22 -2
  406. package/fjs/types/rtti/common/module.f.d.mts +44 -14
  407. package/fjs/types/rtti/common/module.f.mjs +42 -36
  408. package/fjs/types/rtti/common/proof.f.d.mts +4 -0
  409. package/fjs/types/rtti/common/proof.f.mjs +10 -7
  410. package/fjs/types/rtti/data/module.f.d.mts +134 -0
  411. package/fjs/types/rtti/data/module.f.mjs +1053 -0
  412. package/fjs/types/rtti/data/proof.f.d.mts +76 -0
  413. package/fjs/types/rtti/data/proof.f.mjs +589 -0
  414. package/fjs/types/rtti/data/types.d.ts +83 -0
  415. package/fjs/types/rtti/module.f.d.mts +12 -5
  416. package/fjs/types/rtti/module.f.mjs +7 -5
  417. package/fjs/types/rtti/parse/module.f.d.mts +48 -0
  418. package/fjs/types/rtti/parse/module.f.mjs +45 -34
  419. package/fjs/types/rtti/parse/proof.f.d.mts +3 -2
  420. package/fjs/types/rtti/parse/proof.f.mjs +51 -52
  421. package/fjs/types/rtti/proof.f.d.mts +3 -1
  422. package/fjs/types/rtti/proof.f.mjs +6 -2
  423. package/fjs/types/rtti/ts/module.f.d.mts +68 -9
  424. package/fjs/types/rtti/ts/module.f.mjs +258 -30
  425. package/fjs/types/rtti/ts/proof.f.d.mts +44 -0
  426. package/fjs/types/rtti/ts/proof.f.mjs +152 -4
  427. package/fjs/types/rtti/ts/types.d.ts +25 -1
  428. package/fjs/types/rtti/types.d.ts +40 -0
  429. package/fjs/types/sorted_list/module.f.d.mts +4 -1
  430. package/fjs/types/sorted_list/module.f.mjs +21 -12
  431. package/fjs/types/sorted_list/proof.f.d.mts +3 -1
  432. package/fjs/types/sorted_list/proof.f.mjs +3 -1
  433. package/fjs/types/sorted_set/module.f.d.mts +49 -1
  434. package/fjs/types/sorted_set/module.f.mjs +26 -2
  435. package/fjs/types/sorted_set/proof.f.d.mts +4 -1
  436. package/fjs/types/sorted_set/proof.f.mjs +19 -2
  437. package/fjs/types/string/module.f.d.mts +4 -0
  438. package/fjs/types/string/module.f.mjs +4 -3
  439. package/fjs/types/string_set/module.f.d.mts +3 -1
  440. package/fjs/types/string_set/module.f.mjs +3 -2
  441. package/fjs/types/ts/module.f.d.mts +2 -0
  442. package/fjs/types/ts/module.f.mjs +3 -3
  443. package/fjs/types/ts/proof.f.d.mts +1 -0
  444. package/fjs/types/ts/proof.f.mjs +5 -0
  445. package/fjs/types/ts/types.d.ts +6 -1
  446. package/fjs/types/uint8array/module.f.d.mts +13 -2
  447. package/fjs/types/uint8array/module.f.mjs +20 -15
  448. package/fjs/website/module.f.d.mts +5 -2
  449. package/fjs/website/module.f.mjs +6 -8
  450. package/fjs/website/proof.f.mjs +2 -1
  451. package/package.json +3 -3
  452. package/fjs/asn.1/types.js +0 -6
  453. package/fjs/asserts/types.js +0 -6
  454. package/fjs/basen/types.js +0 -6
  455. package/fjs/bnf/data/types.js +0 -6
  456. package/fjs/bnf/descent/types.js +0 -6
  457. package/fjs/bnf/ll1/types.js +0 -6
  458. package/fjs/bnf/token_symbol/types.js +0 -6
  459. package/fjs/bnf/types.js +0 -6
  460. package/fjs/cas/evo/types.js +0 -7
  461. package/fjs/cas/types.js +0 -6
  462. package/fjs/ci/common/types.js +0 -1
  463. package/fjs/ci/nix/types.js +0 -6
  464. package/fjs/ci/types.js +0 -6
  465. package/fjs/cli/types.js +0 -6
  466. package/fjs/common/monoid/types.js +0 -6
  467. package/fjs/crypto/pow/types.js +0 -6
  468. package/fjs/crypto/secp/types.js +0 -6
  469. package/fjs/crypto/sha2/types.js +0 -6
  470. package/fjs/crypto/sign/types.js +0 -6
  471. package/fjs/crypto/vdf/types.js +0 -6
  472. package/fjs/dev/package_json/module.f.d.mts +0 -32
  473. package/fjs/dev/package_json/module.f.mjs +0 -37
  474. package/fjs/dev/package_json/proof.f.d.mts +0 -6
  475. package/fjs/dev/package_json/proof.f.mjs +0 -32
  476. package/fjs/dev/types.js +0 -6
  477. package/fjs/djs/ast/types.js +0 -8
  478. package/fjs/djs/parser/types.js +0 -7
  479. package/fjs/djs/tokenizer/types.js +0 -7
  480. package/fjs/djs/types.js +0 -7
  481. package/fjs/effects/eff/module.f.d.mts +0 -10
  482. package/fjs/effects/eff/module.f.mjs +0 -68
  483. package/fjs/effects/eff/proof.f.d.mts +0 -12
  484. package/fjs/effects/eff/proof.f.mjs +0 -66
  485. package/fjs/effects/eff/types.d.ts +0 -71
  486. package/fjs/effects/eff/types.js +0 -6
  487. package/fjs/effects/list/types.js +0 -6
  488. package/fjs/effects/memory/types.js +0 -6
  489. package/fjs/effects/mock/types.js +0 -6
  490. package/fjs/effects/node/types.js +0 -6
  491. package/fjs/effects/node/virtual/types.js +0 -7
  492. package/fjs/effects/types.js +0 -6
  493. package/fjs/emergent_testing/all.test.d.ts +0 -1
  494. package/fjs/emergent_testing/all.test.js +0 -5
  495. package/fjs/emergent_testing/scenarios/all.d.ts +0 -1
  496. package/fjs/emergent_testing/scenarios/all.js +0 -1
  497. package/fjs/emergent_testing/scenarios/async-subtests.fail.d.ts +0 -6
  498. package/fjs/emergent_testing/scenarios/async-subtests.fail.js +0 -9
  499. package/fjs/emergent_testing/scenarios/async-subtests.pass.d.ts +0 -6
  500. package/fjs/emergent_testing/scenarios/async-subtests.pass.js +0 -9
  501. package/fjs/emergent_testing/scenarios/async.fail.d.ts +0 -3
  502. package/fjs/emergent_testing/scenarios/async.fail.js +0 -6
  503. package/fjs/emergent_testing/scenarios/async.pass.d.ts +0 -3
  504. package/fjs/emergent_testing/scenarios/async.pass.js +0 -5
  505. package/fjs/emergent_testing/scenarios/fail.fail.d.ts +0 -3
  506. package/fjs/emergent_testing/scenarios/fail.fail.js +0 -3
  507. package/fjs/emergent_testing/scenarios/return-value.pass.js +0 -4
  508. package/fjs/emergent_testing/scenarios/thenable.pass.d.ts +0 -5
  509. package/fjs/emergent_testing/scenarios/thenable.pass.js +0 -11
  510. package/fjs/emergent_testing/scenarios/thenable2.pass.d.ts +0 -5
  511. package/fjs/emergent_testing/scenarios/thenable2.pass.js +0 -3
  512. package/fjs/emergent_testing/scenarios/throw.pass.d.ts +0 -5
  513. package/fjs/emergent_testing/scenarios/throw.pass.js +0 -3
  514. package/fjs/emergent_testing/types.js +0 -6
  515. package/fjs/js/tokenizer/types.js +0 -6
  516. package/fjs/media/html/types.js +0 -6
  517. package/fjs/media/json/parser/types.js +0 -6
  518. package/fjs/media/json/tokenizer/types.js +0 -6
  519. package/fjs/media/json/types.js +0 -13
  520. package/fjs/media/nix/types.js +0 -6
  521. package/fjs/media/revision/types.js +0 -8
  522. package/fjs/media/type/types.js +0 -6
  523. package/fjs/media/types.js +0 -7
  524. package/fjs/nanvm/types.js +0 -11
  525. package/fjs/protocol/json_rpc/types.js +0 -8
  526. package/fjs/protocol/mcp/types.js +0 -8
  527. package/fjs/sul/id/types.js +0 -6
  528. package/fjs/sul/level/hash/types.js +0 -6
  529. package/fjs/sul/level/literal/types.js +0 -6
  530. package/fjs/sul/types.js +0 -6
  531. package/fjs/text/sgr/types.js +0 -6
  532. package/fjs/text/types.js +0 -6
  533. package/fjs/text/utf16/types.js +0 -6
  534. package/fjs/text/utf8/types.js +0 -6
  535. package/fjs/types/array/types.js +0 -6
  536. package/fjs/types/bigfloat/types.js +0 -6
  537. package/fjs/types/bigint/types.js +0 -6
  538. package/fjs/types/bit_vec/types.js +0 -6
  539. package/fjs/types/btree/find/types.js +0 -6
  540. package/fjs/types/btree/types/types.js +0 -6
  541. package/fjs/types/byte_set/types.js +0 -6
  542. package/fjs/types/function/compare/types.js +0 -6
  543. package/fjs/types/function/operator/types.js +0 -6
  544. package/fjs/types/function/types.js +0 -6
  545. package/fjs/types/list/types.js +0 -6
  546. package/fjs/types/nibble_set/types.js +0 -6
  547. package/fjs/types/nominal/types.js +0 -6
  548. package/fjs/types/nullable/types.js +0 -6
  549. package/fjs/types/object/types.js +0 -8
  550. package/fjs/types/option/types.js +0 -6
  551. package/fjs/types/ordered_map/types.js +0 -6
  552. package/fjs/types/patricia_trie/types.js +0 -6
  553. package/fjs/types/phantom/types.js +0 -11
  554. package/fjs/types/prime_field/types.js +0 -6
  555. package/fjs/types/range/types.js +0 -6
  556. package/fjs/types/range_map/types.js +0 -6
  557. package/fjs/types/result/types.js +0 -6
  558. package/fjs/types/rtti/common/types.js +0 -1
  559. package/fjs/types/rtti/parse/types.js +0 -1
  560. package/fjs/types/rtti/ts/types.js +0 -1
  561. package/fjs/types/rtti/types.js +0 -1
  562. package/fjs/types/rtti/validate/module.f.d.mts +0 -6
  563. package/fjs/types/rtti/validate/module.f.mjs +0 -169
  564. package/fjs/types/rtti/validate/proof.f.d.mts +0 -125
  565. package/fjs/types/rtti/validate/proof.f.mjs +0 -437
  566. package/fjs/types/rtti/validate/types.d.ts +0 -6
  567. package/fjs/types/rtti/validate/types.js +0 -1
  568. package/fjs/types/sorted_list/types.js +0 -6
  569. package/fjs/types/sorted_set/types.js +0 -6
  570. package/fjs/types/string_set/types.js +0 -6
  571. package/fjs/types/ts/types.js +0 -8
@@ -1,125 +0,0 @@
1
- /**
2
- * @import { ValidationError } from '../common/types.ts'
3
- * @import { Equal } from '../../ts/types.ts'
4
- * @import { Ts } from '../ts/types.ts'
5
- * @import { Unknown as DjsUnknown } from '../../../djs/types.ts'
6
- * @import { Assert } from '../../../asserts/types.ts'
7
- */
8
- export declare const proof: {
9
- boolean: {
10
- ok: () => void;
11
- error: () => void;
12
- };
13
- number: {
14
- ok: () => void;
15
- error: () => void;
16
- };
17
- string: {
18
- ok: () => void;
19
- error: () => void;
20
- };
21
- bigint: {
22
- ok: () => void;
23
- error: () => void;
24
- };
25
- unknown: {
26
- ok: () => void;
27
- };
28
- const: {
29
- null: {
30
- ok: () => void;
31
- error: () => void;
32
- };
33
- undefined: {
34
- ok: () => void;
35
- error: () => void;
36
- };
37
- number: {
38
- ok: () => void;
39
- error: () => void;
40
- };
41
- nan: {
42
- ok: () => void;
43
- error: () => void;
44
- };
45
- infinity: {
46
- ok: () => void;
47
- error: () => void;
48
- };
49
- signedZero: {
50
- distinct: () => void;
51
- self: () => void;
52
- };
53
- string: {
54
- ok: () => void;
55
- error: () => void;
56
- };
57
- bigint: {
58
- ok: () => void;
59
- error: () => void;
60
- };
61
- boolean: {
62
- ok: () => void;
63
- error: () => void;
64
- };
65
- tuple: {
66
- ok: () => void;
67
- extraItems: () => void;
68
- error: () => void;
69
- };
70
- struct: {
71
- ok: () => void;
72
- extraKeys: () => void;
73
- error: () => void;
74
- };
75
- };
76
- array: {
77
- empty: () => void;
78
- ok: () => void;
79
- error: () => void;
80
- nested: () => void;
81
- };
82
- record: {
83
- empty: () => void;
84
- ok: () => void;
85
- error: () => void;
86
- };
87
- constThunk: {
88
- primitive: () => void;
89
- };
90
- or: {
91
- consts: {
92
- ok: () => void;
93
- error: () => void;
94
- };
95
- thunks: {
96
- ok: () => void;
97
- error: () => void;
98
- };
99
- mixed: {
100
- ok: () => void;
101
- error: () => void;
102
- };
103
- };
104
- option: {
105
- ok: () => void;
106
- error: () => void;
107
- };
108
- path: {
109
- rootMismatch: () => void;
110
- arrayIndex: () => void;
111
- recordKey: () => void;
112
- nestedArray: () => void;
113
- tupleIndex: () => void;
114
- structKey: () => void;
115
- deepStruct: () => void;
116
- recursiveSchema: () => void;
117
- orRoot: () => void;
118
- };
119
- recursive: {
120
- arrayOfArrays: () => void;
121
- recordOfRecords: () => void;
122
- };
123
- funcParam: () => () => void;
124
- funcObj: () => () => void;
125
- };
@@ -1,437 +0,0 @@
1
- /**
2
- * @import { ValidationError } from '../common/types.ts'
3
- * @import { Equal } from '../../ts/types.ts'
4
- * @import { Ts } from '../ts/types.ts'
5
- * @import { Unknown as DjsUnknown } from '../../../djs/types.ts'
6
- * @import { Assert } from '../../../asserts/types.ts'
7
- */
8
-
9
- import { validate } from './module.f.mjs'
10
- import { boolean, number, string, bigint, unknown, array, record, or, option } from '../module.f.mjs'
11
- import { assert, assertEq } from '../../../asserts/module.f.mjs'
12
-
13
- /** @type {(r: readonly [string, unknown]) => void} */
14
- const assertOk = ([k]) => { assertEq(k, 'ok', 'expected ok') }
15
-
16
- /** @type {(r: readonly [string, unknown]) => void} */
17
- const assertError = ([k]) => { assertEq(k, 'error', 'expected error') }
18
-
19
- /** @type {(expected: readonly string[]) => (r: readonly [string, unknown]) => void} */
20
- const assertErrorPath = expected =>
21
- r => {
22
- assert(r[0] === 'error', 'expected error')
23
- const e = /** @type {ValidationError} */ (r[1])
24
- if (e.path.length !== expected.length) { throw `path length ${e.path.length} != ${expected.length}` }
25
- for (let i = 0; i < expected.length; i++) {
26
- if (e.path[i] !== expected[i]) { throw `path[${i}] ${e.path[i]} != ${expected[i]}` }
27
- }
28
- }
29
-
30
- export const proof = {
31
- boolean: {
32
- ok: () => {
33
- /** @typedef {Assert<Equal<Ts<typeof boolean>, boolean>>} _RoundTrip */
34
- assertOk(validate(boolean)(true))
35
- assertOk(validate(boolean)(false))
36
- },
37
- error: () => {
38
- assertError(validate(boolean)(0))
39
- assertError(validate(boolean)('true'))
40
- assertError(validate(boolean)(null))
41
- },
42
- },
43
- number: {
44
- ok: () => {
45
- /** @typedef {Assert<Equal<Ts<typeof number>, number>>} _RoundTrip */
46
- assertOk(validate(number)(42))
47
- },
48
- error: () => {
49
- assertError(validate(number)('42'))
50
- assertError(validate(number)(42n))
51
- },
52
- },
53
- string: {
54
- ok: () => {
55
- /** @typedef {Assert<Equal<Ts<typeof string>, string>>} _RoundTrip */
56
- assertOk(validate(string)('hello'))
57
- },
58
- error: () => {
59
- assertError(validate(string)(42))
60
- assertError(validate(string)(null))
61
- },
62
- },
63
- bigint: {
64
- ok: () => {
65
- /** @typedef {Assert<Equal<Ts<typeof bigint>, bigint>>} _RoundTrip */
66
- assertOk(validate(bigint)(4n))
67
- },
68
- error: () => {
69
- assertError(validate(bigint)(4))
70
- assertError(validate(bigint)('4'))
71
- },
72
- },
73
- unknown: {
74
- ok: () => {
75
- /** @typedef {Assert<Equal<Ts<typeof unknown>, DjsUnknown>>} _RoundTrip */
76
- assertOk(validate(unknown)(null))
77
- assertOk(validate(unknown)(42))
78
- assertOk(validate(unknown)('hello'))
79
- assertOk(validate(unknown)(true))
80
- assertOk(validate(unknown)({}))
81
- assertOk(validate(unknown)([]))
82
- },
83
- },
84
- const: {
85
- null: {
86
- ok: () => {
87
- /** @typedef {Assert<Equal<Ts<null>, null>>} _RoundTrip */
88
- assertOk(validate(null)(null))
89
- },
90
- error: () => {
91
- assertError(validate(null)(undefined))
92
- assertError(validate(null)(0))
93
- },
94
- },
95
- undefined: {
96
- ok: () => {
97
- /** @typedef {Assert<Equal<Ts<undefined>, undefined>>} _RoundTrip */
98
- assertOk(validate(undefined)(undefined))
99
- },
100
- error: () => assertError(validate(undefined)(null)),
101
- },
102
- number: {
103
- ok: () => {
104
- /** @typedef {Assert<Equal<Ts<42>, 42>>} _RoundTrip */
105
- assertOk(validate(/** @type {const} */ (42))(42))
106
- },
107
- error: () => assertError(validate(/** @type {const} */ (42))(43)),
108
- },
109
- nan: {
110
- ok: () => assertOk(validate(/** @type {number} */ (NaN))(NaN)),
111
- error: () => {
112
- assertError(validate(/** @type {number} */ (NaN))(0))
113
- assertError(validate(/** @type {const} */ (0))(NaN))
114
- assertError(validate(/** @type {const} */ (42))(NaN))
115
- },
116
- },
117
- infinity: {
118
- ok: () => {
119
- assertOk(validate(/** @type {number} */ (Infinity))(Infinity))
120
- assertOk(validate(/** @type {number} */ (-Infinity))(-Infinity))
121
- },
122
- error: () => {
123
- assertError(validate(/** @type {number} */ (Infinity))(-Infinity))
124
- assertError(validate(/** @type {number} */ (Infinity))(0))
125
- },
126
- },
127
- signedZero: {
128
- // `Object.is` distinguishes +0 and -0; `===` treats them equal.
129
- distinct: () => {
130
- assertError(validate(/** @type {const} */ (0))(-0))
131
- assertError(validate(/** @type {number} */ (-0))(0))
132
- },
133
- self: () => {
134
- assertOk(validate(/** @type {const} */ (0))(0))
135
- assertOk(validate(/** @type {number} */ (-0))(-0))
136
- },
137
- },
138
- string: {
139
- ok: () => {
140
- /** @typedef {Assert<Equal<Ts<'hello'>, 'hello'>>} _RoundTrip */
141
- assertOk(validate(/** @type {const} */ ('hello'))('hello'))
142
- },
143
- error: () => assertError(validate(/** @type {const} */ ('hello'))('world')),
144
- },
145
- bigint: {
146
- ok: () => {
147
- /** @typedef {Assert<Equal<Ts<7n>, 7n>>} _RoundTrip */
148
- assertOk(validate(/** @type {const} */ (7n))(7n))
149
- },
150
- error: () => assertError(validate(/** @type {const} */ (7n))(8n)),
151
- },
152
- boolean: {
153
- ok: () => {
154
- /** @typedef {Assert<Equal<Ts<true>, true>>} _RoundTrip */
155
- assertOk(validate(/** @type {const} */ (true))(true))
156
- },
157
- error: () => assertError(validate(/** @type {const} */ (true))(false)),
158
- },
159
- tuple: {
160
- ok: () => {
161
- const t = /** @type {const} */ ([42, 'hello'])
162
- /** @typedef {Assert<Equal<Ts<typeof t>, readonly[42, 'hello']>>} _RoundTrip */
163
- assertOk(validate(t)([42, 'hello']))
164
- },
165
- extraItems: () => assertOk(validate(/** @type {const} */ ([42]))([42, 'extra'])),
166
- error: () => {
167
- assertError(validate(/** @type {const} */ ([42]))([99]))
168
- assertError(validate(/** @type {const} */ ([42]))({}))
169
- },
170
- },
171
- struct: {
172
- ok: () => {
173
- const t = /** @type {const} */ ({ a: 42, b: 'hello' })
174
- /** @typedef {Assert<Equal<Ts<typeof t>, { readonly a: 42, readonly b: 'hello' }>>} _RoundTrip */
175
- assertOk(validate(t)({ a: 42, b: 'hello' }))
176
- },
177
- extraKeys: () => assertOk(validate(/** @type {const} */ ({ a: /** @type {const} */ (42) }))({ a: 42, b: 'extra' })),
178
- error: () => {
179
- assertError(validate(/** @type {const} */ ({ a: 42 }))({ a: 99 }))
180
- assertError(validate(/** @type {const} */ ({ a: 42 }))([]))
181
- },
182
- },
183
- },
184
- array: {
185
- empty: () => assertOk(validate(array(number))([])),
186
- ok: () => {
187
- const t = array(number)
188
- /** @typedef {Assert<Equal<Ts<typeof t>, readonly number[]>>} _RoundTrip */
189
- assertOk(validate(array(number))([1, 2, 3]))
190
- },
191
- error: () => {
192
- assertError(validate(array(number))([1, 'two', 3]))
193
- assertError(validate(array(number))({}))
194
- assertError(validate(array(number))(null))
195
- },
196
- nested: () => {
197
- const t = array(array(boolean))
198
- /** @typedef {Assert<Equal<Ts<typeof t>, readonly (readonly boolean[])[]>>} _RoundTrip */
199
- assertOk(validate(array(array(boolean)))([[true, false], [false]]))
200
- assertError(validate(array(array(boolean)))([[true, 42]]))
201
- },
202
- },
203
- record: {
204
- empty: () => assertOk(validate(record(number))({})),
205
- ok: () => {
206
- const t = record(string)
207
- /** @typedef {Assert<Equal<Ts<typeof t>, { readonly[K in string]?: string }>>} _RoundTrip */
208
- assertOk(validate(t)({ a: 'hello', b: 'world' }))
209
- },
210
- error: () => {
211
- assertError(validate(record(number))({ a: 1, b: 'two' }))
212
- assertError(validate(record(number))(null))
213
- assertError(validate(record(number))([]))
214
- },
215
- },
216
- constThunk: {
217
- primitive: () => {
218
- const t = () => /** @type {const} */ (['const', 7n])
219
- /** @typedef {Assert<Equal<Ts<typeof t>, 7n>>} _RoundTrip */
220
- assertOk(validate(t)(7n))
221
- assertError(validate(t)(8n))
222
- },
223
- },
224
- or: {
225
- consts: {
226
- ok: () => {
227
- const t = or(.../** @type {const} */ ([false,42, 'hello']))
228
- /** @typedef {Assert<Equal<Ts<typeof t>, false | 42 | 'hello'>>} _RoundTrip */
229
- assertOk(validate(t)(false))
230
- assertOk(validate(t)(42))
231
- assertOk(validate(t)('hello'))
232
- },
233
- error: () => {
234
- const t = or(.../** @type {const} */ ([false, 42, 'hello']))
235
- assertError(validate(t)(true))
236
- assertError(validate(t)(43))
237
- assertError(validate(t)('world'))
238
- assertError(validate(t)(null))
239
- },
240
- },
241
- thunks: {
242
- ok: () => {
243
- const t = or(number, string)
244
- /** @typedef {Assert<Equal<Ts<typeof t>, number | string>>} _RoundTrip */
245
- assertOk(validate(t)(42))
246
- assertOk(validate(t)('hello'))
247
- },
248
- error: () => {
249
- const t = or(number, string)
250
- assertError(validate(t)(true))
251
- assertError(validate(t)(null))
252
- },
253
- },
254
- mixed: {
255
- ok: () => {
256
- const t = or(/** @type {const} */ (42), string)
257
- /** @typedef {Assert<Equal<Ts<typeof t>, 42 | string>>} _RoundTrip */
258
- assertOk(validate(t)(42))
259
- assertOk(validate(t)('hello'))
260
- },
261
- error: () => {
262
- const t = or(/** @type {const} */ (42), string)
263
- assertError(validate(t)(43))
264
- assertError(validate(t)(null))
265
- },
266
- },
267
- },
268
- option: {
269
- ok: () => {
270
- const t = option(number)
271
- /** @typedef {Assert<Equal<Ts<typeof t>, number | undefined>>} _RoundTrip */
272
- assertOk(validate(t)(42))
273
- assertOk(validate(t)(undefined))
274
- },
275
- error: () => {
276
- const t = option(number)
277
- assertError(validate(t)(null))
278
- assertError(validate(t)('42'))
279
- },
280
- },
281
- path: {
282
- rootMismatch: () => assertErrorPath([])(validate(number)('not a number')),
283
- arrayIndex: () => assertErrorPath(['1'])(validate(array(number))([1, 'two', 3])),
284
- recordKey: () => {
285
- const r = validate(record(number))({ a: 1, b: 'two', c: 3 })
286
- // record iteration order matches Object.entries; 'b' is the failing key
287
- assertErrorPath(['b'])(r)
288
- },
289
- nestedArray: () => assertErrorPath(['0', '1'])(
290
- validate(array(array(number)))([[1, 'x'], [2, 3]])
291
- ),
292
- tupleIndex: () => assertErrorPath(['1'])(
293
- validate(/** @type {const} */ ([number, number]))([1, 'two'])
294
- ),
295
- structKey: () => assertErrorPath(['b'])(
296
- validate(/** @type {const} */ ({ a: number, b: number }))({ a: 1, b: 'two' })
297
- ),
298
- deepStruct: () => {
299
- const schema = /** @type {const} */ ({ user: { name: string, age: number } })
300
- const r = validate(schema)({ user: { name: 'A', age: 'old' } })
301
- assertErrorPath(['user', 'age'])(r)
302
- },
303
- recursiveSchema: () => {
304
- /** @typedef {readonly _A[]} _A */
305
- const list = () => /** @type {const} */ (['array', list])
306
- // [[[42]]] — innermost element 42 is a number, not an array
307
- const r = validate(list)([/** @type {_A} */ (/** @type {unknown} */ ([[42]]))])
308
- assertErrorPath(['0', '0', '0'])(r)
309
- },
310
- orRoot: () => assertErrorPath([])(validate(or(number, string))(true)),
311
- },
312
- recursive: {
313
- arrayOfArrays: () => {
314
- /** @typedef {readonly _A[]} _A */
315
- // self-referential schema: an array whose elements are also arrays of the same type
316
- const list = () => /** @type {const} */ (['array', list])
317
- /** @typedef {Assert<Equal<_A, Ts<typeof list>>>} _RoundTripA */
318
- const v = validate(list)
319
- assertOk(v([]))
320
- assertOk(v([[], []]))
321
- assertOk(v([[[], []], []]))
322
- assertError(v([42]))
323
- assertError(v(null))
324
- },
325
- recordOfRecords: () => {
326
- const tree = () => /** @type {const} */ (['record', tree])
327
- /** @typedef {{ readonly[K in string]?: _A }} _A */
328
- /** @typedef {Assert<Equal<_A, Ts<typeof tree>>>} _RoundTrip */
329
- const v = validate(tree)
330
- assertOk(v({}))
331
- assertOk(v({ a: {}, b: { c: {} } }))
332
- assertError(v({ a: 42 }))
333
- },
334
- },
335
- funcParam: () => {
336
- const paramSet0 = /** @type {const} */ (['hello', bigint])
337
- const paramSet1 = /** @type {const} */ (['goodbye', string, 43])
338
-
339
- const paramSet01 = or(paramSet0, paramSet1)
340
-
341
- /** @typedef {Ts<typeof paramSet0>} _Param0 */
342
- /** @typedef {Ts<typeof paramSet1>} _Param1 */
343
- /** @typedef {Ts<typeof paramSet01>} _Param01 */
344
-
345
- const v0 = validate(paramSet0)
346
- const v1 = validate(paramSet1)
347
-
348
- /** @template T @typedef {(...args: _Param0) => T} _F0 */
349
- /** @template T @typedef {(...args: _Param1) => T} _F1 */
350
-
351
- /**
352
- * @template T
353
- * @param {_F0<T>} f0
354
- * @param {_F1<T>} f1
355
- * @returns {(...args: _Param01) => T}
356
- */
357
- const func = (f0, f1) => (...args) => {
358
- {
359
- const [t, r] = v0(args)
360
- if (t === 'ok') {
361
- return f0(...r)
362
- }
363
- }
364
- {
365
- const [t, r] = v1(args)
366
- if (t === 'ok') {
367
- return f1(...r)
368
- }
369
- }
370
- throw 'unreachable: args did not match any parameter set'
371
- }
372
-
373
- /** @type {(a: 'hello', b: bigint) => number} */
374
- const f0 = (a, b) => 42
375
- /** @type {(a: 'goodbye', b: string, c: 43) => number} */
376
- const f1 = (a, b, c) => 13
377
-
378
- /** @type {(...args: _Param01) => number} */
379
- const x = func(f0, f1)
380
-
381
- return () => {
382
- assertEq(x('hello', 42n), 42)
383
- assertEq(x('goodbye', 'world', 43), 13)
384
- }
385
- },
386
- funcObj: () => {
387
- const param0 = { a: 'hello', b: bigint }
388
- const param1 = { a: 'goodbye', b: string, c: 43 }
389
-
390
- const param01 = or(param0, param1)
391
-
392
- /** @typedef {Ts<typeof param0>} _Param0 */
393
- /** @typedef {Ts<typeof param1>} _Param1 */
394
- /** @typedef {Ts<typeof param01>} _Param01 */
395
-
396
- const v0 = validate(param0)
397
- const v1 = validate(param1)
398
-
399
- /** @template T @typedef {(args: _Param0) => T} _F0 */
400
- /** @template T @typedef {(args: _Param1) => T} _F1 */
401
-
402
- /**
403
- * @template T
404
- * @param {_F0<T>} f0
405
- * @param {_F1<T>} f1
406
- * @returns {(args: _Param01) => T}
407
- */
408
- const func = (f0, f1) => args => {
409
- {
410
- const [t, r] = v0(args)
411
- if (t === 'ok') {
412
- return f0(r)
413
- }
414
- }
415
- {
416
- const [t, r] = v1(args)
417
- if (t === 'ok') {
418
- return f1(r)
419
- }
420
- }
421
- throw 'unreachable: args did not match any parameter set'
422
- }
423
-
424
- /** @type {(args: _Param0) => number} */
425
- const f0 = args => Number(args.b) + args.a.length
426
- /** @type {(args: _Param1) => number} */
427
- const f1 = args => args.c
428
-
429
- /** @type {(args: _Param01) => number} */
430
- const x = func(f0, f1)
431
-
432
- return () => {
433
- assertEq(x({ a: 'hello', b: 42n }), 47)
434
- assertEq(x({ a: 'goodbye', b: 'world', c: 43 }), 43)
435
- }
436
- }
437
- }
@@ -1,6 +0,0 @@
1
- /**
2
- * Type-level API for RTTI validation.
3
- *
4
- * @module
5
- */
6
- export type { Path, Result, Validate, ValidationError } from '../common/types.ts';
@@ -1 +0,0 @@
1
- export {};
@@ -1,6 +0,0 @@
1
- /**
2
- * Types for sorted immutable lists and their merge operations.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1,6 +0,0 @@
1
- /**
2
- * Type-level API for the sorted-set module.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1,6 +0,0 @@
1
- /**
2
- * Type-level API for the string-set module.
3
- *
4
- * @module
5
- */
6
- export {};
@@ -1,8 +0,0 @@
1
- /**
2
- * Types for the TypeScript source emitter: the `Equal` compile-time predicate
3
- * and the `Printer` interface.
4
- *
5
- * @module
6
- */
7
- export {};
8
- // type T4 = {[k:string]?: bigint} //< compilation error.