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
package/fjs/cas/module.f.d.ts
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Content-addressable storage utilities for hashing, addressing, and path parsing.
|
|
3
|
-
*
|
|
4
|
-
* @module
|
|
5
|
-
*/
|
|
6
|
-
import { type Sha2 } from '../crypto/sha2/module.f.ts';
|
|
7
|
-
import { type Vec } from '../types/bit_vec/module.f.ts';
|
|
8
|
-
import { type Effect, type Operation } from '../effects/module.f.ts';
|
|
9
|
-
import { type Access, type CreateExclusive, type IoResult, type Mkdir, type Now, type RandomInt, type ReadBytes, type Readdir, type Rename, type Rm, type Stat, type WriteBytes } from '../effects/node/module.f.ts';
|
|
10
|
-
import { type List } from '../effects/list/module.f.ts';
|
|
11
|
-
/** Converts a content key to its sharded relative CAS file path. */
|
|
12
|
-
export declare const toPath: (key: Vec) => string;
|
|
13
|
-
/**
|
|
14
|
-
* The filesystem effects the streaming CAS performs: `read` pulls shards
|
|
15
|
-
* (`ReadBytes`); `list` walks the store (`Access`/`Readdir`); `write` runs the
|
|
16
|
-
* lock-free staging upload (`Mkdir`/`CreateExclusive`/`WriteBytes`/`Rename`/`Rm`/
|
|
17
|
-
* `Stat`, lease deadlines from `Now`, staging names from `RandomInt`) and GC's
|
|
18
|
-
* expired staging files (`Readdir`/`Rm`).
|
|
19
|
-
*/
|
|
20
|
-
export type FileCasOperation = ReadBytes | Mkdir | Readdir | Access | Rename | Rm | RandomInt | Now | CreateExclusive | WriteBytes | Stat | Now | Readdir | Rm;
|
|
21
|
-
export type Cas<O extends Operation> = {
|
|
22
|
-
/**
|
|
23
|
-
* Streams the content for `hash` out in `<=128 KiB` chunks. Every pull yields an
|
|
24
|
-
* explicit `ok(chunk)` or `error` item, so a missing shard or I/O error is a distinct
|
|
25
|
-
* error *item* in the stream, never collapsed into end-of-stream (`undefined`).
|
|
26
|
-
*/
|
|
27
|
-
readonly read: (hash: Vec) => List<O, IoResult<Vec>>;
|
|
28
|
-
/**
|
|
29
|
-
* Consumes a chunk stream — each item `ok(chunk)` or `error` — hashing incrementally,
|
|
30
|
-
* and returns the content address. An error item aborts the upload.
|
|
31
|
-
*/
|
|
32
|
-
readonly write: <O1 extends Operation>(payload: List<O1, IoResult<Vec>>) => Effect<O | O1, IoResult<Vec>>;
|
|
33
|
-
/** Lists all stored content hashes. */
|
|
34
|
-
readonly list: () => Effect<O, readonly Vec[]>;
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* Drains a `Cas<O>.read` chunk stream into a single `Vec`. Used by any caller
|
|
38
|
-
* that needs the whole blob at once (an MCP `content: true` fetch, an Evo
|
|
39
|
-
* revision decode): the chunk stream is concatenated and an error item is
|
|
40
|
-
* surfaced as the result. A single `Vec` cannot exceed `maxLength` bits;
|
|
41
|
-
* concatenating past it would overflow the runtime's `bigint` constraint, so
|
|
42
|
-
* that case is surfaced as an error item too, rather than crashing the
|
|
43
|
-
* process.
|
|
44
|
-
*/
|
|
45
|
-
export declare const collectRead: <O extends Operation>(stream: List<O, IoResult<Vec>>) => Effect<O, IoResult<Vec>>;
|
|
46
|
-
export type FileCas = Cas<FileCasOperation> & {
|
|
47
|
-
url: (v: Vec) => string;
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* Builds a content-addressable storage facade from a SHA-2 implementation.
|
|
51
|
-
*/
|
|
52
|
-
export declare const fileCas: (sha2: Sha2) => (path: string) => FileCas;
|
|
53
|
-
/**
|
|
54
|
-
* Streams the file at `path` through `cas.write`, returning the content hash.
|
|
55
|
-
* Both the CLI `cas add` and the MCP `add` delegate to this; the MCP layer
|
|
56
|
-
* additionally deletes the source file on success.
|
|
57
|
-
*/
|
|
58
|
-
export declare const casAddFile: <O extends Operation>(cas: Cas<O>) => (path: string) => Effect<O | ReadBytes, IoResult<Vec>>;
|
|
59
|
-
/**
|
|
60
|
-
* Upload pipeline: streams `fileName` from `~/cas_upload/` through `casAddFile`,
|
|
61
|
-
* then deletes the source on success. On failure the source is left in place so
|
|
62
|
-
* the upload can be retried; `write` already cleans up its own partial staging file.
|
|
63
|
-
*/
|
|
64
|
-
export declare const casUpload: (home: string) => (fileName: string) => Effect<FileCasOperation, IoResult<Vec>>;
|
package/fjs/cas/module.f.js
DELETED
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Content-addressable storage utilities for hashing, addressing, and path parsing.
|
|
3
|
-
*
|
|
4
|
-
* @module
|
|
5
|
-
*/
|
|
6
|
-
import { sha256 } from '../crypto/sha2/module.f.js';
|
|
7
|
-
import { join, normalize, parse } from '../path/module.f.js';
|
|
8
|
-
import { empty, length, maxLength, maxLengthBytes, msb, vec } from '../types/bit_vec/module.f.js';
|
|
9
|
-
import { cBase32ToVec, vecToCBase32 } from '../basen/cbase32/module.f.js';
|
|
10
|
-
import { foldStep, forEachStep, history, historyStep, okStep, pure, step } from '../effects/module.f.js';
|
|
11
|
-
import { eff } from '../effects/eff/module.f.js';
|
|
12
|
-
import { access, createExclusive, isNotFound, mkdir, now, randomInt, readBytes, readdir, rename, rm, stat, writeBytes, } from '../effects/node/module.f.js';
|
|
13
|
-
import { toOption } from '../types/nullable/module.f.js';
|
|
14
|
-
import { error, ok, unwrap } from '../types/result/module.f.js';
|
|
15
|
-
import { splitAt } from '../types/string/module.f.js';
|
|
16
|
-
import { nonEmpty, empty as elEmpty } from '../effects/list/module.f.js';
|
|
17
|
-
const split2 = splitAt(2);
|
|
18
|
-
const prefix = '.cas';
|
|
19
|
-
/** Converts a content key to its sharded relative CAS file path. */
|
|
20
|
-
export const toPath = (key) => {
|
|
21
|
-
const s = vecToCBase32(key);
|
|
22
|
-
const [a, bc] = split2(s);
|
|
23
|
-
const [b, c] = split2(bc);
|
|
24
|
-
return join(prefix, a, b, c);
|
|
25
|
-
};
|
|
26
|
-
/**
|
|
27
|
-
* Drains a `Cas<O>.read` chunk stream into a single `Vec`. Used by any caller
|
|
28
|
-
* that needs the whole blob at once (an MCP `content: true` fetch, an Evo
|
|
29
|
-
* revision decode): the chunk stream is concatenated and an error item is
|
|
30
|
-
* surfaced as the result. A single `Vec` cannot exceed `maxLength` bits;
|
|
31
|
-
* concatenating past it would overflow the runtime's `bigint` constraint, so
|
|
32
|
-
* that case is surfaced as an error item too, rather than crashing the
|
|
33
|
-
* process.
|
|
34
|
-
*/
|
|
35
|
-
export const collectRead = (stream) => {
|
|
36
|
-
const loop = (acc) => (s) => eff(s)
|
|
37
|
-
.step((node) => {
|
|
38
|
-
if (node === undefined) {
|
|
39
|
-
return pure(ok(acc));
|
|
40
|
-
}
|
|
41
|
-
const { first, tail } = node;
|
|
42
|
-
const [t, v] = first;
|
|
43
|
-
if (t === 'error') {
|
|
44
|
-
return pure(first);
|
|
45
|
-
}
|
|
46
|
-
if (length(acc) + length(v) > maxLength) {
|
|
47
|
-
return pure(error(`cas blob exceeds maximum vector length of ${maxLength} bits`));
|
|
48
|
-
}
|
|
49
|
-
return loop(msb.concat(acc)(v))(tail);
|
|
50
|
-
})
|
|
51
|
-
.value;
|
|
52
|
-
return loop(empty)(stream);
|
|
53
|
-
};
|
|
54
|
-
/** Maximum chunk size for streaming reads: the largest `Vec` the runtime allows. */
|
|
55
|
-
const chunkBytes = Number(maxLengthBytes);
|
|
56
|
-
/** Staging directory under the store root; GC and every uploader share it. */
|
|
57
|
-
const stageRel = '_stage';
|
|
58
|
-
/**
|
|
59
|
-
* Lease duration in ms: a staging file's deadline is `now() + leaseDelta`.
|
|
60
|
-
* Renewed after every chunk, so it only has to cover the gap between two
|
|
61
|
-
* consecutive chunks (see [staging-lease.md](../../issues/cas/staging-lease.md)).
|
|
62
|
-
*/
|
|
63
|
-
const leaseDelta = 30_000;
|
|
64
|
-
/**
|
|
65
|
-
* Fixed width for the zero-padded epoch-ms deadline embedded in a staging name,
|
|
66
|
-
* so names sort lexically exactly as they sort chronologically. 19 digits keeps
|
|
67
|
-
* epoch-ms (13 digits today) padded with headroom well past year 2286.
|
|
68
|
-
*/
|
|
69
|
-
const deadlineWidth = 19;
|
|
70
|
-
/** Builds a `<deadline>-<random256>` staging file name. */
|
|
71
|
-
const stageName = (deadline, rnd) => `${String(deadline).padStart(deadlineWidth, '0')}-${rnd}`;
|
|
72
|
-
/** Recovers the deadline (epoch ms) from a `<deadline>-<random256>` name. */
|
|
73
|
-
const deadlineOf = (name) => Number(name.slice(0, name.indexOf('-')));
|
|
74
|
-
/**
|
|
75
|
-
* Reclaims expired staging files: any `_stage/<deadline>-<rand>` whose deadline
|
|
76
|
-
* is already in the past. Lazy and piggy-backed on `write`. Best-effort — a
|
|
77
|
-
* missing `_stage/` (fresh store) or any `readdir`/`rm` error is ignored, and a
|
|
78
|
-
* still-live lease is left alone; the fencing rename keeps even a misjudged
|
|
79
|
-
* reclaim fail-safe (worst case: that upload restarts).
|
|
80
|
-
*/
|
|
81
|
-
const gcStage = (stageDir) => eff(now())
|
|
82
|
-
.step(() => readdir(stageDir, {}))
|
|
83
|
-
.step(([k, v], t) => {
|
|
84
|
-
if (k === 'error') {
|
|
85
|
-
return pure(undefined);
|
|
86
|
-
}
|
|
87
|
-
const expired = v.flatMap(d => d.isFile && deadlineOf(d.name) < t ? [d.name] : []);
|
|
88
|
-
return forEachStep(pure(expired), name => eff(rm(join(stageDir, name)))
|
|
89
|
-
.step(() => pure(undefined))
|
|
90
|
-
.value);
|
|
91
|
-
})
|
|
92
|
-
.value;
|
|
93
|
-
/**
|
|
94
|
-
* Builds a content-addressable storage facade from a SHA-2 implementation.
|
|
95
|
-
*/
|
|
96
|
-
export const fileCas = (sha2) => (path) => {
|
|
97
|
-
const storePrefix = join(path, prefix);
|
|
98
|
-
const normalizedStorePrefix = normalize(storePrefix);
|
|
99
|
-
const stageDir = join(storePrefix, stageRel);
|
|
100
|
-
return {
|
|
101
|
-
read: (hash) => {
|
|
102
|
-
const p = join(path, toPath(hash));
|
|
103
|
-
const loop = (offset) => eff(readBytes(p, offset, chunkBytes))
|
|
104
|
-
.step((result) => {
|
|
105
|
-
const [t, v] = result;
|
|
106
|
-
// A missing shard or read error is an explicit error item, never EOF.
|
|
107
|
-
if (t === 'error') {
|
|
108
|
-
return nonEmpty(result, elEmpty());
|
|
109
|
-
}
|
|
110
|
-
// End the stream only on an empty read; every non-empty read — including a
|
|
111
|
-
// final short (`< CHUNK_BYTES`) chunk — is emitted as an `ok` item.
|
|
112
|
-
return length(v) === 0n
|
|
113
|
-
? elEmpty()
|
|
114
|
-
: nonEmpty(ok(v), loop(offset + chunkBytes));
|
|
115
|
-
})
|
|
116
|
-
.value;
|
|
117
|
-
return loop(0);
|
|
118
|
-
},
|
|
119
|
-
// Lock-free staging upload (issues/cas/staging-lease.md): stream each chunk straight
|
|
120
|
-
// to a `_stage/<deadline>-<rand>` file via `writeBytes` while folding it into the
|
|
121
|
-
// running SHA-2 state — the payload never lives in memory as a whole. The lease is
|
|
122
|
-
// renewed (rename to a fresh deadline) after every chunk; any error deletes the
|
|
123
|
-
// partial file and fails. On end-of-stream the file is published to its hash-derived
|
|
124
|
-
// shard path by a replace-`rename` (which also dedups/repairs a same-content shard),
|
|
125
|
-
// and success is confirmed by a `stat` size check. GC of expired staging files is
|
|
126
|
-
// piggy-backed at the start.
|
|
127
|
-
write: (payload) => {
|
|
128
|
-
// Publish the finished staging file to its content-addressed shard. The three
|
|
129
|
-
// filesystem steps run best-effort with their results ignored; success is decided
|
|
130
|
-
// afterward by observing the target's size (see staging-lease.md "Publish ignores
|
|
131
|
-
// results and checks the end state").
|
|
132
|
-
const publish = (state, offset, curPath) => {
|
|
133
|
-
const hash = sha2.end(state);
|
|
134
|
-
const rel = toPath(hash);
|
|
135
|
-
const dst = join(path, rel);
|
|
136
|
-
const dstDir = join(path, ...parse(rel).slice(0, -1));
|
|
137
|
-
return eff(mkdir(dstDir, { recursive: true }))
|
|
138
|
-
.step(() => rename(curPath, dst))
|
|
139
|
-
.step(() => rm(curPath))
|
|
140
|
-
.step(() => stat(dst))
|
|
141
|
-
.step(st => pure(st[0] === 'ok' && st[1].size === offset ? ok(hash) : error('publish size mismatch')))
|
|
142
|
-
.value;
|
|
143
|
-
};
|
|
144
|
-
// Any streaming error fails closed: delete the partial file, return the error.
|
|
145
|
-
const fail = (curPath, e) => eff(rm(curPath))
|
|
146
|
-
.step(() => pure(error(e)))
|
|
147
|
-
.value;
|
|
148
|
-
return eff(gcStage(stageDir)).step(() => eff(random256).step(rnd => {
|
|
149
|
-
const rndStr = vecToCBase32(rnd);
|
|
150
|
-
const loop = (state, offset, curPath) => (stream) => eff(stream)
|
|
151
|
-
.step((node) => {
|
|
152
|
-
if (node === undefined) {
|
|
153
|
-
return publish(state, offset, curPath);
|
|
154
|
-
}
|
|
155
|
-
const { first, tail } = node;
|
|
156
|
-
if (first[0] === 'error') {
|
|
157
|
-
return fail(curPath, first[1]);
|
|
158
|
-
}
|
|
159
|
-
const chunk = first[1];
|
|
160
|
-
return eff(writeBytes(curPath, offset, chunk))
|
|
161
|
-
.step(wb => {
|
|
162
|
-
if (wb[0] === 'error') {
|
|
163
|
-
return fail(curPath, wb[1]);
|
|
164
|
-
}
|
|
165
|
-
const newState = sha2.append(chunk)(state);
|
|
166
|
-
const newOffset = offset + Number(length(chunk) / 8n);
|
|
167
|
-
// Renew the lease: rename to a fresh deadline (keeps `delta` constant).
|
|
168
|
-
// The new path is still needed after the rename, to recurse with,
|
|
169
|
-
// so the rename captures it rather than closing over it.
|
|
170
|
-
const nextPath = step(now(), t => pure(join(stageDir, stageName(t + leaseDelta, rndStr))));
|
|
171
|
-
const renamed = historyStep(history(nextPath), next => rename(curPath, next));
|
|
172
|
-
return step(renamed, ([[rt, v], next]) => rt === 'error'
|
|
173
|
-
? fail(curPath, v)
|
|
174
|
-
: loop(newState, newOffset, next)(tail));
|
|
175
|
-
})
|
|
176
|
-
.value;
|
|
177
|
-
})
|
|
178
|
-
.value;
|
|
179
|
-
return eff(mkdir(stageDir, { recursive: true }))
|
|
180
|
-
.step(() => now())
|
|
181
|
-
.step(t0 => {
|
|
182
|
-
const path0 = join(stageDir, stageName(t0 + leaseDelta, rndStr));
|
|
183
|
-
return eff(createExclusive(path0))
|
|
184
|
-
.step(okStep(() => loop(sha2.init, 0, path0)(payload)))
|
|
185
|
-
.value;
|
|
186
|
-
})
|
|
187
|
-
.value;
|
|
188
|
-
}).value).value;
|
|
189
|
-
},
|
|
190
|
-
list: () =>
|
|
191
|
-
// A fresh store has no `.cas` directory yet. Treat *only* that case as an
|
|
192
|
-
// empty store, mirroring how `read` maps a missing shard to an error item.
|
|
193
|
-
// A `.cas` that exists but cannot be read (permissions, corruption) is a
|
|
194
|
-
// genuine storage error and is surfaced, not masked as "no hashes".
|
|
195
|
-
eff(access(storePrefix))
|
|
196
|
-
.step(a => {
|
|
197
|
-
if (a[0] === 'error') {
|
|
198
|
-
if (isNotFound(a[1])) {
|
|
199
|
-
return pure([]);
|
|
200
|
-
}
|
|
201
|
-
throw a[1];
|
|
202
|
-
}
|
|
203
|
-
return eff(readdir(storePrefix, { recursive: true }))
|
|
204
|
-
.step(r => pure(unwrap(r).flatMap(({ name, parentPath, isFile }) => toOption(isFile
|
|
205
|
-
? cBase32ToVec(normalize(parentPath).substring(normalizedStorePrefix.length).replaceAll('/', '') + name)
|
|
206
|
-
: null))))
|
|
207
|
-
.value;
|
|
208
|
-
})
|
|
209
|
-
.value,
|
|
210
|
-
url: (hash) => join(path, toPath(hash))
|
|
211
|
-
};
|
|
212
|
-
};
|
|
213
|
-
/** 256-bit random `Vec` built from 8 sequential `randomInt` (32-bit) calls. */
|
|
214
|
-
const random256 = foldStep(pure([0, 1, 2, 3, 4, 5, 6, 7]), empty, () => (acc) => eff(randomInt())
|
|
215
|
-
.step(r => pure(msb.concat(acc)(vec(32n)(BigInt(r)))))
|
|
216
|
-
.value);
|
|
217
|
-
/** Streams any file at `filePath` in `<=128 KiB` chunks as a `ListEffect` of `ok` items. */
|
|
218
|
-
const streamFile = (filePath) => {
|
|
219
|
-
const loop = (offset) => eff(readBytes(filePath, offset, chunkBytes))
|
|
220
|
-
.step((result) => {
|
|
221
|
-
if (result[0] === 'error') {
|
|
222
|
-
return nonEmpty(result, elEmpty());
|
|
223
|
-
}
|
|
224
|
-
const chunk = result[1];
|
|
225
|
-
return length(chunk) === 0n
|
|
226
|
-
? elEmpty()
|
|
227
|
-
: nonEmpty(ok(chunk), loop(offset + chunkBytes));
|
|
228
|
-
})
|
|
229
|
-
.value;
|
|
230
|
-
return loop(0);
|
|
231
|
-
};
|
|
232
|
-
/**
|
|
233
|
-
* Streams the file at `path` through `cas.write`, returning the content hash.
|
|
234
|
-
* Both the CLI `cas add` and the MCP `add` delegate to this; the MCP layer
|
|
235
|
-
* additionally deletes the source file on success.
|
|
236
|
-
*/
|
|
237
|
-
export const casAddFile = (cas) => (path) =>
|
|
238
|
-
// streamFile produces only ReadBytes effects. TypeScript can't prove ListEffect<ReadBytes,T>
|
|
239
|
-
// ≤ ListEffect<O,T> for generic O (recursive type), but the cast is sound: every concrete
|
|
240
|
-
// caller passes a Cas<O> where ReadBytes ⊆ O (e.g. FileCasOperation).
|
|
241
|
-
cas.write(streamFile(path));
|
|
242
|
-
/**
|
|
243
|
-
* Upload pipeline: streams `fileName` from `~/cas_upload/` through `casAddFile`,
|
|
244
|
-
* then deletes the source on success. On failure the source is left in place so
|
|
245
|
-
* the upload can be retried; `write` already cleans up its own partial staging file.
|
|
246
|
-
*/
|
|
247
|
-
export const casUpload = (home) => (fileName) => {
|
|
248
|
-
const src = join(home, 'cas_upload', fileName);
|
|
249
|
-
const c = fileCas(sha256)(home);
|
|
250
|
-
return eff(casAddFile(c)(src))
|
|
251
|
-
.step(okStep(v => eff(rm(src))
|
|
252
|
-
.step(() => pure(ok(v)))
|
|
253
|
-
.value))
|
|
254
|
-
.value;
|
|
255
|
-
};
|
package/fjs/cas/proof.f.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export declare const proof: {
|
|
2
|
-
addBigFile: () => void;
|
|
3
|
-
addAndGetBigFile: () => void;
|
|
4
|
-
casWriteRead: () => void;
|
|
5
|
-
casReadMissingShard: () => void;
|
|
6
|
-
casWriteMultiChunk: () => void;
|
|
7
|
-
casWriteDedup: () => void;
|
|
8
|
-
casWriteErrorItemAborts: () => void;
|
|
9
|
-
casWriteReadExceedsMaxLength: () => void;
|
|
10
|
-
casWriteGcReclaimsExpired: () => void;
|
|
11
|
-
casWriteGcSkipsLiveLease: () => void;
|
|
12
|
-
casUploadSuccess: () => void;
|
|
13
|
-
casUploadFailureKeepsSource: () => void;
|
|
14
|
-
collectReadDrainsChunks: () => void;
|
|
15
|
-
collectReadPropagatesErrorItem: () => void;
|
|
16
|
-
collectReadOverflow: () => void;
|
|
17
|
-
casListPropagatesNonNotFoundAccessError: () => void;
|
|
18
|
-
};
|
package/fjs/cas/proof.f.js
DELETED
|
@@ -1,305 +0,0 @@
|
|
|
1
|
-
import { length, maxLength, msb, vec, vec8 } from '../types/bit_vec/module.f.js';
|
|
2
|
-
import { cBase32ToVec, vecToCBase32 } from '../basen/cbase32/module.f.js';
|
|
3
|
-
import { computeSync, sha256 } from '../crypto/sha2/module.f.js';
|
|
4
|
-
import { fileCas, casAddFile, collectRead, casUpload } from './module.f.js';
|
|
5
|
-
import { match, pure, runPure, step } from '../effects/module.f.js';
|
|
6
|
-
import { mkdir, writeFile, rm, readFile, access } from '../effects/node/module.f.js';
|
|
7
|
-
import { error, ok } from '../types/result/module.f.js';
|
|
8
|
-
import { emptyState, virtual } from '../effects/node/virtual/module.f.js';
|
|
9
|
-
import { join } from '../path/module.f.js';
|
|
10
|
-
import { nonEmpty, empty } from '../effects/list/module.f.js';
|
|
11
|
-
import { assert, assertEq, assertNotNullish } from '../asserts/module.f.js';
|
|
12
|
-
const testDir = './test-cas-cli';
|
|
13
|
-
// Names the command a `FileCasOperation` effect stops at, so a proof can assert
|
|
14
|
-
// on it and resume the continuation without reading the `Do` layout. The map
|
|
15
|
-
// has to list every operation the CAS can perform — that is what makes it total,
|
|
16
|
-
// and what makes a new operation a compile error here rather than a silent gap.
|
|
17
|
-
const casCommand = match({
|
|
18
|
-
access: () => 'access',
|
|
19
|
-
createExclusive: () => 'createExclusive',
|
|
20
|
-
mkdir: () => 'mkdir',
|
|
21
|
-
now: () => 'now',
|
|
22
|
-
randomInt: () => 'randomInt',
|
|
23
|
-
readBytes: () => 'readBytes',
|
|
24
|
-
readdir: () => 'readdir',
|
|
25
|
-
rename: () => 'rename',
|
|
26
|
-
rm: () => 'rm',
|
|
27
|
-
stat: () => 'stat',
|
|
28
|
-
writeBytes: () => 'writeBytes',
|
|
29
|
-
});
|
|
30
|
-
// Create a 128 KiB big file content (at the max Vec size limit)
|
|
31
|
-
// This tests the boundary where files are at the chunk size limit
|
|
32
|
-
const createBigFileContent = () => {
|
|
33
|
-
const byteCount = 128n * 1024n; // 128 KiB
|
|
34
|
-
// Create a repeating pattern: 0x42 repeated across the file
|
|
35
|
-
return vec(byteCount * 8n)(0x42424242n);
|
|
36
|
-
};
|
|
37
|
-
// Test adding a big file and verifying the hash
|
|
38
|
-
const testAddBigFile = () => {
|
|
39
|
-
const bigFilePath = `${testDir}/big-file.bin`;
|
|
40
|
-
const cas = fileCas(sha256)(testDir);
|
|
41
|
-
const x0 = step(mkdir(testDir, { recursive: true }), () => writeFile(bigFilePath, createBigFileContent()));
|
|
42
|
-
const x1 = step(x0, writeRes => {
|
|
43
|
-
assert(writeRes[0] === 'ok', ['failed to write test file', writeRes]);
|
|
44
|
-
return casAddFile(cas)(bigFilePath);
|
|
45
|
-
});
|
|
46
|
-
const x2 = step(x1, addRes => {
|
|
47
|
-
assert(addRes[0] === 'ok', ['failed to add file to CAS', addRes]);
|
|
48
|
-
const hash = addRes[1];
|
|
49
|
-
// Verify hash is 256 bits (SHA-256)
|
|
50
|
-
assertEq(length(hash), 256n, ['expected 256-bit hash', length(hash)]);
|
|
51
|
-
// Verify hash can be encoded/decoded
|
|
52
|
-
assertNotNullish(cBase32ToVec(vecToCBase32(hash)), 'failed to decode hash from cBase32');
|
|
53
|
-
return rm(testDir);
|
|
54
|
-
});
|
|
55
|
-
return step(x2, () => pure(undefined));
|
|
56
|
-
};
|
|
57
|
-
// Test adding and retrieving a big file
|
|
58
|
-
const testAddAndGetBigFile = () => {
|
|
59
|
-
const bigContent = createBigFileContent();
|
|
60
|
-
const bigFilePath = `${testDir}/big-file.bin`;
|
|
61
|
-
const cas = fileCas(sha256)(testDir);
|
|
62
|
-
const x0 = step(mkdir(testDir, { recursive: true }), () => writeFile(bigFilePath, bigContent));
|
|
63
|
-
const x1 = step(x0, writeRes => {
|
|
64
|
-
assert(writeRes[0] === 'ok', ['failed to write test file', writeRes]);
|
|
65
|
-
return casAddFile(cas)(bigFilePath);
|
|
66
|
-
});
|
|
67
|
-
// Verify the file is stored at the expected location
|
|
68
|
-
const x2 = step(x1, addRes => {
|
|
69
|
-
assert(addRes[0] === 'ok', ['failed to add file to CAS', addRes]);
|
|
70
|
-
return readFile(cas.url(addRes[1]));
|
|
71
|
-
});
|
|
72
|
-
const x3 = step(x2, readRes => {
|
|
73
|
-
assert(readRes[0] === 'ok', ['failed to read stored file', readRes]);
|
|
74
|
-
// Verify content is the same size as original
|
|
75
|
-
assertEq(length(readRes[1]), length(bigContent), 'stored content size mismatch');
|
|
76
|
-
return rm(testDir);
|
|
77
|
-
});
|
|
78
|
-
return step(x3, () => pure(undefined));
|
|
79
|
-
};
|
|
80
|
-
export const proof = {
|
|
81
|
-
// Both effects must be interpreted, not merely built: an `Effect` is inert
|
|
82
|
-
// data, so returning one from a proof runs none of its continuations and
|
|
83
|
-
// asserts nothing.
|
|
84
|
-
addBigFile: () => { virtual(emptyState)(testAddBigFile()); },
|
|
85
|
-
addAndGetBigFile: () => { virtual(emptyState)(testAddAndGetBigFile()); },
|
|
86
|
-
//
|
|
87
|
-
casWriteRead: () => {
|
|
88
|
-
// Round-trip a single-chunk payload through the real streaming CAS: `write` returns
|
|
89
|
-
// the content hash, and `read` streams the same bytes back as `ok` chunk items.
|
|
90
|
-
const content = vec8(0x2an);
|
|
91
|
-
const c = fileCas(sha256)('.');
|
|
92
|
-
const payload = nonEmpty(ok(content), empty());
|
|
93
|
-
const [state1, writeResult] = virtual(emptyState)(c.write(payload));
|
|
94
|
-
assert(writeResult[0] === 'ok', ['expected write ok', writeResult]);
|
|
95
|
-
const hash = writeResult[1];
|
|
96
|
-
assertEq(length(hash), 256n, ['expected 256-bit hash', length(hash)]);
|
|
97
|
-
assertEq(msb.cmp(hash)(computeSync(sha256)([content])), 0, 'write hash mismatch');
|
|
98
|
-
const drain = (acc) => (stream) => step(stream, (node) => {
|
|
99
|
-
if (node === undefined) {
|
|
100
|
-
return pure(ok(acc));
|
|
101
|
-
}
|
|
102
|
-
const { first, tail } = node;
|
|
103
|
-
if (first[0] === 'error') {
|
|
104
|
-
return pure(first);
|
|
105
|
-
}
|
|
106
|
-
return drain([...acc, first[1]])(tail);
|
|
107
|
-
});
|
|
108
|
-
const [, readResult] = virtual(state1)(drain([])(c.read(hash)));
|
|
109
|
-
assert(readResult[0] === 'ok', ['expected read ok', readResult]);
|
|
110
|
-
assertEq(msb.cmp(msb.listToVec(readResult[1]))(content), 0, 'read content mismatch');
|
|
111
|
-
},
|
|
112
|
-
casReadMissingShard: () => {
|
|
113
|
-
// A missing shard surfaces as an explicit error *item*, never as end-of-stream.
|
|
114
|
-
const c = fileCas(sha256)('.');
|
|
115
|
-
const hash = computeSync(sha256)([vec8(0x2an)]);
|
|
116
|
-
const node = virtual(emptyState)(c.read(hash))[1];
|
|
117
|
-
assert(node !== undefined, 'missing shard must not be EOF');
|
|
118
|
-
assert(node.first[0] === 'error', ['expected error item', node.tail]);
|
|
119
|
-
},
|
|
120
|
-
casWriteMultiChunk: () => {
|
|
121
|
-
// A multi-chunk payload streams through `writeBytes` chunk-by-chunk (the lease is
|
|
122
|
-
// renewed between chunks); the hash equals the SHA-256 of the concatenated bytes,
|
|
123
|
-
// and read streams the same content back.
|
|
124
|
-
const chunks = [vec8(0x11n), vec8(0x22n), vec8(0x33n)];
|
|
125
|
-
const c = fileCas(sha256)('.');
|
|
126
|
-
const payload = chunks.reduceRight((tail, chunk) => nonEmpty(ok(chunk), tail), empty());
|
|
127
|
-
const [state1, writeResult] = virtual(emptyState)(c.write(payload));
|
|
128
|
-
assert(writeResult[0] === 'ok', ['expected write ok', writeResult]);
|
|
129
|
-
const hash = writeResult[1];
|
|
130
|
-
assertEq(msb.cmp(hash)(computeSync(sha256)(chunks)), 0, 'multi-chunk write hash mismatch');
|
|
131
|
-
const drain = (acc) => (stream) => step(stream, (node) => {
|
|
132
|
-
if (node === undefined) {
|
|
133
|
-
return pure(ok(acc));
|
|
134
|
-
}
|
|
135
|
-
const { first, tail } = node;
|
|
136
|
-
if (first[0] === 'error') {
|
|
137
|
-
return pure(first);
|
|
138
|
-
}
|
|
139
|
-
return drain([...acc, first[1]])(tail);
|
|
140
|
-
});
|
|
141
|
-
const [, readResult] = virtual(state1)(drain([])(c.read(hash)));
|
|
142
|
-
assert(readResult[0] === 'ok', ['expected read ok', readResult]);
|
|
143
|
-
const expected = msb.concat(msb.concat(chunks[0])(chunks[1]))(chunks[2]);
|
|
144
|
-
assertEq(msb.cmp(msb.listToVec(readResult[1]))(expected), 0, 'multi-chunk read content mismatch');
|
|
145
|
-
},
|
|
146
|
-
casWriteDedup: () => {
|
|
147
|
-
// Same content ⇒ same hash; the second upload's replace-`rename` publishes over the
|
|
148
|
-
// first, leaving exactly one shard in the store.
|
|
149
|
-
const content = vec8(0x2an);
|
|
150
|
-
const c = fileCas(sha256)('.');
|
|
151
|
-
const payload = () => nonEmpty(ok(content), empty());
|
|
152
|
-
const [state1, w1] = virtual(emptyState)(c.write(payload()));
|
|
153
|
-
const [state2, w2] = virtual(state1)(c.write(payload()));
|
|
154
|
-
assert(!(w1[0] !== 'ok' || w2[0] !== 'ok'), ['expected both writes ok', w1, w2]);
|
|
155
|
-
assertEq(msb.cmp(w1[1])(w2[1]), 0, 'dedup hash mismatch');
|
|
156
|
-
const [, hashes] = virtual(state2)(c.list());
|
|
157
|
-
assertEq(hashes.length, 1, ['expected one shard after dedup', hashes.length]);
|
|
158
|
-
},
|
|
159
|
-
casWriteErrorItemAborts: () => {
|
|
160
|
-
// An error item mid-stream deletes the partial staging file and fails; nothing is
|
|
161
|
-
// published, so the store stays empty.
|
|
162
|
-
const c = fileCas(sha256)('.');
|
|
163
|
-
const okItem = ok(vec8(0x11n));
|
|
164
|
-
const errItem = error({ code: 'BOOM' });
|
|
165
|
-
const payload = nonEmpty(okItem, nonEmpty(errItem, empty()));
|
|
166
|
-
const [state1, result] = virtual(emptyState)(c.write(payload));
|
|
167
|
-
assert(result[0] === 'error', ['expected write error', result]);
|
|
168
|
-
const [, hashes] = virtual(state1)(c.list());
|
|
169
|
-
assertEq(hashes.length, 0, ['expected nothing published on abort', hashes]);
|
|
170
|
-
},
|
|
171
|
-
casWriteReadExceedsMaxLength: () => {
|
|
172
|
-
// The point of streaming: a payload larger than a single `Vec`'s `maxLength`
|
|
173
|
-
// (128 KiB) must round-trip. `write` lands the chunks on disk without ever
|
|
174
|
-
// holding them as one `Vec`, and `read` streams them back the same way — so the
|
|
175
|
-
// round-trip is verified by hashing the read stream incrementally rather than
|
|
176
|
-
// concatenating it (which would itself overflow `maxLength`).
|
|
177
|
-
const big = vec(maxLength)(0xabn); // one full-size chunk: exactly maxLength bits
|
|
178
|
-
const tail = vec8(0x2an); // one more byte ⇒ total > maxLength
|
|
179
|
-
const chunks = [big, tail];
|
|
180
|
-
const c = fileCas(sha256)('.');
|
|
181
|
-
const payload = chunks.reduceRight((tl, chunk) => nonEmpty(ok(chunk), tl), empty());
|
|
182
|
-
const [state1, w] = virtual(emptyState)(c.write(payload));
|
|
183
|
-
assert(w[0] === 'ok', ['expected write ok', w]);
|
|
184
|
-
const hash = w[1];
|
|
185
|
-
assertEq(msb.cmp(hash)(computeSync(sha256)(chunks)), 0, 'oversized write hash mismatch');
|
|
186
|
-
// Fold the read stream straight into a fresh SHA-2 state — never one `Vec`.
|
|
187
|
-
const rehash = (state) => (stream) => step(stream, (node) => {
|
|
188
|
-
if (node === undefined) {
|
|
189
|
-
return pure(ok(sha256.end(state)));
|
|
190
|
-
}
|
|
191
|
-
const { first, tail } = node;
|
|
192
|
-
if (first[0] === 'error') {
|
|
193
|
-
return pure(first);
|
|
194
|
-
}
|
|
195
|
-
return rehash(sha256.append(first[1])(state))(tail);
|
|
196
|
-
});
|
|
197
|
-
const [, readBack] = virtual(state1)(rehash(sha256.init)(c.read(hash)));
|
|
198
|
-
assert(readBack[0] === 'ok', ['expected read ok', readBack]);
|
|
199
|
-
assertEq(msb.cmp(readBack[1])(hash), 0, 'oversized read-back hash mismatch');
|
|
200
|
-
},
|
|
201
|
-
casWriteGcReclaimsExpired: () => {
|
|
202
|
-
// A staging file whose deadline is in the past is reclaimed by the GC that `write`
|
|
203
|
-
// runs before staging its own file.
|
|
204
|
-
const stalePath = join('.', '.cas', '_stage', '0000000000000000000-stale');
|
|
205
|
-
const state0 = {
|
|
206
|
-
...emptyState,
|
|
207
|
-
epochNs: 1_000_000,
|
|
208
|
-
root: { '.cas': { '_stage': { '0000000000000000000-stale': [vec8(0x99n)] } } },
|
|
209
|
-
};
|
|
210
|
-
const content = vec8(0x2an);
|
|
211
|
-
const c = fileCas(sha256)('.');
|
|
212
|
-
const x = c.write(nonEmpty(ok(content), empty()));
|
|
213
|
-
const [state1, w] = virtual(state0)(x);
|
|
214
|
-
assert(w[0] === 'ok', ['expected write ok', w]);
|
|
215
|
-
const [, present] = virtual(state1)(access(stalePath));
|
|
216
|
-
assert(present[0] === 'error', 'expected GC to reclaim the expired staging file');
|
|
217
|
-
},
|
|
218
|
-
casWriteGcSkipsLiveLease: () => {
|
|
219
|
-
// A staging file whose deadline is still in the future is left alone by the GC
|
|
220
|
-
// that `write` runs before staging its own file.
|
|
221
|
-
const livePath = join('.', '.cas', '_stage', '0000000000002000000-live');
|
|
222
|
-
const state0 = {
|
|
223
|
-
...emptyState,
|
|
224
|
-
epochNs: 1_000_000,
|
|
225
|
-
root: { '.cas': { '_stage': { '0000000000002000000-live': [vec8(0x99n)] } } },
|
|
226
|
-
};
|
|
227
|
-
const content = vec8(0x2an);
|
|
228
|
-
const c = fileCas(sha256)('.');
|
|
229
|
-
const x = c.write(nonEmpty(ok(content), empty()));
|
|
230
|
-
const [state1, w] = virtual(state0)(x);
|
|
231
|
-
assert(w[0] === 'ok', ['expected write ok', w]);
|
|
232
|
-
const [, present] = virtual(state1)(access(livePath));
|
|
233
|
-
assert(present[0] === 'ok', 'expected GC to leave the live staging file alone');
|
|
234
|
-
},
|
|
235
|
-
casUploadSuccess: () => {
|
|
236
|
-
// A successful upload returns the hash and deletes the source file from cas_upload/.
|
|
237
|
-
const content = vec8(0x2an);
|
|
238
|
-
const state0 = { ...emptyState, root: { 'cas_upload': { 'myfile': [content] } } };
|
|
239
|
-
const [state1, result] = virtual(state0)(casUpload('.')('myfile'));
|
|
240
|
-
assert(result[0] === 'ok', ['expected casUpload ok', result]);
|
|
241
|
-
assertEq(length(result[1]), 256n, ['expected 256-bit hash', length(result[1])]);
|
|
242
|
-
// Source must be deleted after successful publish.
|
|
243
|
-
const srcPath = join('.', 'cas_upload', 'myfile');
|
|
244
|
-
const [, srcAccess] = virtual(state1)(access(srcPath));
|
|
245
|
-
assert(srcAccess[0] === 'error', 'expected source to be deleted after successful upload');
|
|
246
|
-
},
|
|
247
|
-
casUploadFailureKeepsSource: () => {
|
|
248
|
-
// A missing source file causes write to fail; casUpload returns error and the
|
|
249
|
-
// source is left in place (trivially: it was never there, but the upload is not published).
|
|
250
|
-
const state0 = { ...emptyState, root: {} };
|
|
251
|
-
const [state1, result] = virtual(state0)(casUpload('.')('nonexistent'));
|
|
252
|
-
assert(result[0] === 'error', ['expected casUpload to fail on missing source', result]);
|
|
253
|
-
// Nothing published to the store.
|
|
254
|
-
const c = fileCas(sha256)('.');
|
|
255
|
-
const [, hashes] = virtual(state1)(c.list());
|
|
256
|
-
assertEq(hashes.length, 0, ['expected nothing published on failed upload', hashes]);
|
|
257
|
-
},
|
|
258
|
-
collectReadDrainsChunks: () => {
|
|
259
|
-
// The common path: every chunk is `ok`, so collectRead concatenates them all
|
|
260
|
-
// and returns the whole blob as one `Vec`.
|
|
261
|
-
const stream = nonEmpty(ok(vec8(0x11n)), nonEmpty(ok(vec8(0x22n)), empty()));
|
|
262
|
-
const o = runPure(collectRead(stream));
|
|
263
|
-
assert(o.length === 1, 'expected collectRead to finish without issuing a command');
|
|
264
|
-
assertEq(o[0][0], 'ok');
|
|
265
|
-
},
|
|
266
|
-
collectReadPropagatesErrorItem: () => {
|
|
267
|
-
// An error item mid-stream short-circuits collectRead with that same error.
|
|
268
|
-
const boom = error('boom');
|
|
269
|
-
const stream = nonEmpty(ok(vec8(0x11n)), nonEmpty(boom, empty()));
|
|
270
|
-
const o = runPure(collectRead(stream));
|
|
271
|
-
assert(o.length === 1, 'expected collectRead to finish without issuing a command');
|
|
272
|
-
const [r] = o;
|
|
273
|
-
assertEq(r[0], 'error');
|
|
274
|
-
assertEq(r[1], 'boom');
|
|
275
|
-
},
|
|
276
|
-
// A single `Vec` cannot exceed `maxLength` bits — feed a pure stream whose second
|
|
277
|
-
// chunk pushes the running total just over the limit so the overflow guard fires
|
|
278
|
-
// without any real I/O.
|
|
279
|
-
collectReadOverflow: () => {
|
|
280
|
-
const half = maxLength / 2n;
|
|
281
|
-
const v1 = vec(half)(0n);
|
|
282
|
-
const v2 = vec(half + 1n)(0n);
|
|
283
|
-
const stream = nonEmpty(ok(v1), nonEmpty(ok(v2), empty()));
|
|
284
|
-
const o = runPure(collectRead(stream));
|
|
285
|
-
assert(o.length === 1, 'expected collectRead to finish without issuing a command');
|
|
286
|
-
assertEq(o[0][0], 'error');
|
|
287
|
-
},
|
|
288
|
-
casListPropagatesNonNotFoundAccessError: () => {
|
|
289
|
-
// A non-ENOENT `access` failure (permissions, corruption) is a genuine storage
|
|
290
|
-
// error and must propagate out of `list`, not be swallowed as an empty store.
|
|
291
|
-
const c = fileCas(sha256)('.');
|
|
292
|
-
const boom = { code: 'EACCES' };
|
|
293
|
-
const r = casCommand(c.list());
|
|
294
|
-
assert(r[0] === 'cont', 'expected list() to issue an access command first');
|
|
295
|
-
assertEq(r[1], 'access');
|
|
296
|
-
let threw;
|
|
297
|
-
try {
|
|
298
|
-
r[2](error(boom));
|
|
299
|
-
}
|
|
300
|
-
catch (e) {
|
|
301
|
-
threw = e;
|
|
302
|
-
}
|
|
303
|
-
assertEq(threw, boom);
|
|
304
|
-
},
|
|
305
|
-
};
|
package/fjs/ci/bun/module.f.d.ts
DELETED
package/fjs/ci/bun/module.f.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CI step builder for Bun: installs the pinned Bun version and runs the
|
|
3
|
-
* FunctionalScript package smoke test plus Bun coverage in one canonical job.
|
|
4
|
-
*
|
|
5
|
-
* @module
|
|
6
|
-
*/
|
|
7
|
-
import { bun } from '../config/module.f.js';
|
|
8
|
-
import { install, test, uses } from '../common/module.f.js';
|
|
9
|
-
export const bunSteps = (version) => [
|
|
10
|
-
install(uses('oven-sh/setup-bun', { 'bun-version': bun })),
|
|
11
|
-
install({ run: `bun install -g functionalscript@${version}` }),
|
|
12
|
-
test({ run: 'bun install --frozen-lockfile' }),
|
|
13
|
-
test({ run: `bunx functionalscript@${version} t` }),
|
|
14
|
-
test({ run: 'bun test --coverage' }),
|
|
15
|
-
];
|