functionalscript 0.43.1 → 0.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -21
- package/fjs/asn.1/module.f.d.mts +123 -0
- package/fjs/asn.1/module.f.mjs +459 -0
- package/fjs/asn.1/proof.f.mjs +309 -0
- package/fjs/asn.1/types.d.ts +37 -0
- package/fjs/asn.1/types.js +6 -0
- package/fjs/asserts/module.f.d.mts +37 -0
- package/fjs/asserts/module.f.mjs +49 -0
- package/fjs/asserts/proof.f.mjs +19 -0
- package/fjs/asserts/types.d.ts +11 -0
- package/fjs/asserts/types.js +6 -0
- package/fjs/basen/base128/module.f.d.mts +22 -0
- package/fjs/basen/base128/module.f.mjs +51 -0
- package/fjs/basen/base128/proof.f.d.mts +2 -0
- package/fjs/basen/base128/proof.f.mjs +30 -0
- package/fjs/basen/base64/module.f.d.mts +14 -0
- package/fjs/basen/base64/module.f.mjs +71 -0
- package/fjs/basen/base64/proof.f.d.mts +17 -0
- package/fjs/basen/base64/proof.f.mjs +147 -0
- package/fjs/basen/cbase32/module.f.d.mts +18 -0
- package/fjs/basen/cbase32/module.f.mjs +61 -0
- package/fjs/basen/cbase32/proof.f.d.mts +8 -0
- package/fjs/basen/cbase32/proof.f.mjs +77 -0
- package/fjs/basen/module.f.d.mts +30 -0
- package/fjs/basen/module.f.mjs +88 -0
- package/fjs/basen/proof.f.mjs +69 -0
- package/fjs/basen/types.d.ts +14 -0
- package/fjs/basen/types.js +6 -0
- package/fjs/bnf/data/module.f.d.mts +47 -0
- package/fjs/bnf/data/module.f.mjs +188 -0
- package/fjs/bnf/data/proof.f.d.mts +13 -0
- package/fjs/bnf/data/proof.f.mjs +160 -0
- package/fjs/bnf/data/types.d.ts +35 -0
- package/fjs/bnf/data/types.js +6 -0
- package/fjs/bnf/descent/module.f.d.mts +33 -0
- package/fjs/bnf/descent/module.f.mjs +212 -0
- package/fjs/bnf/descent/proof.f.d.mts +13 -0
- package/fjs/bnf/descent/proof.f.mjs +351 -0
- package/fjs/bnf/descent/types.d.ts +71 -0
- package/fjs/bnf/descent/types.js +6 -0
- package/fjs/bnf/ll1/module.f.d.mts +41 -0
- package/fjs/bnf/ll1/module.f.mjs +199 -0
- package/fjs/bnf/ll1/proof.f.d.mts +16 -0
- package/fjs/bnf/ll1/proof.f.mjs +352 -0
- package/fjs/bnf/ll1/types.d.ts +59 -0
- package/fjs/bnf/ll1/types.js +6 -0
- package/fjs/bnf/module.f.d.mts +164 -0
- package/fjs/bnf/module.f.mjs +298 -0
- package/fjs/bnf/proof.f.d.mts +17 -0
- package/fjs/bnf/proof.f.mjs +89 -0
- package/fjs/bnf/testlib.f.d.mts +10 -0
- package/fjs/bnf/testlib.f.mjs +196 -0
- package/fjs/bnf/token_symbol/module.f.d.mts +35 -0
- package/fjs/bnf/token_symbol/module.f.mjs +62 -0
- package/fjs/bnf/token_symbol/proof.f.mjs +43 -0
- package/fjs/bnf/token_symbol/types.d.ts +27 -0
- package/fjs/bnf/token_symbol/types.js +6 -0
- package/fjs/bnf/types.d.ts +67 -0
- package/fjs/bnf/types.js +6 -0
- package/fjs/cas/cli/module.f.d.mts +17 -0
- package/fjs/cas/cli/module.f.mjs +73 -0
- package/fjs/cas/cli/proof.f.d.mts +18 -0
- package/fjs/cas/cli/proof.f.mjs +118 -0
- package/fjs/cas/evo/module.f.d.mts +163 -0
- package/fjs/cas/evo/module.f.mjs +556 -0
- package/fjs/cas/evo/proof.f.d.mts +55 -0
- package/fjs/cas/evo/proof.f.mjs +749 -0
- package/fjs/cas/evo/types.d.ts +111 -0
- package/fjs/cas/evo/types.js +7 -0
- package/fjs/cas/module.f.d.mts +68 -0
- package/fjs/cas/module.f.mjs +363 -0
- package/fjs/cas/proof.f.d.mts +29 -0
- package/fjs/cas/proof.f.mjs +371 -0
- package/fjs/cas/types.d.ts +35 -0
- package/fjs/cas/types.js +6 -0
- package/fjs/ci/bun/module.f.d.mts +11 -0
- package/fjs/ci/bun/module.f.mjs +20 -0
- package/fjs/ci/common/module.f.d.mts +80 -0
- package/fjs/ci/common/module.f.mjs +87 -0
- package/fjs/ci/common/types.d.ts +27 -0
- package/fjs/ci/config/module.f.d.mts +45 -0
- package/fjs/ci/config/module.f.mjs +89 -0
- package/fjs/ci/deno/module.f.d.mts +16 -0
- package/fjs/ci/deno/module.f.mjs +29 -0
- package/fjs/ci/deno/proof.f.d.mts +4 -0
- package/fjs/ci/deno/proof.f.mjs +26 -0
- package/fjs/ci/module.f.d.mts +19 -0
- package/fjs/ci/module.f.mjs +89 -0
- package/fjs/ci/nix/module.f.d.mts +69 -0
- package/fjs/ci/nix/module.f.mjs +136 -0
- package/fjs/ci/nix/proof.f.d.mts +28 -0
- package/fjs/ci/nix/proof.f.mjs +146 -0
- package/fjs/ci/nix/types.d.ts +16 -0
- package/fjs/ci/nix/types.js +6 -0
- package/fjs/ci/node/module.f.d.mts +48 -0
- package/fjs/ci/node/module.f.mjs +139 -0
- package/fjs/ci/node/proof.f.mjs +18 -0
- package/fjs/ci/proof.f.d.mts +20 -0
- package/fjs/ci/proof.f.mjs +219 -0
- package/fjs/ci/rust/module.f.d.mts +15 -0
- package/fjs/ci/rust/module.f.mjs +108 -0
- package/fjs/ci/types.d.ts +9 -0
- package/fjs/ci/types.js +6 -0
- package/fjs/cli/module.f.d.mts +16 -0
- package/fjs/cli/module.f.mjs +51 -0
- package/fjs/cli/proof.f.d.mts +16 -0
- package/fjs/cli/proof.f.mjs +130 -0
- package/fjs/cli/types.d.ts +15 -0
- package/fjs/cli/types.js +6 -0
- package/fjs/common/monoid/module.f.d.mts +87 -0
- package/fjs/common/monoid/module.f.mjs +104 -0
- package/fjs/common/monoid/proof.f.d.mts +10 -0
- package/fjs/common/monoid/proof.f.mjs +58 -0
- package/fjs/common/monoid/types.d.ts +50 -0
- package/fjs/common/monoid/types.js +6 -0
- package/fjs/crypto/hmac/module.f.d.mts +32 -0
- package/fjs/crypto/hmac/module.f.mjs +65 -0
- package/fjs/crypto/hmac/proof.f.mjs +34 -0
- package/fjs/crypto/pow/module.f.d.mts +43 -0
- package/fjs/crypto/pow/module.f.mjs +93 -0
- package/fjs/crypto/pow/proof.f.mjs +121 -0
- package/fjs/crypto/pow/types.d.ts +19 -0
- package/fjs/crypto/pow/types.js +6 -0
- package/fjs/crypto/secp/module.f.d.mts +61 -0
- package/fjs/crypto/secp/module.f.mjs +204 -0
- package/fjs/crypto/secp/proof.f.d.mts +9 -0
- package/fjs/crypto/secp/proof.f.mjs +137 -0
- package/fjs/crypto/secp/types.d.ts +36 -0
- package/fjs/crypto/secp/types.js +6 -0
- package/fjs/crypto/sha2/module.f.d.mts +80 -0
- package/fjs/crypto/sha2/module.f.mjs +431 -0
- package/fjs/crypto/sha2/proof.f.d.mts +32 -0
- package/fjs/crypto/sha2/proof.f.mjs +144 -0
- package/fjs/crypto/sha2/types.d.ts +57 -0
- package/fjs/crypto/sha2/types.js +6 -0
- package/fjs/crypto/sign/module.f.d.mts +46 -0
- package/fjs/crypto/sign/module.f.mjs +189 -0
- package/fjs/crypto/sign/proof.f.d.mts +17 -0
- package/fjs/crypto/sign/proof.f.mjs +604 -0
- package/fjs/crypto/sign/types.d.ts +13 -0
- package/fjs/crypto/sign/types.js +6 -0
- package/fjs/crypto/vdf/module.f.d.mts +15 -0
- package/fjs/crypto/vdf/module.f.mjs +84 -0
- package/fjs/crypto/vdf/proof.f.mjs +106 -0
- package/fjs/crypto/vdf/types.d.ts +18 -0
- package/fjs/crypto/vdf/types.js +6 -0
- package/fjs/dev/module.f.d.mts +56 -0
- package/fjs/dev/module.f.mjs +170 -0
- package/fjs/dev/package_json/module.f.d.mts +32 -0
- package/fjs/dev/package_json/module.f.mjs +37 -0
- package/fjs/dev/package_json/proof.f.mjs +32 -0
- package/fjs/dev/proof.f.d.mts +13 -0
- package/fjs/dev/proof.f.mjs +78 -0
- package/fjs/dev/types.d.ts +14 -0
- package/fjs/dev/types.js +6 -0
- package/fjs/dev/update/module.f.d.mts +19 -0
- package/fjs/dev/update/module.f.mjs +36 -0
- package/fjs/dev/update/proof.f.d.mts +7 -0
- package/fjs/dev/update/proof.f.mjs +36 -0
- package/fjs/djs/ast/module.f.d.mts +35 -0
- package/fjs/djs/ast/module.f.mjs +82 -0
- package/fjs/djs/ast/proof.f.mjs +48 -0
- package/fjs/djs/ast/types.d.ts +54 -0
- package/fjs/djs/ast/types.js +8 -0
- package/fjs/djs/examples/input.f.mjs +4 -0
- package/fjs/djs/examples/m.f.mjs +1 -0
- package/fjs/djs/module.f.d.mts +17 -0
- package/fjs/djs/module.f.mjs +47 -0
- package/fjs/djs/parser/module.f.d.mts +75 -0
- package/fjs/djs/parser/module.f.mjs +547 -0
- package/fjs/djs/parser/proof.f.mjs +543 -0
- package/fjs/djs/parser/types.d.ts +11 -0
- package/fjs/djs/parser/types.js +7 -0
- package/fjs/djs/proof.f.mjs +52 -0
- package/fjs/djs/serializer/module.f.d.mts +30 -0
- package/fjs/djs/serializer/module.f.mjs +206 -0
- package/fjs/djs/serializer/proof.f.mjs +116 -0
- package/fjs/djs/tokenizer/module.f.d.mts +65 -0
- package/fjs/djs/tokenizer/module.f.mjs +624 -0
- package/fjs/djs/tokenizer/proof.f.mjs +980 -0
- package/fjs/djs/tokenizer/types.d.ts +20 -0
- package/fjs/djs/tokenizer/types.js +7 -0
- package/fjs/djs/transpiler/module.f.d.mts +44 -0
- package/fjs/djs/transpiler/module.f.mjs +141 -0
- package/fjs/djs/transpiler/proof.f.mjs +76 -0
- package/fjs/djs/types.d.ts +13 -0
- package/fjs/djs/types.js +7 -0
- package/fjs/effects/eff/module.f.d.mts +10 -0
- package/fjs/effects/eff/module.f.mjs +68 -0
- package/fjs/effects/eff/proof.f.d.mts +12 -0
- package/fjs/effects/eff/proof.f.mjs +66 -0
- package/fjs/effects/eff/types.d.ts +71 -0
- package/fjs/effects/eff/types.js +6 -0
- package/fjs/effects/list/module.f.d.mts +24 -0
- package/fjs/effects/list/module.f.mjs +34 -0
- package/fjs/effects/list/types.d.ts +26 -0
- package/fjs/effects/list/types.js +6 -0
- package/fjs/effects/memory/module.f.d.mts +32 -0
- package/fjs/effects/memory/module.f.mjs +44 -0
- package/fjs/effects/memory/proof.f.d.mts +12 -0
- package/fjs/effects/memory/proof.f.mjs +83 -0
- package/fjs/effects/memory/types.d.ts +18 -0
- package/fjs/effects/memory/types.js +6 -0
- package/fjs/effects/mock/module.f.d.mts +6 -0
- package/fjs/effects/mock/module.f.mjs +26 -0
- package/fjs/effects/mock/types.d.ts +15 -0
- package/fjs/effects/mock/types.js +6 -0
- package/fjs/effects/module.d.mts +7 -0
- package/fjs/effects/module.f.d.mts +350 -0
- package/fjs/effects/module.f.mjs +382 -0
- package/fjs/effects/module.mjs +18 -0
- package/fjs/effects/node/memory/module.d.mts +24 -0
- package/fjs/effects/node/memory/module.mjs +59 -0
- package/fjs/effects/node/memory/proof.mjs +43 -0
- package/fjs/effects/node/module.d.mts +54 -0
- package/fjs/effects/node/module.f.d.mts +172 -0
- package/fjs/effects/node/module.f.mjs +354 -0
- package/fjs/effects/node/module.mjs +393 -0
- package/fjs/effects/node/proof.f.d.mts +76 -0
- package/fjs/effects/node/proof.f.mjs +444 -0
- package/fjs/effects/node/types.d.ts +203 -0
- package/fjs/effects/node/types.js +6 -0
- package/fjs/effects/node/virtual/module.f.d.mts +31 -0
- package/fjs/effects/node/virtual/module.f.mjs +434 -0
- package/fjs/effects/node/virtual/proof.f.d.mts +35 -0
- package/fjs/effects/node/virtual/proof.f.mjs +226 -0
- package/fjs/effects/node/virtual/types.d.ts +39 -0
- package/fjs/effects/node/virtual/types.js +7 -0
- package/fjs/effects/proof.f.d.mts +62 -0
- package/fjs/effects/proof.f.mjs +231 -0
- package/fjs/effects/types.d.ts +115 -0
- package/fjs/effects/types.js +6 -0
- package/fjs/emergent_testing/all.test.js +2 -2
- package/fjs/emergent_testing/example.f.d.mts +16 -0
- package/fjs/emergent_testing/example.f.mjs +34 -0
- package/fjs/emergent_testing/module.f.d.mts +150 -0
- package/fjs/emergent_testing/module.f.mjs +414 -0
- package/fjs/emergent_testing/proof.f.d.mts +97 -0
- package/fjs/emergent_testing/proof.f.mjs +518 -0
- package/fjs/emergent_testing/types.d.ts +53 -0
- package/fjs/emergent_testing/types.js +6 -0
- package/fjs/fsc/bnf.f.d.mts +3 -0
- package/fjs/fsc/bnf.f.mjs +77 -0
- package/fjs/fsc/json.f.d.mts +13 -0
- package/fjs/fsc/json.f.mjs +124 -0
- package/fjs/fsc/module.f.d.mts +14 -0
- package/fjs/fsc/module.f.mjs +138 -0
- package/fjs/fsc/proof.f.mjs +119 -0
- package/fjs/fsm/module.f.d.mts +27 -0
- package/fjs/fsm/module.f.mjs +99 -0
- package/fjs/fsm/proof.f.mjs +146 -0
- package/fjs/js/tokenizer/module.f.d.mts +19 -0
- package/fjs/js/tokenizer/module.f.mjs +795 -0
- package/fjs/js/tokenizer/proof.f.d.mts +12 -0
- package/fjs/js/tokenizer/proof.f.mjs +681 -0
- package/fjs/js/tokenizer/types.d.ts +193 -0
- package/fjs/js/tokenizer/types.js +6 -0
- package/fjs/mcp/cas/module.f.d.mts +156 -0
- package/fjs/mcp/cas/module.f.mjs +302 -0
- package/fjs/mcp/evo/module.f.d.mts +88 -0
- package/fjs/mcp/evo/module.f.mjs +153 -0
- package/fjs/mcp/evo/proof.f.d.mts +17 -0
- package/fjs/mcp/evo/proof.f.mjs +166 -0
- package/fjs/mcp/module.f.d.mts +32 -0
- package/fjs/mcp/module.f.mjs +96 -0
- package/fjs/mcp/proof.f.d.mts +46 -0
- package/fjs/mcp/proof.f.mjs +725 -0
- package/fjs/media/html/module.f.d.mts +43 -0
- package/fjs/media/html/module.f.mjs +167 -0
- package/fjs/media/html/proof.f.mjs +77 -0
- package/fjs/media/html/types.d.ts +19 -0
- package/fjs/media/html/types.js +6 -0
- package/fjs/media/json/module.f.d.mts +48 -0
- package/fjs/media/json/module.f.mjs +104 -0
- package/fjs/media/json/parser/module.f.d.mts +30 -0
- package/fjs/media/json/parser/module.f.mjs +219 -0
- package/fjs/media/json/parser/proof.f.d.mts +8 -0
- package/fjs/media/json/parser/proof.f.mjs +314 -0
- package/fjs/media/json/parser/types.d.ts +34 -0
- package/fjs/media/json/parser/types.js +6 -0
- package/fjs/media/json/proof.f.mjs +79 -0
- package/fjs/media/json/rtti/module.f.d.mts +38 -0
- package/fjs/media/json/rtti/module.f.mjs +51 -0
- package/fjs/media/json/rtti/proof.f.d.mts +26 -0
- package/fjs/media/json/rtti/proof.f.mjs +86 -0
- package/fjs/media/json/schema/module.f.d.mts +79 -0
- package/fjs/media/json/schema/module.f.mjs +144 -0
- package/fjs/media/json/schema/proof.f.d.mts +40 -0
- package/fjs/media/json/schema/proof.f.mjs +93 -0
- package/fjs/media/json/serializer/module.f.d.mts +27 -0
- package/fjs/media/json/serializer/module.f.mjs +131 -0
- package/fjs/media/json/serializer/proof.f.mjs +92 -0
- package/fjs/media/json/tokenizer/module.f.d.mts +17 -0
- package/fjs/media/json/tokenizer/module.f.mjs +77 -0
- package/fjs/media/json/tokenizer/proof.f.d.mts +8 -0
- package/fjs/media/json/tokenizer/proof.f.mjs +291 -0
- package/fjs/media/json/tokenizer/types.d.ts +17 -0
- package/fjs/media/json/tokenizer/types.js +6 -0
- package/fjs/media/json/types.d.ts +25 -0
- package/fjs/media/json/types.js +13 -0
- package/fjs/media/module.f.d.mts +116 -0
- package/fjs/media/module.f.mjs +152 -0
- package/fjs/media/nix/module.f.d.mts +14 -0
- package/fjs/media/nix/module.f.mjs +261 -0
- package/fjs/media/nix/proof.f.mjs +181 -0
- package/fjs/media/nix/types.d.ts +22 -0
- package/fjs/media/nix/types.js +6 -0
- package/fjs/media/proof.f.d.mts +19 -0
- package/fjs/media/proof.f.mjs +159 -0
- package/fjs/media/revision/module.f.d.mts +119 -0
- package/fjs/media/revision/module.f.mjs +166 -0
- package/fjs/media/revision/proof.f.mjs +228 -0
- package/fjs/media/revision/types.d.ts +16 -0
- package/fjs/media/revision/types.js +8 -0
- package/fjs/media/rust/module.f.d.mts +61 -0
- package/fjs/media/rust/module.f.mjs +93 -0
- package/fjs/media/rust/proof.f.d.mts +17 -0
- package/fjs/media/rust/proof.f.mjs +50 -0
- package/fjs/media/type/module.f.d.mts +97 -0
- package/fjs/media/type/module.f.mjs +281 -0
- package/fjs/media/type/proof.f.mjs +285 -0
- package/fjs/media/type/types.d.ts +67 -0
- package/fjs/media/type/types.js +6 -0
- package/fjs/media/types.d.ts +26 -0
- package/fjs/media/types.js +7 -0
- package/fjs/module.f.d.mts +3 -0
- package/fjs/module.f.mjs +60 -0
- package/fjs/module.mjs +6 -0
- package/fjs/nanvm/module.f.d.mts +54 -0
- package/fjs/nanvm/module.f.mjs +240 -0
- package/fjs/nanvm/proof.f.d.mts +41 -0
- package/fjs/nanvm/proof.f.mjs +173 -0
- package/fjs/nanvm/rust/module.f.d.mts +54 -0
- package/fjs/nanvm/rust/module.f.mjs +166 -0
- package/fjs/nanvm/rust/proof.f.d.mts +21 -0
- package/fjs/nanvm/rust/proof.f.mjs +119 -0
- package/fjs/nanvm/types.d.ts +105 -0
- package/fjs/nanvm/types.js +11 -0
- package/fjs/nanvm/update/module.f.d.mts +23 -0
- package/fjs/nanvm/update/module.f.mjs +33 -0
- package/fjs/nanvm/update/proof.f.d.mts +9 -0
- package/fjs/nanvm/update/proof.f.mjs +32 -0
- package/fjs/path/module.f.d.mts +55 -0
- package/fjs/path/module.f.mjs +96 -0
- package/fjs/path/proof.f.mjs +125 -0
- package/fjs/proof.f.mjs +48 -0
- package/fjs/protocol/json_rpc/module.f.d.mts +127 -0
- package/fjs/protocol/json_rpc/module.f.mjs +112 -0
- package/fjs/protocol/json_rpc/proof.f.mjs +84 -0
- package/fjs/protocol/json_rpc/types.d.ts +30 -0
- package/fjs/protocol/json_rpc/types.js +8 -0
- package/fjs/protocol/mcp/module.f.d.mts +227 -0
- package/fjs/protocol/mcp/module.f.mjs +369 -0
- package/fjs/protocol/mcp/proof.f.d.mts +53 -0
- package/fjs/protocol/mcp/proof.f.mjs +312 -0
- package/fjs/protocol/mcp/stdio/module.f.d.mts +52 -0
- package/fjs/protocol/mcp/stdio/module.f.mjs +132 -0
- package/fjs/protocol/mcp/stdio/proof.f.d.mts +20 -0
- package/fjs/protocol/mcp/stdio/proof.f.mjs +190 -0
- package/fjs/protocol/mcp/types.d.ts +59 -0
- package/fjs/protocol/mcp/types.js +8 -0
- package/fjs/sul/id/module.f.d.mts +37 -0
- package/fjs/sul/id/module.f.mjs +143 -0
- package/fjs/sul/id/proof.f.mjs +72 -0
- package/fjs/sul/id/types.d.ts +8 -0
- package/fjs/sul/id/types.js +6 -0
- package/fjs/sul/level/hash/module.f.d.mts +37 -0
- package/fjs/sul/level/hash/module.f.mjs +61 -0
- package/fjs/sul/level/hash/proof.f.d.mts +15 -0
- package/fjs/sul/level/hash/proof.f.mjs +131 -0
- package/fjs/sul/level/hash/types.d.ts +20 -0
- package/fjs/sul/level/hash/types.js +6 -0
- package/fjs/sul/level/literal/module.f.d.mts +54 -0
- package/fjs/sul/level/literal/module.f.mjs +120 -0
- package/fjs/sul/level/literal/proof.f.mjs +788 -0
- package/fjs/sul/level/literal/types.d.ts +31 -0
- package/fjs/sul/level/literal/types.js +6 -0
- package/fjs/sul/module.f.d.mts +25 -0
- package/fjs/sul/module.f.mjs +69 -0
- package/fjs/sul/proof.f.d.mts +11 -0
- package/fjs/sul/proof.f.mjs +62 -0
- package/fjs/sul/types.d.ts +19 -0
- package/fjs/sul/types.js +6 -0
- package/fjs/text/ascii/module.f.d.mts +136 -0
- package/fjs/text/ascii/module.f.mjs +224 -0
- package/fjs/text/ascii/proof.f.mjs +16 -0
- package/fjs/text/code_point/module.f.d.mts +74 -0
- package/fjs/text/code_point/module.f.mjs +139 -0
- package/fjs/text/code_point/proof.f.mjs +80 -0
- package/fjs/text/module.f.d.mts +39 -0
- package/fjs/text/module.f.mjs +61 -0
- package/fjs/text/proof.f.mjs +48 -0
- package/fjs/text/sgr/module.f.d.mts +58 -0
- package/fjs/text/sgr/module.f.mjs +99 -0
- package/fjs/text/sgr/proof.f.mjs +39 -0
- package/fjs/text/sgr/types.d.ts +12 -0
- package/fjs/text/sgr/types.js +6 -0
- package/fjs/text/types.d.ts +13 -0
- package/fjs/text/types.js +6 -0
- package/fjs/text/utf16/module.f.d.mts +147 -0
- package/fjs/text/utf16/module.f.mjs +350 -0
- package/fjs/text/utf16/proof.f.d.mts +11 -0
- package/fjs/text/utf16/proof.f.mjs +158 -0
- package/fjs/text/utf16/types.d.ts +19 -0
- package/fjs/text/utf16/types.js +6 -0
- package/fjs/text/utf8/module.f.d.mts +69 -0
- package/fjs/text/utf8/module.f.mjs +280 -0
- package/fjs/text/utf8/proof.f.mjs +217 -0
- package/fjs/text/utf8/types.d.ts +26 -0
- package/fjs/text/utf8/types.js +6 -0
- package/fjs/types/array/module.f.d.mts +68 -0
- package/fjs/types/array/module.f.mjs +101 -0
- package/fjs/types/array/proof.f.mjs +98 -0
- package/fjs/types/array/types.d.ts +13 -0
- package/fjs/types/array/types.js +6 -0
- package/fjs/types/bigfloat/module.f.d.mts +14 -0
- package/fjs/types/bigfloat/module.f.mjs +99 -0
- package/fjs/types/bigfloat/proof.f.mjs +218 -0
- package/fjs/types/bigfloat/types.d.ts +6 -0
- package/fjs/types/bigfloat/types.js +6 -0
- package/fjs/types/bigint/benchmark.d.mts +1 -0
- package/fjs/types/bigint/benchmark.mjs +205 -0
- package/fjs/types/bigint/module.f.d.mts +176 -0
- package/fjs/types/bigint/module.f.mjs +289 -0
- package/fjs/types/bigint/proof.f.d.mts +39 -0
- package/fjs/types/bigint/proof.f.mjs +443 -0
- package/fjs/types/bigint/types.d.ts +14 -0
- package/fjs/types/bigint/types.js +6 -0
- package/fjs/types/bit_vec/module.f.d.mts +199 -0
- package/fjs/types/bit_vec/module.f.mjs +485 -0
- package/fjs/types/bit_vec/proof.f.mjs +495 -0
- package/fjs/types/bit_vec/types.d.ts +51 -0
- package/fjs/types/bit_vec/types.js +6 -0
- package/fjs/types/btree/find/module.f.d.mts +15 -0
- package/fjs/types/btree/find/module.f.mjs +80 -0
- package/fjs/types/btree/find/proof.f.d.mts +4 -0
- package/fjs/types/btree/find/proof.f.mjs +121 -0
- package/fjs/types/btree/find/types.d.ts +22 -0
- package/fjs/types/btree/find/types.js +6 -0
- package/fjs/types/btree/module.f.d.mts +10 -0
- package/fjs/types/btree/module.f.mjs +39 -0
- package/fjs/types/btree/proof.f.d.mts +14 -0
- package/fjs/types/btree/proof.f.mjs +85 -0
- package/fjs/types/btree/remove/module.f.d.mts +21 -0
- package/fjs/types/btree/remove/module.f.mjs +187 -0
- package/fjs/types/btree/remove/proof.f.mjs +472 -0
- package/fjs/types/btree/set/module.f.d.mts +5 -0
- package/fjs/types/btree/set/module.f.mjs +117 -0
- package/fjs/types/btree/set/proof.f.mjs +427 -0
- package/fjs/types/btree/types/module.f.d.mts +19 -0
- package/fjs/types/btree/types/module.f.mjs +19 -0
- package/fjs/types/btree/types/types.d.ts +14 -0
- package/fjs/types/btree/types/types.js +6 -0
- package/fjs/types/byte_set/module.f.d.mts +26 -0
- package/fjs/types/byte_set/module.f.mjs +66 -0
- package/fjs/types/byte_set/proof.f.d.mts +12 -0
- package/fjs/types/byte_set/proof.f.mjs +84 -0
- package/fjs/types/byte_set/types.d.ts +6 -0
- package/fjs/types/byte_set/types.js +6 -0
- package/fjs/types/function/compare/module.f.d.mts +44 -0
- package/fjs/types/function/compare/module.f.mjs +71 -0
- package/fjs/types/function/compare/proof.f.mjs +50 -0
- package/fjs/types/function/compare/types.d.ts +22 -0
- package/fjs/types/function/compare/types.js +6 -0
- package/fjs/types/function/module.f.d.mts +26 -0
- package/fjs/types/function/module.f.mjs +32 -0
- package/fjs/types/function/operator/module.f.d.mts +37 -0
- package/fjs/types/function/operator/module.f.mjs +55 -0
- package/fjs/types/function/operator/proof.f.mjs +76 -0
- package/fjs/types/function/operator/types.d.ts +39 -0
- package/fjs/types/function/operator/types.js +6 -0
- package/fjs/types/function/proof.f.mjs +16 -0
- package/fjs/types/function/types.d.ts +16 -0
- package/fjs/types/function/types.js +6 -0
- package/fjs/types/list/module.f.d.mts +88 -0
- package/fjs/types/list/module.f.mjs +309 -0
- package/fjs/types/list/proof.f.d.mts +32 -0
- package/fjs/types/list/proof.f.mjs +363 -0
- package/fjs/types/list/types.d.ts +36 -0
- package/fjs/types/list/types.js +6 -0
- package/fjs/types/map/module.f.d.mts +13 -0
- package/fjs/types/map/module.f.mjs +42 -0
- package/fjs/types/map/proof.f.mjs +25 -0
- package/fjs/types/nibble_set/module.f.d.mts +30 -0
- package/fjs/types/nibble_set/module.f.mjs +43 -0
- package/fjs/types/nibble_set/proof.f.mjs +59 -0
- package/fjs/types/nibble_set/types.d.ts +9 -0
- package/fjs/types/nibble_set/types.js +6 -0
- package/fjs/types/nominal/module.f.d.mts +9 -0
- package/fjs/types/nominal/module.f.mjs +16 -0
- package/fjs/types/nominal/proof.f.d.mts +7 -0
- package/fjs/types/nominal/proof.f.mjs +79 -0
- package/fjs/types/nominal/types.d.ts +25 -0
- package/fjs/types/nominal/types.js +6 -0
- package/fjs/types/nullable/module.f.d.mts +38 -0
- package/fjs/types/nullable/module.f.mjs +53 -0
- package/fjs/types/nullable/proof.f.mjs +34 -0
- package/fjs/types/nullable/types.d.ts +6 -0
- package/fjs/types/nullable/types.js +6 -0
- package/fjs/types/number/module.f.d.mts +23 -0
- package/fjs/types/number/module.f.mjs +55 -0
- package/fjs/types/number/proof.f.mjs +204 -0
- package/fjs/types/object/module.f.d.mts +33 -0
- package/fjs/types/object/module.f.mjs +58 -0
- package/fjs/types/object/proof.f.d.mts +25 -0
- package/fjs/types/object/proof.f.mjs +26 -0
- package/fjs/types/object/types.d.ts +50 -0
- package/fjs/types/object/types.js +8 -0
- package/fjs/types/ordered_map/module.f.d.mts +21 -0
- package/fjs/types/ordered_map/module.f.mjs +54 -0
- package/fjs/types/ordered_map/proof.f.mjs +88 -0
- package/fjs/types/ordered_map/types.d.ts +8 -0
- package/fjs/types/ordered_map/types.js +6 -0
- package/fjs/types/patricia_trie/module.f.d.mts +19 -0
- package/fjs/types/patricia_trie/module.f.mjs +43 -0
- package/fjs/types/patricia_trie/proof.f.d.mts +14 -0
- package/fjs/types/patricia_trie/proof.f.mjs +148 -0
- package/fjs/types/patricia_trie/types.d.ts +34 -0
- package/fjs/types/patricia_trie/types.js +6 -0
- package/fjs/types/prime_field/module.f.d.mts +42 -0
- package/fjs/types/prime_field/module.f.mjs +136 -0
- package/fjs/types/prime_field/proof.f.mjs +131 -0
- package/fjs/types/prime_field/types.d.ts +38 -0
- package/fjs/types/prime_field/types.js +6 -0
- package/fjs/types/range/module.f.d.mts +11 -0
- package/fjs/types/range/module.f.mjs +13 -0
- package/fjs/types/range/proof.f.mjs +10 -0
- package/fjs/types/range/types.d.ts +6 -0
- package/fjs/types/range/types.js +6 -0
- package/fjs/types/range_map/module.f.d.mts +72 -0
- package/fjs/types/range_map/module.f.mjs +130 -0
- package/fjs/types/range_map/proof.f.d.mts +7 -0
- package/fjs/types/range_map/proof.f.mjs +186 -0
- package/fjs/types/range_map/types.d.ts +56 -0
- package/fjs/types/range_map/types.js +6 -0
- package/fjs/types/range_set/module.f.d.mts +5 -0
- package/fjs/types/range_set/module.f.mjs +19 -0
- package/fjs/types/range_set/proof.f.mjs +26 -0
- package/fjs/types/result/module.d.mts +5 -0
- package/fjs/types/result/module.f.d.mts +59 -0
- package/fjs/types/result/module.f.mjs +67 -0
- package/fjs/types/result/module.mjs +22 -0
- package/fjs/types/result/proof.f.mjs +41 -0
- package/fjs/types/result/types.d.ts +17 -0
- package/fjs/types/result/types.js +6 -0
- package/fjs/types/rtti/common/module.f.d.mts +86 -0
- package/fjs/types/rtti/common/module.f.mjs +183 -0
- package/fjs/types/rtti/common/proof.f.d.mts +9 -0
- package/fjs/types/rtti/common/proof.f.mjs +64 -0
- package/fjs/types/rtti/common/types.d.ts +43 -0
- package/fjs/types/rtti/common/types.js +1 -0
- package/fjs/types/rtti/module.f.d.mts +76 -0
- package/fjs/types/rtti/module.f.mjs +110 -0
- package/fjs/types/rtti/parse/module.f.d.mts +9 -0
- package/fjs/types/rtti/parse/module.f.mjs +196 -0
- package/fjs/types/rtti/parse/proof.f.d.mts +122 -0
- package/fjs/types/rtti/parse/proof.f.mjs +363 -0
- package/fjs/types/rtti/parse/types.d.ts +12 -0
- package/fjs/types/rtti/parse/types.js +1 -0
- package/fjs/types/rtti/proof.f.d.mts +8 -0
- package/fjs/types/rtti/proof.f.mjs +20 -0
- package/fjs/types/rtti/ts/module.f.d.mts +34 -0
- package/fjs/types/rtti/ts/module.f.mjs +64 -0
- package/fjs/types/rtti/ts/proof.f.mjs +88 -0
- package/fjs/types/rtti/ts/types.d.ts +88 -0
- package/fjs/types/rtti/ts/types.js +1 -0
- package/fjs/types/rtti/types.d.ts +43 -0
- package/fjs/types/rtti/types.js +1 -0
- package/fjs/types/rtti/validate/module.f.d.mts +6 -0
- package/fjs/types/rtti/validate/module.f.mjs +169 -0
- package/fjs/types/rtti/validate/proof.f.d.mts +125 -0
- package/fjs/types/rtti/validate/proof.f.mjs +437 -0
- package/fjs/types/rtti/validate/types.d.ts +6 -0
- package/fjs/types/rtti/validate/types.js +1 -0
- package/fjs/types/sorted_list/module.f.d.mts +43 -0
- package/fjs/types/sorted_list/module.f.mjs +110 -0
- package/fjs/types/sorted_list/proof.f.d.mts +5 -0
- package/fjs/types/sorted_list/proof.f.mjs +52 -0
- package/fjs/types/sorted_list/types.d.ts +15 -0
- package/fjs/types/sorted_list/types.js +6 -0
- package/fjs/types/sorted_set/module.f.d.mts +24 -0
- package/fjs/types/sorted_set/module.f.mjs +56 -0
- package/fjs/types/sorted_set/proof.f.d.mts +7 -0
- package/fjs/types/sorted_set/proof.f.mjs +77 -0
- package/fjs/types/sorted_set/types.d.ts +6 -0
- package/fjs/types/sorted_set/types.js +6 -0
- package/fjs/types/string/module.f.d.mts +36 -0
- package/fjs/types/string/module.f.mjs +58 -0
- package/fjs/types/string/proof.f.mjs +76 -0
- package/fjs/types/string_set/module.f.d.mts +37 -0
- package/fjs/types/string_set/module.f.mjs +53 -0
- package/fjs/types/string_set/proof.f.mjs +46 -0
- package/fjs/types/string_set/types.d.ts +7 -0
- package/fjs/types/string_set/types.js +6 -0
- package/fjs/types/ts/module.f.d.mts +20 -0
- package/fjs/types/ts/module.f.mjs +51 -0
- package/fjs/types/ts/proof.f.mjs +97 -0
- package/fjs/types/ts/types.d.ts +16 -0
- package/fjs/types/ts/types.js +8 -0
- package/fjs/types/uint8array/module.f.d.mts +31 -0
- package/fjs/types/uint8array/module.f.mjs +53 -0
- package/fjs/types/uint8array/proof.f.d.mts +17 -0
- package/fjs/types/uint8array/proof.f.mjs +73 -0
- package/fjs/website/module.f.d.mts +8 -0
- package/fjs/website/module.f.mjs +24 -0
- package/fjs/website/proof.f.mjs +14 -0
- package/package.json +12 -10
- package/todo/proof.f.d.mts +22 -0
- package/todo/proof.f.mjs +59 -0
- package/fjs/asn.1/module.f.d.ts +0 -62
- package/fjs/asn.1/module.f.js +0 -278
- package/fjs/asn.1/proof.f.js +0 -285
- package/fjs/asserts/module.f.d.ts +0 -36
- package/fjs/asserts/module.f.js +0 -39
- package/fjs/asserts/proof.f.js +0 -18
- package/fjs/base_n/module.f.d.ts +0 -45
- package/fjs/base_n/module.f.js +0 -72
- package/fjs/base_n/proof.f.js +0 -73
- package/fjs/basen/base128/module.f.d.ts +0 -20
- package/fjs/basen/base128/module.f.js +0 -43
- package/fjs/basen/base128/proof.f.js +0 -26
- package/fjs/basen/base64/module.f.d.ts +0 -9
- package/fjs/basen/base64/module.f.js +0 -71
- package/fjs/basen/base64/proof.f.d.ts +0 -16
- package/fjs/basen/base64/proof.f.js +0 -139
- package/fjs/basen/cbase32/module.f.d.ts +0 -11
- package/fjs/basen/cbase32/module.f.js +0 -55
- package/fjs/basen/cbase32/proof.f.d.ts +0 -7
- package/fjs/basen/cbase32/proof.f.js +0 -62
- package/fjs/bnf/data/module.f.d.ts +0 -52
- package/fjs/bnf/data/module.f.js +0 -143
- package/fjs/bnf/data/proof.f.d.ts +0 -8
- package/fjs/bnf/data/proof.f.js +0 -169
- package/fjs/bnf/descent/module.f.d.ts +0 -87
- package/fjs/bnf/descent/module.f.js +0 -149
- package/fjs/bnf/descent/proof.f.d.ts +0 -7
- package/fjs/bnf/descent/proof.f.js +0 -368
- package/fjs/bnf/ll1/module.f.d.ts +0 -72
- package/fjs/bnf/ll1/module.f.js +0 -155
- package/fjs/bnf/ll1/proof.f.d.ts +0 -10
- package/fjs/bnf/ll1/proof.f.js +0 -375
- package/fjs/bnf/module.f.d.ts +0 -165
- package/fjs/bnf/module.f.js +0 -174
- package/fjs/bnf/proof.f.d.ts +0 -12
- package/fjs/bnf/proof.f.js +0 -69
- package/fjs/bnf/testlib.f.d.ts +0 -3
- package/fjs/bnf/testlib.f.js +0 -138
- package/fjs/bnf/token_symbol/module.f.d.ts +0 -38
- package/fjs/bnf/token_symbol/module.f.js +0 -48
- package/fjs/bnf/token_symbol/proof.f.js +0 -37
- package/fjs/cas/cli/module.f.d.ts +0 -6
- package/fjs/cas/cli/module.f.js +0 -53
- package/fjs/cas/cli/proof.f.d.ts +0 -17
- package/fjs/cas/cli/proof.f.js +0 -112
- package/fjs/cas/evo/module.f.d.ts +0 -223
- package/fjs/cas/evo/module.f.js +0 -455
- package/fjs/cas/evo/proof.f.d.ts +0 -47
- package/fjs/cas/evo/proof.f.js +0 -707
- package/fjs/cas/module.f.d.ts +0 -64
- package/fjs/cas/module.f.js +0 -255
- package/fjs/cas/proof.f.d.ts +0 -18
- package/fjs/cas/proof.f.js +0 -305
- package/fjs/ci/bun/module.f.d.ts +0 -2
- package/fjs/ci/bun/module.f.js +0 -15
- package/fjs/ci/common/module.f.d.ts +0 -88
- package/fjs/ci/common/module.f.js +0 -63
- package/fjs/ci/config/module.f.d.ts +0 -45
- package/fjs/ci/config/module.f.js +0 -80
- package/fjs/ci/deno/module.f.d.ts +0 -10
- package/fjs/ci/deno/module.f.js +0 -28
- package/fjs/ci/deno/proof.f.d.ts +0 -5
- package/fjs/ci/deno/proof.f.js +0 -26
- package/fjs/ci/module.f.d.ts +0 -13
- package/fjs/ci/module.f.js +0 -58
- package/fjs/ci/nix/module.f.d.ts +0 -61
- package/fjs/ci/nix/module.f.js +0 -92
- package/fjs/ci/nix/proof.f.d.ts +0 -23
- package/fjs/ci/nix/proof.f.js +0 -109
- package/fjs/ci/node/module.f.d.ts +0 -28
- package/fjs/ci/node/module.f.js +0 -92
- package/fjs/ci/node/proof.f.js +0 -17
- package/fjs/ci/proof.f.d.ts +0 -18
- package/fjs/ci/proof.f.js +0 -182
- package/fjs/ci/rust/module.f.d.ts +0 -3
- package/fjs/ci/rust/module.f.js +0 -75
- package/fjs/cli/module.f.d.ts +0 -11
- package/fjs/cli/module.f.js +0 -34
- package/fjs/cli/proof.f.d.ts +0 -14
- package/fjs/cli/proof.f.js +0 -111
- package/fjs/common/monoid/module.f.d.ts +0 -126
- package/fjs/common/monoid/module.f.js +0 -88
- package/fjs/common/monoid/proof.f.d.ts +0 -9
- package/fjs/common/monoid/proof.f.js +0 -48
- package/fjs/crypto/hmac/module.f.d.ts +0 -29
- package/fjs/crypto/hmac/module.f.js +0 -56
- package/fjs/crypto/hmac/proof.f.js +0 -32
- package/fjs/crypto/pow/module.f.d.ts +0 -37
- package/fjs/crypto/pow/module.f.js +0 -72
- package/fjs/crypto/pow/proof.f.js +0 -111
- package/fjs/crypto/secp/module.f.d.ts +0 -85
- package/fjs/crypto/secp/module.f.js +0 -176
- package/fjs/crypto/secp/proof.f.d.ts +0 -8
- package/fjs/crypto/secp/proof.f.js +0 -124
- package/fjs/crypto/sha2/module.f.d.ts +0 -102
- package/fjs/crypto/sha2/module.f.js +0 -266
- package/fjs/crypto/sha2/proof.f.d.ts +0 -31
- package/fjs/crypto/sha2/proof.f.js +0 -139
- package/fjs/crypto/sign/module.f.d.ts +0 -33
- package/fjs/crypto/sign/module.f.js +0 -163
- package/fjs/crypto/sign/proof.f.d.ts +0 -11
- package/fjs/crypto/sign/proof.f.js +0 -562
- package/fjs/crypto/vdf/module.f.d.ts +0 -21
- package/fjs/crypto/vdf/module.f.js +0 -57
- package/fjs/crypto/vdf/proof.f.js +0 -94
- package/fjs/dev/module.f.d.ts +0 -57
- package/fjs/dev/module.f.js +0 -135
- package/fjs/dev/package_json/module.f.d.ts +0 -16
- package/fjs/dev/package_json/module.f.js +0 -24
- package/fjs/dev/package_json/proof.f.js +0 -28
- package/fjs/dev/proof.f.d.ts +0 -13
- package/fjs/dev/proof.f.js +0 -77
- package/fjs/dev/update/module.f.d.ts +0 -11
- package/fjs/dev/update/module.f.js +0 -20
- package/fjs/dev/update/proof.f.d.ts +0 -7
- package/fjs/dev/update/proof.f.js +0 -35
- package/fjs/djs/ast/module.f.d.ts +0 -62
- package/fjs/djs/ast/module.f.js +0 -61
- package/fjs/djs/ast/proof.f.js +0 -49
- package/fjs/djs/examples/input.f.js +0 -4
- package/fjs/djs/examples/m.f.js +0 -1
- package/fjs/djs/module.f.d.ts +0 -17
- package/fjs/djs/module.f.js +0 -22
- package/fjs/djs/parser/module.f.d.ts +0 -23
- package/fjs/djs/parser/module.f.js +0 -410
- package/fjs/djs/parser/proof.f.js +0 -556
- package/fjs/djs/proof.f.js +0 -50
- package/fjs/djs/serializer/module.f.d.ts +0 -17
- package/fjs/djs/serializer/module.f.js +0 -173
- package/fjs/djs/serializer/proof.f.js +0 -133
- package/fjs/djs/tokenizer/module.f.d.ts +0 -24
- package/fjs/djs/tokenizer/module.f.js +0 -472
- package/fjs/djs/tokenizer/proof.f.js +0 -1211
- package/fjs/djs/transpiler/module.f.d.ts +0 -41
- package/fjs/djs/transpiler/module.f.js +0 -88
- package/fjs/djs/transpiler/proof.f.js +0 -67
- package/fjs/effects/eff/module.f.d.ts +0 -72
- package/fjs/effects/eff/module.f.js +0 -46
- package/fjs/effects/eff/proof.f.d.ts +0 -11
- package/fjs/effects/eff/proof.f.js +0 -58
- package/fjs/effects/list/module.f.d.ts +0 -37
- package/fjs/effects/list/module.f.js +0 -17
- package/fjs/effects/memory/module.f.d.ts +0 -37
- package/fjs/effects/memory/module.f.js +0 -24
- package/fjs/effects/memory/proof.f.d.ts +0 -6
- package/fjs/effects/memory/proof.f.js +0 -50
- package/fjs/effects/mock/module.f.d.ts +0 -16
- package/fjs/effects/mock/module.f.js +0 -20
- package/fjs/effects/module.d.ts +0 -2
- package/fjs/effects/module.f.d.ts +0 -408
- package/fjs/effects/module.f.js +0 -312
- package/fjs/effects/module.js +0 -11
- package/fjs/effects/node/memory/module.d.ts +0 -20
- package/fjs/effects/node/memory/module.js +0 -44
- package/fjs/effects/node/memory/proof.js +0 -29
- package/fjs/effects/node/module.d.ts +0 -20
- package/fjs/effects/node/module.f.d.ts +0 -300
- package/fjs/effects/node/module.f.js +0 -171
- package/fjs/effects/node/module.js +0 -305
- package/fjs/effects/node/proof.f.d.ts +0 -69
- package/fjs/effects/node/proof.f.js +0 -409
- package/fjs/effects/node/virtual/module.f.d.ts +0 -49
- package/fjs/effects/node/virtual/module.f.js +0 -440
- package/fjs/effects/node/virtual/proof.f.d.ts +0 -33
- package/fjs/effects/node/virtual/proof.f.js +0 -186
- package/fjs/effects/proof.f.d.ts +0 -56
- package/fjs/effects/proof.f.js +0 -200
- package/fjs/emergent_testing/example.f.d.ts +0 -13
- package/fjs/emergent_testing/example.f.js +0 -31
- package/fjs/emergent_testing/module.f.d.ts +0 -140
- package/fjs/emergent_testing/module.f.js +0 -289
- package/fjs/emergent_testing/proof.f.d.ts +0 -67
- package/fjs/emergent_testing/proof.f.js +0 -416
- package/fjs/fsc/bnf.f.d.ts +0 -2
- package/fjs/fsc/bnf.f.js +0 -42
- package/fjs/fsc/json.f.d.ts +0 -7
- package/fjs/fsc/json.f.js +0 -64
- package/fjs/fsc/module.f.d.ts +0 -11
- package/fjs/fsc/module.f.js +0 -73
- package/fjs/fsc/proof.f.js +0 -104
- package/fjs/fsm/module.f.d.ts +0 -17
- package/fjs/fsm/module.f.js +0 -55
- package/fjs/fsm/proof.f.js +0 -126
- package/fjs/js/tokenizer/module.f.d.ts +0 -104
- package/fjs/js/tokenizer/module.f.js +0 -547
- package/fjs/js/tokenizer/proof.f.d.ts +0 -9
- package/fjs/js/tokenizer/proof.f.js +0 -986
- package/fjs/mcp/cas/module.f.d.ts +0 -27
- package/fjs/mcp/cas/module.f.js +0 -232
- package/fjs/mcp/evo/module.f.d.ts +0 -32
- package/fjs/mcp/evo/module.f.js +0 -99
- package/fjs/mcp/evo/proof.f.d.ts +0 -12
- package/fjs/mcp/evo/proof.f.js +0 -147
- package/fjs/mcp/module.f.d.ts +0 -56
- package/fjs/mcp/module.f.js +0 -69
- package/fjs/mcp/proof.f.d.ts +0 -45
- package/fjs/mcp/proof.f.js +0 -535
- package/fjs/media/html/module.f.d.ts +0 -52
- package/fjs/media/html/module.f.js +0 -117
- package/fjs/media/html/proof.f.js +0 -65
- package/fjs/media/json/module.f.d.ts +0 -64
- package/fjs/media/json/module.f.js +0 -109
- package/fjs/media/json/parser/module.f.d.ts +0 -21
- package/fjs/media/json/parser/module.f.js +0 -194
- package/fjs/media/json/parser/proof.f.d.ts +0 -5
- package/fjs/media/json/parser/proof.f.js +0 -314
- package/fjs/media/json/proof.f.js +0 -98
- package/fjs/media/json/schema/module.f.d.ts +0 -78
- package/fjs/media/json/schema/module.f.js +0 -96
- package/fjs/media/json/schema/proof.f.d.ts +0 -36
- package/fjs/media/json/schema/proof.f.js +0 -83
- package/fjs/media/json/serializer/module.f.d.ts +0 -28
- package/fjs/media/json/serializer/module.f.js +0 -73
- package/fjs/media/json/serializer/proof.f.js +0 -94
- package/fjs/media/json/tokenizer/module.f.d.ts +0 -15
- package/fjs/media/json/tokenizer/module.f.js +0 -63
- package/fjs/media/json/tokenizer/proof.f.d.ts +0 -5
- package/fjs/media/json/tokenizer/proof.f.js +0 -417
- package/fjs/media/module.f.d.ts +0 -119
- package/fjs/media/module.f.js +0 -88
- package/fjs/media/nix/module.f.d.ts +0 -30
- package/fjs/media/nix/module.f.js +0 -166
- package/fjs/media/nix/proof.f.js +0 -127
- package/fjs/media/proof.f.d.ts +0 -19
- package/fjs/media/proof.f.js +0 -127
- package/fjs/media/revision/module.f.d.ts +0 -94
- package/fjs/media/revision/module.f.js +0 -143
- package/fjs/media/revision/proof.f.js +0 -190
- package/fjs/media/type/module.f.d.ts +0 -135
- package/fjs/media/type/module.f.js +0 -231
- package/fjs/media/type/proof.f.js +0 -213
- package/fjs/module.f.d.ts +0 -2
- package/fjs/module.f.js +0 -50
- package/fjs/module.js +0 -4
- package/fjs/path/module.f.d.ts +0 -46
- package/fjs/path/module.f.js +0 -71
- package/fjs/path/proof.f.js +0 -119
- package/fjs/proof.f.js +0 -38
- package/fjs/protocol/json_rpc/module.f.d.ts +0 -114
- package/fjs/protocol/json_rpc/module.f.js +0 -89
- package/fjs/protocol/json_rpc/proof.f.js +0 -68
- package/fjs/protocol/mcp/module.f.d.ts +0 -239
- package/fjs/protocol/mcp/module.f.js +0 -272
- package/fjs/protocol/mcp/proof.f.d.ts +0 -34
- package/fjs/protocol/mcp/proof.f.js +0 -208
- package/fjs/protocol/mcp/stdio/module.f.d.ts +0 -47
- package/fjs/protocol/mcp/stdio/module.f.js +0 -78
- package/fjs/protocol/mcp/stdio/proof.f.d.ts +0 -13
- package/fjs/protocol/mcp/stdio/proof.f.js +0 -143
- package/fjs/sul/id/module.f.d.ts +0 -33
- package/fjs/sul/id/module.f.js +0 -93
- package/fjs/sul/id/proof.f.js +0 -61
- package/fjs/sul/level/hash/module.f.d.ts +0 -38
- package/fjs/sul/level/hash/module.f.js +0 -43
- package/fjs/sul/level/hash/proof.f.d.ts +0 -13
- package/fjs/sul/level/hash/proof.f.js +0 -112
- package/fjs/sul/level/literal/module.f.d.ts +0 -64
- package/fjs/sul/level/literal/module.f.js +0 -88
- package/fjs/sul/level/literal/proof.f.js +0 -714
- package/fjs/sul/module.f.d.ts +0 -23
- package/fjs/sul/module.f.js +0 -46
- package/fjs/sul/proof.f.d.ts +0 -9
- package/fjs/sul/proof.f.js +0 -47
- package/fjs/text/ascii/module.f.d.ts +0 -136
- package/fjs/text/ascii/module.f.js +0 -154
- package/fjs/text/ascii/proof.f.js +0 -14
- package/fjs/text/code_point/module.f.d.ts +0 -65
- package/fjs/text/code_point/module.f.js +0 -103
- package/fjs/text/code_point/proof.f.js +0 -72
- package/fjs/text/module.f.d.ts +0 -40
- package/fjs/text/module.f.js +0 -43
- package/fjs/text/proof.f.js +0 -44
- package/fjs/text/sgr/module.f.d.ts +0 -53
- package/fjs/text/sgr/module.f.js +0 -63
- package/fjs/text/sgr/proof.f.js +0 -33
- package/fjs/text/utf16/module.f.d.ts +0 -161
- package/fjs/text/utf16/module.f.js +0 -311
- package/fjs/text/utf16/proof.f.d.ts +0 -10
- package/fjs/text/utf16/proof.f.js +0 -144
- package/fjs/text/utf8/module.f.d.ts +0 -83
- package/fjs/text/utf8/module.f.js +0 -247
- package/fjs/text/utf8/proof.f.js +0 -217
- package/fjs/types/array/module.f.d.ts +0 -49
- package/fjs/types/array/module.f.js +0 -42
- package/fjs/types/array/proof.f.js +0 -92
- package/fjs/types/bigfloat/module.f.d.ts +0 -6
- package/fjs/types/bigfloat/module.f.js +0 -69
- package/fjs/types/bigfloat/proof.f.js +0 -217
- package/fjs/types/bigint/module.f.d.ts +0 -172
- package/fjs/types/bigint/module.f.js +0 -251
- package/fjs/types/bigint/proof.f.d.ts +0 -37
- package/fjs/types/bigint/proof.f.js +0 -400
- package/fjs/types/bit_vec/module.f.d.ts +0 -302
- package/fjs/types/bit_vec/module.f.js +0 -375
- package/fjs/types/bit_vec/proof.f.js +0 -465
- package/fjs/types/btree/find/module.f.d.ts +0 -25
- package/fjs/types/btree/find/module.f.js +0 -80
- package/fjs/types/btree/find/proof.f.d.ts +0 -3
- package/fjs/types/btree/find/proof.f.js +0 -108
- package/fjs/types/btree/module.f.d.ts +0 -9
- package/fjs/types/btree/module.f.js +0 -33
- package/fjs/types/btree/proof.f.d.ts +0 -13
- package/fjs/types/btree/proof.f.js +0 -64
- package/fjs/types/btree/remove/module.f.d.ts +0 -14
- package/fjs/types/btree/remove/module.f.js +0 -186
- package/fjs/types/btree/remove/proof.f.js +0 -484
- package/fjs/types/btree/set/module.f.d.ts +0 -8
- package/fjs/types/btree/set/module.f.js +0 -128
- package/fjs/types/btree/set/proof.f.js +0 -368
- package/fjs/types/btree/types/module.f.d.ts +0 -23
- package/fjs/types/btree/types/module.f.js +0 -9
- package/fjs/types/byte_set/module.f.d.ts +0 -16
- package/fjs/types/byte_set/module.f.js +0 -30
- package/fjs/types/byte_set/proof.f.d.ts +0 -11
- package/fjs/types/byte_set/proof.f.js +0 -79
- package/fjs/types/function/compare/module.f.d.ts +0 -49
- package/fjs/types/function/compare/module.f.js +0 -51
- package/fjs/types/function/compare/proof.f.js +0 -47
- package/fjs/types/function/module.f.d.ts +0 -28
- package/fjs/types/function/module.f.js +0 -19
- package/fjs/types/function/operator/module.f.d.ts +0 -48
- package/fjs/types/function/operator/module.f.js +0 -16
- package/fjs/types/function/operator/proof.f.js +0 -53
- package/fjs/types/function/proof.f.js +0 -10
- package/fjs/types/list/module.f.d.ts +0 -75
- package/fjs/types/list/module.f.js +0 -190
- package/fjs/types/list/proof.f.d.ts +0 -31
- package/fjs/types/list/proof.f.js +0 -330
- package/fjs/types/map/module.f.d.ts +0 -2
- package/fjs/types/map/module.f.js +0 -22
- package/fjs/types/map/proof.f.js +0 -22
- package/fjs/types/nibble_set/module.f.d.ts +0 -27
- package/fjs/types/nibble_set/module.f.js +0 -25
- package/fjs/types/nibble_set/proof.f.js +0 -60
- package/fjs/types/nominal/module.f.d.ts +0 -22
- package/fjs/types/nominal/module.f.js +0 -13
- package/fjs/types/nominal/proof.f.d.ts +0 -4
- package/fjs/types/nominal/proof.f.js +0 -48
- package/fjs/types/nullable/module.f.d.ts +0 -21
- package/fjs/types/nullable/module.f.js +0 -29
- package/fjs/types/nullable/proof.f.js +0 -29
- package/fjs/types/number/module.f.d.ts +0 -16
- package/fjs/types/number/module.f.js +0 -30
- package/fjs/types/number/proof.f.js +0 -124
- package/fjs/types/object/module.f.d.ts +0 -54
- package/fjs/types/object/module.f.js +0 -25
- package/fjs/types/object/proof.f.d.ts +0 -4
- package/fjs/types/object/proof.f.js +0 -14
- package/fjs/types/ordered_map/module.f.d.ts +0 -17
- package/fjs/types/ordered_map/module.f.js +0 -22
- package/fjs/types/ordered_map/proof.f.js +0 -73
- package/fjs/types/patricia_trie/module.f.d.ts +0 -25
- package/fjs/types/patricia_trie/module.f.js +0 -35
- package/fjs/types/patricia_trie/proof.f.d.ts +0 -13
- package/fjs/types/patricia_trie/proof.f.js +0 -121
- package/fjs/types/prime_field/module.f.d.ts +0 -62
- package/fjs/types/prime_field/module.f.js +0 -112
- package/fjs/types/prime_field/proof.f.js +0 -128
- package/fjs/types/range/module.f.d.ts +0 -8
- package/fjs/types/range/module.f.js +0 -2
- package/fjs/types/range/proof.f.js +0 -9
- package/fjs/types/range_map/module.f.d.ts +0 -92
- package/fjs/types/range_map/module.f.js +0 -82
- package/fjs/types/range_map/proof.f.d.ts +0 -6
- package/fjs/types/range_map/proof.f.js +0 -151
- package/fjs/types/range_set/module.f.d.ts +0 -5
- package/fjs/types/range_set/module.f.js +0 -16
- package/fjs/types/range_set/proof.f.d.ts +0 -1
- package/fjs/types/range_set/proof.f.js +0 -19
- package/fjs/types/result/module.d.ts +0 -3
- package/fjs/types/result/module.f.d.ts +0 -61
- package/fjs/types/result/module.f.js +0 -54
- package/fjs/types/result/module.js +0 -19
- package/fjs/types/result/proof.f.js +0 -31
- package/fjs/types/rtti/common/module.f.d.ts +0 -121
- package/fjs/types/rtti/common/module.f.js +0 -94
- package/fjs/types/rtti/common/proof.f.d.ts +0 -8
- package/fjs/types/rtti/common/proof.f.js +0 -51
- package/fjs/types/rtti/module.f.d.ts +0 -75
- package/fjs/types/rtti/module.f.js +0 -34
- package/fjs/types/rtti/parse/module.f.d.ts +0 -36
- package/fjs/types/rtti/parse/module.f.js +0 -114
- package/fjs/types/rtti/parse/proof.f.d.ts +0 -115
- package/fjs/types/rtti/parse/proof.f.js +0 -334
- package/fjs/types/rtti/proof.f.d.ts +0 -5
- package/fjs/types/rtti/proof.f.js +0 -16
- package/fjs/types/rtti/ts/module.f.d.ts +0 -118
- package/fjs/types/rtti/ts/module.f.js +0 -59
- package/fjs/types/rtti/ts/proof.f.js +0 -75
- package/fjs/types/rtti/validate/module.f.d.ts +0 -4
- package/fjs/types/rtti/validate/module.f.js +0 -74
- package/fjs/types/rtti/validate/proof.f.d.ts +0 -118
- package/fjs/types/rtti/validate/proof.f.js +0 -349
- package/fjs/types/sorted_list/module.f.d.ts +0 -26
- package/fjs/types/sorted_list/module.f.js +0 -51
- package/fjs/types/sorted_list/proof.f.d.ts +0 -4
- package/fjs/types/sorted_list/proof.f.js +0 -46
- package/fjs/types/sorted_set/module.f.d.ts +0 -33
- package/fjs/types/sorted_set/module.f.js +0 -5
- package/fjs/types/sorted_set/proof.f.d.ts +0 -6
- package/fjs/types/sorted_set/proof.f.js +0 -67
- package/fjs/types/string/module.f.d.ts +0 -24
- package/fjs/types/string/module.f.js +0 -35
- package/fjs/types/string/proof.f.js +0 -77
- package/fjs/types/string_set/module.f.d.ts +0 -30
- package/fjs/types/string_set/module.f.js +0 -37
- package/fjs/types/string_set/proof.f.js +0 -43
- package/fjs/types/ts/module.f.d.ts +0 -23
- package/fjs/types/ts/module.f.js +0 -27
- package/fjs/types/ts/proof.f.js +0 -86
- package/fjs/types/uint8array/module.f.d.ts +0 -13
- package/fjs/types/uint8array/module.f.js +0 -34
- package/fjs/types/uint8array/proof.f.d.ts +0 -17
- package/fjs/types/uint8array/proof.f.js +0 -64
- package/fjs/website/module.f.d.ts +0 -3
- package/fjs/website/module.f.js +0 -14
- package/fjs/website/proof.f.js +0 -13
- package/nanvm-lib/tests/proof.f.d.ts +0 -122
- package/nanvm-lib/tests/proof.f.js +0 -330
- package/todo/031-json.f.js +0 -241
- package/todo/proof.f.d.ts +0 -20
- package/todo/proof.f.js +0 -62
- /package/fjs/asn.1/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/asserts/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/{base_n/proof.f.d.ts → basen/proof.f.d.mts} +0 -0
- /package/fjs/bnf/token_symbol/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/{todo/031-json.f.d.ts → fjs/ci/common/types.js} +0 -0
- /package/fjs/ci/node/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/crypto/hmac/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/crypto/pow/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/crypto/vdf/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/dev/package_json/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/ast/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/examples/{input.f.d.ts → input.f.d.mts} +0 -0
- /package/fjs/djs/examples/{m.f.d.ts → m.f.d.mts} +0 -0
- /package/fjs/djs/parser/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/serializer/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/tokenizer/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/transpiler/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/effects/node/memory/{proof.d.ts → proof.d.mts} +0 -0
- /package/fjs/fsc/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/fsm/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/html/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/json/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/json/serializer/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/nix/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/revision/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/type/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/{module.d.ts → module.d.mts} +0 -0
- /package/fjs/path/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/protocol/json_rpc/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/sul/id/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/sul/level/literal/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/ascii/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/code_point/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/sgr/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/utf8/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/array/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/bigfloat/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/bit_vec/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/btree/remove/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/btree/set/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/{basen/base128/proof.f.d.ts → types/function/compare/proof.f.d.mts} +0 -0
- /package/fjs/types/function/operator/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/function/{compare/proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/map/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/nibble_set/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/nullable/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/number/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/option/{module.f.d.ts → types.d.ts} +0 -0
- /package/fjs/types/option/{module.f.js → types.js} +0 -0
- /package/fjs/types/ordered_map/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/phantom/{module.f.d.ts → types.d.ts} +0 -0
- /package/fjs/types/phantom/{module.f.js → types.js} +0 -0
- /package/fjs/types/prime_field/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/{function/proof.f.d.ts → range/proof.f.d.mts} +0 -0
- /package/fjs/types/{range/proof.f.d.ts → range_set/proof.f.d.mts} +0 -0
- /package/fjs/types/result/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/rtti/ts/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/string/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/string_set/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/ts/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/website/{proof.f.d.ts → proof.f.d.mts} +0 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/** @type {(v: bigint) => bigint} */
|
|
2
|
+
const log2 = v => {
|
|
3
|
+
if (v <= 0n) { return -1n }
|
|
4
|
+
let result = 31n
|
|
5
|
+
let i = 32n
|
|
6
|
+
while (true) {
|
|
7
|
+
const n = v >> i
|
|
8
|
+
if (n === 0n) {
|
|
9
|
+
// overshot
|
|
10
|
+
break
|
|
11
|
+
}
|
|
12
|
+
v = n
|
|
13
|
+
result += i
|
|
14
|
+
i <<= 1n
|
|
15
|
+
}
|
|
16
|
+
// We know that `v` is not 0 so it doesn't make sense to check `n` when `i` is 0.
|
|
17
|
+
// Because of this, We check if `i` is greater than 32 before we divide it by 2.
|
|
18
|
+
while (i !== 32n) {
|
|
19
|
+
i >>= 1n
|
|
20
|
+
const n = v >> i
|
|
21
|
+
if (n !== 0n) {
|
|
22
|
+
result += i
|
|
23
|
+
v = n
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return result - BigInt(Math.clz32(Number(v)))
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** @type {(v: bigint) => bigint} */
|
|
30
|
+
const oldLog2 = v => {
|
|
31
|
+
if (v <= 0n) { return -1n }
|
|
32
|
+
let result = 0n
|
|
33
|
+
let i = 1n
|
|
34
|
+
while (true) {
|
|
35
|
+
const n = v >> i
|
|
36
|
+
if (n === 0n) {
|
|
37
|
+
// overshot
|
|
38
|
+
break
|
|
39
|
+
}
|
|
40
|
+
v = n
|
|
41
|
+
result += i
|
|
42
|
+
i <<= 1n // multiple by two
|
|
43
|
+
}
|
|
44
|
+
// We know that `v` is not 0 so it doesn't make sense to check `n` when `i` is 0.
|
|
45
|
+
// Because of this, We check if `i` is greater than 1 before we divide it by 2.
|
|
46
|
+
while (i !== 1n) {
|
|
47
|
+
i >>= 1n
|
|
48
|
+
const n = v >> i
|
|
49
|
+
if (n !== 0n) {
|
|
50
|
+
result += i
|
|
51
|
+
v = n
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return result
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** @type {(v: bigint) => bigint} */
|
|
58
|
+
const stringLog2 = v => BigInt(v.toString(2).length) - 1n
|
|
59
|
+
|
|
60
|
+
/** @type {(v: bigint) => bigint} */
|
|
61
|
+
const stringHexLog2 = v => {
|
|
62
|
+
const len = (BigInt(v.toString(16).length) - 1n) << 2n
|
|
63
|
+
const x = v >> len
|
|
64
|
+
return len + 31n - BigInt(Math.clz32(Number(x)))
|
|
65
|
+
}
|
|
66
|
+
/** @type {(v: bigint) => bigint} */
|
|
67
|
+
const string32Log2 = n => {
|
|
68
|
+
const i = (BigInt(n.toString(32).length) - 1n) * 5n
|
|
69
|
+
return i + 31n - BigInt(Math.clz32(Number(n >> i)))
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** @type {(v: bigint) => bigint} */
|
|
73
|
+
const mathLog2 = v => {
|
|
74
|
+
if (v <= 0n) { return -1n }
|
|
75
|
+
let result = -1n
|
|
76
|
+
let i = 1023n
|
|
77
|
+
while (true) {
|
|
78
|
+
const n = v >> i
|
|
79
|
+
if (n === 0n) {
|
|
80
|
+
// overshot
|
|
81
|
+
break
|
|
82
|
+
}
|
|
83
|
+
v = n
|
|
84
|
+
result += i
|
|
85
|
+
i <<= 1n
|
|
86
|
+
}
|
|
87
|
+
// We know that `v` is not 0 so it doesn't make sense to check `n` when `i` is 0.
|
|
88
|
+
// Because of this, We check if `i` is greater than 32 before we divide it by 2.
|
|
89
|
+
while (i !== 1023n) {
|
|
90
|
+
i >>= 1n
|
|
91
|
+
const n = v >> i
|
|
92
|
+
if (n !== 0n) {
|
|
93
|
+
result += i
|
|
94
|
+
v = n
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const x = BigInt(Math.log2(Number(v)) | 0)
|
|
98
|
+
return result + x + (v >> x)
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const mLog2 = Math.log2
|
|
102
|
+
|
|
103
|
+
/** @type {(v: bigint) => bigint} */
|
|
104
|
+
const ylog2 = n => {
|
|
105
|
+
let i = -1n
|
|
106
|
+
let j = 0x400n
|
|
107
|
+
while (true) {
|
|
108
|
+
const m = n >> j
|
|
109
|
+
if (m === 0n) {
|
|
110
|
+
// overshot
|
|
111
|
+
break
|
|
112
|
+
}
|
|
113
|
+
n = m
|
|
114
|
+
i += j
|
|
115
|
+
j <<= 1n
|
|
116
|
+
}
|
|
117
|
+
while (j !== 0x400n) {
|
|
118
|
+
j >>= 1n
|
|
119
|
+
const m = n >> j
|
|
120
|
+
if (m !== 0n) {
|
|
121
|
+
i += j
|
|
122
|
+
n = m
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const nl = mLog2(Number(n))
|
|
126
|
+
if (isFinite(nl)) {
|
|
127
|
+
const rem = BigInt(nl | 0)
|
|
128
|
+
i += rem + (n >> rem)
|
|
129
|
+
} else {
|
|
130
|
+
i += 0x400n
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return i
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/** @type {HTMLElement} */
|
|
137
|
+
// @ts-ignore
|
|
138
|
+
const log = document.getElementById('log')
|
|
139
|
+
|
|
140
|
+
/** @type {(v: (_: bigint) => bigint) => void} */
|
|
141
|
+
const big = f => {
|
|
142
|
+
let e = 1_048_575n
|
|
143
|
+
let c = 1n << e
|
|
144
|
+
for (let i = 0n; i < 1_000; ++i) {
|
|
145
|
+
//
|
|
146
|
+
{
|
|
147
|
+
const x = f(c)
|
|
148
|
+
if (x !== e) { throw [e, x] }
|
|
149
|
+
}
|
|
150
|
+
{
|
|
151
|
+
const x = f(c - 1n)
|
|
152
|
+
if (x !== e - 1n) { throw [e, x] }
|
|
153
|
+
}
|
|
154
|
+
//
|
|
155
|
+
c >>= 1n
|
|
156
|
+
--e
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/** @type {(a: bigint) => (b: bigint) => bigint} */
|
|
161
|
+
const min = a => b => a < b ? a : b
|
|
162
|
+
|
|
163
|
+
/** @type {(f: (_: bigint) => bigint) => void} */
|
|
164
|
+
const small = f => {
|
|
165
|
+
let e = 2_000n
|
|
166
|
+
let c = 1n << e
|
|
167
|
+
do {
|
|
168
|
+
{
|
|
169
|
+
const x = f(c)
|
|
170
|
+
if (x !== e) { throw [e, x] }
|
|
171
|
+
}
|
|
172
|
+
for (let j = 1n; j < min(c >> 1n)(1000n); ++j) {
|
|
173
|
+
const x = f(c - j)
|
|
174
|
+
if (x !== e - 1n) { throw [j, e, x] }
|
|
175
|
+
}
|
|
176
|
+
c >>= 1n
|
|
177
|
+
--e
|
|
178
|
+
} while (c !== 0n)
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/** @type {(t: (_: (_: bigint) => bigint) => void) => (s: string, f: (_: bigint) => bigint) => void} */
|
|
182
|
+
const benchmark = t => (s, f) => {
|
|
183
|
+
const start = performance.now()
|
|
184
|
+
t(f)
|
|
185
|
+
const end = performance.now()
|
|
186
|
+
const dif = end - start
|
|
187
|
+
//
|
|
188
|
+
log.innerText += `${s}: ${dif}\n`
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/** @type {(t: (_: (_: bigint) => bigint) => void) => void} */
|
|
192
|
+
const run = t => {
|
|
193
|
+
log.innerText += `${t.name}\n`
|
|
194
|
+
const b = benchmark(t)
|
|
195
|
+
// b('stringLog2', stringLog2)
|
|
196
|
+
// b('stringHexLog2', stringHexLog2)
|
|
197
|
+
b('string32Log2', string32Log2)
|
|
198
|
+
// b('oldLog2', oldLog2)
|
|
199
|
+
// b('log2', log2)
|
|
200
|
+
// b('mathLog2', mathLog2)
|
|
201
|
+
b('ylog2', ylog2)
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
run(big)
|
|
205
|
+
run(small)
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for working with `bigint` values.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
*
|
|
8
|
+
* ```js
|
|
9
|
+
* import { sum, abs, log2, bitLength, mask } from './module.f.ts'
|
|
10
|
+
*
|
|
11
|
+
* const total = sum([1n, 2n, 3n]) // 6n
|
|
12
|
+
* const absoluteValue = abs(-42n) // 42n
|
|
13
|
+
* const logValue = log2(8n) // 3n
|
|
14
|
+
* const bitCount = bitLength(255n) // 8n
|
|
15
|
+
* const bitmask = mask(5n) // 31n
|
|
16
|
+
* const c = combination([3n, 2n, 1n]) // 60n
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
import type { Sign } from '../function/compare/types.ts';
|
|
20
|
+
import type { List } from '../list/types.ts';
|
|
21
|
+
import type { Reduce, Unary } from './types.ts';
|
|
22
|
+
/**
|
|
23
|
+
* Adds two `bigint` values.
|
|
24
|
+
* TODO: should be combined with `addition` for `number`.
|
|
25
|
+
*
|
|
26
|
+
* @param {bigint} a - The first bigint value.
|
|
27
|
+
* @returns {Unary} A function that takes the second bigint value and returns the sum.
|
|
28
|
+
*/
|
|
29
|
+
export declare const addition: (a: bigint) => Unary;
|
|
30
|
+
/**
|
|
31
|
+
* Calculates the sum of a list of `bigint` values.
|
|
32
|
+
*
|
|
33
|
+
* @param {List<bigint>} input - A list of bigint values.
|
|
34
|
+
* @returns {bigint} The sum of all values in the list.
|
|
35
|
+
*/
|
|
36
|
+
export declare const sum: (list: List<bigint>) => bigint;
|
|
37
|
+
/**
|
|
38
|
+
* Multiplies two `bigint` values.
|
|
39
|
+
*
|
|
40
|
+
* @param {bigint} a - The first bigint value.
|
|
41
|
+
* @returns {Unary} A function that takes the second bigint value and returns the product.
|
|
42
|
+
*/
|
|
43
|
+
export declare const multiple: (a: bigint) => Unary;
|
|
44
|
+
/**
|
|
45
|
+
* Calculates the product of a list of `bigint` values.
|
|
46
|
+
*
|
|
47
|
+
* @param {List<bigint>} input - A list of bigint values.
|
|
48
|
+
* @returns {bigint} The product of all values in the list.
|
|
49
|
+
*/
|
|
50
|
+
export declare const product: (list: List<bigint>) => bigint;
|
|
51
|
+
/**
|
|
52
|
+
* Calculates the absolute value of a `bigint`.
|
|
53
|
+
*
|
|
54
|
+
* @param {bigint} a - The bigint value.
|
|
55
|
+
* @returns {bigint} The absolute value of the input bigint.
|
|
56
|
+
*/
|
|
57
|
+
export declare const abs: (a: bigint) => bigint;
|
|
58
|
+
/**
|
|
59
|
+
* Determines the sign of a `bigint`.
|
|
60
|
+
* @param {bigint} a - The bigint value.
|
|
61
|
+
* @returns {Sign} `1` if positive, `-1` if negative, and `0` if zero.
|
|
62
|
+
*/
|
|
63
|
+
export declare const sign: (a: bigint) => Sign;
|
|
64
|
+
/**
|
|
65
|
+
* Serializes a `bigint` to a string representation.
|
|
66
|
+
*
|
|
67
|
+
* @param {bigint} a - The bigint value.
|
|
68
|
+
* @returns {string} A string representation of the bigint (e.g., '123n').
|
|
69
|
+
*/
|
|
70
|
+
export declare const serialize: (a: bigint) => string;
|
|
71
|
+
/**
|
|
72
|
+
* Calculates the base-2 logarithm (floor).
|
|
73
|
+
*
|
|
74
|
+
* This function returns the integer part of the logarithm. For example:
|
|
75
|
+
* - `log2(1n)` returns `0n`,
|
|
76
|
+
* - `log2(2n)` returns `1n`,
|
|
77
|
+
* - `log2(15n)` returns `3n`.
|
|
78
|
+
*
|
|
79
|
+
* @param {bigint} v - The input BigInt.
|
|
80
|
+
* @returns {bigint} The base-2 logarithm (floor) of the input BigInt, or `-1n` if the input is less than or equal to 0.
|
|
81
|
+
*
|
|
82
|
+
* @remarks
|
|
83
|
+
* The function operates in two phases:
|
|
84
|
+
* 1. **Fast Doubling Phase:** Uses exponential steps to quickly narrow down the range
|
|
85
|
+
* of the most significant bit.
|
|
86
|
+
* 2. **Binary Search Phase:** Refines the result by halving the step size and incrementally
|
|
87
|
+
* determining the exact value of the logarithm.
|
|
88
|
+
* 3. **Remainder Phase:** Using `Math.log2`.
|
|
89
|
+
*/
|
|
90
|
+
export declare const log2: (v: bigint) => bigint;
|
|
91
|
+
/**
|
|
92
|
+
* Calculates the bit length of a given BigInt.
|
|
93
|
+
*
|
|
94
|
+
* The bit length of a number is the number of bits required to represent its absolute value in binary,
|
|
95
|
+
* excluding leading zeros. For example:
|
|
96
|
+
* - `0n` has a bit length of 0 (it has no bits).
|
|
97
|
+
* - `1n` (binary `1`) has a bit length of 1.
|
|
98
|
+
* - `255n` (binary `11111111`) has a bit length of 8.
|
|
99
|
+
* - `-255n` (absolute value `255`, binary `11111111`) also has a bit length of 8.
|
|
100
|
+
*
|
|
101
|
+
* The function handles both positive and negative numbers. For negative inputs, the bit length is calculated
|
|
102
|
+
* based on the absolute value of the number. Zero has a bit length of 0.
|
|
103
|
+
*
|
|
104
|
+
* @param {bigint} v - The input BigInt.
|
|
105
|
+
* @returns {bigint} The bit length of the input BigInt.
|
|
106
|
+
*
|
|
107
|
+
* @remark
|
|
108
|
+
* The function uses the `log2` function to calculate the position of the most significant bit (MSB)
|
|
109
|
+
* and adds `1n` to account for the MSB itself. For negative numbers, the absolute value is used.
|
|
110
|
+
*/
|
|
111
|
+
export declare const bitLength: (v: bigint) => bigint;
|
|
112
|
+
/**
|
|
113
|
+
* Generates a bitmask with the specified number of bits set to 1.
|
|
114
|
+
*
|
|
115
|
+
* @param {bigint} len - The number of bits to set in the mask. Must be a non-negative integer.
|
|
116
|
+
* @returns {bigint} A bigint representing the bitmask, where the least significant `len` bits are 1.
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
*
|
|
120
|
+
* ```js
|
|
121
|
+
* const result = mask(3n) // 7n
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
export declare const mask: (len: bigint) => bigint;
|
|
125
|
+
export declare const maxLength = 1048576n;
|
|
126
|
+
export declare const max: bigint;
|
|
127
|
+
/**
|
|
128
|
+
* Calculates the partial factorial `b!/a!`.
|
|
129
|
+
*
|
|
130
|
+
* @param {bigint} a - The starting bigint value.
|
|
131
|
+
* @returns {Unary} A function that takes `b` and computes `b!/a!`.
|
|
132
|
+
*/
|
|
133
|
+
export declare const partialFactorial: (a: bigint) => Unary;
|
|
134
|
+
/**
|
|
135
|
+
* Calculates the factorial of a `bigint`.
|
|
136
|
+
*
|
|
137
|
+
* @param {bigint} b - The bigint value.
|
|
138
|
+
* @returns {bigint} The factorial of the input.
|
|
139
|
+
*/
|
|
140
|
+
export declare const factorial: Unary;
|
|
141
|
+
/**
|
|
142
|
+
* Calculates the number of combinations for a list of `bigint` values.
|
|
143
|
+
*
|
|
144
|
+
* @param {readonly bigint[]} k - A list of bigint values.
|
|
145
|
+
* @returns {bigint} The number of combinations.
|
|
146
|
+
*/
|
|
147
|
+
export declare const combination: (...k: readonly bigint[]) => bigint;
|
|
148
|
+
/**
|
|
149
|
+
* TODO: It should be combined with `number`.
|
|
150
|
+
*
|
|
151
|
+
* @type {Reduce}
|
|
152
|
+
*/
|
|
153
|
+
export declare const xor: Reduce;
|
|
154
|
+
/** @type {Reduce} */
|
|
155
|
+
export declare const divUp: Reduce;
|
|
156
|
+
/** @type {Reduce} */
|
|
157
|
+
export declare const roundUp: Reduce;
|
|
158
|
+
/**
|
|
159
|
+
* Converts a bit count to a byte count, rounding up — divides by `8`.
|
|
160
|
+
*
|
|
161
|
+
* Domain: non-negative inputs (bit/byte counts). On negative inputs `divUp`
|
|
162
|
+
* truncates toward zero rather than flooring toward −∞, so the rounding
|
|
163
|
+
* direction is only meaningful for `v >= 0n`.
|
|
164
|
+
*
|
|
165
|
+
* @type {Unary}
|
|
166
|
+
*/
|
|
167
|
+
export declare const divUp8: Unary;
|
|
168
|
+
/**
|
|
169
|
+
* Rounds a bit count up to the nearest whole byte — the nearest multiple of `8`.
|
|
170
|
+
*
|
|
171
|
+
* Domain: non-negative inputs (bit/byte counts). See `divUp8` for the
|
|
172
|
+
* truncate-vs-floor caveat on negative values.
|
|
173
|
+
*
|
|
174
|
+
* @type {Unary}
|
|
175
|
+
*/
|
|
176
|
+
export declare const roundUp8: Unary;
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for working with `bigint` values.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
*
|
|
8
|
+
* ```js
|
|
9
|
+
* import { sum, abs, log2, bitLength, mask } from './module.f.ts'
|
|
10
|
+
*
|
|
11
|
+
* const total = sum([1n, 2n, 3n]) // 6n
|
|
12
|
+
* const absoluteValue = abs(-42n) // 42n
|
|
13
|
+
* const logValue = log2(8n) // 3n
|
|
14
|
+
* const bitCount = bitLength(255n) // 8n
|
|
15
|
+
* const bitmask = mask(5n) // 31n
|
|
16
|
+
* const c = combination([3n, 2n, 1n]) // 60n
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import { cmp } from '../function/compare/module.f.mjs'
|
|
21
|
+
/** @import { Sign } from '../function/compare/types.ts' */
|
|
22
|
+
/** @import { List } from '../list/types.ts' */
|
|
23
|
+
/** @import { Reduce, Unary } from './types.ts' */
|
|
24
|
+
import { fold } from '../../common/monoid/module.f.mjs'
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Adds two `bigint` values.
|
|
28
|
+
* TODO: should be combined with `addition` for `number`.
|
|
29
|
+
*
|
|
30
|
+
* @param {bigint} a - The first bigint value.
|
|
31
|
+
* @returns {Unary} A function that takes the second bigint value and returns the sum.
|
|
32
|
+
*/
|
|
33
|
+
export const addition = a => b => a + b
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Calculates the sum of a list of `bigint` values.
|
|
37
|
+
*
|
|
38
|
+
* @param {List<bigint>} input - A list of bigint values.
|
|
39
|
+
* @returns {bigint} The sum of all values in the list.
|
|
40
|
+
*/
|
|
41
|
+
export const sum = fold({ identity: 0n, operation: addition })
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Multiplies two `bigint` values.
|
|
45
|
+
*
|
|
46
|
+
* @param {bigint} a - The first bigint value.
|
|
47
|
+
* @returns {Unary} A function that takes the second bigint value and returns the product.
|
|
48
|
+
*/
|
|
49
|
+
export const multiple = a => b => a * b
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Calculates the product of a list of `bigint` values.
|
|
53
|
+
*
|
|
54
|
+
* @param {List<bigint>} input - A list of bigint values.
|
|
55
|
+
* @returns {bigint} The product of all values in the list.
|
|
56
|
+
*/
|
|
57
|
+
export const product = fold({ identity: 1n, operation: multiple })
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Calculates the absolute value of a `bigint`.
|
|
61
|
+
*
|
|
62
|
+
* @param {bigint} a - The bigint value.
|
|
63
|
+
* @returns {bigint} The absolute value of the input bigint.
|
|
64
|
+
*/
|
|
65
|
+
export const abs = a => a >= 0 ? a : -a
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Determines the sign of a `bigint`.
|
|
69
|
+
* @param {bigint} a - The bigint value.
|
|
70
|
+
* @returns {Sign} `1` if positive, `-1` if negative, and `0` if zero.
|
|
71
|
+
*/
|
|
72
|
+
export const sign = a => cmp(a)(0n)
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Serializes a `bigint` to a string representation.
|
|
76
|
+
*
|
|
77
|
+
* @param {bigint} a - The bigint value.
|
|
78
|
+
* @returns {string} A string representation of the bigint (e.g., '123n').
|
|
79
|
+
*/
|
|
80
|
+
export const serialize = a => `${a}n`
|
|
81
|
+
|
|
82
|
+
const { isFinite } = Number
|
|
83
|
+
|
|
84
|
+
const { log2: mathLog2 } = Math
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Calculates the base-2 logarithm (floor).
|
|
88
|
+
*
|
|
89
|
+
* This function returns the integer part of the logarithm. For example:
|
|
90
|
+
* - `log2(1n)` returns `0n`,
|
|
91
|
+
* - `log2(2n)` returns `1n`,
|
|
92
|
+
* - `log2(15n)` returns `3n`.
|
|
93
|
+
*
|
|
94
|
+
* @param {bigint} v - The input BigInt.
|
|
95
|
+
* @returns {bigint} The base-2 logarithm (floor) of the input BigInt, or `-1n` if the input is less than or equal to 0.
|
|
96
|
+
*
|
|
97
|
+
* @remarks
|
|
98
|
+
* The function operates in two phases:
|
|
99
|
+
* 1. **Fast Doubling Phase:** Uses exponential steps to quickly narrow down the range
|
|
100
|
+
* of the most significant bit.
|
|
101
|
+
* 2. **Binary Search Phase:** Refines the result by halving the step size and incrementally
|
|
102
|
+
* determining the exact value of the logarithm.
|
|
103
|
+
* 3. **Remainder Phase:** Using `Math.log2`.
|
|
104
|
+
*/
|
|
105
|
+
export const log2 = v => {
|
|
106
|
+
if (v <= 0n) { return -1n }
|
|
107
|
+
|
|
108
|
+
//
|
|
109
|
+
// 1. Fast Doubling.
|
|
110
|
+
//
|
|
111
|
+
|
|
112
|
+
let result = -1n
|
|
113
|
+
// `bigints` higher than 2**1023 may lead to `Inf` during conversion to `number`.
|
|
114
|
+
// For example: `Number((1n << 1024n) - (1n << 970n)) === Inf`.
|
|
115
|
+
let i = 0x400n
|
|
116
|
+
while (true) {
|
|
117
|
+
const n = v >> i
|
|
118
|
+
if (n === 0n) {
|
|
119
|
+
// overshot
|
|
120
|
+
break
|
|
121
|
+
}
|
|
122
|
+
v = n
|
|
123
|
+
result += i
|
|
124
|
+
i <<= 1n
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
//
|
|
128
|
+
// 2. Binary Search.
|
|
129
|
+
//
|
|
130
|
+
|
|
131
|
+
// We know that `v` is not 0 so it doesn't make sense to check `n` when `i` is 0.
|
|
132
|
+
// Because of this, We check if `i` is greater than 1023 before we divide it by 2.
|
|
133
|
+
while (i !== 0x400n) {
|
|
134
|
+
i >>= 1n
|
|
135
|
+
const n = v >> i
|
|
136
|
+
if (n !== 0n) {
|
|
137
|
+
result += i
|
|
138
|
+
v = n
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
//
|
|
143
|
+
// 3. Remainder Phase.
|
|
144
|
+
//
|
|
145
|
+
|
|
146
|
+
// We know that `v` is less than `1n << 1024` so we can calculate a remainder using
|
|
147
|
+
// `Math.log2`.
|
|
148
|
+
const nl = mathLog2(Number(v))
|
|
149
|
+
if (isFinite(nl)) {
|
|
150
|
+
const rem = BigInt(nl | 0)
|
|
151
|
+
// (v >> rem) is either `0` or `1`, and it's used as a correction for
|
|
152
|
+
// Math.log2 rounding.
|
|
153
|
+
return result + rem + (v >> rem)
|
|
154
|
+
} else {
|
|
155
|
+
// nl is Inf, it means log2(v) === 0x3FF and we add +1 to compensate for initial
|
|
156
|
+
// `result = -1n`.
|
|
157
|
+
return result + 0x400n
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Calculates the bit length of a given BigInt.
|
|
163
|
+
*
|
|
164
|
+
* The bit length of a number is the number of bits required to represent its absolute value in binary,
|
|
165
|
+
* excluding leading zeros. For example:
|
|
166
|
+
* - `0n` has a bit length of 0 (it has no bits).
|
|
167
|
+
* - `1n` (binary `1`) has a bit length of 1.
|
|
168
|
+
* - `255n` (binary `11111111`) has a bit length of 8.
|
|
169
|
+
* - `-255n` (absolute value `255`, binary `11111111`) also has a bit length of 8.
|
|
170
|
+
*
|
|
171
|
+
* The function handles both positive and negative numbers. For negative inputs, the bit length is calculated
|
|
172
|
+
* based on the absolute value of the number. Zero has a bit length of 0.
|
|
173
|
+
*
|
|
174
|
+
* @param {bigint} v - The input BigInt.
|
|
175
|
+
* @returns {bigint} The bit length of the input BigInt.
|
|
176
|
+
*
|
|
177
|
+
* @remark
|
|
178
|
+
* The function uses the `log2` function to calculate the position of the most significant bit (MSB)
|
|
179
|
+
* and adds `1n` to account for the MSB itself. For negative numbers, the absolute value is used.
|
|
180
|
+
*/
|
|
181
|
+
export const bitLength = v => log2(abs(v)) + 1n
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Generates a bitmask with the specified number of bits set to 1.
|
|
185
|
+
*
|
|
186
|
+
* @param {bigint} len - The number of bits to set in the mask. Must be a non-negative integer.
|
|
187
|
+
* @returns {bigint} A bigint representing the bitmask, where the least significant `len` bits are 1.
|
|
188
|
+
*
|
|
189
|
+
* @example
|
|
190
|
+
*
|
|
191
|
+
* ```js
|
|
192
|
+
* const result = mask(3n) // 7n
|
|
193
|
+
* ```
|
|
194
|
+
*/
|
|
195
|
+
export const mask = len => {
|
|
196
|
+
// we compute this way to avoid overflowing in Bun when len === maxLength.
|
|
197
|
+
const r = len & 1n
|
|
198
|
+
const h = len >> 1n
|
|
199
|
+
const x = (((1n << h) - 1n) << r) | r
|
|
200
|
+
return (x << h) | x
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
export const maxLength = 0x100000n
|
|
204
|
+
|
|
205
|
+
// max + 1n // bun throws an error
|
|
206
|
+
export const max = mask(maxLength)
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Calculates the partial factorial `b!/a!`.
|
|
210
|
+
*
|
|
211
|
+
* @param {bigint} a - The starting bigint value.
|
|
212
|
+
* @returns {Unary} A function that takes `b` and computes `b!/a!`.
|
|
213
|
+
*/
|
|
214
|
+
export const partialFactorial = a => b => {
|
|
215
|
+
let result = b
|
|
216
|
+
while (true) {
|
|
217
|
+
--b
|
|
218
|
+
if (b <= a) { return result }
|
|
219
|
+
result *= b
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Calculates the factorial of a `bigint`.
|
|
225
|
+
*
|
|
226
|
+
* @param {bigint} b - The bigint value.
|
|
227
|
+
* @returns {bigint} The factorial of the input.
|
|
228
|
+
*/
|
|
229
|
+
export const factorial = partialFactorial(1n)
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Calculates the number of combinations for a list of `bigint` values.
|
|
233
|
+
*
|
|
234
|
+
* @param {readonly bigint[]} k - A list of bigint values.
|
|
235
|
+
* @returns {bigint} The number of combinations.
|
|
236
|
+
*/
|
|
237
|
+
export const combination = (...k) => {
|
|
238
|
+
let s = 0n
|
|
239
|
+
let m = 1n
|
|
240
|
+
let p = 1n
|
|
241
|
+
for (let i of k) {
|
|
242
|
+
s += i
|
|
243
|
+
if (i >= m) {
|
|
244
|
+
[i, m] = [m, i]
|
|
245
|
+
}
|
|
246
|
+
p *= factorial(i)
|
|
247
|
+
}
|
|
248
|
+
return partialFactorial(m)(s) / p
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* TODO: It should be combined with `number`.
|
|
253
|
+
*
|
|
254
|
+
* @type {Reduce}
|
|
255
|
+
*/
|
|
256
|
+
export const xor = a => b => a ^ b
|
|
257
|
+
|
|
258
|
+
/** @type {Reduce} */
|
|
259
|
+
export const divUp = b => {
|
|
260
|
+
const m = b - 1n
|
|
261
|
+
return v => (v + m) / b
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/** @type {Reduce} */
|
|
265
|
+
export const roundUp = b => {
|
|
266
|
+
const d = divUp(b)
|
|
267
|
+
return v => d(v) * b
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Converts a bit count to a byte count, rounding up — divides by `8`.
|
|
272
|
+
*
|
|
273
|
+
* Domain: non-negative inputs (bit/byte counts). On negative inputs `divUp`
|
|
274
|
+
* truncates toward zero rather than flooring toward −∞, so the rounding
|
|
275
|
+
* direction is only meaningful for `v >= 0n`.
|
|
276
|
+
*
|
|
277
|
+
* @type {Unary}
|
|
278
|
+
*/
|
|
279
|
+
export const divUp8 = divUp(8n)
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* Rounds a bit count up to the nearest whole byte — the nearest multiple of `8`.
|
|
283
|
+
*
|
|
284
|
+
* Domain: non-negative inputs (bit/byte counts). See `divUp8` for the
|
|
285
|
+
* truncate-vs-floor caveat on negative values.
|
|
286
|
+
*
|
|
287
|
+
* @type {Unary}
|
|
288
|
+
*/
|
|
289
|
+
export const roundUp8 = roundUp(8n)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/** @type {(v: bigint) => bigint} */
|
|
2
|
+
export declare const clz32Log2: (v: bigint) => bigint;
|
|
3
|
+
export type _Benchmark = (f: (_: bigint) => bigint) => () => void;
|
|
4
|
+
export declare const proof: {
|
|
5
|
+
example: () => void;
|
|
6
|
+
benchmark: () => {
|
|
7
|
+
big: {
|
|
8
|
+
[k: string]: () => void;
|
|
9
|
+
};
|
|
10
|
+
small: {
|
|
11
|
+
[k: string]: () => void;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
mask: () => void;
|
|
15
|
+
sum: () => void;
|
|
16
|
+
abs: (() => void)[];
|
|
17
|
+
serialize: (() => void)[];
|
|
18
|
+
log2: (() => void)[];
|
|
19
|
+
toString2: () => void;
|
|
20
|
+
minus: () => void;
|
|
21
|
+
not: () => void;
|
|
22
|
+
bitLen: {
|
|
23
|
+
0: () => void;
|
|
24
|
+
m: () => void;
|
|
25
|
+
big: () => void;
|
|
26
|
+
neg: (() => void)[];
|
|
27
|
+
};
|
|
28
|
+
factorial: () => void;
|
|
29
|
+
combination: () => void;
|
|
30
|
+
combination50x50: () => void;
|
|
31
|
+
combination3: () => void;
|
|
32
|
+
divUp: () => void;
|
|
33
|
+
roundUp: () => void;
|
|
34
|
+
divUp8: () => void;
|
|
35
|
+
roundUp8: () => void;
|
|
36
|
+
xor: () => void;
|
|
37
|
+
multiple: () => void;
|
|
38
|
+
product: () => void;
|
|
39
|
+
};
|