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
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { hexDigitCodePoint, hexDigitValue, one, range } from './module.f.mjs'
|
|
2
|
+
import { stringify as jsonStringify } from '../../media/json/module.f.mjs'
|
|
3
|
+
import { sort } from '../../types/object/module.f.mjs'
|
|
4
|
+
import { assertEq } from '../../asserts/module.f.mjs'
|
|
5
|
+
|
|
6
|
+
const stringify = jsonStringify(sort)
|
|
7
|
+
|
|
8
|
+
const values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
|
|
9
|
+
|
|
10
|
+
export const proof = {
|
|
11
|
+
range: () => {
|
|
12
|
+
const r = stringify(range("A"))
|
|
13
|
+
assertEq(r, '[65,65]')
|
|
14
|
+
},
|
|
15
|
+
hexDigitValue: {
|
|
16
|
+
digit: () => {
|
|
17
|
+
assertEq(hexDigitValue(one('0')), 0)
|
|
18
|
+
assertEq(hexDigitValue(one('9')), 9)
|
|
19
|
+
},
|
|
20
|
+
latinSmallLetterAF: () => {
|
|
21
|
+
assertEq(hexDigitValue(one('a')), 10)
|
|
22
|
+
assertEq(hexDigitValue(one('f')), 15)
|
|
23
|
+
},
|
|
24
|
+
latinCapitalLetterAF: () => {
|
|
25
|
+
assertEq(hexDigitValue(one('A')), 10)
|
|
26
|
+
assertEq(hexDigitValue(one('F')), 15)
|
|
27
|
+
},
|
|
28
|
+
notAHexDigit: () => {
|
|
29
|
+
assertEq(hexDigitValue(one('/')), null)
|
|
30
|
+
assertEq(hexDigitValue(one(':')), null)
|
|
31
|
+
assertEq(hexDigitValue(one('@')), null)
|
|
32
|
+
assertEq(hexDigitValue(one('G')), null)
|
|
33
|
+
assertEq(hexDigitValue(one('`')), null)
|
|
34
|
+
assertEq(hexDigitValue(one('g')), null)
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
hexDigitCodePoint: {
|
|
38
|
+
lowercaseDigits: () => {
|
|
39
|
+
assertEq(String.fromCodePoint(...values.map(v => hexDigitCodePoint(v))), '0123456789abcdef')
|
|
40
|
+
},
|
|
41
|
+
roundTrip: () => {
|
|
42
|
+
assertEq(stringify(values.map(v => hexDigitValue(hexDigitCodePoint(v)))), stringify(values))
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
throw: {
|
|
46
|
+
oneThrowsOnEmpty: () => one(''),
|
|
47
|
+
},
|
|
48
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Unicode code-point contract for the UTF-8 and UTF-16 decoders: the
|
|
3
|
+
* error-tag mask used to flag invalid sequences, the streaming `decoder`
|
|
4
|
+
* factory that wraps a per-unit step and an end-of-input step into a single
|
|
5
|
+
* `List`-to-`List` conversion, the `eofFlush` factory that builds that
|
|
6
|
+
* end-of-input step, and the code-point classification predicates (BMP /
|
|
7
|
+
* surrogate / supplementary-plane / overall validity) that both codecs share.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*
|
|
11
|
+
* @import { List } from '../../types/list/types.ts'
|
|
12
|
+
* @import { StateScan } from '../../types/function/operator/types.ts'
|
|
13
|
+
*/
|
|
14
|
+
import type { List } from '../../types/list/types.ts';
|
|
15
|
+
import type { StateScan } from '../../types/function/operator/types.ts';
|
|
16
|
+
/**
|
|
17
|
+
* Error mask used to tag invalid code points or encoding errors. A decoded
|
|
18
|
+
* value with this bit set represents a malformed unit rather than a valid
|
|
19
|
+
* code point.
|
|
20
|
+
*/
|
|
21
|
+
export declare const errorMask = 2147483648;
|
|
22
|
+
/**
|
|
23
|
+
* Builds a streaming decoder from the two direction-specific steps.
|
|
24
|
+
*
|
|
25
|
+
* Decoding starts from the empty (`null`) state. The input is processed unit by
|
|
26
|
+
* unit through `byteOp`, then a trailing end-of-input marker drives `eofOp` to
|
|
27
|
+
* flush any leftover decoding state.
|
|
28
|
+
*
|
|
29
|
+
* @template Unit
|
|
30
|
+
* @template S
|
|
31
|
+
* @template Cp
|
|
32
|
+
* @param {StateScan<Unit, S | null, List<Cp>>} byteOp - The per-unit decoding step.
|
|
33
|
+
* @param {(state: S | null) => readonly [List<Cp>, S | null]} eofOp - The end-of-input step that flushes the remaining state.
|
|
34
|
+
* @returns {(input: List<Unit>) => List<Cp>} A function converting a list of code units into a list of code points.
|
|
35
|
+
*/
|
|
36
|
+
export declare const decoder: <Unit, S, Cp>(byteOp: StateScan<Unit, S | null, List<Cp>>, eofOp: (state: S | null) => readonly [List<Cp>, S | null]) => (input: List<Unit>) => List<Cp>;
|
|
37
|
+
/**
|
|
38
|
+
* Builds the end-of-input step {@link decoder} needs, from the one function
|
|
39
|
+
* that differs between codecs.
|
|
40
|
+
*
|
|
41
|
+
* The flush contract is the same for every decoder: leftover state at the end
|
|
42
|
+
* of the input becomes **exactly one** error unit and the state resets to
|
|
43
|
+
* empty (`null`); with no leftover state nothing is emitted. Only the mapping
|
|
44
|
+
* from a non-empty state to its error unit is codec-specific.
|
|
45
|
+
*
|
|
46
|
+
* @template S
|
|
47
|
+
* @template Cp
|
|
48
|
+
* @param {(state: S) => Cp} toError - Turns a non-empty leftover state into a single error unit.
|
|
49
|
+
* @returns {(state: S | null) => readonly [List<Cp>, S | null]} The end-of-input step.
|
|
50
|
+
*/
|
|
51
|
+
export declare const eofFlush: <S, Cp>(toError: (state: S) => Cp) => (state: S | null) => readonly [List<Cp>, S | null];
|
|
52
|
+
/**
|
|
53
|
+
* Checks whether the 16-bit word (U16) is a high surrogate.
|
|
54
|
+
* Range: 0xD800 - 0xDBFF.
|
|
55
|
+
*/
|
|
56
|
+
export declare const isHighSurrogate: (i: number) => boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Checks whether the 16-bit word (U16) is a low surrogate.
|
|
59
|
+
* Range: 0xDC00 - 0xDFFF.
|
|
60
|
+
*/
|
|
61
|
+
export declare const isLowSurrogate: (i: number) => boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Checks whether the code point is in the BMP range.
|
|
64
|
+
* BMP is the main Unicode plane that covers code points 0x0000 - 0xFFFF, except
|
|
65
|
+
* for the range of surrogates.
|
|
66
|
+
*
|
|
67
|
+
* @type {(codePoint: number) => boolean}
|
|
68
|
+
*/
|
|
69
|
+
export declare const isBmpCodePoint: (codePoint: number) => boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Checks whether the code point belongs to a supplementary (additional) Unicode
|
|
72
|
+
* plane. Supplementary planes cover code points from 0x010000 to 0x10FFFF.
|
|
73
|
+
*/
|
|
74
|
+
export declare const isSupplementaryPlane: (i: number) => boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Checks whether the code point is a valid scalar value: within the assignable
|
|
77
|
+
* Unicode range (0x0000 - 0x10FFFF) and not a surrogate.
|
|
78
|
+
*
|
|
79
|
+
* @type {(c: number) => boolean}
|
|
80
|
+
*/
|
|
81
|
+
export declare const isValidCodePoint: (c: number) => boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Checks whether the code point is a *text* code point — distinct from
|
|
84
|
+
* {@link isValidCodePoint}, which gates well-formedness for decoding. A code
|
|
85
|
+
* point is text unless it is a control character: the controls are 0x0000 -
|
|
86
|
+
* 0x001F, 0x007F (DEL), and 0x0080 - 0x009F (C1), minus the whitespace block
|
|
87
|
+
* 0x0009 - 0x000D (TAB, LF, VT, FF, CR), which is legitimate in text. Every
|
|
88
|
+
* code point at or above 0x0020 that is not DEL or a C1 control is text.
|
|
89
|
+
*
|
|
90
|
+
* @type {(c: number) => boolean}
|
|
91
|
+
*/
|
|
92
|
+
export declare const isTextCodePoint: (c: number) => boolean;
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Unicode code-point contract for the UTF-8 and UTF-16 decoders: the
|
|
3
|
+
* error-tag mask used to flag invalid sequences, the streaming `decoder`
|
|
4
|
+
* factory that wraps a per-unit step and an end-of-input step into a single
|
|
5
|
+
* `List`-to-`List` conversion, the `eofFlush` factory that builds that
|
|
6
|
+
* end-of-input step, and the code-point classification predicates (BMP /
|
|
7
|
+
* surrogate / supplementary-plane / overall validity) that both codecs share.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*
|
|
11
|
+
* @import { List } from '../../types/list/types.ts'
|
|
12
|
+
* @import { StateScan } from '../../types/function/operator/types.ts'
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { empty, flat, stateScan } from '../../types/list/module.f.mjs'
|
|
16
|
+
import { contains } from '../../types/range/module.f.mjs'
|
|
17
|
+
|
|
18
|
+
//
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Error mask used to tag invalid code points or encoding errors. A decoded
|
|
22
|
+
* value with this bit set represents a malformed unit rather than a valid
|
|
23
|
+
* code point.
|
|
24
|
+
*/
|
|
25
|
+
export const errorMask = 0b1000_0000_0000_0000_0000_0000_0000_0000
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Builds a streaming decoder from the two direction-specific steps.
|
|
29
|
+
*
|
|
30
|
+
* Decoding starts from the empty (`null`) state. The input is processed unit by
|
|
31
|
+
* unit through `byteOp`, then a trailing end-of-input marker drives `eofOp` to
|
|
32
|
+
* flush any leftover decoding state.
|
|
33
|
+
*
|
|
34
|
+
* @template Unit
|
|
35
|
+
* @template S
|
|
36
|
+
* @template Cp
|
|
37
|
+
* @param {StateScan<Unit, S | null, List<Cp>>} byteOp - The per-unit decoding step.
|
|
38
|
+
* @param {(state: S | null) => readonly [List<Cp>, S | null]} eofOp - The end-of-input step that flushes the remaining state.
|
|
39
|
+
* @returns {(input: List<Unit>) => List<Cp>} A function converting a list of code units into a list of code points.
|
|
40
|
+
*/
|
|
41
|
+
export const decoder = (
|
|
42
|
+
byteOp,
|
|
43
|
+
eofOp,
|
|
44
|
+
) => {
|
|
45
|
+
/** @type {StateScan<Unit | null, S | null, List<Cp>>} */
|
|
46
|
+
const op = (input, state) =>
|
|
47
|
+
input === null ? eofOp(state) : byteOp(input, state)
|
|
48
|
+
const run = stateScan(op)(null)
|
|
49
|
+
return input => flat(run(flat(/** @type {List<List<Unit|null>>} */([input, [null]]))))
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Builds the end-of-input step {@link decoder} needs, from the one function
|
|
54
|
+
* that differs between codecs.
|
|
55
|
+
*
|
|
56
|
+
* The flush contract is the same for every decoder: leftover state at the end
|
|
57
|
+
* of the input becomes **exactly one** error unit and the state resets to
|
|
58
|
+
* empty (`null`); with no leftover state nothing is emitted. Only the mapping
|
|
59
|
+
* from a non-empty state to its error unit is codec-specific.
|
|
60
|
+
*
|
|
61
|
+
* @template S
|
|
62
|
+
* @template Cp
|
|
63
|
+
* @param {(state: S) => Cp} toError - Turns a non-empty leftover state into a single error unit.
|
|
64
|
+
* @returns {(state: S | null) => readonly [List<Cp>, S | null]} The end-of-input step.
|
|
65
|
+
*/
|
|
66
|
+
export const eofFlush = toError => state =>
|
|
67
|
+
[state === null ? empty : [toError(state)], null]
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Unicode code-point classification boundaries. The surrogate block
|
|
71
|
+
* (`0xD800`–`0xDFFF`) splits into a high half (`0xD800`–`0xDBFF`) and a low half
|
|
72
|
+
* (`0xDC00`–`0xDFFF`); the BMP ends at `0xFFFF` and `maxCodePoint` (`0x10FFFF`)
|
|
73
|
+
* is the largest assignable code point. Every predicate below is derived from
|
|
74
|
+
* these constants so the surrogate bounds and the maximum appear exactly once.
|
|
75
|
+
*/
|
|
76
|
+
const surrogateMin = /** @type {const} */ 0xd800
|
|
77
|
+
const lowSurrogateMin = /** @type {const} */ 0xdc00
|
|
78
|
+
const surrogateMax = /** @type {const} */ 0xdfff
|
|
79
|
+
const bmpMax = /** @type {const} */ 0xffff
|
|
80
|
+
const maxCodePoint = /** @type {const} */ 0x10_ffff
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Checks whether the 16-bit word (U16) is a high surrogate.
|
|
84
|
+
* Range: 0xD800 - 0xDBFF.
|
|
85
|
+
*/
|
|
86
|
+
export const isHighSurrogate = contains(surrogateMin, lowSurrogateMin - 1)
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Checks whether the 16-bit word (U16) is a low surrogate.
|
|
90
|
+
* Range: 0xDC00 - 0xDFFF.
|
|
91
|
+
*/
|
|
92
|
+
export const isLowSurrogate = contains(lowSurrogateMin, surrogateMax)
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Ranges of code points for the lower (Low) and higher (High) parts of the BMP
|
|
96
|
+
* (Basic Multilingual Plane), i.e. the BMP with the surrogate block removed.
|
|
97
|
+
*/
|
|
98
|
+
const lowBmp = contains(0x0000, surrogateMin - 1)
|
|
99
|
+
const highBmp = contains(surrogateMax + 1, bmpMax)
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Checks whether the code point is in the BMP range.
|
|
103
|
+
* BMP is the main Unicode plane that covers code points 0x0000 - 0xFFFF, except
|
|
104
|
+
* for the range of surrogates.
|
|
105
|
+
*
|
|
106
|
+
* @type {(codePoint: number) => boolean}
|
|
107
|
+
*/
|
|
108
|
+
export const isBmpCodePoint = codePoint =>
|
|
109
|
+
lowBmp(codePoint) || highBmp(codePoint)
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Checks whether the code point belongs to a supplementary (additional) Unicode
|
|
113
|
+
* plane. Supplementary planes cover code points from 0x010000 to 0x10FFFF.
|
|
114
|
+
*/
|
|
115
|
+
export const isSupplementaryPlane = contains(bmpMax + 1, maxCodePoint)
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* The full assignable code-point range and the surrogate block, used to gate
|
|
119
|
+
* overall validity below.
|
|
120
|
+
*/
|
|
121
|
+
const validRange = contains(0, maxCodePoint)
|
|
122
|
+
const isSurrogate = contains(surrogateMin, surrogateMax)
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Checks whether the code point is a valid scalar value: within the assignable
|
|
126
|
+
* Unicode range (0x0000 - 0x10FFFF) and not a surrogate.
|
|
127
|
+
*
|
|
128
|
+
* @type {(c: number) => boolean}
|
|
129
|
+
*/
|
|
130
|
+
export const isValidCodePoint = c =>
|
|
131
|
+
validRange(c) && !isSurrogate(c)
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* The control-character blocks and the whitespace exception used to separate
|
|
135
|
+
* *text* code points from binary control bytes. C0 controls span 0x0000 -
|
|
136
|
+
* 0x001F; 0x007F (DEL) and the C1 controls (0x0080 - 0x009F) form one
|
|
137
|
+
* contiguous run; the whitespace block 0x0009 - 0x000D (TAB, LF, VT, FF, CR) is
|
|
138
|
+
* the only control range legitimate in text.
|
|
139
|
+
*/
|
|
140
|
+
const c0Control = contains(0x00, 0x1f)
|
|
141
|
+
const delAndC1Control = contains(0x7f, 0x9f)
|
|
142
|
+
const textWhitespace = contains(0x09, 0x0d)
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Checks whether the code point is a *text* code point — distinct from
|
|
146
|
+
* {@link isValidCodePoint}, which gates well-formedness for decoding. A code
|
|
147
|
+
* point is text unless it is a control character: the controls are 0x0000 -
|
|
148
|
+
* 0x001F, 0x007F (DEL), and 0x0080 - 0x009F (C1), minus the whitespace block
|
|
149
|
+
* 0x0009 - 0x000D (TAB, LF, VT, FF, CR), which is legitimate in text. Every
|
|
150
|
+
* code point at or above 0x0020 that is not DEL or a C1 control is text.
|
|
151
|
+
*
|
|
152
|
+
* @type {(c: number) => boolean}
|
|
153
|
+
*/
|
|
154
|
+
export const isTextCodePoint = c =>
|
|
155
|
+
textWhitespace(c) || !(c0Control(c) || delAndC1Control(c))
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const proof: {
|
|
2
|
+
eofFlush: (() => void)[];
|
|
3
|
+
isHighSurrogate: (() => void)[];
|
|
4
|
+
isLowSurrogate: (() => void)[];
|
|
5
|
+
isBmpCodePoint: (() => void)[];
|
|
6
|
+
isSupplementaryPlane: (() => void)[];
|
|
7
|
+
isValidCodePoint: (() => void)[];
|
|
8
|
+
isTextCodePoint: (() => void)[];
|
|
9
|
+
};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { assertEq } from '../../asserts/module.f.mjs'
|
|
2
|
+
import { toArray } from '../../types/list/module.f.mjs'
|
|
3
|
+
import {
|
|
4
|
+
eofFlush,
|
|
5
|
+
isBmpCodePoint,
|
|
6
|
+
isHighSurrogate,
|
|
7
|
+
isLowSurrogate,
|
|
8
|
+
isSupplementaryPlane,
|
|
9
|
+
isTextCodePoint,
|
|
10
|
+
isValidCodePoint,
|
|
11
|
+
} from './module.f.mjs'
|
|
12
|
+
|
|
13
|
+
/** @type {(actual: boolean, expected: boolean) => void} */
|
|
14
|
+
const check = (actual, expected) => {
|
|
15
|
+
if (actual !== expected) { throw `${actual} !== ${expected}` }
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* A stand-in for a codec's state-to-error function.
|
|
20
|
+
*
|
|
21
|
+
* @type {(state: number) => number}
|
|
22
|
+
*/
|
|
23
|
+
const negate = state => -state
|
|
24
|
+
|
|
25
|
+
const flush = eofFlush(negate)
|
|
26
|
+
|
|
27
|
+
export const proof = {
|
|
28
|
+
eofFlush: [
|
|
29
|
+
// no leftover state: nothing is flushed, the state stays empty
|
|
30
|
+
() => {
|
|
31
|
+
const [out, next] = flush(null)
|
|
32
|
+
assertEq(toArray(out).length, 0)
|
|
33
|
+
assertEq(next, null)
|
|
34
|
+
},
|
|
35
|
+
// leftover state: exactly one error unit, then the state resets
|
|
36
|
+
() => {
|
|
37
|
+
const [out, next] = flush(42)
|
|
38
|
+
const [first, ...rest] = toArray(out)
|
|
39
|
+
assertEq(first, -42)
|
|
40
|
+
assertEq(rest.length, 0)
|
|
41
|
+
assertEq(next, null)
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
isHighSurrogate: [
|
|
45
|
+
() => check(isHighSurrogate(0xd800), true),
|
|
46
|
+
() => check(isHighSurrogate(0xdbff), true),
|
|
47
|
+
() => check(isHighSurrogate(0xd7ff), false),
|
|
48
|
+
() => check(isHighSurrogate(0xdc00), false),
|
|
49
|
+
],
|
|
50
|
+
isLowSurrogate: [
|
|
51
|
+
() => check(isLowSurrogate(0xdc00), true),
|
|
52
|
+
() => check(isLowSurrogate(0xdfff), true),
|
|
53
|
+
() => check(isLowSurrogate(0xdbff), false),
|
|
54
|
+
() => check(isLowSurrogate(0xe000), false),
|
|
55
|
+
],
|
|
56
|
+
isBmpCodePoint: [
|
|
57
|
+
// lowBmp branch true
|
|
58
|
+
() => check(isBmpCodePoint(0x0000), true),
|
|
59
|
+
() => check(isBmpCodePoint(0xd7ff), true),
|
|
60
|
+
// lowBmp false, highBmp true
|
|
61
|
+
() => check(isBmpCodePoint(0xe000), true),
|
|
62
|
+
() => check(isBmpCodePoint(0xffff), true),
|
|
63
|
+
// both false: surrogate and supplementary
|
|
64
|
+
() => check(isBmpCodePoint(0xd800), false),
|
|
65
|
+
() => check(isBmpCodePoint(0x10000), false),
|
|
66
|
+
],
|
|
67
|
+
isSupplementaryPlane: [
|
|
68
|
+
() => check(isSupplementaryPlane(0x10000), true),
|
|
69
|
+
() => check(isSupplementaryPlane(0x10ffff), true),
|
|
70
|
+
() => check(isSupplementaryPlane(0xffff), false),
|
|
71
|
+
() => check(isSupplementaryPlane(0x110000), false),
|
|
72
|
+
],
|
|
73
|
+
isValidCodePoint: [
|
|
74
|
+
// in range, not surrogate
|
|
75
|
+
() => check(isValidCodePoint(0x0000), true),
|
|
76
|
+
() => check(isValidCodePoint(0x10ffff), true),
|
|
77
|
+
// in range, surrogate -> invalid
|
|
78
|
+
() => check(isValidCodePoint(0xd800), false),
|
|
79
|
+
() => check(isValidCodePoint(0xdfff), false),
|
|
80
|
+
// out of range -> validRange short-circuits false
|
|
81
|
+
() => check(isValidCodePoint(-1), false),
|
|
82
|
+
() => check(isValidCodePoint(0x110000), false),
|
|
83
|
+
],
|
|
84
|
+
isTextCodePoint: [
|
|
85
|
+
// C0 controls are binary...
|
|
86
|
+
() => check(isTextCodePoint(0x00), false), // NUL
|
|
87
|
+
() => check(isTextCodePoint(0x08), false), // BS
|
|
88
|
+
() => check(isTextCodePoint(0x1b), false), // ESC
|
|
89
|
+
() => check(isTextCodePoint(0x1f), false), // US
|
|
90
|
+
// ...except the whitespace block 0x09 - 0x0D
|
|
91
|
+
() => check(isTextCodePoint(0x09), true), // TAB
|
|
92
|
+
() => check(isTextCodePoint(0x0a), true), // LF
|
|
93
|
+
() => check(isTextCodePoint(0x0b), true), // VT
|
|
94
|
+
() => check(isTextCodePoint(0x0c), true), // FF
|
|
95
|
+
() => check(isTextCodePoint(0x0d), true), // CR
|
|
96
|
+
// printable ASCII is text
|
|
97
|
+
() => check(isTextCodePoint(0x20), true), // space
|
|
98
|
+
() => check(isTextCodePoint(0x41), true), // 'A'
|
|
99
|
+
() => check(isTextCodePoint(0x7e), true), // '~'
|
|
100
|
+
// DEL and the C1 controls are binary
|
|
101
|
+
() => check(isTextCodePoint(0x7f), false), // DEL
|
|
102
|
+
() => check(isTextCodePoint(0x80), false), // C1 start
|
|
103
|
+
() => check(isTextCodePoint(0x9f), false), // C1 end
|
|
104
|
+
// above C1 is text again
|
|
105
|
+
() => check(isTextCodePoint(0xa0), true), // NBSP
|
|
106
|
+
() => check(isTextCodePoint(0x10ffff), true),
|
|
107
|
+
],
|
|
108
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Indented text `Block` rendering and UTF-8 helpers: `flat` flattens a nested
|
|
3
|
+
* block into prefixed lines, while `utf8`/`utf8ToString` convert between
|
|
4
|
+
* strings and MSB-first UTF-8 bit vectors.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*
|
|
8
|
+
* @import { List } from '../types/list/types.ts'
|
|
9
|
+
* @import { Nullable } from '../types/nullable/types.ts'
|
|
10
|
+
* @import { Block, Item, Utf8 } from './types.ts'
|
|
11
|
+
*/
|
|
12
|
+
import type { List } from '../types/list/types.ts';
|
|
13
|
+
import type { Nullable } from '../types/nullable/types.ts';
|
|
14
|
+
import type { Block, Utf8 } from './types.ts';
|
|
15
|
+
/** @type {(indent: string) => (text: Block) => List<string>} */
|
|
16
|
+
export declare const flat: (indent: string) => (text: Block) => List<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Converts a string to an UTF-8, represented as an MSB first bit vector,
|
|
19
|
+
* returning `null` instead of throwing if the result would exceed
|
|
20
|
+
* `maxLength`.
|
|
21
|
+
*
|
|
22
|
+
* @param {string} s The input string to be converted.
|
|
23
|
+
* @returns {Nullable<Utf8>} The resulting UTF-8 bit vector, MSB first, or `null` on overflow.
|
|
24
|
+
*/
|
|
25
|
+
export declare const tryUtf8: (s: string) => Nullable<Utf8>;
|
|
26
|
+
/**
|
|
27
|
+
* Converts a string to an UTF-8, represented as an MSB first bit vector.
|
|
28
|
+
*
|
|
29
|
+
* @param s The input string to be converted.
|
|
30
|
+
* @returns The resulting UTF-8 bit vector, MSB first.
|
|
31
|
+
*
|
|
32
|
+
* @type {(s: string) => Utf8}
|
|
33
|
+
*/
|
|
34
|
+
export declare const utf8: (s: string) => Utf8;
|
|
35
|
+
/**
|
|
36
|
+
* Converts a UTF-8 bit vector with MSB first encoding to a string.
|
|
37
|
+
*
|
|
38
|
+
* @param {Utf8} msbV The UTF-8 bit vector with MSB first encoding.
|
|
39
|
+
* @returns {string} The resulting string.
|
|
40
|
+
*/
|
|
41
|
+
export declare const utf8ToString: (msbV: Utf8) => string;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Indented text `Block` rendering and UTF-8 helpers: `flat` flattens a nested
|
|
3
|
+
* block into prefixed lines, while `utf8`/`utf8ToString` convert between
|
|
4
|
+
* strings and MSB-first UTF-8 bit vectors.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*
|
|
8
|
+
* @import { List } from '../types/list/types.ts'
|
|
9
|
+
* @import { Nullable } from '../types/nullable/types.ts'
|
|
10
|
+
* @import { Block, Item, Utf8 } from './types.ts'
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { msb, tryU8ListToVec, u8List } from '../types/bit_vec/module.f.mjs'
|
|
14
|
+
import { flatMap } from '../types/list/module.f.mjs'
|
|
15
|
+
import { fromCodePointList, toCodePointList } from './utf8/module.f.mjs'
|
|
16
|
+
import { stringToCodePointList, codePointListToString } from './utf16/module.f.mjs'
|
|
17
|
+
import { mapUnwrap } from '../types/nullable/module.f.mjs'
|
|
18
|
+
|
|
19
|
+
/** @type {(indent: string) => (text: Block) => List<string>} */
|
|
20
|
+
export const flat = indent => {
|
|
21
|
+
/** @param {string} prefix */
|
|
22
|
+
const f = prefix => {
|
|
23
|
+
/** @type {(item: Item) => List<string>} */
|
|
24
|
+
const g = item =>
|
|
25
|
+
typeof (item) === 'string' ? [`${prefix}${item}`] : f(`${prefix}${indent}`)(item)
|
|
26
|
+
return flatMap(g)
|
|
27
|
+
}
|
|
28
|
+
return f('')
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const tryU8ListToVecMsb = tryU8ListToVec(msb)
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Converts a string to an UTF-8, represented as an MSB first bit vector,
|
|
35
|
+
* returning `null` instead of throwing if the result would exceed
|
|
36
|
+
* `maxLength`.
|
|
37
|
+
*
|
|
38
|
+
* @param {string} s The input string to be converted.
|
|
39
|
+
* @returns {Nullable<Utf8>} The resulting UTF-8 bit vector, MSB first, or `null` on overflow.
|
|
40
|
+
*/
|
|
41
|
+
export const tryUtf8 = s =>
|
|
42
|
+
tryU8ListToVecMsb(fromCodePointList(stringToCodePointList(s)))
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Converts a string to an UTF-8, represented as an MSB first bit vector.
|
|
46
|
+
*
|
|
47
|
+
* @param s The input string to be converted.
|
|
48
|
+
* @returns The resulting UTF-8 bit vector, MSB first.
|
|
49
|
+
*
|
|
50
|
+
* @type {(s: string) => Utf8}
|
|
51
|
+
*/
|
|
52
|
+
export const utf8 =
|
|
53
|
+
mapUnwrap(tryUtf8)
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Converts a UTF-8 bit vector with MSB first encoding to a string.
|
|
57
|
+
*
|
|
58
|
+
* @param {Utf8} msbV The UTF-8 bit vector with MSB first encoding.
|
|
59
|
+
* @returns {string} The resulting string.
|
|
60
|
+
*/
|
|
61
|
+
export const utf8ToString = msbV =>
|
|
62
|
+
codePointListToString(toCodePointList(u8List(msb)(msbV)))
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @import { Block } from './types.ts'
|
|
3
|
+
*/
|
|
4
|
+
export declare const proof: {
|
|
5
|
+
block: () => void;
|
|
6
|
+
encoding: () => void;
|
|
7
|
+
tryUtf8RoundTrip: () => void;
|
|
8
|
+
tryUtf8Empty: () => void;
|
|
9
|
+
tryUtf8Overflow: {
|
|
10
|
+
try: () => void;
|
|
11
|
+
throw: () => void;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @import { Block } from './types.ts'
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { assertEq, assertNotNullish } from '../asserts/module.f.mjs'
|
|
6
|
+
import { flat, utf8, utf8ToString, tryUtf8 } from './module.f.mjs'
|
|
7
|
+
import { join } from '../types/string/module.f.mjs'
|
|
8
|
+
import { empty, maxLengthBytes } from '../types/bit_vec/module.f.mjs'
|
|
9
|
+
|
|
10
|
+
const overflowStr = 'a'.repeat(Number(maxLengthBytes) + 1)
|
|
11
|
+
|
|
12
|
+
export const proof = {
|
|
13
|
+
block: () => {
|
|
14
|
+
/** @type {Block} */
|
|
15
|
+
const text = [
|
|
16
|
+
'a',
|
|
17
|
+
'b',
|
|
18
|
+
() => [
|
|
19
|
+
'c',
|
|
20
|
+
() => ['d'],
|
|
21
|
+
],
|
|
22
|
+
'e',
|
|
23
|
+
]
|
|
24
|
+
const result = join('\n')(flat(':')(text))
|
|
25
|
+
assertEq(result, 'a\nb\n:c\n::d\ne')
|
|
26
|
+
},
|
|
27
|
+
encoding: () => {
|
|
28
|
+
const v = utf8('Hello world!')
|
|
29
|
+
const r = utf8ToString(v)
|
|
30
|
+
assertEq(r, 'Hello world!')
|
|
31
|
+
},
|
|
32
|
+
tryUtf8RoundTrip: () => {
|
|
33
|
+
const v = assertNotNullish(tryUtf8('Hello world!'))
|
|
34
|
+
assertEq(v, utf8('Hello world!'))
|
|
35
|
+
assertEq(utf8ToString(v), 'Hello world!')
|
|
36
|
+
},
|
|
37
|
+
tryUtf8Empty: () => {
|
|
38
|
+
assertEq(tryUtf8(''), empty)
|
|
39
|
+
},
|
|
40
|
+
tryUtf8Overflow: {
|
|
41
|
+
// One byte past `maxLengthBytes`; `tryUtf8` should report `null`
|
|
42
|
+
// instead of building an oversized `bigint`, and the throwing `utf8`
|
|
43
|
+
// wrapper should raise on the same input.
|
|
44
|
+
try: () => {
|
|
45
|
+
assertEq(tryUtf8(overflowStr), null)
|
|
46
|
+
},
|
|
47
|
+
throw: () => {
|
|
48
|
+
utf8(overflowStr)
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ANSI Control Sequence Introducer (CSI) and Select Graphic Rendition (SGR)
|
|
3
|
+
* helpers for writing formatted terminal output and TTY-aware console streams.
|
|
4
|
+
*
|
|
5
|
+
* See `./types.ts` for the type-level API.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*
|
|
9
|
+
* @import { Write, WriteConsoles, NodeProgramOptions } from '../../effects/node/types.ts'
|
|
10
|
+
* @import { Effect } from '../../effects/types.ts'
|
|
11
|
+
* @import { Stdout, WriteText, CsiConsole } from './types.ts'
|
|
12
|
+
*/
|
|
13
|
+
import type { Write, WriteConsoles, NodeProgramOptions } from '../../effects/node/types.ts';
|
|
14
|
+
import type { Effect } from '../../effects/types.ts';
|
|
15
|
+
import type { Stdout, WriteText } from './types.ts';
|
|
16
|
+
/** @type {string} */
|
|
17
|
+
export declare const backspace: string;
|
|
18
|
+
export type _End = 'm';
|
|
19
|
+
export type _Csi = (code: number | string) => string;
|
|
20
|
+
/**
|
|
21
|
+
* Control Sequence Introducer (CSI) escape sequence.
|
|
22
|
+
* https://en.wikipedia.org/wiki/ANSI_escape_code#Control_Sequence_Introducer_commands
|
|
23
|
+
*
|
|
24
|
+
* @param end - The final character that indicates the type of sequence.
|
|
25
|
+
* @returns A function that takes a code (number or string) and returns the complete ANSI escape sequence.
|
|
26
|
+
*
|
|
27
|
+
* @type {(end: _End) => _Csi}
|
|
28
|
+
*/
|
|
29
|
+
export declare const csi: (end: _End) => _Csi;
|
|
30
|
+
/**
|
|
31
|
+
* Specialization of CSI for Select Graphic Rendition (SGR) sequences.
|
|
32
|
+
* https://en.wikipedia.org/wiki/ANSI_escape_code#SGR
|
|
33
|
+
*
|
|
34
|
+
* @type {_Csi}
|
|
35
|
+
*/
|
|
36
|
+
export declare const sgr: _Csi;
|
|
37
|
+
/** Resets all SGR styles to terminal defaults. */
|
|
38
|
+
export declare const reset: string;
|
|
39
|
+
/** Enables bold/intense text rendering when supported by the terminal. */
|
|
40
|
+
export declare const bold: string;
|
|
41
|
+
/** Applies red foreground color to subsequent text. */
|
|
42
|
+
export declare const fgRed: string;
|
|
43
|
+
/** Applies green foreground color to subsequent text. */
|
|
44
|
+
export declare const fgGreen: string;
|
|
45
|
+
/**
|
|
46
|
+
* Creates a stateful text writer that rewrites the previous value using backspaces.
|
|
47
|
+
*
|
|
48
|
+
* @param stdout - Destination output stream.
|
|
49
|
+
* @returns A recursive writer that replaces prior text on each call.
|
|
50
|
+
*
|
|
51
|
+
* @type {(stdout: Stdout) => WriteText}
|
|
52
|
+
*/
|
|
53
|
+
export declare const createConsoleText: (stdout: Stdout) => WriteText;
|
|
54
|
+
/**
|
|
55
|
+
* Effect-based TTY-aware write. Strips ANSI SGR sequences when the target
|
|
56
|
+
* stream is not a TTY, then encodes to UTF-8 and emits a `Write` effect.
|
|
57
|
+
* Does NOT append `\n` — callers are responsible for line termination.
|
|
58
|
+
*
|
|
59
|
+
* @type {(options: NodeProgramOptions) => (stream: WriteConsoles) => (s: string) => Effect<Write, void>}
|
|
60
|
+
*/
|
|
61
|
+
export declare const csiWrite: (options: NodeProgramOptions) => (stream: WriteConsoles) => (s: string) => Effect<Write, void>;
|