functionalscript 0.43.0 → 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.d.mts +42 -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 -222
- package/fjs/cas/evo/module.f.js +0 -454
- package/fjs/cas/evo/proof.f.d.ts +0 -43
- package/fjs/cas/evo/proof.f.js +0 -653
- 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 -86
- package/fjs/media/revision/module.f.js +0 -131
- package/fjs/media/revision/proof.f.d.ts +0 -31
- package/fjs/media/revision/proof.f.js +0 -140
- 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/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,42 @@
|
|
|
1
|
+
export declare const proof: {
|
|
2
|
+
dialectAndMediaType: () => void;
|
|
3
|
+
isHash: {
|
|
4
|
+
validHash: () => void;
|
|
5
|
+
httpsRejected: () => void;
|
|
6
|
+
arbitraryStringRejected: () => void;
|
|
7
|
+
};
|
|
8
|
+
validate: {
|
|
9
|
+
allFieldsPresent: () => void;
|
|
10
|
+
nonHashSubjectAccepted: () => void;
|
|
11
|
+
multiParentAccepted: () => void;
|
|
12
|
+
missingSnapshotRejected: () => void;
|
|
13
|
+
nonHashSnapshotRejected: () => void;
|
|
14
|
+
missingGenerationRejected: () => void;
|
|
15
|
+
nonIntegerGenerationRejected: () => void;
|
|
16
|
+
negativeGenerationRejected: () => void;
|
|
17
|
+
unsafeIntegerGenerationRejected: () => void;
|
|
18
|
+
positiveGenerationAccepted: () => void;
|
|
19
|
+
httpsRejectedInParents: () => void;
|
|
20
|
+
archivedAccepted: () => void;
|
|
21
|
+
lockAbsentAccepted: () => void;
|
|
22
|
+
emptyLockAccepted: () => void;
|
|
23
|
+
validLockAccepted: () => void;
|
|
24
|
+
malformedLockRejected: () => void;
|
|
25
|
+
invalidHashLockRejected: () => void;
|
|
26
|
+
aliasHashLockAccepted: () => void;
|
|
27
|
+
wrongDialectRejected: () => void;
|
|
28
|
+
missingSubjectRejected: () => void;
|
|
29
|
+
extraFieldsAccepted: () => void;
|
|
30
|
+
};
|
|
31
|
+
decodeText: {
|
|
32
|
+
validJson: () => void;
|
|
33
|
+
keyOrderIndependent: () => void;
|
|
34
|
+
malformedJsonRejected: () => void;
|
|
35
|
+
ordinaryJsonRejected: () => void;
|
|
36
|
+
};
|
|
37
|
+
encodeText: {
|
|
38
|
+
recursivelySortsObjectsLexicographically: () => void;
|
|
39
|
+
preservesArrayOrder: () => void;
|
|
40
|
+
parsedEquivalentSourcesConverge: () => void;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/** @import { Object as JsonObject } from '../json/types.ts' */
|
|
2
|
+
/** @import { LockMap } from './types.ts' */
|
|
3
|
+
import { assert, assertEq } from '../../asserts/module.f.mjs'
|
|
4
|
+
import { dialect, mediaType, isHash, validate, decodeText, encodeText } from './module.f.mjs'
|
|
5
|
+
|
|
6
|
+
// Valid cbase32 hashes (round-tripped in fjs/basen/cbase32/proof.f.mjs): single
|
|
7
|
+
// cbase32 symbols, cheap to write inline here.
|
|
8
|
+
const h1 = '8'
|
|
9
|
+
const h2 = 'r'
|
|
10
|
+
// `I` is accepted as an alias spelling of canonical cBase32 `1`.
|
|
11
|
+
const alias = /** @type {const} */ ('I')
|
|
12
|
+
|
|
13
|
+
/** @type {LockMap} */
|
|
14
|
+
const _lockMapAllowsMissingSubjects = {}
|
|
15
|
+
|
|
16
|
+
// A shape-valid revision: every required field present (`snapshot` and
|
|
17
|
+
// `generation` included), with `extra` overriding or adding fields per test.
|
|
18
|
+
/** @type {(extra: JsonObject) => JsonObject} */
|
|
19
|
+
const revisionOf = extra => ({
|
|
20
|
+
dialect,
|
|
21
|
+
subject: h1,
|
|
22
|
+
parents: [],
|
|
23
|
+
snapshot: h2,
|
|
24
|
+
generation: 0,
|
|
25
|
+
...extra,
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
export const proof = {
|
|
29
|
+
dialectAndMediaType: () => {
|
|
30
|
+
assertEq(dialect, 'vnd.fjs.revision')
|
|
31
|
+
assertEq(mediaType, 'application/vnd.fjs.revision+json')
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
isHash: {
|
|
35
|
+
validHash: () => assert(isHash(h1)),
|
|
36
|
+
httpsRejected: () => assert(!isHash('https://example.com/blob/abc')),
|
|
37
|
+
arbitraryStringRejected: () => assert(!isHash('not-a-hash!')),
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
validate: {
|
|
41
|
+
// A fully explicit revision validates.
|
|
42
|
+
allFieldsPresent: () => {
|
|
43
|
+
const [t] = validate(revisionOf({}))
|
|
44
|
+
assertEq(t, 'ok')
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
// `subject` is a pure identity string, never a snapshot reference: a
|
|
48
|
+
// zero-parent revision whose `subject` is not a hash is now valid,
|
|
49
|
+
// because `snapshot` is always stated explicitly.
|
|
50
|
+
nonHashSubjectAccepted: () => {
|
|
51
|
+
const r = validate(revisionOf({ subject: 'my-config' }))
|
|
52
|
+
assert(r[0] === 'ok', ['expected ok', r])
|
|
53
|
+
assertEq(r[1].subject, 'my-config')
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
// A merge revision (more than one parent) is valid like any other —
|
|
57
|
+
// there is no "multiple parents without snapshot" case left, because
|
|
58
|
+
// `snapshot` is required.
|
|
59
|
+
multiParentAccepted: () => {
|
|
60
|
+
const r = validate(revisionOf({ subject: 'my-config', parents: [h1, h2], snapshot: h2 }))
|
|
61
|
+
assert(r[0] === 'ok', ['expected ok', r])
|
|
62
|
+
assertEq(r[1].snapshot, h2)
|
|
63
|
+
},
|
|
64
|
+
|
|
65
|
+
// `snapshot` is required: absent is a shape error.
|
|
66
|
+
missingSnapshotRejected: () => {
|
|
67
|
+
const [t] = validate({ dialect, subject: h1, parents: [], generation: 0 })
|
|
68
|
+
assertEq(t, 'error')
|
|
69
|
+
},
|
|
70
|
+
|
|
71
|
+
// `snapshot` must decode as a hash — `https://` bridge URLs rejected.
|
|
72
|
+
nonHashSnapshotRejected: () => {
|
|
73
|
+
const [t] = validate(revisionOf({ snapshot: 'https://example.com/x' }))
|
|
74
|
+
assertEq(t, 'error')
|
|
75
|
+
},
|
|
76
|
+
|
|
77
|
+
// `generation` is required: absent is a shape error.
|
|
78
|
+
missingGenerationRejected: () => {
|
|
79
|
+
const [t] = validate({ dialect, subject: h1, parents: [], snapshot: h2 })
|
|
80
|
+
assertEq(t, 'error')
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
// `generation` must be an integer: a fractional value is rejected.
|
|
84
|
+
nonIntegerGenerationRejected: () => {
|
|
85
|
+
const [t] = validate(revisionOf({ generation: 1.5 }))
|
|
86
|
+
assertEq(t, 'error')
|
|
87
|
+
},
|
|
88
|
+
|
|
89
|
+
// `generation` must be non-negative.
|
|
90
|
+
negativeGenerationRejected: () => {
|
|
91
|
+
const [t] = validate(revisionOf({ generation: -1 }))
|
|
92
|
+
assertEq(t, 'error')
|
|
93
|
+
},
|
|
94
|
+
|
|
95
|
+
// `generation` must be a *safe* integer: at `2 ** 53` and above the
|
|
96
|
+
// value is no longer uniquely representable, so `1 + max(...)` could
|
|
97
|
+
// fail to advance — such a blob is rejected (`Number.isInteger` would
|
|
98
|
+
// accept it; `Number.isSafeInteger` does not).
|
|
99
|
+
unsafeIntegerGenerationRejected: () => {
|
|
100
|
+
const [t] = validate(revisionOf({ generation: 2 ** 53 }))
|
|
101
|
+
assertEq(t, 'error')
|
|
102
|
+
},
|
|
103
|
+
|
|
104
|
+
// A positive integer generation is accepted.
|
|
105
|
+
positiveGenerationAccepted: () => {
|
|
106
|
+
const r = validate(revisionOf({ parents: [h1], generation: 3 }))
|
|
107
|
+
assert(r[0] === 'ok', ['expected ok', r])
|
|
108
|
+
assertEq(r[1].generation, 3)
|
|
109
|
+
},
|
|
110
|
+
|
|
111
|
+
// `https://` bridge URLs are rejected wherever a hash is required.
|
|
112
|
+
httpsRejectedInParents: () => {
|
|
113
|
+
const [t] = validate(revisionOf({ parents: ['https://example.com/x'] }))
|
|
114
|
+
assertEq(t, 'error')
|
|
115
|
+
},
|
|
116
|
+
|
|
117
|
+
// `archived` follows the presence-only `option(true)` idiom.
|
|
118
|
+
archivedAccepted: () => {
|
|
119
|
+
const [t] = validate(revisionOf({ archived: true }))
|
|
120
|
+
assertEq(t, 'ok')
|
|
121
|
+
},
|
|
122
|
+
|
|
123
|
+
lockAbsentAccepted: () => {
|
|
124
|
+
const r = validate(revisionOf({}))
|
|
125
|
+
assert(r[0] === 'ok', ['expected ok', r])
|
|
126
|
+
assertEq(r[1].lock, undefined)
|
|
127
|
+
},
|
|
128
|
+
|
|
129
|
+
emptyLockAccepted: () => {
|
|
130
|
+
const r = validate(revisionOf({ lock: {} }))
|
|
131
|
+
assert(r[0] === 'ok', ['expected ok', r])
|
|
132
|
+
assertEq(Object.keys(r[1].lock ?? {}).length, 0)
|
|
133
|
+
},
|
|
134
|
+
|
|
135
|
+
validLockAccepted: () => {
|
|
136
|
+
const [t] = validate(revisionOf({ lock: { dependency: h1 } }))
|
|
137
|
+
assertEq(t, 'ok')
|
|
138
|
+
},
|
|
139
|
+
|
|
140
|
+
malformedLockRejected: () => {
|
|
141
|
+
const [t] = validate(revisionOf({ lock: { dependency: 1 } }))
|
|
142
|
+
assertEq(t, 'error')
|
|
143
|
+
},
|
|
144
|
+
|
|
145
|
+
invalidHashLockRejected: () => {
|
|
146
|
+
const [t] = validate(revisionOf({ lock: { dependency: 'https://example.com/x' } }))
|
|
147
|
+
assertEq(t, 'error')
|
|
148
|
+
},
|
|
149
|
+
|
|
150
|
+
aliasHashLockAccepted: () => {
|
|
151
|
+
const [t] = validate(revisionOf({ lock: { dependency: alias } }))
|
|
152
|
+
assertEq(t, 'ok')
|
|
153
|
+
},
|
|
154
|
+
|
|
155
|
+
// Wrong dialect tag: structural validation rejects it outright.
|
|
156
|
+
wrongDialectRejected: () => {
|
|
157
|
+
const [t] = validate({ dialect: 'vnd.fjs.other', subject: h1, parents: [], snapshot: h2, generation: 0 })
|
|
158
|
+
assertEq(t, 'error')
|
|
159
|
+
},
|
|
160
|
+
|
|
161
|
+
// Missing required fields: rejected.
|
|
162
|
+
missingSubjectRejected: () => {
|
|
163
|
+
const [t] = validate({ dialect, parents: [], snapshot: h2, generation: 0 })
|
|
164
|
+
assertEq(t, 'error')
|
|
165
|
+
},
|
|
166
|
+
|
|
167
|
+
// rtti structs are open: extra fields don't break validation — the
|
|
168
|
+
// additive forward-compatibility path the versioning rule relies on.
|
|
169
|
+
extraFieldsAccepted: () => {
|
|
170
|
+
const [t] = validate(revisionOf({ future: 'field' }))
|
|
171
|
+
assertEq(t, 'ok')
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
|
|
175
|
+
decodeText: {
|
|
176
|
+
validJson: () => {
|
|
177
|
+
const r = decodeText(JSON.stringify(revisionOf({})))
|
|
178
|
+
assert(r[0] === 'ok', ['expected ok', r])
|
|
179
|
+
assertEq(r[1].subject, h1)
|
|
180
|
+
},
|
|
181
|
+
|
|
182
|
+
// Key order carries no meaning: detection parses the JSON and
|
|
183
|
+
// validates the parsed value, so `dialect` need not be first.
|
|
184
|
+
keyOrderIndependent: () => {
|
|
185
|
+
const text = `{"generation":0,"snapshot":"${h2}","parents":[],"subject":"${h1}","dialect":"${dialect}"}`
|
|
186
|
+
const [t] = decodeText(text)
|
|
187
|
+
assertEq(t, 'ok')
|
|
188
|
+
},
|
|
189
|
+
|
|
190
|
+
malformedJsonRejected: () => {
|
|
191
|
+
const [t] = decodeText('{not json')
|
|
192
|
+
assertEq(t, 'error')
|
|
193
|
+
},
|
|
194
|
+
|
|
195
|
+
// Ordinary JSON that isn't a revision at all falls through as an error
|
|
196
|
+
// here — `fjs/media`'s composed detector is what falls back to the
|
|
197
|
+
// ordinary detector; this module only reports validity.
|
|
198
|
+
ordinaryJsonRejected: () => {
|
|
199
|
+
const [t] = decodeText('{"hello":"world"}')
|
|
200
|
+
assertEq(t, 'error')
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
encodeText: {
|
|
204
|
+
recursivelySortsObjectsLexicographically: () => {
|
|
205
|
+
const revision = revisionOf({ lock: { '2': h2, '10': h1 } })
|
|
206
|
+
const decoded = validate(revision)
|
|
207
|
+
assert(decoded[0] === 'ok', ['expected ok', decoded])
|
|
208
|
+
assertEq(
|
|
209
|
+
encodeText(decoded[1]),
|
|
210
|
+
`{"dialect":"${dialect}","generation":0,"lock":{"10":"${h1}","2":"${h2}"},"parents":[],"snapshot":"${h2}","subject":"${h1}"}`,
|
|
211
|
+
)
|
|
212
|
+
},
|
|
213
|
+
preservesArrayOrder: () => {
|
|
214
|
+
const decoded = validate(revisionOf({ parents: [h2, h1] }))
|
|
215
|
+
assert(decoded[0] === 'ok', ['expected ok', decoded])
|
|
216
|
+
assert(encodeText(decoded[1]).includes(`"parents":["${h2}","${h1}"]`))
|
|
217
|
+
},
|
|
218
|
+
parsedEquivalentSourcesConverge: () => {
|
|
219
|
+
const a = decodeText(` { "subject":"${h1}", "snapshot":"${h2}", "parents":[], "generation":0, "dialect":"${dialect}" } `)
|
|
220
|
+
const b = decodeText(`{"dialect":"${dialect}","generation":0,"parents":[],"snapshot":"${h2}","subject":"${h1}"}`)
|
|
221
|
+
assert(a[0] === 'ok', ['expected ok', a])
|
|
222
|
+
assert(b[0] === 'ok', ['expected ok', b])
|
|
223
|
+
assertEq(encodeText(a[1]), encodeText(b[1]))
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
void _lockMapAllowsMissingSubjects
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-level API for `fjs/media/revision/module.f.mjs`: `LockMap`,
|
|
3
|
+
* `Revision`, and `RevisionError`, derived from the module's own rtti
|
|
4
|
+
* schemas.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import type { Ts } from '../../types/rtti/ts/types.ts';
|
|
9
|
+
import type { ValidationError } from '../../types/rtti/common/types.ts';
|
|
10
|
+
import type { _lock, revisionSchema } from './module.f.mjs';
|
|
11
|
+
/** A flat set of subject-to-snapshot bindings supplied to dependency resolvers. */
|
|
12
|
+
export type LockMap = Ts<typeof _lock>;
|
|
13
|
+
/** The TypeScript type derived from `revisionSchema` — the single source of truth. */
|
|
14
|
+
export type Revision = Ts<typeof revisionSchema>;
|
|
15
|
+
/** Either a structural validation error or a semantic (hash / generation) error message. */
|
|
16
|
+
export type RevisionError = ValidationError | string;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rust source literals.
|
|
3
|
+
*
|
|
4
|
+
* Printing a value as Rust source is not specific to any one generator: the
|
|
5
|
+
* MVP roadmap's `fjs compile <input>.rs` backend and `nanvm-lib`'s generated
|
|
6
|
+
* operator tests both need the same escaping and the same spelling of the
|
|
7
|
+
* numeric edge cases. This module owns that layer — the syntax of a literal —
|
|
8
|
+
* and nothing above it. Expressions, items, and whatever API a generator
|
|
9
|
+
* targets stay with the generator.
|
|
10
|
+
*
|
|
11
|
+
* The sibling of `fjs/media/nix`, which does the same for Nix expressions.
|
|
12
|
+
*
|
|
13
|
+
* @module
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
*
|
|
17
|
+
* ```js
|
|
18
|
+
* import { f64Literal, i64Literal, stringLiteral } from './module.f.mjs'
|
|
19
|
+
*
|
|
20
|
+
* stringLiteral('a"b') // '"a\\"b"'
|
|
21
|
+
* f64Literal(-0) // '-0f64'
|
|
22
|
+
* i64Literal(-456n) // '-456'
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* A double-quoted Rust string literal.
|
|
27
|
+
*
|
|
28
|
+
* Any other control character is rejected rather than escaped: no caller needs
|
|
29
|
+
* one, and a silently mangled literal is worse than a failed generation.
|
|
30
|
+
*
|
|
31
|
+
* @type {(v: string) => string}
|
|
32
|
+
*/
|
|
33
|
+
export declare const stringLiteral: (v: string) => string;
|
|
34
|
+
/**
|
|
35
|
+
* An `f64` literal.
|
|
36
|
+
*
|
|
37
|
+
* `toString` already prints the shortest round-tripping decimal and Rust
|
|
38
|
+
* parses decimal float literals the same way JavaScript does, so the digits
|
|
39
|
+
* carry over unchanged. Only the three non-finite values and `-0` — which
|
|
40
|
+
* `toString` prints as `0` — need spelling out. The `f64` suffix keeps whole
|
|
41
|
+
* numbers from lexing as integers.
|
|
42
|
+
*
|
|
43
|
+
* @type {(v: number) => string}
|
|
44
|
+
*/
|
|
45
|
+
export declare const f64Literal: (v: number) => string;
|
|
46
|
+
/**
|
|
47
|
+
* An `i64` literal. Throws for a value the type cannot hold, rather than
|
|
48
|
+
* silently truncating it.
|
|
49
|
+
*
|
|
50
|
+
* @type {(v: bigint) => string}
|
|
51
|
+
*/
|
|
52
|
+
export declare const i64Literal: (v: bigint) => string;
|
|
53
|
+
/**
|
|
54
|
+
* A `snake_case` Rust identifier from a `camelCase` name.
|
|
55
|
+
*
|
|
56
|
+
* Only the casing is converted: a name that is not already a valid identifier
|
|
57
|
+
* stays invalid, so callers pass names they control.
|
|
58
|
+
*
|
|
59
|
+
* @type {(v: string) => string}
|
|
60
|
+
*/
|
|
61
|
+
export declare const snakeCase: (v: string) => string;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rust source literals.
|
|
3
|
+
*
|
|
4
|
+
* Printing a value as Rust source is not specific to any one generator: the
|
|
5
|
+
* MVP roadmap's `fjs compile <input>.rs` backend and `nanvm-lib`'s generated
|
|
6
|
+
* operator tests both need the same escaping and the same spelling of the
|
|
7
|
+
* numeric edge cases. This module owns that layer — the syntax of a literal —
|
|
8
|
+
* and nothing above it. Expressions, items, and whatever API a generator
|
|
9
|
+
* targets stay with the generator.
|
|
10
|
+
*
|
|
11
|
+
* The sibling of `fjs/media/nix`, which does the same for Nix expressions.
|
|
12
|
+
*
|
|
13
|
+
* @module
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
*
|
|
17
|
+
* ```js
|
|
18
|
+
* import { f64Literal, i64Literal, stringLiteral } from './module.f.mjs'
|
|
19
|
+
*
|
|
20
|
+
* stringLiteral('a"b') // '"a\\"b"'
|
|
21
|
+
* f64Literal(-0) // '-0f64'
|
|
22
|
+
* i64Literal(-456n) // '-456'
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* A double-quoted Rust string literal.
|
|
28
|
+
*
|
|
29
|
+
* Any other control character is rejected rather than escaped: no caller needs
|
|
30
|
+
* one, and a silently mangled literal is worse than a failed generation.
|
|
31
|
+
*
|
|
32
|
+
* @type {(v: string) => string}
|
|
33
|
+
*/
|
|
34
|
+
export const stringLiteral = v => `"${[...v].map(c => {
|
|
35
|
+
switch (c) {
|
|
36
|
+
case '\\': { return '\\\\' }
|
|
37
|
+
case '"': { return '\\"' }
|
|
38
|
+
case '\n': { return '\\n' }
|
|
39
|
+
case '\r': { return '\\r' }
|
|
40
|
+
case '\t': { return '\\t' }
|
|
41
|
+
default: {
|
|
42
|
+
if (c < ' ' || c === '\u007f') {
|
|
43
|
+
throw ['control character in a Rust string literal', v]
|
|
44
|
+
}
|
|
45
|
+
return c
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}).join('')}"`
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* An `f64` literal.
|
|
52
|
+
*
|
|
53
|
+
* `toString` already prints the shortest round-tripping decimal and Rust
|
|
54
|
+
* parses decimal float literals the same way JavaScript does, so the digits
|
|
55
|
+
* carry over unchanged. Only the three non-finite values and `-0` — which
|
|
56
|
+
* `toString` prints as `0` — need spelling out. The `f64` suffix keeps whole
|
|
57
|
+
* numbers from lexing as integers.
|
|
58
|
+
*
|
|
59
|
+
* @type {(v: number) => string}
|
|
60
|
+
*/
|
|
61
|
+
export const f64Literal = v => {
|
|
62
|
+
if (Number.isNaN(v)) { return 'f64::NAN' }
|
|
63
|
+
if (v === Infinity) { return 'f64::INFINITY' }
|
|
64
|
+
if (v === -Infinity) { return 'f64::NEG_INFINITY' }
|
|
65
|
+
return `${Object.is(v, -0) ? '-0' : v.toString()}f64`
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const i64Min = -(2n ** 63n)
|
|
69
|
+
const i64Max = 2n ** 63n - 1n
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* An `i64` literal. Throws for a value the type cannot hold, rather than
|
|
73
|
+
* silently truncating it.
|
|
74
|
+
*
|
|
75
|
+
* @type {(v: bigint) => string}
|
|
76
|
+
*/
|
|
77
|
+
export const i64Literal = v => {
|
|
78
|
+
if (v < i64Min || v > i64Max) { throw ['bigint out of i64 range', v] }
|
|
79
|
+
return v.toString()
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* A `snake_case` Rust identifier from a `camelCase` name.
|
|
84
|
+
*
|
|
85
|
+
* Only the casing is converted: a name that is not already a valid identifier
|
|
86
|
+
* stays invalid, so callers pass names they control.
|
|
87
|
+
*
|
|
88
|
+
* @type {(v: string) => string}
|
|
89
|
+
*/
|
|
90
|
+
export const snakeCase = v => [...v].map(c => {
|
|
91
|
+
const lower = c.toLowerCase()
|
|
92
|
+
return c === lower ? c : `_${lower}`
|
|
93
|
+
}).join('')
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Proofs for Rust source literals.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
export declare const proof: {
|
|
7
|
+
stringLiteral: () => void;
|
|
8
|
+
f64Literal: () => void;
|
|
9
|
+
i64Literal: () => void;
|
|
10
|
+
snakeCase: () => void;
|
|
11
|
+
throw: {
|
|
12
|
+
i64TooLarge: () => string;
|
|
13
|
+
i64TooSmall: () => string;
|
|
14
|
+
controlCharacter: () => string;
|
|
15
|
+
deleteCharacter: () => string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Proofs for Rust source literals.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { assertEq } from '../../asserts/module.f.mjs'
|
|
8
|
+
import { f64Literal, i64Literal, snakeCase, stringLiteral } from './module.f.mjs'
|
|
9
|
+
|
|
10
|
+
export const proof = {
|
|
11
|
+
stringLiteral: () => {
|
|
12
|
+
assertEq(stringLiteral(''), '""')
|
|
13
|
+
assertEq(stringLiteral('abc'), '"abc"')
|
|
14
|
+
assertEq(stringLiteral('a\\b'), '"a\\\\b"')
|
|
15
|
+
assertEq(stringLiteral('a"b'), '"a\\"b"')
|
|
16
|
+
assertEq(stringLiteral('a\nb'), '"a\\nb"')
|
|
17
|
+
assertEq(stringLiteral('a\rb'), '"a\\rb"')
|
|
18
|
+
assertEq(stringLiteral('a\tb'), '"a\\tb"')
|
|
19
|
+
// Non-ASCII needs no escape: Rust source is UTF-8.
|
|
20
|
+
assertEq(stringLiteral('é'), '"é"')
|
|
21
|
+
},
|
|
22
|
+
f64Literal: () => {
|
|
23
|
+
assertEq(f64Literal(NaN), 'f64::NAN')
|
|
24
|
+
assertEq(f64Literal(Infinity), 'f64::INFINITY')
|
|
25
|
+
assertEq(f64Literal(-Infinity), 'f64::NEG_INFINITY')
|
|
26
|
+
assertEq(f64Literal(-0), '-0f64')
|
|
27
|
+
assertEq(f64Literal(0), '0f64')
|
|
28
|
+
assertEq(f64Literal(2.3), '2.3f64')
|
|
29
|
+
assertEq(f64Literal(-239), '-239f64')
|
|
30
|
+
// Rust's exponent accepts a `+`, which is how `toString` prints it.
|
|
31
|
+
assertEq(f64Literal(1e21), '1e+21f64')
|
|
32
|
+
},
|
|
33
|
+
i64Literal: () => {
|
|
34
|
+
assertEq(i64Literal(0n), '0')
|
|
35
|
+
assertEq(i64Literal(-456n), '-456')
|
|
36
|
+
assertEq(i64Literal(-(2n ** 63n)), '-9223372036854775808')
|
|
37
|
+
assertEq(i64Literal(2n ** 63n - 1n), '9223372036854775807')
|
|
38
|
+
},
|
|
39
|
+
snakeCase: () => {
|
|
40
|
+
assertEq(snakeCase('emptyArray'), 'empty_array')
|
|
41
|
+
assertEq(snakeCase('stringCoercion'), 'string_coercion')
|
|
42
|
+
assertEq(snakeCase('eq'), 'eq')
|
|
43
|
+
},
|
|
44
|
+
throw: {
|
|
45
|
+
i64TooLarge: () => i64Literal(2n ** 63n),
|
|
46
|
+
i64TooSmall: () => i64Literal(-(2n ** 63n) - 1n),
|
|
47
|
+
controlCharacter: () => stringLiteral('a\u0000b'),
|
|
48
|
+
deleteCharacter: () => stringLiteral('a\u007fb'),
|
|
49
|
+
},
|
|
50
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Magic-byte MIME type detection.
|
|
3
|
+
*
|
|
4
|
+
* `detect` is a pure table lookup over the leading bytes of a `Vec`: it returns a
|
|
5
|
+
* MIME type string for the container formats whose signatures it knows, or `null`
|
|
6
|
+
* for anything else — text, unknown binary, or a `Vec` too short to match.
|
|
7
|
+
*
|
|
8
|
+
* Beside it, `detectStream` is the **streaming counterpart**: a byte-accepting
|
|
9
|
+
* state machine (length × magic-byte eliminator × UTF-8 validity DFA) that derives
|
|
10
|
+
* `{ length, mime_type, type }` by folding a CAS read stream in O(1) space, without
|
|
11
|
+
* ever buffering the blob into a single `maxLength`-bounded `Vec`. See the README
|
|
12
|
+
* for the factored design.
|
|
13
|
+
*
|
|
14
|
+
* The CAS store is type-agnostic and keeps raw bytes only, so type is never
|
|
15
|
+
* stored; it is recovered on read by sniffing the content. Callers decide what
|
|
16
|
+
* `null` means: the CAS MCP adapter falls back to a plain text result.
|
|
17
|
+
*
|
|
18
|
+
* ## Recognised signatures
|
|
19
|
+
*
|
|
20
|
+
* | MIME type | Leading bytes |
|
|
21
|
+
* |-------------------|----------------------------------------|
|
|
22
|
+
* | `image/png` | `89 50 4E 47 0D 0A 1A 0A` |
|
|
23
|
+
* | `image/jpeg` | `FF D8 FF` |
|
|
24
|
+
* | `image/gif` | `47 49 46 38 37 61` / `…39 61` (`"GIF87a"` / `"GIF89a"`) |
|
|
25
|
+
* | `image/webp` | `52 49 46 46 .. .. .. .. 57 45 42 50` (`"RIFF"…"WEBP"`) |
|
|
26
|
+
* | `application/pdf` | `25 50 44 46 2D` (`"%PDF-"`) |
|
|
27
|
+
* | `application/zip` | `50 4B 03 04` / `05 06` / `07 08` (`"PK"` entry, empty, or spanned) |
|
|
28
|
+
*
|
|
29
|
+
* WebP is the one signature with a gap: the four-byte little-endian file size
|
|
30
|
+
* sits between the `RIFF` and `WEBP` markers, so it is matched as a prefix plus
|
|
31
|
+
* a second marker at byte offset 8 rather than a single contiguous run.
|
|
32
|
+
*
|
|
33
|
+
* See `./types.ts` for the type-level API.
|
|
34
|
+
*
|
|
35
|
+
* @module
|
|
36
|
+
*/
|
|
37
|
+
import type { Vec } from '../../types/bit_vec/types.ts';
|
|
38
|
+
import type { Nullable } from '../../types/nullable/types.ts';
|
|
39
|
+
import type { Effect, Operation } from '../../effects/types.ts';
|
|
40
|
+
import type { List } from '../../effects/list/types.ts';
|
|
41
|
+
import type { IoResult } from '../../effects/node/types.ts';
|
|
42
|
+
import type { DetectMeta, DetectState } from './types.ts';
|
|
43
|
+
/**
|
|
44
|
+
* Detects the MIME type of `bytes` from its leading magic-byte signature.
|
|
45
|
+
*
|
|
46
|
+
* @returns the MIME type string for a recognized format, or `null` when the
|
|
47
|
+
* leading bytes match no known signature (including any `Vec` shorter than
|
|
48
|
+
* the signature it might otherwise match).
|
|
49
|
+
*
|
|
50
|
+
* @type {(bytes: Vec) => Nullable<string>}
|
|
51
|
+
*/
|
|
52
|
+
export declare const detect: (bytes: Vec) => Nullable<string>;
|
|
53
|
+
/** The initial detector state `q₀`.
|
|
54
|
+
*
|
|
55
|
+
* @type {DetectState}
|
|
56
|
+
*/
|
|
57
|
+
export declare const detectInit: DetectState;
|
|
58
|
+
/**
|
|
59
|
+
* Folds one `Vec` chunk into the detector state (`δ` over a whole chunk). Length
|
|
60
|
+
* always advances by the chunk's bit length; per-byte iteration stops as soon as
|
|
61
|
+
* the verdict is fixed (see {@link isSettled}), so large blobs — including large
|
|
62
|
+
* magic-matched ones — cost ≈ length counting.
|
|
63
|
+
*
|
|
64
|
+
* @type {(s: DetectState) => (chunk: Vec) => DetectState}
|
|
65
|
+
*/
|
|
66
|
+
export declare const push: (s: DetectState) => (chunk: Vec) => DetectState;
|
|
67
|
+
/**
|
|
68
|
+
* Reads the answer off the final state (`λ`). Reproduces the three-way result of
|
|
69
|
+
* the pure path: magic hit → `base64` + detected mime; else whole-blob-valid UTF-8
|
|
70
|
+
* that is also all-text (byte-aligned, no invalidity, no control bytes) → `text` +
|
|
71
|
+
* `text/plain`; else → `base64` + `application/octet-stream`. A valid-but-control
|
|
72
|
+
* blob (NUL, other controls) is well-formed UTF-8 yet falls through to the binary
|
|
73
|
+
* branch.
|
|
74
|
+
*
|
|
75
|
+
* @type {(s: DetectState) => DetectMeta}
|
|
76
|
+
*/
|
|
77
|
+
export declare const finish: (s: DetectState) => DetectMeta;
|
|
78
|
+
/**
|
|
79
|
+
* Classifies a whole `Vec` with the same state machine as {@link detectStream}.
|
|
80
|
+
* The single-buffer counterpart for callers that already hold the bytes (the
|
|
81
|
+
* `cas_get` `content: true` path materializes the blob anyway): both paths read
|
|
82
|
+
* the three-way `{ length, mime_type, type }` verdict from one machine instead of
|
|
83
|
+
* re-deriving it from `detect` + a separate UTF-8 check.
|
|
84
|
+
*
|
|
85
|
+
* @type {(bytes: Vec) => DetectMeta}
|
|
86
|
+
*/
|
|
87
|
+
export declare const detectVec: (bytes: Vec) => DetectMeta;
|
|
88
|
+
/**
|
|
89
|
+
* Folds a CAS read stream through {@link push} and reads {@link finish} at EOF,
|
|
90
|
+
* deriving `cas_get` metadata without ever materializing the blob. A read `error`
|
|
91
|
+
* item short-circuits into the `IoResult` error.
|
|
92
|
+
*
|
|
93
|
+
* @template {Operation} O
|
|
94
|
+
* @param {List<O, IoResult<Vec>>} stream
|
|
95
|
+
* @returns {Effect<O, IoResult<DetectMeta>>}
|
|
96
|
+
*/
|
|
97
|
+
export declare const detectStream: <O extends Operation>(stream: List<O, IoResult<Vec>>) => Effect<O, IoResult<DetectMeta>>;
|