functionalscript 0.43.1 → 0.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -21
- package/fjs/asn.1/module.f.d.mts +123 -0
- package/fjs/asn.1/module.f.mjs +459 -0
- package/fjs/asn.1/proof.f.d.mts +53 -0
- package/fjs/asn.1/proof.f.mjs +321 -0
- package/fjs/asn.1/types.d.ts +37 -0
- package/fjs/asserts/module.f.d.mts +51 -0
- package/fjs/asserts/module.f.mjs +69 -0
- package/fjs/asserts/proof.f.d.mts +14 -0
- package/fjs/asserts/proof.f.mjs +33 -0
- package/fjs/asserts/types.d.ts +11 -0
- package/fjs/basen/base128/module.f.d.mts +22 -0
- package/fjs/basen/base128/module.f.mjs +51 -0
- package/fjs/basen/base128/proof.f.d.mts +4 -0
- package/fjs/basen/base128/proof.f.mjs +32 -0
- package/fjs/basen/base64/module.f.d.mts +14 -0
- package/fjs/basen/base64/module.f.mjs +75 -0
- package/fjs/basen/base64/proof.f.d.mts +19 -0
- package/fjs/basen/base64/proof.f.mjs +150 -0
- package/fjs/basen/cbase32/module.f.d.mts +18 -0
- package/fjs/basen/cbase32/module.f.mjs +61 -0
- package/fjs/basen/cbase32/proof.f.d.mts +10 -0
- package/fjs/basen/cbase32/proof.f.mjs +79 -0
- package/fjs/basen/module.f.d.mts +30 -0
- package/fjs/basen/module.f.mjs +88 -0
- package/fjs/basen/proof.f.mjs +69 -0
- package/fjs/basen/types.d.ts +14 -0
- package/fjs/bnf/data/module.f.d.mts +47 -0
- package/fjs/bnf/data/module.f.mjs +188 -0
- package/fjs/bnf/data/proof.f.d.mts +13 -0
- package/fjs/bnf/data/proof.f.mjs +159 -0
- package/fjs/bnf/data/types.d.ts +35 -0
- package/fjs/bnf/descent/module.f.d.mts +48 -0
- package/fjs/bnf/descent/module.f.mjs +289 -0
- package/fjs/bnf/descent/proof.f.d.mts +14 -0
- package/fjs/bnf/descent/proof.f.mjs +427 -0
- package/fjs/bnf/descent/types.d.ts +79 -0
- package/fjs/bnf/ll1/module.f.d.mts +67 -0
- package/fjs/bnf/ll1/module.f.mjs +341 -0
- package/fjs/bnf/ll1/proof.f.d.mts +18 -0
- package/fjs/bnf/ll1/proof.f.mjs +413 -0
- package/fjs/bnf/ll1/types.d.ts +65 -0
- package/fjs/bnf/module.f.d.mts +173 -0
- package/fjs/bnf/module.f.mjs +339 -0
- package/fjs/bnf/proof.f.d.mts +19 -0
- package/fjs/bnf/proof.f.mjs +165 -0
- package/fjs/bnf/testlib.f.d.mts +10 -0
- package/fjs/bnf/testlib.f.mjs +196 -0
- package/fjs/bnf/token_symbol/module.f.d.mts +36 -0
- package/fjs/bnf/token_symbol/module.f.mjs +63 -0
- package/fjs/bnf/token_symbol/proof.f.mjs +46 -0
- package/fjs/bnf/token_symbol/types.d.ts +27 -0
- package/fjs/bnf/types.d.ts +74 -0
- package/fjs/cas/cli/module.f.d.mts +17 -0
- package/fjs/cas/cli/module.f.mjs +73 -0
- package/fjs/cas/cli/proof.f.d.mts +20 -0
- package/fjs/cas/cli/proof.f.mjs +120 -0
- package/fjs/cas/evo/module.f.d.mts +157 -0
- package/fjs/cas/evo/module.f.mjs +563 -0
- package/fjs/cas/evo/proof.f.d.mts +55 -0
- package/fjs/cas/evo/proof.f.mjs +752 -0
- package/fjs/cas/evo/types.d.ts +111 -0
- package/fjs/cas/module.f.d.mts +68 -0
- package/fjs/cas/module.f.mjs +350 -0
- package/fjs/cas/proof.f.d.mts +29 -0
- package/fjs/cas/proof.f.mjs +371 -0
- package/fjs/cas/types.d.ts +35 -0
- package/fjs/ci/bun/module.f.d.mts +11 -0
- package/fjs/ci/bun/module.f.mjs +20 -0
- package/fjs/ci/common/module.f.d.mts +80 -0
- package/fjs/ci/common/module.f.mjs +88 -0
- package/fjs/ci/common/types.d.ts +27 -0
- package/fjs/ci/config/module.f.d.mts +45 -0
- package/fjs/ci/config/module.f.mjs +89 -0
- package/fjs/ci/deno/module.f.d.mts +16 -0
- package/fjs/ci/deno/module.f.mjs +29 -0
- package/fjs/ci/deno/proof.f.d.mts +4 -0
- package/fjs/ci/deno/proof.f.mjs +26 -0
- package/fjs/ci/module.f.d.mts +19 -0
- package/fjs/ci/module.f.mjs +89 -0
- package/fjs/ci/nix/module.f.d.mts +69 -0
- package/fjs/ci/nix/module.f.mjs +136 -0
- package/fjs/ci/nix/proof.f.d.mts +30 -0
- package/fjs/ci/nix/proof.f.mjs +146 -0
- package/fjs/ci/nix/types.d.ts +16 -0
- package/fjs/ci/node/module.f.d.mts +48 -0
- package/fjs/ci/node/module.f.mjs +139 -0
- package/fjs/ci/node/proof.f.mjs +18 -0
- package/fjs/ci/proof.f.d.mts +22 -0
- package/fjs/ci/proof.f.mjs +220 -0
- package/fjs/ci/rust/module.f.d.mts +15 -0
- package/fjs/ci/rust/module.f.mjs +108 -0
- package/fjs/ci/types.d.ts +9 -0
- package/fjs/cli/module.f.d.mts +16 -0
- package/fjs/cli/module.f.mjs +51 -0
- package/fjs/cli/proof.f.d.mts +18 -0
- package/fjs/cli/proof.f.mjs +132 -0
- package/fjs/cli/types.d.ts +15 -0
- package/fjs/common/monoid/module.f.d.mts +145 -0
- package/fjs/common/monoid/module.f.mjs +267 -0
- package/fjs/common/monoid/proof.f.d.mts +21 -0
- package/fjs/common/monoid/proof.f.mjs +142 -0
- package/fjs/common/monoid/types.d.ts +73 -0
- package/fjs/crypto/hmac/module.f.d.mts +32 -0
- package/fjs/crypto/hmac/module.f.mjs +65 -0
- package/fjs/crypto/hmac/proof.f.mjs +34 -0
- package/fjs/crypto/pow/module.f.d.mts +43 -0
- package/fjs/crypto/pow/module.f.mjs +93 -0
- package/fjs/crypto/pow/proof.f.mjs +121 -0
- package/fjs/crypto/pow/types.d.ts +19 -0
- package/fjs/crypto/secp/module.f.d.mts +61 -0
- package/fjs/crypto/secp/module.f.mjs +204 -0
- package/fjs/crypto/secp/proof.f.d.mts +11 -0
- package/fjs/crypto/secp/proof.f.mjs +139 -0
- package/fjs/crypto/secp/types.d.ts +36 -0
- package/fjs/crypto/sha2/module.f.d.mts +80 -0
- package/fjs/crypto/sha2/module.f.mjs +431 -0
- package/fjs/crypto/sha2/proof.f.d.mts +34 -0
- package/fjs/crypto/sha2/proof.f.mjs +146 -0
- package/fjs/crypto/sha2/types.d.ts +57 -0
- package/fjs/crypto/sign/module.f.d.mts +46 -0
- package/fjs/crypto/sign/module.f.mjs +189 -0
- package/fjs/crypto/sign/proof.f.d.mts +17 -0
- package/fjs/crypto/sign/proof.f.mjs +604 -0
- package/fjs/crypto/sign/types.d.ts +13 -0
- package/fjs/crypto/vdf/module.f.d.mts +34 -0
- package/fjs/crypto/vdf/module.f.mjs +86 -0
- package/fjs/crypto/vdf/proof.f.mjs +106 -0
- package/fjs/crypto/vdf/types.d.ts +18 -0
- package/fjs/dev/module.f.d.mts +59 -0
- package/fjs/dev/module.f.mjs +171 -0
- package/fjs/dev/package_json/module.f.d.mts +39 -0
- package/fjs/dev/package_json/module.f.mjs +40 -0
- package/fjs/dev/package_json/proof.f.mjs +32 -0
- package/fjs/dev/proof.f.d.mts +13 -0
- package/fjs/dev/proof.f.mjs +78 -0
- package/fjs/dev/types.d.ts +14 -0
- package/fjs/dev/update/module.f.d.mts +22 -0
- package/fjs/dev/update/module.f.mjs +37 -0
- package/fjs/dev/update/proof.f.d.mts +10 -0
- package/fjs/dev/update/proof.f.mjs +35 -0
- package/fjs/djs/ast/module.f.d.mts +35 -0
- package/fjs/djs/ast/module.f.mjs +82 -0
- package/fjs/djs/ast/proof.f.mjs +48 -0
- package/fjs/djs/ast/types.d.ts +54 -0
- package/fjs/djs/examples/input.f.mjs +4 -0
- package/fjs/djs/examples/m.f.mjs +1 -0
- package/fjs/djs/module.f.d.mts +17 -0
- package/fjs/djs/module.f.mjs +47 -0
- package/fjs/djs/parser/module.f.d.mts +78 -0
- package/fjs/djs/parser/module.f.mjs +565 -0
- package/fjs/djs/parser/proof.f.d.mts +17 -0
- package/fjs/djs/parser/proof.f.mjs +555 -0
- package/fjs/djs/parser/types.d.ts +11 -0
- package/fjs/djs/proof.f.d.mts +13 -0
- package/fjs/djs/proof.f.mjs +55 -0
- package/fjs/djs/serializer/module.f.d.mts +30 -0
- package/fjs/djs/serializer/module.f.mjs +207 -0
- package/fjs/djs/serializer/proof.f.mjs +116 -0
- package/fjs/djs/tokenizer/module.f.d.mts +65 -0
- package/fjs/djs/tokenizer/module.f.mjs +632 -0
- package/fjs/djs/tokenizer/proof.f.d.mts +17 -0
- package/fjs/djs/tokenizer/proof.f.mjs +992 -0
- package/fjs/djs/tokenizer/types.d.ts +20 -0
- package/fjs/djs/transpiler/module.f.d.mts +33 -0
- package/fjs/djs/transpiler/module.f.mjs +122 -0
- package/fjs/djs/transpiler/proof.f.mjs +76 -0
- package/fjs/djs/transpiler/types.d.ts +25 -0
- package/fjs/djs/types.d.ts +13 -0
- package/fjs/effects/eff/module.f.d.mts +20 -0
- package/fjs/effects/eff/module.f.mjs +70 -0
- package/fjs/effects/eff/proof.f.d.mts +15 -0
- package/fjs/effects/eff/proof.f.mjs +69 -0
- package/fjs/effects/eff/types.d.ts +71 -0
- package/fjs/effects/list/module.f.d.mts +32 -0
- package/fjs/effects/list/module.f.mjs +36 -0
- package/fjs/effects/list/types.d.ts +26 -0
- package/fjs/effects/memory/module.f.d.mts +34 -0
- package/fjs/effects/memory/module.f.mjs +45 -0
- package/fjs/effects/memory/proof.f.d.mts +16 -0
- package/fjs/effects/memory/proof.f.mjs +86 -0
- package/fjs/effects/memory/types.d.ts +18 -0
- package/fjs/effects/mock/module.f.d.mts +14 -0
- package/fjs/effects/mock/module.f.mjs +28 -0
- package/fjs/effects/mock/types.d.ts +15 -0
- package/fjs/effects/module.d.mts +15 -0
- package/fjs/effects/module.f.d.mts +352 -0
- package/fjs/effects/module.f.mjs +383 -0
- package/fjs/effects/module.mjs +26 -0
- package/fjs/effects/node/memory/module.d.mts +27 -0
- package/fjs/effects/node/memory/module.mjs +60 -0
- package/fjs/effects/node/memory/proof.d.mts +12 -0
- package/fjs/effects/node/memory/proof.mjs +44 -0
- package/fjs/effects/node/module.d.mts +59 -0
- package/fjs/effects/node/module.f.d.mts +177 -0
- package/fjs/effects/node/module.f.mjs +348 -0
- package/fjs/effects/node/module.mjs +381 -0
- package/fjs/effects/node/proof.f.d.mts +76 -0
- package/fjs/effects/node/proof.f.mjs +444 -0
- package/fjs/effects/node/types.d.ts +203 -0
- package/fjs/effects/node/virtual/module.f.d.mts +34 -0
- package/fjs/effects/node/virtual/module.f.mjs +435 -0
- package/fjs/effects/node/virtual/proof.f.d.mts +38 -0
- package/fjs/effects/node/virtual/proof.f.mjs +238 -0
- package/fjs/effects/node/virtual/types.d.ts +39 -0
- package/fjs/effects/proof.f.d.mts +65 -0
- package/fjs/effects/proof.f.mjs +234 -0
- package/fjs/effects/types.d.ts +115 -0
- package/fjs/emergent_testing/all.test.d.mts +8 -0
- package/fjs/emergent_testing/all.test.mjs +14 -0
- package/fjs/emergent_testing/example.f.d.mts +16 -0
- package/fjs/emergent_testing/example.f.mjs +34 -0
- package/fjs/emergent_testing/module.f.d.mts +155 -0
- package/fjs/emergent_testing/module.f.mjs +388 -0
- package/fjs/emergent_testing/proof.f.d.mts +97 -0
- package/fjs/emergent_testing/proof.f.mjs +518 -0
- package/fjs/emergent_testing/types.d.ts +53 -0
- package/fjs/fsc/bnf.f.d.mts +6 -0
- package/fjs/fsc/bnf.f.mjs +80 -0
- package/fjs/fsc/json.f.d.mts +16 -0
- package/fjs/fsc/json.f.mjs +127 -0
- package/fjs/fsc/module.f.d.mts +23 -0
- package/fjs/fsc/module.f.mjs +140 -0
- package/fjs/fsc/proof.f.mjs +119 -0
- package/fjs/fsm/module.f.d.mts +27 -0
- package/fjs/fsm/module.f.mjs +99 -0
- package/fjs/fsm/proof.f.d.mts +7 -0
- package/fjs/fsm/proof.f.mjs +149 -0
- package/fjs/js/tokenizer/module.f.d.mts +26 -0
- package/fjs/js/tokenizer/module.f.mjs +759 -0
- package/fjs/js/tokenizer/proof.f.d.mts +12 -0
- package/fjs/js/tokenizer/proof.f.mjs +681 -0
- package/fjs/js/tokenizer/types.d.ts +193 -0
- package/fjs/mcp/cas/module.f.d.mts +156 -0
- package/fjs/mcp/cas/module.f.mjs +302 -0
- package/fjs/mcp/evo/module.f.d.mts +88 -0
- package/fjs/mcp/evo/module.f.mjs +153 -0
- package/fjs/mcp/evo/proof.f.d.mts +17 -0
- package/fjs/mcp/evo/proof.f.mjs +166 -0
- package/fjs/mcp/module.f.d.mts +67 -0
- package/fjs/mcp/module.f.mjs +98 -0
- package/fjs/mcp/proof.f.d.mts +56 -0
- package/fjs/mcp/proof.f.mjs +718 -0
- package/fjs/media/html/module.f.d.mts +55 -0
- package/fjs/media/html/module.f.mjs +169 -0
- package/fjs/media/html/proof.f.d.mts +19 -0
- package/fjs/media/html/proof.f.mjs +80 -0
- package/fjs/media/html/types.d.ts +19 -0
- package/fjs/media/json/module.f.d.mts +48 -0
- package/fjs/media/json/module.f.mjs +104 -0
- package/fjs/media/json/parser/module.f.d.mts +30 -0
- package/fjs/media/json/parser/module.f.mjs +236 -0
- package/fjs/media/json/parser/proof.f.d.mts +8 -0
- package/fjs/media/json/parser/proof.f.mjs +314 -0
- package/fjs/media/json/parser/types.d.ts +39 -0
- package/fjs/media/json/proof.f.mjs +79 -0
- package/fjs/media/json/rtti/module.f.d.mts +38 -0
- package/fjs/media/json/rtti/module.f.mjs +51 -0
- package/fjs/media/json/rtti/proof.f.d.mts +29 -0
- package/fjs/media/json/rtti/proof.f.mjs +86 -0
- package/fjs/media/json/schema/module.f.d.mts +113 -0
- package/fjs/media/json/schema/module.f.mjs +309 -0
- package/fjs/media/json/schema/proof.f.d.mts +81 -0
- package/fjs/media/json/schema/proof.f.mjs +305 -0
- package/fjs/media/json/serializer/module.f.d.mts +40 -0
- package/fjs/media/json/serializer/module.f.mjs +131 -0
- package/fjs/media/json/serializer/proof.f.mjs +92 -0
- package/fjs/media/json/tokenizer/module.f.d.mts +25 -0
- package/fjs/media/json/tokenizer/module.f.mjs +96 -0
- package/fjs/media/json/tokenizer/proof.f.d.mts +8 -0
- package/fjs/media/json/tokenizer/proof.f.mjs +291 -0
- package/fjs/media/json/tokenizer/types.d.ts +17 -0
- package/fjs/media/json/types.d.ts +25 -0
- package/fjs/media/module.f.d.mts +116 -0
- package/fjs/media/module.f.mjs +152 -0
- package/fjs/media/nix/module.f.d.mts +27 -0
- package/fjs/media/nix/module.f.mjs +263 -0
- package/fjs/media/nix/proof.f.d.mts +35 -0
- package/fjs/media/nix/proof.f.mjs +184 -0
- package/fjs/media/nix/types.d.ts +22 -0
- package/fjs/media/proof.f.d.mts +19 -0
- package/fjs/media/proof.f.mjs +159 -0
- package/fjs/media/revision/module.f.d.mts +124 -0
- package/fjs/media/revision/module.f.mjs +163 -0
- package/fjs/media/revision/proof.f.d.mts +46 -0
- package/fjs/media/revision/proof.f.mjs +231 -0
- package/fjs/media/revision/types.d.ts +16 -0
- package/fjs/media/rust/module.f.d.mts +61 -0
- package/fjs/media/rust/module.f.mjs +93 -0
- package/fjs/media/rust/proof.f.d.mts +17 -0
- package/fjs/media/rust/proof.f.mjs +50 -0
- package/fjs/media/type/module.f.d.mts +114 -0
- package/fjs/media/type/module.f.mjs +265 -0
- package/fjs/media/type/proof.f.d.mts +56 -0
- package/fjs/media/type/proof.f.mjs +325 -0
- package/fjs/media/type/types.d.ts +67 -0
- package/fjs/media/types.d.ts +26 -0
- package/fjs/module.d.mts +7 -0
- package/fjs/module.f.d.mts +11 -0
- package/fjs/module.f.mjs +62 -0
- package/fjs/module.mjs +12 -0
- package/fjs/nanvm/module.f.d.mts +54 -0
- package/fjs/nanvm/module.f.mjs +240 -0
- package/fjs/nanvm/proof.f.d.mts +41 -0
- package/fjs/nanvm/proof.f.mjs +173 -0
- package/fjs/nanvm/rust/module.f.d.mts +54 -0
- package/fjs/nanvm/rust/module.f.mjs +166 -0
- package/fjs/nanvm/rust/proof.f.d.mts +21 -0
- package/fjs/nanvm/rust/proof.f.mjs +119 -0
- package/fjs/nanvm/types.d.ts +105 -0
- package/fjs/nanvm/update/module.f.d.mts +23 -0
- package/fjs/nanvm/update/module.f.mjs +33 -0
- package/fjs/nanvm/update/proof.f.d.mts +9 -0
- package/fjs/nanvm/update/proof.f.mjs +32 -0
- package/fjs/path/module.f.d.mts +63 -0
- package/fjs/path/module.f.mjs +98 -0
- package/fjs/path/proof.f.mjs +125 -0
- package/fjs/proof.f.d.mts +13 -0
- package/fjs/proof.f.mjs +51 -0
- package/fjs/protocol/json_rpc/module.f.d.mts +127 -0
- package/fjs/protocol/json_rpc/module.f.mjs +115 -0
- package/fjs/protocol/json_rpc/proof.f.d.mts +41 -0
- package/fjs/protocol/json_rpc/proof.f.mjs +105 -0
- package/fjs/protocol/json_rpc/types.d.ts +30 -0
- package/fjs/protocol/mcp/module.f.d.mts +227 -0
- package/fjs/protocol/mcp/module.f.mjs +369 -0
- package/fjs/protocol/mcp/proof.f.d.mts +57 -0
- package/fjs/protocol/mcp/proof.f.mjs +335 -0
- package/fjs/protocol/mcp/stdio/module.f.d.mts +50 -0
- package/fjs/protocol/mcp/stdio/module.f.mjs +125 -0
- package/fjs/protocol/mcp/stdio/proof.f.d.mts +20 -0
- package/fjs/protocol/mcp/stdio/proof.f.mjs +190 -0
- package/fjs/protocol/mcp/stdio/types.d.ts +14 -0
- package/fjs/protocol/mcp/types.d.ts +59 -0
- package/fjs/sul/id/module.f.d.mts +42 -0
- package/fjs/sul/id/module.f.mjs +144 -0
- package/fjs/sul/id/proof.f.mjs +72 -0
- package/fjs/sul/id/types.d.ts +8 -0
- package/fjs/sul/level/hash/module.f.d.mts +40 -0
- package/fjs/sul/level/hash/module.f.mjs +62 -0
- package/fjs/sul/level/hash/proof.f.d.mts +19 -0
- package/fjs/sul/level/hash/proof.f.mjs +134 -0
- package/fjs/sul/level/hash/types.d.ts +20 -0
- package/fjs/sul/level/literal/module.f.d.mts +57 -0
- package/fjs/sul/level/literal/module.f.mjs +121 -0
- package/fjs/sul/level/literal/proof.f.d.mts +15 -0
- package/fjs/sul/level/literal/proof.f.mjs +791 -0
- package/fjs/sul/level/literal/types.d.ts +31 -0
- package/fjs/sul/module.f.d.mts +27 -0
- package/fjs/sul/module.f.mjs +70 -0
- package/fjs/sul/proof.f.d.mts +15 -0
- package/fjs/sul/proof.f.mjs +65 -0
- package/fjs/sul/types.d.ts +19 -0
- package/fjs/text/ascii/module.f.d.mts +162 -0
- package/fjs/text/ascii/module.f.mjs +272 -0
- package/fjs/text/ascii/proof.f.d.mts +16 -0
- package/fjs/text/ascii/proof.f.mjs +48 -0
- package/fjs/text/code_point/module.f.d.mts +92 -0
- package/fjs/text/code_point/module.f.mjs +155 -0
- package/fjs/text/code_point/proof.f.d.mts +9 -0
- package/fjs/text/code_point/proof.f.mjs +108 -0
- package/fjs/text/module.f.d.mts +41 -0
- package/fjs/text/module.f.mjs +62 -0
- package/fjs/text/proof.f.d.mts +13 -0
- package/fjs/text/proof.f.mjs +51 -0
- package/fjs/text/sgr/module.f.d.mts +61 -0
- package/fjs/text/sgr/module.f.mjs +100 -0
- package/fjs/text/sgr/proof.f.d.mts +4 -0
- package/fjs/text/sgr/proof.f.mjs +42 -0
- package/fjs/text/sgr/types.d.ts +12 -0
- package/fjs/text/types.d.ts +13 -0
- package/fjs/text/utf16/module.f.d.mts +151 -0
- package/fjs/text/utf16/module.f.mjs +348 -0
- package/fjs/text/utf16/proof.f.d.mts +13 -0
- package/fjs/text/utf16/proof.f.mjs +175 -0
- package/fjs/text/utf16/types.d.ts +19 -0
- package/fjs/text/utf8/module.f.d.mts +73 -0
- package/fjs/text/utf8/module.f.mjs +278 -0
- package/fjs/text/utf8/proof.f.mjs +217 -0
- package/fjs/text/utf8/types.d.ts +26 -0
- package/fjs/types/array/module.f.d.mts +69 -0
- package/fjs/types/array/module.f.mjs +101 -0
- package/fjs/types/array/proof.f.mjs +98 -0
- package/fjs/types/array/types.d.ts +13 -0
- package/fjs/types/bigfloat/module.f.d.mts +34 -0
- package/fjs/types/bigfloat/module.f.mjs +125 -0
- package/fjs/types/bigfloat/proof.f.d.mts +6 -0
- package/fjs/types/bigfloat/proof.f.mjs +264 -0
- package/fjs/types/bigfloat/types.d.ts +6 -0
- package/fjs/types/bigint/benchmark.mjs +205 -0
- package/fjs/types/bigint/module.f.d.mts +180 -0
- package/fjs/types/bigint/module.f.mjs +290 -0
- package/fjs/types/bigint/proof.f.d.mts +39 -0
- package/fjs/types/bigint/proof.f.mjs +443 -0
- package/fjs/types/bigint/types.d.ts +14 -0
- package/fjs/types/bit_vec/module.f.d.mts +195 -0
- package/fjs/types/bit_vec/module.f.mjs +475 -0
- package/fjs/types/bit_vec/proof.f.d.mts +71 -0
- package/fjs/types/bit_vec/proof.f.mjs +521 -0
- package/fjs/types/bit_vec/types.d.ts +51 -0
- package/fjs/types/btree/find/module.f.d.mts +19 -0
- package/fjs/types/btree/find/module.f.mjs +80 -0
- package/fjs/types/btree/find/proof.f.d.mts +8 -0
- package/fjs/types/btree/find/proof.f.mjs +123 -0
- package/fjs/types/btree/find/types.d.ts +22 -0
- package/fjs/types/btree/module.f.d.mts +13 -0
- package/fjs/types/btree/module.f.mjs +40 -0
- package/fjs/types/btree/proof.f.d.mts +18 -0
- package/fjs/types/btree/proof.f.mjs +87 -0
- package/fjs/types/btree/remove/module.f.d.mts +32 -0
- package/fjs/types/btree/remove/module.f.mjs +187 -0
- package/fjs/types/btree/remove/proof.f.d.mts +12 -0
- package/fjs/types/btree/remove/proof.f.mjs +475 -0
- package/fjs/types/btree/set/module.f.d.mts +14 -0
- package/fjs/types/btree/set/module.f.mjs +116 -0
- package/fjs/types/btree/set/proof.f.d.mts +4 -0
- package/fjs/types/btree/set/proof.f.mjs +430 -0
- package/fjs/types/btree/types/module.f.d.mts +20 -0
- package/fjs/types/btree/types/module.f.mjs +20 -0
- package/fjs/types/btree/types/types.d.ts +14 -0
- package/fjs/types/byte_set/module.f.d.mts +35 -0
- package/fjs/types/byte_set/module.f.mjs +68 -0
- package/fjs/types/byte_set/proof.f.d.mts +14 -0
- package/fjs/types/byte_set/proof.f.mjs +86 -0
- package/fjs/types/byte_set/types.d.ts +6 -0
- package/fjs/types/function/compare/module.f.d.mts +45 -0
- package/fjs/types/function/compare/module.f.mjs +72 -0
- package/fjs/types/function/compare/proof.f.mjs +50 -0
- package/fjs/types/function/compare/types.d.ts +22 -0
- package/fjs/types/function/module.f.d.mts +33 -0
- package/fjs/types/function/module.f.mjs +39 -0
- package/fjs/types/function/operator/module.f.d.mts +38 -0
- package/fjs/types/function/operator/module.f.mjs +55 -0
- package/fjs/types/function/operator/proof.f.mjs +76 -0
- package/fjs/types/function/operator/types.d.ts +39 -0
- package/fjs/types/function/proof.f.mjs +16 -0
- package/fjs/types/function/types.d.ts +16 -0
- package/fjs/types/list/module.f.d.mts +95 -0
- package/fjs/types/list/module.f.mjs +311 -0
- package/fjs/types/list/proof.f.d.mts +35 -0
- package/fjs/types/list/proof.f.mjs +365 -0
- package/fjs/types/list/types.d.ts +36 -0
- package/fjs/types/map/module.f.d.mts +13 -0
- package/fjs/types/map/module.f.mjs +42 -0
- package/fjs/types/map/proof.f.mjs +25 -0
- package/fjs/types/nibble_set/module.f.d.mts +31 -0
- package/fjs/types/nibble_set/module.f.mjs +43 -0
- package/fjs/types/nibble_set/proof.f.mjs +59 -0
- package/fjs/types/nibble_set/types.d.ts +9 -0
- package/fjs/types/nominal/module.f.d.mts +10 -0
- package/fjs/types/nominal/module.f.mjs +17 -0
- package/fjs/types/nominal/proof.f.d.mts +7 -0
- package/fjs/types/nominal/proof.f.mjs +79 -0
- package/fjs/types/nominal/types.d.ts +25 -0
- package/fjs/types/nullable/module.f.d.mts +44 -0
- package/fjs/types/nullable/module.f.mjs +55 -0
- package/fjs/types/nullable/proof.f.mjs +34 -0
- package/fjs/types/nullable/types.d.ts +6 -0
- package/fjs/types/number/module.f.d.mts +27 -0
- package/fjs/types/number/module.f.mjs +56 -0
- package/fjs/types/number/proof.f.mjs +204 -0
- package/fjs/types/object/module.f.d.mts +45 -0
- package/fjs/types/object/module.f.mjs +67 -0
- package/fjs/types/object/proof.f.d.mts +28 -0
- package/fjs/types/object/proof.f.mjs +29 -0
- package/fjs/types/object/structurally_same/module.f.d.mts +39 -0
- package/fjs/types/object/structurally_same/module.f.mjs +59 -0
- package/fjs/types/object/structurally_same/proof.f.d.mts +6 -0
- package/fjs/types/object/structurally_same/proof.f.mjs +73 -0
- package/fjs/types/object/types.d.ts +50 -0
- package/fjs/types/ordered_map/module.f.d.mts +26 -0
- package/fjs/types/ordered_map/module.f.mjs +55 -0
- package/fjs/types/ordered_map/proof.f.d.mts +8 -0
- package/fjs/types/ordered_map/proof.f.mjs +91 -0
- package/fjs/types/ordered_map/types.d.ts +8 -0
- package/fjs/types/patricia_trie/module.f.d.mts +20 -0
- package/fjs/types/patricia_trie/module.f.mjs +43 -0
- package/fjs/types/patricia_trie/proof.f.d.mts +17 -0
- package/fjs/types/patricia_trie/proof.f.mjs +151 -0
- package/fjs/types/patricia_trie/types.d.ts +34 -0
- package/fjs/types/prime_field/module.f.d.mts +44 -0
- package/fjs/types/prime_field/module.f.mjs +137 -0
- package/fjs/types/prime_field/proof.f.mjs +131 -0
- package/fjs/types/prime_field/types.d.ts +38 -0
- package/fjs/types/range/module.f.d.mts +12 -0
- package/fjs/types/range/module.f.mjs +13 -0
- package/fjs/types/range/proof.f.mjs +10 -0
- package/fjs/types/range/types.d.ts +6 -0
- package/fjs/types/range_map/module.f.d.mts +78 -0
- package/fjs/types/range_map/module.f.mjs +127 -0
- package/fjs/types/range_map/proof.f.d.mts +11 -0
- package/fjs/types/range_map/proof.f.mjs +188 -0
- package/fjs/types/range_map/types.d.ts +56 -0
- package/fjs/types/range_set/module.f.d.mts +10 -0
- package/fjs/types/range_set/module.f.mjs +20 -0
- package/fjs/types/range_set/proof.f.d.mts +4 -0
- package/fjs/types/range_set/proof.f.mjs +29 -0
- package/fjs/types/result/module.d.mts +13 -0
- package/fjs/types/result/module.f.d.mts +89 -0
- package/fjs/types/result/module.f.mjs +97 -0
- package/fjs/types/result/module.mjs +30 -0
- package/fjs/types/result/proof.f.d.mts +17 -0
- package/fjs/types/result/proof.f.mjs +61 -0
- package/fjs/types/result/types.d.ts +17 -0
- package/fjs/types/rtti/common/module.f.d.mts +119 -0
- package/fjs/types/rtti/common/module.f.mjs +185 -0
- package/fjs/types/rtti/common/proof.f.d.mts +13 -0
- package/fjs/types/rtti/common/proof.f.mjs +67 -0
- package/fjs/types/rtti/common/types.d.ts +43 -0
- package/fjs/types/rtti/data/module.f.d.mts +120 -0
- package/fjs/types/rtti/data/module.f.mjs +1030 -0
- package/fjs/types/rtti/data/proof.f.d.mts +75 -0
- package/fjs/types/rtti/data/proof.f.mjs +566 -0
- package/fjs/types/rtti/data/types.d.ts +83 -0
- package/fjs/types/rtti/module.f.d.mts +83 -0
- package/fjs/types/rtti/module.f.mjs +112 -0
- package/fjs/types/rtti/parse/module.f.d.mts +47 -0
- package/fjs/types/rtti/parse/module.f.mjs +198 -0
- package/fjs/types/rtti/parse/proof.f.d.mts +122 -0
- package/fjs/types/rtti/parse/proof.f.mjs +343 -0
- package/fjs/types/rtti/parse/types.d.ts +12 -0
- package/fjs/types/rtti/proof.f.d.mts +10 -0
- package/fjs/types/rtti/proof.f.mjs +22 -0
- package/fjs/types/rtti/ts/module.f.d.mts +93 -0
- package/fjs/types/rtti/ts/module.f.mjs +296 -0
- package/fjs/types/rtti/ts/proof.f.d.mts +103 -0
- package/fjs/types/rtti/ts/proof.f.mjs +236 -0
- package/fjs/types/rtti/ts/types.d.ts +99 -0
- package/fjs/types/rtti/types.d.ts +83 -0
- package/fjs/types/rtti/validate/module.f.d.mts +41 -0
- package/fjs/types/rtti/validate/module.f.mjs +171 -0
- package/fjs/types/rtti/validate/proof.f.d.mts +125 -0
- package/fjs/types/rtti/validate/proof.f.mjs +437 -0
- package/fjs/types/rtti/validate/types.d.ts +6 -0
- package/fjs/types/sorted_list/module.f.d.mts +46 -0
- package/fjs/types/sorted_list/module.f.mjs +119 -0
- package/fjs/types/sorted_list/proof.f.d.mts +7 -0
- package/fjs/types/sorted_list/proof.f.mjs +54 -0
- package/fjs/types/sorted_list/types.d.ts +15 -0
- package/fjs/types/sorted_set/module.f.d.mts +54 -0
- package/fjs/types/sorted_set/module.f.mjs +58 -0
- package/fjs/types/sorted_set/proof.f.d.mts +9 -0
- package/fjs/types/sorted_set/proof.f.mjs +79 -0
- package/fjs/types/sorted_set/types.d.ts +6 -0
- package/fjs/types/string/module.f.d.mts +40 -0
- package/fjs/types/string/module.f.mjs +59 -0
- package/fjs/types/string/proof.f.mjs +76 -0
- package/fjs/types/string_set/module.f.d.mts +39 -0
- package/fjs/types/string_set/module.f.mjs +54 -0
- package/fjs/types/string_set/proof.f.mjs +46 -0
- package/fjs/types/string_set/types.d.ts +7 -0
- package/fjs/types/ts/module.f.d.mts +22 -0
- package/fjs/types/ts/module.f.mjs +51 -0
- package/fjs/types/ts/proof.f.d.mts +39 -0
- package/fjs/types/ts/proof.f.mjs +102 -0
- package/fjs/types/ts/types.d.ts +21 -0
- package/fjs/types/uint8array/module.f.d.mts +42 -0
- package/fjs/types/uint8array/module.f.mjs +58 -0
- package/fjs/types/uint8array/proof.f.d.mts +17 -0
- package/fjs/types/uint8array/proof.f.mjs +73 -0
- package/fjs/website/module.f.d.mts +11 -0
- package/fjs/website/module.f.mjs +25 -0
- package/fjs/website/proof.f.mjs +14 -0
- package/package.json +12 -10
- package/todo/proof.f.d.mts +22 -0
- package/todo/proof.f.mjs +59 -0
- package/fjs/asn.1/module.f.d.ts +0 -62
- package/fjs/asn.1/module.f.js +0 -278
- package/fjs/asn.1/proof.f.d.ts +0 -48
- package/fjs/asn.1/proof.f.js +0 -285
- package/fjs/asserts/module.f.d.ts +0 -36
- package/fjs/asserts/module.f.js +0 -39
- package/fjs/asserts/proof.f.d.ts +0 -11
- package/fjs/asserts/proof.f.js +0 -18
- package/fjs/base_n/module.f.d.ts +0 -45
- package/fjs/base_n/module.f.js +0 -72
- package/fjs/base_n/proof.f.js +0 -73
- package/fjs/basen/base128/module.f.d.ts +0 -20
- package/fjs/basen/base128/module.f.js +0 -43
- package/fjs/basen/base128/proof.f.js +0 -26
- package/fjs/basen/base64/module.f.d.ts +0 -9
- package/fjs/basen/base64/module.f.js +0 -71
- package/fjs/basen/base64/proof.f.d.ts +0 -16
- package/fjs/basen/base64/proof.f.js +0 -139
- package/fjs/basen/cbase32/module.f.d.ts +0 -11
- package/fjs/basen/cbase32/module.f.js +0 -55
- package/fjs/basen/cbase32/proof.f.d.ts +0 -7
- package/fjs/basen/cbase32/proof.f.js +0 -62
- package/fjs/bnf/data/module.f.d.ts +0 -52
- package/fjs/bnf/data/module.f.js +0 -143
- package/fjs/bnf/data/proof.f.d.ts +0 -8
- package/fjs/bnf/data/proof.f.js +0 -169
- package/fjs/bnf/descent/module.f.d.ts +0 -87
- package/fjs/bnf/descent/module.f.js +0 -149
- package/fjs/bnf/descent/proof.f.d.ts +0 -7
- package/fjs/bnf/descent/proof.f.js +0 -368
- package/fjs/bnf/ll1/module.f.d.ts +0 -72
- package/fjs/bnf/ll1/module.f.js +0 -155
- package/fjs/bnf/ll1/proof.f.d.ts +0 -10
- package/fjs/bnf/ll1/proof.f.js +0 -375
- package/fjs/bnf/module.f.d.ts +0 -165
- package/fjs/bnf/module.f.js +0 -174
- package/fjs/bnf/proof.f.d.ts +0 -12
- package/fjs/bnf/proof.f.js +0 -69
- package/fjs/bnf/testlib.f.d.ts +0 -3
- package/fjs/bnf/testlib.f.js +0 -138
- package/fjs/bnf/token_symbol/module.f.d.ts +0 -38
- package/fjs/bnf/token_symbol/module.f.js +0 -48
- package/fjs/bnf/token_symbol/proof.f.js +0 -37
- package/fjs/cas/cli/module.f.d.ts +0 -6
- package/fjs/cas/cli/module.f.js +0 -53
- package/fjs/cas/cli/proof.f.d.ts +0 -17
- package/fjs/cas/cli/proof.f.js +0 -112
- package/fjs/cas/evo/module.f.d.ts +0 -223
- package/fjs/cas/evo/module.f.js +0 -455
- package/fjs/cas/evo/proof.f.d.ts +0 -47
- package/fjs/cas/evo/proof.f.js +0 -707
- package/fjs/cas/module.f.d.ts +0 -64
- package/fjs/cas/module.f.js +0 -255
- package/fjs/cas/proof.f.d.ts +0 -18
- package/fjs/cas/proof.f.js +0 -305
- package/fjs/ci/bun/module.f.d.ts +0 -2
- package/fjs/ci/bun/module.f.js +0 -15
- package/fjs/ci/common/module.f.d.ts +0 -88
- package/fjs/ci/common/module.f.js +0 -63
- package/fjs/ci/config/module.f.d.ts +0 -45
- package/fjs/ci/config/module.f.js +0 -80
- package/fjs/ci/deno/module.f.d.ts +0 -10
- package/fjs/ci/deno/module.f.js +0 -28
- package/fjs/ci/deno/proof.f.d.ts +0 -5
- package/fjs/ci/deno/proof.f.js +0 -26
- package/fjs/ci/module.f.d.ts +0 -13
- package/fjs/ci/module.f.js +0 -58
- package/fjs/ci/nix/module.f.d.ts +0 -61
- package/fjs/ci/nix/module.f.js +0 -92
- package/fjs/ci/nix/proof.f.d.ts +0 -23
- package/fjs/ci/nix/proof.f.js +0 -109
- package/fjs/ci/node/module.f.d.ts +0 -28
- package/fjs/ci/node/module.f.js +0 -92
- package/fjs/ci/node/proof.f.js +0 -17
- package/fjs/ci/proof.f.d.ts +0 -18
- package/fjs/ci/proof.f.js +0 -182
- package/fjs/ci/rust/module.f.d.ts +0 -3
- package/fjs/ci/rust/module.f.js +0 -75
- package/fjs/cli/module.f.d.ts +0 -11
- package/fjs/cli/module.f.js +0 -34
- package/fjs/cli/proof.f.d.ts +0 -14
- package/fjs/cli/proof.f.js +0 -111
- package/fjs/common/monoid/module.f.d.ts +0 -126
- package/fjs/common/monoid/module.f.js +0 -88
- package/fjs/common/monoid/proof.f.d.ts +0 -9
- package/fjs/common/monoid/proof.f.js +0 -48
- package/fjs/crypto/hmac/module.f.d.ts +0 -29
- package/fjs/crypto/hmac/module.f.js +0 -56
- package/fjs/crypto/hmac/proof.f.js +0 -32
- package/fjs/crypto/pow/module.f.d.ts +0 -37
- package/fjs/crypto/pow/module.f.js +0 -72
- package/fjs/crypto/pow/proof.f.js +0 -111
- package/fjs/crypto/secp/module.f.d.ts +0 -85
- package/fjs/crypto/secp/module.f.js +0 -176
- package/fjs/crypto/secp/proof.f.d.ts +0 -8
- package/fjs/crypto/secp/proof.f.js +0 -124
- package/fjs/crypto/sha2/module.f.d.ts +0 -102
- package/fjs/crypto/sha2/module.f.js +0 -266
- package/fjs/crypto/sha2/proof.f.d.ts +0 -31
- package/fjs/crypto/sha2/proof.f.js +0 -139
- package/fjs/crypto/sign/module.f.d.ts +0 -33
- package/fjs/crypto/sign/module.f.js +0 -163
- package/fjs/crypto/sign/proof.f.d.ts +0 -11
- package/fjs/crypto/sign/proof.f.js +0 -562
- package/fjs/crypto/vdf/module.f.d.ts +0 -21
- package/fjs/crypto/vdf/module.f.js +0 -57
- package/fjs/crypto/vdf/proof.f.js +0 -94
- package/fjs/dev/module.f.d.ts +0 -57
- package/fjs/dev/module.f.js +0 -135
- package/fjs/dev/package_json/module.f.d.ts +0 -16
- package/fjs/dev/package_json/module.f.js +0 -24
- package/fjs/dev/package_json/proof.f.js +0 -28
- package/fjs/dev/proof.f.d.ts +0 -13
- package/fjs/dev/proof.f.js +0 -77
- package/fjs/dev/update/module.f.d.ts +0 -11
- package/fjs/dev/update/module.f.js +0 -20
- package/fjs/dev/update/proof.f.d.ts +0 -7
- package/fjs/dev/update/proof.f.js +0 -35
- package/fjs/djs/ast/module.f.d.ts +0 -62
- package/fjs/djs/ast/module.f.js +0 -61
- package/fjs/djs/ast/proof.f.js +0 -49
- package/fjs/djs/examples/input.f.js +0 -4
- package/fjs/djs/examples/m.f.js +0 -1
- package/fjs/djs/module.f.d.ts +0 -17
- package/fjs/djs/module.f.js +0 -22
- package/fjs/djs/parser/module.f.d.ts +0 -23
- package/fjs/djs/parser/module.f.js +0 -410
- package/fjs/djs/parser/proof.f.d.ts +0 -14
- package/fjs/djs/parser/proof.f.js +0 -556
- package/fjs/djs/proof.f.d.ts +0 -10
- package/fjs/djs/proof.f.js +0 -50
- package/fjs/djs/serializer/module.f.d.ts +0 -17
- package/fjs/djs/serializer/module.f.js +0 -173
- package/fjs/djs/serializer/proof.f.js +0 -133
- package/fjs/djs/tokenizer/module.f.d.ts +0 -24
- package/fjs/djs/tokenizer/module.f.js +0 -472
- package/fjs/djs/tokenizer/proof.f.d.ts +0 -14
- package/fjs/djs/tokenizer/proof.f.js +0 -1211
- package/fjs/djs/transpiler/module.f.d.ts +0 -41
- package/fjs/djs/transpiler/module.f.js +0 -88
- package/fjs/djs/transpiler/proof.f.js +0 -67
- package/fjs/effects/eff/module.f.d.ts +0 -72
- package/fjs/effects/eff/module.f.js +0 -46
- package/fjs/effects/eff/proof.f.d.ts +0 -11
- package/fjs/effects/eff/proof.f.js +0 -58
- package/fjs/effects/list/module.f.d.ts +0 -37
- package/fjs/effects/list/module.f.js +0 -17
- package/fjs/effects/memory/module.f.d.ts +0 -37
- package/fjs/effects/memory/module.f.js +0 -24
- package/fjs/effects/memory/proof.f.d.ts +0 -6
- package/fjs/effects/memory/proof.f.js +0 -50
- package/fjs/effects/mock/module.f.d.ts +0 -16
- package/fjs/effects/mock/module.f.js +0 -20
- package/fjs/effects/module.d.ts +0 -2
- package/fjs/effects/module.f.d.ts +0 -408
- package/fjs/effects/module.f.js +0 -312
- package/fjs/effects/module.js +0 -11
- package/fjs/effects/node/memory/module.d.ts +0 -20
- package/fjs/effects/node/memory/module.js +0 -44
- package/fjs/effects/node/memory/proof.d.ts +0 -10
- package/fjs/effects/node/memory/proof.js +0 -29
- package/fjs/effects/node/module.d.ts +0 -20
- package/fjs/effects/node/module.f.d.ts +0 -300
- package/fjs/effects/node/module.f.js +0 -171
- package/fjs/effects/node/module.js +0 -305
- package/fjs/effects/node/proof.f.d.ts +0 -69
- package/fjs/effects/node/proof.f.js +0 -409
- package/fjs/effects/node/virtual/module.f.d.ts +0 -49
- package/fjs/effects/node/virtual/module.f.js +0 -440
- package/fjs/effects/node/virtual/proof.f.d.ts +0 -33
- package/fjs/effects/node/virtual/proof.f.js +0 -186
- package/fjs/effects/proof.f.d.ts +0 -56
- package/fjs/effects/proof.f.js +0 -200
- package/fjs/emergent_testing/all.test.js +0 -5
- package/fjs/emergent_testing/example.f.d.ts +0 -13
- package/fjs/emergent_testing/example.f.js +0 -31
- package/fjs/emergent_testing/module.f.d.ts +0 -140
- package/fjs/emergent_testing/module.f.js +0 -289
- package/fjs/emergent_testing/proof.f.d.ts +0 -67
- package/fjs/emergent_testing/proof.f.js +0 -416
- package/fjs/emergent_testing/scenarios/all.d.ts +0 -1
- package/fjs/emergent_testing/scenarios/all.js +0 -1
- package/fjs/emergent_testing/scenarios/async-subtests.fail.d.ts +0 -6
- package/fjs/emergent_testing/scenarios/async-subtests.fail.js +0 -9
- package/fjs/emergent_testing/scenarios/async-subtests.pass.d.ts +0 -6
- package/fjs/emergent_testing/scenarios/async-subtests.pass.js +0 -9
- package/fjs/emergent_testing/scenarios/async.fail.d.ts +0 -3
- package/fjs/emergent_testing/scenarios/async.fail.js +0 -6
- package/fjs/emergent_testing/scenarios/async.pass.d.ts +0 -3
- package/fjs/emergent_testing/scenarios/async.pass.js +0 -5
- package/fjs/emergent_testing/scenarios/fail.fail.d.ts +0 -3
- package/fjs/emergent_testing/scenarios/fail.fail.js +0 -3
- package/fjs/emergent_testing/scenarios/return-value.pass.d.ts +0 -3
- package/fjs/emergent_testing/scenarios/return-value.pass.js +0 -4
- package/fjs/emergent_testing/scenarios/thenable.pass.d.ts +0 -5
- package/fjs/emergent_testing/scenarios/thenable.pass.js +0 -11
- package/fjs/emergent_testing/scenarios/thenable2.pass.d.ts +0 -5
- package/fjs/emergent_testing/scenarios/thenable2.pass.js +0 -3
- package/fjs/emergent_testing/scenarios/throw.pass.d.ts +0 -5
- package/fjs/emergent_testing/scenarios/throw.pass.js +0 -3
- package/fjs/fsc/bnf.f.d.ts +0 -2
- package/fjs/fsc/bnf.f.js +0 -42
- package/fjs/fsc/json.f.d.ts +0 -7
- package/fjs/fsc/json.f.js +0 -64
- package/fjs/fsc/module.f.d.ts +0 -11
- package/fjs/fsc/module.f.js +0 -73
- package/fjs/fsc/proof.f.js +0 -104
- package/fjs/fsm/module.f.d.ts +0 -17
- package/fjs/fsm/module.f.js +0 -55
- package/fjs/fsm/proof.f.d.ts +0 -4
- package/fjs/fsm/proof.f.js +0 -126
- package/fjs/js/tokenizer/module.f.d.ts +0 -104
- package/fjs/js/tokenizer/module.f.js +0 -547
- package/fjs/js/tokenizer/proof.f.d.ts +0 -9
- package/fjs/js/tokenizer/proof.f.js +0 -986
- package/fjs/mcp/cas/module.f.d.ts +0 -27
- package/fjs/mcp/cas/module.f.js +0 -232
- package/fjs/mcp/evo/module.f.d.ts +0 -32
- package/fjs/mcp/evo/module.f.js +0 -99
- package/fjs/mcp/evo/proof.f.d.ts +0 -12
- package/fjs/mcp/evo/proof.f.js +0 -147
- package/fjs/mcp/module.f.d.ts +0 -56
- package/fjs/mcp/module.f.js +0 -69
- package/fjs/mcp/proof.f.d.ts +0 -45
- package/fjs/mcp/proof.f.js +0 -535
- package/fjs/media/html/module.f.d.ts +0 -52
- package/fjs/media/html/module.f.js +0 -117
- package/fjs/media/html/proof.f.d.ts +0 -16
- package/fjs/media/html/proof.f.js +0 -65
- package/fjs/media/json/module.f.d.ts +0 -64
- package/fjs/media/json/module.f.js +0 -109
- package/fjs/media/json/parser/module.f.d.ts +0 -21
- package/fjs/media/json/parser/module.f.js +0 -194
- package/fjs/media/json/parser/proof.f.d.ts +0 -5
- package/fjs/media/json/parser/proof.f.js +0 -314
- package/fjs/media/json/proof.f.js +0 -98
- package/fjs/media/json/schema/module.f.d.ts +0 -78
- package/fjs/media/json/schema/module.f.js +0 -96
- package/fjs/media/json/schema/proof.f.d.ts +0 -36
- package/fjs/media/json/schema/proof.f.js +0 -83
- package/fjs/media/json/serializer/module.f.d.ts +0 -28
- package/fjs/media/json/serializer/module.f.js +0 -73
- package/fjs/media/json/serializer/proof.f.js +0 -94
- package/fjs/media/json/tokenizer/module.f.d.ts +0 -15
- package/fjs/media/json/tokenizer/module.f.js +0 -63
- package/fjs/media/json/tokenizer/proof.f.d.ts +0 -5
- package/fjs/media/json/tokenizer/proof.f.js +0 -417
- package/fjs/media/module.f.d.ts +0 -119
- package/fjs/media/module.f.js +0 -88
- package/fjs/media/nix/module.f.d.ts +0 -30
- package/fjs/media/nix/module.f.js +0 -166
- package/fjs/media/nix/proof.f.d.ts +0 -32
- package/fjs/media/nix/proof.f.js +0 -127
- package/fjs/media/proof.f.d.ts +0 -19
- package/fjs/media/proof.f.js +0 -127
- package/fjs/media/revision/module.f.d.ts +0 -94
- package/fjs/media/revision/module.f.js +0 -143
- package/fjs/media/revision/proof.f.d.ts +0 -42
- package/fjs/media/revision/proof.f.js +0 -190
- package/fjs/media/type/module.f.d.ts +0 -135
- package/fjs/media/type/module.f.js +0 -231
- package/fjs/media/type/proof.f.d.ts +0 -40
- package/fjs/media/type/proof.f.js +0 -213
- package/fjs/module.d.ts +0 -2
- package/fjs/module.f.d.ts +0 -2
- package/fjs/module.f.js +0 -50
- package/fjs/module.js +0 -4
- package/fjs/path/module.f.d.ts +0 -46
- package/fjs/path/module.f.js +0 -71
- package/fjs/path/proof.f.js +0 -119
- package/fjs/proof.f.d.ts +0 -9
- package/fjs/proof.f.js +0 -38
- package/fjs/protocol/json_rpc/module.f.d.ts +0 -114
- package/fjs/protocol/json_rpc/module.f.js +0 -89
- package/fjs/protocol/json_rpc/proof.f.d.ts +0 -35
- package/fjs/protocol/json_rpc/proof.f.js +0 -68
- package/fjs/protocol/mcp/module.f.d.ts +0 -239
- package/fjs/protocol/mcp/module.f.js +0 -272
- package/fjs/protocol/mcp/proof.f.d.ts +0 -34
- package/fjs/protocol/mcp/proof.f.js +0 -208
- package/fjs/protocol/mcp/stdio/module.f.d.ts +0 -47
- package/fjs/protocol/mcp/stdio/module.f.js +0 -78
- package/fjs/protocol/mcp/stdio/proof.f.d.ts +0 -13
- package/fjs/protocol/mcp/stdio/proof.f.js +0 -143
- package/fjs/sul/id/module.f.d.ts +0 -33
- package/fjs/sul/id/module.f.js +0 -93
- package/fjs/sul/id/proof.f.js +0 -61
- package/fjs/sul/level/hash/module.f.d.ts +0 -38
- package/fjs/sul/level/hash/module.f.js +0 -43
- package/fjs/sul/level/hash/proof.f.d.ts +0 -13
- package/fjs/sul/level/hash/proof.f.js +0 -112
- package/fjs/sul/level/literal/module.f.d.ts +0 -64
- package/fjs/sul/level/literal/module.f.js +0 -88
- package/fjs/sul/level/literal/proof.f.d.ts +0 -12
- package/fjs/sul/level/literal/proof.f.js +0 -714
- package/fjs/sul/module.f.d.ts +0 -23
- package/fjs/sul/module.f.js +0 -46
- package/fjs/sul/proof.f.d.ts +0 -9
- package/fjs/sul/proof.f.js +0 -47
- package/fjs/text/ascii/module.f.d.ts +0 -136
- package/fjs/text/ascii/module.f.js +0 -154
- package/fjs/text/ascii/proof.f.d.ts +0 -6
- package/fjs/text/ascii/proof.f.js +0 -14
- package/fjs/text/code_point/module.f.d.ts +0 -65
- package/fjs/text/code_point/module.f.js +0 -103
- package/fjs/text/code_point/proof.f.d.ts +0 -8
- package/fjs/text/code_point/proof.f.js +0 -72
- package/fjs/text/module.f.d.ts +0 -40
- package/fjs/text/module.f.js +0 -43
- package/fjs/text/proof.f.d.ts +0 -10
- package/fjs/text/proof.f.js +0 -44
- package/fjs/text/sgr/module.f.d.ts +0 -53
- package/fjs/text/sgr/module.f.js +0 -63
- package/fjs/text/sgr/proof.f.js +0 -33
- package/fjs/text/utf16/module.f.d.ts +0 -161
- package/fjs/text/utf16/module.f.js +0 -311
- package/fjs/text/utf16/proof.f.d.ts +0 -10
- package/fjs/text/utf16/proof.f.js +0 -144
- package/fjs/text/utf8/module.f.d.ts +0 -83
- package/fjs/text/utf8/module.f.js +0 -247
- package/fjs/text/utf8/proof.f.js +0 -217
- package/fjs/types/array/module.f.d.ts +0 -49
- package/fjs/types/array/module.f.js +0 -42
- package/fjs/types/array/proof.f.js +0 -92
- package/fjs/types/bigfloat/module.f.d.ts +0 -6
- package/fjs/types/bigfloat/module.f.js +0 -69
- package/fjs/types/bigfloat/proof.f.d.ts +0 -5
- package/fjs/types/bigfloat/proof.f.js +0 -217
- package/fjs/types/bigint/module.f.d.ts +0 -172
- package/fjs/types/bigint/module.f.js +0 -251
- package/fjs/types/bigint/proof.f.d.ts +0 -37
- package/fjs/types/bigint/proof.f.js +0 -400
- package/fjs/types/bit_vec/module.f.d.ts +0 -302
- package/fjs/types/bit_vec/module.f.js +0 -375
- package/fjs/types/bit_vec/proof.f.d.ts +0 -65
- package/fjs/types/bit_vec/proof.f.js +0 -465
- package/fjs/types/btree/find/module.f.d.ts +0 -25
- package/fjs/types/btree/find/module.f.js +0 -80
- package/fjs/types/btree/find/proof.f.d.ts +0 -3
- package/fjs/types/btree/find/proof.f.js +0 -108
- package/fjs/types/btree/module.f.d.ts +0 -9
- package/fjs/types/btree/module.f.js +0 -33
- package/fjs/types/btree/proof.f.d.ts +0 -13
- package/fjs/types/btree/proof.f.js +0 -64
- package/fjs/types/btree/remove/module.f.d.ts +0 -14
- package/fjs/types/btree/remove/module.f.js +0 -186
- package/fjs/types/btree/remove/proof.f.d.ts +0 -9
- package/fjs/types/btree/remove/proof.f.js +0 -484
- package/fjs/types/btree/set/module.f.d.ts +0 -8
- package/fjs/types/btree/set/module.f.js +0 -128
- package/fjs/types/btree/set/proof.f.d.ts +0 -1
- package/fjs/types/btree/set/proof.f.js +0 -368
- package/fjs/types/btree/types/module.f.d.ts +0 -23
- package/fjs/types/btree/types/module.f.js +0 -9
- package/fjs/types/byte_set/module.f.d.ts +0 -16
- package/fjs/types/byte_set/module.f.js +0 -30
- package/fjs/types/byte_set/proof.f.d.ts +0 -11
- package/fjs/types/byte_set/proof.f.js +0 -79
- package/fjs/types/function/compare/module.f.d.ts +0 -49
- package/fjs/types/function/compare/module.f.js +0 -51
- package/fjs/types/function/compare/proof.f.js +0 -47
- package/fjs/types/function/module.f.d.ts +0 -28
- package/fjs/types/function/module.f.js +0 -19
- package/fjs/types/function/operator/module.f.d.ts +0 -48
- package/fjs/types/function/operator/module.f.js +0 -16
- package/fjs/types/function/operator/proof.f.js +0 -53
- package/fjs/types/function/proof.f.js +0 -10
- package/fjs/types/list/module.f.d.ts +0 -75
- package/fjs/types/list/module.f.js +0 -190
- package/fjs/types/list/proof.f.d.ts +0 -31
- package/fjs/types/list/proof.f.js +0 -330
- package/fjs/types/map/module.f.d.ts +0 -2
- package/fjs/types/map/module.f.js +0 -22
- package/fjs/types/map/proof.f.js +0 -22
- package/fjs/types/nibble_set/module.f.d.ts +0 -27
- package/fjs/types/nibble_set/module.f.js +0 -25
- package/fjs/types/nibble_set/proof.f.js +0 -60
- package/fjs/types/nominal/module.f.d.ts +0 -22
- package/fjs/types/nominal/module.f.js +0 -13
- package/fjs/types/nominal/proof.f.d.ts +0 -4
- package/fjs/types/nominal/proof.f.js +0 -48
- package/fjs/types/nullable/module.f.d.ts +0 -21
- package/fjs/types/nullable/module.f.js +0 -29
- package/fjs/types/nullable/proof.f.d.ts +0 -1
- package/fjs/types/nullable/proof.f.js +0 -29
- package/fjs/types/number/module.f.d.ts +0 -16
- package/fjs/types/number/module.f.js +0 -30
- package/fjs/types/number/proof.f.js +0 -124
- package/fjs/types/object/module.f.d.ts +0 -54
- package/fjs/types/object/module.f.js +0 -25
- package/fjs/types/object/proof.f.d.ts +0 -4
- package/fjs/types/object/proof.f.js +0 -14
- package/fjs/types/option/module.f.js +0 -6
- package/fjs/types/ordered_map/module.f.d.ts +0 -17
- package/fjs/types/ordered_map/module.f.js +0 -22
- package/fjs/types/ordered_map/proof.f.d.ts +0 -5
- package/fjs/types/ordered_map/proof.f.js +0 -73
- package/fjs/types/patricia_trie/module.f.d.ts +0 -25
- package/fjs/types/patricia_trie/module.f.js +0 -35
- package/fjs/types/patricia_trie/proof.f.d.ts +0 -13
- package/fjs/types/patricia_trie/proof.f.js +0 -121
- package/fjs/types/phantom/module.f.js +0 -11
- package/fjs/types/prime_field/module.f.d.ts +0 -62
- package/fjs/types/prime_field/module.f.js +0 -112
- package/fjs/types/prime_field/proof.f.js +0 -128
- package/fjs/types/range/module.f.d.ts +0 -8
- package/fjs/types/range/module.f.js +0 -2
- package/fjs/types/range/proof.f.d.ts +0 -1
- package/fjs/types/range/proof.f.js +0 -9
- package/fjs/types/range_map/module.f.d.ts +0 -92
- package/fjs/types/range_map/module.f.js +0 -82
- package/fjs/types/range_map/proof.f.d.ts +0 -6
- package/fjs/types/range_map/proof.f.js +0 -151
- package/fjs/types/range_set/module.f.d.ts +0 -5
- package/fjs/types/range_set/module.f.js +0 -16
- package/fjs/types/range_set/proof.f.d.ts +0 -1
- package/fjs/types/range_set/proof.f.js +0 -19
- package/fjs/types/result/module.d.ts +0 -3
- package/fjs/types/result/module.f.d.ts +0 -61
- package/fjs/types/result/module.f.js +0 -54
- package/fjs/types/result/module.js +0 -19
- package/fjs/types/result/proof.f.d.ts +0 -12
- package/fjs/types/result/proof.f.js +0 -31
- package/fjs/types/rtti/common/module.f.d.ts +0 -121
- package/fjs/types/rtti/common/module.f.js +0 -94
- package/fjs/types/rtti/common/proof.f.d.ts +0 -8
- package/fjs/types/rtti/common/proof.f.js +0 -51
- package/fjs/types/rtti/module.f.d.ts +0 -75
- package/fjs/types/rtti/module.f.js +0 -34
- package/fjs/types/rtti/parse/module.f.d.ts +0 -36
- package/fjs/types/rtti/parse/module.f.js +0 -114
- package/fjs/types/rtti/parse/proof.f.d.ts +0 -115
- package/fjs/types/rtti/parse/proof.f.js +0 -334
- package/fjs/types/rtti/proof.f.d.ts +0 -5
- package/fjs/types/rtti/proof.f.js +0 -16
- package/fjs/types/rtti/ts/module.f.d.ts +0 -118
- package/fjs/types/rtti/ts/module.f.js +0 -59
- package/fjs/types/rtti/ts/proof.f.d.ts +0 -59
- package/fjs/types/rtti/ts/proof.f.js +0 -75
- package/fjs/types/rtti/validate/module.f.d.ts +0 -4
- package/fjs/types/rtti/validate/module.f.js +0 -74
- package/fjs/types/rtti/validate/proof.f.d.ts +0 -118
- package/fjs/types/rtti/validate/proof.f.js +0 -349
- package/fjs/types/sorted_list/module.f.d.ts +0 -26
- package/fjs/types/sorted_list/module.f.js +0 -51
- package/fjs/types/sorted_list/proof.f.d.ts +0 -4
- package/fjs/types/sorted_list/proof.f.js +0 -46
- package/fjs/types/sorted_set/module.f.d.ts +0 -33
- package/fjs/types/sorted_set/module.f.js +0 -5
- package/fjs/types/sorted_set/proof.f.d.ts +0 -6
- package/fjs/types/sorted_set/proof.f.js +0 -67
- package/fjs/types/string/module.f.d.ts +0 -24
- package/fjs/types/string/module.f.js +0 -35
- package/fjs/types/string/proof.f.js +0 -77
- package/fjs/types/string_set/module.f.d.ts +0 -30
- package/fjs/types/string_set/module.f.js +0 -37
- package/fjs/types/string_set/proof.f.js +0 -43
- package/fjs/types/ts/module.f.d.ts +0 -23
- package/fjs/types/ts/module.f.js +0 -27
- package/fjs/types/ts/proof.f.d.ts +0 -38
- package/fjs/types/ts/proof.f.js +0 -86
- package/fjs/types/uint8array/module.f.d.ts +0 -13
- package/fjs/types/uint8array/module.f.js +0 -34
- package/fjs/types/uint8array/proof.f.d.ts +0 -17
- package/fjs/types/uint8array/proof.f.js +0 -64
- package/fjs/website/module.f.d.ts +0 -3
- package/fjs/website/module.f.js +0 -14
- package/fjs/website/proof.f.js +0 -13
- package/nanvm-lib/tests/proof.f.d.ts +0 -122
- package/nanvm-lib/tests/proof.f.js +0 -330
- package/todo/031-json.f.d.ts +0 -1
- package/todo/031-json.f.js +0 -241
- package/todo/proof.f.d.ts +0 -20
- package/todo/proof.f.js +0 -62
- /package/fjs/{base_n/proof.f.d.ts → basen/proof.f.d.mts} +0 -0
- /package/fjs/bnf/token_symbol/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/ci/node/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/crypto/hmac/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/crypto/pow/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/crypto/vdf/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/dev/package_json/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/ast/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/examples/{input.f.d.ts → input.f.d.mts} +0 -0
- /package/fjs/djs/examples/{m.f.d.ts → m.f.d.mts} +0 -0
- /package/fjs/djs/serializer/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/transpiler/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/fsc/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/json/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/json/serializer/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/path/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/sul/id/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/utf8/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/array/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/{emergent_testing/all.test.d.ts → types/bigint/benchmark.d.mts} +0 -0
- /package/fjs/{basen/base128/proof.f.d.ts → types/function/compare/proof.f.d.mts} +0 -0
- /package/fjs/types/function/operator/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/function/{compare/proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/map/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/nibble_set/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/{text/sgr/proof.f.d.ts → types/nullable/proof.f.d.mts} +0 -0
- /package/fjs/types/number/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/option/{module.f.d.ts → types.d.ts} +0 -0
- /package/fjs/types/phantom/{module.f.d.ts → types.d.ts} +0 -0
- /package/fjs/types/prime_field/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/{function/proof.f.d.ts → range/proof.f.d.mts} +0 -0
- /package/fjs/types/string/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/string_set/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/website/{proof.f.d.ts → proof.f.d.mts} +0 -0
package/fjs/cli/proof.f.js
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import { pure } from '../effects/module.f.js';
|
|
2
|
-
import { defaultNodeProgramOptions, emptyState, virtual } from '../effects/node/virtual/module.f.js';
|
|
3
|
-
import { dispatch } from './module.f.js';
|
|
4
|
-
import { assert, assertEq } from '../asserts/module.f.js';
|
|
5
|
-
const makeOptions = (args) => ({ ...defaultNodeProgramOptions, args });
|
|
6
|
-
const echoCommands = [
|
|
7
|
-
{
|
|
8
|
-
names: ['echo', 'e'],
|
|
9
|
-
description: 'Print the first argument',
|
|
10
|
-
handler: ({ args: [arg = ''] }) => pure(arg.length),
|
|
11
|
-
},
|
|
12
|
-
];
|
|
13
|
-
const run = (commands) => (args) => virtual(emptyState)(dispatch(commands)(makeOptions(args)));
|
|
14
|
-
export const proof = {
|
|
15
|
-
knownCommand: () => {
|
|
16
|
-
const [, code] = run(echoCommands)(['echo', 'hello']);
|
|
17
|
-
assertEq(code, 5, ['expected length 5', code]);
|
|
18
|
-
},
|
|
19
|
-
alias: () => {
|
|
20
|
-
const [, code] = run(echoCommands)(['e', 'hi']);
|
|
21
|
-
assertEq(code, 2, ['expected length 2', code]);
|
|
22
|
-
},
|
|
23
|
-
noArgs: () => {
|
|
24
|
-
const [state, code] = run(echoCommands)([]);
|
|
25
|
-
assertEq(code, 1, ['expected exit 1', code]);
|
|
26
|
-
assert(state.stderr.length !== 0, 'expected error in stderr');
|
|
27
|
-
},
|
|
28
|
-
unknownCommand: () => {
|
|
29
|
-
const [state, code] = run(echoCommands)(['bogus']);
|
|
30
|
-
assertEq(code, 1, ['expected exit 1', code]);
|
|
31
|
-
assert(state.stderr.length !== 0, 'expected error in stderr');
|
|
32
|
-
},
|
|
33
|
-
help: () => {
|
|
34
|
-
const [state, code] = run(echoCommands)(['help']);
|
|
35
|
-
assertEq(code, 0, ['expected exit 0', code]);
|
|
36
|
-
assert(state.stdout.includes('echo'), 'expected command name in stdout');
|
|
37
|
-
assert(state.stdout.includes('help'), 'expected help entry in stdout');
|
|
38
|
-
},
|
|
39
|
-
errorIncludesAvailable: () => {
|
|
40
|
-
const [state] = run(echoCommands)(['bogus']);
|
|
41
|
-
assert(state.stderr.includes('echo'), 'expected available commands in error');
|
|
42
|
-
},
|
|
43
|
-
handlerReceivesRemainingArgs: () => {
|
|
44
|
-
const captured = [];
|
|
45
|
-
const commands = [{
|
|
46
|
-
names: ['grab'],
|
|
47
|
-
description: 'Capture args',
|
|
48
|
-
handler: ({ args }) => {
|
|
49
|
-
captured.push(...args);
|
|
50
|
-
return pure(0);
|
|
51
|
-
},
|
|
52
|
-
}];
|
|
53
|
-
run(commands)(['grab', 'a', 'b', 'c']);
|
|
54
|
-
assertEq(captured.join(','), 'a,b,c', ['unexpected args', captured]);
|
|
55
|
-
},
|
|
56
|
-
nestedCommands: () => {
|
|
57
|
-
const inner = [{
|
|
58
|
-
names: ['ping'],
|
|
59
|
-
description: 'Inner ping',
|
|
60
|
-
handler: () => pure(42),
|
|
61
|
-
}];
|
|
62
|
-
const outer = [{
|
|
63
|
-
names: ['sub'],
|
|
64
|
-
description: 'Subcommand group',
|
|
65
|
-
handler: inner,
|
|
66
|
-
}];
|
|
67
|
-
const [, code] = run(outer)(['sub', 'ping']);
|
|
68
|
-
assertEq(code, 42, ['expected 42', code]);
|
|
69
|
-
},
|
|
70
|
-
nestedHelp: () => {
|
|
71
|
-
const inner = [{
|
|
72
|
-
names: ['ping'],
|
|
73
|
-
description: 'Inner ping',
|
|
74
|
-
handler: () => pure(0),
|
|
75
|
-
}];
|
|
76
|
-
const outer = [{
|
|
77
|
-
names: ['sub'],
|
|
78
|
-
description: 'Subcommand group',
|
|
79
|
-
handler: inner,
|
|
80
|
-
}];
|
|
81
|
-
const [state, code] = run(outer)(['sub', 'help']);
|
|
82
|
-
assertEq(code, 0, ['expected exit 0', code]);
|
|
83
|
-
assert(state.stdout.includes('ping'), 'expected inner command in help');
|
|
84
|
-
},
|
|
85
|
-
prototypeNameIsUnknownCommand: () => {
|
|
86
|
-
const [state, code] = run(echoCommands)(['toString']);
|
|
87
|
-
assertEq(code, 1, ['expected exit 1 for prototype-name command', code]);
|
|
88
|
-
assert(state.stderr.includes('unknown command'), 'expected unknown-command error in stderr');
|
|
89
|
-
},
|
|
90
|
-
helpPrototypeSafe: () => {
|
|
91
|
-
const [state, code] = run(echoCommands)(['help', 'toString']);
|
|
92
|
-
assertEq(code, 0, ['expected exit 0, not a throw', code]);
|
|
93
|
-
assert(state.stdout.includes('echo'), 'expected top-level help for unknown target');
|
|
94
|
-
},
|
|
95
|
-
helpWithTarget: () => {
|
|
96
|
-
const inner = [{
|
|
97
|
-
names: ['ping'],
|
|
98
|
-
description: 'Inner ping',
|
|
99
|
-
handler: () => pure(0),
|
|
100
|
-
}];
|
|
101
|
-
const outer = [{
|
|
102
|
-
names: ['sub'],
|
|
103
|
-
description: 'Subcommand group',
|
|
104
|
-
handler: inner,
|
|
105
|
-
}];
|
|
106
|
-
const [state, code] = run(outer)(['help', 'sub']);
|
|
107
|
-
assertEq(code, 0, ['expected exit 0', code]);
|
|
108
|
-
assert(state.stdout.includes('ping'), 'expected inner command in help');
|
|
109
|
-
assert(!(state.stdout.includes('Subcommand group')), 'expected inner help, not outer');
|
|
110
|
-
},
|
|
111
|
-
};
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Monoids: the `Monoid<T>` algebraic structure (identity plus associative
|
|
3
|
-
* binary operation), `repeat`, which applies the operation `n` times using
|
|
4
|
-
* exponentiation by squaring, and `fold`, which applies it across every element
|
|
5
|
-
* of a list.
|
|
6
|
-
*
|
|
7
|
-
* @module
|
|
8
|
-
*/
|
|
9
|
-
import type { Fold, Reduce } from '../../types/function/operator/module.f.ts';
|
|
10
|
-
import { type List } from '../../types/list/module.f.ts';
|
|
11
|
-
/**
|
|
12
|
-
* Represents a monoid, an algebraic structure with a binary operation
|
|
13
|
-
* and an identity (neutral) element.
|
|
14
|
-
*
|
|
15
|
-
* A monoid satisfies the following properties:
|
|
16
|
-
* 1. **Associativity**: The operation must be associative.
|
|
17
|
-
* For all `a`, `b`, and `c` in the set, `(a operation b) operation c = a operation (b operation c)`.
|
|
18
|
-
* {@link https://en.wikipedia.org/wiki/Associative_property Learn more about associativity}.
|
|
19
|
-
* 2. **Identity Element**: There exists an element (called the identity) such that,
|
|
20
|
-
* when combined with any other element under the operation, it leaves the other element unchanged.
|
|
21
|
-
* {@link https://en.wikipedia.org/wiki/Identity_element Learn more about identity elements}.
|
|
22
|
-
*
|
|
23
|
-
* Learn more about monoids: {@link https://en.wikipedia.org/wiki/Monoid}.
|
|
24
|
-
*
|
|
25
|
-
* @template T The type of the elements in the monoid.
|
|
26
|
-
*/
|
|
27
|
-
export type Monoid<T> = {
|
|
28
|
-
/**
|
|
29
|
-
* The identity (neutral) element for the monoid.
|
|
30
|
-
* When combined with any value under the `operation`, it leaves the other value unchanged.
|
|
31
|
-
*
|
|
32
|
-
* Examples:
|
|
33
|
-
* - `0` for addition
|
|
34
|
-
* - `1` for multiplication
|
|
35
|
-
* - `""` for string concatenation
|
|
36
|
-
* - `[]` for array concatenation
|
|
37
|
-
*
|
|
38
|
-
* Learn more: {@link https://en.wikipedia.org/wiki/Identity_element}
|
|
39
|
-
*/
|
|
40
|
-
readonly identity: T;
|
|
41
|
-
/**
|
|
42
|
-
* The associative binary operation of the monoid.
|
|
43
|
-
* Takes one value of type `T` and returns a function that takes another value of type `T`,
|
|
44
|
-
* producing a result of type `T`.
|
|
45
|
-
*
|
|
46
|
-
* Examples:
|
|
47
|
-
* - `(a, b) => a + b` for addition
|
|
48
|
-
* - `(a, b) => a * b` for multiplication
|
|
49
|
-
* - `(a, b) => a.concat(b)` for arrays or strings
|
|
50
|
-
*
|
|
51
|
-
* Learn more: {@link https://en.wikipedia.org/wiki/Binary_operation}
|
|
52
|
-
*/
|
|
53
|
-
readonly operation: Reduce<T>;
|
|
54
|
-
};
|
|
55
|
-
/**
|
|
56
|
-
* Repeats a monoid operation `n` times on the given element `a`.
|
|
57
|
-
* This function efficiently performs the operation using exponentiation by squaring.
|
|
58
|
-
*
|
|
59
|
-
* @template T The type of the elements in the monoid.
|
|
60
|
-
* @param monoid The monoid structure, including the identity and binary operation.
|
|
61
|
-
* @returns A function that takes an element `a` and a repetition count `n`,
|
|
62
|
-
* and returns the result of applying the operation `n` times.
|
|
63
|
-
*
|
|
64
|
-
* See also {@link https://en.wikipedia.org/wiki/Exponentiation_by_squaring}.
|
|
65
|
-
*
|
|
66
|
-
* @example
|
|
67
|
-
*
|
|
68
|
-
* ```ts
|
|
69
|
-
* const add: Monoid<number> = {
|
|
70
|
-
* identity: 0,
|
|
71
|
-
* operation: a => b => a + b,
|
|
72
|
-
* };
|
|
73
|
-
*
|
|
74
|
-
* const resultAdd = repeat(add)(10n)(2) // 20
|
|
75
|
-
*
|
|
76
|
-
* const concat: Monoid<string> = {
|
|
77
|
-
* identity: '',
|
|
78
|
-
* operation: a => b => a + b,
|
|
79
|
-
* };
|
|
80
|
-
*
|
|
81
|
-
* const resultConcat = repeat(concat)(3n)('ha') // 'hahaha'
|
|
82
|
-
* ```
|
|
83
|
-
*/
|
|
84
|
-
export declare const repeat: <T>({ identity, operation }: Monoid<T>) => Fold<bigint, T>;
|
|
85
|
-
/**
|
|
86
|
-
* Reduces a `List<T>` with the monoid's associative `operation`, seeded at its
|
|
87
|
-
* `identity`. An empty list folds to `identity`.
|
|
88
|
-
*
|
|
89
|
-
* `fold` is the reduction companion of {@link repeat}: where `repeat` applies
|
|
90
|
-
* the operation a fixed number of times to a single element, `fold` applies it
|
|
91
|
-
* across every element of a list. Together they let list reductions such as
|
|
92
|
-
* `sum`, `product`, and string `concat` be expressed directly as monoid folds,
|
|
93
|
-
* so the identity paired with each operation is stated once at the call site
|
|
94
|
-
* instead of hand-seeding a raw `reduce`.
|
|
95
|
-
*
|
|
96
|
-
* Like `repeat`, `fold` applies the operation **accumulator-first**:
|
|
97
|
-
* `operation(accumulator)(element)`, seeded at `identity`, so
|
|
98
|
-
* `[a, b, c]` folds to `((identity op a) op b) op c`. Left-to-right order is
|
|
99
|
-
* therefore preserved and `fold` is correct for non-commutative monoids (e.g.
|
|
100
|
-
* string concatenation as `a => b => a + b`). `list.reduce` calls its reducer
|
|
101
|
-
* element-first, so the operation is `flip`ped before it is handed over.
|
|
102
|
-
*
|
|
103
|
-
* @template T The type of the elements in the monoid.
|
|
104
|
-
* @param monoid The monoid structure, including the identity and binary operation.
|
|
105
|
-
* @returns A function that reduces a `List<T>` to a single `T`.
|
|
106
|
-
*
|
|
107
|
-
* @example
|
|
108
|
-
*
|
|
109
|
-
* ```ts
|
|
110
|
-
* const add: Monoid<number> = {
|
|
111
|
-
* identity: 0,
|
|
112
|
-
* operation: a => b => a + b,
|
|
113
|
-
* };
|
|
114
|
-
*
|
|
115
|
-
* fold(add)([1, 2, 3, 4]) // 10
|
|
116
|
-
* fold(add)([]) // 0
|
|
117
|
-
*
|
|
118
|
-
* const concat: Monoid<string> = {
|
|
119
|
-
* identity: '',
|
|
120
|
-
* operation: a => b => a + b,
|
|
121
|
-
* };
|
|
122
|
-
*
|
|
123
|
-
* fold(concat)(['a', 'b', 'c']) // 'abc' — order preserved
|
|
124
|
-
* ```
|
|
125
|
-
*/
|
|
126
|
-
export declare const fold: <T>({ identity, operation }: Monoid<T>) => (list: List<T>) => T;
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { reduce } from '../../types/list/module.f.js';
|
|
2
|
-
import { flip } from '../../types/function/module.f.js';
|
|
3
|
-
/**
|
|
4
|
-
* Repeats a monoid operation `n` times on the given element `a`.
|
|
5
|
-
* This function efficiently performs the operation using exponentiation by squaring.
|
|
6
|
-
*
|
|
7
|
-
* @template T The type of the elements in the monoid.
|
|
8
|
-
* @param monoid The monoid structure, including the identity and binary operation.
|
|
9
|
-
* @returns A function that takes an element `a` and a repetition count `n`,
|
|
10
|
-
* and returns the result of applying the operation `n` times.
|
|
11
|
-
*
|
|
12
|
-
* See also {@link https://en.wikipedia.org/wiki/Exponentiation_by_squaring}.
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
*
|
|
16
|
-
* ```ts
|
|
17
|
-
* const add: Monoid<number> = {
|
|
18
|
-
* identity: 0,
|
|
19
|
-
* operation: a => b => a + b,
|
|
20
|
-
* };
|
|
21
|
-
*
|
|
22
|
-
* const resultAdd = repeat(add)(10n)(2) // 20
|
|
23
|
-
*
|
|
24
|
-
* const concat: Monoid<string> = {
|
|
25
|
-
* identity: '',
|
|
26
|
-
* operation: a => b => a + b,
|
|
27
|
-
* };
|
|
28
|
-
*
|
|
29
|
-
* const resultConcat = repeat(concat)(3n)('ha') // 'hahaha'
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
32
|
-
export const repeat = ({ identity, operation }) => n => a => {
|
|
33
|
-
let ai = a;
|
|
34
|
-
let ni = n;
|
|
35
|
-
let result = identity;
|
|
36
|
-
while (true) {
|
|
37
|
-
if ((ni & 1n) !== 0n) {
|
|
38
|
-
result = operation(result)(ai);
|
|
39
|
-
}
|
|
40
|
-
ni >>= 1n;
|
|
41
|
-
if (ni === 0n) {
|
|
42
|
-
return result;
|
|
43
|
-
}
|
|
44
|
-
ai = operation(ai)(ai);
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
/**
|
|
48
|
-
* Reduces a `List<T>` with the monoid's associative `operation`, seeded at its
|
|
49
|
-
* `identity`. An empty list folds to `identity`.
|
|
50
|
-
*
|
|
51
|
-
* `fold` is the reduction companion of {@link repeat}: where `repeat` applies
|
|
52
|
-
* the operation a fixed number of times to a single element, `fold` applies it
|
|
53
|
-
* across every element of a list. Together they let list reductions such as
|
|
54
|
-
* `sum`, `product`, and string `concat` be expressed directly as monoid folds,
|
|
55
|
-
* so the identity paired with each operation is stated once at the call site
|
|
56
|
-
* instead of hand-seeding a raw `reduce`.
|
|
57
|
-
*
|
|
58
|
-
* Like `repeat`, `fold` applies the operation **accumulator-first**:
|
|
59
|
-
* `operation(accumulator)(element)`, seeded at `identity`, so
|
|
60
|
-
* `[a, b, c]` folds to `((identity op a) op b) op c`. Left-to-right order is
|
|
61
|
-
* therefore preserved and `fold` is correct for non-commutative monoids (e.g.
|
|
62
|
-
* string concatenation as `a => b => a + b`). `list.reduce` calls its reducer
|
|
63
|
-
* element-first, so the operation is `flip`ped before it is handed over.
|
|
64
|
-
*
|
|
65
|
-
* @template T The type of the elements in the monoid.
|
|
66
|
-
* @param monoid The monoid structure, including the identity and binary operation.
|
|
67
|
-
* @returns A function that reduces a `List<T>` to a single `T`.
|
|
68
|
-
*
|
|
69
|
-
* @example
|
|
70
|
-
*
|
|
71
|
-
* ```ts
|
|
72
|
-
* const add: Monoid<number> = {
|
|
73
|
-
* identity: 0,
|
|
74
|
-
* operation: a => b => a + b,
|
|
75
|
-
* };
|
|
76
|
-
*
|
|
77
|
-
* fold(add)([1, 2, 3, 4]) // 10
|
|
78
|
-
* fold(add)([]) // 0
|
|
79
|
-
*
|
|
80
|
-
* const concat: Monoid<string> = {
|
|
81
|
-
* identity: '',
|
|
82
|
-
* operation: a => b => a + b,
|
|
83
|
-
* };
|
|
84
|
-
*
|
|
85
|
-
* fold(concat)(['a', 'b', 'c']) // 'abc' — order preserved
|
|
86
|
-
* ```
|
|
87
|
-
*/
|
|
88
|
-
export const fold = ({ identity, operation }) => reduce(flip(operation))(identity);
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { repeat, fold } from "./module.f.js";
|
|
2
|
-
import { assertEq } from '../../asserts/module.f.js';
|
|
3
|
-
export const proof = {
|
|
4
|
-
numberAdd: () => {
|
|
5
|
-
const add = {
|
|
6
|
-
identity: 0,
|
|
7
|
-
operation: a => b => a + b,
|
|
8
|
-
};
|
|
9
|
-
const resultAdd = repeat(add)(10n)(2); // 20
|
|
10
|
-
assertEq(resultAdd, 20);
|
|
11
|
-
const id = repeat(add)(0n)(42);
|
|
12
|
-
assertEq(id, 0);
|
|
13
|
-
},
|
|
14
|
-
stringConcat: () => {
|
|
15
|
-
const concat = {
|
|
16
|
-
identity: '',
|
|
17
|
-
operation: a => b => a + b,
|
|
18
|
-
};
|
|
19
|
-
const resultConcat = repeat(concat)(3n)('ha'); // 'hahaha'
|
|
20
|
-
assertEq(resultConcat, 'hahaha');
|
|
21
|
-
},
|
|
22
|
-
fold: {
|
|
23
|
-
nonEmpty: () => {
|
|
24
|
-
const add = {
|
|
25
|
-
identity: 0,
|
|
26
|
-
operation: a => b => a + b,
|
|
27
|
-
};
|
|
28
|
-
assertEq(fold(add)([1, 2, 3, 4]), 10);
|
|
29
|
-
},
|
|
30
|
-
order: () => {
|
|
31
|
-
// a non-commutative monoid: `fold` must preserve left-to-right order
|
|
32
|
-
// (`((('' + 'a') + 'b') + 'c')`), not reverse it to `'cba'`.
|
|
33
|
-
const concat = {
|
|
34
|
-
identity: '',
|
|
35
|
-
operation: a => b => a + b,
|
|
36
|
-
};
|
|
37
|
-
assertEq(fold(concat)(['a', 'b', 'c']), 'abc');
|
|
38
|
-
},
|
|
39
|
-
empty: () => {
|
|
40
|
-
const concat = {
|
|
41
|
-
identity: '',
|
|
42
|
-
operation: a => b => a + b,
|
|
43
|
-
};
|
|
44
|
-
// an empty list folds to the identity
|
|
45
|
-
assertEq(fold(concat)([]), '');
|
|
46
|
-
},
|
|
47
|
-
}
|
|
48
|
-
};
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Provides an implementation of HMAC (Hash-based Message Authentication Code).
|
|
3
|
-
*
|
|
4
|
-
* https://en.wikipedia.org/wiki/HMAC
|
|
5
|
-
* https://www.rfc-editor.org/rfc/rfc2104
|
|
6
|
-
*
|
|
7
|
-
* @module
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
*
|
|
11
|
-
* ```ts
|
|
12
|
-
* import { vec } from '../../types/bit_vec/module.f.ts'
|
|
13
|
-
* import { msbUtf8 } from '../../text/module.f.ts'
|
|
14
|
-
* import { sha256 } from '../sha2/module.f.ts'
|
|
15
|
-
*
|
|
16
|
-
* const r = hmac(sha256)(msbUtf8('key'))(msbUtf8('The quick brown fox jumps over the lazy dog'))
|
|
17
|
-
* if (r !== vec(256n)(0xf7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8n)) { throw r }
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
import { type Reduce } from '../../types/bit_vec/module.f.ts';
|
|
21
|
-
import { type Sha2 } from '../sha2/module.f.ts';
|
|
22
|
-
/**
|
|
23
|
-
* Generates an HMAC (Hash-based Message Authentication Code) using the specified hash function.
|
|
24
|
-
*
|
|
25
|
-
* @param hashFunc - The hash function implementation to use.
|
|
26
|
-
* @returns - A function that takes a key and returns another function
|
|
27
|
-
* that takes a message and computes the HMAC.
|
|
28
|
-
*/
|
|
29
|
-
export declare const hmac: (hashFunc: Sha2) => Reduce;
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Provides an implementation of HMAC (Hash-based Message Authentication Code).
|
|
3
|
-
*
|
|
4
|
-
* https://en.wikipedia.org/wiki/HMAC
|
|
5
|
-
* https://www.rfc-editor.org/rfc/rfc2104
|
|
6
|
-
*
|
|
7
|
-
* @module
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
*
|
|
11
|
-
* ```ts
|
|
12
|
-
* import { vec } from '../../types/bit_vec/module.f.ts'
|
|
13
|
-
* import { msbUtf8 } from '../../text/module.f.ts'
|
|
14
|
-
* import { sha256 } from '../sha2/module.f.ts'
|
|
15
|
-
*
|
|
16
|
-
* const r = hmac(sha256)(msbUtf8('key'))(msbUtf8('The quick brown fox jumps over the lazy dog'))
|
|
17
|
-
* if (r !== vec(256n)(0xf7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8n)) { throw r }
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
import { length, msb, vec, vec8, repeat } from '../../types/bit_vec/module.f.js';
|
|
21
|
-
import { computeSync } from '../sha2/module.f.js';
|
|
22
|
-
const { concat, xor } = msb;
|
|
23
|
-
/**
|
|
24
|
-
* Outer padding.
|
|
25
|
-
*/
|
|
26
|
-
const oPad = vec8(0x5cn);
|
|
27
|
-
/**
|
|
28
|
-
* Inner padding.
|
|
29
|
-
*/
|
|
30
|
-
const iPad = vec8(0x36n);
|
|
31
|
-
/**
|
|
32
|
-
* Generates an HMAC (Hash-based Message Authentication Code) using the specified hash function.
|
|
33
|
-
*
|
|
34
|
-
* @param hashFunc - The hash function implementation to use.
|
|
35
|
-
* @returns - A function that takes a key and returns another function
|
|
36
|
-
* that takes a message and computes the HMAC.
|
|
37
|
-
*/
|
|
38
|
-
export const hmac = (hashFunc) => {
|
|
39
|
-
const { blockLength } = hashFunc;
|
|
40
|
-
const p = repeat(blockLength >> 3n);
|
|
41
|
-
const ip = p(iPad);
|
|
42
|
-
const op = p(oPad);
|
|
43
|
-
const c = computeSync(hashFunc);
|
|
44
|
-
return k => {
|
|
45
|
-
const k1 = length(k) > blockLength ? c([k]) : k;
|
|
46
|
-
const k2 = concat(k1)(vec(blockLength - length(k1))(0n));
|
|
47
|
-
const xk2 = xor(k2);
|
|
48
|
-
const f = (p) => {
|
|
49
|
-
const x = xk2(p);
|
|
50
|
-
return (msg) => c([x, msg]);
|
|
51
|
-
};
|
|
52
|
-
const fip = f(ip);
|
|
53
|
-
const fop = f(op);
|
|
54
|
-
return m => fop(fip(m));
|
|
55
|
-
};
|
|
56
|
-
};
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { assertEq } from '../../asserts/module.f.js';
|
|
2
|
-
import { utf8 } from '../../text/module.f.js';
|
|
3
|
-
import { uint, vec } from '../../types/bit_vec/module.f.js';
|
|
4
|
-
import { sha256, sha384, sha512 } from '../sha2/module.f.js';
|
|
5
|
-
import { hmac } from './module.f.js';
|
|
6
|
-
export const proof = {
|
|
7
|
-
example: () => {
|
|
8
|
-
const r = hmac(sha256)(utf8('key'))(utf8('The quick brown fox jumps over the lazy dog'));
|
|
9
|
-
assertEq(r, vec(256n)(0xf7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8n));
|
|
10
|
-
},
|
|
11
|
-
sha256: () => {
|
|
12
|
-
const r = hmac(sha256)(utf8('key'))(utf8('The quick brown fox jumps over the lazy dog'));
|
|
13
|
-
assertEq(uint(r), 0xf7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8n, r);
|
|
14
|
-
},
|
|
15
|
-
sha384: () => {
|
|
16
|
-
const k = vec(384n)(0n);
|
|
17
|
-
const m = vec(904n)(0x0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010069c7548c21d0dfea6b9a51c9ead4e27c33d3b3f180316e5bcab92c933f0e4dbc9a9083505bc92276aec4be312696ef7bf3bf603f4bbd381196a029f340585312n);
|
|
18
|
-
const r = hmac(sha384)(k)(m);
|
|
19
|
-
assertEq(r, vec(384n)(0x8f858157ce005cd52fd8e8f1a46b55e6cfae21c8c183d9c2f7504bedf450609edd7d3c6171dc0bdd2d2444faa28f18ban), uint(r).toString(16));
|
|
20
|
-
},
|
|
21
|
-
sha512: () => {
|
|
22
|
-
const r = hmac(sha512)(utf8('key'))(utf8('The quick brown fox jumps over the lazy dog'));
|
|
23
|
-
assertEq(r, vec(512n)(0xb42af09057bac1e2d41708e48a902e09b5ff7f12ab428a4fe86653c73dd248fb82f948a549f7b791a5b41915ee4d1ec3935357e4e2317250d0372afa2ebeeb3an));
|
|
24
|
-
},
|
|
25
|
-
// RFC 4231 Test Case 6: key (131 bytes of 0xaa = 1048 bits) exceeds SHA-256 block size (512 bits),
|
|
26
|
-
// so the key is first compressed via the hash function before use.
|
|
27
|
-
longKey: () => {
|
|
28
|
-
const key = vec(1048n)(BigInt('0x' + 'aa'.repeat(131)));
|
|
29
|
-
const r = hmac(sha256)(key)(utf8('Test Using Larger Than Block-Size Key - Hash Key First'));
|
|
30
|
-
assertEq(uint(r), 0x60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54n);
|
|
31
|
-
}
|
|
32
|
-
};
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { type Vec } from '../../types/bit_vec/module.f.ts';
|
|
2
|
-
import type { Nullable } from '../../types/nullable/module.f.ts';
|
|
3
|
-
import { type Sha2 } from '../sha2/module.f.ts';
|
|
4
|
-
/** Genesis-block compact target (`0x1d00ffff`). */
|
|
5
|
-
export declare const genesisNBits = 486604799n;
|
|
6
|
-
/** Genesis-block uint256 target decoded from {@link genesisNBits}. */
|
|
7
|
-
export declare const genesisTarget = 26959535291011309493156476344723991336010898738574164086137773096960n;
|
|
8
|
-
/**
|
|
9
|
-
* Decodes compact **nBits** (32-bit block-header "bits") to a uint256 target:
|
|
10
|
-
*
|
|
11
|
-
* - `exponent = nBits >> 24`
|
|
12
|
-
* - `mantissa = nBits & 0xffffff`
|
|
13
|
-
* - `target = mantissa × 2^(8 × (exponent − 3))`
|
|
14
|
-
*
|
|
15
|
-
* Returns `null` for malformed encodings per Bitcoin `SetCompact` rules (negative
|
|
16
|
-
* sign bit, overflow, target wider than 256 bits).
|
|
17
|
-
*
|
|
18
|
-
* @param nBits - Compact target encoding.
|
|
19
|
-
* @returns Decoded target, or `null` when **nBits** is invalid.
|
|
20
|
-
*/
|
|
21
|
-
export declare const targetFromNBits: (nBits: bigint) => Nullable<bigint>;
|
|
22
|
-
export type Pow = {
|
|
23
|
-
/** Hash `data` with the configured `Sha2`; digest as big-endian uint256. */
|
|
24
|
-
readonly hashInt: (data: Vec) => bigint;
|
|
25
|
-
/** Whether `hashInt(data) <= targetFromNBits(nBits)`; `false` when **nBits** is invalid. */
|
|
26
|
-
readonly meets: (nBits: bigint) => (data: Vec) => boolean;
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
* Builds PoW helpers for a hash function (typical consumer: {@link sha256}).
|
|
30
|
-
*
|
|
31
|
-
* @param hash - SHA-2 configuration whose digest is compared as uint256.
|
|
32
|
-
*/
|
|
33
|
-
export declare const pow: (hash: Sha2) => Pow;
|
|
34
|
-
/** SHA-256 proof-of-work (`pow(sha256)`). */
|
|
35
|
-
export declare const sha256Pow: Pow;
|
|
36
|
-
/** Bitcoin block-header PoW; same as {@link sha256Pow}. */
|
|
37
|
-
export declare const bitcoinPow: Pow;
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bitcoin-style proof-of-work: compact **nBits** target decoding and
|
|
3
|
-
* hash-vs-target verification using an injected SHA-2 hash.
|
|
4
|
-
*
|
|
5
|
-
* @module
|
|
6
|
-
*/
|
|
7
|
-
import { mask } from '../../types/bigint/module.f.js';
|
|
8
|
-
import { uint } from '../../types/bit_vec/module.f.js';
|
|
9
|
-
import { computeSync, sha256 } from '../sha2/module.f.js';
|
|
10
|
-
const nBitsMantissa = mask(24n);
|
|
11
|
-
const mantissaSign = 0x00800000n;
|
|
12
|
-
const mantissaBody = 0x007fffffn;
|
|
13
|
-
const exponentShift = 24n;
|
|
14
|
-
const uint256Mask = mask(256n);
|
|
15
|
-
/** Genesis-block compact target (`0x1d00ffff`). */
|
|
16
|
-
export const genesisNBits = 0x1d00ffffn;
|
|
17
|
-
/** Genesis-block uint256 target decoded from {@link genesisNBits}. */
|
|
18
|
-
export const genesisTarget = 0x00000000ffff0000000000000000000000000000000000000000000000000000n;
|
|
19
|
-
const decodeShift = (exponent) => 8n * (exponent - 3n);
|
|
20
|
-
const compactTarget = (exponent) => (mantissa) => {
|
|
21
|
-
const shift = decodeShift(exponent);
|
|
22
|
-
return shift >= 0n ? mantissa << shift : mantissa >> -shift;
|
|
23
|
-
};
|
|
24
|
-
const negativeNBits = (mantissa) => mantissa !== 0n && (mantissa & mantissaSign) !== 0n;
|
|
25
|
-
const overflowNBits = (exponent) => (mantissa) => (target) => target !== 0n &&
|
|
26
|
-
(exponent > 34n || (mantissa !== 0n && (mantissa & mantissaBody) === 0n));
|
|
27
|
-
/**
|
|
28
|
-
* Decodes compact **nBits** (32-bit block-header "bits") to a uint256 target:
|
|
29
|
-
*
|
|
30
|
-
* - `exponent = nBits >> 24`
|
|
31
|
-
* - `mantissa = nBits & 0xffffff`
|
|
32
|
-
* - `target = mantissa × 2^(8 × (exponent − 3))`
|
|
33
|
-
*
|
|
34
|
-
* Returns `null` for malformed encodings per Bitcoin `SetCompact` rules (negative
|
|
35
|
-
* sign bit, overflow, target wider than 256 bits).
|
|
36
|
-
*
|
|
37
|
-
* @param nBits - Compact target encoding.
|
|
38
|
-
* @returns Decoded target, or `null` when **nBits** is invalid.
|
|
39
|
-
*/
|
|
40
|
-
export const targetFromNBits = (nBits) => {
|
|
41
|
-
const exponent = nBits >> exponentShift;
|
|
42
|
-
const mantissa = nBits & nBitsMantissa;
|
|
43
|
-
if (negativeNBits(mantissa)) {
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
const target = compactTarget(exponent)(mantissa);
|
|
47
|
-
if (overflowNBits(exponent)(mantissa)(target)) {
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
if (target > uint256Mask) {
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
return target;
|
|
54
|
-
};
|
|
55
|
-
/**
|
|
56
|
-
* Builds PoW helpers for a hash function (typical consumer: {@link sha256}).
|
|
57
|
-
*
|
|
58
|
-
* @param hash - SHA-2 configuration whose digest is compared as uint256.
|
|
59
|
-
*/
|
|
60
|
-
export const pow = (hash) => {
|
|
61
|
-
const c = computeSync(hash);
|
|
62
|
-
const hashInt = (data) => uint(c([data]));
|
|
63
|
-
const meets = (nBits) => (data) => {
|
|
64
|
-
const target = targetFromNBits(nBits);
|
|
65
|
-
return target !== null && hashInt(data) <= target;
|
|
66
|
-
};
|
|
67
|
-
return { hashInt, meets };
|
|
68
|
-
};
|
|
69
|
-
/** SHA-256 proof-of-work (`pow(sha256)`). */
|
|
70
|
-
export const sha256Pow = pow(sha256);
|
|
71
|
-
/** Bitcoin block-header PoW; same as {@link sha256Pow}. */
|
|
72
|
-
export const bitcoinPow = sha256Pow;
|