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,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @import { Unknown } from '../../../media/json/types.ts'
|
|
3
|
+
* @import { Effect } from '../../../effects/types.ts'
|
|
4
|
+
* @import { State } from '../../../effects/node/virtual/types.ts'
|
|
5
|
+
* @import { Id, Response } from '../../json_rpc/types.ts'
|
|
6
|
+
* @import { Step } from './types.ts'
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { assertEq } from '../../../asserts/module.f.mjs'
|
|
10
|
+
import { pure } from '../../../effects/module.f.mjs'
|
|
11
|
+
import { emptyState, virtual } from '../../../effects/node/virtual/module.f.mjs'
|
|
12
|
+
import { stringify } from '../../../media/json/module.f.mjs'
|
|
13
|
+
import { utf8 } from '../../../text/module.f.mjs'
|
|
14
|
+
import { fromVec } from '../../../types/uint8array/module.f.mjs'
|
|
15
|
+
import { maxLengthBytes } from '../../../types/bit_vec/module.f.mjs'
|
|
16
|
+
import { sort } from '../../../types/object/module.f.mjs'
|
|
17
|
+
import { internalError, jsonrpc, parseError } from '../../json_rpc/module.f.mjs'
|
|
18
|
+
import { stdioTransport } from './module.f.mjs'
|
|
19
|
+
|
|
20
|
+
const stringifyJson = stringify(sort)
|
|
21
|
+
|
|
22
|
+
// Extracts the request `id` (a request has one; a notification does not).
|
|
23
|
+
/** @type {(value: Unknown) => Id | undefined} */
|
|
24
|
+
const idOf = value =>
|
|
25
|
+
value !== null && typeof value === 'object' && !(value instanceof Array)
|
|
26
|
+
? /** @type {{ readonly id?: Id }} */ (value).id
|
|
27
|
+
: undefined
|
|
28
|
+
|
|
29
|
+
// A step that mirrors the mcpStep contract closely enough to drive the loop:
|
|
30
|
+
// a message carrying an `id` (a request) gets an echo success response; a
|
|
31
|
+
// message without an `id` (a notification) yields `null` — no reply.
|
|
32
|
+
/** @type {Step<never>} */
|
|
33
|
+
const echoStep = value => {
|
|
34
|
+
const id = idOf(value)
|
|
35
|
+
return pure(id === undefined
|
|
36
|
+
? null
|
|
37
|
+
: { jsonrpc, result: { ok: true }, id })
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// UTF-8 bytes of `s` as a plain array — the virtual stdin byte stream.
|
|
41
|
+
/** @type {(s: string) => readonly number[]} */
|
|
42
|
+
const toBytes = s => [...fromVec(utf8(s))]
|
|
43
|
+
|
|
44
|
+
// Run the transport with `step` over `input` fed to stdin one byte at a time;
|
|
45
|
+
// return the final state. `input` is raw text so tests control newline framing.
|
|
46
|
+
/** @type {(step: Step<never>) => (input: string) => State} */
|
|
47
|
+
const runStep = step => input =>
|
|
48
|
+
virtual({ ...emptyState, stdin: toBytes(input) })(stdioTransport(step))[0]
|
|
49
|
+
|
|
50
|
+
const run = runStep(echoStep)
|
|
51
|
+
|
|
52
|
+
/** @type {(id: Id) => string} */
|
|
53
|
+
const okResponse = id =>
|
|
54
|
+
stringifyJson(/** @type {Unknown} */ ({ jsonrpc, result: { ok: true }, id })) + '\n'
|
|
55
|
+
|
|
56
|
+
/** @type {string} */
|
|
57
|
+
const parseErrorLine =
|
|
58
|
+
stringifyJson(/** @type {Unknown} */ ({ jsonrpc, error: parseError, id: null })) + '\n'
|
|
59
|
+
|
|
60
|
+
/** @type {(id: Id) => string} */
|
|
61
|
+
const internalErrorLine = id =>
|
|
62
|
+
stringifyJson(/** @type {Unknown} */ ({ jsonrpc, error: internalError, id })) + '\n'
|
|
63
|
+
|
|
64
|
+
/** @type {(id: number) => string} */
|
|
65
|
+
const ping = id => `{"jsonrpc":"2.0","method":"ping","id":${id}}`
|
|
66
|
+
|
|
67
|
+
// One byte past `maxLengthBytes` on its own; embedded in a response envelope
|
|
68
|
+
// it stays comfortably over the limit despite the surrounding JSON overhead.
|
|
69
|
+
const oversizedString = 'a'.repeat(Number(maxLengthBytes) + 1)
|
|
70
|
+
|
|
71
|
+
const notification = '{"jsonrpc":"2.0","method":"notifications/initialized"}'
|
|
72
|
+
|
|
73
|
+
export const proof = {
|
|
74
|
+
// EOF on the very first read: clean shutdown, nothing written, no further reads.
|
|
75
|
+
eofImmediately: () => {
|
|
76
|
+
const state = run('')
|
|
77
|
+
assertEq(state.stdout, '')
|
|
78
|
+
assertEq(state.stdin.length, 0)
|
|
79
|
+
},
|
|
80
|
+
|
|
81
|
+
// A newline-terminated request is parsed, dispatched, and its response
|
|
82
|
+
// written; stdin is fully drained before the terminating EOF.
|
|
83
|
+
requestWritesResponse: () => {
|
|
84
|
+
const state = run(ping(1) + '\n')
|
|
85
|
+
assertEq(state.stdout, okResponse(1))
|
|
86
|
+
assertEq(state.stdin.length, 0)
|
|
87
|
+
},
|
|
88
|
+
|
|
89
|
+
// A final line lacking a trailing newline is still flushed and dispatched
|
|
90
|
+
// (covers `readLine`'s EOF-with-buffered-bytes branch).
|
|
91
|
+
requestWithoutTrailingNewline: () => {
|
|
92
|
+
const state = run(ping(2))
|
|
93
|
+
assertEq(state.stdout, okResponse(2))
|
|
94
|
+
},
|
|
95
|
+
|
|
96
|
+
// A notification (no `id`) yields a `null` step result → nothing is written.
|
|
97
|
+
notificationWritesNothing: () => {
|
|
98
|
+
const state = run(notification + '\n')
|
|
99
|
+
assertEq(state.stdout, '')
|
|
100
|
+
},
|
|
101
|
+
|
|
102
|
+
// A malformed JSON line produces a JSON-RPC parse-error response (-32700),
|
|
103
|
+
// not a silent discard.
|
|
104
|
+
malformedJsonWritesParseError: () => {
|
|
105
|
+
const state = run('not json\n')
|
|
106
|
+
assertEq(state.stdout, parseErrorLine)
|
|
107
|
+
},
|
|
108
|
+
|
|
109
|
+
// A request that is not strict JSON (trailing comma) must be rejected with
|
|
110
|
+
// a parse error, never dispatched to the step.
|
|
111
|
+
trailingCommaWritesParseError: () => {
|
|
112
|
+
const state = run('{"jsonrpc":"2.0","method":"ping","id":1,}\n')
|
|
113
|
+
assertEq(state.stdout, parseErrorLine)
|
|
114
|
+
},
|
|
115
|
+
|
|
116
|
+
// A response with an optional field explicitly `undefined` serializes like
|
|
117
|
+
// JSON.stringify — the field is omitted, not a thrown TypeError that would
|
|
118
|
+
// abort the loop.
|
|
119
|
+
undefinedFieldOmitted: () => {
|
|
120
|
+
/** @type {Step<never>} */
|
|
121
|
+
const step = value => {
|
|
122
|
+
const id = idOf(value)
|
|
123
|
+
return pure(id === undefined
|
|
124
|
+
? null
|
|
125
|
+
: /** @type {Response} */ (/** @type {unknown} */ ({ jsonrpc, result: { ok: true, nextCursor: undefined }, id })))
|
|
126
|
+
}
|
|
127
|
+
const state = runStep(step)(ping(1) + '\n')
|
|
128
|
+
assertEq(state.stdout, okResponse(1))
|
|
129
|
+
},
|
|
130
|
+
|
|
131
|
+
// A response that would exceed `maxLengthBytes` once UTF-8 encoded cannot
|
|
132
|
+
// be written as a single bit vector (`tryUtf8` reports overflow); the loop
|
|
133
|
+
// writes a JSON-RPC internal-error response — carrying the original
|
|
134
|
+
// request's `id`, not `null` — instead of throwing or silently dropping
|
|
135
|
+
// the reply.
|
|
136
|
+
oversizedResponseWritesInternalError: () => {
|
|
137
|
+
/** @type {Step<never>} */
|
|
138
|
+
const step = value => {
|
|
139
|
+
const id = idOf(value)
|
|
140
|
+
return pure(id === undefined
|
|
141
|
+
? null
|
|
142
|
+
: { jsonrpc, result: { big: oversizedString }, id })
|
|
143
|
+
}
|
|
144
|
+
const state = runStep(step)(ping(1) + '\n')
|
|
145
|
+
assertEq(state.stdout, internalErrorLine(1))
|
|
146
|
+
},
|
|
147
|
+
// The loop recovers from the oversized-response error and keeps draining
|
|
148
|
+
// stdin: a well-behaved request on the next line still gets its normal
|
|
149
|
+
// reply.
|
|
150
|
+
loopContinuesAfterOversizedResponse: () => {
|
|
151
|
+
/** @type {Step<never>} */
|
|
152
|
+
const step = value => {
|
|
153
|
+
const id = idOf(value)
|
|
154
|
+
return pure(id === undefined
|
|
155
|
+
? null
|
|
156
|
+
: id === 1
|
|
157
|
+
? { jsonrpc, result: { big: oversizedString }, id }
|
|
158
|
+
: { jsonrpc, result: { ok: true }, id })
|
|
159
|
+
}
|
|
160
|
+
const state = runStep(step)([ping(1), ping(2)].join('\n'))
|
|
161
|
+
assertEq(state.stdout, internalErrorLine(1) + okResponse(2))
|
|
162
|
+
assertEq(state.stdin.length, 0)
|
|
163
|
+
},
|
|
164
|
+
|
|
165
|
+
// When even the `id`-preserving internal-error fallback would overflow —
|
|
166
|
+
// because the `id` itself is the oversized part, not just `result` — the
|
|
167
|
+
// loop falls back once more to a fixed `id: null` internal-error, the only
|
|
168
|
+
// shape in this transport guaranteed to always fit. Without this second
|
|
169
|
+
// fallback tier the request would get no response line at all.
|
|
170
|
+
oversizedIdFallsBackToNullId: () => {
|
|
171
|
+
/** @type {Step<never>} */
|
|
172
|
+
const step = value => {
|
|
173
|
+
const id = idOf(value)
|
|
174
|
+
return pure(id === undefined
|
|
175
|
+
? null
|
|
176
|
+
: { jsonrpc, result: { ok: true }, id: oversizedString })
|
|
177
|
+
}
|
|
178
|
+
const state = runStep(step)(ping(1) + '\n')
|
|
179
|
+
assertEq(state.stdout, internalErrorLine(null))
|
|
180
|
+
},
|
|
181
|
+
|
|
182
|
+
// A multi-line session interleaving all cases: request, notification, and
|
|
183
|
+
// malformed line, ending with an unterminated request. Order is preserved
|
|
184
|
+
// and the notification contributes nothing.
|
|
185
|
+
multipleLines: () => {
|
|
186
|
+
const state = run([ping(1), notification, 'not json', ping(2)].join('\n'))
|
|
187
|
+
assertEq(state.stdout, okResponse(1) + parseErrorLine + okResponse(2))
|
|
188
|
+
assertEq(state.stdin.length, 0)
|
|
189
|
+
},
|
|
190
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the stdio transport of JSON-RPC / MCP servers.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { Unknown } from '../../../media/json/types.ts';
|
|
7
|
+
import type { Effect, Operation } from '../../../effects/types.ts';
|
|
8
|
+
import type { Response } from '../../json_rpc/types.ts';
|
|
9
|
+
/**
|
|
10
|
+
* A transport step: maps one parsed JSON-RPC message to a response, or `null`
|
|
11
|
+
* for a notification that needs no reply. The shape of
|
|
12
|
+
* `mcpStep(config)(handlers)(key)`.
|
|
13
|
+
*/
|
|
14
|
+
export type Step<O extends Operation> = (value: Unknown) => Effect<O, Response | null>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-level API for `fjs/protocol/mcp/module.f.mjs`: the MCP message
|
|
3
|
+
* schemas' derived types, plus the `McpHandlers`/`ToolEntry`/`Handle`/
|
|
4
|
+
* session-state shapes `mcpStep` is built from.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import type { Ts } from '../../types/rtti/ts/types.ts';
|
|
9
|
+
import type { Unknown } from '../../media/json/types.ts';
|
|
10
|
+
import type { Operation, Effect } from '../../effects/types.ts';
|
|
11
|
+
import type { Type } from '../../types/rtti/types.ts';
|
|
12
|
+
import type { Response } from '../json_rpc/types.ts';
|
|
13
|
+
import type { implementation, serverCapabilities, initializeParams, initializeResult, textContent, blobResource, embeddedResource, contentItem, tool, toolsListParams, toolsListResult, toolsCallParams, toolsCallResult } from './module.f.mjs';
|
|
14
|
+
export type Implementation = Ts<typeof implementation>;
|
|
15
|
+
export type ServerCapabilities = Ts<typeof serverCapabilities>;
|
|
16
|
+
export type InitializeParams = Ts<typeof initializeParams>;
|
|
17
|
+
export type InitializeResult = Ts<typeof initializeResult>;
|
|
18
|
+
export type TextContent = Ts<typeof textContent>;
|
|
19
|
+
export type BlobResource = Ts<typeof blobResource>;
|
|
20
|
+
export type EmbeddedResource = Ts<typeof embeddedResource>;
|
|
21
|
+
export type ContentItem = Ts<typeof contentItem>;
|
|
22
|
+
export type Tool = Ts<typeof tool>;
|
|
23
|
+
export type ToolsListParams = Ts<typeof toolsListParams>;
|
|
24
|
+
export type ToolsListResult = Ts<typeof toolsListResult>;
|
|
25
|
+
export type ToolsCallParams = Ts<typeof toolsCallParams>;
|
|
26
|
+
export type ToolsCallResult = Ts<typeof toolsCallResult>;
|
|
27
|
+
/** Per-method handlers for a hello-world MCP tool server. */
|
|
28
|
+
export type McpHandlers<O extends Operation> = {
|
|
29
|
+
readonly toolsList: (params: ToolsListParams) => Effect<O, ToolsListResult>;
|
|
30
|
+
readonly toolsCall: (params: ToolsCallParams) => Effect<O, ToolsCallResult>;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* A single declarative tool entry combining metadata, input schema, and type-safe handler.
|
|
34
|
+
*
|
|
35
|
+
* The handler receives pre-validated arguments of type `Ts<inputRtti>`, eliminating the need
|
|
36
|
+
* for manual validation or type casting. All validation is encapsulated in the entry.
|
|
37
|
+
*/
|
|
38
|
+
export type ToolEntry<O extends Operation> = {
|
|
39
|
+
readonly name: string;
|
|
40
|
+
readonly description: string;
|
|
41
|
+
readonly inputRtti: Type;
|
|
42
|
+
readonly handle: (args: Unknown) => Effect<O, ToolsCallResult>;
|
|
43
|
+
};
|
|
44
|
+
/** Top-level handler: maps a raw JSON value to a JSON-RPC response (or `null` for notifications). */
|
|
45
|
+
export type Handle<O extends Operation> = (value: Unknown) => Effect<O, Response | null>;
|
|
46
|
+
/** State carried before the peer sends `initialize`. */
|
|
47
|
+
export type Uninitialized = readonly ['uninitialized'];
|
|
48
|
+
/** State after `initialize` response was sent but before `notifications/initialized` arrives. */
|
|
49
|
+
export type Initializing = readonly ['initializing'];
|
|
50
|
+
/** State carried after a successful `initialize` exchange. */
|
|
51
|
+
export type InitializedState = true;
|
|
52
|
+
/** The three phases of an MCP session. */
|
|
53
|
+
export type McpSessionState = Uninitialized | Initializing | readonly ['initialized', InitializedState];
|
|
54
|
+
/** Static configuration supplied by the server implementer. */
|
|
55
|
+
export type McpConfig = {
|
|
56
|
+
readonly serverInfo: Implementation;
|
|
57
|
+
readonly capabilities: ServerCapabilities;
|
|
58
|
+
readonly protocolVersion: string;
|
|
59
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 256-bit content-addressed identifiers for SUL values.
|
|
3
|
+
* Every identifier is one of three variants: a level-3 literal (inline), a raw bit vector (inline),
|
|
4
|
+
* or a SHA2-based hash, selected automatically by `compress` based on size and input type.
|
|
5
|
+
* See `./types.ts` for the `Id` type.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*
|
|
9
|
+
* @import { Vec } from '../../types/bit_vec/types.ts'
|
|
10
|
+
* @import { Point2D } from '../../crypto/secp/types.ts'
|
|
11
|
+
* @import { V8 } from '../../crypto/sha2/types.ts'
|
|
12
|
+
* @import { Id } from './types.ts'
|
|
13
|
+
*/
|
|
14
|
+
import type { Vec } from '../../types/bit_vec/types.ts';
|
|
15
|
+
import type { Id } from './types.ts';
|
|
16
|
+
/**
|
|
17
|
+
* Note: no need to add a prefix.
|
|
18
|
+
*
|
|
19
|
+
* @type {(v: bigint) => Id}
|
|
20
|
+
*/
|
|
21
|
+
export declare const level3Id: (v: bigint) => Id;
|
|
22
|
+
/**
|
|
23
|
+
* Note: length(symbol) <= 253n
|
|
24
|
+
*
|
|
25
|
+
* @param {Vec} symbol
|
|
26
|
+
* @returns {Id}
|
|
27
|
+
*/
|
|
28
|
+
export declare const rawId: (symbol: Vec) => Id;
|
|
29
|
+
/** @type {(v: Id) => boolean} */
|
|
30
|
+
export declare const isRaw: (v: Id) => boolean;
|
|
31
|
+
/** @type {(v: Id) => boolean} */
|
|
32
|
+
export declare const isHash: (v: Id) => boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Note: we don't need to remove the prefix bits from the hash because
|
|
35
|
+
* the prefix equals the prefix mask (`1n << 0xFFn`).
|
|
36
|
+
*
|
|
37
|
+
* @param {bigint} hash
|
|
38
|
+
* @returns {Id}
|
|
39
|
+
*/
|
|
40
|
+
export declare const hashId: (hash: bigint) => Id;
|
|
41
|
+
/** @type {(a: Id, b: Id) => Id} */
|
|
42
|
+
export declare const compress: (a: Id, b: Id) => Id;
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 256-bit content-addressed identifiers for SUL values.
|
|
3
|
+
* Every identifier is one of three variants: a level-3 literal (inline), a raw bit vector (inline),
|
|
4
|
+
* or a SHA2-based hash, selected automatically by `compress` based on size and input type.
|
|
5
|
+
* See `./types.ts` for the `Id` type.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*
|
|
9
|
+
* @import { Vec } from '../../types/bit_vec/types.ts'
|
|
10
|
+
* @import { Point2D } from '../../crypto/secp/types.ts'
|
|
11
|
+
* @import { V8 } from '../../crypto/sha2/types.ts'
|
|
12
|
+
* @import { Id } from './types.ts'
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { toArray } from '../../types/list/module.f.mjs'
|
|
16
|
+
import { length, msb, uint, uintChunkList, unpack, vec } from '../../types/bit_vec/module.f.mjs'
|
|
17
|
+
import { assertEq } from '../../asserts/module.f.mjs'
|
|
18
|
+
import { utf8 } from '../../text/module.f.mjs'
|
|
19
|
+
import { secp256r1 } from '../../crypto/secp/module.f.mjs'
|
|
20
|
+
import { base32 } from '../../crypto/sha2/module.f.mjs'
|
|
21
|
+
import { literal3ToVec } from '../level/literal/module.f.mjs'
|
|
22
|
+
import { log2 } from '../../types/bigint/module.f.mjs'
|
|
23
|
+
import { asBase, asNominal } from '../../types/nominal/module.f.mjs'
|
|
24
|
+
|
|
25
|
+
// 32 bytes = 256 bits.
|
|
26
|
+
//
|
|
27
|
+
// 0 1
|
|
28
|
+
// 0123456789ABCDEF0123456789ABCDEF
|
|
29
|
+
const ivSeed = "Synthetic Universal Language 001"
|
|
30
|
+
|
|
31
|
+
const utf8IvSeed = utf8(ivSeed)
|
|
32
|
+
|
|
33
|
+
const c = secp256r1
|
|
34
|
+
|
|
35
|
+
/** @type {bigint} */
|
|
36
|
+
const ivUint = /** @type {Point2D} */ (c.mul(uint(utf8IvSeed))(c.g))[0]
|
|
37
|
+
|
|
38
|
+
// 64 hex = 256 bits = 32 bytes:
|
|
39
|
+
assertEq(
|
|
40
|
+
ivUint,
|
|
41
|
+
// 0 1 2 3
|
|
42
|
+
// 01234567_89ABCDEF_01234567_89ABCDEF_01234567_89ABCDEF_01234567_89ABCDEF
|
|
43
|
+
0x325d5666_573eb118_f32191de_20d17f64_33392ba3_291ae46c_1474a5ed_a5383f25n
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
const iv = /** @type {V8} */ (toArray(uintChunkList(msb)(32n)({ length: 256n, uint: ivUint })))
|
|
47
|
+
|
|
48
|
+
assertEq(iv.length, 8)
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Note: no need to add a prefix.
|
|
52
|
+
*
|
|
53
|
+
* @type {(v: bigint) => Id}
|
|
54
|
+
*/
|
|
55
|
+
export const level3Id =
|
|
56
|
+
asNominal
|
|
57
|
+
|
|
58
|
+
const rawPrefixOffset = 0xFEn
|
|
59
|
+
|
|
60
|
+
const rawPrefix = 1n << rawPrefixOffset
|
|
61
|
+
|
|
62
|
+
assertEq(
|
|
63
|
+
rawPrefix,
|
|
64
|
+
// 0 1 2 3
|
|
65
|
+
// 01234567_89ABCDEF_01234567_89ABCDEF_01234567_89ABCDEF_01234567_89ABCDEF
|
|
66
|
+
0x40000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000n
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
// 253
|
|
70
|
+
const rawLenMax = 0xFDn
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Note: length(symbol) <= 253n
|
|
74
|
+
*
|
|
75
|
+
* @param {Vec} symbol
|
|
76
|
+
* @returns {Id}
|
|
77
|
+
*/
|
|
78
|
+
export const rawId = symbol => {
|
|
79
|
+
const { length, uint } = unpack(symbol)
|
|
80
|
+
return asNominal(rawPrefix | uint | (1n << length))
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/** @type {(v: Id) => boolean} */
|
|
84
|
+
export const isRaw = v =>
|
|
85
|
+
asBase(v) >> rawPrefixOffset === 1n
|
|
86
|
+
|
|
87
|
+
/** @type {(a: Id) => Vec} */
|
|
88
|
+
const toRaw = a => {
|
|
89
|
+
if (!isRaw(a)) {
|
|
90
|
+
return literal3ToVec(asBase(a))
|
|
91
|
+
}
|
|
92
|
+
const raw = asBase(a) ^ rawPrefix
|
|
93
|
+
const len = log2(raw)
|
|
94
|
+
return vec(len)(raw ^ (1n << len))
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const hashPrefixOffset = 0xFFn
|
|
98
|
+
|
|
99
|
+
const hashPrefix = 1n << hashPrefixOffset
|
|
100
|
+
|
|
101
|
+
assertEq(
|
|
102
|
+
hashPrefix,
|
|
103
|
+
// 0 1 2 3
|
|
104
|
+
// 01234567_89ABCDEF_01234567_89ABCDEF_01234567_89ABCDEF_01234567_89ABCDEF
|
|
105
|
+
0x80000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000n
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
/** @type {(v: Id) => boolean} */
|
|
109
|
+
export const isHash = v =>
|
|
110
|
+
asBase(v) >> hashPrefixOffset === 1n
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Note: we don't need to remove the prefix bits from the hash because
|
|
114
|
+
* the prefix equals the prefix mask (`1n << 0xFFn`).
|
|
115
|
+
*
|
|
116
|
+
* @param {bigint} hash
|
|
117
|
+
* @returns {Id}
|
|
118
|
+
*/
|
|
119
|
+
export const hashId = hash =>
|
|
120
|
+
asNominal(hashPrefix | hash)
|
|
121
|
+
|
|
122
|
+
const hash2 = base32.compress(iv)
|
|
123
|
+
|
|
124
|
+
const vecX20 = vec(0x20n)
|
|
125
|
+
|
|
126
|
+
const { concat, listToVec } = msb
|
|
127
|
+
|
|
128
|
+
/** @type {(a: Id, b: Id) => Id} */
|
|
129
|
+
const hashMerge = (a, b) =>
|
|
130
|
+
hashId(uint(listToVec(hash2((asBase(a) << 0x100n) | asBase(b)).map(vecX20))))
|
|
131
|
+
|
|
132
|
+
/** @type {(a: Id, b: Id) => Id} */
|
|
133
|
+
export const compress = (a, b) => {
|
|
134
|
+
if (isHash(a) || isHash(b)) {
|
|
135
|
+
return hashMerge(a, b)
|
|
136
|
+
}
|
|
137
|
+
const ra = toRaw(a)
|
|
138
|
+
const rb = toRaw(b)
|
|
139
|
+
const len = length(ra) + length(rb)
|
|
140
|
+
if (len > rawLenMax) {
|
|
141
|
+
return hashMerge(a, b)
|
|
142
|
+
}
|
|
143
|
+
return rawId(concat(ra)(rb))
|
|
144
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { assert, assertEq } from '../../asserts/module.f.mjs'
|
|
2
|
+
import { mask } from '../../types/bigint/module.f.mjs'
|
|
3
|
+
import { vec } from '../../types/bit_vec/module.f.mjs'
|
|
4
|
+
import { compress, hashId, isHash, isRaw, level3Id, rawId } from './module.f.mjs'
|
|
5
|
+
import { asBase } from '../../types/nominal/module.f.mjs'
|
|
6
|
+
|
|
7
|
+
// literal3ToVec bit patterns for symbols used below:
|
|
8
|
+
// 0 → vec(8n)(0n) 4 → vec(8n)(3n)
|
|
9
|
+
// 1 → vec(8n)(1n) 10 → vec(8n)(5n)
|
|
10
|
+
// 128 → vec(8n)(15n)
|
|
11
|
+
|
|
12
|
+
// Two 127-bit raw payloads overflow the 253-bit inline limit, producing a hash value.
|
|
13
|
+
const rawX7F = rawId(vec(0x7Fn)(mask(0x7Fn)))
|
|
14
|
+
const overflowHash = compress(rawX7F, rawX7F)
|
|
15
|
+
|
|
16
|
+
const hFF = hashId(mask(0xFFn))
|
|
17
|
+
const hFE = hashId(mask(0xFFn) - 1n)
|
|
18
|
+
|
|
19
|
+
assertEq(asBase(level3Id(0n)), 0n)
|
|
20
|
+
assertEq(asBase(hashId(0n)), 1n << 0xFFn)
|
|
21
|
+
assertEq(asBase(hFF), mask(0x100n))
|
|
22
|
+
|
|
23
|
+
export const proof = {
|
|
24
|
+
// Two level-3 literals whose combined bit vectors fit inline (≤ 253 bits)
|
|
25
|
+
inline_00_00: () => assertEq(compress(level3Id(0x00n), level3Id(0x00n)), rawId(vec(16n)(0x0000n))),
|
|
26
|
+
inline_00_01: () => assertEq(compress(level3Id(0x00n), level3Id(0x01n)), rawId(vec(16n)(0x0001n))),
|
|
27
|
+
inline_01_00: () => assertEq(compress(level3Id(0x01n), level3Id(0x00n)), rawId(vec(16n)(0x0100n))),
|
|
28
|
+
inline_01_01: () => assertEq(compress(level3Id(0x01n), level3Id(0x01n)), rawId(vec(16n)(0x0101n))),
|
|
29
|
+
inline_00_04: () => assertEq(compress(level3Id(0x00n), level3Id(0x04n)), rawId(vec(16n)(0x0003n))),
|
|
30
|
+
inline_04_00: () => assertEq(compress(level3Id(0x04n), level3Id(0x00n)), rawId(vec(16n)(0x0300n))),
|
|
31
|
+
inline_0A_80: () => assertEq(compress(level3Id(0x0An), level3Id(0x80n)), rawId(vec(16n)(0x050Fn))),
|
|
32
|
+
|
|
33
|
+
// Inline outputs are raw-encoded (bit 254 set, bit 255 not set)
|
|
34
|
+
inline_is_raw: () => assert(isRaw(compress(level3Id(0x00n), level3Id(0x00n)))),
|
|
35
|
+
|
|
36
|
+
// Non-commutativity: argument order is preserved in concatenation
|
|
37
|
+
non_commutative: () => {
|
|
38
|
+
assert(compress(level3Id(0n), level3Id(1n)) !== compress(level3Id(1n), level3Id(0n)), compress(level3Id(0n), level3Id(1n)))
|
|
39
|
+
},
|
|
40
|
+
|
|
41
|
+
// Overflow: two 127-bit raw payloads sum to 254 bits, exceeding the 253-bit inline limit
|
|
42
|
+
overflow_is_hash: () => assert(isHash(overflowHash)),
|
|
43
|
+
|
|
44
|
+
// Hash input: either argument being a hash always triggers SHA2-based merge
|
|
45
|
+
hash_left_is_hash: () => assert(isHash(compress(overflowHash, level3Id(0n)))),
|
|
46
|
+
hash_right_is_hash: () => assert(isHash(compress(level3Id(0n), overflowHash))),
|
|
47
|
+
hash_non_commutative: () => {
|
|
48
|
+
assert(compress(overflowHash, level3Id(0n)) !== compress(level3Id(0n), overflowHash), compress(overflowHash, level3Id(0n)))
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
// High-bit sensitivity: prefix bit of `a` is included in the SHA2 upper half
|
|
52
|
+
hash_merge_a_high_bits: () => {
|
|
53
|
+
assert(compress(hashId(0n), hashId(0n)) !== compress(level3Id(0n), hashId(0n)), compress(hashId(0n), hashId(0n)))
|
|
54
|
+
},
|
|
55
|
+
// High-bit sensitivity: prefix bit of `b` is included in the SHA2 lower half
|
|
56
|
+
hash_merge_b_high_bits: () => {
|
|
57
|
+
assert(compress(hashId(0n), hashId(0n)) !== compress(hashId(0n), level3Id(0n)), compress(hashId(0n), hashId(0n)))
|
|
58
|
+
},
|
|
59
|
+
|
|
60
|
+
// Shift correctness: changing a bit in `a` (upper 256 bits of SHA2 input) changes result
|
|
61
|
+
hash_merge_a_sensitivity: () => {
|
|
62
|
+
assert(compress(hFF, hFF) !== compress(hFE, hFF), compress(hFF, hFF))
|
|
63
|
+
},
|
|
64
|
+
// Shift correctness: changing a bit in `b` (lower 256 bits of SHA2 input) changes result
|
|
65
|
+
hash_merge_b_sensitivity: () => {
|
|
66
|
+
assert(compress(hFF, hFF) !== compress(hFF, hFE), compress(hFF, hFF))
|
|
67
|
+
},
|
|
68
|
+
// Shift correctness: same bit-flip in `a` vs `b` lands at different SHA2 input positions
|
|
69
|
+
hash_merge_shift: () => {
|
|
70
|
+
assert(compress(hFE, hFF) !== compress(hFF, hFE), compress(hFE, hFF))
|
|
71
|
+
},
|
|
72
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-level API for SUL identifiers.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { Nominal } from '../../types/nominal/types.ts';
|
|
7
|
+
/** A 256-bit SUL identifier. One of three variants: level-3 literal, raw bit vector, or SHA2 hash. */
|
|
8
|
+
export type Id = Nominal<'sul/id', '6f5f6da053a6ac70e9687d42b7a09e925c3be21027f55beb2cba3040bf3d5b71', bigint>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streaming encoder for SUL hash-level symbols using a Patricia trie and 256-bit content-addressed hashes.
|
|
3
|
+
* See `./types.ts` for the `Add`/`EncodeState` type-level API.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*
|
|
7
|
+
* @import { Create } from '../../../types/patricia_trie/types.ts'
|
|
8
|
+
* @import { Id } from '../../id/types.ts'
|
|
9
|
+
* @import { Add, EncodeState } from './types.ts'
|
|
10
|
+
*/
|
|
11
|
+
import type { Id } from '../../id/types.ts';
|
|
12
|
+
import type { Add, EncodeState } from './types.ts';
|
|
13
|
+
/**
|
|
14
|
+
* Returns a streaming encoder for hash-level symbols.
|
|
15
|
+
*
|
|
16
|
+
* The returned step function processes one level-3 symbol at a time.
|
|
17
|
+
* It returns `undefined` while the strictly-decreasing prefix is still
|
|
18
|
+
* being accumulated. When the terminating symbol `t` arrives (`t >= last`),
|
|
19
|
+
* the word `[s0 > ... > sk, t]` is finalised:
|
|
20
|
+
*
|
|
21
|
+
* 1. The Patricia trie of `[s0, ..., sk]` is collapsed to a root hash.
|
|
22
|
+
* 2. The root is merged with `t` via `compress`, producing the output symbol.
|
|
23
|
+
* 3. State is reset to an empty stack (storage is preserved).
|
|
24
|
+
*
|
|
25
|
+
* `add` is called once for every `compress` call. `isSymbol` is `false` for
|
|
26
|
+
* Patricia trie internal merges and `true` for the terminal `compress(root, t)`.
|
|
27
|
+
*/
|
|
28
|
+
export declare const encode: <S>(
|
|
29
|
+
/**
|
|
30
|
+
* @template S
|
|
31
|
+
* @param {Add<S>} add
|
|
32
|
+
* @returns {(symbol: Id, state: EncodeState<S>) => readonly [Id | undefined, EncodeState<S>]}
|
|
33
|
+
*/
|
|
34
|
+
add: Add<S>) => (symbol: Id, state: EncodeState<S>) => readonly [Id | undefined, EncodeState<S>];
|
|
35
|
+
/**
|
|
36
|
+
* Returns the initial encoding state wrapping `storage`.
|
|
37
|
+
*
|
|
38
|
+
* @type {<S>(storage: S) => EncodeState<S>}
|
|
39
|
+
*/
|
|
40
|
+
export declare const emptyEncodeState: <S>(storage: S) => EncodeState<S>;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streaming encoder for SUL hash-level symbols using a Patricia trie and 256-bit content-addressed hashes.
|
|
3
|
+
* See `./types.ts` for the `Add`/`EncodeState` type-level API.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*
|
|
7
|
+
* @import { Create } from '../../../types/patricia_trie/types.ts'
|
|
8
|
+
* @import { Id } from '../../id/types.ts'
|
|
9
|
+
* @import { Add, EncodeState } from './types.ts'
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { emptyState, patriciaTrie } from '../../../types/patricia_trie/module.f.mjs'
|
|
13
|
+
import { compress } from '../../id/module.f.mjs'
|
|
14
|
+
import { asBase } from '../../../types/nominal/module.f.mjs'
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Returns a streaming encoder for hash-level symbols.
|
|
18
|
+
*
|
|
19
|
+
* The returned step function processes one level-3 symbol at a time.
|
|
20
|
+
* It returns `undefined` while the strictly-decreasing prefix is still
|
|
21
|
+
* being accumulated. When the terminating symbol `t` arrives (`t >= last`),
|
|
22
|
+
* the word `[s0 > ... > sk, t]` is finalised:
|
|
23
|
+
*
|
|
24
|
+
* 1. The Patricia trie of `[s0, ..., sk]` is collapsed to a root hash.
|
|
25
|
+
* 2. The root is merged with `t` via `compress`, producing the output symbol.
|
|
26
|
+
* 3. State is reset to an empty stack (storage is preserved).
|
|
27
|
+
*
|
|
28
|
+
* `add` is called once for every `compress` call. `isSymbol` is `false` for
|
|
29
|
+
* Patricia trie internal merges and `true` for the terminal `compress(root, t)`.
|
|
30
|
+
*/
|
|
31
|
+
export const encode =
|
|
32
|
+
/**
|
|
33
|
+
* @template S
|
|
34
|
+
* @param {Add<S>} add
|
|
35
|
+
* @returns {(symbol: Id, state: EncodeState<S>) => readonly [Id | undefined, EncodeState<S>]}
|
|
36
|
+
*/
|
|
37
|
+
add => {
|
|
38
|
+
/** @type {(isSymbol: boolean) => Create<S, Id>} */
|
|
39
|
+
const create = isSymbol => (a, b, s) => {
|
|
40
|
+
const m = compress(a, b)
|
|
41
|
+
return [m, add(a, b, m, isSymbol, s)]
|
|
42
|
+
}
|
|
43
|
+
const { push, end } = patriciaTrie(create(false))
|
|
44
|
+
const rootCreate = create(true)
|
|
45
|
+
return (symbol, state) => {
|
|
46
|
+
const [, stack] = state
|
|
47
|
+
const last = stack.at(-1)
|
|
48
|
+
if (last === undefined || last[0] > asBase(symbol)) {
|
|
49
|
+
return [undefined, push([asBase(symbol), symbol], state)]
|
|
50
|
+
}
|
|
51
|
+
const [root1, storage1] = end(state)
|
|
52
|
+
const [root2, storage2] = rootCreate(/** @type {Id} */ (root1), symbol, storage1)
|
|
53
|
+
return [root2, [storage2, []]]
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Returns the initial encoding state wrapping `storage`.
|
|
59
|
+
*
|
|
60
|
+
* @type {<S>(storage: S) => EncodeState<S>}
|
|
61
|
+
*/
|
|
62
|
+
export const emptyEncodeState = emptyState
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @import { Id } from '../../id/types.ts'
|
|
3
|
+
* @import { EncodeState } from './types.ts'
|
|
4
|
+
*/
|
|
5
|
+
import type { Id } from '../../id/types.ts';
|
|
6
|
+
export type _NodeList = readonly (readonly [Id, Id, Id, boolean])[];
|
|
7
|
+
export declare const proof: {
|
|
8
|
+
min_equal: () => void;
|
|
9
|
+
min_greater: () => void;
|
|
10
|
+
intermediate_undefined: () => void;
|
|
11
|
+
three_symbol: () => void;
|
|
12
|
+
output_is_last_add: () => void;
|
|
13
|
+
state_reset: () => void;
|
|
14
|
+
storage_accumulates: () => void;
|
|
15
|
+
two_words: () => void;
|
|
16
|
+
non_commutative: () => void;
|
|
17
|
+
isSymbol_terminal_only: () => void;
|
|
18
|
+
isSymbol_min_word: () => void;
|
|
19
|
+
};
|