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,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the serializable RTTI data form.
|
|
3
|
+
*
|
|
4
|
+
* A schema in data form denotes a set of values. The representation
|
|
5
|
+
* partitions that set into six disjoint *kinds* — unit values (`null`,
|
|
6
|
+
* `undefined`, `false`, `true`), numbers, strings, bigints, arrays and
|
|
7
|
+
* objects — so that union, equality and subset reduce to kind-wise set
|
|
8
|
+
* operations. See `./README.md` for the design rationale.
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
import type { StringMap } from '../../object/types.ts';
|
|
13
|
+
/**
|
|
14
|
+
* A set of values of one kind: `true` is the whole kind, an array lists its
|
|
15
|
+
* members (literals or patterns), canonically sorted and deduplicated. An
|
|
16
|
+
* empty kind is an absent property of {@link UnionSet}, never an empty array.
|
|
17
|
+
*/
|
|
18
|
+
export type KindSet<T> = true | readonly T[];
|
|
19
|
+
/**
|
|
20
|
+
* A set of arrays: a tuple with an optional rest.
|
|
21
|
+
*
|
|
22
|
+
* - `prefix` constrains the value set of each leading position.
|
|
23
|
+
* - `rest` present: the array may be any length `>= prefix.length`, and every
|
|
24
|
+
* element past the prefix belongs to `rest`.
|
|
25
|
+
* - `rest` absent: the array length is exactly `prefix.length`.
|
|
26
|
+
*
|
|
27
|
+
* A tuple schema is `{ prefix }`; a uniform array schema is
|
|
28
|
+
* `{ prefix: [], rest }`. Both are points of the same kind, so
|
|
29
|
+
* `readonly [number] ⊂ readonly number[]` is a plain pattern inclusion.
|
|
30
|
+
*/
|
|
31
|
+
export type ArraySet = {
|
|
32
|
+
readonly prefix: readonly Node[];
|
|
33
|
+
readonly rest?: Node;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* A set of objects: per-key value sets with an optional rest.
|
|
37
|
+
*
|
|
38
|
+
* - `props` constrains, per declared key, the value *read* at that key — an
|
|
39
|
+
* absent property reads as `undefined`, so a key is required exactly when
|
|
40
|
+
* its set excludes `undefined`. Keys are canonically sorted, and a key
|
|
41
|
+
* whose set is the whole value domain is omitted.
|
|
42
|
+
* - `rest` present: the value at every other *present* key belongs to `rest`.
|
|
43
|
+
* - `rest` absent: other keys are unconstrained.
|
|
44
|
+
*
|
|
45
|
+
* A struct schema is `{ props }`; a uniform record schema is
|
|
46
|
+
* `{ props: {}, rest }`.
|
|
47
|
+
*/
|
|
48
|
+
export type ObjectSet = {
|
|
49
|
+
readonly props: StringMap<Node>;
|
|
50
|
+
readonly rest?: Node;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* A set of values as a disjoint union over the six kinds. An absent
|
|
54
|
+
* component is the empty set of that kind, so `{}` is `never` and a union
|
|
55
|
+
* with every component at its maximum (see `unknown` in `./module.f.mjs`)
|
|
56
|
+
* is `unknown`.
|
|
57
|
+
*
|
|
58
|
+
* `unit` is a bitset over the four singleton values; bit `1 << i` stands for
|
|
59
|
+
* `unitList[i]` from `./module.f.mjs` (`['null', 'undefined', 'false',
|
|
60
|
+
* 'true']`), so `or(true, false)` collapses to the two boolean bits with no
|
|
61
|
+
* special-case rule.
|
|
62
|
+
*/
|
|
63
|
+
export type UnionSet = {
|
|
64
|
+
readonly unit?: number;
|
|
65
|
+
readonly number?: KindSet<number>;
|
|
66
|
+
readonly string?: KindSet<string>;
|
|
67
|
+
readonly bigint?: KindSet<bigint>;
|
|
68
|
+
readonly array?: KindSet<ArraySet>;
|
|
69
|
+
readonly object?: KindSet<ObjectSet>;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* A nested type position: an inline {@link UnionSet}, or the name of a rule
|
|
73
|
+
* in the enclosing {@link RuleSet}. Only recursive definitions are named;
|
|
74
|
+
* everything else is inlined, so non-recursive schemas are pure trees.
|
|
75
|
+
*/
|
|
76
|
+
export type Node = UnionSet | string;
|
|
77
|
+
/** Named recursive definitions, referenced by {@link Node} strings. */
|
|
78
|
+
export type RuleSet = StringMap<UnionSet>;
|
|
79
|
+
/**
|
|
80
|
+
* A complete serializable schema: the named recursive definitions plus the
|
|
81
|
+
* entry node. Produced by `toData` in `./module.f.mjs`.
|
|
82
|
+
*/
|
|
83
|
+
export type Data = readonly [RuleSet, Node];
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime type information (RTTI) — a type-safe schema system for describing and
|
|
3
|
+
* converting TypeScript types. See `./types.ts` for the type-level API.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*
|
|
7
|
+
* @import { Includes } from '../array/types.ts'
|
|
8
|
+
* @import { Assert } from '../../asserts/types.ts'
|
|
9
|
+
* @import { Equal } from '../ts/types.ts'
|
|
10
|
+
* @import { Tag0, Primitive0, _Type0, Bigint, Unknown, Tag1, _MakeType1, Array, Record, Or, Type } from './types.ts'
|
|
11
|
+
*/
|
|
12
|
+
import type { Includes } from '../array/types.ts';
|
|
13
|
+
import type { Assert } from '../../asserts/types.ts';
|
|
14
|
+
import type { Equal } from '../ts/types.ts';
|
|
15
|
+
import type { Primitive0, _Type0, Bigint, Unknown, Tag1, _MakeType1, Or, Type } from './types.ts';
|
|
16
|
+
declare const primitive0List: readonly ['bigint', 'boolean', 'number', 'string'];
|
|
17
|
+
export type _Primitive0Pinned = Assert<Equal<Primitive0, typeof primitive0List[number]>>;
|
|
18
|
+
/** @typedef {Assert<Equal<Primitive0, typeof primitive0List[number]>>} _Primitive0Pinned */
|
|
19
|
+
export declare const tag0List: readonly ["bigint", "boolean", "number", "string", "unknown"];
|
|
20
|
+
/**
|
|
21
|
+
* Schema that validates `boolean` values.
|
|
22
|
+
*/
|
|
23
|
+
export declare const boolean: _Type0<"boolean">;
|
|
24
|
+
/**
|
|
25
|
+
* Schema that validates `number` values.
|
|
26
|
+
*/
|
|
27
|
+
export declare const number: _Type0<"number">;
|
|
28
|
+
/**
|
|
29
|
+
* Schema that validates `string` values.
|
|
30
|
+
*/
|
|
31
|
+
export declare const string: _Type0<"string">;
|
|
32
|
+
/**
|
|
33
|
+
* Schema that validates `bigint` values.
|
|
34
|
+
* @type {Bigint}
|
|
35
|
+
*/
|
|
36
|
+
export declare const bigint: Bigint;
|
|
37
|
+
/**
|
|
38
|
+
* Schema that validates any DJS-compatible value.
|
|
39
|
+
* @type {Unknown}
|
|
40
|
+
*/
|
|
41
|
+
export declare const unknown: Unknown;
|
|
42
|
+
declare const tag1List: readonly ['array', 'record'];
|
|
43
|
+
export type _Tag1Pinned = Assert<Equal<Tag1, typeof tag1List[number]>>;
|
|
44
|
+
/** @typedef {Assert<Equal<Tag1, typeof tag1List[number]>>} _Tag1Pinned */
|
|
45
|
+
/** @type {Includes<string, typeof tag1List>} */
|
|
46
|
+
export declare const isTag1: Includes<string, typeof tag1List>;
|
|
47
|
+
/**
|
|
48
|
+
* Constructs a schema that validates `readonly Ts<T>[]`.
|
|
49
|
+
* @type {_MakeType1<'array'>}
|
|
50
|
+
*/
|
|
51
|
+
export declare const array: _MakeType1<'array'>;
|
|
52
|
+
/**
|
|
53
|
+
* Constructs a schema that validates `{ readonly[K in string]: Ts<T> }`.
|
|
54
|
+
* @type {_MakeType1<'record'>}
|
|
55
|
+
*/
|
|
56
|
+
export declare const record: _MakeType1<'record'>;
|
|
57
|
+
/**
|
|
58
|
+
* Constructs a schema that validates a value matching any of the given schemas.
|
|
59
|
+
*
|
|
60
|
+
* `or` is intentionally a lazy, allocation-free constructor: it captures its
|
|
61
|
+
* arguments in a thunk and does no flattening, deduplication, subset analysis,
|
|
62
|
+
* or canonical-form work. All such algebra lives on the serializable data form
|
|
63
|
+
* — see `./data/README.md`.
|
|
64
|
+
*
|
|
65
|
+
* @template {readonly Type[]} T
|
|
66
|
+
* @param {T} types
|
|
67
|
+
* @returns {Or<T>}
|
|
68
|
+
*/
|
|
69
|
+
export declare const or: <T extends readonly Type[]>(...types: T) => Or<T>;
|
|
70
|
+
/**
|
|
71
|
+
* Constructs a schema that validates a value matching `T` or `undefined`.
|
|
72
|
+
*
|
|
73
|
+
* @template {Type} T
|
|
74
|
+
* @param {T} t
|
|
75
|
+
* @returns {Or<readonly [T, undefined]>}
|
|
76
|
+
*/
|
|
77
|
+
export declare const option: <T extends Type>(t: T) => Or<readonly [T, undefined]>;
|
|
78
|
+
/**
|
|
79
|
+
* Schema that never matches any value — the empty union, corresponding to TypeScript's `never`.
|
|
80
|
+
* @type {Or<readonly []>}
|
|
81
|
+
*/
|
|
82
|
+
export declare const never: Or<readonly []>;
|
|
83
|
+
export {};
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime type information (RTTI) — a type-safe schema system for describing and
|
|
3
|
+
* converting TypeScript types. See `./types.ts` for the type-level API.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*
|
|
7
|
+
* @import { Includes } from '../array/types.ts'
|
|
8
|
+
* @import { Assert } from '../../asserts/types.ts'
|
|
9
|
+
* @import { Equal } from '../ts/types.ts'
|
|
10
|
+
* @import { Tag0, Primitive0, _Type0, Bigint, Unknown, Tag1, _MakeType1, Array, Record, Or, Type } from './types.ts'
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { includes } from '../array/module.f.mjs'
|
|
14
|
+
|
|
15
|
+
const primitive0List = /** @type {const} */ (['bigint', 'boolean', 'number', 'string'])
|
|
16
|
+
|
|
17
|
+
/** @typedef {Assert<Equal<Primitive0, typeof primitive0List[number]>>} _Primitive0Pinned */
|
|
18
|
+
|
|
19
|
+
export const tag0List = /** @type {const} */ ([...primitive0List, 'unknown'])
|
|
20
|
+
|
|
21
|
+
const type0 =
|
|
22
|
+
/**
|
|
23
|
+
* @template {Tag0} T
|
|
24
|
+
* @param {T} tag
|
|
25
|
+
* @returns {_Type0<T>}
|
|
26
|
+
*/
|
|
27
|
+
tag => () => /** @type {any} */ ([tag])
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Schema that validates `boolean` values.
|
|
31
|
+
*/
|
|
32
|
+
export const boolean = type0('boolean')
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Schema that validates `number` values.
|
|
36
|
+
*/
|
|
37
|
+
export const number = type0('number')
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Schema that validates `string` values.
|
|
41
|
+
*/
|
|
42
|
+
export const string = type0('string')
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Schema that validates `bigint` values.
|
|
46
|
+
* @type {Bigint}
|
|
47
|
+
*/
|
|
48
|
+
export const bigint = type0('bigint')
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Schema that validates any DJS-compatible value.
|
|
52
|
+
* @type {Unknown}
|
|
53
|
+
*/
|
|
54
|
+
export const unknown = type0('unknown')
|
|
55
|
+
|
|
56
|
+
const tag1List = /** @type {const} */ (['array', 'record'])
|
|
57
|
+
|
|
58
|
+
/** @typedef {Assert<Equal<Tag1, typeof tag1List[number]>>} _Tag1Pinned */
|
|
59
|
+
|
|
60
|
+
/** @type {Includes<string, typeof tag1List>} */
|
|
61
|
+
export const isTag1 = includes(tag1List)
|
|
62
|
+
|
|
63
|
+
const type1 =
|
|
64
|
+
/**
|
|
65
|
+
* @template {Tag1} K
|
|
66
|
+
* @param {K} key
|
|
67
|
+
* @returns {_MakeType1<K>}
|
|
68
|
+
*/
|
|
69
|
+
key => t => () => /** @type {any} */ ([key, t])
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Constructs a schema that validates `readonly Ts<T>[]`.
|
|
73
|
+
* @type {_MakeType1<'array'>}
|
|
74
|
+
*/
|
|
75
|
+
export const array = type1('array')
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Constructs a schema that validates `{ readonly[K in string]: Ts<T> }`.
|
|
79
|
+
* @type {_MakeType1<'record'>}
|
|
80
|
+
*/
|
|
81
|
+
export const record = type1('record')
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Constructs a schema that validates a value matching any of the given schemas.
|
|
85
|
+
*
|
|
86
|
+
* `or` is intentionally a lazy, allocation-free constructor: it captures its
|
|
87
|
+
* arguments in a thunk and does no flattening, deduplication, subset analysis,
|
|
88
|
+
* or canonical-form work. All such algebra lives on the serializable data form
|
|
89
|
+
* — see `./data/README.md`.
|
|
90
|
+
*
|
|
91
|
+
* @template {readonly Type[]} T
|
|
92
|
+
* @param {T} types
|
|
93
|
+
* @returns {Or<T>}
|
|
94
|
+
*/
|
|
95
|
+
export const or = (...types) =>
|
|
96
|
+
() => ['or', ...types]
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Constructs a schema that validates a value matching `T` or `undefined`.
|
|
100
|
+
*
|
|
101
|
+
* @template {Type} T
|
|
102
|
+
* @param {T} t
|
|
103
|
+
* @returns {Or<readonly [T, undefined]>}
|
|
104
|
+
*/
|
|
105
|
+
export const option = t =>
|
|
106
|
+
or(t, undefined)
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Schema that never matches any value — the empty union, corresponding to TypeScript's `never`.
|
|
110
|
+
* @type {Or<readonly []>}
|
|
111
|
+
*/
|
|
112
|
+
export const never = or()
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime deserialization of unknown values against RTTI schemas.
|
|
3
|
+
*
|
|
4
|
+
* The main entry point is `parse(rtti)`, which takes a schema `Type` and returns
|
|
5
|
+
* a `Parse<T>` function. When called with an unknown value, it returns a `Result`
|
|
6
|
+
* that is either `['ok', newValue]` or `['error', { path, message }]`.
|
|
7
|
+
*
|
|
8
|
+
* Unlike `validate`, which checks an existing value in-place and returns it
|
|
9
|
+
* unchanged on success, `parse` always returns a freshly constructed value that
|
|
10
|
+
* contains only the fields/elements declared by the schema. This makes both
|
|
11
|
+
* structs and tuples effectively closed at runtime, matching the TypeScript
|
|
12
|
+
* type produced by `Ts<T>`:
|
|
13
|
+
*
|
|
14
|
+
* - Tuples: the result has exactly the schema's length; extra elements are dropped.
|
|
15
|
+
* - Structs: the result contains only the schema's keys; extra properties are dropped.
|
|
16
|
+
* - Arrays/records: every element/value is itself parsed, so a fresh container is
|
|
17
|
+
* always returned even if the inner type is a primitive.
|
|
18
|
+
*
|
|
19
|
+
* This also provides forward compatibility with extended serialization formats:
|
|
20
|
+
* a schema-based parser keeps working when newer versions of the format add
|
|
21
|
+
* extra fields or tuple elements.
|
|
22
|
+
*
|
|
23
|
+
* The error shape, path bookkeeping, primitive checks, and schema
|
|
24
|
+
* recognition (`visit`) are shared with `validate` through
|
|
25
|
+
* `../common/module.f.mjs`; only container construction differs.
|
|
26
|
+
*
|
|
27
|
+
* See `./types.ts` for the `Result`/`Parse` type-level API.
|
|
28
|
+
*
|
|
29
|
+
* @module
|
|
30
|
+
*
|
|
31
|
+
* @import { Info1, Struct, Tag1, Tuple, Type } from '../types.ts'
|
|
32
|
+
* @import { Result as CommonResult } from '../../result/types.ts'
|
|
33
|
+
* @import { StringMap } from '../../object/types.ts'
|
|
34
|
+
* @import { List } from '../../list/types.ts'
|
|
35
|
+
* @import { Container, IsContainer, ValidateE, ValidationError, Visitor } from '../common/types.ts'
|
|
36
|
+
* @import { Unknown } from '../ts/types.ts'
|
|
37
|
+
* @import { Parse } from './types.ts'
|
|
38
|
+
*/
|
|
39
|
+
import type { Type } from '../types.ts';
|
|
40
|
+
import type { Result as CommonResult } from '../../result/types.ts';
|
|
41
|
+
import type { ValidationError } from '../common/types.ts';
|
|
42
|
+
import type { Unknown } from '../ts/types.ts';
|
|
43
|
+
import type { Parse } from './types.ts';
|
|
44
|
+
export type _ItemResult = CommonResult<Unknown, ValidationError>;
|
|
45
|
+
export type _Rebuild = (entries: ReadonlyArray<readonly [string, Unknown]>) => Unknown;
|
|
46
|
+
/** @type {<T extends Type>(rtti: T) => Parse<T>} */
|
|
47
|
+
export declare const parse: <T extends Type>(rtti: T) => Parse<T>;
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime deserialization of unknown values against RTTI schemas.
|
|
3
|
+
*
|
|
4
|
+
* The main entry point is `parse(rtti)`, which takes a schema `Type` and returns
|
|
5
|
+
* a `Parse<T>` function. When called with an unknown value, it returns a `Result`
|
|
6
|
+
* that is either `['ok', newValue]` or `['error', { path, message }]`.
|
|
7
|
+
*
|
|
8
|
+
* Unlike `validate`, which checks an existing value in-place and returns it
|
|
9
|
+
* unchanged on success, `parse` always returns a freshly constructed value that
|
|
10
|
+
* contains only the fields/elements declared by the schema. This makes both
|
|
11
|
+
* structs and tuples effectively closed at runtime, matching the TypeScript
|
|
12
|
+
* type produced by `Ts<T>`:
|
|
13
|
+
*
|
|
14
|
+
* - Tuples: the result has exactly the schema's length; extra elements are dropped.
|
|
15
|
+
* - Structs: the result contains only the schema's keys; extra properties are dropped.
|
|
16
|
+
* - Arrays/records: every element/value is itself parsed, so a fresh container is
|
|
17
|
+
* always returned even if the inner type is a primitive.
|
|
18
|
+
*
|
|
19
|
+
* This also provides forward compatibility with extended serialization formats:
|
|
20
|
+
* a schema-based parser keeps working when newer versions of the format add
|
|
21
|
+
* extra fields or tuple elements.
|
|
22
|
+
*
|
|
23
|
+
* The error shape, path bookkeeping, primitive checks, and schema
|
|
24
|
+
* recognition (`visit`) are shared with `validate` through
|
|
25
|
+
* `../common/module.f.mjs`; only container construction differs.
|
|
26
|
+
*
|
|
27
|
+
* See `./types.ts` for the `Result`/`Parse` type-level API.
|
|
28
|
+
*
|
|
29
|
+
* @module
|
|
30
|
+
*
|
|
31
|
+
* @import { Info1, Struct, Tag1, Tuple, Type } from '../types.ts'
|
|
32
|
+
* @import { Result as CommonResult } from '../../result/types.ts'
|
|
33
|
+
* @import { StringMap } from '../../object/types.ts'
|
|
34
|
+
* @import { List } from '../../list/types.ts'
|
|
35
|
+
* @import { Container, IsContainer, ValidateE, ValidationError, Visitor } from '../common/types.ts'
|
|
36
|
+
* @import { Unknown } from '../ts/types.ts'
|
|
37
|
+
* @import { Parse } from './types.ts'
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
import { ok } from '../../result/module.f.mjs'
|
|
41
|
+
import { reverse, toArray } from '../../list/module.f.mjs'
|
|
42
|
+
import {
|
|
43
|
+
constPrimitiveValidate,
|
|
44
|
+
eachEntry,
|
|
45
|
+
isArray,
|
|
46
|
+
isObject,
|
|
47
|
+
orVisit,
|
|
48
|
+
primitive0Validate,
|
|
49
|
+
verror,
|
|
50
|
+
visit,
|
|
51
|
+
} from '../common/module.f.mjs'
|
|
52
|
+
|
|
53
|
+
const { entries } = Object
|
|
54
|
+
|
|
55
|
+
/** @typedef {CommonResult<Unknown, ValidationError>} _ItemResult */
|
|
56
|
+
|
|
57
|
+
/** Rebuilds a parsed container from its `[key, parsedValue]` entries. */
|
|
58
|
+
/** @typedef {(entries: ReadonlyArray<readonly [string, Unknown]>) => Unknown} _Rebuild */
|
|
59
|
+
|
|
60
|
+
/** @type {_Rebuild} */
|
|
61
|
+
const arrayRebuild = entries => entries.map(([, v]) => v)
|
|
62
|
+
|
|
63
|
+
/** @type {_Rebuild} */
|
|
64
|
+
const recordRebuild = entries => Object.fromEntries(entries)
|
|
65
|
+
|
|
66
|
+
/** `eachEntry`'s accumulator seed: entries are consed on in reverse as they parse. */
|
|
67
|
+
/** @type {List<readonly [string, Unknown]>} */
|
|
68
|
+
const emptyEntries = null
|
|
69
|
+
|
|
70
|
+
/** `eachEntry`'s accumulate step: an O(1) prepend, unlike rebuilding an array on every entry. */
|
|
71
|
+
/** @type {(acc: List<readonly [string, Unknown]>, k: string, v: Unknown) => List<readonly [string, Unknown]>} */
|
|
72
|
+
const consEntry = (acc, k, v) =>
|
|
73
|
+
({ first: [k, v], tail: acc })
|
|
74
|
+
|
|
75
|
+
/** Restores forward order from `consEntry`'s reverse-order list, in one linear pass. */
|
|
76
|
+
/** @type {(list: List<readonly [string, Unknown]>) => ReadonlyArray<readonly [string, Unknown]>} */
|
|
77
|
+
const orderedEntries = list =>
|
|
78
|
+
toArray(reverse(list))
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Builds a parser for `array` or `record` schemas. Mirrors `validate`'s
|
|
82
|
+
* `containerValidate`, but rebuilds a fresh container from each item's parsed
|
|
83
|
+
* result instead of returning the value unchanged. The inner item parser is
|
|
84
|
+
* instantiated lazily (only when the container is non-empty) so recursive
|
|
85
|
+
* schemas don't recurse forever on empty containers.
|
|
86
|
+
*/
|
|
87
|
+
const containerParse =
|
|
88
|
+
/**
|
|
89
|
+
* @template {Tag1} K
|
|
90
|
+
* @param {IsContainer<Container<K>>} isContainer
|
|
91
|
+
* @param {_Rebuild} rebuild
|
|
92
|
+
* @returns {<I extends Type>(item: I) => Parse<Info1<K, I>>}
|
|
93
|
+
*/
|
|
94
|
+
(isContainer, rebuild) =>
|
|
95
|
+
item => value => {
|
|
96
|
+
if (!isContainer(value)) {
|
|
97
|
+
return verror('unexpected value')
|
|
98
|
+
}
|
|
99
|
+
const e = entries(value)
|
|
100
|
+
if (e.length === 0) {
|
|
101
|
+
return /** @type {any} */ (ok(rebuild([])))
|
|
102
|
+
}
|
|
103
|
+
const itemParse = /** @type {(v: Unknown) => _ItemResult} */ (/** @type {any} */ (parse(item)))
|
|
104
|
+
const r = eachEntry(e, (_k, v) => itemParse(v), emptyEntries, consEntry)
|
|
105
|
+
return r[0] === 'error' ? r : /** @type {any} */ (ok(rebuild(orderedEntries(r[1]))))
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const arrayParse = containerParse(isArray, arrayRebuild)
|
|
109
|
+
|
|
110
|
+
const recordParse = containerParse(isObject, recordRebuild)
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Builds a parser for `Tuple` or `Struct` const schemas. Mirrors `validate`'s
|
|
114
|
+
* `constContainerValidate`: it iterates the schema's entries (so extra tuple
|
|
115
|
+
* elements and undeclared struct keys are dropped) and rebuilds the result
|
|
116
|
+
* from each parsed item.
|
|
117
|
+
*/
|
|
118
|
+
const constContainerParse =
|
|
119
|
+
/**
|
|
120
|
+
* @template {Unknown} C
|
|
121
|
+
* @param {IsContainer<C>} isContainer
|
|
122
|
+
* @param {(value: C, k: string) => Unknown} getItem
|
|
123
|
+
* @param {_Rebuild} rebuild
|
|
124
|
+
* @returns {<T extends Tuple | Struct>(rtti: T) => Parse<T>}
|
|
125
|
+
*/
|
|
126
|
+
(isContainer, getItem, rebuild) =>
|
|
127
|
+
rtti => value => {
|
|
128
|
+
if (!isContainer(value)) {
|
|
129
|
+
return verror('unexpected value')
|
|
130
|
+
}
|
|
131
|
+
const r = eachEntry(
|
|
132
|
+
entries(rtti),
|
|
133
|
+
(k, t) => /** @type {_ItemResult} */ (/** @type {any} */ (parse(t))(getItem(value, k))),
|
|
134
|
+
emptyEntries,
|
|
135
|
+
consEntry,
|
|
136
|
+
)
|
|
137
|
+
return r[0] === 'error' ? r : /** @type {any} */ (ok(rebuild(orderedEntries(r[1]))))
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
const tupleParse = constContainerParse(
|
|
141
|
+
isArray,
|
|
142
|
+
(value, k) => value[Number(k)],
|
|
143
|
+
arrayRebuild,
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
const structParse = constContainerParse(
|
|
147
|
+
isObject,
|
|
148
|
+
(value, k) => value[k],
|
|
149
|
+
recordRebuild,
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
const orParse =
|
|
153
|
+
/**
|
|
154
|
+
* @template {readonly Type[]} T
|
|
155
|
+
* @param {T} rtti
|
|
156
|
+
* @returns {Parse<() => readonly ['or', ...T]>}
|
|
157
|
+
*/
|
|
158
|
+
rtti =>
|
|
159
|
+
/** @type {any} */ (orVisit(/** @type {(t: Type) => ValidateE} */ (/** @type {any} */ (parse)))(rtti))
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Creates a parser function for the given RTTI schema.
|
|
163
|
+
*
|
|
164
|
+
* The returned function takes an unknown value and returns either
|
|
165
|
+
* `['ok', newValue]` containing a freshly constructed value matching the schema,
|
|
166
|
+
* or `['error', { path, message }]` describing the failure location.
|
|
167
|
+
*
|
|
168
|
+
* @param rtti - A schema `Type`: a `Thunk` for tag-based schemas, or a `Const`
|
|
169
|
+
* (primitive literal, tuple, or struct) for exact-value schemas.
|
|
170
|
+
* @returns A `Parse<T>` function.
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```js
|
|
174
|
+
* const p = parse(array(number))
|
|
175
|
+
* p([1, 2, 3]) // ['ok', [1, 2, 3]] (a new array)
|
|
176
|
+
* p([1, 'two']) // ['error', { path: ['1'], message: 'unexpected value' }]
|
|
177
|
+
*
|
|
178
|
+
* // tuples are closed: extra elements are dropped
|
|
179
|
+
* parse([number, number])([1, 2, 3]) // ['ok', [1, 2]]
|
|
180
|
+
*
|
|
181
|
+
* // structs drop undeclared keys
|
|
182
|
+
* parse({ a: number })({ a: 1, b: 2 }) // ['ok', { a: 1 }]
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
185
|
+
const parseVisitor = /** @type {any} */ ({
|
|
186
|
+
tuple: tupleParse,
|
|
187
|
+
struct: structParse,
|
|
188
|
+
array: arrayParse,
|
|
189
|
+
record: recordParse,
|
|
190
|
+
or: orParse,
|
|
191
|
+
constPrimitive: constPrimitiveValidate,
|
|
192
|
+
primitive0: primitive0Validate,
|
|
193
|
+
unknown: () => ok,
|
|
194
|
+
})
|
|
195
|
+
|
|
196
|
+
/** @type {<T extends Type>(rtti: T) => Parse<T>} */
|
|
197
|
+
export const parse = rtti =>
|
|
198
|
+
/** @type {any} */ (visit(parseVisitor)(rtti))
|
|
@@ -0,0 +1,122 @@
|
|
|
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
|
+
extraItemsDropped: () => void;
|
|
68
|
+
error: () => void;
|
|
69
|
+
};
|
|
70
|
+
struct: {
|
|
71
|
+
ok: () => void;
|
|
72
|
+
extraKeysDropped: () => void;
|
|
73
|
+
error: () => void;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
array: {
|
|
77
|
+
empty: () => void;
|
|
78
|
+
ok: () => void;
|
|
79
|
+
freshArray: () => void;
|
|
80
|
+
error: () => void;
|
|
81
|
+
nested: () => void;
|
|
82
|
+
};
|
|
83
|
+
record: {
|
|
84
|
+
empty: () => void;
|
|
85
|
+
ok: () => void;
|
|
86
|
+
freshRecord: () => void;
|
|
87
|
+
error: () => void;
|
|
88
|
+
};
|
|
89
|
+
constThunk: {
|
|
90
|
+
primitive: () => void;
|
|
91
|
+
};
|
|
92
|
+
or: {
|
|
93
|
+
consts: {
|
|
94
|
+
ok: () => void;
|
|
95
|
+
error: () => void;
|
|
96
|
+
};
|
|
97
|
+
thunks: {
|
|
98
|
+
ok: () => void;
|
|
99
|
+
error: () => void;
|
|
100
|
+
};
|
|
101
|
+
firstMatchWins: () => void;
|
|
102
|
+
};
|
|
103
|
+
option: {
|
|
104
|
+
ok: () => void;
|
|
105
|
+
error: () => void;
|
|
106
|
+
};
|
|
107
|
+
path: {
|
|
108
|
+
rootMismatch: () => void;
|
|
109
|
+
arrayIndex: () => void;
|
|
110
|
+
recordKey: () => void;
|
|
111
|
+
nestedArray: () => void;
|
|
112
|
+
tupleIndex: () => void;
|
|
113
|
+
structKey: () => void;
|
|
114
|
+
deepStruct: () => void;
|
|
115
|
+
recursiveSchema: () => void;
|
|
116
|
+
orRoot: () => void;
|
|
117
|
+
};
|
|
118
|
+
recursive: {
|
|
119
|
+
arrayOfArrays: () => void;
|
|
120
|
+
recordOfRecords: () => void;
|
|
121
|
+
};
|
|
122
|
+
};
|