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