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/asserts/proof.f.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { assert, assertEq, todo } from './module.f.js';
|
|
2
|
-
export const proof = {
|
|
3
|
-
assertPassesOnTrue: () => {
|
|
4
|
-
assert(true);
|
|
5
|
-
assert(true, 'with message');
|
|
6
|
-
},
|
|
7
|
-
assertEqPassesOnEqual: () => {
|
|
8
|
-
assertEq(1, 1);
|
|
9
|
-
assertEq('x', 'x');
|
|
10
|
-
},
|
|
11
|
-
throw: {
|
|
12
|
-
assertEqThrowsOnUnequal: () => assertEq(1, 2),
|
|
13
|
-
assertEqThrowsOnUnequal3: () => assertEq(1, 2, "message"),
|
|
14
|
-
assertThrowsDefaultMsg: () => assert(false),
|
|
15
|
-
assertThrowsCustomMsg: () => assert(false, 'oops'),
|
|
16
|
-
todoThrows: () => todo(),
|
|
17
|
-
},
|
|
18
|
-
};
|
package/fjs/base_n/module.f.d.ts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared bit-codec factory for alphabet-based encodings such as `base64` and
|
|
3
|
-
* `cbase32`.
|
|
4
|
-
*
|
|
5
|
-
* Each call returns the raw `Vec ↔ string` codec parameterised by the chunk
|
|
6
|
-
* width (`bits`) and the alphabet (and an optional input-character
|
|
7
|
-
* normalisation step on the decode side). Padding strategies — RFC 4648 `=`
|
|
8
|
-
* octet-alignment, Crockford-style stop-bit sentinels, etc. — are deliberately
|
|
9
|
-
* out of scope: they vary per format and are handled by the caller around
|
|
10
|
-
* `vecToString` / `stringToVec`.
|
|
11
|
-
*
|
|
12
|
-
* @module
|
|
13
|
-
*/
|
|
14
|
-
import { type Vec } from '../types/bit_vec/module.f.ts';
|
|
15
|
-
import type { Nullable } from '../types/nullable/module.f.ts';
|
|
16
|
-
/**
|
|
17
|
-
* The encode/decode pair returned by {@link baseN}.
|
|
18
|
-
*/
|
|
19
|
-
export type BaseN = {
|
|
20
|
-
/**
|
|
21
|
-
* Encodes a bit vector by splitting it into `bits`-wide MSB chunks
|
|
22
|
-
* (`chunkList`, a balanced divide-and-conquer split, not a linear scan)
|
|
23
|
-
* and indexing each into the alphabet. A trailing partial chunk shorter
|
|
24
|
-
* than `bits` is left-padded with zeros.
|
|
25
|
-
*/
|
|
26
|
-
readonly vecToString: (v: Vec) => string;
|
|
27
|
-
/**
|
|
28
|
-
* Decodes a string by mapping each character to its alphabet index and
|
|
29
|
-
* concatenating the resulting `bits`-wide chunks. Returns `null` on the
|
|
30
|
-
* first character that is not in the alphabet (after `normalize`, when
|
|
31
|
-
* provided).
|
|
32
|
-
*/
|
|
33
|
-
readonly stringToVec: (s: string) => Nullable<Vec>;
|
|
34
|
-
};
|
|
35
|
-
/**
|
|
36
|
-
* Builds a {@link BaseN} codec for a fixed chunk width and alphabet.
|
|
37
|
-
*
|
|
38
|
-
* @param bits The chunk width in bits. `alphabet.length` must equal `2 ** bits`.
|
|
39
|
-
* @param alphabet The character used for each unsigned `bits`-bit value, in
|
|
40
|
-
* ascending order (index `0` → first character).
|
|
41
|
-
* @param normalize Optional pre-lookup transform applied to each input
|
|
42
|
-
* character on decode — e.g. Crockford base32 lowercases and folds
|
|
43
|
-
* `i`/`l`→`1`, `o`→`0`.
|
|
44
|
-
*/
|
|
45
|
-
export declare const baseN: (bits: bigint, alphabet: string, normalize?: (c: string) => string) => BaseN;
|
package/fjs/base_n/module.f.js
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared bit-codec factory for alphabet-based encodings such as `base64` and
|
|
3
|
-
* `cbase32`.
|
|
4
|
-
*
|
|
5
|
-
* Each call returns the raw `Vec ↔ string` codec parameterised by the chunk
|
|
6
|
-
* width (`bits`) and the alphabet (and an optional input-character
|
|
7
|
-
* normalisation step on the decode side). Padding strategies — RFC 4648 `=`
|
|
8
|
-
* octet-alignment, Crockford-style stop-bit sentinels, etc. — are deliberately
|
|
9
|
-
* out of scope: they vary per format and are handled by the caller around
|
|
10
|
-
* `vecToString` / `stringToVec`.
|
|
11
|
-
*
|
|
12
|
-
* @module
|
|
13
|
-
*/
|
|
14
|
-
import { msb, lsb, vec, chunkList, unpack } from '../types/bit_vec/module.f.js';
|
|
15
|
-
import { fold } from '../types/list/module.f.js';
|
|
16
|
-
import { compose } from '../types/function/module.f.js';
|
|
17
|
-
const { unpackSplit } = msb;
|
|
18
|
-
const { tryListToVec: reversedListToVec } = lsb;
|
|
19
|
-
// `chunkList(msb)` doesn't depend on `bits` or `v` — shared across every
|
|
20
|
-
// `baseN(...)` codec (base64, cbase32, ...).
|
|
21
|
-
const chunkListMsb = chunkList(msb);
|
|
22
|
-
/**
|
|
23
|
-
* Builds a {@link BaseN} codec for a fixed chunk width and alphabet.
|
|
24
|
-
*
|
|
25
|
-
* @param bits The chunk width in bits. `alphabet.length` must equal `2 ** bits`.
|
|
26
|
-
* @param alphabet The character used for each unsigned `bits`-bit value, in
|
|
27
|
-
* ascending order (index `0` → first character).
|
|
28
|
-
* @param normalize Optional pre-lookup transform applied to each input
|
|
29
|
-
* character on decode — e.g. Crockford base32 lowercases and folds
|
|
30
|
-
* `i`/`l`→`1`, `o`→`0`.
|
|
31
|
-
*/
|
|
32
|
-
export const baseN = (bits, alphabet, normalize) => {
|
|
33
|
-
const vecN = vec(bits);
|
|
34
|
-
const toIndex = normalize === undefined
|
|
35
|
-
? (c) => alphabet.indexOf(c)
|
|
36
|
-
: (c) => alphabet.indexOf(normalize(c));
|
|
37
|
-
const unpackSplitBits = unpackSplit(bits);
|
|
38
|
-
// Converts one `<= bits`-wide chunk (as yielded by `chunkList`, already
|
|
39
|
-
// masked to its own length) to its alphabet index. A trailing partial
|
|
40
|
-
// chunk shorter than `bits` is left-padded with zeros: `unpackSplit`'s
|
|
41
|
-
// shift amount goes negative, which per spec becomes a left shift.
|
|
42
|
-
const chunkToIndex = (chunk) => {
|
|
43
|
-
const u = unpack(chunk);
|
|
44
|
-
return Number(u.length < bits ? unpackSplitBits(u)[0] : u.uint);
|
|
45
|
-
};
|
|
46
|
-
// Folds directly over `chunkList`'s lazy list in one pass — faster than
|
|
47
|
-
// `map` into a second lazy list before joining, since there's no second
|
|
48
|
-
// list to allocate/traverse.
|
|
49
|
-
const chunkToString = (chunk) => (acc) => acc + alphabet[chunkToIndex(chunk)];
|
|
50
|
-
return {
|
|
51
|
-
// `chunkListMsb(bits)` then `fold(chunkToString)('')` — neither half
|
|
52
|
-
// depends on `v`, so `compose` builds (and this closure captures)
|
|
53
|
-
// the composed function once per `baseN(...)` codec; no need to name
|
|
54
|
-
// the halves separately just to get that one-time build.
|
|
55
|
-
vecToString: compose(chunkListMsb(bits))(fold(chunkToString)('')),
|
|
56
|
-
stringToVec: s => {
|
|
57
|
-
// Build a reversed chunk list, bailing out at the first invalid
|
|
58
|
-
// character so malformed input is rejected in O(prefix) time and
|
|
59
|
-
// `normalize` is never run past it. `listToVec` then concatenates in
|
|
60
|
-
// O(n log n).
|
|
61
|
-
let chunks = null;
|
|
62
|
-
for (const c of s) {
|
|
63
|
-
const index = toIndex(c);
|
|
64
|
-
if (index < 0) {
|
|
65
|
-
return null;
|
|
66
|
-
}
|
|
67
|
-
chunks = { first: vecN(BigInt(index)), tail: chunks };
|
|
68
|
-
}
|
|
69
|
-
return reversedListToVec(chunks);
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
};
|
package/fjs/base_n/proof.f.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { assertEq } from '../asserts/module.f.js';
|
|
2
|
-
import { empty, maxLength, vec, length } from '../types/bit_vec/module.f.js';
|
|
3
|
-
import { baseN } from './module.f.js';
|
|
4
|
-
const hex = baseN(4n, '0123456789abcdef');
|
|
5
|
-
const cb32 = baseN(5n, '0123456789abcdefghjkmnpqrstvwxyz', c => {
|
|
6
|
-
const lower = c.toLowerCase();
|
|
7
|
-
switch (lower) {
|
|
8
|
-
case 'i': {
|
|
9
|
-
return '1';
|
|
10
|
-
}
|
|
11
|
-
case 'l': {
|
|
12
|
-
return '1';
|
|
13
|
-
}
|
|
14
|
-
case 'o': {
|
|
15
|
-
return '0';
|
|
16
|
-
}
|
|
17
|
-
default: {
|
|
18
|
-
return lower;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
// Sample input for the `big` proof below: 262 144 `f` characters decode into a
|
|
23
|
-
// 1 Mibit (`maxLength`) vector.
|
|
24
|
-
const bigSampleHex = `f`.repeat(Number(maxLength >> 2n));
|
|
25
|
-
export const proof = {
|
|
26
|
-
encodeEmpty: () => {
|
|
27
|
-
const s = hex.vecToString(empty);
|
|
28
|
-
assertEq(s, '', [s]);
|
|
29
|
-
},
|
|
30
|
-
encodeAligned: () => {
|
|
31
|
-
// Two 4-bit chunks → two hex digits
|
|
32
|
-
const s = hex.vecToString(vec(8n)(0xa5n));
|
|
33
|
-
assertEq(s, 'a5', [s]);
|
|
34
|
-
},
|
|
35
|
-
encodeUnaligned: () => {
|
|
36
|
-
// 6 bits → first 4-bit chunk + a 2-bit tail that popFront pads with
|
|
37
|
-
// trailing zeros (the standard `popFront` behaviour the codec inherits).
|
|
38
|
-
const s = hex.vecToString(vec(6n)(41n));
|
|
39
|
-
assertEq(s, 'a4', [s]);
|
|
40
|
-
},
|
|
41
|
-
decodeEmpty: () => {
|
|
42
|
-
const v = hex.stringToVec('');
|
|
43
|
-
assertEq(v, empty, [v]);
|
|
44
|
-
},
|
|
45
|
-
decodeRoundTrip: () => {
|
|
46
|
-
const v = hex.stringToVec('ab');
|
|
47
|
-
assertEq(v, vec(8n)(0xabn), [v]);
|
|
48
|
-
},
|
|
49
|
-
decodeInvalid: () => {
|
|
50
|
-
assertEq(hex.stringToVec('z'), null, 'invalid char should return null');
|
|
51
|
-
assertEq(hex.stringToVec('aZ'), null, 'mixed invalid char should return null');
|
|
52
|
-
},
|
|
53
|
-
normalizeHit: () => {
|
|
54
|
-
// 'A' lowercases to 'a' — same vector as the lowercase input.
|
|
55
|
-
const a = cb32.stringToVec('A');
|
|
56
|
-
const b = cb32.stringToVec('a');
|
|
57
|
-
assertEq(a, b, [a, b]);
|
|
58
|
-
// Crockford folds: i,l → 1 and o → 0.
|
|
59
|
-
assertEq(cb32.stringToVec('I'), cb32.stringToVec('1'), 'I→1');
|
|
60
|
-
assertEq(cb32.stringToVec('l'), cb32.stringToVec('1'), 'l→1');
|
|
61
|
-
assertEq(cb32.stringToVec('o'), cb32.stringToVec('0'), 'o→0');
|
|
62
|
-
},
|
|
63
|
-
normalizeMiss: () => {
|
|
64
|
-
assertEq(cb32.stringToVec('u'), null, 'unknown char should return null');
|
|
65
|
-
},
|
|
66
|
-
// Decodes a 1 Mibit hex string. With the O(n log n) `listToVec` builder this
|
|
67
|
-
// runs in well under a second (was ~13 s node / ~43 s bun under the old
|
|
68
|
-
// per-chunk `concat`).
|
|
69
|
-
big: () => {
|
|
70
|
-
const x = hex.stringToVec(bigSampleHex);
|
|
71
|
-
assertEq(length(x), maxLength);
|
|
72
|
-
}
|
|
73
|
-
};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Base-128 encoding and decoding utilities over bit vectors.
|
|
3
|
-
*
|
|
4
|
-
* @module
|
|
5
|
-
*/
|
|
6
|
-
import { type Vec } from '../../types/bit_vec/module.f.ts';
|
|
7
|
-
/**
|
|
8
|
-
* Encodes a bigint into an MSB Base128 vector.
|
|
9
|
-
*
|
|
10
|
-
* @param uint The bigint to encode.
|
|
11
|
-
* @returns The encoded MSB Base128 vector.
|
|
12
|
-
*/
|
|
13
|
-
export declare const encode: (uint: bigint) => Vec;
|
|
14
|
-
/**
|
|
15
|
-
* Decodes an MSB Base128 vector into a bigint.
|
|
16
|
-
*
|
|
17
|
-
* @param v The MSB Base128 vector to decode.
|
|
18
|
-
* @returns A tuple containing the decoded bigint and the remaining vector.
|
|
19
|
-
*/
|
|
20
|
-
export declare const decode: (v: Vec) => readonly [bigint, Vec];
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Base-128 encoding and decoding utilities over bit vectors.
|
|
3
|
-
*
|
|
4
|
-
* @module
|
|
5
|
-
*/
|
|
6
|
-
import { vec8, msb, empty } from '../../types/bit_vec/module.f.js';
|
|
7
|
-
const { concat, popFront } = msb;
|
|
8
|
-
const pop8 = popFront(8n);
|
|
9
|
-
/**
|
|
10
|
-
* Encodes a bigint into an MSB Base128 vector.
|
|
11
|
-
*
|
|
12
|
-
* @param uint The bigint to encode.
|
|
13
|
-
* @returns The encoded MSB Base128 vector.
|
|
14
|
-
*/
|
|
15
|
-
export const encode = (uint) => {
|
|
16
|
-
let result = empty;
|
|
17
|
-
while (true) {
|
|
18
|
-
const item = uint & 0x7fn;
|
|
19
|
-
const flag = result === empty ? 0n : 0x80n;
|
|
20
|
-
result = concat(vec8(flag | item))(result);
|
|
21
|
-
uint >>= 7n;
|
|
22
|
-
if (uint === 0n) {
|
|
23
|
-
return result;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
/**
|
|
28
|
-
* Decodes an MSB Base128 vector into a bigint.
|
|
29
|
-
*
|
|
30
|
-
* @param v The MSB Base128 vector to decode.
|
|
31
|
-
* @returns A tuple containing the decoded bigint and the remaining vector.
|
|
32
|
-
*/
|
|
33
|
-
export const decode = (v) => {
|
|
34
|
-
let result = 0n;
|
|
35
|
-
while (true) {
|
|
36
|
-
const [byte, rest] = pop8(v);
|
|
37
|
-
result = (result << 7n) | (byte & 0x7fn);
|
|
38
|
-
if (byte < 0x80n) {
|
|
39
|
-
return [result, rest];
|
|
40
|
-
}
|
|
41
|
-
v = rest;
|
|
42
|
-
}
|
|
43
|
-
};
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { empty, vec, vec8 } from '../../types/bit_vec/module.f.js';
|
|
2
|
-
import { asBase } from '../../types/nominal/module.f.js';
|
|
3
|
-
import { encode, decode } from './module.f.js';
|
|
4
|
-
const test = (a, b) => {
|
|
5
|
-
const encoded = encode(a);
|
|
6
|
-
if (encoded !== b) {
|
|
7
|
-
throw `encoded: ${asBase(encoded).toString(16)}, expected: ${asBase(b).toString(16)}`;
|
|
8
|
-
}
|
|
9
|
-
const [decoded, rest] = decode(b);
|
|
10
|
-
if (decoded !== a) {
|
|
11
|
-
throw `decoded: ${decoded.toString(16)}, expected: ${a.toString(16)}`;
|
|
12
|
-
}
|
|
13
|
-
if (rest !== empty) {
|
|
14
|
-
throw `rest: ${asBase(rest).toString(16)}, expected: ${asBase(empty).toString(16)}`;
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
export const proof = () => {
|
|
18
|
-
test(0n, vec8(0n));
|
|
19
|
-
test(1n, vec8(1n));
|
|
20
|
-
test(0x7fn, vec8(0x7fn));
|
|
21
|
-
test(0x80n, vec(16n)(0x8100n));
|
|
22
|
-
test(0x81n, vec(16n)(0x8101n));
|
|
23
|
-
test(0x82n, vec(16n)(0x8102n));
|
|
24
|
-
test(0x3fffn, vec(16n)(0xff7fn));
|
|
25
|
-
test(0x4000n, vec(24n)(0x818000n));
|
|
26
|
-
};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Standard Base64 encoding and decoding (RFC 4648).
|
|
3
|
-
*
|
|
4
|
-
* @module
|
|
5
|
-
*/
|
|
6
|
-
import { type Vec } from "../../types/bit_vec/module.f.ts";
|
|
7
|
-
import type { Nullable } from "../../types/nullable/module.f.ts";
|
|
8
|
-
export declare const encode: (input: Vec) => Nullable<string>;
|
|
9
|
-
export declare const decode: (input: string) => Nullable<Vec>;
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Standard Base64 encoding and decoding (RFC 4648).
|
|
3
|
-
*
|
|
4
|
-
* @module
|
|
5
|
-
*/
|
|
6
|
-
import { msb, length, vec, maxLength } from "../../types/bit_vec/module.f.js";
|
|
7
|
-
import { baseN } from "../../base_n/module.f.js";
|
|
8
|
-
const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
9
|
-
const { popFront } = msb;
|
|
10
|
-
const { vecToString, stringToVec } = baseN(6n, alphabet);
|
|
11
|
-
export const encode = (input) => {
|
|
12
|
-
const len = length(input);
|
|
13
|
-
// Base64 is a byte codec; reject non-octet-aligned inputs.
|
|
14
|
-
if (len % 8n !== 0n) {
|
|
15
|
-
return null;
|
|
16
|
-
}
|
|
17
|
-
// `vecToString` (via `baseN`'s `chunkList`) already left-pads a trailing
|
|
18
|
-
// partial 6-bit chunk with zeros, so `input` needs no explicit padding —
|
|
19
|
-
// building one would risk pushing an intermediate `Vec` past `maxLength`
|
|
20
|
-
// for input already at or near that limit, for no benefit.
|
|
21
|
-
let result = vecToString(input);
|
|
22
|
-
// Append `=` padding to make total length a multiple of 4.
|
|
23
|
-
while (result.length % 4 !== 0) {
|
|
24
|
-
result += '=';
|
|
25
|
-
}
|
|
26
|
-
return result;
|
|
27
|
-
};
|
|
28
|
-
export const decode = (input) => {
|
|
29
|
-
// Count and strip trailing `=` padding (0, 1, or 2).
|
|
30
|
-
let padChars = 0;
|
|
31
|
-
for (let i = input.length - 1; i >= 0 && input[i] === '='; i--) {
|
|
32
|
-
padChars++;
|
|
33
|
-
}
|
|
34
|
-
if (padChars > 2) {
|
|
35
|
-
return null;
|
|
36
|
-
}
|
|
37
|
-
const body = input.slice(0, input.length - padChars);
|
|
38
|
-
// Total chars must make a multiple of 4 with the padding.
|
|
39
|
-
if ((body.length + padChars) % 4 !== 0) {
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
if (padChars === 0) {
|
|
43
|
-
return stringToVec(body);
|
|
44
|
-
}
|
|
45
|
-
// `encode`'s zero-padding bits (added to reach a 6-bit boundary) live
|
|
46
|
-
// entirely inside the *last* character's chunk — RFC 4648 padding never
|
|
47
|
-
// spans more than one base64 character. Decode every character but the
|
|
48
|
-
// last through `stringToVec` as usual, then decode and trim the last
|
|
49
|
-
// character on its own, so no intermediate `Vec` built here is ever
|
|
50
|
-
// wider than the final, post-trim result — even for input whose decoded
|
|
51
|
-
// payload lands exactly at `maxLength`.
|
|
52
|
-
const removeBits = BigInt(padChars * 2);
|
|
53
|
-
const realBits = 6n - removeBits;
|
|
54
|
-
const head = stringToVec(body.slice(0, body.length - 1));
|
|
55
|
-
if (head === null) {
|
|
56
|
-
return null;
|
|
57
|
-
}
|
|
58
|
-
const lastChunk = stringToVec(body.slice(body.length - 1));
|
|
59
|
-
if (lastChunk === null) {
|
|
60
|
-
return null;
|
|
61
|
-
}
|
|
62
|
-
if (length(head) + realBits > maxLength) {
|
|
63
|
-
return null;
|
|
64
|
-
}
|
|
65
|
-
const [kept, pad] = popFront(realBits)(lastChunk);
|
|
66
|
-
// Padding bits must be zero (RFC 4648 §3.5).
|
|
67
|
-
if (pad !== vec(removeBits)(0n)) {
|
|
68
|
-
return null;
|
|
69
|
-
}
|
|
70
|
-
return msb.concat(head)(vec(realBits)(kept));
|
|
71
|
-
};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export declare const proof: {
|
|
2
|
-
empty: () => void;
|
|
3
|
-
oneByte: () => void;
|
|
4
|
-
twoBytes: () => void;
|
|
5
|
-
threeBytes: () => void;
|
|
6
|
-
roundtrip: () => void;
|
|
7
|
-
nonOctet: () => void;
|
|
8
|
-
invalidInput: () => void;
|
|
9
|
-
validPadding: () => void;
|
|
10
|
-
knownVectors: () => void;
|
|
11
|
-
decodeOverflow: () => void;
|
|
12
|
-
decodePaddedTailRejections: () => void;
|
|
13
|
-
encodeAtMaxLengthSucceeds: () => void;
|
|
14
|
-
decodeAtMaxLengthSucceeds: () => void;
|
|
15
|
-
encodeLargeVecIsSlow: () => void;
|
|
16
|
-
};
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import { assertEq } from '../../asserts/module.f.js';
|
|
2
|
-
import { empty, vec, repeat, vec8, maxLength } from "../../types/bit_vec/module.f.js";
|
|
3
|
-
import { encode, decode } from "./module.f.js";
|
|
4
|
-
const check = (s, v) => {
|
|
5
|
-
assertEq(encode(v), s);
|
|
6
|
-
assertEq(decode(s), v);
|
|
7
|
-
};
|
|
8
|
-
export const proof = {
|
|
9
|
-
empty: () => {
|
|
10
|
-
check('', empty);
|
|
11
|
-
},
|
|
12
|
-
oneByte: () => {
|
|
13
|
-
// 0x00 → 0b00000000, padded to 12 bits → AA==
|
|
14
|
-
check('AA==', vec(8n)(0n));
|
|
15
|
-
// 0x48 'H' → 0b01001000 → SA==
|
|
16
|
-
check('SA==', vec(8n)(72n));
|
|
17
|
-
// 0xFF → 0b11111111, padded 12: 111111110000 → /w==
|
|
18
|
-
check('/w==', vec(8n)(255n));
|
|
19
|
-
},
|
|
20
|
-
twoBytes: () => {
|
|
21
|
-
// 0x0000 → AAAA with == stripped → 16 bits: AA==? No: 16 bits → 18 bits with 2 pad → 3 chars + =
|
|
22
|
-
// 0b0000000000000000 padded 2 bits → 18 bits: 000000 000000 000000 → AAA=
|
|
23
|
-
check('AAA=', vec(16n)(0n));
|
|
24
|
-
// 0xFFFF → 0b1111111111111111 padded 2 bits → 111111 111111 111100 → //8=
|
|
25
|
-
check('//8=', vec(16n)(65535n));
|
|
26
|
-
},
|
|
27
|
-
threeBytes: () => {
|
|
28
|
-
// 24 bits, no padding
|
|
29
|
-
check('AAAA', vec(24n)(0n));
|
|
30
|
-
check('////', vec(24n)(16777215n));
|
|
31
|
-
},
|
|
32
|
-
roundtrip: () => {
|
|
33
|
-
// Various bit lengths
|
|
34
|
-
check('AA==', vec(8n)(0n));
|
|
35
|
-
check('AAA=', vec(16n)(0n));
|
|
36
|
-
check('AAAA', vec(24n)(0n));
|
|
37
|
-
// 32 bits
|
|
38
|
-
check('AAAAAA==', vec(32n)(0n));
|
|
39
|
-
// 40 bits (5 bytes: AAAA + AAA=)
|
|
40
|
-
check('AAAAAAA=', vec(40n)(0n));
|
|
41
|
-
},
|
|
42
|
-
nonOctet: () => {
|
|
43
|
-
// encode rejects bit vectors whose length is not a multiple of 8
|
|
44
|
-
assertEq(encode(vec(1n)(0n)), null);
|
|
45
|
-
assertEq(encode(vec(6n)(0n)), null);
|
|
46
|
-
assertEq(encode(vec(12n)(0n)), null);
|
|
47
|
-
},
|
|
48
|
-
invalidInput: () => {
|
|
49
|
-
assertEq(decode('!'), null);
|
|
50
|
-
assertEq(decode('A!AA'), null);
|
|
51
|
-
assertEq(decode('A==='), null);
|
|
52
|
-
assertEq(decode('A'), null);
|
|
53
|
-
assertEq(decode('AA'), null);
|
|
54
|
-
assertEq(decode('AAA'), null);
|
|
55
|
-
assertEq(decode('=AAA'), null);
|
|
56
|
-
// Non-zero padding bits must be rejected (RFC 4648 §3.5)
|
|
57
|
-
assertEq(decode('AB=='), null);
|
|
58
|
-
assertEq(decode('AAB='), null);
|
|
59
|
-
},
|
|
60
|
-
validPadding: () => {
|
|
61
|
-
// "==" padding
|
|
62
|
-
assertEq(decode('AA=='), vec(8n)(0n));
|
|
63
|
-
// "=" padding
|
|
64
|
-
assertEq(decode('AAA='), vec(16n)(0n));
|
|
65
|
-
// No padding
|
|
66
|
-
assertEq(decode('AAAA'), vec(24n)(0n));
|
|
67
|
-
},
|
|
68
|
-
knownVectors: () => {
|
|
69
|
-
// RFC 4648 §10 test vectors (byte-aligned, treating bytes as 8-bit MSB vectors)
|
|
70
|
-
// '' → ''
|
|
71
|
-
check('', empty);
|
|
72
|
-
// 0x66 ('f') → Zg==
|
|
73
|
-
check('Zg==', vec(8n)(0x66n));
|
|
74
|
-
// 0x66 0x6f ('fo') → Zm8=
|
|
75
|
-
check('Zm8=', vec(16n)(0x666fn));
|
|
76
|
-
// 0x66 0x6f 0x6f ('foo') → Zm9v
|
|
77
|
-
check('Zm9v', vec(24n)(0x666f6fn));
|
|
78
|
-
},
|
|
79
|
-
decodeOverflow: () => {
|
|
80
|
-
// 174_764 base64 chars decode to 1_048_584 bits, 8 over `maxLength`;
|
|
81
|
-
// `decode` should return `null` instead of throwing on (or hanging
|
|
82
|
-
// while building) an oversized `bigint`.
|
|
83
|
-
const oversized = 'A'.repeat(174_764);
|
|
84
|
-
assertEq(decode(oversized), null);
|
|
85
|
-
},
|
|
86
|
-
decodePaddedTailRejections: () => {
|
|
87
|
-
// These all take the padded branch of `decode` (`padChars > 0`,
|
|
88
|
-
// i.e. the `head`/`lastChunk` split), unlike `decodeOverflow` above
|
|
89
|
-
// which takes the unpadded fast path. An invalid character before
|
|
90
|
-
// the final char must be rejected via the `head` decode...
|
|
91
|
-
assertEq(decode('!A=='), null);
|
|
92
|
-
// ...and an invalid final character (the one holding the padding
|
|
93
|
-
// bits) must be rejected via the last-character decode.
|
|
94
|
-
assertEq(decode('A!=='), null);
|
|
95
|
-
// Same as `decodeOverflow`, but with a padded tail so it's the
|
|
96
|
-
// padded branch that measures the result against `maxLength` and
|
|
97
|
-
// rejects it.
|
|
98
|
-
assertEq(decode('A'.repeat(174_764) + '='), null);
|
|
99
|
-
},
|
|
100
|
-
encodeAtMaxLengthSucceeds: () => {
|
|
101
|
-
// A `maxLength`-sized vector's trailing partial 6-bit chunk is
|
|
102
|
-
// left-padded by `vecToString` itself (see `baseN`), so `encode`
|
|
103
|
-
// never needs to build an over-`maxLength` intermediate and must not
|
|
104
|
-
// reject this boundary input.
|
|
105
|
-
assertEq(encode(vec(maxLength)(0n)), 'A'.repeat(174_763) + '=');
|
|
106
|
-
},
|
|
107
|
-
decodeAtMaxLengthSucceeds: () => {
|
|
108
|
-
// Companion to `encodeAtMaxLengthSucceeds`: the encoded string's raw,
|
|
109
|
-
// pre-trim bit count (1_048_578) is 2 over `maxLength` even though
|
|
110
|
-
// the payload it decodes to is exactly `maxLength`. `decode` must
|
|
111
|
-
// trim the last character's 2 zero-padding bits before — not after —
|
|
112
|
-
// measuring the result against `maxLength`.
|
|
113
|
-
check('A'.repeat(174_763) + '=', vec(maxLength)(0n));
|
|
114
|
-
},
|
|
115
|
-
// Regression guard: `encode` used to be quadratic in the input size, not
|
|
116
|
-
// linear. `baseN`'s `vecToString` (`fjs/base_n/module.f.ts`) popped one
|
|
117
|
-
// 6-bit chunk off the front at a time via `popFront`, and each `popFront`
|
|
118
|
-
// re-masked the entire remaining bigint through `vec()`'s `m & ui` —
|
|
119
|
-
// O(remaining length) — so encoding a vector of `n` bits cost O(n²). A
|
|
120
|
-
// 90,000-byte input took ~5.6s on Node and ~18.4s on Bun (Bun's `bigint`
|
|
121
|
-
// has a much higher per-operation constant, see PR #1190), reliably
|
|
122
|
-
// blowing `bun test`'s 5s per-test timeout — the same class of failure
|
|
123
|
-
// that hit `cas_get content:true` on a comparably-sized binary blob in CI
|
|
124
|
-
// (PR #1201).
|
|
125
|
-
//
|
|
126
|
-
// Fixed by rewriting `vecToString` as a balanced recursive split
|
|
127
|
-
// (`unpackToString`), mirroring the `chunkList`/`unpackChunkList`
|
|
128
|
-
// divide-and-conquer already used by `u8List` and by concatenation
|
|
129
|
-
// (`msb.concat` / `unpackListToVec`, PR #1192) — true O(n log n) now,
|
|
130
|
-
// since each half is masked to its own length before recursing. The same
|
|
131
|
-
// call now takes ~50ms on Node and ~225ms on Bun. No timing assertion
|
|
132
|
-
// (duration varies by engine/machine) — this just exercises the call and
|
|
133
|
-
// relies on the test runner's own per-test timing to catch a regression.
|
|
134
|
-
encodeLargeVecIsSlow: () => {
|
|
135
|
-
const big = repeat(90000n)(vec8(0xffn));
|
|
136
|
-
const result = encode(big);
|
|
137
|
-
assertEq(result?.length, 120_000);
|
|
138
|
-
},
|
|
139
|
-
};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Content-addressable Base32 encoding and decoding helpers.
|
|
3
|
-
*
|
|
4
|
-
* @module
|
|
5
|
-
*/
|
|
6
|
-
import { type Vec } from "../../types/bit_vec/module.f.ts";
|
|
7
|
-
import type { Nullable } from "../../types/nullable/module.f.ts";
|
|
8
|
-
export declare const vec5xToCBase32: (v: Vec) => string;
|
|
9
|
-
export declare const cBase32ToVec5x: (s: string) => Nullable<Vec>;
|
|
10
|
-
export declare const vecToCBase32: (v: Vec) => string;
|
|
11
|
-
export declare const cBase32ToVec: (s: string) => Nullable<Vec>;
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Content-addressable Base32 encoding and decoding helpers.
|
|
3
|
-
*
|
|
4
|
-
* @module
|
|
5
|
-
*/
|
|
6
|
-
import { msb, lsb, length, vec, empty } from "../../types/bit_vec/module.f.js";
|
|
7
|
-
import { baseN } from "../../base_n/module.f.js";
|
|
8
|
-
// 0123456789abcdef
|
|
9
|
-
const m = '0123456789abcdefghjkmnpqrstvwxyz';
|
|
10
|
-
const { concat } = msb;
|
|
11
|
-
const popBack1 = lsb.popFront(1n);
|
|
12
|
-
const normalizeChar = (c) => {
|
|
13
|
-
const lower = c.toLowerCase();
|
|
14
|
-
switch (lower) {
|
|
15
|
-
case 'i': {
|
|
16
|
-
return '1';
|
|
17
|
-
}
|
|
18
|
-
case 'l': {
|
|
19
|
-
return '1';
|
|
20
|
-
}
|
|
21
|
-
case 'o': {
|
|
22
|
-
return '0';
|
|
23
|
-
}
|
|
24
|
-
default: {
|
|
25
|
-
return lower;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
const codec = baseN(5n, m, normalizeChar);
|
|
30
|
-
export const vec5xToCBase32 = codec.vecToString;
|
|
31
|
-
export const cBase32ToVec5x = codec.stringToVec;
|
|
32
|
-
export const vecToCBase32 = (v) => {
|
|
33
|
-
const len = length(v);
|
|
34
|
-
const extraLen = 5n - len % 5n;
|
|
35
|
-
const last = 1n << (extraLen - 1n);
|
|
36
|
-
const padded = concat(v)(vec(extraLen)(last));
|
|
37
|
-
return vec5xToCBase32(padded);
|
|
38
|
-
};
|
|
39
|
-
export const cBase32ToVec = (s) => {
|
|
40
|
-
let v = cBase32ToVec5x(s);
|
|
41
|
-
if (v === null) {
|
|
42
|
-
return null;
|
|
43
|
-
}
|
|
44
|
-
// Strip the padding: trailing zeros up to and including the sentinel `1` bit.
|
|
45
|
-
// A string with no sentinel — only zero symbols (`0`/`o`), or empty — exhausts
|
|
46
|
-
// to `empty` and is rejected as `null` rather than looping forever.
|
|
47
|
-
while (v !== empty) {
|
|
48
|
-
const [last, rest] = popBack1(v);
|
|
49
|
-
v = rest;
|
|
50
|
-
if (last === 1n) {
|
|
51
|
-
return v;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return null;
|
|
55
|
-
};
|