functionalscript 0.43.1 → 0.44.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.mjs +309 -0
- package/fjs/asn.1/types.d.ts +37 -0
- package/fjs/asn.1/types.js +6 -0
- package/fjs/asserts/module.f.d.mts +37 -0
- package/fjs/asserts/module.f.mjs +49 -0
- package/fjs/asserts/proof.f.mjs +19 -0
- package/fjs/asserts/types.d.ts +11 -0
- package/fjs/asserts/types.js +6 -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 +2 -0
- package/fjs/basen/base128/proof.f.mjs +30 -0
- package/fjs/basen/base64/module.f.d.mts +14 -0
- package/fjs/basen/base64/module.f.mjs +71 -0
- package/fjs/basen/base64/proof.f.d.mts +17 -0
- package/fjs/basen/base64/proof.f.mjs +147 -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 +8 -0
- package/fjs/basen/cbase32/proof.f.mjs +77 -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/basen/types.js +6 -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 +160 -0
- package/fjs/bnf/data/types.d.ts +35 -0
- package/fjs/bnf/data/types.js +6 -0
- package/fjs/bnf/descent/module.f.d.mts +33 -0
- package/fjs/bnf/descent/module.f.mjs +212 -0
- package/fjs/bnf/descent/proof.f.d.mts +13 -0
- package/fjs/bnf/descent/proof.f.mjs +351 -0
- package/fjs/bnf/descent/types.d.ts +71 -0
- package/fjs/bnf/descent/types.js +6 -0
- package/fjs/bnf/ll1/module.f.d.mts +41 -0
- package/fjs/bnf/ll1/module.f.mjs +199 -0
- package/fjs/bnf/ll1/proof.f.d.mts +16 -0
- package/fjs/bnf/ll1/proof.f.mjs +352 -0
- package/fjs/bnf/ll1/types.d.ts +59 -0
- package/fjs/bnf/ll1/types.js +6 -0
- package/fjs/bnf/module.f.d.mts +164 -0
- package/fjs/bnf/module.f.mjs +298 -0
- package/fjs/bnf/proof.f.d.mts +17 -0
- package/fjs/bnf/proof.f.mjs +89 -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 +35 -0
- package/fjs/bnf/token_symbol/module.f.mjs +62 -0
- package/fjs/bnf/token_symbol/proof.f.mjs +43 -0
- package/fjs/bnf/token_symbol/types.d.ts +27 -0
- package/fjs/bnf/token_symbol/types.js +6 -0
- package/fjs/bnf/types.d.ts +67 -0
- package/fjs/bnf/types.js +6 -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 +18 -0
- package/fjs/cas/cli/proof.f.mjs +118 -0
- package/fjs/cas/evo/module.f.d.mts +163 -0
- package/fjs/cas/evo/module.f.mjs +556 -0
- package/fjs/cas/evo/proof.f.d.mts +55 -0
- package/fjs/cas/evo/proof.f.mjs +749 -0
- package/fjs/cas/evo/types.d.ts +111 -0
- package/fjs/cas/evo/types.js +7 -0
- package/fjs/cas/module.f.d.mts +68 -0
- package/fjs/cas/module.f.mjs +363 -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/cas/types.js +6 -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 +87 -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 +28 -0
- package/fjs/ci/nix/proof.f.mjs +146 -0
- package/fjs/ci/nix/types.d.ts +16 -0
- package/fjs/ci/nix/types.js +6 -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 +20 -0
- package/fjs/ci/proof.f.mjs +219 -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/ci/types.js +6 -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 +16 -0
- package/fjs/cli/proof.f.mjs +130 -0
- package/fjs/cli/types.d.ts +15 -0
- package/fjs/cli/types.js +6 -0
- package/fjs/common/monoid/module.f.d.mts +87 -0
- package/fjs/common/monoid/module.f.mjs +104 -0
- package/fjs/common/monoid/proof.f.d.mts +10 -0
- package/fjs/common/monoid/proof.f.mjs +58 -0
- package/fjs/common/monoid/types.d.ts +50 -0
- package/fjs/common/monoid/types.js +6 -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/pow/types.js +6 -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 +9 -0
- package/fjs/crypto/secp/proof.f.mjs +137 -0
- package/fjs/crypto/secp/types.d.ts +36 -0
- package/fjs/crypto/secp/types.js +6 -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 +32 -0
- package/fjs/crypto/sha2/proof.f.mjs +144 -0
- package/fjs/crypto/sha2/types.d.ts +57 -0
- package/fjs/crypto/sha2/types.js +6 -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/sign/types.js +6 -0
- package/fjs/crypto/vdf/module.f.d.mts +15 -0
- package/fjs/crypto/vdf/module.f.mjs +84 -0
- package/fjs/crypto/vdf/proof.f.mjs +106 -0
- package/fjs/crypto/vdf/types.d.ts +18 -0
- package/fjs/crypto/vdf/types.js +6 -0
- package/fjs/dev/module.f.d.mts +56 -0
- package/fjs/dev/module.f.mjs +170 -0
- package/fjs/dev/package_json/module.f.d.mts +32 -0
- package/fjs/dev/package_json/module.f.mjs +37 -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/types.js +6 -0
- package/fjs/dev/update/module.f.d.mts +19 -0
- package/fjs/dev/update/module.f.mjs +36 -0
- package/fjs/dev/update/proof.f.d.mts +7 -0
- package/fjs/dev/update/proof.f.mjs +36 -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/ast/types.js +8 -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 +75 -0
- package/fjs/djs/parser/module.f.mjs +547 -0
- package/fjs/djs/parser/proof.f.mjs +543 -0
- package/fjs/djs/parser/types.d.ts +11 -0
- package/fjs/djs/parser/types.js +7 -0
- package/fjs/djs/proof.f.mjs +52 -0
- package/fjs/djs/serializer/module.f.d.mts +30 -0
- package/fjs/djs/serializer/module.f.mjs +206 -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 +624 -0
- package/fjs/djs/tokenizer/proof.f.mjs +980 -0
- package/fjs/djs/tokenizer/types.d.ts +20 -0
- package/fjs/djs/tokenizer/types.js +7 -0
- package/fjs/djs/transpiler/module.f.d.mts +44 -0
- package/fjs/djs/transpiler/module.f.mjs +141 -0
- package/fjs/djs/transpiler/proof.f.mjs +76 -0
- package/fjs/djs/types.d.ts +13 -0
- package/fjs/djs/types.js +7 -0
- package/fjs/effects/eff/module.f.d.mts +10 -0
- package/fjs/effects/eff/module.f.mjs +68 -0
- package/fjs/effects/eff/proof.f.d.mts +12 -0
- package/fjs/effects/eff/proof.f.mjs +66 -0
- package/fjs/effects/eff/types.d.ts +71 -0
- package/fjs/effects/eff/types.js +6 -0
- package/fjs/effects/list/module.f.d.mts +24 -0
- package/fjs/effects/list/module.f.mjs +34 -0
- package/fjs/effects/list/types.d.ts +26 -0
- package/fjs/effects/list/types.js +6 -0
- package/fjs/effects/memory/module.f.d.mts +32 -0
- package/fjs/effects/memory/module.f.mjs +44 -0
- package/fjs/effects/memory/proof.f.d.mts +12 -0
- package/fjs/effects/memory/proof.f.mjs +83 -0
- package/fjs/effects/memory/types.d.ts +18 -0
- package/fjs/effects/memory/types.js +6 -0
- package/fjs/effects/mock/module.f.d.mts +6 -0
- package/fjs/effects/mock/module.f.mjs +26 -0
- package/fjs/effects/mock/types.d.ts +15 -0
- package/fjs/effects/mock/types.js +6 -0
- package/fjs/effects/module.d.mts +7 -0
- package/fjs/effects/module.f.d.mts +350 -0
- package/fjs/effects/module.f.mjs +382 -0
- package/fjs/effects/module.mjs +18 -0
- package/fjs/effects/node/memory/module.d.mts +24 -0
- package/fjs/effects/node/memory/module.mjs +59 -0
- package/fjs/effects/node/memory/proof.mjs +43 -0
- package/fjs/effects/node/module.d.mts +54 -0
- package/fjs/effects/node/module.f.d.mts +172 -0
- package/fjs/effects/node/module.f.mjs +354 -0
- package/fjs/effects/node/module.mjs +393 -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/types.js +6 -0
- package/fjs/effects/node/virtual/module.f.d.mts +31 -0
- package/fjs/effects/node/virtual/module.f.mjs +434 -0
- package/fjs/effects/node/virtual/proof.f.d.mts +35 -0
- package/fjs/effects/node/virtual/proof.f.mjs +226 -0
- package/fjs/effects/node/virtual/types.d.ts +39 -0
- package/fjs/effects/node/virtual/types.js +7 -0
- package/fjs/effects/proof.f.d.mts +62 -0
- package/fjs/effects/proof.f.mjs +231 -0
- package/fjs/effects/types.d.ts +115 -0
- package/fjs/effects/types.js +6 -0
- package/fjs/emergent_testing/all.test.js +2 -2
- 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 +150 -0
- package/fjs/emergent_testing/module.f.mjs +414 -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/emergent_testing/types.js +6 -0
- package/fjs/fsc/bnf.f.d.mts +3 -0
- package/fjs/fsc/bnf.f.mjs +77 -0
- package/fjs/fsc/json.f.d.mts +13 -0
- package/fjs/fsc/json.f.mjs +124 -0
- package/fjs/fsc/module.f.d.mts +14 -0
- package/fjs/fsc/module.f.mjs +138 -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.mjs +146 -0
- package/fjs/js/tokenizer/module.f.d.mts +19 -0
- package/fjs/js/tokenizer/module.f.mjs +795 -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/js/tokenizer/types.js +6 -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 +32 -0
- package/fjs/mcp/module.f.mjs +96 -0
- package/fjs/mcp/proof.f.d.mts +46 -0
- package/fjs/mcp/proof.f.mjs +725 -0
- package/fjs/media/html/module.f.d.mts +43 -0
- package/fjs/media/html/module.f.mjs +167 -0
- package/fjs/media/html/proof.f.mjs +77 -0
- package/fjs/media/html/types.d.ts +19 -0
- package/fjs/media/html/types.js +6 -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 +219 -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 +34 -0
- package/fjs/media/json/parser/types.js +6 -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 +26 -0
- package/fjs/media/json/rtti/proof.f.mjs +86 -0
- package/fjs/media/json/schema/module.f.d.mts +79 -0
- package/fjs/media/json/schema/module.f.mjs +144 -0
- package/fjs/media/json/schema/proof.f.d.mts +40 -0
- package/fjs/media/json/schema/proof.f.mjs +93 -0
- package/fjs/media/json/serializer/module.f.d.mts +27 -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 +17 -0
- package/fjs/media/json/tokenizer/module.f.mjs +77 -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/tokenizer/types.js +6 -0
- package/fjs/media/json/types.d.ts +25 -0
- package/fjs/media/json/types.js +13 -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 +14 -0
- package/fjs/media/nix/module.f.mjs +261 -0
- package/fjs/media/nix/proof.f.mjs +181 -0
- package/fjs/media/nix/types.d.ts +22 -0
- package/fjs/media/nix/types.js +6 -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 +119 -0
- package/fjs/media/revision/module.f.mjs +166 -0
- package/fjs/media/revision/proof.f.mjs +228 -0
- package/fjs/media/revision/types.d.ts +16 -0
- package/fjs/media/revision/types.js +8 -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 +97 -0
- package/fjs/media/type/module.f.mjs +281 -0
- package/fjs/media/type/proof.f.mjs +285 -0
- package/fjs/media/type/types.d.ts +67 -0
- package/fjs/media/type/types.js +6 -0
- package/fjs/media/types.d.ts +26 -0
- package/fjs/media/types.js +7 -0
- package/fjs/module.f.d.mts +3 -0
- package/fjs/module.f.mjs +60 -0
- package/fjs/module.mjs +6 -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/types.js +11 -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 +55 -0
- package/fjs/path/module.f.mjs +96 -0
- package/fjs/path/proof.f.mjs +125 -0
- package/fjs/proof.f.mjs +48 -0
- package/fjs/protocol/json_rpc/module.f.d.mts +127 -0
- package/fjs/protocol/json_rpc/module.f.mjs +112 -0
- package/fjs/protocol/json_rpc/proof.f.mjs +84 -0
- package/fjs/protocol/json_rpc/types.d.ts +30 -0
- package/fjs/protocol/json_rpc/types.js +8 -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 +53 -0
- package/fjs/protocol/mcp/proof.f.mjs +312 -0
- package/fjs/protocol/mcp/stdio/module.f.d.mts +52 -0
- package/fjs/protocol/mcp/stdio/module.f.mjs +132 -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/types.d.ts +59 -0
- package/fjs/protocol/mcp/types.js +8 -0
- package/fjs/sul/id/module.f.d.mts +37 -0
- package/fjs/sul/id/module.f.mjs +143 -0
- package/fjs/sul/id/proof.f.mjs +72 -0
- package/fjs/sul/id/types.d.ts +8 -0
- package/fjs/sul/id/types.js +6 -0
- package/fjs/sul/level/hash/module.f.d.mts +37 -0
- package/fjs/sul/level/hash/module.f.mjs +61 -0
- package/fjs/sul/level/hash/proof.f.d.mts +15 -0
- package/fjs/sul/level/hash/proof.f.mjs +131 -0
- package/fjs/sul/level/hash/types.d.ts +20 -0
- package/fjs/sul/level/hash/types.js +6 -0
- package/fjs/sul/level/literal/module.f.d.mts +54 -0
- package/fjs/sul/level/literal/module.f.mjs +120 -0
- package/fjs/sul/level/literal/proof.f.mjs +788 -0
- package/fjs/sul/level/literal/types.d.ts +31 -0
- package/fjs/sul/level/literal/types.js +6 -0
- package/fjs/sul/module.f.d.mts +25 -0
- package/fjs/sul/module.f.mjs +69 -0
- package/fjs/sul/proof.f.d.mts +11 -0
- package/fjs/sul/proof.f.mjs +62 -0
- package/fjs/sul/types.d.ts +19 -0
- package/fjs/sul/types.js +6 -0
- package/fjs/text/ascii/module.f.d.mts +136 -0
- package/fjs/text/ascii/module.f.mjs +224 -0
- package/fjs/text/ascii/proof.f.mjs +16 -0
- package/fjs/text/code_point/module.f.d.mts +74 -0
- package/fjs/text/code_point/module.f.mjs +139 -0
- package/fjs/text/code_point/proof.f.mjs +80 -0
- package/fjs/text/module.f.d.mts +39 -0
- package/fjs/text/module.f.mjs +61 -0
- package/fjs/text/proof.f.mjs +48 -0
- package/fjs/text/sgr/module.f.d.mts +58 -0
- package/fjs/text/sgr/module.f.mjs +99 -0
- package/fjs/text/sgr/proof.f.mjs +39 -0
- package/fjs/text/sgr/types.d.ts +12 -0
- package/fjs/text/sgr/types.js +6 -0
- package/fjs/text/types.d.ts +13 -0
- package/fjs/text/types.js +6 -0
- package/fjs/text/utf16/module.f.d.mts +147 -0
- package/fjs/text/utf16/module.f.mjs +350 -0
- package/fjs/text/utf16/proof.f.d.mts +11 -0
- package/fjs/text/utf16/proof.f.mjs +158 -0
- package/fjs/text/utf16/types.d.ts +19 -0
- package/fjs/text/utf16/types.js +6 -0
- package/fjs/text/utf8/module.f.d.mts +69 -0
- package/fjs/text/utf8/module.f.mjs +280 -0
- package/fjs/text/utf8/proof.f.mjs +217 -0
- package/fjs/text/utf8/types.d.ts +26 -0
- package/fjs/text/utf8/types.js +6 -0
- package/fjs/types/array/module.f.d.mts +68 -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/array/types.js +6 -0
- package/fjs/types/bigfloat/module.f.d.mts +14 -0
- package/fjs/types/bigfloat/module.f.mjs +99 -0
- package/fjs/types/bigfloat/proof.f.mjs +218 -0
- package/fjs/types/bigfloat/types.d.ts +6 -0
- package/fjs/types/bigfloat/types.js +6 -0
- package/fjs/types/bigint/benchmark.d.mts +1 -0
- package/fjs/types/bigint/benchmark.mjs +205 -0
- package/fjs/types/bigint/module.f.d.mts +176 -0
- package/fjs/types/bigint/module.f.mjs +289 -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/bigint/types.js +6 -0
- package/fjs/types/bit_vec/module.f.d.mts +199 -0
- package/fjs/types/bit_vec/module.f.mjs +485 -0
- package/fjs/types/bit_vec/proof.f.mjs +495 -0
- package/fjs/types/bit_vec/types.d.ts +51 -0
- package/fjs/types/bit_vec/types.js +6 -0
- package/fjs/types/btree/find/module.f.d.mts +15 -0
- package/fjs/types/btree/find/module.f.mjs +80 -0
- package/fjs/types/btree/find/proof.f.d.mts +4 -0
- package/fjs/types/btree/find/proof.f.mjs +121 -0
- package/fjs/types/btree/find/types.d.ts +22 -0
- package/fjs/types/btree/find/types.js +6 -0
- package/fjs/types/btree/module.f.d.mts +10 -0
- package/fjs/types/btree/module.f.mjs +39 -0
- package/fjs/types/btree/proof.f.d.mts +14 -0
- package/fjs/types/btree/proof.f.mjs +85 -0
- package/fjs/types/btree/remove/module.f.d.mts +21 -0
- package/fjs/types/btree/remove/module.f.mjs +187 -0
- package/fjs/types/btree/remove/proof.f.mjs +472 -0
- package/fjs/types/btree/set/module.f.d.mts +5 -0
- package/fjs/types/btree/set/module.f.mjs +117 -0
- package/fjs/types/btree/set/proof.f.mjs +427 -0
- package/fjs/types/btree/types/module.f.d.mts +19 -0
- package/fjs/types/btree/types/module.f.mjs +19 -0
- package/fjs/types/btree/types/types.d.ts +14 -0
- package/fjs/types/btree/types/types.js +6 -0
- package/fjs/types/byte_set/module.f.d.mts +26 -0
- package/fjs/types/byte_set/module.f.mjs +66 -0
- package/fjs/types/byte_set/proof.f.d.mts +12 -0
- package/fjs/types/byte_set/proof.f.mjs +84 -0
- package/fjs/types/byte_set/types.d.ts +6 -0
- package/fjs/types/byte_set/types.js +6 -0
- package/fjs/types/function/compare/module.f.d.mts +44 -0
- package/fjs/types/function/compare/module.f.mjs +71 -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/compare/types.js +6 -0
- package/fjs/types/function/module.f.d.mts +26 -0
- package/fjs/types/function/module.f.mjs +32 -0
- package/fjs/types/function/operator/module.f.d.mts +37 -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/operator/types.js +6 -0
- package/fjs/types/function/proof.f.mjs +16 -0
- package/fjs/types/function/types.d.ts +16 -0
- package/fjs/types/function/types.js +6 -0
- package/fjs/types/list/module.f.d.mts +88 -0
- package/fjs/types/list/module.f.mjs +309 -0
- package/fjs/types/list/proof.f.d.mts +32 -0
- package/fjs/types/list/proof.f.mjs +363 -0
- package/fjs/types/list/types.d.ts +36 -0
- package/fjs/types/list/types.js +6 -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 +30 -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/nibble_set/types.js +6 -0
- package/fjs/types/nominal/module.f.d.mts +9 -0
- package/fjs/types/nominal/module.f.mjs +16 -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/nominal/types.js +6 -0
- package/fjs/types/nullable/module.f.d.mts +38 -0
- package/fjs/types/nullable/module.f.mjs +53 -0
- package/fjs/types/nullable/proof.f.mjs +34 -0
- package/fjs/types/nullable/types.d.ts +6 -0
- package/fjs/types/nullable/types.js +6 -0
- package/fjs/types/number/module.f.d.mts +23 -0
- package/fjs/types/number/module.f.mjs +55 -0
- package/fjs/types/number/proof.f.mjs +204 -0
- package/fjs/types/object/module.f.d.mts +33 -0
- package/fjs/types/object/module.f.mjs +58 -0
- package/fjs/types/object/proof.f.d.mts +25 -0
- package/fjs/types/object/proof.f.mjs +26 -0
- package/fjs/types/object/types.d.ts +50 -0
- package/fjs/types/object/types.js +8 -0
- package/fjs/types/ordered_map/module.f.d.mts +21 -0
- package/fjs/types/ordered_map/module.f.mjs +54 -0
- package/fjs/types/ordered_map/proof.f.mjs +88 -0
- package/fjs/types/ordered_map/types.d.ts +8 -0
- package/fjs/types/ordered_map/types.js +6 -0
- package/fjs/types/patricia_trie/module.f.d.mts +19 -0
- package/fjs/types/patricia_trie/module.f.mjs +43 -0
- package/fjs/types/patricia_trie/proof.f.d.mts +14 -0
- package/fjs/types/patricia_trie/proof.f.mjs +148 -0
- package/fjs/types/patricia_trie/types.d.ts +34 -0
- package/fjs/types/patricia_trie/types.js +6 -0
- package/fjs/types/prime_field/module.f.d.mts +42 -0
- package/fjs/types/prime_field/module.f.mjs +136 -0
- package/fjs/types/prime_field/proof.f.mjs +131 -0
- package/fjs/types/prime_field/types.d.ts +38 -0
- package/fjs/types/prime_field/types.js +6 -0
- package/fjs/types/range/module.f.d.mts +11 -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/types.js +6 -0
- package/fjs/types/range_map/module.f.d.mts +72 -0
- package/fjs/types/range_map/module.f.mjs +130 -0
- package/fjs/types/range_map/proof.f.d.mts +7 -0
- package/fjs/types/range_map/proof.f.mjs +186 -0
- package/fjs/types/range_map/types.d.ts +56 -0
- package/fjs/types/range_map/types.js +6 -0
- package/fjs/types/range_set/module.f.d.mts +5 -0
- package/fjs/types/range_set/module.f.mjs +19 -0
- package/fjs/types/range_set/proof.f.mjs +26 -0
- package/fjs/types/result/module.d.mts +5 -0
- package/fjs/types/result/module.f.d.mts +59 -0
- package/fjs/types/result/module.f.mjs +67 -0
- package/fjs/types/result/module.mjs +22 -0
- package/fjs/types/result/proof.f.mjs +41 -0
- package/fjs/types/result/types.d.ts +17 -0
- package/fjs/types/result/types.js +6 -0
- package/fjs/types/rtti/common/module.f.d.mts +86 -0
- package/fjs/types/rtti/common/module.f.mjs +183 -0
- package/fjs/types/rtti/common/proof.f.d.mts +9 -0
- package/fjs/types/rtti/common/proof.f.mjs +64 -0
- package/fjs/types/rtti/common/types.d.ts +43 -0
- package/fjs/types/rtti/common/types.js +1 -0
- package/fjs/types/rtti/module.f.d.mts +76 -0
- package/fjs/types/rtti/module.f.mjs +110 -0
- package/fjs/types/rtti/parse/module.f.d.mts +9 -0
- package/fjs/types/rtti/parse/module.f.mjs +196 -0
- package/fjs/types/rtti/parse/proof.f.d.mts +122 -0
- package/fjs/types/rtti/parse/proof.f.mjs +363 -0
- package/fjs/types/rtti/parse/types.d.ts +12 -0
- package/fjs/types/rtti/parse/types.js +1 -0
- package/fjs/types/rtti/proof.f.d.mts +8 -0
- package/fjs/types/rtti/proof.f.mjs +20 -0
- package/fjs/types/rtti/ts/module.f.d.mts +34 -0
- package/fjs/types/rtti/ts/module.f.mjs +64 -0
- package/fjs/types/rtti/ts/proof.f.mjs +88 -0
- package/fjs/types/rtti/ts/types.d.ts +88 -0
- package/fjs/types/rtti/ts/types.js +1 -0
- package/fjs/types/rtti/types.d.ts +43 -0
- package/fjs/types/rtti/types.js +1 -0
- package/fjs/types/rtti/validate/module.f.d.mts +6 -0
- package/fjs/types/rtti/validate/module.f.mjs +169 -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/rtti/validate/types.js +1 -0
- package/fjs/types/sorted_list/module.f.d.mts +43 -0
- package/fjs/types/sorted_list/module.f.mjs +110 -0
- package/fjs/types/sorted_list/proof.f.d.mts +5 -0
- package/fjs/types/sorted_list/proof.f.mjs +52 -0
- package/fjs/types/sorted_list/types.d.ts +15 -0
- package/fjs/types/sorted_list/types.js +6 -0
- package/fjs/types/sorted_set/module.f.d.mts +24 -0
- package/fjs/types/sorted_set/module.f.mjs +56 -0
- package/fjs/types/sorted_set/proof.f.d.mts +7 -0
- package/fjs/types/sorted_set/proof.f.mjs +77 -0
- package/fjs/types/sorted_set/types.d.ts +6 -0
- package/fjs/types/sorted_set/types.js +6 -0
- package/fjs/types/string/module.f.d.mts +36 -0
- package/fjs/types/string/module.f.mjs +58 -0
- package/fjs/types/string/proof.f.mjs +76 -0
- package/fjs/types/string_set/module.f.d.mts +37 -0
- package/fjs/types/string_set/module.f.mjs +53 -0
- package/fjs/types/string_set/proof.f.mjs +46 -0
- package/fjs/types/string_set/types.d.ts +7 -0
- package/fjs/types/string_set/types.js +6 -0
- package/fjs/types/ts/module.f.d.mts +20 -0
- package/fjs/types/ts/module.f.mjs +51 -0
- package/fjs/types/ts/proof.f.mjs +97 -0
- package/fjs/types/ts/types.d.ts +16 -0
- package/fjs/types/ts/types.js +8 -0
- package/fjs/types/uint8array/module.f.d.mts +31 -0
- package/fjs/types/uint8array/module.f.mjs +53 -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 +8 -0
- package/fjs/website/module.f.mjs +24 -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.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.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.js +0 -556
- 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.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.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/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/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.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.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.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.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.js +0 -213
- 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.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.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.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.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.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.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.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.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.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.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.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/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.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/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.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.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.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.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.js +0 -241
- package/todo/proof.f.d.ts +0 -20
- package/todo/proof.f.js +0 -62
- /package/fjs/asn.1/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/asserts/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /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/{todo/031-json.f.d.ts → fjs/ci/common/types.js} +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/parser/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/serializer/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/tokenizer/{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/effects/node/memory/{proof.d.ts → proof.d.mts} +0 -0
- /package/fjs/fsc/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/fsm/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/html/{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/media/nix/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/revision/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/type/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/{module.d.ts → module.d.mts} +0 -0
- /package/fjs/path/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/protocol/json_rpc/{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/sul/level/literal/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/ascii/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/code_point/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/sgr/{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/types/bigfloat/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/bit_vec/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/btree/remove/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/btree/set/{proof.f.d.ts → proof.f.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/types/nullable/{proof.f.d.ts → 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/option/{module.f.js → types.js} +0 -0
- /package/fjs/types/ordered_map/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/phantom/{module.f.d.ts → types.d.ts} +0 -0
- /package/fjs/types/phantom/{module.f.js → types.js} +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/{range/proof.f.d.ts → range_set/proof.f.d.mts} +0 -0
- /package/fjs/types/result/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/rtti/ts/{proof.f.d.ts → 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/types/ts/{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,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-level API for `fjs/cas/evo/module.f.mjs`: the Evo cache shape and the
|
|
3
|
+
* `Evo<O>` API surface it builds.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import type { Operation, Effect } from '../../effects/types.ts';
|
|
8
|
+
import type { MemOp } from '../../effects/memory/types.ts';
|
|
9
|
+
import type { Result } from '../../types/result/types.ts';
|
|
10
|
+
import type { StringMap } from '../../types/object/types.ts';
|
|
11
|
+
import type { LockMap } from '../../media/revision/types.ts';
|
|
12
|
+
/** A cBase32 content hash, as accepted/returned by `Cas<O>`. */
|
|
13
|
+
export type Hash = string;
|
|
14
|
+
/** The identity of a mutable object whose revisions are being evolved. */
|
|
15
|
+
export type Subject = string;
|
|
16
|
+
/**
|
|
17
|
+
* The semantic content of a revision: the media-level `Revision`
|
|
18
|
+
* (`fjs/media/revision`) minus `dialect`, which is a serialization tag
|
|
19
|
+
* carrying no information once decoding has validated it. One structure is
|
|
20
|
+
* the vocabulary of both directions — {@link addRevision} takes it,
|
|
21
|
+
* {@link readRevision} returns it — so what you add is what you get back, and
|
|
22
|
+
* a value read back can be fed to `add` unchanged, without stripping fields.
|
|
23
|
+
* Every direction-specific field is therefore optional, with the guarantees
|
|
24
|
+
* documented per field rather than typed:
|
|
25
|
+
*
|
|
26
|
+
* - `parents` — required in both directions; index 0 is the mainline parent.
|
|
27
|
+
* On output the entries are canonical cBase32 spellings
|
|
28
|
+
* ({@link canonicalHash}), so they compare directly against {@link Evo.head}
|
|
29
|
+
* output.
|
|
30
|
+
* - `subject` — input: absent means "inherit from my single parent" (see
|
|
31
|
+
* {@link resolveSubject}); output: always present.
|
|
32
|
+
* - `snapshot` — input: absent is a write-boundary convenience resolved from
|
|
33
|
+
* the parents (see {@link resolveSnapshot}), because the stored blob
|
|
34
|
+
* requires it explicitly; output: always present, canonical, and exactly
|
|
35
|
+
* what the stored blob names.
|
|
36
|
+
* - `archived` — genuinely optional in both directions; the only field that
|
|
37
|
+
* can be absent from a read.
|
|
38
|
+
* - `generation` — input: **ignored**, {@link computeGeneration} derives the
|
|
39
|
+
* authoritative value from the parents; output: always present. It exists as
|
|
40
|
+
* an input field only so a read value round-trips into `add` as-is.
|
|
41
|
+
*
|
|
42
|
+
* Relaxing what the format requires is the point, not an oversight. The stored
|
|
43
|
+
* `vnd.fjs.revision` blob requires `subject`, `snapshot` and `generation`, and
|
|
44
|
+
* {@link readRevision} does return all three — but this is not that blob's
|
|
45
|
+
* type. It is the type of the API that *reads and constructs* revisions, and
|
|
46
|
+
* its purpose is to make both easy: `add` asks only for what a caller can
|
|
47
|
+
* actually know, resolving or computing the rest at the write boundary, and a
|
|
48
|
+
* read hands back a value that goes straight into `add` again. A separate
|
|
49
|
+
* output type with `subject`/`snapshot`/`generation` required would state that
|
|
50
|
+
* one direction more precisely, at the cost of splitting the one vocabulary
|
|
51
|
+
* into two — the trade this API declines, deliberately and not by omission.
|
|
52
|
+
* `fjs/media/revision`'s `Revision` remains the all-required type of the
|
|
53
|
+
* stored blob for anyone who wants it.
|
|
54
|
+
*/
|
|
55
|
+
export type RevisionData = {
|
|
56
|
+
readonly parents: readonly Hash[];
|
|
57
|
+
readonly snapshot?: Hash | undefined;
|
|
58
|
+
readonly subject?: Subject | undefined;
|
|
59
|
+
readonly archived?: true | undefined;
|
|
60
|
+
readonly generation?: number | undefined;
|
|
61
|
+
readonly lock?: LockMap | undefined;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Per-subject bookkeeping: every revision hash seen for the subject, every
|
|
65
|
+
* hash any of those revisions names as a parent, and which of the seen
|
|
66
|
+
* revisions are `archived`. See the module doc for why the first two sets are
|
|
67
|
+
* kept (rather than a running head list), {@link headsOf} for how heads are
|
|
68
|
+
* derived from them, and {@link subjectListed} for how `archived` classifies a
|
|
69
|
+
* subject once its heads are known.
|
|
70
|
+
*
|
|
71
|
+
* `archived` is keyed by revision hash, not by subject, for the same reason
|
|
72
|
+
* heads are computed at read time: which revisions are heads is only known
|
|
73
|
+
* once the whole store has been folded in, so a per-subject archived flag
|
|
74
|
+
* would have to be revised every time a later fold changes the head set.
|
|
75
|
+
*/
|
|
76
|
+
export type SubjectState = {
|
|
77
|
+
readonly hashes: readonly Hash[];
|
|
78
|
+
readonly parents: readonly Hash[];
|
|
79
|
+
readonly archived: readonly Hash[];
|
|
80
|
+
};
|
|
81
|
+
/** In-memory index: subject → its {@link SubjectState}. */
|
|
82
|
+
export type Cache = {
|
|
83
|
+
readonly bySubject: StringMap<SubjectState>;
|
|
84
|
+
};
|
|
85
|
+
/** The Evo API described in `fjs/cas/evo/README.md`, bound to a `Cas<O>` and its cache slot. */
|
|
86
|
+
export type Evo<O extends Operation> = {
|
|
87
|
+
/**
|
|
88
|
+
* Returns the subjects matching a status filter: the active ones by
|
|
89
|
+
* default, the archived ones when `archived` is `true`. A subject's status
|
|
90
|
+
* is derived from its current heads — see {@link subjectListed}, which
|
|
91
|
+
* also explains why a subject with no current heads is in neither result.
|
|
92
|
+
*
|
|
93
|
+
* There is deliberately no all-subjects mode: nothing needs one yet, and
|
|
94
|
+
* adding it later is a compatible extension of this parameter, while
|
|
95
|
+
* removing it would not be.
|
|
96
|
+
*/
|
|
97
|
+
readonly list: (archived?: true) => Effect<MemOp, readonly Subject[]>;
|
|
98
|
+
/** Returns the current head hashes of `subject` (empty if unknown). */
|
|
99
|
+
readonly head: (subject: Subject) => Effect<MemOp, readonly Hash[]>;
|
|
100
|
+
/** Adds a new head; see {@link addRevision}. */
|
|
101
|
+
readonly add: (input: RevisionData) => Effect<O | MemOp, Result<Hash, string>>;
|
|
102
|
+
/**
|
|
103
|
+
* The revision at `hash`, decoded, validated, and canonicalized; see
|
|
104
|
+
* {@link readRevision}. Served from the store today, so the `MemOp` in the
|
|
105
|
+
* declared operation set is unused — it is there because a revision is
|
|
106
|
+
* immutable and therefore memoizable in the same cache slot the other
|
|
107
|
+
* operations read, which must not become a breaking change to this type
|
|
108
|
+
* when it happens.
|
|
109
|
+
*/
|
|
110
|
+
readonly revision: (hash: Hash) => Effect<O | MemOp, Result<RevisionData, string>>;
|
|
111
|
+
};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content-addressable storage utilities for hashing, addressing, and path parsing.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { Sha2, State as Sha2State } from '../crypto/sha2/types.ts'
|
|
7
|
+
* @import { Vec } from '../types/bit_vec/types.ts'
|
|
8
|
+
* @import { Effect, Operation } from '../effects/types.ts'
|
|
9
|
+
* @import {
|
|
10
|
+
* IoResult,
|
|
11
|
+
* Now,
|
|
12
|
+
* RandomInt,
|
|
13
|
+
* ReadBytes,
|
|
14
|
+
* Readdir,
|
|
15
|
+
* Rm,
|
|
16
|
+
* } from '../effects/node/types.ts'
|
|
17
|
+
* @import { List } from '../effects/list/types.ts'
|
|
18
|
+
* @import { Cas, FileCas, FileCasOperation } from './types.ts'
|
|
19
|
+
*/
|
|
20
|
+
import type { Sha2 } from '../crypto/sha2/types.ts';
|
|
21
|
+
import type { Vec } from '../types/bit_vec/types.ts';
|
|
22
|
+
import type { Effect, Operation } from '../effects/types.ts';
|
|
23
|
+
import type { IoResult, ReadBytes } from '../effects/node/types.ts';
|
|
24
|
+
import type { List } from '../effects/list/types.ts';
|
|
25
|
+
import type { Cas, FileCas, FileCasOperation } from './types.ts';
|
|
26
|
+
/** Converts a content key to its sharded relative CAS file path.
|
|
27
|
+
*
|
|
28
|
+
* @type {(key: Vec) => string}
|
|
29
|
+
*/
|
|
30
|
+
export declare const toPath: (key: Vec) => string;
|
|
31
|
+
/**
|
|
32
|
+
* Drains a `Cas<O>.read` chunk stream into a single `Vec`. Used by any caller
|
|
33
|
+
* that needs the whole blob at once (an MCP `content: true` fetch, an Evo
|
|
34
|
+
* revision decode): the chunk stream is concatenated and an error item is
|
|
35
|
+
* surfaced as the result. A single `Vec` cannot exceed `maxLength` bits;
|
|
36
|
+
* concatenating past it would overflow the runtime's `bigint` constraint, so
|
|
37
|
+
* that case is surfaced as an error item too, rather than crashing the
|
|
38
|
+
* process.
|
|
39
|
+
*
|
|
40
|
+
* @template {Operation} O
|
|
41
|
+
* @param {List<O, IoResult<Vec>>} stream
|
|
42
|
+
* @returns {Effect<O, IoResult<Vec>>}
|
|
43
|
+
*/
|
|
44
|
+
export declare const collectRead: <O extends Operation>(stream: List<O, IoResult<Vec>>) => Effect<O, IoResult<Vec>>;
|
|
45
|
+
/**
|
|
46
|
+
* Builds a content-addressable storage facade from a SHA-2 implementation.
|
|
47
|
+
*
|
|
48
|
+
* @type {(sha2: Sha2) => (path: string) => FileCas}
|
|
49
|
+
*/
|
|
50
|
+
export declare const fileCas: (sha2: Sha2) => (path: string) => FileCas;
|
|
51
|
+
/**
|
|
52
|
+
* Streams the file at `path` through `cas.write`, returning the content hash.
|
|
53
|
+
* Both the CLI `cas add` and the MCP `add` delegate to this; the MCP layer
|
|
54
|
+
* additionally deletes the source file on success.
|
|
55
|
+
*
|
|
56
|
+
* @template {Operation} O
|
|
57
|
+
* @param {Cas<O>} cas
|
|
58
|
+
* @returns {(path: string) => Effect<O | ReadBytes, IoResult<Vec>>}
|
|
59
|
+
*/
|
|
60
|
+
export declare const casAddFile: <O extends Operation>(cas: Cas<O>) => (path: string) => Effect<O | ReadBytes, IoResult<Vec>>;
|
|
61
|
+
/**
|
|
62
|
+
* Upload pipeline: streams `fileName` from `~/cas_upload/` through `casAddFile`,
|
|
63
|
+
* then deletes the source on success. On failure the source is left in place so
|
|
64
|
+
* the upload can be retried; `write` already cleans up its own partial staging file.
|
|
65
|
+
*
|
|
66
|
+
* @type {(home: string) => (fileName: string) => Effect<FileCasOperation, IoResult<Vec>>}
|
|
67
|
+
*/
|
|
68
|
+
export declare const casUpload: (home: string) => (fileName: string) => Effect<FileCasOperation, IoResult<Vec>>;
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content-addressable storage utilities for hashing, addressing, and path parsing.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { Sha2, State as Sha2State } from '../crypto/sha2/types.ts'
|
|
7
|
+
* @import { Vec } from '../types/bit_vec/types.ts'
|
|
8
|
+
* @import { Effect, Operation } from '../effects/types.ts'
|
|
9
|
+
* @import {
|
|
10
|
+
* IoResult,
|
|
11
|
+
* Now,
|
|
12
|
+
* RandomInt,
|
|
13
|
+
* ReadBytes,
|
|
14
|
+
* Readdir,
|
|
15
|
+
* Rm,
|
|
16
|
+
* } from '../effects/node/types.ts'
|
|
17
|
+
* @import { List } from '../effects/list/types.ts'
|
|
18
|
+
* @import { Cas, FileCas, FileCasOperation } from './types.ts'
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import { sha256 } from '../crypto/sha2/module.f.mjs'
|
|
22
|
+
import { join, normalize, parse } from '../path/module.f.mjs'
|
|
23
|
+
import { empty, length, maxLength, maxLengthBytes, msb, vec } from '../types/bit_vec/module.f.mjs'
|
|
24
|
+
import { cBase32ToVec, vecToCBase32 } from '../basen/cbase32/module.f.mjs'
|
|
25
|
+
import { foldStep, forEachStep, history, historyStep, okStep, pure, step } from '../effects/module.f.mjs'
|
|
26
|
+
import { eff } from '../effects/eff/module.f.mjs'
|
|
27
|
+
import {
|
|
28
|
+
access,
|
|
29
|
+
createExclusive,
|
|
30
|
+
isNotFound,
|
|
31
|
+
mkdir,
|
|
32
|
+
now,
|
|
33
|
+
randomInt,
|
|
34
|
+
readBytes,
|
|
35
|
+
readdir,
|
|
36
|
+
rename,
|
|
37
|
+
rm,
|
|
38
|
+
stat,
|
|
39
|
+
writeBytes,
|
|
40
|
+
} from '../effects/node/module.f.mjs'
|
|
41
|
+
import { toOption } from '../types/nullable/module.f.mjs'
|
|
42
|
+
import { error, ok, unwrap } from '../types/result/module.f.mjs'
|
|
43
|
+
import { splitAt } from '../types/string/module.f.mjs'
|
|
44
|
+
import { nonEmpty, empty as elEmpty } from '../effects/list/module.f.mjs'
|
|
45
|
+
|
|
46
|
+
const split2 = splitAt(2)
|
|
47
|
+
|
|
48
|
+
const prefix = '.cas'
|
|
49
|
+
|
|
50
|
+
/** Converts a content key to its sharded relative CAS file path.
|
|
51
|
+
*
|
|
52
|
+
* @type {(key: Vec) => string}
|
|
53
|
+
*/
|
|
54
|
+
export const toPath = key => {
|
|
55
|
+
const s = vecToCBase32(key)
|
|
56
|
+
const [a, bc] = split2(s)
|
|
57
|
+
const [b, c] = split2(bc)
|
|
58
|
+
return join(prefix, a, b, c)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Drains a `Cas<O>.read` chunk stream into a single `Vec`. Used by any caller
|
|
63
|
+
* that needs the whole blob at once (an MCP `content: true` fetch, an Evo
|
|
64
|
+
* revision decode): the chunk stream is concatenated and an error item is
|
|
65
|
+
* surfaced as the result. A single `Vec` cannot exceed `maxLength` bits;
|
|
66
|
+
* concatenating past it would overflow the runtime's `bigint` constraint, so
|
|
67
|
+
* that case is surfaced as an error item too, rather than crashing the
|
|
68
|
+
* process.
|
|
69
|
+
*
|
|
70
|
+
* @template {Operation} O
|
|
71
|
+
* @param {List<O, IoResult<Vec>>} stream
|
|
72
|
+
* @returns {Effect<O, IoResult<Vec>>}
|
|
73
|
+
*/
|
|
74
|
+
export const collectRead = stream => {
|
|
75
|
+
/** @type {(acc: Vec) => (s: List<O, IoResult<Vec>>) => Effect<O, IoResult<Vec>>} */
|
|
76
|
+
const loop = acc => s =>
|
|
77
|
+
eff(s)
|
|
78
|
+
.step((/** @type {*} */ node) => {
|
|
79
|
+
if (node === undefined) { return pure(ok(acc)) }
|
|
80
|
+
const { first, tail } = node
|
|
81
|
+
const [t, v] = first
|
|
82
|
+
if (t === 'error') { return pure(first) }
|
|
83
|
+
if (length(acc) + length(v) > maxLength) {
|
|
84
|
+
return pure(error(`cas blob exceeds maximum vector length of ${maxLength} bits`))
|
|
85
|
+
}
|
|
86
|
+
return loop(msb.concat(acc)(v))(tail)
|
|
87
|
+
})
|
|
88
|
+
.value
|
|
89
|
+
return loop(empty)(stream)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/** Maximum chunk size for streaming reads: the largest `Vec` the runtime allows. */
|
|
93
|
+
const chunkBytes = Number(maxLengthBytes)
|
|
94
|
+
|
|
95
|
+
/** Staging directory under the store root; GC and every uploader share it. */
|
|
96
|
+
const stageRel = '_stage'
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Lease duration in ms: a staging file's deadline is `now() + leaseDelta`.
|
|
100
|
+
* Renewed after every chunk, so it only has to cover the gap between two
|
|
101
|
+
* consecutive chunks (see [staging-lease.md](./plan/staging-lease.md)).
|
|
102
|
+
*/
|
|
103
|
+
const leaseDelta = 30_000
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Fixed width for the zero-padded epoch-ms deadline embedded in a staging name,
|
|
107
|
+
* so names sort lexically exactly as they sort chronologically. 19 digits keeps
|
|
108
|
+
* epoch-ms (13 digits today) padded with headroom well past year 2286.
|
|
109
|
+
*/
|
|
110
|
+
const deadlineWidth = 19
|
|
111
|
+
|
|
112
|
+
/** Builds a `<deadline>-<random256>` staging file name.
|
|
113
|
+
*
|
|
114
|
+
* @type {(deadline: number, rnd: string) => string}
|
|
115
|
+
*/
|
|
116
|
+
const stageName = (deadline, rnd) =>
|
|
117
|
+
`${String(deadline).padStart(deadlineWidth, '0')}-${rnd}`
|
|
118
|
+
|
|
119
|
+
/** Recovers the deadline (epoch ms) from a `<deadline>-<random256>` name.
|
|
120
|
+
*
|
|
121
|
+
* @type {(name: string) => number}
|
|
122
|
+
*/
|
|
123
|
+
const deadlineOf = name => Number(name.slice(0, name.indexOf('-')))
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Reclaims expired staging files: any `_stage/<deadline>-<rand>` whose deadline
|
|
127
|
+
* is already in the past. Lazy and piggy-backed on `write`. Best-effort — a
|
|
128
|
+
* missing `_stage/` (fresh store) or any `readdir`/`rm` error is ignored, and a
|
|
129
|
+
* still-live lease is left alone; the fencing rename keeps even a misjudged
|
|
130
|
+
* reclaim fail-safe (worst case: that upload restarts).
|
|
131
|
+
*
|
|
132
|
+
* @template {Now | Readdir | Rm} O
|
|
133
|
+
* @param {string} stageDir
|
|
134
|
+
* @returns {Effect<O, void>}
|
|
135
|
+
*/
|
|
136
|
+
const gcStage = stageDir =>
|
|
137
|
+
eff(now())
|
|
138
|
+
.step(() => readdir(stageDir, {}))
|
|
139
|
+
.step(([k, v], t) => {
|
|
140
|
+
if (k === 'error') { return pure(undefined) }
|
|
141
|
+
const expired = v.flatMap(d =>
|
|
142
|
+
d.isFile && deadlineOf(d.name) < t ? [d.name] : [])
|
|
143
|
+
return forEachStep(
|
|
144
|
+
pure(expired),
|
|
145
|
+
name =>
|
|
146
|
+
eff(rm(join(stageDir, name)))
|
|
147
|
+
.step(() => pure(undefined))
|
|
148
|
+
.value)
|
|
149
|
+
})
|
|
150
|
+
.value
|
|
151
|
+
|
|
152
|
+
// Lock-free staging upload (plan/staging-lease.md): stream each chunk straight
|
|
153
|
+
// to a `_stage/<deadline>-<rand>` file via `writeBytes` while folding it into the
|
|
154
|
+
// running SHA-2 state — the payload never lives in memory as a whole. The lease is
|
|
155
|
+
// renewed (rename to a fresh deadline) after every chunk; any error deletes the
|
|
156
|
+
// partial file and fails. On end-of-stream the file is published to its hash-derived
|
|
157
|
+
// shard path by a replace-`rename` (which also dedups/repairs a same-content shard),
|
|
158
|
+
// and success is confirmed by a `stat` size check. GC of expired staging files is
|
|
159
|
+
// piggy-backed at the start.
|
|
160
|
+
/**
|
|
161
|
+
* @template {Operation} O1
|
|
162
|
+
* @param {Sha2} sha2
|
|
163
|
+
* @param {string} path
|
|
164
|
+
* @param {string} stageDir
|
|
165
|
+
* @param {List<O1, IoResult<Vec>>} payload
|
|
166
|
+
* @returns {Effect<O1 | FileCasOperation, IoResult<Vec>>}
|
|
167
|
+
*/
|
|
168
|
+
const writeImpl = (sha2, path, stageDir, payload) => {
|
|
169
|
+
// Publish the finished staging file to its content-addressed shard. The three
|
|
170
|
+
// filesystem steps run best-effort with their results ignored; success is decided
|
|
171
|
+
// afterward by observing the target's size (see staging-lease.md "Publish ignores
|
|
172
|
+
// results and checks the end state").
|
|
173
|
+
/** @type {(state: Sha2State, offset: number, curPath: string) => Effect<FileCasOperation, IoResult<Vec>>} */
|
|
174
|
+
const publish = (state, offset, curPath) => {
|
|
175
|
+
const hash = sha2.end(state)
|
|
176
|
+
const rel = toPath(hash)
|
|
177
|
+
const dst = join(path, rel)
|
|
178
|
+
const dstDir = join(path, ...parse(rel).slice(0, -1))
|
|
179
|
+
return eff(mkdir(dstDir, { recursive: true }))
|
|
180
|
+
.step(() => rename(curPath, dst))
|
|
181
|
+
.step(() => rm(curPath))
|
|
182
|
+
.step(() => stat(dst))
|
|
183
|
+
.step(st => pure(st[0] === 'ok' && st[1].size === offset ? ok(hash) : error('publish size mismatch')))
|
|
184
|
+
.value
|
|
185
|
+
}
|
|
186
|
+
// Any streaming error fails closed: delete the partial file, return the error.
|
|
187
|
+
/** @type {(curPath: string, e: unknown) => Effect<FileCasOperation, IoResult<Vec>>} */
|
|
188
|
+
const fail = (curPath, e) =>
|
|
189
|
+
eff(rm(curPath))
|
|
190
|
+
.step(() => pure(error(e)))
|
|
191
|
+
.value
|
|
192
|
+
return eff(gcStage(stageDir)).step(() =>
|
|
193
|
+
eff(random256).step(rnd => {
|
|
194
|
+
const rndStr = vecToCBase32(rnd)
|
|
195
|
+
/** @type {(state: Sha2State, offset: number, curPath: string) => (stream: List<O1, IoResult<Vec>>) => Effect<O1 | FileCasOperation, IoResult<Vec>>} */
|
|
196
|
+
const loop = (state, offset, curPath) =>
|
|
197
|
+
stream =>
|
|
198
|
+
eff(stream)
|
|
199
|
+
.step((node) => {
|
|
200
|
+
if (node === undefined) {
|
|
201
|
+
return publish(state, offset, curPath)
|
|
202
|
+
}
|
|
203
|
+
const { first, tail } = node
|
|
204
|
+
if (first[0] === 'error') {
|
|
205
|
+
return fail(curPath, first[1])
|
|
206
|
+
}
|
|
207
|
+
const chunk = first[1]
|
|
208
|
+
return eff(writeBytes(curPath, offset, chunk))
|
|
209
|
+
.step(wb => {
|
|
210
|
+
if (wb[0] === 'error') { return fail(curPath, wb[1]) }
|
|
211
|
+
const newState = sha2.append(chunk)(state)
|
|
212
|
+
const newOffset = offset + Number(length(chunk) / 8n)
|
|
213
|
+
// Renew the lease: rename to a fresh deadline (keeps `delta` constant).
|
|
214
|
+
// The new path is still needed after the rename, to recurse with,
|
|
215
|
+
// so the rename captures it rather than closing over it.
|
|
216
|
+
const nextPath = step(
|
|
217
|
+
now(),
|
|
218
|
+
t => pure(join(stageDir, stageName(t + leaseDelta, rndStr))))
|
|
219
|
+
const renamed = historyStep(
|
|
220
|
+
history(nextPath),
|
|
221
|
+
next => rename(curPath, next))
|
|
222
|
+
return step(
|
|
223
|
+
renamed,
|
|
224
|
+
([[rt, v], next]) =>
|
|
225
|
+
rt === 'error'
|
|
226
|
+
? fail(curPath, v)
|
|
227
|
+
: loop(newState, newOffset, next)(tail))
|
|
228
|
+
})
|
|
229
|
+
.value
|
|
230
|
+
})
|
|
231
|
+
.value
|
|
232
|
+
return eff(mkdir(stageDir, { recursive: true }))
|
|
233
|
+
.step(() => now())
|
|
234
|
+
.step(t0 => {
|
|
235
|
+
const path0 = join(stageDir, stageName(t0 + leaseDelta, rndStr))
|
|
236
|
+
return eff(createExclusive(path0))
|
|
237
|
+
.step(okStep(() => loop(sha2.init, 0, path0)(payload)))
|
|
238
|
+
.value
|
|
239
|
+
})
|
|
240
|
+
.value
|
|
241
|
+
}).value).value
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Builds a content-addressable storage facade from a SHA-2 implementation.
|
|
246
|
+
*
|
|
247
|
+
* @type {(sha2: Sha2) => (path: string) => FileCas}
|
|
248
|
+
*/
|
|
249
|
+
export const fileCas = sha2 => path => {
|
|
250
|
+
const storePrefix = join(path, prefix)
|
|
251
|
+
const normalizedStorePrefix = normalize(storePrefix)
|
|
252
|
+
const stageDir = join(storePrefix, stageRel)
|
|
253
|
+
return {
|
|
254
|
+
read: hash => {
|
|
255
|
+
const p = join(path, toPath(hash))
|
|
256
|
+
/** @type {(offset: number) => List<FileCasOperation, IoResult<Vec>>} */
|
|
257
|
+
const loop = offset =>
|
|
258
|
+
eff(readBytes(p, offset, chunkBytes))
|
|
259
|
+
.step(/** @type {(result: IoResult<Vec>) => List<FileCasOperation, IoResult<Vec>>} */ (result) => {
|
|
260
|
+
const [t, v] = result
|
|
261
|
+
// A missing shard or read error is an explicit error item, never EOF.
|
|
262
|
+
if (t === 'error') {
|
|
263
|
+
return nonEmpty(result, elEmpty())
|
|
264
|
+
}
|
|
265
|
+
// End the stream only on an empty read; every non-empty read — including a
|
|
266
|
+
// final short (`< CHUNK_BYTES`) chunk — is emitted as an `ok` item.
|
|
267
|
+
return length(v) === 0n
|
|
268
|
+
? elEmpty()
|
|
269
|
+
: nonEmpty(ok(v), loop(offset + chunkBytes))
|
|
270
|
+
})
|
|
271
|
+
.value
|
|
272
|
+
return loop(0)
|
|
273
|
+
},
|
|
274
|
+
write: payload => writeImpl(sha2, path, stageDir, payload),
|
|
275
|
+
list: () =>
|
|
276
|
+
// A fresh store has no `.cas` directory yet. Treat *only* that case as an
|
|
277
|
+
// empty store, mirroring how `read` maps a missing shard to an error item.
|
|
278
|
+
// A `.cas` that exists but cannot be read (permissions, corruption) is a
|
|
279
|
+
// genuine storage error and is surfaced, not masked as "no hashes".
|
|
280
|
+
eff(access(storePrefix))
|
|
281
|
+
.step(a => {
|
|
282
|
+
if (a[0] === 'error') {
|
|
283
|
+
if (isNotFound(a[1])) { return pure(/** @type {readonly Vec[]} */ ([])) }
|
|
284
|
+
throw a[1]
|
|
285
|
+
}
|
|
286
|
+
return eff(readdir(storePrefix, { recursive: true }))
|
|
287
|
+
.step(r => pure(unwrap(r).flatMap(({ name, parentPath, isFile }) =>
|
|
288
|
+
toOption(isFile
|
|
289
|
+
? cBase32ToVec(normalize(parentPath).substring(normalizedStorePrefix.length).replaceAll('/', '') + name)
|
|
290
|
+
: null))))
|
|
291
|
+
.value
|
|
292
|
+
})
|
|
293
|
+
.value,
|
|
294
|
+
url: hash =>
|
|
295
|
+
join(path, toPath(hash))
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/** 256-bit random `Vec` built from 8 sequential `randomInt` (32-bit) calls.
|
|
300
|
+
*
|
|
301
|
+
* @type {Effect<RandomInt, Vec>}
|
|
302
|
+
*/
|
|
303
|
+
const random256 =
|
|
304
|
+
foldStep(
|
|
305
|
+
pure([0, 1, 2, 3, 4, 5, 6, 7]),
|
|
306
|
+
empty,
|
|
307
|
+
() => (/** @type {Vec} */ acc) =>
|
|
308
|
+
eff(randomInt())
|
|
309
|
+
.step(r => pure(msb.concat(acc)(vec(32n)(BigInt(r)))))
|
|
310
|
+
.value)
|
|
311
|
+
|
|
312
|
+
/** Streams any file at `filePath` in `<=128 KiB` chunks as a `ListEffect` of `ok` items.
|
|
313
|
+
*
|
|
314
|
+
* @type {(filePath: string) => List<ReadBytes, IoResult<Vec>>}
|
|
315
|
+
*/
|
|
316
|
+
const streamFile = filePath => {
|
|
317
|
+
/** @type {(offset: number) => List<ReadBytes, IoResult<Vec>>} */
|
|
318
|
+
const loop = offset =>
|
|
319
|
+
eff(readBytes(filePath, offset, chunkBytes))
|
|
320
|
+
.step(/** @type {(result: IoResult<Vec>) => List<ReadBytes, IoResult<Vec>>} */ (result) => {
|
|
321
|
+
if (result[0] === 'error') {
|
|
322
|
+
return nonEmpty(result, elEmpty())
|
|
323
|
+
}
|
|
324
|
+
const chunk = result[1]
|
|
325
|
+
return length(chunk) === 0n
|
|
326
|
+
? elEmpty()
|
|
327
|
+
: nonEmpty(ok(chunk), loop(offset + chunkBytes))
|
|
328
|
+
})
|
|
329
|
+
.value
|
|
330
|
+
return loop(0)
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* Streams the file at `path` through `cas.write`, returning the content hash.
|
|
335
|
+
* Both the CLI `cas add` and the MCP `add` delegate to this; the MCP layer
|
|
336
|
+
* additionally deletes the source file on success.
|
|
337
|
+
*
|
|
338
|
+
* @template {Operation} O
|
|
339
|
+
* @param {Cas<O>} cas
|
|
340
|
+
* @returns {(path: string) => Effect<O | ReadBytes, IoResult<Vec>>}
|
|
341
|
+
*/
|
|
342
|
+
export const casAddFile = cas => path =>
|
|
343
|
+
// streamFile produces only ReadBytes effects. TypeScript can't prove ListEffect<ReadBytes,T>
|
|
344
|
+
// ≤ ListEffect<O,T> for generic O (recursive type), but the cast is sound: every concrete
|
|
345
|
+
// caller passes a Cas<O> where ReadBytes ⊆ O (e.g. FileCasOperation).
|
|
346
|
+
cas.write(streamFile(path))
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* Upload pipeline: streams `fileName` from `~/cas_upload/` through `casAddFile`,
|
|
350
|
+
* then deletes the source on success. On failure the source is left in place so
|
|
351
|
+
* the upload can be retried; `write` already cleans up its own partial staging file.
|
|
352
|
+
*
|
|
353
|
+
* @type {(home: string) => (fileName: string) => Effect<FileCasOperation, IoResult<Vec>>}
|
|
354
|
+
*/
|
|
355
|
+
export const casUpload = home => fileName => {
|
|
356
|
+
const src = join(home, 'cas_upload', fileName)
|
|
357
|
+
const c = fileCas(sha256)(home)
|
|
358
|
+
return eff(casAddFile(c)(src))
|
|
359
|
+
.step(okStep(/** @type {(v: Vec) => Effect<Rm, IoResult<Vec>>} */ (v => eff(rm(src))
|
|
360
|
+
.step(() => pure(ok(v)))
|
|
361
|
+
.value)))
|
|
362
|
+
.value
|
|
363
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @import { Vec } from '../types/bit_vec/types.ts'
|
|
3
|
+
* @import { FileCasOperation } from './types.ts'
|
|
4
|
+
* @import { Effect } from '../effects/types.ts'
|
|
5
|
+
* @import { ReadFile, WriteFile, Rm, Mkdir, IoResult } from '../effects/node/types.ts'
|
|
6
|
+
* @import { Ok } from '../types/result/types.ts'
|
|
7
|
+
* @import { List } from '../effects/list/types.ts'
|
|
8
|
+
*/
|
|
9
|
+
import type { FileCasOperation } from './types.ts';
|
|
10
|
+
import type { ReadFile, WriteFile, Rm, Mkdir } from '../effects/node/types.ts';
|
|
11
|
+
export type _TestOp = FileCasOperation | WriteFile | ReadFile | Rm | Mkdir;
|
|
12
|
+
export declare const proof: {
|
|
13
|
+
addBigFile: () => void;
|
|
14
|
+
addAndGetBigFile: () => void;
|
|
15
|
+
casWriteRead: () => void;
|
|
16
|
+
casReadMissingShard: () => void;
|
|
17
|
+
casWriteMultiChunk: () => void;
|
|
18
|
+
casWriteDedup: () => void;
|
|
19
|
+
casWriteErrorItemAborts: () => void;
|
|
20
|
+
casWriteReadExceedsMaxLength: () => void;
|
|
21
|
+
casWriteGcReclaimsExpired: () => void;
|
|
22
|
+
casWriteGcSkipsLiveLease: () => void;
|
|
23
|
+
casUploadSuccess: () => void;
|
|
24
|
+
casUploadFailureKeepsSource: () => void;
|
|
25
|
+
collectReadDrainsChunks: () => void;
|
|
26
|
+
collectReadPropagatesErrorItem: () => void;
|
|
27
|
+
collectReadOverflow: () => void;
|
|
28
|
+
casListPropagatesNonNotFoundAccessError: () => void;
|
|
29
|
+
};
|