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
|
@@ -1,302 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bit vectors that normalize the most-significant bit using signed `bigint` values.
|
|
3
|
-
*
|
|
4
|
-
* A value whose top bit is already set remains positive, while other values are
|
|
5
|
-
* negated after toggling the leading bit so the stop bit is always `1`. The sign bit
|
|
6
|
-
* therefore acts as the stop bit that encodes the logical length of the vector.
|
|
7
|
-
*
|
|
8
|
-
* MSb is most-significant bit first.
|
|
9
|
-
*
|
|
10
|
-
* ```
|
|
11
|
-
* - byte: 0x53 = 0b0101_0011
|
|
12
|
-
* - 0123_4567
|
|
13
|
-
* ```
|
|
14
|
-
*
|
|
15
|
-
* LSb is least-significant bit first.
|
|
16
|
-
*
|
|
17
|
-
* ```
|
|
18
|
-
* - byte: 0x53 = 0b0101_0011
|
|
19
|
-
* - 7654_3210
|
|
20
|
-
* ```
|
|
21
|
-
*
|
|
22
|
-
* @module
|
|
23
|
-
*/
|
|
24
|
-
import { maxLength } from '../bigint/module.f.ts';
|
|
25
|
-
import type { Binary, Fold, Reduce as OpReduce } from '../function/operator/module.f.ts';
|
|
26
|
-
import { type List, type Thunk } from '../list/module.f.ts';
|
|
27
|
-
import { type Nominal } from '../nominal/module.f.ts';
|
|
28
|
-
import { type Sign } from '../function/compare/module.f.ts';
|
|
29
|
-
import { type Nullable } from '../nullable/module.f.ts';
|
|
30
|
-
/**
|
|
31
|
-
* A vector of bits represented as a signed `bigint`.
|
|
32
|
-
*/
|
|
33
|
-
export type Vec = Nominal<'bit_vec', '1a23a4336197e6158b6936cad34e90d146cd84b9b40ff7ab75a17c6d79e31d89', bigint>;
|
|
34
|
-
/**
|
|
35
|
-
* Maximum length of a bit vector in bits (1_048_576 = 0x10_0000).
|
|
36
|
-
* This limit is enforced by Bun's `bigint` size constraint, the minimal limit
|
|
37
|
-
* across all runtime environments supported by FunctionalScript.
|
|
38
|
-
*/
|
|
39
|
-
export { maxLength };
|
|
40
|
-
export declare const maxLengthBytes: bigint;
|
|
41
|
-
/**
|
|
42
|
-
* An empty vector of bits.
|
|
43
|
-
*/
|
|
44
|
-
export declare const empty: Vec;
|
|
45
|
-
/**
|
|
46
|
-
* Calculates the length of the given vector of bits.
|
|
47
|
-
*/
|
|
48
|
-
export declare const length: (v: Vec) => bigint;
|
|
49
|
-
/**
|
|
50
|
-
* Creates a vector of bits of the given `len` and the provided unsigned integer.
|
|
51
|
-
*
|
|
52
|
-
* @example
|
|
53
|
-
*
|
|
54
|
-
* ```js
|
|
55
|
-
* const vec4 = vec(4n)
|
|
56
|
-
* const v0 = vec4(5n) // -0xDn = -0b1101
|
|
57
|
-
* const v1 = vec4(0x5FEn) // 0xEn = 0b1110
|
|
58
|
-
* ```
|
|
59
|
-
*/
|
|
60
|
-
export declare const vec: (len: bigint) => (ui: bigint) => Vec;
|
|
61
|
-
/**
|
|
62
|
-
* Creates an 8-bit vector from an unsigned integer.
|
|
63
|
-
*/
|
|
64
|
-
export declare const vec8: (ui: bigint) => Vec;
|
|
65
|
-
/**
|
|
66
|
-
* Builds a vector from a bigint whose most-significant set bit is a sentinel
|
|
67
|
-
* marking the start of the data.
|
|
68
|
-
*
|
|
69
|
-
* The sentinel does double duty: it fixes the length (`bitLength - 1`) and is
|
|
70
|
-
* stripped from the result. This lets a plain hex literal carry leading zero
|
|
71
|
-
* bits that would otherwise be lost — write `0x1` ahead of the data and the
|
|
72
|
-
* `1` both delimits and disappears.
|
|
73
|
-
*
|
|
74
|
-
* @example
|
|
75
|
-
*
|
|
76
|
-
* ```js
|
|
77
|
-
* uint(fromSentinel(0x1_89_50n)) // 0x8950n
|
|
78
|
-
* length(fromSentinel(0x1_89_50n)) // 16n — the two data bytes, sentinel gone
|
|
79
|
-
* fromSentinel(0x1_00_05n) // a 16-bit vector holding 0x0005
|
|
80
|
-
* ```
|
|
81
|
-
*/
|
|
82
|
-
export declare const fromSentinel: (raw: bigint) => Vec;
|
|
83
|
-
/**
|
|
84
|
-
* Returns the unsigned integer representation of the vector by clearing the stop bit.
|
|
85
|
-
*
|
|
86
|
-
* @example
|
|
87
|
-
*
|
|
88
|
-
* ```js
|
|
89
|
-
* const vector = vec(8n)(0x5n) // -0x85n
|
|
90
|
-
* const result = uint(vector); // result is 0x5n
|
|
91
|
-
* ```
|
|
92
|
-
*/
|
|
93
|
-
export declare const uint: (v: Vec) => bigint;
|
|
94
|
-
/**
|
|
95
|
-
* Structure describing the unpacked view of a vector.
|
|
96
|
-
*/
|
|
97
|
-
export type Unpacked = {
|
|
98
|
-
readonly length: bigint;
|
|
99
|
-
readonly uint: bigint;
|
|
100
|
-
};
|
|
101
|
-
/**
|
|
102
|
-
* Extracts the logical length and unsigned integer from the vector.
|
|
103
|
-
*/
|
|
104
|
-
export declare const unpack: (v: Vec) => Unpacked;
|
|
105
|
-
/**
|
|
106
|
-
* Packs an unpacked representation back into a vector.
|
|
107
|
-
*/
|
|
108
|
-
export declare const pack: ({ length, uint }: Unpacked) => Vec;
|
|
109
|
-
export declare const unpackedUint: ({ uint }: Unpacked) => bigint;
|
|
110
|
-
type Norm = (len: bigint) => {
|
|
111
|
-
readonly a: bigint;
|
|
112
|
-
readonly b: bigint;
|
|
113
|
-
};
|
|
114
|
-
type NormOp = Binary<Unpacked, Unpacked, Norm>;
|
|
115
|
-
export type Reduce = OpReduce<Vec>;
|
|
116
|
-
export type PopFront<T> = (len: bigint) => (u: T) => readonly [bigint, T];
|
|
117
|
-
/**
|
|
118
|
-
* Represents operations for handling bit vectors with a specific bit order.
|
|
119
|
-
*
|
|
120
|
-
* https://en.wikipedia.org/wiki/Bit_numbering
|
|
121
|
-
*/
|
|
122
|
-
export type BitOrder = {
|
|
123
|
-
/**
|
|
124
|
-
* Retrieves the first unsigned integer of the specified length from the given vector.
|
|
125
|
-
*
|
|
126
|
-
* @param len - The number of bits to read from the start of the vector.
|
|
127
|
-
* @returns A function that takes a vector and returns the extracted unsigned integer.
|
|
128
|
-
*
|
|
129
|
-
* @example
|
|
130
|
-
*
|
|
131
|
-
* ```js
|
|
132
|
-
* const vector = vec(8n)(0xF5n)
|
|
133
|
-
*
|
|
134
|
-
* const resultL0 = lsb.front(4n)(vector) // 5n
|
|
135
|
-
* const resultL1 = lsb.front(16n)(vector) // 0xF5n
|
|
136
|
-
*
|
|
137
|
-
* const resultM0 = msb.front(4n)(vector) // 0xFn
|
|
138
|
-
* const resultM1 = msb.front(16n)(vector) // 0xF500n
|
|
139
|
-
* ```
|
|
140
|
-
*/
|
|
141
|
-
readonly front: (len: bigint) => (v: Vec) => bigint;
|
|
142
|
-
/**
|
|
143
|
-
* Removes a specified number of bits from the start of the given vector.
|
|
144
|
-
*
|
|
145
|
-
* @param len - The number of bits to remove from the vector.
|
|
146
|
-
* @returns A function that takes a vector and returns the remaining vector.
|
|
147
|
-
*
|
|
148
|
-
* @example
|
|
149
|
-
*
|
|
150
|
-
* ```js
|
|
151
|
-
* const v = vec(16n)(0x3456n)
|
|
152
|
-
*
|
|
153
|
-
* const rL0 = lsb.removeFront(4n)(v) // uint(rL0) is 0x345n
|
|
154
|
-
* const rL1 = lsb.removeFront(24n)(v) // rL1 === empty
|
|
155
|
-
*
|
|
156
|
-
* const rM0 = msb.removeFront(4n)(v) // uint(rM0) is 0x456n
|
|
157
|
-
* const rM1 = msb.removeFront(24n)(v) // rM1 === empty
|
|
158
|
-
* ```
|
|
159
|
-
*/
|
|
160
|
-
readonly removeFront: (len: bigint) => (v: Vec) => Vec;
|
|
161
|
-
/**
|
|
162
|
-
* Removes a specified number of bits from the start of the vector and returns
|
|
163
|
-
* the removed bits and the remaining vector.
|
|
164
|
-
*
|
|
165
|
-
* @param len - The number of bits to remove from the vector.
|
|
166
|
-
* @returns A function that takes a vector and returns
|
|
167
|
-
* a tuple containing the removed bits as an unsigned integer and the remaining vector.
|
|
168
|
-
*
|
|
169
|
-
* @example
|
|
170
|
-
*
|
|
171
|
-
* ```js
|
|
172
|
-
* const vector = vec(8n)(0xF5n)
|
|
173
|
-
*
|
|
174
|
-
* const [uL0, rL0] = lsb.popFront(4n)(vector) // [5n, uint(rL0) is 0xFn]
|
|
175
|
-
* const [uL1, rL1] = lsb.popFront(16n)(vector) // [0xF5n, rL1 === empty]
|
|
176
|
-
*
|
|
177
|
-
* const [uM0, rM0] = msb.popFront(4n)(vector) // [0xFn, uint(rM0) is 0x5n]
|
|
178
|
-
* const [uM1, rM1] = msb.popFront(16n)(vector) // [0xF500n, rM1 === empty]
|
|
179
|
-
* ```
|
|
180
|
-
*/
|
|
181
|
-
readonly popFront: PopFront<Vec>;
|
|
182
|
-
/**
|
|
183
|
-
* Concatenates two vectors.
|
|
184
|
-
*
|
|
185
|
-
* @returns A function that takes a second vector and returns the concatenated vector.
|
|
186
|
-
*
|
|
187
|
-
* @example
|
|
188
|
-
*
|
|
189
|
-
* ```js
|
|
190
|
-
* const u8 = vec(8n)
|
|
191
|
-
* const a = u8(0x45n)
|
|
192
|
-
* const b = u8(0x89n)
|
|
193
|
-
*
|
|
194
|
-
* const abL = lsb.concat(a)(b) // uint(abL) is 0x8945n
|
|
195
|
-
* const abM = msb.concat(a)(b) // uint(abM) is 0x4589n
|
|
196
|
-
* ```
|
|
197
|
-
*/
|
|
198
|
-
readonly concat: Reduce;
|
|
199
|
-
/**
|
|
200
|
-
* Folds a list of vectors into a single vector in this bit order, like
|
|
201
|
-
* `listToVec`, but returns `null` instead of throwing when the combined
|
|
202
|
-
* length would exceed `maxLength`.
|
|
203
|
-
*/
|
|
204
|
-
readonly tryListToVec: (list: List<Vec>) => Nullable<Vec>;
|
|
205
|
-
/**
|
|
206
|
-
* Folds a list of vectors into a single vector in this bit order.
|
|
207
|
-
*
|
|
208
|
-
* Unlike `concat`, which joins exactly two vectors, this joins a whole list.
|
|
209
|
-
*
|
|
210
|
-
* @returns The concatenation of every vector in the list, or `empty` when the
|
|
211
|
-
* list is empty.
|
|
212
|
-
*/
|
|
213
|
-
readonly listToVec: (list: List<Vec>) => Vec;
|
|
214
|
-
/**
|
|
215
|
-
* Computes the bitwise exclusive OR of two vectors after normalizing their lengths.
|
|
216
|
-
*
|
|
217
|
-
* @returns A function that takes a second vector and returns the XOR result.
|
|
218
|
-
*/
|
|
219
|
-
readonly xor: Reduce;
|
|
220
|
-
readonly unpackPopFront: PopFront<Unpacked>;
|
|
221
|
-
readonly norm: NormOp;
|
|
222
|
-
/**
|
|
223
|
-
* Lexically compares two vectors.
|
|
224
|
-
*
|
|
225
|
-
* a < b => -1
|
|
226
|
-
* a > b => 1
|
|
227
|
-
* a === b => 0
|
|
228
|
-
*/
|
|
229
|
-
readonly cmp: (a: Vec) => (b: Vec) => Sign;
|
|
230
|
-
readonly unpackSplit: (len: bigint) => (u: Unpacked) => readonly [bigint, bigint];
|
|
231
|
-
readonly unpackConcat: UnpackConcat;
|
|
232
|
-
readonly startsWith: (prefix: Vec) => (v: Vec) => boolean;
|
|
233
|
-
};
|
|
234
|
-
type UnpackConcat = (a: Unpacked) => (b: Unpacked) => Unpacked;
|
|
235
|
-
/**
|
|
236
|
-
* Implements operations for handling vectors in a least-significant-bit (LSb) first order.
|
|
237
|
-
*
|
|
238
|
-
* https://en.wikipedia.org/wiki/Bit_numbering#LSb_0_bit_numbering
|
|
239
|
-
*
|
|
240
|
-
* Usually associated with Little-Endian (LE) byte order.
|
|
241
|
-
*/
|
|
242
|
-
export declare const lsb: BitOrder;
|
|
243
|
-
/**
|
|
244
|
-
* Implements operations for handling vectors in a most-significant-bit (MSb) first order.
|
|
245
|
-
*
|
|
246
|
-
* https://en.wikipedia.org/wiki/Bit_numbering#MSb_0_bit_numbering
|
|
247
|
-
*
|
|
248
|
-
* Usually associated with Big-Endian (BE) byte order.
|
|
249
|
-
*/
|
|
250
|
-
export declare const msb: BitOrder;
|
|
251
|
-
/**
|
|
252
|
-
* Converts a list of unsigned 8-bit integers to a bit vector using the provided
|
|
253
|
-
* bit order, like `u8ListToVec`, but returns `null` instead of throwing when the
|
|
254
|
-
* result would exceed `maxLength`.
|
|
255
|
-
*
|
|
256
|
-
* @param bo The bit order for the conversion
|
|
257
|
-
* @param list The list of unsigned 8-bit integers to be converted.
|
|
258
|
-
* @returns The resulting vector, or `null` if it would exceed `maxLength`.
|
|
259
|
-
*/
|
|
260
|
-
export declare const tryU8ListToVec: ({ unpackConcat }: BitOrder) => (list: List<number>) => Nullable<Vec>;
|
|
261
|
-
/**
|
|
262
|
-
* Converts a list of unsigned 8-bit integers to a bit vector using the provided bit order.
|
|
263
|
-
*
|
|
264
|
-
* @param bo The bit order for the conversion
|
|
265
|
-
* @param list The list of unsigned 8-bit integers to be converted.
|
|
266
|
-
* @returns The resulting vector based on the provided bit order.
|
|
267
|
-
*/
|
|
268
|
-
export declare const u8ListToVec: (bo: BitOrder) => import("../function/module.f.ts").Func<List<number>, Vec>;
|
|
269
|
-
/**
|
|
270
|
-
* Chunks an unpacked vector into fixed-size pieces of `n` bits using the provided bit order,
|
|
271
|
-
* returning each chunk as an unsigned integer.
|
|
272
|
-
* The last chunk may be smaller than `n` bits if the vector length is not a multiple of `n`.
|
|
273
|
-
*
|
|
274
|
-
* @param bitOrder The bit order for the conversion.
|
|
275
|
-
* @param n The chunk size in bits.
|
|
276
|
-
* @param u The unpacked vector to be chunked.
|
|
277
|
-
* @returns A thunk that produces a list of unsigned integers, each representing one chunk.
|
|
278
|
-
*/
|
|
279
|
-
export declare const uintChunkList: (bo: BitOrder) => (n: bigint) => (u: Unpacked) => Thunk<bigint>;
|
|
280
|
-
/**
|
|
281
|
-
* Chunks a bit vector into fixed-size pieces of `n` bits using the provided bit order.
|
|
282
|
-
* The last chunk may be smaller than `n` bits if the vector length is not a multiple of `n`.
|
|
283
|
-
*
|
|
284
|
-
* @param bitOrder The bit order for the conversion.
|
|
285
|
-
* @param n The chunk size in bits.
|
|
286
|
-
* @param v The vector to be chunked.
|
|
287
|
-
* @returns A thunk that produces a list of bit vectors, each representing one chunk.
|
|
288
|
-
*/
|
|
289
|
-
export declare const chunkList: (bo: BitOrder) => (n: bigint) => (v: Vec) => Thunk<Vec>;
|
|
290
|
-
/**
|
|
291
|
-
* Converts a bit vector to a list of unsigned 8-bit integers based on the provided bit order.
|
|
292
|
-
*
|
|
293
|
-
* @param bitOrder The bit order for the conversion.
|
|
294
|
-
* @param v The vector to be converted.
|
|
295
|
-
* @returns A thunk that produces a list of unsigned 8-bit integers.
|
|
296
|
-
*/
|
|
297
|
-
export declare const u8List: (bo: BitOrder) => (v: Vec) => Thunk<number>;
|
|
298
|
-
/**
|
|
299
|
-
* Repeats a vector to create a padded block of the desired length.
|
|
300
|
-
*/
|
|
301
|
-
export declare const repeat: Fold<bigint, Vec>;
|
|
302
|
-
export declare const isVec: <T>(v: Vec | T) => v is Vec;
|
|
@@ -1,375 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bit vectors that normalize the most-significant bit using signed `bigint` values.
|
|
3
|
-
*
|
|
4
|
-
* A value whose top bit is already set remains positive, while other values are
|
|
5
|
-
* negated after toggling the leading bit so the stop bit is always `1`. The sign bit
|
|
6
|
-
* therefore acts as the stop bit that encodes the logical length of the vector.
|
|
7
|
-
*
|
|
8
|
-
* MSb is most-significant bit first.
|
|
9
|
-
*
|
|
10
|
-
* ```
|
|
11
|
-
* - byte: 0x53 = 0b0101_0011
|
|
12
|
-
* - 0123_4567
|
|
13
|
-
* ```
|
|
14
|
-
*
|
|
15
|
-
* LSb is least-significant bit first.
|
|
16
|
-
*
|
|
17
|
-
* ```
|
|
18
|
-
* - byte: 0x53 = 0b0101_0011
|
|
19
|
-
* - 7654_3210
|
|
20
|
-
* ```
|
|
21
|
-
*
|
|
22
|
-
* @module
|
|
23
|
-
*/
|
|
24
|
-
import { bitLength, divUp, mask, maxLength, xor } from '../bigint/module.f.js';
|
|
25
|
-
import { flip, identity } from '../function/module.f.js';
|
|
26
|
-
import { map, tryFold } from '../list/module.f.js';
|
|
27
|
-
import { asBase, asNominal } from '../nominal/module.f.js';
|
|
28
|
-
import { repeat as mRepeat } from '../../common/monoid/module.f.js';
|
|
29
|
-
import { cmp, max, min } from '../function/compare/module.f.js';
|
|
30
|
-
import { mapUnwrap } from '../nullable/module.f.js';
|
|
31
|
-
/**
|
|
32
|
-
* Maximum length of a bit vector in bits (1_048_576 = 0x10_0000).
|
|
33
|
-
* This limit is enforced by Bun's `bigint` size constraint, the minimal limit
|
|
34
|
-
* across all runtime environments supported by FunctionalScript.
|
|
35
|
-
*/
|
|
36
|
-
export { maxLength };
|
|
37
|
-
export const maxLengthBytes = maxLength >> 3n;
|
|
38
|
-
/**
|
|
39
|
-
* An empty vector of bits.
|
|
40
|
-
*/
|
|
41
|
-
export const empty = asNominal(0n);
|
|
42
|
-
/**
|
|
43
|
-
* Calculates the length of the given vector of bits.
|
|
44
|
-
*/
|
|
45
|
-
export const length = (v) => bitLength(asBase(v));
|
|
46
|
-
const lazyEmpty = () => empty;
|
|
47
|
-
/**
|
|
48
|
-
* Creates a vector of bits of the given `len` and the provided unsigned integer.
|
|
49
|
-
*
|
|
50
|
-
* @example
|
|
51
|
-
*
|
|
52
|
-
* ```js
|
|
53
|
-
* const vec4 = vec(4n)
|
|
54
|
-
* const v0 = vec4(5n) // -0xDn = -0b1101
|
|
55
|
-
* const v1 = vec4(0x5FEn) // 0xEn = 0b1110
|
|
56
|
-
* ```
|
|
57
|
-
*/
|
|
58
|
-
export const vec = (len) => {
|
|
59
|
-
if (len <= 0n) {
|
|
60
|
-
return lazyEmpty;
|
|
61
|
-
}
|
|
62
|
-
const m = mask(len);
|
|
63
|
-
const last = len - 1n;
|
|
64
|
-
const lastBit = 1n << last;
|
|
65
|
-
return ui => {
|
|
66
|
-
// normalize `u`
|
|
67
|
-
const u = m & ui;
|
|
68
|
-
//
|
|
69
|
-
const sign = u >> last;
|
|
70
|
-
const x = sign !== 0n ? u : -(u ^ lastBit);
|
|
71
|
-
return asNominal(x);
|
|
72
|
-
};
|
|
73
|
-
};
|
|
74
|
-
/**
|
|
75
|
-
* Creates an 8-bit vector from an unsigned integer.
|
|
76
|
-
*/
|
|
77
|
-
export const vec8 = vec(8n);
|
|
78
|
-
/**
|
|
79
|
-
* Builds a vector from a bigint whose most-significant set bit is a sentinel
|
|
80
|
-
* marking the start of the data.
|
|
81
|
-
*
|
|
82
|
-
* The sentinel does double duty: it fixes the length (`bitLength - 1`) and is
|
|
83
|
-
* stripped from the result. This lets a plain hex literal carry leading zero
|
|
84
|
-
* bits that would otherwise be lost — write `0x1` ahead of the data and the
|
|
85
|
-
* `1` both delimits and disappears.
|
|
86
|
-
*
|
|
87
|
-
* @example
|
|
88
|
-
*
|
|
89
|
-
* ```js
|
|
90
|
-
* uint(fromSentinel(0x1_89_50n)) // 0x8950n
|
|
91
|
-
* length(fromSentinel(0x1_89_50n)) // 16n — the two data bytes, sentinel gone
|
|
92
|
-
* fromSentinel(0x1_00_05n) // a 16-bit vector holding 0x0005
|
|
93
|
-
* ```
|
|
94
|
-
*/
|
|
95
|
-
export const fromSentinel = (raw) => vec(bitLength(raw) - 1n)(raw);
|
|
96
|
-
/**
|
|
97
|
-
* Returns the unsigned integer representation of the vector by clearing the stop bit.
|
|
98
|
-
*
|
|
99
|
-
* @example
|
|
100
|
-
*
|
|
101
|
-
* ```js
|
|
102
|
-
* const vector = vec(8n)(0x5n) // -0x85n
|
|
103
|
-
* const result = uint(vector); // result is 0x5n
|
|
104
|
-
* ```
|
|
105
|
-
*/
|
|
106
|
-
export const uint = (v) => {
|
|
107
|
-
const b = asBase(v);
|
|
108
|
-
if (b >= 0n) {
|
|
109
|
-
return b;
|
|
110
|
-
}
|
|
111
|
-
const u = -b;
|
|
112
|
-
const len = bitLength(u);
|
|
113
|
-
return u ^ (1n << (len - 1n));
|
|
114
|
-
};
|
|
115
|
-
/**
|
|
116
|
-
* Extracts the logical length and unsigned integer from the vector.
|
|
117
|
-
*/
|
|
118
|
-
export const unpack = (v) => ({
|
|
119
|
-
length: length(v),
|
|
120
|
-
uint: uint(v),
|
|
121
|
-
});
|
|
122
|
-
/**
|
|
123
|
-
* Packs an unpacked representation back into a vector.
|
|
124
|
-
*/
|
|
125
|
-
export const pack = ({ length, uint }) => vec(length)(uint);
|
|
126
|
-
export const unpackedUint = ({ uint }) => uint;
|
|
127
|
-
/**
|
|
128
|
-
* Normalizes two vectors to the same length before applying a bigint reducer.
|
|
129
|
-
*/
|
|
130
|
-
const op = (norm) => (op) => ap => bp => {
|
|
131
|
-
const au = unpack(ap);
|
|
132
|
-
const bu = unpack(bp);
|
|
133
|
-
const len = max(au.length)(bu.length);
|
|
134
|
-
const { a, b } = norm(au)(bu)(len);
|
|
135
|
-
return vec(len)(op(a)(b));
|
|
136
|
-
};
|
|
137
|
-
const unpackEmpty = { length: 0n, uint: 0n };
|
|
138
|
-
const listToVecOp = (unpackConcat) => ({
|
|
139
|
-
init: { len: 0n, stack: [] },
|
|
140
|
-
update: (v, { len, stack }) => {
|
|
141
|
-
len += v.length;
|
|
142
|
-
if (len > maxLength) {
|
|
143
|
-
return null;
|
|
144
|
-
}
|
|
145
|
-
let i = 0;
|
|
146
|
-
while (true) {
|
|
147
|
-
if (stack.length <= i) {
|
|
148
|
-
stack = [...stack, v];
|
|
149
|
-
break;
|
|
150
|
-
}
|
|
151
|
-
const old = stack[i];
|
|
152
|
-
if (old.length === 0n) {
|
|
153
|
-
stack = stack.toSpliced(i, 1, v);
|
|
154
|
-
break;
|
|
155
|
-
}
|
|
156
|
-
stack = stack.toSpliced(i, 1, unpackEmpty);
|
|
157
|
-
v = unpackConcat(old)(v);
|
|
158
|
-
i++;
|
|
159
|
-
}
|
|
160
|
-
return { len, stack };
|
|
161
|
-
},
|
|
162
|
-
end: ({ stack }) => pack(stack.reduce((p, c) => unpackConcat(c)(p), unpackEmpty))
|
|
163
|
-
});
|
|
164
|
-
/**
|
|
165
|
-
* Concatenates a list of unpacked vectors using a binary-counter accumulator,
|
|
166
|
-
* giving O(n log n) total `bigint` shifting work instead of the O(n²) of a
|
|
167
|
-
* naive left fold.
|
|
168
|
-
*
|
|
169
|
-
* Slot `i` of `result` holds an already-combined run of the most recent
|
|
170
|
-
* `2 ** i` elements. Each arriving element "carries" upward, merging only with
|
|
171
|
-
* runs of comparable size — exactly like incrementing a binary number — so
|
|
172
|
-
* every merge joins two runs of similar length. Left-to-right element order is
|
|
173
|
-
* preserved: `unpackConcat(old)(cur)` keeps the earlier run on the left, and
|
|
174
|
-
* the final reduce prepends higher (earlier) slots in front of accumulated
|
|
175
|
-
* later runs. An empty list yields `unpackEmpty`.
|
|
176
|
-
*
|
|
177
|
-
* Returns `null` as soon as the accumulated length exceeds `maxLength`, which
|
|
178
|
-
* `tryFold` propagates by abandoning the rest of the list.
|
|
179
|
-
*
|
|
180
|
-
* This is the bit-vector analogue of a builder that accumulates appended pieces
|
|
181
|
-
* and materializes the combined result on demand, such as `StringBuilder`
|
|
182
|
-
* (Java, C#) or `strings.Builder` (Go).
|
|
183
|
-
*/
|
|
184
|
-
const unpackListToVec = (unpackConcat) => tryFold(listToVecOp(unpackConcat));
|
|
185
|
-
const bo = ({ front, removeFront, norm, uintCmp, unpackSplit, unpackConcatUint }) => {
|
|
186
|
-
const unpackPopFront = (len) => {
|
|
187
|
-
const m = mask(len);
|
|
188
|
-
const us = unpackSplit(len);
|
|
189
|
-
return (v) => {
|
|
190
|
-
const [uint, rest] = us(v);
|
|
191
|
-
return [uint & m, { length: v.length - len, uint: rest }];
|
|
192
|
-
};
|
|
193
|
-
};
|
|
194
|
-
const unpackConcat = a => b => ({
|
|
195
|
-
length: a.length + b.length,
|
|
196
|
-
uint: unpackConcatUint(a)(b)
|
|
197
|
-
});
|
|
198
|
-
const popFront = len => {
|
|
199
|
-
const f = unpackPopFront(len);
|
|
200
|
-
return v => {
|
|
201
|
-
const [uint, u] = f(unpack(v));
|
|
202
|
-
return [uint, pack(u)];
|
|
203
|
-
};
|
|
204
|
-
};
|
|
205
|
-
const concat = a => b => {
|
|
206
|
-
const au = unpack(a);
|
|
207
|
-
const bu = unpack(b);
|
|
208
|
-
return pack(unpackConcat(au)(bu));
|
|
209
|
-
};
|
|
210
|
-
const tryListToVec = (list) => unpackListToVec(unpackConcat)(map(unpack)(list));
|
|
211
|
-
return {
|
|
212
|
-
front,
|
|
213
|
-
removeFront,
|
|
214
|
-
concat,
|
|
215
|
-
tryListToVec,
|
|
216
|
-
listToVec: mapUnwrap(tryListToVec),
|
|
217
|
-
xor: op(norm)(xor),
|
|
218
|
-
unpackPopFront,
|
|
219
|
-
popFront,
|
|
220
|
-
norm,
|
|
221
|
-
cmp: a => b => {
|
|
222
|
-
const au = unpack(a);
|
|
223
|
-
const bu = unpack(b);
|
|
224
|
-
const al = au.length;
|
|
225
|
-
const bl = bu.length;
|
|
226
|
-
const { a: aui, b: bui } = norm(au)(bu)(min(al)(bl));
|
|
227
|
-
const c = uintCmp(aui)(bui);
|
|
228
|
-
return c === 0 ? cmp(al)(bl) : c;
|
|
229
|
-
},
|
|
230
|
-
unpackSplit,
|
|
231
|
-
unpackConcat,
|
|
232
|
-
startsWith: prefix => {
|
|
233
|
-
const { length: n, uint: u } = unpack(prefix);
|
|
234
|
-
return v => length(v) < n ? false : popFront(n)(v)[0] === u;
|
|
235
|
-
}
|
|
236
|
-
};
|
|
237
|
-
};
|
|
238
|
-
const lsbUnpackConcatUint = ({ uint: a, length }) => ({ uint: b }) => (b << length) | a;
|
|
239
|
-
/**
|
|
240
|
-
* Implements operations for handling vectors in a least-significant-bit (LSb) first order.
|
|
241
|
-
*
|
|
242
|
-
* https://en.wikipedia.org/wiki/Bit_numbering#LSb_0_bit_numbering
|
|
243
|
-
*
|
|
244
|
-
* Usually associated with Little-Endian (LE) byte order.
|
|
245
|
-
*/
|
|
246
|
-
export const lsb = bo({
|
|
247
|
-
front: len => {
|
|
248
|
-
const m = mask(len);
|
|
249
|
-
return v => uint(v) & m;
|
|
250
|
-
},
|
|
251
|
-
removeFront: len => v => {
|
|
252
|
-
const { length, uint } = unpack(v);
|
|
253
|
-
return vec(length - len)(uint >> len);
|
|
254
|
-
},
|
|
255
|
-
norm: ({ uint: a }) => ({ uint: b }) => () => ({ a, b }),
|
|
256
|
-
uintCmp: a => b => {
|
|
257
|
-
const diff = a ^ b;
|
|
258
|
-
return diff === 0n ? 0 : (a & (diff & -diff)) === 0n ? -1 : 1;
|
|
259
|
-
},
|
|
260
|
-
unpackSplit: len => ({ uint }) => [uint, uint >> len],
|
|
261
|
-
unpackConcatUint: lsbUnpackConcatUint
|
|
262
|
-
});
|
|
263
|
-
/**
|
|
264
|
-
* Implements operations for handling vectors in a most-significant-bit (MSb) first order.
|
|
265
|
-
*
|
|
266
|
-
* https://en.wikipedia.org/wiki/Bit_numbering#MSb_0_bit_numbering
|
|
267
|
-
*
|
|
268
|
-
* Usually associated with Big-Endian (BE) byte order.
|
|
269
|
-
*/
|
|
270
|
-
export const msb = bo({
|
|
271
|
-
front: len => {
|
|
272
|
-
const m = mask(len);
|
|
273
|
-
return v => {
|
|
274
|
-
const { length, uint } = unpack(v);
|
|
275
|
-
return (uint >> (length - len)) & m;
|
|
276
|
-
};
|
|
277
|
-
},
|
|
278
|
-
removeFront: len => v => {
|
|
279
|
-
const { length, uint } = unpack(v);
|
|
280
|
-
return vec(length - len)(uint);
|
|
281
|
-
},
|
|
282
|
-
norm: ({ length: al, uint: a }) => ({ length: bl, uint: b }) => len => ({ a: a << (len - al), b: b << (len - bl) }),
|
|
283
|
-
uintCmp: cmp,
|
|
284
|
-
unpackSplit: len => ({ length, uint }) => [uint >> (length - len), uint],
|
|
285
|
-
unpackConcatUint: flip(lsbUnpackConcatUint),
|
|
286
|
-
});
|
|
287
|
-
/**
|
|
288
|
-
* Converts a list of unsigned 8-bit integers to a bit vector using the provided
|
|
289
|
-
* bit order, like `u8ListToVec`, but returns `null` instead of throwing when the
|
|
290
|
-
* result would exceed `maxLength`.
|
|
291
|
-
*
|
|
292
|
-
* @param bo The bit order for the conversion
|
|
293
|
-
* @param list The list of unsigned 8-bit integers to be converted.
|
|
294
|
-
* @returns The resulting vector, or `null` if it would exceed `maxLength`.
|
|
295
|
-
*/
|
|
296
|
-
export const tryU8ListToVec = ({ unpackConcat }) => (list) => unpackListToVec(unpackConcat)(map((b) => ({ length: 8n, uint: BigInt(b) }))(list));
|
|
297
|
-
/**
|
|
298
|
-
* Converts a list of unsigned 8-bit integers to a bit vector using the provided bit order.
|
|
299
|
-
*
|
|
300
|
-
* @param bo The bit order for the conversion
|
|
301
|
-
* @param list The list of unsigned 8-bit integers to be converted.
|
|
302
|
-
* @returns The resulting vector based on the provided bit order.
|
|
303
|
-
*/
|
|
304
|
-
export const u8ListToVec = (bo) => mapUnwrap(tryU8ListToVec(bo));
|
|
305
|
-
const unpackChunkList = ({ unpackSplit }) => (n) => {
|
|
306
|
-
const divUpN2 = divUp(n << 1n);
|
|
307
|
-
return u => {
|
|
308
|
-
if (u.length === 0n) {
|
|
309
|
-
return () => null;
|
|
310
|
-
}
|
|
311
|
-
const f = (stack) => () => {
|
|
312
|
-
while (true) {
|
|
313
|
-
const [first, rest] = stack;
|
|
314
|
-
const { length } = first;
|
|
315
|
-
if (length <= n) {
|
|
316
|
-
return { first, tail: rest !== undefined ? f(rest) : null };
|
|
317
|
-
}
|
|
318
|
-
const aLength = divUpN2(length) * n;
|
|
319
|
-
const bLength = length - aLength;
|
|
320
|
-
const [a, b] = unpackSplit(aLength)(first);
|
|
321
|
-
stack = [
|
|
322
|
-
{ length: aLength, uint: a & mask(aLength) },
|
|
323
|
-
[{ length: bLength, uint: b & mask(bLength) }, rest],
|
|
324
|
-
];
|
|
325
|
-
}
|
|
326
|
-
};
|
|
327
|
-
return f([u, undefined]);
|
|
328
|
-
};
|
|
329
|
-
};
|
|
330
|
-
const mappedChunkList = (g) => (f) => (bo) => (n) => {
|
|
331
|
-
const ucl = unpackChunkList(bo)(n);
|
|
332
|
-
const mf = map(f);
|
|
333
|
-
return i => mf(ucl(g(i)));
|
|
334
|
-
};
|
|
335
|
-
/**
|
|
336
|
-
* Chunks an unpacked vector into fixed-size pieces of `n` bits using the provided bit order,
|
|
337
|
-
* returning each chunk as an unsigned integer.
|
|
338
|
-
* The last chunk may be smaller than `n` bits if the vector length is not a multiple of `n`.
|
|
339
|
-
*
|
|
340
|
-
* @param bitOrder The bit order for the conversion.
|
|
341
|
-
* @param n The chunk size in bits.
|
|
342
|
-
* @param u The unpacked vector to be chunked.
|
|
343
|
-
* @returns A thunk that produces a list of unsigned integers, each representing one chunk.
|
|
344
|
-
*/
|
|
345
|
-
export const uintChunkList = mappedChunkList(identity)(unpackedUint);
|
|
346
|
-
/**
|
|
347
|
-
* Chunks a bit vector into fixed-size pieces of `n` bits using the provided bit order.
|
|
348
|
-
* The last chunk may be smaller than `n` bits if the vector length is not a multiple of `n`.
|
|
349
|
-
*
|
|
350
|
-
* @param bitOrder The bit order for the conversion.
|
|
351
|
-
* @param n The chunk size in bits.
|
|
352
|
-
* @param v The vector to be chunked.
|
|
353
|
-
* @returns A thunk that produces a list of bit vectors, each representing one chunk.
|
|
354
|
-
*/
|
|
355
|
-
export const chunkList = mappedChunkList(unpack)(pack);
|
|
356
|
-
const vecToU8 = ({ unpackSplit }) => {
|
|
357
|
-
const unpackSplit8 = unpackSplit(8n);
|
|
358
|
-
return chunk => {
|
|
359
|
-
const u = unpack(chunk);
|
|
360
|
-
return Number(u.length < 8n ? unpackSplit8(u)[0] : u.uint);
|
|
361
|
-
};
|
|
362
|
-
};
|
|
363
|
-
/**
|
|
364
|
-
* Converts a bit vector to a list of unsigned 8-bit integers based on the provided bit order.
|
|
365
|
-
*
|
|
366
|
-
* @param bitOrder The bit order for the conversion.
|
|
367
|
-
* @param v The vector to be converted.
|
|
368
|
-
* @returns A thunk that produces a list of unsigned 8-bit integers.
|
|
369
|
-
*/
|
|
370
|
-
export const u8List = (bo) => (v) => map(vecToU8(bo))(chunkList(bo)(8n)(v));
|
|
371
|
-
/**
|
|
372
|
-
* Repeats a vector to create a padded block of the desired length.
|
|
373
|
-
*/
|
|
374
|
-
export const repeat = mRepeat({ identity: empty, operation: lsb.concat });
|
|
375
|
-
export const isVec = (v) => typeof v === 'bigint';
|