functionalscript 0.44.0 → 0.46.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 +5 -3
- package/fjs/asn.1/module.f.mjs +8 -1
- package/fjs/asn.1/proof.f.d.mts +15 -0
- package/fjs/asn.1/proof.f.mjs +31 -3
- package/fjs/asserts/module.f.d.mts +14 -0
- package/fjs/asserts/module.f.mjs +20 -0
- package/fjs/asserts/proof.f.d.mts +3 -0
- package/fjs/asserts/proof.f.mjs +15 -1
- package/fjs/basen/base128/module.f.mjs +22 -5
- package/fjs/basen/base128/proof.f.d.mts +3 -1
- package/fjs/basen/base128/proof.f.mjs +3 -1
- package/fjs/basen/base64/module.f.mjs +7 -3
- package/fjs/basen/base64/proof.f.d.mts +3 -1
- package/fjs/basen/base64/proof.f.mjs +7 -4
- package/fjs/basen/cbase32/proof.f.d.mts +3 -1
- package/fjs/basen/cbase32/proof.f.mjs +3 -1
- package/fjs/bnf/data/module.f.d.mts +32 -6
- package/fjs/bnf/data/module.f.mjs +112 -7
- package/fjs/bnf/data/proof.f.d.mts +2 -0
- package/fjs/bnf/data/proof.f.mjs +74 -4
- package/fjs/bnf/data/types.d.ts +20 -2
- package/fjs/bnf/descent/module.f.d.mts +34 -5
- package/fjs/bnf/descent/module.f.mjs +176 -54
- package/fjs/bnf/descent/proof.f.d.mts +3 -0
- package/fjs/bnf/descent/proof.f.mjs +189 -27
- package/fjs/bnf/descent/types.d.ts +24 -18
- package/fjs/bnf/ll1/module.f.d.mts +74 -6
- package/fjs/bnf/ll1/module.f.mjs +297 -95
- package/fjs/bnf/ll1/proof.f.d.mts +17 -2
- package/fjs/bnf/ll1/proof.f.mjs +372 -137
- package/fjs/bnf/ll1/types.d.ts +25 -27
- package/fjs/bnf/matcher/module.f.d.mts +66 -0
- package/fjs/bnf/matcher/module.f.mjs +81 -0
- package/fjs/bnf/matcher/proof.f.d.mts +10 -0
- package/fjs/bnf/matcher/proof.f.mjs +79 -0
- package/fjs/bnf/matcher/types.d.ts +54 -0
- package/fjs/bnf/module.f.d.mts +15 -6
- package/fjs/bnf/module.f.mjs +52 -11
- package/fjs/bnf/proof.f.d.mts +2 -0
- package/fjs/bnf/proof.f.mjs +79 -3
- package/fjs/bnf/testlib.f.d.mts +31 -0
- package/fjs/bnf/testlib.f.mjs +80 -0
- package/fjs/bnf/token_symbol/module.f.d.mts +4 -3
- package/fjs/bnf/token_symbol/module.f.mjs +7 -6
- package/fjs/bnf/token_symbol/proof.f.mjs +5 -2
- package/fjs/bnf/token_symbol/types.d.ts +2 -2
- package/fjs/bnf/types.d.ts +10 -3
- package/fjs/cas/cli/module.f.d.mts +1 -1
- package/fjs/cas/cli/module.f.mjs +14 -20
- package/fjs/cas/cli/proof.f.d.mts +4 -4
- package/fjs/cas/cli/proof.f.mjs +47 -34
- package/fjs/cas/evo/module.f.d.mts +71 -31
- package/fjs/cas/evo/module.f.mjs +223 -138
- package/fjs/cas/evo/proof.f.d.mts +10 -1
- package/fjs/cas/evo/proof.f.mjs +311 -226
- package/fjs/cas/evo/types.d.ts +45 -9
- package/fjs/cas/module.f.d.mts +18 -32
- package/fjs/cas/module.f.mjs +164 -176
- package/fjs/cas/proof.f.d.mts +11 -8
- package/fjs/cas/proof.f.mjs +259 -147
- package/fjs/cas/types.d.ts +24 -10
- package/fjs/ci/common/module.f.d.mts +1 -1
- package/fjs/ci/common/module.f.mjs +1 -0
- package/fjs/ci/config/module.f.d.mts +3 -3
- package/fjs/ci/config/module.f.mjs +3 -3
- package/fjs/ci/module.f.d.mts +5 -5
- package/fjs/ci/module.f.mjs +8 -7
- package/fjs/ci/nix/module.f.d.mts +7 -5
- package/fjs/ci/nix/module.f.mjs +13 -12
- package/fjs/ci/nix/proof.f.d.mts +2 -0
- package/fjs/ci/nix/proof.f.mjs +4 -4
- package/fjs/ci/proof.f.d.mts +4 -2
- package/fjs/ci/proof.f.mjs +13 -8
- package/fjs/cli/module.f.d.mts +4 -6
- package/fjs/cli/module.f.mjs +4 -8
- package/fjs/cli/proof.f.d.mts +4 -2
- package/fjs/cli/proof.f.mjs +21 -18
- package/fjs/cli/types.d.ts +2 -3
- package/fjs/common/monoid/module.f.d.mts +70 -12
- package/fjs/common/monoid/module.f.mjs +177 -14
- package/fjs/common/monoid/proof.f.d.mts +12 -1
- package/fjs/common/monoid/proof.f.mjs +88 -4
- package/fjs/common/monoid/types.d.ts +23 -0
- package/fjs/crypto/hmac/module.f.mjs +2 -2
- package/fjs/crypto/secp/proof.f.d.mts +3 -1
- package/fjs/crypto/secp/proof.f.mjs +3 -1
- package/fjs/crypto/sha2/module.f.mjs +3 -1
- package/fjs/crypto/sha2/proof.f.d.mts +4 -1
- package/fjs/crypto/sha2/proof.f.mjs +27 -1
- package/fjs/crypto/sha2/types.d.ts +11 -0
- package/fjs/crypto/sign/module.f.mjs +2 -2
- package/fjs/crypto/vdf/module.f.d.mts +23 -4
- package/fjs/crypto/vdf/module.f.mjs +6 -4
- package/fjs/dev/module.f.d.mts +17 -5
- package/fjs/dev/module.f.mjs +60 -30
- package/fjs/dev/update/module.f.d.mts +11 -3
- package/fjs/dev/update/module.f.mjs +16 -11
- package/fjs/dev/update/proof.f.d.mts +4 -3
- package/fjs/dev/update/proof.f.mjs +11 -7
- package/fjs/djs/module.f.d.mts +13 -5
- package/fjs/djs/module.f.mjs +31 -16
- package/fjs/djs/parser/module.f.d.mts +16 -3
- package/fjs/djs/parser/module.f.mjs +135 -16
- package/fjs/djs/parser/proof.f.d.mts +8 -1
- package/fjs/djs/parser/proof.f.mjs +287 -13
- package/fjs/djs/parser/types.d.ts +7 -1
- package/fjs/djs/proof.f.d.mts +20 -1
- package/fjs/djs/proof.f.mjs +190 -12
- package/fjs/djs/serializer/module.f.d.mts +25 -8
- package/fjs/djs/serializer/module.f.mjs +66 -19
- package/fjs/djs/serializer/proof.f.d.mts +5 -0
- package/fjs/djs/serializer/proof.f.mjs +23 -1
- package/fjs/djs/tokenizer/module.f.d.mts +17 -5
- package/fjs/djs/tokenizer/module.f.mjs +120 -73
- package/fjs/djs/tokenizer/proof.f.d.mts +3 -0
- package/fjs/djs/tokenizer/proof.f.mjs +86 -67
- package/fjs/djs/transpiler/module.f.d.mts +13 -19
- package/fjs/djs/transpiler/module.f.mjs +79 -72
- package/fjs/djs/transpiler/types.d.ts +29 -0
- package/fjs/djs/types.d.ts +7 -1
- package/fjs/effects/list/module.f.d.mts +23 -12
- package/fjs/effects/list/module.f.mjs +16 -12
- package/fjs/effects/list/types.d.ts +27 -7
- package/fjs/effects/memory/module.f.d.mts +6 -3
- package/fjs/effects/memory/module.f.mjs +7 -7
- package/fjs/effects/memory/proof.f.d.mts +4 -0
- package/fjs/effects/memory/proof.f.mjs +18 -9
- package/fjs/effects/memory/types.d.ts +4 -3
- package/fjs/effects/mock/module.f.d.mts +28 -4
- package/fjs/effects/mock/module.f.mjs +39 -5
- package/fjs/effects/mock/types.d.ts +10 -1
- package/fjs/effects/module.d.mts +12 -2
- package/fjs/effects/module.f.d.mts +469 -281
- package/fjs/effects/module.f.mjs +538 -299
- package/fjs/effects/module.mjs +11 -2
- package/fjs/effects/node/memory/module.d.mts +7 -2
- package/fjs/effects/node/memory/module.mjs +9 -5
- package/fjs/effects/node/memory/proof.d.mts +2 -0
- package/fjs/effects/node/memory/proof.mjs +12 -5
- package/fjs/effects/node/module.d.mts +8 -2
- package/fjs/effects/node/module.f.d.mts +183 -43
- package/fjs/effects/node/module.f.mjs +260 -62
- package/fjs/effects/node/module.mjs +61 -50
- package/fjs/effects/node/proof.f.d.mts +28 -2
- package/fjs/effects/node/proof.f.mjs +161 -42
- package/fjs/effects/node/types.d.ts +106 -18
- package/fjs/effects/node/virtual/module.f.d.mts +21 -4
- package/fjs/effects/node/virtual/module.f.mjs +113 -70
- package/fjs/effects/node/virtual/proof.f.d.mts +31 -2
- package/fjs/effects/node/virtual/proof.f.mjs +201 -8
- package/fjs/effects/proof.f.d.mts +69 -34
- package/fjs/effects/proof.f.mjs +413 -130
- package/fjs/effects/types.d.ts +161 -33
- package/fjs/emergent_testing/all.test.d.mts +8 -0
- package/fjs/emergent_testing/all.test.mjs +14 -0
- package/fjs/emergent_testing/module.f.d.mts +22 -10
- package/fjs/emergent_testing/module.f.mjs +119 -85
- package/fjs/emergent_testing/proof.f.d.mts +21 -7
- package/fjs/emergent_testing/proof.f.mjs +169 -35
- package/fjs/emergent_testing/types.d.ts +22 -4
- package/fjs/fsc/bnf.f.d.mts +3 -0
- package/fjs/fsc/bnf.f.mjs +4 -1
- package/fjs/fsc/json.f.d.mts +3 -0
- package/fjs/fsc/json.f.mjs +4 -1
- package/fjs/fsc/module.f.d.mts +9 -0
- package/fjs/fsc/module.f.mjs +5 -3
- package/fjs/fsm/module.f.d.mts +14 -4
- package/fjs/fsm/module.f.mjs +54 -37
- package/fjs/fsm/proof.f.d.mts +5 -0
- package/fjs/fsm/proof.f.mjs +87 -115
- package/fjs/js/keywords/module.f.d.mts +52 -0
- package/fjs/js/keywords/module.f.mjs +72 -0
- package/fjs/{emergent_testing/scenarios/return-value.pass.d.ts → js/keywords/proof.f.d.mts} +1 -1
- package/fjs/js/keywords/proof.f.mjs +13 -0
- package/fjs/js/tokenizer/module.f.d.mts +30 -3
- package/fjs/js/tokenizer/module.f.mjs +161 -211
- package/fjs/js/tokenizer/proof.f.d.mts +1 -0
- package/fjs/js/tokenizer/proof.f.mjs +54 -24
- package/fjs/js/tokenizer/types.d.ts +33 -24
- package/fjs/mcp/cas/module.f.d.mts +1 -6
- package/fjs/mcp/cas/module.f.mjs +55 -51
- package/fjs/mcp/cas/proof.f.d.mts +15 -0
- package/fjs/mcp/cas/proof.f.mjs +174 -0
- package/fjs/mcp/evo/module.f.d.mts +19 -10
- package/fjs/mcp/evo/module.f.mjs +48 -27
- package/fjs/mcp/evo/proof.f.d.mts +6 -1
- package/fjs/mcp/evo/proof.f.mjs +115 -31
- package/fjs/mcp/module.f.d.mts +39 -4
- package/fjs/mcp/module.f.mjs +14 -12
- package/fjs/mcp/proof.f.d.mts +13 -1
- package/fjs/mcp/proof.f.mjs +120 -61
- package/fjs/media/html/module.f.d.mts +12 -0
- package/fjs/media/html/module.f.mjs +7 -5
- package/fjs/media/html/proof.f.d.mts +3 -0
- package/fjs/media/html/proof.f.mjs +4 -1
- package/fjs/media/json/extended/module.f.d.mts +82 -0
- package/fjs/media/json/extended/module.f.mjs +153 -0
- package/fjs/media/json/extended/proof.f.d.mts +42 -0
- package/fjs/media/json/extended/proof.f.mjs +127 -0
- package/fjs/media/json/extended/types.d.ts +23 -0
- package/fjs/media/json/module.f.d.mts +8 -2
- package/fjs/media/json/module.f.mjs +43 -41
- package/fjs/media/json/number/module.f.d.mts +59 -0
- package/fjs/media/json/number/module.f.mjs +136 -0
- package/fjs/media/json/number/proof.f.d.mts +24 -0
- package/fjs/media/json/number/proof.f.mjs +86 -0
- package/fjs/media/json/number/types.d.ts +28 -0
- package/fjs/media/json/parser/module.f.d.mts +25 -13
- package/fjs/media/json/parser/module.f.mjs +133 -72
- package/fjs/media/json/parser/proof.f.d.mts +5 -0
- package/fjs/media/json/parser/proof.f.mjs +31 -1
- package/fjs/media/json/parser/types.d.ts +38 -14
- package/fjs/media/json/rtti/module.f.d.mts +1 -1
- package/fjs/media/json/rtti/module.f.mjs +1 -1
- package/fjs/media/json/rtti/proof.f.d.mts +3 -0
- package/fjs/media/json/rtti/proof.f.mjs +12 -12
- package/fjs/media/json/schema/module.f.d.mts +61 -27
- package/fjs/media/json/schema/module.f.mjs +218 -63
- package/fjs/media/json/schema/proof.f.d.mts +41 -1
- package/fjs/media/json/schema/proof.f.mjs +220 -9
- package/fjs/media/json/serializer/module.f.d.mts +44 -0
- package/fjs/media/json/serializer/module.f.mjs +71 -9
- package/fjs/media/json/tokenizer/module.f.d.mts +8 -0
- package/fjs/media/json/tokenizer/module.f.mjs +31 -8
- package/fjs/media/json/tokenizer/proof.f.d.mts +6 -0
- package/fjs/media/json/tokenizer/proof.f.mjs +62 -21
- package/fjs/media/json/types.d.ts +36 -10
- package/fjs/media/lock/module.f.d.mts +100 -0
- package/fjs/media/lock/module.f.mjs +125 -0
- package/fjs/media/lock/proof.f.d.mts +33 -0
- package/fjs/media/lock/proof.f.mjs +196 -0
- package/fjs/media/lock/types.d.ts +15 -0
- package/fjs/media/module.f.d.mts +6 -5
- package/fjs/media/module.f.mjs +8 -7
- package/fjs/media/nix/module.f.d.mts +13 -0
- package/fjs/media/nix/module.f.mjs +4 -2
- package/fjs/media/nix/proof.f.d.mts +3 -0
- package/fjs/media/nix/proof.f.mjs +4 -1
- package/fjs/media/note/module.f.d.mts +121 -0
- package/fjs/media/note/module.f.mjs +131 -0
- package/fjs/media/note/proof.f.d.mts +29 -0
- package/fjs/media/note/proof.f.mjs +150 -0
- package/fjs/media/note/types.d.ts +10 -0
- package/fjs/media/proof.f.d.mts +4 -1
- package/fjs/media/proof.f.mjs +40 -21
- package/fjs/media/revision/module.f.d.mts +83 -7
- package/fjs/media/revision/module.f.mjs +127 -23
- package/fjs/media/revision/proof.f.d.mts +14 -0
- package/fjs/media/revision/proof.f.mjs +93 -2
- package/fjs/media/revision/types.d.ts +34 -5
- package/fjs/media/type/module.f.d.mts +53 -18
- package/fjs/media/type/module.f.mjs +87 -97
- package/fjs/media/type/proof.f.d.mts +17 -0
- package/fjs/media/type/proof.f.mjs +73 -13
- package/fjs/module.d.mts +5 -0
- package/fjs/module.f.d.mts +8 -0
- package/fjs/module.f.mjs +33 -10
- package/fjs/module.mjs +6 -0
- package/fjs/nanvm/proof.f.mjs +3 -3
- package/fjs/nanvm/rust/module.f.mjs +1 -1
- package/fjs/nanvm/update/module.f.d.mts +4 -4
- package/fjs/nanvm/update/module.f.mjs +8 -9
- package/fjs/nanvm/update/proof.f.mjs +4 -3
- package/fjs/path/module.f.d.mts +8 -0
- package/fjs/path/module.f.mjs +4 -2
- package/fjs/proof.f.d.mts +7 -3
- package/fjs/proof.f.mjs +41 -12
- package/fjs/protocol/json_rpc/module.f.d.mts +3 -3
- package/fjs/protocol/json_rpc/module.f.mjs +10 -7
- package/fjs/protocol/json_rpc/proof.f.d.mts +6 -0
- package/fjs/protocol/json_rpc/proof.f.mjs +26 -5
- package/fjs/protocol/mcp/module.f.d.mts +10 -13
- package/fjs/protocol/mcp/module.f.mjs +74 -58
- package/fjs/protocol/mcp/proof.f.d.mts +16 -3
- package/fjs/protocol/mcp/proof.f.mjs +224 -69
- package/fjs/protocol/mcp/stdio/module.f.d.mts +17 -11
- package/fjs/protocol/mcp/stdio/module.f.mjs +39 -33
- package/fjs/protocol/mcp/stdio/proof.f.d.mts +5 -3
- package/fjs/protocol/mcp/stdio/proof.f.mjs +46 -13
- package/fjs/protocol/mcp/stdio/types.d.ts +14 -0
- package/fjs/protocol/mcp/types.d.ts +17 -6
- package/fjs/sul/id/module.f.d.mts +4 -0
- package/fjs/sul/id/module.f.mjs +6 -6
- package/fjs/sul/level/hash/module.f.d.mts +4 -1
- package/fjs/sul/level/hash/module.f.mjs +6 -4
- package/fjs/sul/level/hash/proof.f.d.mts +4 -0
- package/fjs/sul/level/hash/proof.f.mjs +7 -4
- package/fjs/sul/level/literal/module.f.d.mts +4 -1
- package/fjs/sul/level/literal/module.f.mjs +4 -3
- package/fjs/sul/level/literal/proof.f.d.mts +3 -0
- package/fjs/sul/level/literal/proof.f.mjs +4 -1
- package/fjs/sul/module.f.d.mts +5 -3
- package/fjs/sul/module.f.mjs +23 -17
- package/fjs/sul/proof.f.d.mts +4 -0
- package/fjs/sul/proof.f.mjs +5 -2
- package/fjs/text/ascii/module.f.d.mts +26 -0
- package/fjs/text/ascii/module.f.mjs +49 -1
- package/fjs/text/ascii/proof.f.d.mts +10 -0
- package/fjs/text/ascii/proof.f.mjs +33 -1
- package/fjs/text/code_point/module.f.d.mts +29 -3
- package/fjs/text/code_point/module.f.mjs +32 -9
- package/fjs/text/code_point/proof.f.d.mts +2 -0
- package/fjs/text/code_point/proof.f.mjs +39 -0
- package/fjs/text/module.f.d.mts +4 -2
- package/fjs/text/module.f.mjs +4 -3
- package/fjs/text/proof.f.d.mts +3 -0
- package/fjs/text/proof.f.mjs +4 -1
- package/fjs/text/sgr/module.f.d.mts +6 -5
- package/fjs/text/sgr/module.f.mjs +8 -8
- package/fjs/text/sgr/proof.f.d.mts +3 -0
- package/fjs/text/sgr/proof.f.mjs +4 -1
- package/fjs/text/utf16/module.f.d.mts +5 -1
- package/fjs/text/utf16/module.f.mjs +38 -35
- package/fjs/text/utf16/proof.f.d.mts +3 -1
- package/fjs/text/utf16/proof.f.mjs +19 -2
- package/fjs/text/utf8/module.f.d.mts +9 -5
- package/fjs/text/utf8/module.f.mjs +20 -20
- package/fjs/types/array/module.f.d.mts +2 -1
- package/fjs/types/array/module.f.mjs +16 -4
- package/fjs/types/bigfloat/module.f.d.mts +21 -1
- package/fjs/types/bigfloat/module.f.mjs +33 -7
- package/fjs/types/bigfloat/proof.f.d.mts +1 -0
- package/fjs/types/bigfloat/proof.f.mjs +46 -0
- package/fjs/types/bigint/module.f.d.mts +4 -0
- package/fjs/types/bigint/module.f.mjs +4 -3
- package/fjs/types/bit_vec/module.f.d.mts +10 -16
- package/fjs/types/bit_vec/module.f.mjs +99 -95
- package/fjs/types/bit_vec/proof.f.d.mts +6 -0
- package/fjs/types/bit_vec/proof.f.mjs +31 -5
- package/fjs/types/btree/find/module.f.d.mts +5 -1
- package/fjs/types/btree/find/module.f.mjs +5 -5
- package/fjs/types/btree/find/proof.f.d.mts +5 -1
- package/fjs/types/btree/find/proof.f.mjs +5 -3
- package/fjs/types/btree/module.f.d.mts +3 -0
- package/fjs/types/btree/module.f.mjs +3 -2
- package/fjs/types/btree/proof.f.d.mts +5 -1
- package/fjs/types/btree/proof.f.mjs +5 -3
- package/fjs/types/btree/remove/module.f.d.mts +11 -0
- package/fjs/types/btree/remove/module.f.mjs +10 -10
- package/fjs/types/btree/remove/proof.f.d.mts +3 -0
- package/fjs/types/btree/remove/proof.f.mjs +4 -1
- package/fjs/types/btree/set/module.f.d.mts +9 -0
- package/fjs/types/btree/set/module.f.mjs +14 -17
- package/fjs/types/btree/set/proof.f.d.mts +3 -0
- package/fjs/types/btree/set/proof.f.mjs +16 -1
- package/fjs/types/btree/types/module.f.d.mts +2 -1
- package/fjs/types/btree/types/module.f.mjs +2 -1
- package/fjs/types/byte_set/module.f.d.mts +20 -4
- package/fjs/types/byte_set/module.f.mjs +18 -8
- package/fjs/types/byte_set/proof.f.d.mts +3 -1
- package/fjs/types/byte_set/proof.f.mjs +10 -8
- package/fjs/types/function/compare/module.f.d.mts +3 -2
- package/fjs/types/function/compare/module.f.mjs +13 -5
- package/fjs/types/function/module.f.d.mts +8 -1
- package/fjs/types/function/module.f.mjs +8 -1
- package/fjs/types/function/operator/module.f.d.mts +2 -1
- package/fjs/types/function/operator/module.f.mjs +2 -2
- package/fjs/types/list/module.f.d.mts +10 -3
- package/fjs/types/list/module.f.mjs +6 -4
- package/fjs/types/list/proof.f.d.mts +4 -1
- package/fjs/types/list/proof.f.mjs +4 -2
- package/fjs/types/nibble_set/module.f.d.mts +2 -1
- package/fjs/types/nibble_set/module.f.mjs +2 -2
- package/fjs/types/nominal/module.f.d.mts +2 -1
- package/fjs/types/nominal/module.f.mjs +2 -1
- package/fjs/types/nullable/module.f.d.mts +26 -6
- package/fjs/types/nullable/module.f.mjs +25 -6
- package/fjs/types/nullable/proof.f.d.mts +4 -0
- package/fjs/types/nullable/proof.f.mjs +15 -0
- package/fjs/types/number/module.f.d.mts +4 -0
- package/fjs/types/number/module.f.mjs +4 -3
- package/fjs/types/object/module.f.d.mts +26 -4
- package/fjs/types/object/module.f.mjs +26 -7
- package/fjs/types/object/proof.f.d.mts +5 -2
- package/fjs/types/object/proof.f.mjs +6 -3
- 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/ordered_map/module.f.d.mts +5 -0
- package/fjs/types/ordered_map/module.f.mjs +5 -4
- package/fjs/types/ordered_map/proof.f.d.mts +3 -0
- package/fjs/types/ordered_map/proof.f.mjs +4 -1
- package/fjs/types/patricia_trie/module.f.d.mts +2 -1
- package/fjs/types/patricia_trie/module.f.mjs +27 -12
- package/fjs/types/patricia_trie/proof.f.d.mts +3 -0
- package/fjs/types/patricia_trie/proof.f.mjs +4 -1
- package/fjs/types/prime_field/module.f.d.mts +3 -1
- package/fjs/types/prime_field/module.f.mjs +3 -2
- package/fjs/types/range/module.f.d.mts +2 -1
- package/fjs/types/range/module.f.mjs +2 -2
- package/fjs/types/range_map/module.f.d.mts +6 -0
- package/fjs/types/range_map/module.f.mjs +6 -9
- package/fjs/types/range_map/proof.f.d.mts +5 -1
- package/fjs/types/range_map/proof.f.mjs +5 -3
- package/fjs/types/range_set/module.f.d.mts +5 -0
- package/fjs/types/range_set/module.f.mjs +1 -0
- package/fjs/types/range_set/proof.f.d.mts +3 -0
- package/fjs/types/range_set/proof.f.mjs +4 -1
- package/fjs/types/result/module.d.mts +8 -0
- package/fjs/types/result/module.f.d.mts +37 -7
- package/fjs/types/result/module.f.mjs +38 -8
- package/fjs/types/result/module.mjs +9 -1
- package/fjs/types/result/proof.f.d.mts +5 -0
- package/fjs/types/result/proof.f.mjs +22 -2
- package/fjs/types/rtti/common/module.f.d.mts +44 -14
- package/fjs/types/rtti/common/module.f.mjs +42 -36
- package/fjs/types/rtti/common/proof.f.d.mts +4 -0
- package/fjs/types/rtti/common/proof.f.mjs +10 -7
- package/fjs/types/rtti/data/module.f.d.mts +134 -0
- package/fjs/types/rtti/data/module.f.mjs +1053 -0
- package/fjs/types/rtti/data/proof.f.d.mts +76 -0
- package/fjs/types/rtti/data/proof.f.mjs +589 -0
- package/fjs/types/rtti/data/types.d.ts +83 -0
- package/fjs/types/rtti/module.f.d.mts +12 -5
- package/fjs/types/rtti/module.f.mjs +7 -5
- package/fjs/types/rtti/parse/module.f.d.mts +48 -0
- package/fjs/types/rtti/parse/module.f.mjs +45 -34
- package/fjs/types/rtti/parse/proof.f.d.mts +3 -2
- package/fjs/types/rtti/parse/proof.f.mjs +51 -52
- package/fjs/types/rtti/proof.f.d.mts +3 -1
- package/fjs/types/rtti/proof.f.mjs +6 -2
- package/fjs/types/rtti/ts/module.f.d.mts +68 -9
- package/fjs/types/rtti/ts/module.f.mjs +258 -30
- package/fjs/types/rtti/ts/proof.f.d.mts +44 -0
- package/fjs/types/rtti/ts/proof.f.mjs +152 -4
- package/fjs/types/rtti/ts/types.d.ts +25 -1
- package/fjs/types/rtti/types.d.ts +40 -0
- package/fjs/types/sorted_list/module.f.d.mts +4 -1
- package/fjs/types/sorted_list/module.f.mjs +21 -12
- package/fjs/types/sorted_list/proof.f.d.mts +3 -1
- package/fjs/types/sorted_list/proof.f.mjs +3 -1
- package/fjs/types/sorted_set/module.f.d.mts +49 -1
- package/fjs/types/sorted_set/module.f.mjs +26 -2
- package/fjs/types/sorted_set/proof.f.d.mts +4 -1
- package/fjs/types/sorted_set/proof.f.mjs +19 -2
- package/fjs/types/string/module.f.d.mts +4 -0
- package/fjs/types/string/module.f.mjs +4 -3
- package/fjs/types/string_set/module.f.d.mts +3 -1
- package/fjs/types/string_set/module.f.mjs +3 -2
- package/fjs/types/ts/module.f.d.mts +2 -0
- package/fjs/types/ts/module.f.mjs +3 -3
- package/fjs/types/ts/proof.f.d.mts +1 -0
- package/fjs/types/ts/proof.f.mjs +5 -0
- package/fjs/types/ts/types.d.ts +6 -1
- package/fjs/types/uint8array/module.f.d.mts +13 -2
- package/fjs/types/uint8array/module.f.mjs +20 -15
- package/fjs/website/module.f.d.mts +5 -2
- package/fjs/website/module.f.mjs +6 -8
- package/fjs/website/proof.f.mjs +2 -1
- package/package.json +3 -3
- package/fjs/asn.1/types.js +0 -6
- package/fjs/asserts/types.js +0 -6
- package/fjs/basen/types.js +0 -6
- package/fjs/bnf/data/types.js +0 -6
- package/fjs/bnf/descent/types.js +0 -6
- package/fjs/bnf/ll1/types.js +0 -6
- package/fjs/bnf/token_symbol/types.js +0 -6
- package/fjs/bnf/types.js +0 -6
- package/fjs/cas/evo/types.js +0 -7
- package/fjs/cas/types.js +0 -6
- package/fjs/ci/common/types.js +0 -1
- package/fjs/ci/nix/types.js +0 -6
- package/fjs/ci/types.js +0 -6
- package/fjs/cli/types.js +0 -6
- package/fjs/common/monoid/types.js +0 -6
- package/fjs/crypto/pow/types.js +0 -6
- package/fjs/crypto/secp/types.js +0 -6
- package/fjs/crypto/sha2/types.js +0 -6
- package/fjs/crypto/sign/types.js +0 -6
- package/fjs/crypto/vdf/types.js +0 -6
- package/fjs/dev/package_json/module.f.d.mts +0 -32
- package/fjs/dev/package_json/module.f.mjs +0 -37
- package/fjs/dev/package_json/proof.f.d.mts +0 -6
- package/fjs/dev/package_json/proof.f.mjs +0 -32
- package/fjs/dev/types.js +0 -6
- package/fjs/djs/ast/types.js +0 -8
- package/fjs/djs/parser/types.js +0 -7
- package/fjs/djs/tokenizer/types.js +0 -7
- package/fjs/djs/types.js +0 -7
- package/fjs/effects/eff/module.f.d.mts +0 -10
- package/fjs/effects/eff/module.f.mjs +0 -68
- package/fjs/effects/eff/proof.f.d.mts +0 -12
- package/fjs/effects/eff/proof.f.mjs +0 -66
- package/fjs/effects/eff/types.d.ts +0 -71
- package/fjs/effects/eff/types.js +0 -6
- package/fjs/effects/list/types.js +0 -6
- package/fjs/effects/memory/types.js +0 -6
- package/fjs/effects/mock/types.js +0 -6
- package/fjs/effects/node/types.js +0 -6
- package/fjs/effects/node/virtual/types.js +0 -7
- package/fjs/effects/types.js +0 -6
- package/fjs/emergent_testing/all.test.d.ts +0 -1
- package/fjs/emergent_testing/all.test.js +0 -5
- 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.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/emergent_testing/types.js +0 -6
- package/fjs/js/tokenizer/types.js +0 -6
- package/fjs/media/html/types.js +0 -6
- package/fjs/media/json/parser/types.js +0 -6
- package/fjs/media/json/tokenizer/types.js +0 -6
- package/fjs/media/json/types.js +0 -13
- package/fjs/media/nix/types.js +0 -6
- package/fjs/media/revision/types.js +0 -8
- package/fjs/media/type/types.js +0 -6
- package/fjs/media/types.js +0 -7
- package/fjs/nanvm/types.js +0 -11
- package/fjs/protocol/json_rpc/types.js +0 -8
- package/fjs/protocol/mcp/types.js +0 -8
- package/fjs/sul/id/types.js +0 -6
- package/fjs/sul/level/hash/types.js +0 -6
- package/fjs/sul/level/literal/types.js +0 -6
- package/fjs/sul/types.js +0 -6
- package/fjs/text/sgr/types.js +0 -6
- package/fjs/text/types.js +0 -6
- package/fjs/text/utf16/types.js +0 -6
- package/fjs/text/utf8/types.js +0 -6
- package/fjs/types/array/types.js +0 -6
- package/fjs/types/bigfloat/types.js +0 -6
- package/fjs/types/bigint/types.js +0 -6
- package/fjs/types/bit_vec/types.js +0 -6
- package/fjs/types/btree/find/types.js +0 -6
- package/fjs/types/btree/types/types.js +0 -6
- package/fjs/types/byte_set/types.js +0 -6
- package/fjs/types/function/compare/types.js +0 -6
- package/fjs/types/function/operator/types.js +0 -6
- package/fjs/types/function/types.js +0 -6
- package/fjs/types/list/types.js +0 -6
- package/fjs/types/nibble_set/types.js +0 -6
- package/fjs/types/nominal/types.js +0 -6
- package/fjs/types/nullable/types.js +0 -6
- package/fjs/types/object/types.js +0 -8
- package/fjs/types/option/types.js +0 -6
- package/fjs/types/ordered_map/types.js +0 -6
- package/fjs/types/patricia_trie/types.js +0 -6
- package/fjs/types/phantom/types.js +0 -11
- package/fjs/types/prime_field/types.js +0 -6
- package/fjs/types/range/types.js +0 -6
- package/fjs/types/range_map/types.js +0 -6
- package/fjs/types/result/types.js +0 -6
- package/fjs/types/rtti/common/types.js +0 -1
- package/fjs/types/rtti/parse/types.js +0 -1
- package/fjs/types/rtti/ts/types.js +0 -1
- package/fjs/types/rtti/types.js +0 -1
- package/fjs/types/rtti/validate/module.f.d.mts +0 -6
- package/fjs/types/rtti/validate/module.f.mjs +0 -169
- package/fjs/types/rtti/validate/proof.f.d.mts +0 -125
- package/fjs/types/rtti/validate/proof.f.mjs +0 -437
- package/fjs/types/rtti/validate/types.d.ts +0 -6
- package/fjs/types/rtti/validate/types.js +0 -1
- package/fjs/types/sorted_list/types.js +0 -6
- package/fjs/types/sorted_set/types.js +0 -6
- package/fjs/types/string_set/types.js +0 -6
- package/fjs/types/ts/types.js +0 -8
package/fjs/sul/proof.f.mjs
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @import { Id } from './id/types.ts'
|
|
3
|
+
* @import { Add } from './level/hash/types.ts'
|
|
4
|
+
*/
|
|
5
|
+
|
|
1
6
|
import { assert, assertEq } from '../asserts/module.f.mjs'
|
|
2
7
|
import { compress } from './id/module.f.mjs'
|
|
3
|
-
/** @import { Id } from './id/types.ts' */
|
|
4
8
|
import { encode, emptyEncodeState } from './module.f.mjs'
|
|
5
|
-
/** @import { Add } from './level/hash/types.ts' */
|
|
6
9
|
|
|
7
10
|
/** @typedef {readonly [Id, Id, Id, boolean]} _Merge */
|
|
8
11
|
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Provides ASCII code point constants and helpers for creating numeric code points and inclusive ranges.
|
|
3
3
|
*
|
|
4
|
+
* It also owns the hexadecimal digit codec (`hexDigitValue` /
|
|
5
|
+
* `hexDigitCodePoint`), so no consumer has to rederive the `'0'`, `'a' - 10`
|
|
6
|
+
* and `'A' - 10` offsets for itself.
|
|
7
|
+
*
|
|
4
8
|
* @module
|
|
9
|
+
*
|
|
10
|
+
* @import { Nullable } from '../../types/nullable/types.ts'
|
|
11
|
+
* @import { Range } from '../../types/range/types.ts'
|
|
5
12
|
*/
|
|
13
|
+
import type { Nullable } from '../../types/nullable/types.ts';
|
|
6
14
|
import type { Range } from '../../types/range/types.ts';
|
|
7
15
|
/** Returns the code point value of the first character in a string. @type {(s: string) => number} */
|
|
8
16
|
export declare const one: (s: string) => number;
|
|
@@ -94,6 +102,8 @@ export declare const latinCapitalLetterA: number;
|
|
|
94
102
|
export declare const latinCapitalLetterE: number;
|
|
95
103
|
/** 0x46 */
|
|
96
104
|
export declare const latinCapitalLetterF: number;
|
|
105
|
+
/** 0x41..0x46, the uppercase hexadecimal digits. */
|
|
106
|
+
export declare const latinCapitalLetterAFRange: Range;
|
|
97
107
|
/** 0x5B */
|
|
98
108
|
export declare const leftSquareBracket: number;
|
|
99
109
|
/** 0x5C */
|
|
@@ -116,6 +126,8 @@ export declare const latinSmallLetterB: number;
|
|
|
116
126
|
export declare const latinSmallLetterE: number;
|
|
117
127
|
/** 0x66 */
|
|
118
128
|
export declare const latinSmallLetterF: number;
|
|
129
|
+
/** 0x61..0x66, the lowercase hexadecimal digits. */
|
|
130
|
+
export declare const latinSmallLetterAFRange: Range;
|
|
119
131
|
/** 0x6E */
|
|
120
132
|
export declare const latinSmallLetterN: number;
|
|
121
133
|
/** 0x72 */
|
|
@@ -134,3 +146,17 @@ export declare const verticalLine: number;
|
|
|
134
146
|
export declare const rightCurlyBracket: number;
|
|
135
147
|
/** 0x7E */
|
|
136
148
|
export declare const tilde: number;
|
|
149
|
+
/**
|
|
150
|
+
* The value `0..15` denoted by a hexadecimal digit code point, or `null` when
|
|
151
|
+
* the code point is not one of `0-9`, `a-f`, `A-F`.
|
|
152
|
+
*
|
|
153
|
+
* @type {(codePoint: number) => Nullable<number>}
|
|
154
|
+
*/
|
|
155
|
+
export declare const hexDigitValue: (codePoint: number) => Nullable<number>;
|
|
156
|
+
/**
|
|
157
|
+
* The lowercase hexadecimal digit code point denoting a value in `0..15`.
|
|
158
|
+
* `hexDigitValue(hexDigitCodePoint(v))` is `v` for every such value.
|
|
159
|
+
*
|
|
160
|
+
* @type {(value: number) => number}
|
|
161
|
+
*/
|
|
162
|
+
export declare const hexDigitCodePoint: (value: number) => number;
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Provides ASCII code point constants and helpers for creating numeric code points and inclusive ranges.
|
|
3
3
|
*
|
|
4
|
+
* It also owns the hexadecimal digit codec (`hexDigitValue` /
|
|
5
|
+
* `hexDigitCodePoint`), so no consumer has to rederive the `'0'`, `'a' - 10`
|
|
6
|
+
* and `'A' - 10` offsets for itself.
|
|
7
|
+
*
|
|
4
8
|
* @module
|
|
9
|
+
*
|
|
10
|
+
* @import { Nullable } from '../../types/nullable/types.ts'
|
|
11
|
+
* @import { Range } from '../../types/range/types.ts'
|
|
5
12
|
*/
|
|
6
13
|
|
|
7
|
-
|
|
14
|
+
import { contains } from '../../types/range/module.f.mjs'
|
|
8
15
|
|
|
9
16
|
/** @type {(s: string) => (i: number) => number} */
|
|
10
17
|
const at = s => i => {
|
|
@@ -161,6 +168,9 @@ export const latinCapitalLetterE = one('E')
|
|
|
161
168
|
/** 0x46 */
|
|
162
169
|
export const latinCapitalLetterF = one('F')
|
|
163
170
|
|
|
171
|
+
/** 0x41..0x46, the uppercase hexadecimal digits. */
|
|
172
|
+
export const latinCapitalLetterAFRange = range('AF')
|
|
173
|
+
|
|
164
174
|
/** 0x5B */
|
|
165
175
|
export const leftSquareBracket = one('[')
|
|
166
176
|
|
|
@@ -196,6 +206,9 @@ export const latinSmallLetterE = one('e')
|
|
|
196
206
|
/** 0x66 */
|
|
197
207
|
export const latinSmallLetterF = one('f')
|
|
198
208
|
|
|
209
|
+
/** 0x61..0x66, the lowercase hexadecimal digits. */
|
|
210
|
+
export const latinSmallLetterAFRange = range('af')
|
|
211
|
+
|
|
199
212
|
/** 0x6E */
|
|
200
213
|
export const latinSmallLetterN = one('n')
|
|
201
214
|
|
|
@@ -222,3 +235,38 @@ export const rightCurlyBracket = one('}')
|
|
|
222
235
|
|
|
223
236
|
/** 0x7E */
|
|
224
237
|
export const tilde = one('~')
|
|
238
|
+
|
|
239
|
+
// hexadecimal digits
|
|
240
|
+
|
|
241
|
+
const isDigit = contains(...digitRange)
|
|
242
|
+
|
|
243
|
+
const isLatinSmallLetterAF = contains(...latinSmallLetterAFRange)
|
|
244
|
+
|
|
245
|
+
const isLatinCapitalLetterAF = contains(...latinCapitalLetterAFRange)
|
|
246
|
+
|
|
247
|
+
/** The distance from a lowercase hexadecimal letter to the value it denotes. */
|
|
248
|
+
const latinSmallLetterAFOffset = latinSmallLetterA - 10
|
|
249
|
+
|
|
250
|
+
/** The distance from an uppercase hexadecimal letter to the value it denotes. */
|
|
251
|
+
const latinCapitalLetterAFOffset = latinCapitalLetterA - 10
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* The value `0..15` denoted by a hexadecimal digit code point, or `null` when
|
|
255
|
+
* the code point is not one of `0-9`, `a-f`, `A-F`.
|
|
256
|
+
*
|
|
257
|
+
* @type {(codePoint: number) => Nullable<number>}
|
|
258
|
+
*/
|
|
259
|
+
export const hexDigitValue = codePoint =>
|
|
260
|
+
isDigit(codePoint) ? codePoint - digit0
|
|
261
|
+
: isLatinSmallLetterAF(codePoint) ? codePoint - latinSmallLetterAFOffset
|
|
262
|
+
: isLatinCapitalLetterAF(codePoint) ? codePoint - latinCapitalLetterAFOffset
|
|
263
|
+
: null
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* The lowercase hexadecimal digit code point denoting a value in `0..15`.
|
|
267
|
+
* `hexDigitValue(hexDigitCodePoint(v))` is `v` for every such value.
|
|
268
|
+
*
|
|
269
|
+
* @type {(value: number) => number}
|
|
270
|
+
*/
|
|
271
|
+
export const hexDigitCodePoint = value =>
|
|
272
|
+
value < 10 ? digit0 + value : latinSmallLetterAFOffset + value
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
export declare const proof: {
|
|
2
2
|
range: () => void;
|
|
3
|
+
hexDigitValue: {
|
|
4
|
+
digit: () => void;
|
|
5
|
+
latinSmallLetterAF: () => void;
|
|
6
|
+
latinCapitalLetterAF: () => void;
|
|
7
|
+
notAHexDigit: () => void;
|
|
8
|
+
};
|
|
9
|
+
hexDigitCodePoint: {
|
|
10
|
+
lowercaseDigits: () => void;
|
|
11
|
+
roundTrip: () => void;
|
|
12
|
+
};
|
|
3
13
|
throw: {
|
|
4
14
|
oneThrowsOnEmpty: () => number;
|
|
5
15
|
};
|
|
@@ -1,15 +1,47 @@
|
|
|
1
|
-
import { one, range } from './module.f.mjs'
|
|
1
|
+
import { hexDigitCodePoint, hexDigitValue, one, range } from './module.f.mjs'
|
|
2
2
|
import { stringify as jsonStringify } from '../../media/json/module.f.mjs'
|
|
3
3
|
import { sort } from '../../types/object/module.f.mjs'
|
|
4
4
|
import { assertEq } from '../../asserts/module.f.mjs'
|
|
5
5
|
|
|
6
6
|
const stringify = jsonStringify(sort)
|
|
7
7
|
|
|
8
|
+
const values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
|
|
9
|
+
|
|
8
10
|
export const proof = {
|
|
9
11
|
range: () => {
|
|
10
12
|
const r = stringify(range("A"))
|
|
11
13
|
assertEq(r, '[65,65]')
|
|
12
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
|
+
},
|
|
13
45
|
throw: {
|
|
14
46
|
oneThrowsOnEmpty: () => one(''),
|
|
15
47
|
},
|
|
@@ -2,11 +2,14 @@
|
|
|
2
2
|
* Shared Unicode code-point contract for the UTF-8 and UTF-16 decoders: the
|
|
3
3
|
* error-tag mask used to flag invalid sequences, the streaming `decoder`
|
|
4
4
|
* factory that wraps a per-unit step and an end-of-input step into a single
|
|
5
|
-
* `List`-to-`List` conversion,
|
|
6
|
-
*
|
|
7
|
-
* share.
|
|
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
8
|
*
|
|
9
9
|
* @module
|
|
10
|
+
*
|
|
11
|
+
* @import { List } from '../../types/list/types.ts'
|
|
12
|
+
* @import { StateScan } from '../../types/function/operator/types.ts'
|
|
10
13
|
*/
|
|
11
14
|
import type { List } from '../../types/list/types.ts';
|
|
12
15
|
import type { StateScan } from '../../types/function/operator/types.ts';
|
|
@@ -31,6 +34,29 @@ export declare const errorMask = 2147483648;
|
|
|
31
34
|
* @returns {(input: List<Unit>) => List<Cp>} A function converting a list of code units into a list of code points.
|
|
32
35
|
*/
|
|
33
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
|
+
* The last code point of the Basic Multilingual Plane. Exported because the
|
|
54
|
+
* UTF-8 encoder needs the boundary itself — its 3-byte form covers the BMP up
|
|
55
|
+
* to here — where the predicates below only answer membership. `maxCodePoint`
|
|
56
|
+
* stays private: `isSupplementaryPlane` already expresses the one range a
|
|
57
|
+
* caller has wanted it for.
|
|
58
|
+
*/
|
|
59
|
+
export declare const bmpMax = /** @type {const} */ 65535;
|
|
34
60
|
/**
|
|
35
61
|
* Checks whether the 16-bit word (U16) is a high surrogate.
|
|
36
62
|
* Range: 0xD800 - 0xDBFF.
|
|
@@ -2,18 +2,17 @@
|
|
|
2
2
|
* Shared Unicode code-point contract for the UTF-8 and UTF-16 decoders: the
|
|
3
3
|
* error-tag mask used to flag invalid sequences, the streaming `decoder`
|
|
4
4
|
* factory that wraps a per-unit step and an end-of-input step into a single
|
|
5
|
-
* `List`-to-`List` conversion,
|
|
6
|
-
*
|
|
7
|
-
* share.
|
|
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
8
|
*
|
|
9
9
|
* @module
|
|
10
|
+
*
|
|
11
|
+
* @import { List } from '../../types/list/types.ts'
|
|
12
|
+
* @import { StateScan } from '../../types/function/operator/types.ts'
|
|
10
13
|
*/
|
|
11
14
|
|
|
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
|
-
|
|
15
|
+
import { empty, flat, stateScan } from '../../types/list/module.f.mjs'
|
|
17
16
|
import { contains } from '../../types/range/module.f.mjs'
|
|
18
17
|
|
|
19
18
|
//
|
|
@@ -50,6 +49,23 @@ export const decoder = (
|
|
|
50
49
|
return input => flat(run(flat(/** @type {List<List<Unit|null>>} */([input, [null]]))))
|
|
51
50
|
}
|
|
52
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
|
+
|
|
53
69
|
/**
|
|
54
70
|
* Unicode code-point classification boundaries. The surrogate block
|
|
55
71
|
* (`0xD800`–`0xDFFF`) splits into a high half (`0xD800`–`0xDBFF`) and a low half
|
|
@@ -60,7 +76,14 @@ export const decoder = (
|
|
|
60
76
|
const surrogateMin = /** @type {const} */ 0xd800
|
|
61
77
|
const lowSurrogateMin = /** @type {const} */ 0xdc00
|
|
62
78
|
const surrogateMax = /** @type {const} */ 0xdfff
|
|
63
|
-
|
|
79
|
+
/**
|
|
80
|
+
* The last code point of the Basic Multilingual Plane. Exported because the
|
|
81
|
+
* UTF-8 encoder needs the boundary itself — its 3-byte form covers the BMP up
|
|
82
|
+
* to here — where the predicates below only answer membership. `maxCodePoint`
|
|
83
|
+
* stays private: `isSupplementaryPlane` already expresses the one range a
|
|
84
|
+
* caller has wanted it for.
|
|
85
|
+
*/
|
|
86
|
+
export const bmpMax = /** @type {const} */ 0xffff
|
|
64
87
|
const maxCodePoint = /** @type {const} */ 0x10_ffff
|
|
65
88
|
|
|
66
89
|
/**
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export declare const proof: {
|
|
2
|
+
eofFlush: (() => void)[];
|
|
2
3
|
isHighSurrogate: (() => void)[];
|
|
3
4
|
isLowSurrogate: (() => void)[];
|
|
4
5
|
isBmpCodePoint: (() => void)[];
|
|
6
|
+
bmpMax: (() => void)[];
|
|
5
7
|
isSupplementaryPlane: (() => void)[];
|
|
6
8
|
isValidCodePoint: (() => void)[];
|
|
7
9
|
isTextCodePoint: (() => void)[];
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
+
import { assertEq } from '../../asserts/module.f.mjs'
|
|
2
|
+
import { toArray } from '../../types/list/module.f.mjs'
|
|
1
3
|
import {
|
|
4
|
+
bmpMax,
|
|
5
|
+
eofFlush,
|
|
2
6
|
isBmpCodePoint,
|
|
3
7
|
isHighSurrogate,
|
|
4
8
|
isLowSurrogate,
|
|
@@ -12,7 +16,32 @@ const check = (actual, expected) => {
|
|
|
12
16
|
if (actual !== expected) { throw `${actual} !== ${expected}` }
|
|
13
17
|
}
|
|
14
18
|
|
|
19
|
+
/**
|
|
20
|
+
* A stand-in for a codec's state-to-error function.
|
|
21
|
+
*
|
|
22
|
+
* @type {(state: number) => number}
|
|
23
|
+
*/
|
|
24
|
+
const negate = state => -state
|
|
25
|
+
|
|
26
|
+
const flush = eofFlush(negate)
|
|
27
|
+
|
|
15
28
|
export const proof = {
|
|
29
|
+
eofFlush: [
|
|
30
|
+
// no leftover state: nothing is flushed, the state stays empty
|
|
31
|
+
() => {
|
|
32
|
+
const [out, next] = flush(null)
|
|
33
|
+
assertEq(toArray(out).length, 0)
|
|
34
|
+
assertEq(next, null)
|
|
35
|
+
},
|
|
36
|
+
// leftover state: exactly one error unit, then the state resets
|
|
37
|
+
() => {
|
|
38
|
+
const [out, next] = flush(42)
|
|
39
|
+
const [first, ...rest] = toArray(out)
|
|
40
|
+
assertEq(first, -42)
|
|
41
|
+
assertEq(rest.length, 0)
|
|
42
|
+
assertEq(next, null)
|
|
43
|
+
},
|
|
44
|
+
],
|
|
16
45
|
isHighSurrogate: [
|
|
17
46
|
() => check(isHighSurrogate(0xd800), true),
|
|
18
47
|
() => check(isHighSurrogate(0xdbff), true),
|
|
@@ -36,6 +65,16 @@ export const proof = {
|
|
|
36
65
|
() => check(isBmpCodePoint(0xd800), false),
|
|
37
66
|
() => check(isBmpCodePoint(0x10000), false),
|
|
38
67
|
],
|
|
68
|
+
bmpMax: [
|
|
69
|
+
// The exported boundary and the predicates derived from it must agree:
|
|
70
|
+
// `bmpMax` is the last BMP code point, and the next one starts the
|
|
71
|
+
// supplementary planes. This is the pairing the UTF-8 encoder relies
|
|
72
|
+
// on to split its 3-byte and 4-byte forms.
|
|
73
|
+
() => check(isBmpCodePoint(bmpMax), true),
|
|
74
|
+
() => check(isSupplementaryPlane(bmpMax), false),
|
|
75
|
+
() => check(isSupplementaryPlane(bmpMax + 1), true),
|
|
76
|
+
() => check(isBmpCodePoint(bmpMax + 1), false),
|
|
77
|
+
],
|
|
39
78
|
isSupplementaryPlane: [
|
|
40
79
|
() => check(isSupplementaryPlane(0x10000), true),
|
|
41
80
|
() => check(isSupplementaryPlane(0x10ffff), true),
|
package/fjs/text/module.f.d.mts
CHANGED
|
@@ -4,12 +4,14 @@
|
|
|
4
4
|
* strings and MSB-first UTF-8 bit vectors.
|
|
5
5
|
*
|
|
6
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'
|
|
7
11
|
*/
|
|
8
12
|
import type { List } from '../types/list/types.ts';
|
|
9
13
|
import type { Nullable } from '../types/nullable/types.ts';
|
|
10
14
|
import type { Block, Utf8 } from './types.ts';
|
|
11
|
-
/** @import { Nullable } from '../types/nullable/types.ts' */
|
|
12
|
-
/** @import { Block, Item, Utf8 } from './types.ts' */
|
|
13
15
|
/** @type {(indent: string) => (text: Block) => List<string>} */
|
|
14
16
|
export declare const flat: (indent: string) => (text: Block) => List<string>;
|
|
15
17
|
/**
|
package/fjs/text/module.f.mjs
CHANGED
|
@@ -4,16 +4,17 @@
|
|
|
4
4
|
* strings and MSB-first UTF-8 bit vectors.
|
|
5
5
|
*
|
|
6
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'
|
|
7
11
|
*/
|
|
8
12
|
|
|
9
13
|
import { msb, tryU8ListToVec, u8List } from '../types/bit_vec/module.f.mjs'
|
|
10
14
|
import { flatMap } from '../types/list/module.f.mjs'
|
|
11
|
-
/** @import { List } from '../types/list/types.ts' */
|
|
12
15
|
import { fromCodePointList, toCodePointList } from './utf8/module.f.mjs'
|
|
13
16
|
import { stringToCodePointList, codePointListToString } from './utf16/module.f.mjs'
|
|
14
17
|
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
|
|
|
18
19
|
/** @type {(indent: string) => (text: Block) => List<string>} */
|
|
19
20
|
export const flat = indent => {
|
package/fjs/text/proof.f.d.mts
CHANGED
package/fjs/text/proof.f.mjs
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @import { Block } from './types.ts'
|
|
3
|
+
*/
|
|
4
|
+
|
|
1
5
|
import { assertEq, assertNotNullish } from '../asserts/module.f.mjs'
|
|
2
|
-
/** @import { Block } from './types.ts' */
|
|
3
6
|
import { flat, utf8, utf8ToString, tryUtf8 } from './module.f.mjs'
|
|
4
7
|
import { join } from '../types/string/module.f.mjs'
|
|
5
8
|
import { empty, maxLengthBytes } from '../types/bit_vec/module.f.mjs'
|
|
@@ -5,11 +5,12 @@
|
|
|
5
5
|
* See `./types.ts` for the type-level API.
|
|
6
6
|
*
|
|
7
7
|
* @module
|
|
8
|
+
*
|
|
9
|
+
* @import { Console, Write, WriteConsoles, NodeProgramOptions } from '../../effects/node/types.ts'
|
|
10
|
+
* @import { Stdout, WriteText, CsiConsole } from './types.ts'
|
|
8
11
|
*/
|
|
9
|
-
import type {
|
|
10
|
-
import type { Effect } from '../../effects/types.ts';
|
|
12
|
+
import type { Console, WriteConsoles, NodeProgramOptions } from '../../effects/node/types.ts';
|
|
11
13
|
import type { Stdout, WriteText } from './types.ts';
|
|
12
|
-
/** @import { Stdout, WriteText, CsiConsole } from './types.ts' */
|
|
13
14
|
/** @type {string} */
|
|
14
15
|
export declare const backspace: string;
|
|
15
16
|
export type _End = 'm';
|
|
@@ -53,6 +54,6 @@ export declare const createConsoleText: (stdout: Stdout) => WriteText;
|
|
|
53
54
|
* stream is not a TTY, then encodes to UTF-8 and emits a `Write` effect.
|
|
54
55
|
* Does NOT append `\n` — callers are responsible for line termination.
|
|
55
56
|
*
|
|
56
|
-
* @type {(options: NodeProgramOptions) => (stream: WriteConsoles) =>
|
|
57
|
+
* @type {(options: NodeProgramOptions) => (stream: WriteConsoles) => Console}
|
|
57
58
|
*/
|
|
58
|
-
export declare const csiWrite: (options: NodeProgramOptions) => (stream: WriteConsoles) =>
|
|
59
|
+
export declare const csiWrite: (options: NodeProgramOptions) => (stream: WriteConsoles) => Console;
|
|
@@ -5,16 +5,16 @@
|
|
|
5
5
|
* See `./types.ts` for the type-level API.
|
|
6
6
|
*
|
|
7
7
|
* @module
|
|
8
|
+
*
|
|
9
|
+
* @import { Console, Write, WriteConsoles, NodeProgramOptions } from '../../effects/node/types.ts'
|
|
10
|
+
* @import { Stdout, WriteText, CsiConsole } from './types.ts'
|
|
8
11
|
*/
|
|
9
12
|
|
|
10
13
|
// C0 control codes
|
|
11
14
|
// https://en.wikipedia.org/wiki/ANSI_escape_code#C0_control_codes
|
|
12
15
|
|
|
13
16
|
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
17
|
import { utf8 } from "../module.f.mjs"
|
|
17
|
-
/** @import { Stdout, WriteText, CsiConsole } from './types.ts' */
|
|
18
18
|
|
|
19
19
|
/** @type {string} */
|
|
20
20
|
export const backspace = '\x08'
|
|
@@ -48,13 +48,13 @@ export const csi = end => code =>
|
|
|
48
48
|
export const sgr = csi('m')
|
|
49
49
|
|
|
50
50
|
/** Resets all SGR styles to terminal defaults. */
|
|
51
|
-
export const reset =
|
|
51
|
+
export const reset = sgr(0)
|
|
52
52
|
/** Enables bold/intense text rendering when supported by the terminal. */
|
|
53
|
-
export const bold =
|
|
53
|
+
export const bold = sgr(1)
|
|
54
54
|
/** Applies red foreground color to subsequent text. */
|
|
55
|
-
export const fgRed =
|
|
55
|
+
export const fgRed = sgr(31)
|
|
56
56
|
/** Applies green foreground color to subsequent text. */
|
|
57
|
-
export const fgGreen =
|
|
57
|
+
export const fgGreen = sgr(32)
|
|
58
58
|
|
|
59
59
|
const { max } = Math
|
|
60
60
|
|
|
@@ -91,7 +91,7 @@ const str = isTTY => s =>
|
|
|
91
91
|
* stream is not a TTY, then encodes to UTF-8 and emits a `Write` effect.
|
|
92
92
|
* Does NOT append `\n` — callers are responsible for line termination.
|
|
93
93
|
*
|
|
94
|
-
* @type {(options: NodeProgramOptions) => (stream: WriteConsoles) =>
|
|
94
|
+
* @type {(options: NodeProgramOptions) => (stream: WriteConsoles) => Console}
|
|
95
95
|
*/
|
|
96
96
|
export const csiWrite = ({ std }) => stream => {
|
|
97
97
|
const toStr = str(std[stream].isTTY)
|
package/fjs/text/sgr/proof.f.mjs
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @import { NodeProgramOptions } from '../../effects/node/types.ts'
|
|
3
|
+
*/
|
|
4
|
+
|
|
1
5
|
import { fgRed, reset, createConsoleText, backspace, csiWrite } from './module.f.mjs'
|
|
2
6
|
import { virtual, emptyState, defaultNodeProgramOptions } from '../../effects/node/virtual/module.f.mjs'
|
|
3
|
-
/** @import { NodeProgramOptions } from '../../effects/node/types.ts' */
|
|
4
7
|
import { assert, assertEq } from '../../asserts/module.f.mjs'
|
|
5
8
|
|
|
6
9
|
/** @type {(isTTY: boolean) => NodeProgramOptions} */
|
|
@@ -4,10 +4,14 @@
|
|
|
4
4
|
* `stateScan` operations.
|
|
5
5
|
*
|
|
6
6
|
* @module
|
|
7
|
+
*
|
|
8
|
+
* @import { List, Result, Thunk } from '../../types/list/types.ts'
|
|
9
|
+
* @import { StateScan } from '../../types/function/operator/types.ts'
|
|
10
|
+
* @import { CodePoint, U16 } from './types.ts'
|
|
7
11
|
*/
|
|
8
12
|
import type { List, Thunk } from '../../types/list/types.ts';
|
|
9
|
-
export type _Utf16State = number | null;
|
|
10
13
|
import type { CodePoint, U16 } from './types.ts';
|
|
14
|
+
export type _Utf16State = number | null;
|
|
11
15
|
/**
|
|
12
16
|
* Converts a UTF-16 sequence to its corresponding Unicode code points.
|
|
13
17
|
*
|