functionalscript 0.43.1 → 0.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -21
- package/fjs/asn.1/module.f.d.mts +123 -0
- package/fjs/asn.1/module.f.mjs +459 -0
- package/fjs/asn.1/proof.f.d.mts +53 -0
- package/fjs/asn.1/proof.f.mjs +321 -0
- package/fjs/asn.1/types.d.ts +37 -0
- package/fjs/asserts/module.f.d.mts +51 -0
- package/fjs/asserts/module.f.mjs +69 -0
- package/fjs/asserts/proof.f.d.mts +14 -0
- package/fjs/asserts/proof.f.mjs +33 -0
- package/fjs/asserts/types.d.ts +11 -0
- package/fjs/basen/base128/module.f.d.mts +22 -0
- package/fjs/basen/base128/module.f.mjs +51 -0
- package/fjs/basen/base128/proof.f.d.mts +4 -0
- package/fjs/basen/base128/proof.f.mjs +32 -0
- package/fjs/basen/base64/module.f.d.mts +14 -0
- package/fjs/basen/base64/module.f.mjs +75 -0
- package/fjs/basen/base64/proof.f.d.mts +19 -0
- package/fjs/basen/base64/proof.f.mjs +150 -0
- package/fjs/basen/cbase32/module.f.d.mts +18 -0
- package/fjs/basen/cbase32/module.f.mjs +61 -0
- package/fjs/basen/cbase32/proof.f.d.mts +10 -0
- package/fjs/basen/cbase32/proof.f.mjs +79 -0
- package/fjs/basen/module.f.d.mts +30 -0
- package/fjs/basen/module.f.mjs +88 -0
- package/fjs/basen/proof.f.mjs +69 -0
- package/fjs/basen/types.d.ts +14 -0
- package/fjs/bnf/data/module.f.d.mts +47 -0
- package/fjs/bnf/data/module.f.mjs +188 -0
- package/fjs/bnf/data/proof.f.d.mts +13 -0
- package/fjs/bnf/data/proof.f.mjs +159 -0
- package/fjs/bnf/data/types.d.ts +35 -0
- package/fjs/bnf/descent/module.f.d.mts +48 -0
- package/fjs/bnf/descent/module.f.mjs +289 -0
- package/fjs/bnf/descent/proof.f.d.mts +14 -0
- package/fjs/bnf/descent/proof.f.mjs +427 -0
- package/fjs/bnf/descent/types.d.ts +79 -0
- package/fjs/bnf/ll1/module.f.d.mts +67 -0
- package/fjs/bnf/ll1/module.f.mjs +341 -0
- package/fjs/bnf/ll1/proof.f.d.mts +18 -0
- package/fjs/bnf/ll1/proof.f.mjs +413 -0
- package/fjs/bnf/ll1/types.d.ts +65 -0
- package/fjs/bnf/module.f.d.mts +173 -0
- package/fjs/bnf/module.f.mjs +339 -0
- package/fjs/bnf/proof.f.d.mts +19 -0
- package/fjs/bnf/proof.f.mjs +165 -0
- package/fjs/bnf/testlib.f.d.mts +10 -0
- package/fjs/bnf/testlib.f.mjs +196 -0
- package/fjs/bnf/token_symbol/module.f.d.mts +36 -0
- package/fjs/bnf/token_symbol/module.f.mjs +63 -0
- package/fjs/bnf/token_symbol/proof.f.mjs +46 -0
- package/fjs/bnf/token_symbol/types.d.ts +27 -0
- package/fjs/bnf/types.d.ts +74 -0
- package/fjs/cas/cli/module.f.d.mts +17 -0
- package/fjs/cas/cli/module.f.mjs +73 -0
- package/fjs/cas/cli/proof.f.d.mts +20 -0
- package/fjs/cas/cli/proof.f.mjs +120 -0
- package/fjs/cas/evo/module.f.d.mts +157 -0
- package/fjs/cas/evo/module.f.mjs +563 -0
- package/fjs/cas/evo/proof.f.d.mts +55 -0
- package/fjs/cas/evo/proof.f.mjs +752 -0
- package/fjs/cas/evo/types.d.ts +111 -0
- package/fjs/cas/module.f.d.mts +68 -0
- package/fjs/cas/module.f.mjs +350 -0
- package/fjs/cas/proof.f.d.mts +29 -0
- package/fjs/cas/proof.f.mjs +371 -0
- package/fjs/cas/types.d.ts +35 -0
- package/fjs/ci/bun/module.f.d.mts +11 -0
- package/fjs/ci/bun/module.f.mjs +20 -0
- package/fjs/ci/common/module.f.d.mts +80 -0
- package/fjs/ci/common/module.f.mjs +88 -0
- package/fjs/ci/common/types.d.ts +27 -0
- package/fjs/ci/config/module.f.d.mts +45 -0
- package/fjs/ci/config/module.f.mjs +89 -0
- package/fjs/ci/deno/module.f.d.mts +16 -0
- package/fjs/ci/deno/module.f.mjs +29 -0
- package/fjs/ci/deno/proof.f.d.mts +4 -0
- package/fjs/ci/deno/proof.f.mjs +26 -0
- package/fjs/ci/module.f.d.mts +19 -0
- package/fjs/ci/module.f.mjs +89 -0
- package/fjs/ci/nix/module.f.d.mts +69 -0
- package/fjs/ci/nix/module.f.mjs +136 -0
- package/fjs/ci/nix/proof.f.d.mts +30 -0
- package/fjs/ci/nix/proof.f.mjs +146 -0
- package/fjs/ci/nix/types.d.ts +16 -0
- package/fjs/ci/node/module.f.d.mts +48 -0
- package/fjs/ci/node/module.f.mjs +139 -0
- package/fjs/ci/node/proof.f.mjs +18 -0
- package/fjs/ci/proof.f.d.mts +22 -0
- package/fjs/ci/proof.f.mjs +220 -0
- package/fjs/ci/rust/module.f.d.mts +15 -0
- package/fjs/ci/rust/module.f.mjs +108 -0
- package/fjs/ci/types.d.ts +9 -0
- package/fjs/cli/module.f.d.mts +16 -0
- package/fjs/cli/module.f.mjs +51 -0
- package/fjs/cli/proof.f.d.mts +18 -0
- package/fjs/cli/proof.f.mjs +132 -0
- package/fjs/cli/types.d.ts +15 -0
- package/fjs/common/monoid/module.f.d.mts +145 -0
- package/fjs/common/monoid/module.f.mjs +267 -0
- package/fjs/common/monoid/proof.f.d.mts +21 -0
- package/fjs/common/monoid/proof.f.mjs +142 -0
- package/fjs/common/monoid/types.d.ts +73 -0
- package/fjs/crypto/hmac/module.f.d.mts +32 -0
- package/fjs/crypto/hmac/module.f.mjs +65 -0
- package/fjs/crypto/hmac/proof.f.mjs +34 -0
- package/fjs/crypto/pow/module.f.d.mts +43 -0
- package/fjs/crypto/pow/module.f.mjs +93 -0
- package/fjs/crypto/pow/proof.f.mjs +121 -0
- package/fjs/crypto/pow/types.d.ts +19 -0
- package/fjs/crypto/secp/module.f.d.mts +61 -0
- package/fjs/crypto/secp/module.f.mjs +204 -0
- package/fjs/crypto/secp/proof.f.d.mts +11 -0
- package/fjs/crypto/secp/proof.f.mjs +139 -0
- package/fjs/crypto/secp/types.d.ts +36 -0
- package/fjs/crypto/sha2/module.f.d.mts +80 -0
- package/fjs/crypto/sha2/module.f.mjs +431 -0
- package/fjs/crypto/sha2/proof.f.d.mts +34 -0
- package/fjs/crypto/sha2/proof.f.mjs +146 -0
- package/fjs/crypto/sha2/types.d.ts +57 -0
- package/fjs/crypto/sign/module.f.d.mts +46 -0
- package/fjs/crypto/sign/module.f.mjs +189 -0
- package/fjs/crypto/sign/proof.f.d.mts +17 -0
- package/fjs/crypto/sign/proof.f.mjs +604 -0
- package/fjs/crypto/sign/types.d.ts +13 -0
- package/fjs/crypto/vdf/module.f.d.mts +34 -0
- package/fjs/crypto/vdf/module.f.mjs +86 -0
- package/fjs/crypto/vdf/proof.f.mjs +106 -0
- package/fjs/crypto/vdf/types.d.ts +18 -0
- package/fjs/dev/module.f.d.mts +59 -0
- package/fjs/dev/module.f.mjs +171 -0
- package/fjs/dev/package_json/module.f.d.mts +39 -0
- package/fjs/dev/package_json/module.f.mjs +40 -0
- package/fjs/dev/package_json/proof.f.mjs +32 -0
- package/fjs/dev/proof.f.d.mts +13 -0
- package/fjs/dev/proof.f.mjs +78 -0
- package/fjs/dev/types.d.ts +14 -0
- package/fjs/dev/update/module.f.d.mts +22 -0
- package/fjs/dev/update/module.f.mjs +37 -0
- package/fjs/dev/update/proof.f.d.mts +10 -0
- package/fjs/dev/update/proof.f.mjs +35 -0
- package/fjs/djs/ast/module.f.d.mts +35 -0
- package/fjs/djs/ast/module.f.mjs +82 -0
- package/fjs/djs/ast/proof.f.mjs +48 -0
- package/fjs/djs/ast/types.d.ts +54 -0
- package/fjs/djs/examples/input.f.mjs +4 -0
- package/fjs/djs/examples/m.f.mjs +1 -0
- package/fjs/djs/module.f.d.mts +17 -0
- package/fjs/djs/module.f.mjs +47 -0
- package/fjs/djs/parser/module.f.d.mts +78 -0
- package/fjs/djs/parser/module.f.mjs +565 -0
- package/fjs/djs/parser/proof.f.d.mts +17 -0
- package/fjs/djs/parser/proof.f.mjs +555 -0
- package/fjs/djs/parser/types.d.ts +11 -0
- package/fjs/djs/proof.f.d.mts +13 -0
- package/fjs/djs/proof.f.mjs +55 -0
- package/fjs/djs/serializer/module.f.d.mts +30 -0
- package/fjs/djs/serializer/module.f.mjs +207 -0
- package/fjs/djs/serializer/proof.f.mjs +116 -0
- package/fjs/djs/tokenizer/module.f.d.mts +65 -0
- package/fjs/djs/tokenizer/module.f.mjs +632 -0
- package/fjs/djs/tokenizer/proof.f.d.mts +17 -0
- package/fjs/djs/tokenizer/proof.f.mjs +992 -0
- package/fjs/djs/tokenizer/types.d.ts +20 -0
- package/fjs/djs/transpiler/module.f.d.mts +33 -0
- package/fjs/djs/transpiler/module.f.mjs +122 -0
- package/fjs/djs/transpiler/proof.f.mjs +76 -0
- package/fjs/djs/transpiler/types.d.ts +25 -0
- package/fjs/djs/types.d.ts +13 -0
- package/fjs/effects/eff/module.f.d.mts +20 -0
- package/fjs/effects/eff/module.f.mjs +70 -0
- package/fjs/effects/eff/proof.f.d.mts +15 -0
- package/fjs/effects/eff/proof.f.mjs +69 -0
- package/fjs/effects/eff/types.d.ts +71 -0
- package/fjs/effects/list/module.f.d.mts +32 -0
- package/fjs/effects/list/module.f.mjs +36 -0
- package/fjs/effects/list/types.d.ts +26 -0
- package/fjs/effects/memory/module.f.d.mts +34 -0
- package/fjs/effects/memory/module.f.mjs +45 -0
- package/fjs/effects/memory/proof.f.d.mts +16 -0
- package/fjs/effects/memory/proof.f.mjs +86 -0
- package/fjs/effects/memory/types.d.ts +18 -0
- package/fjs/effects/mock/module.f.d.mts +14 -0
- package/fjs/effects/mock/module.f.mjs +28 -0
- package/fjs/effects/mock/types.d.ts +15 -0
- package/fjs/effects/module.d.mts +15 -0
- package/fjs/effects/module.f.d.mts +352 -0
- package/fjs/effects/module.f.mjs +383 -0
- package/fjs/effects/module.mjs +26 -0
- package/fjs/effects/node/memory/module.d.mts +27 -0
- package/fjs/effects/node/memory/module.mjs +60 -0
- package/fjs/effects/node/memory/proof.d.mts +12 -0
- package/fjs/effects/node/memory/proof.mjs +44 -0
- package/fjs/effects/node/module.d.mts +59 -0
- package/fjs/effects/node/module.f.d.mts +177 -0
- package/fjs/effects/node/module.f.mjs +348 -0
- package/fjs/effects/node/module.mjs +381 -0
- package/fjs/effects/node/proof.f.d.mts +76 -0
- package/fjs/effects/node/proof.f.mjs +444 -0
- package/fjs/effects/node/types.d.ts +203 -0
- package/fjs/effects/node/virtual/module.f.d.mts +34 -0
- package/fjs/effects/node/virtual/module.f.mjs +435 -0
- package/fjs/effects/node/virtual/proof.f.d.mts +38 -0
- package/fjs/effects/node/virtual/proof.f.mjs +238 -0
- package/fjs/effects/node/virtual/types.d.ts +39 -0
- package/fjs/effects/proof.f.d.mts +65 -0
- package/fjs/effects/proof.f.mjs +234 -0
- package/fjs/effects/types.d.ts +115 -0
- package/fjs/emergent_testing/all.test.d.mts +8 -0
- package/fjs/emergent_testing/all.test.mjs +14 -0
- package/fjs/emergent_testing/example.f.d.mts +16 -0
- package/fjs/emergent_testing/example.f.mjs +34 -0
- package/fjs/emergent_testing/module.f.d.mts +155 -0
- package/fjs/emergent_testing/module.f.mjs +388 -0
- package/fjs/emergent_testing/proof.f.d.mts +97 -0
- package/fjs/emergent_testing/proof.f.mjs +518 -0
- package/fjs/emergent_testing/types.d.ts +53 -0
- package/fjs/fsc/bnf.f.d.mts +6 -0
- package/fjs/fsc/bnf.f.mjs +80 -0
- package/fjs/fsc/json.f.d.mts +16 -0
- package/fjs/fsc/json.f.mjs +127 -0
- package/fjs/fsc/module.f.d.mts +23 -0
- package/fjs/fsc/module.f.mjs +140 -0
- package/fjs/fsc/proof.f.mjs +119 -0
- package/fjs/fsm/module.f.d.mts +27 -0
- package/fjs/fsm/module.f.mjs +99 -0
- package/fjs/fsm/proof.f.d.mts +7 -0
- package/fjs/fsm/proof.f.mjs +149 -0
- package/fjs/js/tokenizer/module.f.d.mts +26 -0
- package/fjs/js/tokenizer/module.f.mjs +759 -0
- package/fjs/js/tokenizer/proof.f.d.mts +12 -0
- package/fjs/js/tokenizer/proof.f.mjs +681 -0
- package/fjs/js/tokenizer/types.d.ts +193 -0
- package/fjs/mcp/cas/module.f.d.mts +156 -0
- package/fjs/mcp/cas/module.f.mjs +302 -0
- package/fjs/mcp/evo/module.f.d.mts +88 -0
- package/fjs/mcp/evo/module.f.mjs +153 -0
- package/fjs/mcp/evo/proof.f.d.mts +17 -0
- package/fjs/mcp/evo/proof.f.mjs +166 -0
- package/fjs/mcp/module.f.d.mts +67 -0
- package/fjs/mcp/module.f.mjs +98 -0
- package/fjs/mcp/proof.f.d.mts +56 -0
- package/fjs/mcp/proof.f.mjs +718 -0
- package/fjs/media/html/module.f.d.mts +55 -0
- package/fjs/media/html/module.f.mjs +169 -0
- package/fjs/media/html/proof.f.d.mts +19 -0
- package/fjs/media/html/proof.f.mjs +80 -0
- package/fjs/media/html/types.d.ts +19 -0
- package/fjs/media/json/module.f.d.mts +48 -0
- package/fjs/media/json/module.f.mjs +104 -0
- package/fjs/media/json/parser/module.f.d.mts +30 -0
- package/fjs/media/json/parser/module.f.mjs +236 -0
- package/fjs/media/json/parser/proof.f.d.mts +8 -0
- package/fjs/media/json/parser/proof.f.mjs +314 -0
- package/fjs/media/json/parser/types.d.ts +39 -0
- package/fjs/media/json/proof.f.mjs +79 -0
- package/fjs/media/json/rtti/module.f.d.mts +38 -0
- package/fjs/media/json/rtti/module.f.mjs +51 -0
- package/fjs/media/json/rtti/proof.f.d.mts +29 -0
- package/fjs/media/json/rtti/proof.f.mjs +86 -0
- package/fjs/media/json/schema/module.f.d.mts +113 -0
- package/fjs/media/json/schema/module.f.mjs +309 -0
- package/fjs/media/json/schema/proof.f.d.mts +81 -0
- package/fjs/media/json/schema/proof.f.mjs +305 -0
- package/fjs/media/json/serializer/module.f.d.mts +40 -0
- package/fjs/media/json/serializer/module.f.mjs +131 -0
- package/fjs/media/json/serializer/proof.f.mjs +92 -0
- package/fjs/media/json/tokenizer/module.f.d.mts +25 -0
- package/fjs/media/json/tokenizer/module.f.mjs +96 -0
- package/fjs/media/json/tokenizer/proof.f.d.mts +8 -0
- package/fjs/media/json/tokenizer/proof.f.mjs +291 -0
- package/fjs/media/json/tokenizer/types.d.ts +17 -0
- package/fjs/media/json/types.d.ts +25 -0
- package/fjs/media/module.f.d.mts +116 -0
- package/fjs/media/module.f.mjs +152 -0
- package/fjs/media/nix/module.f.d.mts +27 -0
- package/fjs/media/nix/module.f.mjs +263 -0
- package/fjs/media/nix/proof.f.d.mts +35 -0
- package/fjs/media/nix/proof.f.mjs +184 -0
- package/fjs/media/nix/types.d.ts +22 -0
- package/fjs/media/proof.f.d.mts +19 -0
- package/fjs/media/proof.f.mjs +159 -0
- package/fjs/media/revision/module.f.d.mts +124 -0
- package/fjs/media/revision/module.f.mjs +163 -0
- package/fjs/media/revision/proof.f.d.mts +46 -0
- package/fjs/media/revision/proof.f.mjs +231 -0
- package/fjs/media/revision/types.d.ts +16 -0
- package/fjs/media/rust/module.f.d.mts +61 -0
- package/fjs/media/rust/module.f.mjs +93 -0
- package/fjs/media/rust/proof.f.d.mts +17 -0
- package/fjs/media/rust/proof.f.mjs +50 -0
- package/fjs/media/type/module.f.d.mts +114 -0
- package/fjs/media/type/module.f.mjs +265 -0
- package/fjs/media/type/proof.f.d.mts +56 -0
- package/fjs/media/type/proof.f.mjs +325 -0
- package/fjs/media/type/types.d.ts +67 -0
- package/fjs/media/types.d.ts +26 -0
- package/fjs/module.d.mts +7 -0
- package/fjs/module.f.d.mts +11 -0
- package/fjs/module.f.mjs +62 -0
- package/fjs/module.mjs +12 -0
- package/fjs/nanvm/module.f.d.mts +54 -0
- package/fjs/nanvm/module.f.mjs +240 -0
- package/fjs/nanvm/proof.f.d.mts +41 -0
- package/fjs/nanvm/proof.f.mjs +173 -0
- package/fjs/nanvm/rust/module.f.d.mts +54 -0
- package/fjs/nanvm/rust/module.f.mjs +166 -0
- package/fjs/nanvm/rust/proof.f.d.mts +21 -0
- package/fjs/nanvm/rust/proof.f.mjs +119 -0
- package/fjs/nanvm/types.d.ts +105 -0
- package/fjs/nanvm/update/module.f.d.mts +23 -0
- package/fjs/nanvm/update/module.f.mjs +33 -0
- package/fjs/nanvm/update/proof.f.d.mts +9 -0
- package/fjs/nanvm/update/proof.f.mjs +32 -0
- package/fjs/path/module.f.d.mts +63 -0
- package/fjs/path/module.f.mjs +98 -0
- package/fjs/path/proof.f.mjs +125 -0
- package/fjs/proof.f.d.mts +13 -0
- package/fjs/proof.f.mjs +51 -0
- package/fjs/protocol/json_rpc/module.f.d.mts +127 -0
- package/fjs/protocol/json_rpc/module.f.mjs +115 -0
- package/fjs/protocol/json_rpc/proof.f.d.mts +41 -0
- package/fjs/protocol/json_rpc/proof.f.mjs +105 -0
- package/fjs/protocol/json_rpc/types.d.ts +30 -0
- package/fjs/protocol/mcp/module.f.d.mts +227 -0
- package/fjs/protocol/mcp/module.f.mjs +369 -0
- package/fjs/protocol/mcp/proof.f.d.mts +57 -0
- package/fjs/protocol/mcp/proof.f.mjs +335 -0
- package/fjs/protocol/mcp/stdio/module.f.d.mts +50 -0
- package/fjs/protocol/mcp/stdio/module.f.mjs +125 -0
- package/fjs/protocol/mcp/stdio/proof.f.d.mts +20 -0
- package/fjs/protocol/mcp/stdio/proof.f.mjs +190 -0
- package/fjs/protocol/mcp/stdio/types.d.ts +14 -0
- package/fjs/protocol/mcp/types.d.ts +59 -0
- package/fjs/sul/id/module.f.d.mts +42 -0
- package/fjs/sul/id/module.f.mjs +144 -0
- package/fjs/sul/id/proof.f.mjs +72 -0
- package/fjs/sul/id/types.d.ts +8 -0
- package/fjs/sul/level/hash/module.f.d.mts +40 -0
- package/fjs/sul/level/hash/module.f.mjs +62 -0
- package/fjs/sul/level/hash/proof.f.d.mts +19 -0
- package/fjs/sul/level/hash/proof.f.mjs +134 -0
- package/fjs/sul/level/hash/types.d.ts +20 -0
- package/fjs/sul/level/literal/module.f.d.mts +57 -0
- package/fjs/sul/level/literal/module.f.mjs +121 -0
- package/fjs/sul/level/literal/proof.f.d.mts +15 -0
- package/fjs/sul/level/literal/proof.f.mjs +791 -0
- package/fjs/sul/level/literal/types.d.ts +31 -0
- package/fjs/sul/module.f.d.mts +27 -0
- package/fjs/sul/module.f.mjs +70 -0
- package/fjs/sul/proof.f.d.mts +15 -0
- package/fjs/sul/proof.f.mjs +65 -0
- package/fjs/sul/types.d.ts +19 -0
- package/fjs/text/ascii/module.f.d.mts +162 -0
- package/fjs/text/ascii/module.f.mjs +272 -0
- package/fjs/text/ascii/proof.f.d.mts +16 -0
- package/fjs/text/ascii/proof.f.mjs +48 -0
- package/fjs/text/code_point/module.f.d.mts +92 -0
- package/fjs/text/code_point/module.f.mjs +155 -0
- package/fjs/text/code_point/proof.f.d.mts +9 -0
- package/fjs/text/code_point/proof.f.mjs +108 -0
- package/fjs/text/module.f.d.mts +41 -0
- package/fjs/text/module.f.mjs +62 -0
- package/fjs/text/proof.f.d.mts +13 -0
- package/fjs/text/proof.f.mjs +51 -0
- package/fjs/text/sgr/module.f.d.mts +61 -0
- package/fjs/text/sgr/module.f.mjs +100 -0
- package/fjs/text/sgr/proof.f.d.mts +4 -0
- package/fjs/text/sgr/proof.f.mjs +42 -0
- package/fjs/text/sgr/types.d.ts +12 -0
- package/fjs/text/types.d.ts +13 -0
- package/fjs/text/utf16/module.f.d.mts +151 -0
- package/fjs/text/utf16/module.f.mjs +348 -0
- package/fjs/text/utf16/proof.f.d.mts +13 -0
- package/fjs/text/utf16/proof.f.mjs +175 -0
- package/fjs/text/utf16/types.d.ts +19 -0
- package/fjs/text/utf8/module.f.d.mts +73 -0
- package/fjs/text/utf8/module.f.mjs +278 -0
- package/fjs/text/utf8/proof.f.mjs +217 -0
- package/fjs/text/utf8/types.d.ts +26 -0
- package/fjs/types/array/module.f.d.mts +69 -0
- package/fjs/types/array/module.f.mjs +101 -0
- package/fjs/types/array/proof.f.mjs +98 -0
- package/fjs/types/array/types.d.ts +13 -0
- package/fjs/types/bigfloat/module.f.d.mts +34 -0
- package/fjs/types/bigfloat/module.f.mjs +125 -0
- package/fjs/types/bigfloat/proof.f.d.mts +6 -0
- package/fjs/types/bigfloat/proof.f.mjs +264 -0
- package/fjs/types/bigfloat/types.d.ts +6 -0
- package/fjs/types/bigint/benchmark.mjs +205 -0
- package/fjs/types/bigint/module.f.d.mts +180 -0
- package/fjs/types/bigint/module.f.mjs +290 -0
- package/fjs/types/bigint/proof.f.d.mts +39 -0
- package/fjs/types/bigint/proof.f.mjs +443 -0
- package/fjs/types/bigint/types.d.ts +14 -0
- package/fjs/types/bit_vec/module.f.d.mts +195 -0
- package/fjs/types/bit_vec/module.f.mjs +475 -0
- package/fjs/types/bit_vec/proof.f.d.mts +71 -0
- package/fjs/types/bit_vec/proof.f.mjs +521 -0
- package/fjs/types/bit_vec/types.d.ts +51 -0
- package/fjs/types/btree/find/module.f.d.mts +19 -0
- package/fjs/types/btree/find/module.f.mjs +80 -0
- package/fjs/types/btree/find/proof.f.d.mts +8 -0
- package/fjs/types/btree/find/proof.f.mjs +123 -0
- package/fjs/types/btree/find/types.d.ts +22 -0
- package/fjs/types/btree/module.f.d.mts +13 -0
- package/fjs/types/btree/module.f.mjs +40 -0
- package/fjs/types/btree/proof.f.d.mts +18 -0
- package/fjs/types/btree/proof.f.mjs +87 -0
- package/fjs/types/btree/remove/module.f.d.mts +32 -0
- package/fjs/types/btree/remove/module.f.mjs +187 -0
- package/fjs/types/btree/remove/proof.f.d.mts +12 -0
- package/fjs/types/btree/remove/proof.f.mjs +475 -0
- package/fjs/types/btree/set/module.f.d.mts +14 -0
- package/fjs/types/btree/set/module.f.mjs +116 -0
- package/fjs/types/btree/set/proof.f.d.mts +4 -0
- package/fjs/types/btree/set/proof.f.mjs +430 -0
- package/fjs/types/btree/types/module.f.d.mts +20 -0
- package/fjs/types/btree/types/module.f.mjs +20 -0
- package/fjs/types/btree/types/types.d.ts +14 -0
- package/fjs/types/byte_set/module.f.d.mts +35 -0
- package/fjs/types/byte_set/module.f.mjs +68 -0
- package/fjs/types/byte_set/proof.f.d.mts +14 -0
- package/fjs/types/byte_set/proof.f.mjs +86 -0
- package/fjs/types/byte_set/types.d.ts +6 -0
- package/fjs/types/function/compare/module.f.d.mts +45 -0
- package/fjs/types/function/compare/module.f.mjs +72 -0
- package/fjs/types/function/compare/proof.f.mjs +50 -0
- package/fjs/types/function/compare/types.d.ts +22 -0
- package/fjs/types/function/module.f.d.mts +33 -0
- package/fjs/types/function/module.f.mjs +39 -0
- package/fjs/types/function/operator/module.f.d.mts +38 -0
- package/fjs/types/function/operator/module.f.mjs +55 -0
- package/fjs/types/function/operator/proof.f.mjs +76 -0
- package/fjs/types/function/operator/types.d.ts +39 -0
- package/fjs/types/function/proof.f.mjs +16 -0
- package/fjs/types/function/types.d.ts +16 -0
- package/fjs/types/list/module.f.d.mts +95 -0
- package/fjs/types/list/module.f.mjs +311 -0
- package/fjs/types/list/proof.f.d.mts +35 -0
- package/fjs/types/list/proof.f.mjs +365 -0
- package/fjs/types/list/types.d.ts +36 -0
- package/fjs/types/map/module.f.d.mts +13 -0
- package/fjs/types/map/module.f.mjs +42 -0
- package/fjs/types/map/proof.f.mjs +25 -0
- package/fjs/types/nibble_set/module.f.d.mts +31 -0
- package/fjs/types/nibble_set/module.f.mjs +43 -0
- package/fjs/types/nibble_set/proof.f.mjs +59 -0
- package/fjs/types/nibble_set/types.d.ts +9 -0
- package/fjs/types/nominal/module.f.d.mts +10 -0
- package/fjs/types/nominal/module.f.mjs +17 -0
- package/fjs/types/nominal/proof.f.d.mts +7 -0
- package/fjs/types/nominal/proof.f.mjs +79 -0
- package/fjs/types/nominal/types.d.ts +25 -0
- package/fjs/types/nullable/module.f.d.mts +44 -0
- package/fjs/types/nullable/module.f.mjs +55 -0
- package/fjs/types/nullable/proof.f.mjs +34 -0
- package/fjs/types/nullable/types.d.ts +6 -0
- package/fjs/types/number/module.f.d.mts +27 -0
- package/fjs/types/number/module.f.mjs +56 -0
- package/fjs/types/number/proof.f.mjs +204 -0
- package/fjs/types/object/module.f.d.mts +45 -0
- package/fjs/types/object/module.f.mjs +67 -0
- package/fjs/types/object/proof.f.d.mts +28 -0
- package/fjs/types/object/proof.f.mjs +29 -0
- package/fjs/types/object/structurally_same/module.f.d.mts +39 -0
- package/fjs/types/object/structurally_same/module.f.mjs +59 -0
- package/fjs/types/object/structurally_same/proof.f.d.mts +6 -0
- package/fjs/types/object/structurally_same/proof.f.mjs +73 -0
- package/fjs/types/object/types.d.ts +50 -0
- package/fjs/types/ordered_map/module.f.d.mts +26 -0
- package/fjs/types/ordered_map/module.f.mjs +55 -0
- package/fjs/types/ordered_map/proof.f.d.mts +8 -0
- package/fjs/types/ordered_map/proof.f.mjs +91 -0
- package/fjs/types/ordered_map/types.d.ts +8 -0
- package/fjs/types/patricia_trie/module.f.d.mts +20 -0
- package/fjs/types/patricia_trie/module.f.mjs +43 -0
- package/fjs/types/patricia_trie/proof.f.d.mts +17 -0
- package/fjs/types/patricia_trie/proof.f.mjs +151 -0
- package/fjs/types/patricia_trie/types.d.ts +34 -0
- package/fjs/types/prime_field/module.f.d.mts +44 -0
- package/fjs/types/prime_field/module.f.mjs +137 -0
- package/fjs/types/prime_field/proof.f.mjs +131 -0
- package/fjs/types/prime_field/types.d.ts +38 -0
- package/fjs/types/range/module.f.d.mts +12 -0
- package/fjs/types/range/module.f.mjs +13 -0
- package/fjs/types/range/proof.f.mjs +10 -0
- package/fjs/types/range/types.d.ts +6 -0
- package/fjs/types/range_map/module.f.d.mts +78 -0
- package/fjs/types/range_map/module.f.mjs +127 -0
- package/fjs/types/range_map/proof.f.d.mts +11 -0
- package/fjs/types/range_map/proof.f.mjs +188 -0
- package/fjs/types/range_map/types.d.ts +56 -0
- package/fjs/types/range_set/module.f.d.mts +10 -0
- package/fjs/types/range_set/module.f.mjs +20 -0
- package/fjs/types/range_set/proof.f.d.mts +4 -0
- package/fjs/types/range_set/proof.f.mjs +29 -0
- package/fjs/types/result/module.d.mts +13 -0
- package/fjs/types/result/module.f.d.mts +89 -0
- package/fjs/types/result/module.f.mjs +97 -0
- package/fjs/types/result/module.mjs +30 -0
- package/fjs/types/result/proof.f.d.mts +17 -0
- package/fjs/types/result/proof.f.mjs +61 -0
- package/fjs/types/result/types.d.ts +17 -0
- package/fjs/types/rtti/common/module.f.d.mts +119 -0
- package/fjs/types/rtti/common/module.f.mjs +185 -0
- package/fjs/types/rtti/common/proof.f.d.mts +13 -0
- package/fjs/types/rtti/common/proof.f.mjs +67 -0
- package/fjs/types/rtti/common/types.d.ts +43 -0
- package/fjs/types/rtti/data/module.f.d.mts +120 -0
- package/fjs/types/rtti/data/module.f.mjs +1030 -0
- package/fjs/types/rtti/data/proof.f.d.mts +75 -0
- package/fjs/types/rtti/data/proof.f.mjs +566 -0
- package/fjs/types/rtti/data/types.d.ts +83 -0
- package/fjs/types/rtti/module.f.d.mts +83 -0
- package/fjs/types/rtti/module.f.mjs +112 -0
- package/fjs/types/rtti/parse/module.f.d.mts +47 -0
- package/fjs/types/rtti/parse/module.f.mjs +198 -0
- package/fjs/types/rtti/parse/proof.f.d.mts +122 -0
- package/fjs/types/rtti/parse/proof.f.mjs +343 -0
- package/fjs/types/rtti/parse/types.d.ts +12 -0
- package/fjs/types/rtti/proof.f.d.mts +10 -0
- package/fjs/types/rtti/proof.f.mjs +22 -0
- package/fjs/types/rtti/ts/module.f.d.mts +93 -0
- package/fjs/types/rtti/ts/module.f.mjs +296 -0
- package/fjs/types/rtti/ts/proof.f.d.mts +103 -0
- package/fjs/types/rtti/ts/proof.f.mjs +236 -0
- package/fjs/types/rtti/ts/types.d.ts +99 -0
- package/fjs/types/rtti/types.d.ts +83 -0
- package/fjs/types/rtti/validate/module.f.d.mts +41 -0
- package/fjs/types/rtti/validate/module.f.mjs +171 -0
- package/fjs/types/rtti/validate/proof.f.d.mts +125 -0
- package/fjs/types/rtti/validate/proof.f.mjs +437 -0
- package/fjs/types/rtti/validate/types.d.ts +6 -0
- package/fjs/types/sorted_list/module.f.d.mts +46 -0
- package/fjs/types/sorted_list/module.f.mjs +119 -0
- package/fjs/types/sorted_list/proof.f.d.mts +7 -0
- package/fjs/types/sorted_list/proof.f.mjs +54 -0
- package/fjs/types/sorted_list/types.d.ts +15 -0
- package/fjs/types/sorted_set/module.f.d.mts +54 -0
- package/fjs/types/sorted_set/module.f.mjs +58 -0
- package/fjs/types/sorted_set/proof.f.d.mts +9 -0
- package/fjs/types/sorted_set/proof.f.mjs +79 -0
- package/fjs/types/sorted_set/types.d.ts +6 -0
- package/fjs/types/string/module.f.d.mts +40 -0
- package/fjs/types/string/module.f.mjs +59 -0
- package/fjs/types/string/proof.f.mjs +76 -0
- package/fjs/types/string_set/module.f.d.mts +39 -0
- package/fjs/types/string_set/module.f.mjs +54 -0
- package/fjs/types/string_set/proof.f.mjs +46 -0
- package/fjs/types/string_set/types.d.ts +7 -0
- package/fjs/types/ts/module.f.d.mts +22 -0
- package/fjs/types/ts/module.f.mjs +51 -0
- package/fjs/types/ts/proof.f.d.mts +39 -0
- package/fjs/types/ts/proof.f.mjs +102 -0
- package/fjs/types/ts/types.d.ts +21 -0
- package/fjs/types/uint8array/module.f.d.mts +42 -0
- package/fjs/types/uint8array/module.f.mjs +58 -0
- package/fjs/types/uint8array/proof.f.d.mts +17 -0
- package/fjs/types/uint8array/proof.f.mjs +73 -0
- package/fjs/website/module.f.d.mts +11 -0
- package/fjs/website/module.f.mjs +25 -0
- package/fjs/website/proof.f.mjs +14 -0
- package/package.json +12 -10
- package/todo/proof.f.d.mts +22 -0
- package/todo/proof.f.mjs +59 -0
- package/fjs/asn.1/module.f.d.ts +0 -62
- package/fjs/asn.1/module.f.js +0 -278
- package/fjs/asn.1/proof.f.d.ts +0 -48
- package/fjs/asn.1/proof.f.js +0 -285
- package/fjs/asserts/module.f.d.ts +0 -36
- package/fjs/asserts/module.f.js +0 -39
- package/fjs/asserts/proof.f.d.ts +0 -11
- package/fjs/asserts/proof.f.js +0 -18
- package/fjs/base_n/module.f.d.ts +0 -45
- package/fjs/base_n/module.f.js +0 -72
- package/fjs/base_n/proof.f.js +0 -73
- package/fjs/basen/base128/module.f.d.ts +0 -20
- package/fjs/basen/base128/module.f.js +0 -43
- package/fjs/basen/base128/proof.f.js +0 -26
- package/fjs/basen/base64/module.f.d.ts +0 -9
- package/fjs/basen/base64/module.f.js +0 -71
- package/fjs/basen/base64/proof.f.d.ts +0 -16
- package/fjs/basen/base64/proof.f.js +0 -139
- package/fjs/basen/cbase32/module.f.d.ts +0 -11
- package/fjs/basen/cbase32/module.f.js +0 -55
- package/fjs/basen/cbase32/proof.f.d.ts +0 -7
- package/fjs/basen/cbase32/proof.f.js +0 -62
- package/fjs/bnf/data/module.f.d.ts +0 -52
- package/fjs/bnf/data/module.f.js +0 -143
- package/fjs/bnf/data/proof.f.d.ts +0 -8
- package/fjs/bnf/data/proof.f.js +0 -169
- package/fjs/bnf/descent/module.f.d.ts +0 -87
- package/fjs/bnf/descent/module.f.js +0 -149
- package/fjs/bnf/descent/proof.f.d.ts +0 -7
- package/fjs/bnf/descent/proof.f.js +0 -368
- package/fjs/bnf/ll1/module.f.d.ts +0 -72
- package/fjs/bnf/ll1/module.f.js +0 -155
- package/fjs/bnf/ll1/proof.f.d.ts +0 -10
- package/fjs/bnf/ll1/proof.f.js +0 -375
- package/fjs/bnf/module.f.d.ts +0 -165
- package/fjs/bnf/module.f.js +0 -174
- package/fjs/bnf/proof.f.d.ts +0 -12
- package/fjs/bnf/proof.f.js +0 -69
- package/fjs/bnf/testlib.f.d.ts +0 -3
- package/fjs/bnf/testlib.f.js +0 -138
- package/fjs/bnf/token_symbol/module.f.d.ts +0 -38
- package/fjs/bnf/token_symbol/module.f.js +0 -48
- package/fjs/bnf/token_symbol/proof.f.js +0 -37
- package/fjs/cas/cli/module.f.d.ts +0 -6
- package/fjs/cas/cli/module.f.js +0 -53
- package/fjs/cas/cli/proof.f.d.ts +0 -17
- package/fjs/cas/cli/proof.f.js +0 -112
- package/fjs/cas/evo/module.f.d.ts +0 -223
- package/fjs/cas/evo/module.f.js +0 -455
- package/fjs/cas/evo/proof.f.d.ts +0 -47
- package/fjs/cas/evo/proof.f.js +0 -707
- package/fjs/cas/module.f.d.ts +0 -64
- package/fjs/cas/module.f.js +0 -255
- package/fjs/cas/proof.f.d.ts +0 -18
- package/fjs/cas/proof.f.js +0 -305
- package/fjs/ci/bun/module.f.d.ts +0 -2
- package/fjs/ci/bun/module.f.js +0 -15
- package/fjs/ci/common/module.f.d.ts +0 -88
- package/fjs/ci/common/module.f.js +0 -63
- package/fjs/ci/config/module.f.d.ts +0 -45
- package/fjs/ci/config/module.f.js +0 -80
- package/fjs/ci/deno/module.f.d.ts +0 -10
- package/fjs/ci/deno/module.f.js +0 -28
- package/fjs/ci/deno/proof.f.d.ts +0 -5
- package/fjs/ci/deno/proof.f.js +0 -26
- package/fjs/ci/module.f.d.ts +0 -13
- package/fjs/ci/module.f.js +0 -58
- package/fjs/ci/nix/module.f.d.ts +0 -61
- package/fjs/ci/nix/module.f.js +0 -92
- package/fjs/ci/nix/proof.f.d.ts +0 -23
- package/fjs/ci/nix/proof.f.js +0 -109
- package/fjs/ci/node/module.f.d.ts +0 -28
- package/fjs/ci/node/module.f.js +0 -92
- package/fjs/ci/node/proof.f.js +0 -17
- package/fjs/ci/proof.f.d.ts +0 -18
- package/fjs/ci/proof.f.js +0 -182
- package/fjs/ci/rust/module.f.d.ts +0 -3
- package/fjs/ci/rust/module.f.js +0 -75
- package/fjs/cli/module.f.d.ts +0 -11
- package/fjs/cli/module.f.js +0 -34
- package/fjs/cli/proof.f.d.ts +0 -14
- package/fjs/cli/proof.f.js +0 -111
- package/fjs/common/monoid/module.f.d.ts +0 -126
- package/fjs/common/monoid/module.f.js +0 -88
- package/fjs/common/monoid/proof.f.d.ts +0 -9
- package/fjs/common/monoid/proof.f.js +0 -48
- package/fjs/crypto/hmac/module.f.d.ts +0 -29
- package/fjs/crypto/hmac/module.f.js +0 -56
- package/fjs/crypto/hmac/proof.f.js +0 -32
- package/fjs/crypto/pow/module.f.d.ts +0 -37
- package/fjs/crypto/pow/module.f.js +0 -72
- package/fjs/crypto/pow/proof.f.js +0 -111
- package/fjs/crypto/secp/module.f.d.ts +0 -85
- package/fjs/crypto/secp/module.f.js +0 -176
- package/fjs/crypto/secp/proof.f.d.ts +0 -8
- package/fjs/crypto/secp/proof.f.js +0 -124
- package/fjs/crypto/sha2/module.f.d.ts +0 -102
- package/fjs/crypto/sha2/module.f.js +0 -266
- package/fjs/crypto/sha2/proof.f.d.ts +0 -31
- package/fjs/crypto/sha2/proof.f.js +0 -139
- package/fjs/crypto/sign/module.f.d.ts +0 -33
- package/fjs/crypto/sign/module.f.js +0 -163
- package/fjs/crypto/sign/proof.f.d.ts +0 -11
- package/fjs/crypto/sign/proof.f.js +0 -562
- package/fjs/crypto/vdf/module.f.d.ts +0 -21
- package/fjs/crypto/vdf/module.f.js +0 -57
- package/fjs/crypto/vdf/proof.f.js +0 -94
- package/fjs/dev/module.f.d.ts +0 -57
- package/fjs/dev/module.f.js +0 -135
- package/fjs/dev/package_json/module.f.d.ts +0 -16
- package/fjs/dev/package_json/module.f.js +0 -24
- package/fjs/dev/package_json/proof.f.js +0 -28
- package/fjs/dev/proof.f.d.ts +0 -13
- package/fjs/dev/proof.f.js +0 -77
- package/fjs/dev/update/module.f.d.ts +0 -11
- package/fjs/dev/update/module.f.js +0 -20
- package/fjs/dev/update/proof.f.d.ts +0 -7
- package/fjs/dev/update/proof.f.js +0 -35
- package/fjs/djs/ast/module.f.d.ts +0 -62
- package/fjs/djs/ast/module.f.js +0 -61
- package/fjs/djs/ast/proof.f.js +0 -49
- package/fjs/djs/examples/input.f.js +0 -4
- package/fjs/djs/examples/m.f.js +0 -1
- package/fjs/djs/module.f.d.ts +0 -17
- package/fjs/djs/module.f.js +0 -22
- package/fjs/djs/parser/module.f.d.ts +0 -23
- package/fjs/djs/parser/module.f.js +0 -410
- package/fjs/djs/parser/proof.f.d.ts +0 -14
- package/fjs/djs/parser/proof.f.js +0 -556
- package/fjs/djs/proof.f.d.ts +0 -10
- package/fjs/djs/proof.f.js +0 -50
- package/fjs/djs/serializer/module.f.d.ts +0 -17
- package/fjs/djs/serializer/module.f.js +0 -173
- package/fjs/djs/serializer/proof.f.js +0 -133
- package/fjs/djs/tokenizer/module.f.d.ts +0 -24
- package/fjs/djs/tokenizer/module.f.js +0 -472
- package/fjs/djs/tokenizer/proof.f.d.ts +0 -14
- package/fjs/djs/tokenizer/proof.f.js +0 -1211
- package/fjs/djs/transpiler/module.f.d.ts +0 -41
- package/fjs/djs/transpiler/module.f.js +0 -88
- package/fjs/djs/transpiler/proof.f.js +0 -67
- package/fjs/effects/eff/module.f.d.ts +0 -72
- package/fjs/effects/eff/module.f.js +0 -46
- package/fjs/effects/eff/proof.f.d.ts +0 -11
- package/fjs/effects/eff/proof.f.js +0 -58
- package/fjs/effects/list/module.f.d.ts +0 -37
- package/fjs/effects/list/module.f.js +0 -17
- package/fjs/effects/memory/module.f.d.ts +0 -37
- package/fjs/effects/memory/module.f.js +0 -24
- package/fjs/effects/memory/proof.f.d.ts +0 -6
- package/fjs/effects/memory/proof.f.js +0 -50
- package/fjs/effects/mock/module.f.d.ts +0 -16
- package/fjs/effects/mock/module.f.js +0 -20
- package/fjs/effects/module.d.ts +0 -2
- package/fjs/effects/module.f.d.ts +0 -408
- package/fjs/effects/module.f.js +0 -312
- package/fjs/effects/module.js +0 -11
- package/fjs/effects/node/memory/module.d.ts +0 -20
- package/fjs/effects/node/memory/module.js +0 -44
- package/fjs/effects/node/memory/proof.d.ts +0 -10
- package/fjs/effects/node/memory/proof.js +0 -29
- package/fjs/effects/node/module.d.ts +0 -20
- package/fjs/effects/node/module.f.d.ts +0 -300
- package/fjs/effects/node/module.f.js +0 -171
- package/fjs/effects/node/module.js +0 -305
- package/fjs/effects/node/proof.f.d.ts +0 -69
- package/fjs/effects/node/proof.f.js +0 -409
- package/fjs/effects/node/virtual/module.f.d.ts +0 -49
- package/fjs/effects/node/virtual/module.f.js +0 -440
- package/fjs/effects/node/virtual/proof.f.d.ts +0 -33
- package/fjs/effects/node/virtual/proof.f.js +0 -186
- package/fjs/effects/proof.f.d.ts +0 -56
- package/fjs/effects/proof.f.js +0 -200
- package/fjs/emergent_testing/all.test.js +0 -5
- package/fjs/emergent_testing/example.f.d.ts +0 -13
- package/fjs/emergent_testing/example.f.js +0 -31
- package/fjs/emergent_testing/module.f.d.ts +0 -140
- package/fjs/emergent_testing/module.f.js +0 -289
- package/fjs/emergent_testing/proof.f.d.ts +0 -67
- package/fjs/emergent_testing/proof.f.js +0 -416
- package/fjs/emergent_testing/scenarios/all.d.ts +0 -1
- package/fjs/emergent_testing/scenarios/all.js +0 -1
- package/fjs/emergent_testing/scenarios/async-subtests.fail.d.ts +0 -6
- package/fjs/emergent_testing/scenarios/async-subtests.fail.js +0 -9
- package/fjs/emergent_testing/scenarios/async-subtests.pass.d.ts +0 -6
- package/fjs/emergent_testing/scenarios/async-subtests.pass.js +0 -9
- package/fjs/emergent_testing/scenarios/async.fail.d.ts +0 -3
- package/fjs/emergent_testing/scenarios/async.fail.js +0 -6
- package/fjs/emergent_testing/scenarios/async.pass.d.ts +0 -3
- package/fjs/emergent_testing/scenarios/async.pass.js +0 -5
- package/fjs/emergent_testing/scenarios/fail.fail.d.ts +0 -3
- package/fjs/emergent_testing/scenarios/fail.fail.js +0 -3
- package/fjs/emergent_testing/scenarios/return-value.pass.d.ts +0 -3
- package/fjs/emergent_testing/scenarios/return-value.pass.js +0 -4
- package/fjs/emergent_testing/scenarios/thenable.pass.d.ts +0 -5
- package/fjs/emergent_testing/scenarios/thenable.pass.js +0 -11
- package/fjs/emergent_testing/scenarios/thenable2.pass.d.ts +0 -5
- package/fjs/emergent_testing/scenarios/thenable2.pass.js +0 -3
- package/fjs/emergent_testing/scenarios/throw.pass.d.ts +0 -5
- package/fjs/emergent_testing/scenarios/throw.pass.js +0 -3
- package/fjs/fsc/bnf.f.d.ts +0 -2
- package/fjs/fsc/bnf.f.js +0 -42
- package/fjs/fsc/json.f.d.ts +0 -7
- package/fjs/fsc/json.f.js +0 -64
- package/fjs/fsc/module.f.d.ts +0 -11
- package/fjs/fsc/module.f.js +0 -73
- package/fjs/fsc/proof.f.js +0 -104
- package/fjs/fsm/module.f.d.ts +0 -17
- package/fjs/fsm/module.f.js +0 -55
- package/fjs/fsm/proof.f.d.ts +0 -4
- package/fjs/fsm/proof.f.js +0 -126
- package/fjs/js/tokenizer/module.f.d.ts +0 -104
- package/fjs/js/tokenizer/module.f.js +0 -547
- package/fjs/js/tokenizer/proof.f.d.ts +0 -9
- package/fjs/js/tokenizer/proof.f.js +0 -986
- package/fjs/mcp/cas/module.f.d.ts +0 -27
- package/fjs/mcp/cas/module.f.js +0 -232
- package/fjs/mcp/evo/module.f.d.ts +0 -32
- package/fjs/mcp/evo/module.f.js +0 -99
- package/fjs/mcp/evo/proof.f.d.ts +0 -12
- package/fjs/mcp/evo/proof.f.js +0 -147
- package/fjs/mcp/module.f.d.ts +0 -56
- package/fjs/mcp/module.f.js +0 -69
- package/fjs/mcp/proof.f.d.ts +0 -45
- package/fjs/mcp/proof.f.js +0 -535
- package/fjs/media/html/module.f.d.ts +0 -52
- package/fjs/media/html/module.f.js +0 -117
- package/fjs/media/html/proof.f.d.ts +0 -16
- package/fjs/media/html/proof.f.js +0 -65
- package/fjs/media/json/module.f.d.ts +0 -64
- package/fjs/media/json/module.f.js +0 -109
- package/fjs/media/json/parser/module.f.d.ts +0 -21
- package/fjs/media/json/parser/module.f.js +0 -194
- package/fjs/media/json/parser/proof.f.d.ts +0 -5
- package/fjs/media/json/parser/proof.f.js +0 -314
- package/fjs/media/json/proof.f.js +0 -98
- package/fjs/media/json/schema/module.f.d.ts +0 -78
- package/fjs/media/json/schema/module.f.js +0 -96
- package/fjs/media/json/schema/proof.f.d.ts +0 -36
- package/fjs/media/json/schema/proof.f.js +0 -83
- package/fjs/media/json/serializer/module.f.d.ts +0 -28
- package/fjs/media/json/serializer/module.f.js +0 -73
- package/fjs/media/json/serializer/proof.f.js +0 -94
- package/fjs/media/json/tokenizer/module.f.d.ts +0 -15
- package/fjs/media/json/tokenizer/module.f.js +0 -63
- package/fjs/media/json/tokenizer/proof.f.d.ts +0 -5
- package/fjs/media/json/tokenizer/proof.f.js +0 -417
- package/fjs/media/module.f.d.ts +0 -119
- package/fjs/media/module.f.js +0 -88
- package/fjs/media/nix/module.f.d.ts +0 -30
- package/fjs/media/nix/module.f.js +0 -166
- package/fjs/media/nix/proof.f.d.ts +0 -32
- package/fjs/media/nix/proof.f.js +0 -127
- package/fjs/media/proof.f.d.ts +0 -19
- package/fjs/media/proof.f.js +0 -127
- package/fjs/media/revision/module.f.d.ts +0 -94
- package/fjs/media/revision/module.f.js +0 -143
- package/fjs/media/revision/proof.f.d.ts +0 -42
- package/fjs/media/revision/proof.f.js +0 -190
- package/fjs/media/type/module.f.d.ts +0 -135
- package/fjs/media/type/module.f.js +0 -231
- package/fjs/media/type/proof.f.d.ts +0 -40
- package/fjs/media/type/proof.f.js +0 -213
- package/fjs/module.d.ts +0 -2
- package/fjs/module.f.d.ts +0 -2
- package/fjs/module.f.js +0 -50
- package/fjs/module.js +0 -4
- package/fjs/path/module.f.d.ts +0 -46
- package/fjs/path/module.f.js +0 -71
- package/fjs/path/proof.f.js +0 -119
- package/fjs/proof.f.d.ts +0 -9
- package/fjs/proof.f.js +0 -38
- package/fjs/protocol/json_rpc/module.f.d.ts +0 -114
- package/fjs/protocol/json_rpc/module.f.js +0 -89
- package/fjs/protocol/json_rpc/proof.f.d.ts +0 -35
- package/fjs/protocol/json_rpc/proof.f.js +0 -68
- package/fjs/protocol/mcp/module.f.d.ts +0 -239
- package/fjs/protocol/mcp/module.f.js +0 -272
- package/fjs/protocol/mcp/proof.f.d.ts +0 -34
- package/fjs/protocol/mcp/proof.f.js +0 -208
- package/fjs/protocol/mcp/stdio/module.f.d.ts +0 -47
- package/fjs/protocol/mcp/stdio/module.f.js +0 -78
- package/fjs/protocol/mcp/stdio/proof.f.d.ts +0 -13
- package/fjs/protocol/mcp/stdio/proof.f.js +0 -143
- package/fjs/sul/id/module.f.d.ts +0 -33
- package/fjs/sul/id/module.f.js +0 -93
- package/fjs/sul/id/proof.f.js +0 -61
- package/fjs/sul/level/hash/module.f.d.ts +0 -38
- package/fjs/sul/level/hash/module.f.js +0 -43
- package/fjs/sul/level/hash/proof.f.d.ts +0 -13
- package/fjs/sul/level/hash/proof.f.js +0 -112
- package/fjs/sul/level/literal/module.f.d.ts +0 -64
- package/fjs/sul/level/literal/module.f.js +0 -88
- package/fjs/sul/level/literal/proof.f.d.ts +0 -12
- package/fjs/sul/level/literal/proof.f.js +0 -714
- package/fjs/sul/module.f.d.ts +0 -23
- package/fjs/sul/module.f.js +0 -46
- package/fjs/sul/proof.f.d.ts +0 -9
- package/fjs/sul/proof.f.js +0 -47
- package/fjs/text/ascii/module.f.d.ts +0 -136
- package/fjs/text/ascii/module.f.js +0 -154
- package/fjs/text/ascii/proof.f.d.ts +0 -6
- package/fjs/text/ascii/proof.f.js +0 -14
- package/fjs/text/code_point/module.f.d.ts +0 -65
- package/fjs/text/code_point/module.f.js +0 -103
- package/fjs/text/code_point/proof.f.d.ts +0 -8
- package/fjs/text/code_point/proof.f.js +0 -72
- package/fjs/text/module.f.d.ts +0 -40
- package/fjs/text/module.f.js +0 -43
- package/fjs/text/proof.f.d.ts +0 -10
- package/fjs/text/proof.f.js +0 -44
- package/fjs/text/sgr/module.f.d.ts +0 -53
- package/fjs/text/sgr/module.f.js +0 -63
- package/fjs/text/sgr/proof.f.js +0 -33
- package/fjs/text/utf16/module.f.d.ts +0 -161
- package/fjs/text/utf16/module.f.js +0 -311
- package/fjs/text/utf16/proof.f.d.ts +0 -10
- package/fjs/text/utf16/proof.f.js +0 -144
- package/fjs/text/utf8/module.f.d.ts +0 -83
- package/fjs/text/utf8/module.f.js +0 -247
- package/fjs/text/utf8/proof.f.js +0 -217
- package/fjs/types/array/module.f.d.ts +0 -49
- package/fjs/types/array/module.f.js +0 -42
- package/fjs/types/array/proof.f.js +0 -92
- package/fjs/types/bigfloat/module.f.d.ts +0 -6
- package/fjs/types/bigfloat/module.f.js +0 -69
- package/fjs/types/bigfloat/proof.f.d.ts +0 -5
- package/fjs/types/bigfloat/proof.f.js +0 -217
- package/fjs/types/bigint/module.f.d.ts +0 -172
- package/fjs/types/bigint/module.f.js +0 -251
- package/fjs/types/bigint/proof.f.d.ts +0 -37
- package/fjs/types/bigint/proof.f.js +0 -400
- package/fjs/types/bit_vec/module.f.d.ts +0 -302
- package/fjs/types/bit_vec/module.f.js +0 -375
- package/fjs/types/bit_vec/proof.f.d.ts +0 -65
- package/fjs/types/bit_vec/proof.f.js +0 -465
- package/fjs/types/btree/find/module.f.d.ts +0 -25
- package/fjs/types/btree/find/module.f.js +0 -80
- package/fjs/types/btree/find/proof.f.d.ts +0 -3
- package/fjs/types/btree/find/proof.f.js +0 -108
- package/fjs/types/btree/module.f.d.ts +0 -9
- package/fjs/types/btree/module.f.js +0 -33
- package/fjs/types/btree/proof.f.d.ts +0 -13
- package/fjs/types/btree/proof.f.js +0 -64
- package/fjs/types/btree/remove/module.f.d.ts +0 -14
- package/fjs/types/btree/remove/module.f.js +0 -186
- package/fjs/types/btree/remove/proof.f.d.ts +0 -9
- package/fjs/types/btree/remove/proof.f.js +0 -484
- package/fjs/types/btree/set/module.f.d.ts +0 -8
- package/fjs/types/btree/set/module.f.js +0 -128
- package/fjs/types/btree/set/proof.f.d.ts +0 -1
- package/fjs/types/btree/set/proof.f.js +0 -368
- package/fjs/types/btree/types/module.f.d.ts +0 -23
- package/fjs/types/btree/types/module.f.js +0 -9
- package/fjs/types/byte_set/module.f.d.ts +0 -16
- package/fjs/types/byte_set/module.f.js +0 -30
- package/fjs/types/byte_set/proof.f.d.ts +0 -11
- package/fjs/types/byte_set/proof.f.js +0 -79
- package/fjs/types/function/compare/module.f.d.ts +0 -49
- package/fjs/types/function/compare/module.f.js +0 -51
- package/fjs/types/function/compare/proof.f.js +0 -47
- package/fjs/types/function/module.f.d.ts +0 -28
- package/fjs/types/function/module.f.js +0 -19
- package/fjs/types/function/operator/module.f.d.ts +0 -48
- package/fjs/types/function/operator/module.f.js +0 -16
- package/fjs/types/function/operator/proof.f.js +0 -53
- package/fjs/types/function/proof.f.js +0 -10
- package/fjs/types/list/module.f.d.ts +0 -75
- package/fjs/types/list/module.f.js +0 -190
- package/fjs/types/list/proof.f.d.ts +0 -31
- package/fjs/types/list/proof.f.js +0 -330
- package/fjs/types/map/module.f.d.ts +0 -2
- package/fjs/types/map/module.f.js +0 -22
- package/fjs/types/map/proof.f.js +0 -22
- package/fjs/types/nibble_set/module.f.d.ts +0 -27
- package/fjs/types/nibble_set/module.f.js +0 -25
- package/fjs/types/nibble_set/proof.f.js +0 -60
- package/fjs/types/nominal/module.f.d.ts +0 -22
- package/fjs/types/nominal/module.f.js +0 -13
- package/fjs/types/nominal/proof.f.d.ts +0 -4
- package/fjs/types/nominal/proof.f.js +0 -48
- package/fjs/types/nullable/module.f.d.ts +0 -21
- package/fjs/types/nullable/module.f.js +0 -29
- package/fjs/types/nullable/proof.f.d.ts +0 -1
- package/fjs/types/nullable/proof.f.js +0 -29
- package/fjs/types/number/module.f.d.ts +0 -16
- package/fjs/types/number/module.f.js +0 -30
- package/fjs/types/number/proof.f.js +0 -124
- package/fjs/types/object/module.f.d.ts +0 -54
- package/fjs/types/object/module.f.js +0 -25
- package/fjs/types/object/proof.f.d.ts +0 -4
- package/fjs/types/object/proof.f.js +0 -14
- package/fjs/types/option/module.f.js +0 -6
- package/fjs/types/ordered_map/module.f.d.ts +0 -17
- package/fjs/types/ordered_map/module.f.js +0 -22
- package/fjs/types/ordered_map/proof.f.d.ts +0 -5
- package/fjs/types/ordered_map/proof.f.js +0 -73
- package/fjs/types/patricia_trie/module.f.d.ts +0 -25
- package/fjs/types/patricia_trie/module.f.js +0 -35
- package/fjs/types/patricia_trie/proof.f.d.ts +0 -13
- package/fjs/types/patricia_trie/proof.f.js +0 -121
- package/fjs/types/phantom/module.f.js +0 -11
- package/fjs/types/prime_field/module.f.d.ts +0 -62
- package/fjs/types/prime_field/module.f.js +0 -112
- package/fjs/types/prime_field/proof.f.js +0 -128
- package/fjs/types/range/module.f.d.ts +0 -8
- package/fjs/types/range/module.f.js +0 -2
- package/fjs/types/range/proof.f.d.ts +0 -1
- package/fjs/types/range/proof.f.js +0 -9
- package/fjs/types/range_map/module.f.d.ts +0 -92
- package/fjs/types/range_map/module.f.js +0 -82
- package/fjs/types/range_map/proof.f.d.ts +0 -6
- package/fjs/types/range_map/proof.f.js +0 -151
- package/fjs/types/range_set/module.f.d.ts +0 -5
- package/fjs/types/range_set/module.f.js +0 -16
- package/fjs/types/range_set/proof.f.d.ts +0 -1
- package/fjs/types/range_set/proof.f.js +0 -19
- package/fjs/types/result/module.d.ts +0 -3
- package/fjs/types/result/module.f.d.ts +0 -61
- package/fjs/types/result/module.f.js +0 -54
- package/fjs/types/result/module.js +0 -19
- package/fjs/types/result/proof.f.d.ts +0 -12
- package/fjs/types/result/proof.f.js +0 -31
- package/fjs/types/rtti/common/module.f.d.ts +0 -121
- package/fjs/types/rtti/common/module.f.js +0 -94
- package/fjs/types/rtti/common/proof.f.d.ts +0 -8
- package/fjs/types/rtti/common/proof.f.js +0 -51
- package/fjs/types/rtti/module.f.d.ts +0 -75
- package/fjs/types/rtti/module.f.js +0 -34
- package/fjs/types/rtti/parse/module.f.d.ts +0 -36
- package/fjs/types/rtti/parse/module.f.js +0 -114
- package/fjs/types/rtti/parse/proof.f.d.ts +0 -115
- package/fjs/types/rtti/parse/proof.f.js +0 -334
- package/fjs/types/rtti/proof.f.d.ts +0 -5
- package/fjs/types/rtti/proof.f.js +0 -16
- package/fjs/types/rtti/ts/module.f.d.ts +0 -118
- package/fjs/types/rtti/ts/module.f.js +0 -59
- package/fjs/types/rtti/ts/proof.f.d.ts +0 -59
- package/fjs/types/rtti/ts/proof.f.js +0 -75
- package/fjs/types/rtti/validate/module.f.d.ts +0 -4
- package/fjs/types/rtti/validate/module.f.js +0 -74
- package/fjs/types/rtti/validate/proof.f.d.ts +0 -118
- package/fjs/types/rtti/validate/proof.f.js +0 -349
- package/fjs/types/sorted_list/module.f.d.ts +0 -26
- package/fjs/types/sorted_list/module.f.js +0 -51
- package/fjs/types/sorted_list/proof.f.d.ts +0 -4
- package/fjs/types/sorted_list/proof.f.js +0 -46
- package/fjs/types/sorted_set/module.f.d.ts +0 -33
- package/fjs/types/sorted_set/module.f.js +0 -5
- package/fjs/types/sorted_set/proof.f.d.ts +0 -6
- package/fjs/types/sorted_set/proof.f.js +0 -67
- package/fjs/types/string/module.f.d.ts +0 -24
- package/fjs/types/string/module.f.js +0 -35
- package/fjs/types/string/proof.f.js +0 -77
- package/fjs/types/string_set/module.f.d.ts +0 -30
- package/fjs/types/string_set/module.f.js +0 -37
- package/fjs/types/string_set/proof.f.js +0 -43
- package/fjs/types/ts/module.f.d.ts +0 -23
- package/fjs/types/ts/module.f.js +0 -27
- package/fjs/types/ts/proof.f.d.ts +0 -38
- package/fjs/types/ts/proof.f.js +0 -86
- package/fjs/types/uint8array/module.f.d.ts +0 -13
- package/fjs/types/uint8array/module.f.js +0 -34
- package/fjs/types/uint8array/proof.f.d.ts +0 -17
- package/fjs/types/uint8array/proof.f.js +0 -64
- package/fjs/website/module.f.d.ts +0 -3
- package/fjs/website/module.f.js +0 -14
- package/fjs/website/proof.f.js +0 -13
- package/nanvm-lib/tests/proof.f.d.ts +0 -122
- package/nanvm-lib/tests/proof.f.js +0 -330
- package/todo/031-json.f.d.ts +0 -1
- package/todo/031-json.f.js +0 -241
- package/todo/proof.f.d.ts +0 -20
- package/todo/proof.f.js +0 -62
- /package/fjs/{base_n/proof.f.d.ts → basen/proof.f.d.mts} +0 -0
- /package/fjs/bnf/token_symbol/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/ci/node/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/crypto/hmac/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/crypto/pow/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/crypto/vdf/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/dev/package_json/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/ast/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/examples/{input.f.d.ts → input.f.d.mts} +0 -0
- /package/fjs/djs/examples/{m.f.d.ts → m.f.d.mts} +0 -0
- /package/fjs/djs/serializer/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/transpiler/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/fsc/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/json/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/json/serializer/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/path/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/sul/id/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/utf8/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/array/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/{emergent_testing/all.test.d.ts → types/bigint/benchmark.d.mts} +0 -0
- /package/fjs/{basen/base128/proof.f.d.ts → types/function/compare/proof.f.d.mts} +0 -0
- /package/fjs/types/function/operator/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/function/{compare/proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/map/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/nibble_set/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/{text/sgr/proof.f.d.ts → types/nullable/proof.f.d.mts} +0 -0
- /package/fjs/types/number/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/option/{module.f.d.ts → types.d.ts} +0 -0
- /package/fjs/types/phantom/{module.f.d.ts → types.d.ts} +0 -0
- /package/fjs/types/prime_field/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/{function/proof.f.d.ts → range/proof.f.d.mts} +0 -0
- /package/fjs/types/string/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/string_set/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/website/{proof.f.d.ts → proof.f.d.mts} +0 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* rtti schemas describing the JSON data model: `primitive`, `unknown`,
|
|
3
|
+
* `object`, and `array`.
|
|
4
|
+
*
|
|
5
|
+
* The three composite schemas are mutually recursive — `unknown` names
|
|
6
|
+
* `object` and `array`, both of which are built from `unknown` — so `unknown`
|
|
7
|
+
* carries an explicit `@type` that cross-references its neighbours through
|
|
8
|
+
* `typeof`. That spelling is deliberate: `@type {const}` also type-checks here,
|
|
9
|
+
* but leaves declaration emit no name for the recursive positions, so it
|
|
10
|
+
* inlines the structure, gives up at depth, and degrades the emitted `.d.mts`
|
|
11
|
+
* to `any`. See AGENTS.md §6.2.
|
|
12
|
+
*
|
|
13
|
+
* The TypeScript counterparts live in the sibling
|
|
14
|
+
* [`../types.ts`](../types.ts), which pins them against these schemas with
|
|
15
|
+
* `Assert<Equal<Unknown, Ts<typeof unknown>>>`.
|
|
16
|
+
*
|
|
17
|
+
* @module
|
|
18
|
+
*/
|
|
19
|
+
/** rtti schema matching any JSON primitive: `null`, `boolean`, `number`, or `string`. */
|
|
20
|
+
export declare const primitive: import("../../../types/rtti/types.ts").Or<[null, import("../../../types/rtti/types.ts")._Type0<"boolean">, import("../../../types/rtti/types.ts")._Type0<"number">, import("../../../types/rtti/types.ts")._Type0<"string">]>;
|
|
21
|
+
/**
|
|
22
|
+
* rtti schema matching any JSON value: a primitive, an array of JSON values,
|
|
23
|
+
* or an object whose values are JSON values. Self-referential via a thunk;
|
|
24
|
+
* rtti instantiates array/record item validators lazily so recursion terminates
|
|
25
|
+
* on acyclic input.
|
|
26
|
+
*
|
|
27
|
+
* A struct field typed `unknown` is **required when present** — unlike rtti
|
|
28
|
+
* core's `unknown`, the JSON `unknown` excludes `undefined`.
|
|
29
|
+
*
|
|
30
|
+
* @type {() => readonly['or', typeof primitive, typeof object, typeof array]}
|
|
31
|
+
*/
|
|
32
|
+
export declare const unknown: () => readonly ['or', typeof primitive, typeof object, typeof array];
|
|
33
|
+
/**
|
|
34
|
+
* rtti schema matching a JSON object: `{ readonly [k: string]?: Unknown }`.
|
|
35
|
+
*/
|
|
36
|
+
export declare const object: import("../../../types/rtti/types.ts").Type1<"record", () => readonly ['or', typeof primitive, typeof object, typeof array]>;
|
|
37
|
+
/** rtti schema matching a JSON array: `readonly Unknown[]`. */
|
|
38
|
+
export declare const array: import("../../../types/rtti/types.ts").Type1<"array", () => readonly ['or', typeof primitive, typeof object, typeof array]>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* rtti schemas describing the JSON data model: `primitive`, `unknown`,
|
|
3
|
+
* `object`, and `array`.
|
|
4
|
+
*
|
|
5
|
+
* The three composite schemas are mutually recursive — `unknown` names
|
|
6
|
+
* `object` and `array`, both of which are built from `unknown` — so `unknown`
|
|
7
|
+
* carries an explicit `@type` that cross-references its neighbours through
|
|
8
|
+
* `typeof`. That spelling is deliberate: `@type {const}` also type-checks here,
|
|
9
|
+
* but leaves declaration emit no name for the recursive positions, so it
|
|
10
|
+
* inlines the structure, gives up at depth, and degrades the emitted `.d.mts`
|
|
11
|
+
* to `any`. See AGENTS.md §6.2.
|
|
12
|
+
*
|
|
13
|
+
* The TypeScript counterparts live in the sibling
|
|
14
|
+
* [`../types.ts`](../types.ts), which pins them against these schemas with
|
|
15
|
+
* `Assert<Equal<Unknown, Ts<typeof unknown>>>`.
|
|
16
|
+
*
|
|
17
|
+
* @module
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import {
|
|
21
|
+
boolean as rttiBoolean,
|
|
22
|
+
number as rttiNumber,
|
|
23
|
+
string as rttiString,
|
|
24
|
+
or,
|
|
25
|
+
record,
|
|
26
|
+
array as rttiArray
|
|
27
|
+
} from '../../../types/rtti/module.f.mjs'
|
|
28
|
+
|
|
29
|
+
/** rtti schema matching any JSON primitive: `null`, `boolean`, `number`, or `string`. */
|
|
30
|
+
export const primitive = or(null, rttiBoolean, rttiNumber, rttiString)
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* rtti schema matching any JSON value: a primitive, an array of JSON values,
|
|
34
|
+
* or an object whose values are JSON values. Self-referential via a thunk;
|
|
35
|
+
* rtti instantiates array/record item validators lazily so recursion terminates
|
|
36
|
+
* on acyclic input.
|
|
37
|
+
*
|
|
38
|
+
* A struct field typed `unknown` is **required when present** — unlike rtti
|
|
39
|
+
* core's `unknown`, the JSON `unknown` excludes `undefined`.
|
|
40
|
+
*
|
|
41
|
+
* @type {() => readonly['or', typeof primitive, typeof object, typeof array]}
|
|
42
|
+
*/
|
|
43
|
+
export const unknown = () => ['or', primitive, object, array]
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* rtti schema matching a JSON object: `{ readonly [k: string]?: Unknown }`.
|
|
47
|
+
*/
|
|
48
|
+
export const object = record(unknown)
|
|
49
|
+
|
|
50
|
+
/** rtti schema matching a JSON array: `readonly Unknown[]`. */
|
|
51
|
+
export const array = rttiArray(unknown)
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Proof for the JSON rtti schemas.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { ValidateE } from '../../../types/rtti/common/types.ts'
|
|
7
|
+
* @import { Unknown } from '../../../types/rtti/ts/types.ts'
|
|
8
|
+
*/
|
|
9
|
+
export declare const proof: {
|
|
10
|
+
primitive: {
|
|
11
|
+
accepts: () => void;
|
|
12
|
+
rejectsComposite: () => void;
|
|
13
|
+
};
|
|
14
|
+
object: {
|
|
15
|
+
accepts: () => void;
|
|
16
|
+
nested: () => void;
|
|
17
|
+
rejectsNonObject: () => void;
|
|
18
|
+
};
|
|
19
|
+
array: {
|
|
20
|
+
accepts: () => void;
|
|
21
|
+
nested: () => void;
|
|
22
|
+
rejectsNonArray: () => void;
|
|
23
|
+
};
|
|
24
|
+
unknown: {
|
|
25
|
+
acceptsEveryArm: () => void;
|
|
26
|
+
recurses: () => void;
|
|
27
|
+
rejectsUndefined: () => void;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Proof for the JSON rtti schemas.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { ValidateE } from '../../../types/rtti/common/types.ts'
|
|
7
|
+
* @import { Unknown } from '../../../types/rtti/ts/types.ts'
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { assertEq } from '../../../asserts/module.f.mjs'
|
|
11
|
+
import { validate } from '../../../types/rtti/validate/module.f.mjs'
|
|
12
|
+
import { primitive, unknown, object, array } from './module.f.mjs'
|
|
13
|
+
|
|
14
|
+
// Reduces a validation to its `ok`/`error` tag: these schemas are about what is
|
|
15
|
+
// accepted, not about the payload, which validation returns unchanged. The
|
|
16
|
+
// erased `ValidateE` keeps the shared helper from re-instantiating each
|
|
17
|
+
// schema's deep recursive result type (TS2589).
|
|
18
|
+
/** @type {(v: ValidateE) => (value: Unknown) => string} */
|
|
19
|
+
const tag = v => value => v(value)[0]
|
|
20
|
+
|
|
21
|
+
const primitiveAccepts = tag(validate(primitive))
|
|
22
|
+
const unknownAccepts = tag(validate(unknown))
|
|
23
|
+
const objectAccepts = tag(validate(object))
|
|
24
|
+
const arrayAccepts = tag(validate(array))
|
|
25
|
+
|
|
26
|
+
export const proof = {
|
|
27
|
+
primitive: {
|
|
28
|
+
accepts: () => {
|
|
29
|
+
assertEq(primitiveAccepts(null), 'ok')
|
|
30
|
+
assertEq(primitiveAccepts(true), 'ok')
|
|
31
|
+
assertEq(primitiveAccepts(0), 'ok')
|
|
32
|
+
assertEq(primitiveAccepts(''), 'ok')
|
|
33
|
+
},
|
|
34
|
+
rejectsComposite: () => {
|
|
35
|
+
assertEq(primitiveAccepts([]), 'error')
|
|
36
|
+
assertEq(primitiveAccepts({}), 'error')
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
object: {
|
|
40
|
+
accepts: () => {
|
|
41
|
+
assertEq(objectAccepts({}), 'ok')
|
|
42
|
+
assertEq(objectAccepts({ a: 1, b: 'two', c: null }), 'ok')
|
|
43
|
+
},
|
|
44
|
+
// A record schema descends into its values, so a bad leaf anywhere in
|
|
45
|
+
// the tree fails the whole object.
|
|
46
|
+
nested: () => {
|
|
47
|
+
assertEq(objectAccepts({ a: { b: [1, { c: null }] } }), 'ok')
|
|
48
|
+
},
|
|
49
|
+
rejectsNonObject: () => {
|
|
50
|
+
assertEq(objectAccepts(1), 'error')
|
|
51
|
+
assertEq(objectAccepts([]), 'error')
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
array: {
|
|
55
|
+
accepts: () => {
|
|
56
|
+
assertEq(arrayAccepts([]), 'ok')
|
|
57
|
+
assertEq(arrayAccepts([null, true, 2, 'three']), 'ok')
|
|
58
|
+
},
|
|
59
|
+
nested: () => {
|
|
60
|
+
assertEq(arrayAccepts([[{ a: [] }]]), 'ok')
|
|
61
|
+
},
|
|
62
|
+
rejectsNonArray: () => {
|
|
63
|
+
assertEq(arrayAccepts(1), 'error')
|
|
64
|
+
assertEq(arrayAccepts({}), 'error')
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
unknown: {
|
|
68
|
+
// `unknown` is the union of the three above, so it accepts every arm.
|
|
69
|
+
acceptsEveryArm: () => {
|
|
70
|
+
assertEq(unknownAccepts(null), 'ok')
|
|
71
|
+
assertEq(unknownAccepts(false), 'ok')
|
|
72
|
+
assertEq(unknownAccepts(1), 'ok')
|
|
73
|
+
assertEq(unknownAccepts('s'), 'ok')
|
|
74
|
+
assertEq(unknownAccepts([]), 'ok')
|
|
75
|
+
assertEq(unknownAccepts({}), 'ok')
|
|
76
|
+
},
|
|
77
|
+
// The thunk closes the recursion: an arbitrarily deep acyclic value
|
|
78
|
+
// terminates because array/record item validators instantiate lazily.
|
|
79
|
+
recurses: () => {
|
|
80
|
+
assertEq(unknownAccepts({ a: [{ b: [[{ c: 'd' }]] }] }), 'ok')
|
|
81
|
+
},
|
|
82
|
+
rejectsUndefined: () => {
|
|
83
|
+
assertEq(unknownAccepts(undefined), 'error')
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts an rtti schema to a JSON Schema (draft 2020-12) object.
|
|
3
|
+
*
|
|
4
|
+
* {@link toJsonSchema} routes through the serializable RTTI data form
|
|
5
|
+
* (`fjs/types/rtti/data`): `thunk RTTI → toData → dataToJsonSchema`. The data
|
|
6
|
+
* form is a finite graph, so recursive schemas — which the thunk graph
|
|
7
|
+
* represents as self-referencing functions with no leaves — terminate:
|
|
8
|
+
* every named rule is emitted exactly once under `$defs` and every graph
|
|
9
|
+
* edge becomes a local `$ref`.
|
|
10
|
+
*
|
|
11
|
+
* Graph discovery, canonical identity, and definition naming belong to the
|
|
12
|
+
* RTTI data layer; this module only translates the finite graph, so the
|
|
13
|
+
* output is deterministic for equal canonical data: `anyOf` members follow
|
|
14
|
+
* the data form's kind order (`null`, `undefined`, booleans, numbers,
|
|
15
|
+
* strings, bigints, arrays, objects), and `properties`/`required` follow
|
|
16
|
+
* its sorted key order.
|
|
17
|
+
*
|
|
18
|
+
* @module
|
|
19
|
+
*
|
|
20
|
+
* @import { Type as RttiType } from '../../../types/rtti/types.ts'
|
|
21
|
+
* @import { ArraySet, Data, KindSet, Node, ObjectSet, RuleSet, UnionSet } from '../../../types/rtti/data/types.ts'
|
|
22
|
+
* @import { Ts } from '../../../types/rtti/ts/types.ts'
|
|
23
|
+
* @import { Phantom } from '../../../types/phantom/types.ts'
|
|
24
|
+
*/
|
|
25
|
+
import type { Type as RttiType } from '../../../types/rtti/types.ts';
|
|
26
|
+
import type { Data } from '../../../types/rtti/data/types.ts';
|
|
27
|
+
import type { Ts } from '../../../types/rtti/ts/types.ts';
|
|
28
|
+
import type { Phantom } from '../../../types/phantom/types.ts';
|
|
29
|
+
/** @type {() => readonly ['const', typeof unknownConst]} */
|
|
30
|
+
declare const unknownThunk: () => readonly ['const', typeof unknownConst];
|
|
31
|
+
/**
|
|
32
|
+
* rtti schema for a JSON Schema (draft 2020-12) document.
|
|
33
|
+
* @type {Phantom<typeof unknownThunk, _UnknownConst>}
|
|
34
|
+
*/
|
|
35
|
+
export declare const unknown: Phantom<typeof unknownThunk, _UnknownConst>;
|
|
36
|
+
export type Unknown = Ts<typeof unknown>;
|
|
37
|
+
/** A JSON Schema (draft 2020-12) document — the subset of keywords that `toJsonSchema` emits. */
|
|
38
|
+
/** @typedef {Ts<typeof unknown>} Unknown */
|
|
39
|
+
declare const unknownConst: {
|
|
40
|
+
readonly $schema: import("../../../types/rtti/types.ts").Or<readonly [import("../../../types/rtti/types.ts")._Type0<"string">, undefined]>;
|
|
41
|
+
readonly $ref: import("../../../types/rtti/types.ts").Or<readonly [import("../../../types/rtti/types.ts")._Type0<"string">, undefined]>;
|
|
42
|
+
readonly $defs: import("../../../types/rtti/types.ts").Or<readonly [import("../../../types/rtti/types.ts").Type1<"record", Phantom<() => readonly ['const', typeof unknownConst], _UnknownConst>>, undefined]>;
|
|
43
|
+
readonly type: import("../../../types/rtti/types.ts").Or<["boolean", "number", "string", "integer", "array", "object", undefined]>;
|
|
44
|
+
readonly const: import("../../../types/rtti/types.ts").Or<readonly [() => readonly ['or', typeof import("../rtti/module.f.mjs").primitive, typeof import("../rtti/module.f.mjs").object, typeof import("../rtti/module.f.mjs").array], undefined]>;
|
|
45
|
+
readonly not: import("../../../types/rtti/types.ts").Or<readonly [Phantom<() => readonly ['const', typeof unknownConst], _UnknownConst>, undefined]>;
|
|
46
|
+
readonly anyOf: import("../../../types/rtti/types.ts").Or<readonly [import("../../../types/rtti/types.ts").Type1<"array", Phantom<() => readonly ['const', typeof unknownConst], _UnknownConst>>, undefined]>;
|
|
47
|
+
readonly items: import("../../../types/rtti/types.ts").Or<[Phantom<() => readonly ['const', typeof unknownConst], _UnknownConst>, false, undefined]>;
|
|
48
|
+
readonly prefixItems: import("../../../types/rtti/types.ts").Or<readonly [import("../../../types/rtti/types.ts").Type1<"array", Phantom<() => readonly ['const', typeof unknownConst], _UnknownConst>>, undefined]>;
|
|
49
|
+
readonly minItems: import("../../../types/rtti/types.ts").Or<readonly [import("../../../types/rtti/types.ts")._Type0<"number">, undefined]>;
|
|
50
|
+
readonly properties: import("../../../types/rtti/types.ts").Or<readonly [import("../../../types/rtti/types.ts").Type1<"record", Phantom<() => readonly ['const', typeof unknownConst], _UnknownConst>>, undefined]>;
|
|
51
|
+
readonly required: import("../../../types/rtti/types.ts").Or<readonly [import("../../../types/rtti/types.ts").Type1<"array", import("../../../types/rtti/types.ts")._Type0<"string">>, undefined]>;
|
|
52
|
+
readonly additionalProperties: import("../../../types/rtti/types.ts").Or<readonly [Phantom<() => readonly ['const', typeof unknownConst], _UnknownConst>, undefined]>;
|
|
53
|
+
};
|
|
54
|
+
export type _UnknownConst = {
|
|
55
|
+
readonly $schema?: Ts<typeof unknownConst.$schema>;
|
|
56
|
+
readonly $ref?: Ts<typeof unknownConst.$ref>;
|
|
57
|
+
readonly $defs?: Ts<typeof unknownConst.$defs>;
|
|
58
|
+
readonly type?: Ts<typeof unknownConst.type>;
|
|
59
|
+
readonly const?: Ts<typeof unknownConst.const>;
|
|
60
|
+
readonly not?: Ts<typeof unknownConst.not>;
|
|
61
|
+
readonly anyOf?: Ts<typeof unknownConst.anyOf>;
|
|
62
|
+
readonly items?: Ts<typeof unknownConst.items>;
|
|
63
|
+
readonly prefixItems?: Ts<typeof unknownConst.prefixItems>;
|
|
64
|
+
readonly minItems?: Ts<typeof unknownConst.minItems>;
|
|
65
|
+
readonly properties?: Ts<typeof unknownConst.properties>;
|
|
66
|
+
readonly required?: Ts<typeof unknownConst.required>;
|
|
67
|
+
readonly additionalProperties?: Ts<typeof unknownConst.additionalProperties>;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Converts a serializable RTTI {@link Data} (from `toData`) to a JSON Schema
|
|
71
|
+
* (draft 2020-12) object.
|
|
72
|
+
*
|
|
73
|
+
* Every named rule is emitted exactly once under `$defs` and each reference
|
|
74
|
+
* becomes a local `$ref` — self- and mutual recursion terminate, and the
|
|
75
|
+
* root itself is a `$ref` when the entry is a named definition. Definition
|
|
76
|
+
* names come from the data form (deterministic for equal canonical data)
|
|
77
|
+
* and are JSON Pointer-escaped, then percent-encoded, for the `$ref`
|
|
78
|
+
* fragment. A reference naming a missing definition panics.
|
|
79
|
+
*
|
|
80
|
+
* @type {(data: Data) => Unknown}
|
|
81
|
+
*/
|
|
82
|
+
export declare const dataToJsonSchema: (data: Data) => Unknown;
|
|
83
|
+
/**
|
|
84
|
+
* Converts an rtti `Type` to a JSON Schema (draft 2020-12) object, through
|
|
85
|
+
* the canonical data form: `toData` first, then {@link dataToJsonSchema}.
|
|
86
|
+
*
|
|
87
|
+
* | rtti | JSON Schema |
|
|
88
|
+
* |-----------------------------------------------|-------------------------------------------------------------------------------------|
|
|
89
|
+
* | `boolean` / `number` / `string` | `{ "type": "..." }` |
|
|
90
|
+
* | `bigint` | `{ "type": "integer" }` (lossy; JSON integers are IEEE-754 doubles) |
|
|
91
|
+
* | `unknown` | `{}` (always-true schema) |
|
|
92
|
+
* | `never` / `or()` | `{ "not": {} }` (no JSON value satisfies this) |
|
|
93
|
+
* | primitive const (`42`, `'x'`, `null`) | `{ "const": <value> }` |
|
|
94
|
+
* | `or(true, false)` | `{ "type": "boolean" }` (the union normalizes to the whole kind) |
|
|
95
|
+
* | `bigint` const | `{ "const": Number(value) }` (lossy for \|value\| > MAX_SAFE_INTEGER) |
|
|
96
|
+
* | `undefined` const | `{ "not": {} }` |
|
|
97
|
+
* | struct `{ a: T, … }` | `{ "type": "object", "properties": { "a": …T… }, "required": [non-optional keys] }` |
|
|
98
|
+
* | tuple `[A, B]` | `{ "type": "array", "prefixItems": […A…, …B…], "minItems": 2, "items": false }` |
|
|
99
|
+
* | `array(T)` | `{ "type": "array", "items": …T… }` |
|
|
100
|
+
* | `record(T)` | `{ "type": "object", "additionalProperties": …T… }` |
|
|
101
|
+
* | `or(...types)` | `{ "anyOf": […each…] }`, normalized and in canonical kind order |
|
|
102
|
+
* | recursive schema | `{ "$ref": "#/$defs/<name>", "$defs": { "<name>": … } }` |
|
|
103
|
+
*
|
|
104
|
+
* The union rows follow the data form's normalization: operands are merged
|
|
105
|
+
* kind-wise, literals covered by their whole kind are absorbed
|
|
106
|
+
* (`or(42, number)` is all numbers), subsumed patterns are dropped, and
|
|
107
|
+
* duplicates collapse — so structurally different but equivalent thunk
|
|
108
|
+
* schemas produce the same JSON Schema.
|
|
109
|
+
*
|
|
110
|
+
* @type {(rtti: RttiType) => Unknown}
|
|
111
|
+
*/
|
|
112
|
+
export declare const toJsonSchema: (rtti: RttiType) => Unknown;
|
|
113
|
+
export {};
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts an rtti schema to a JSON Schema (draft 2020-12) object.
|
|
3
|
+
*
|
|
4
|
+
* {@link toJsonSchema} routes through the serializable RTTI data form
|
|
5
|
+
* (`fjs/types/rtti/data`): `thunk RTTI → toData → dataToJsonSchema`. The data
|
|
6
|
+
* form is a finite graph, so recursive schemas — which the thunk graph
|
|
7
|
+
* represents as self-referencing functions with no leaves — terminate:
|
|
8
|
+
* every named rule is emitted exactly once under `$defs` and every graph
|
|
9
|
+
* edge becomes a local `$ref`.
|
|
10
|
+
*
|
|
11
|
+
* Graph discovery, canonical identity, and definition naming belong to the
|
|
12
|
+
* RTTI data layer; this module only translates the finite graph, so the
|
|
13
|
+
* output is deterministic for equal canonical data: `anyOf` members follow
|
|
14
|
+
* the data form's kind order (`null`, `undefined`, booleans, numbers,
|
|
15
|
+
* strings, bigints, arrays, objects), and `properties`/`required` follow
|
|
16
|
+
* its sorted key order.
|
|
17
|
+
*
|
|
18
|
+
* @module
|
|
19
|
+
*
|
|
20
|
+
* @import { Type as RttiType } from '../../../types/rtti/types.ts'
|
|
21
|
+
* @import { ArraySet, Data, KindSet, Node, ObjectSet, RuleSet, UnionSet } from '../../../types/rtti/data/types.ts'
|
|
22
|
+
* @import { Ts } from '../../../types/rtti/ts/types.ts'
|
|
23
|
+
* @import { Phantom } from '../../../types/phantom/types.ts'
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import { assert, assertNotNullish } from '../../../asserts/module.f.mjs'
|
|
27
|
+
import { at, definedEntries } from '../../../types/object/module.f.mjs'
|
|
28
|
+
import { array, number, option, or, record, string } from '../../../types/rtti/module.f.mjs'
|
|
29
|
+
import { cmp, toData, unitBit, unknown as top } from '../../../types/rtti/data/module.f.mjs'
|
|
30
|
+
import { unknown as jsonUnknown } from '../rtti/module.f.mjs'
|
|
31
|
+
|
|
32
|
+
/** @type {() => readonly ['const', typeof unknownConst]} */
|
|
33
|
+
const unknownThunk = () => ['const', unknownConst]
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* rtti schema for a JSON Schema (draft 2020-12) document.
|
|
37
|
+
* @type {Phantom<typeof unknownThunk, _UnknownConst>}
|
|
38
|
+
*/
|
|
39
|
+
export const unknown = unknownThunk
|
|
40
|
+
|
|
41
|
+
/** A JSON Schema (draft 2020-12) document — the subset of keywords that `toJsonSchema` emits. */
|
|
42
|
+
/** @typedef {Ts<typeof unknown>} Unknown */
|
|
43
|
+
|
|
44
|
+
const unknownConst = /** @type {const} */ ({
|
|
45
|
+
$schema: option(string),
|
|
46
|
+
$ref: option(string),
|
|
47
|
+
$defs: option(record(unknown)),
|
|
48
|
+
type: or('boolean', 'number', 'string', 'integer', 'array', 'object', undefined),
|
|
49
|
+
const: option(jsonUnknown),
|
|
50
|
+
not: option(unknown),
|
|
51
|
+
anyOf: option(array(unknown)),
|
|
52
|
+
items: or(unknown, false, undefined),
|
|
53
|
+
prefixItems: option(array(unknown)),
|
|
54
|
+
minItems: option(number),
|
|
55
|
+
properties: option(record(unknown)),
|
|
56
|
+
required: option(array(string)),
|
|
57
|
+
additionalProperties: option(unknown),
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Hand-written base type used as the `$out` annotation on `unknown`.
|
|
62
|
+
*
|
|
63
|
+
* The `?` markers are required even though `Ts<>` already includes `undefined`
|
|
64
|
+
* in each field type. Without `?`, `Unknown = _UnknownConst` would require all
|
|
65
|
+
* 12 fields to be present in every object literal returned by `toJsonSchema`,
|
|
66
|
+
* because TypeScript distinguishes "field absent" (`?`) from "field present but
|
|
67
|
+
* undefined" (`T | undefined`). JSON Schema objects only include the fields
|
|
68
|
+
* they need, so all fields must be optional. `$defs` is an *open* map — an
|
|
69
|
+
* absent entry types as `undefined`, so missing-reference handling cannot be
|
|
70
|
+
* skipped.
|
|
71
|
+
* @typedef {{
|
|
72
|
+
* readonly $schema?: Ts<typeof unknownConst.$schema>
|
|
73
|
+
* readonly $ref?: Ts<typeof unknownConst.$ref>
|
|
74
|
+
* readonly $defs?: Ts<typeof unknownConst.$defs>
|
|
75
|
+
* readonly type?: Ts<typeof unknownConst.type>
|
|
76
|
+
* readonly const?: Ts<typeof unknownConst.const>
|
|
77
|
+
* readonly not?: Ts<typeof unknownConst.not>
|
|
78
|
+
* readonly anyOf?: Ts<typeof unknownConst.anyOf>
|
|
79
|
+
* readonly items?: Ts<typeof unknownConst.items>
|
|
80
|
+
* readonly prefixItems?: Ts<typeof unknownConst.prefixItems>
|
|
81
|
+
* readonly minItems?: Ts<typeof unknownConst.minItems>
|
|
82
|
+
* readonly properties?: Ts<typeof unknownConst.properties>
|
|
83
|
+
* readonly required?: Ts<typeof unknownConst.required>
|
|
84
|
+
* readonly additionalProperties?: Ts<typeof unknownConst.additionalProperties>
|
|
85
|
+
* }} _UnknownConst
|
|
86
|
+
*/
|
|
87
|
+
|
|
88
|
+
const nullBit = unitBit(null)
|
|
89
|
+
const undefinedBit = unitBit(undefined)
|
|
90
|
+
const falseBit = unitBit(false)
|
|
91
|
+
const trueBit = unitBit(true)
|
|
92
|
+
const booleanBits = falseBit | trueBit
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Encodes a definition name for use inside a local `$ref` URI fragment:
|
|
96
|
+
* JSON Pointer escaping first (`~` → `~0`, `/` → `~1`), then
|
|
97
|
+
* percent-encoding of the remaining code points for the URI-fragment path
|
|
98
|
+
* segment. The order matters: a literal name `%2F` must encode to `%252F`,
|
|
99
|
+
* so URI decoding restores the literal `%2F` segment instead of a `/` that
|
|
100
|
+
* JSON Pointer evaluation would then misread as a separator.
|
|
101
|
+
*
|
|
102
|
+
* @type {(name: string) => string}
|
|
103
|
+
*/
|
|
104
|
+
const refEncode = name => {
|
|
105
|
+
let result = ''
|
|
106
|
+
for (const c of name) {
|
|
107
|
+
result += c === '~' ? '~0' : c === '/' ? '~1' : encodeURIComponent(c)
|
|
108
|
+
}
|
|
109
|
+
return result
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* A local `$ref` to a named definition. A reference must name an existing
|
|
114
|
+
* definition — a dangling name is malformed data and panics. The lookup is
|
|
115
|
+
* own-property only, so a name inherited from `Object.prototype`
|
|
116
|
+
* (`toString`, `constructor`, …) is still rejected.
|
|
117
|
+
*
|
|
118
|
+
* @type {(rules: RuleSet) => (name: string) => Unknown}
|
|
119
|
+
*/
|
|
120
|
+
const refSchema = rules => name => {
|
|
121
|
+
assert(at(name)(rules) !== null, `missing definition: ${name}`)
|
|
122
|
+
return { $ref: `#/$defs/${refEncode(name)}` }
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/** @type {(rules: RuleSet) => (n: Node) => Unknown} */
|
|
126
|
+
const nodeSchema = rules => n =>
|
|
127
|
+
typeof n === 'string' ? refSchema(rules)(n) : unionSchema(rules)(n)
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* The schemas of one kind component: nothing when absent, the whole kind
|
|
131
|
+
* when `true`, one schema per member otherwise.
|
|
132
|
+
*
|
|
133
|
+
* @template T
|
|
134
|
+
* @param {KindSet<T> | undefined} k
|
|
135
|
+
* @param {Unknown} whole
|
|
136
|
+
* @param {(v: T) => Unknown} item
|
|
137
|
+
* @returns {readonly Unknown[]}
|
|
138
|
+
*/
|
|
139
|
+
const kindSchemas = (k, whole, item) =>
|
|
140
|
+
k === undefined ? [] :
|
|
141
|
+
k === true ? [whole] :
|
|
142
|
+
k.map(item)
|
|
143
|
+
|
|
144
|
+
/** @type {(v: boolean | number | string | null) => Unknown} */
|
|
145
|
+
const constSchema = v => ({ const: v })
|
|
146
|
+
|
|
147
|
+
/** bigint consts are represented as numbers (lossy for |value| > MAX_SAFE_INTEGER) */
|
|
148
|
+
/** @type {(v: bigint) => Unknown} */
|
|
149
|
+
const bigintConstSchema = v => ({ const: Number(v) })
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* The unit kind: `null` and `undefined` are their own singletons — no JSON
|
|
153
|
+
* value is `undefined`, hence `{ "not": {} }` — and both boolean bits
|
|
154
|
+
* together are the `boolean` type with no special-case rule.
|
|
155
|
+
*
|
|
156
|
+
* @type {(bits: number) => readonly Unknown[]}
|
|
157
|
+
*/
|
|
158
|
+
const unitSchemas = bits => [
|
|
159
|
+
...((bits & nullBit) === 0 ? [] : [constSchema(null)]),
|
|
160
|
+
...((bits & undefinedBit) === 0 ? [] : [{ not: {} }]),
|
|
161
|
+
...((bits & booleanBits) === booleanBits ? [{ type: /** @type {const} */ ('boolean') }]
|
|
162
|
+
: (bits & falseBit) !== 0 ? [constSchema(false)]
|
|
163
|
+
: (bits & trueBit) !== 0 ? [constSchema(true)]
|
|
164
|
+
: []),
|
|
165
|
+
]
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* A set of arrays: `prefixItems` for the tuple prefix, `items` for the
|
|
169
|
+
* elements past it — `false` when the length is exact, so a tuple admits
|
|
170
|
+
* nothing beyond its prefix and the empty tuple is `{ "items": false }`.
|
|
171
|
+
* `prefixItems` alone constrains only elements that exist (draft 2020-12
|
|
172
|
+
* implies no minimum length), so a non-empty prefix also emits `minItems`.
|
|
173
|
+
*
|
|
174
|
+
* @type {(rules: RuleSet) => (p: ArraySet) => Unknown}
|
|
175
|
+
*/
|
|
176
|
+
const arraySetSchema = rules => p => ({
|
|
177
|
+
type: 'array',
|
|
178
|
+
...(p.prefix.length === 0 ? {} : {
|
|
179
|
+
prefixItems: p.prefix.map(nodeSchema(rules)),
|
|
180
|
+
minItems: p.prefix.length,
|
|
181
|
+
}),
|
|
182
|
+
items: p.rest === undefined ? false : nodeSchema(rules)(p.rest),
|
|
183
|
+
})
|
|
184
|
+
|
|
185
|
+
/** Whether the node's value set admits `undefined` — its unit bit, read
|
|
186
|
+
* through a reference if needed.
|
|
187
|
+
* @type {(rules: RuleSet) => (n: Node) => boolean}
|
|
188
|
+
*/
|
|
189
|
+
const admitsUndefined = rules => n => {
|
|
190
|
+
const u = typeof n === 'string' ? assertNotNullish(at(n)(rules)) : n
|
|
191
|
+
return ((u.unit ?? 0) & undefinedBit) !== 0
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* The node with `undefined` removed — for an optional property's schema,
|
|
196
|
+
* where absence is already expressed by the key not being `required`. A
|
|
197
|
+
* reference is kept as-is: its definition is shared, and the extra
|
|
198
|
+
* `{ "not": {} }` member it may carry matches no JSON value anyway.
|
|
199
|
+
*
|
|
200
|
+
* @type {(n: Node) => Node}
|
|
201
|
+
*/
|
|
202
|
+
const stripUndefined = n => {
|
|
203
|
+
if (typeof n === 'string') { return n }
|
|
204
|
+
const unit = (n.unit ?? 0) & ~undefinedBit
|
|
205
|
+
return {
|
|
206
|
+
...(unit === 0 ? {} : { unit }),
|
|
207
|
+
...(n.number === undefined ? {} : { number: n.number }),
|
|
208
|
+
...(n.string === undefined ? {} : { string: n.string }),
|
|
209
|
+
...(n.bigint === undefined ? {} : { bigint: n.bigint }),
|
|
210
|
+
...(n.array === undefined ? {} : { array: n.array }),
|
|
211
|
+
...(n.object === undefined ? {} : { object: n.object }),
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* A set of objects: `properties` for the declared keys — a key admitting
|
|
217
|
+
* `undefined` is optional and has `undefined` stripped from its schema,
|
|
218
|
+
* every other key is `required` — and `additionalProperties` for the rest.
|
|
219
|
+
* No `rest` leaves the other keys unconstrained (lenient), matching rtti's
|
|
220
|
+
* open-struct validation semantics.
|
|
221
|
+
*
|
|
222
|
+
* @type {(rules: RuleSet) => (p: ObjectSet) => Unknown}
|
|
223
|
+
*/
|
|
224
|
+
const objectSetSchema = rules => p => {
|
|
225
|
+
const ents = definedEntries(p.props)
|
|
226
|
+
const required = ents.filter(([, n]) => !admitsUndefined(rules)(n)).map(([k]) => k)
|
|
227
|
+
return {
|
|
228
|
+
type: 'object',
|
|
229
|
+
...(ents.length === 0 ? {} : {
|
|
230
|
+
properties: Object.fromEntries(ents.map(
|
|
231
|
+
([k, n]) => /** @type {const} */ ([k, nodeSchema(rules)(stripUndefined(n))]))),
|
|
232
|
+
}),
|
|
233
|
+
...(required.length === 0 ? {} : { required }),
|
|
234
|
+
...(p.rest === undefined ? {} : { additionalProperties: nodeSchema(rules)(p.rest) }),
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/** @type {(u: UnionSet) => boolean} */
|
|
239
|
+
const isTop = u => cmp([{}, u])([{}, top]) === 0
|
|
240
|
+
|
|
241
|
+
/** @type {(rules: RuleSet) => (u: UnionSet) => Unknown} */
|
|
242
|
+
const unionSchema = rules => u => {
|
|
243
|
+
if (isTop(u)) { return {} }
|
|
244
|
+
const members = [
|
|
245
|
+
...unitSchemas(u.unit ?? 0),
|
|
246
|
+
...kindSchemas(u.number, { type: 'number' }, constSchema),
|
|
247
|
+
...kindSchemas(u.string, { type: 'string' }, constSchema),
|
|
248
|
+
...kindSchemas(u.bigint, { type: 'integer' }, bigintConstSchema),
|
|
249
|
+
...kindSchemas(u.array, { type: 'array' }, arraySetSchema(rules)),
|
|
250
|
+
...kindSchemas(u.object, { type: 'object' }, objectSetSchema(rules)),
|
|
251
|
+
]
|
|
252
|
+
return members.length === 0 ? { not: {} }
|
|
253
|
+
: members.length === 1 ? members[0]
|
|
254
|
+
: { anyOf: members }
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Converts a serializable RTTI {@link Data} (from `toData`) to a JSON Schema
|
|
259
|
+
* (draft 2020-12) object.
|
|
260
|
+
*
|
|
261
|
+
* Every named rule is emitted exactly once under `$defs` and each reference
|
|
262
|
+
* becomes a local `$ref` — self- and mutual recursion terminate, and the
|
|
263
|
+
* root itself is a `$ref` when the entry is a named definition. Definition
|
|
264
|
+
* names come from the data form (deterministic for equal canonical data)
|
|
265
|
+
* and are JSON Pointer-escaped, then percent-encoded, for the `$ref`
|
|
266
|
+
* fragment. A reference naming a missing definition panics.
|
|
267
|
+
*
|
|
268
|
+
* @type {(data: Data) => Unknown}
|
|
269
|
+
*/
|
|
270
|
+
export const dataToJsonSchema = ([rules, entry]) => {
|
|
271
|
+
const ruleEntries = definedEntries(rules)
|
|
272
|
+
const root = nodeSchema(rules)(entry)
|
|
273
|
+
return ruleEntries.length === 0 ? root : {
|
|
274
|
+
...root,
|
|
275
|
+
$defs: Object.fromEntries(ruleEntries.map(
|
|
276
|
+
([name, u]) => /** @type {const} */ ([name, unionSchema(rules)(u)]))),
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* Converts an rtti `Type` to a JSON Schema (draft 2020-12) object, through
|
|
282
|
+
* the canonical data form: `toData` first, then {@link dataToJsonSchema}.
|
|
283
|
+
*
|
|
284
|
+
* | rtti | JSON Schema |
|
|
285
|
+
* |-----------------------------------------------|-------------------------------------------------------------------------------------|
|
|
286
|
+
* | `boolean` / `number` / `string` | `{ "type": "..." }` |
|
|
287
|
+
* | `bigint` | `{ "type": "integer" }` (lossy; JSON integers are IEEE-754 doubles) |
|
|
288
|
+
* | `unknown` | `{}` (always-true schema) |
|
|
289
|
+
* | `never` / `or()` | `{ "not": {} }` (no JSON value satisfies this) |
|
|
290
|
+
* | primitive const (`42`, `'x'`, `null`) | `{ "const": <value> }` |
|
|
291
|
+
* | `or(true, false)` | `{ "type": "boolean" }` (the union normalizes to the whole kind) |
|
|
292
|
+
* | `bigint` const | `{ "const": Number(value) }` (lossy for \|value\| > MAX_SAFE_INTEGER) |
|
|
293
|
+
* | `undefined` const | `{ "not": {} }` |
|
|
294
|
+
* | struct `{ a: T, … }` | `{ "type": "object", "properties": { "a": …T… }, "required": [non-optional keys] }` |
|
|
295
|
+
* | tuple `[A, B]` | `{ "type": "array", "prefixItems": […A…, …B…], "minItems": 2, "items": false }` |
|
|
296
|
+
* | `array(T)` | `{ "type": "array", "items": …T… }` |
|
|
297
|
+
* | `record(T)` | `{ "type": "object", "additionalProperties": …T… }` |
|
|
298
|
+
* | `or(...types)` | `{ "anyOf": […each…] }`, normalized and in canonical kind order |
|
|
299
|
+
* | recursive schema | `{ "$ref": "#/$defs/<name>", "$defs": { "<name>": … } }` |
|
|
300
|
+
*
|
|
301
|
+
* The union rows follow the data form's normalization: operands are merged
|
|
302
|
+
* kind-wise, literals covered by their whole kind are absorbed
|
|
303
|
+
* (`or(42, number)` is all numbers), subsumed patterns are dropped, and
|
|
304
|
+
* duplicates collapse — so structurally different but equivalent thunk
|
|
305
|
+
* schemas produce the same JSON Schema.
|
|
306
|
+
*
|
|
307
|
+
* @type {(rtti: RttiType) => Unknown}
|
|
308
|
+
*/
|
|
309
|
+
export const toJsonSchema = rtti => dataToJsonSchema(toData(rtti))
|