functionalscript 0.36.0 → 0.38.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 +1 -1
- package/{fs → fjs}/asn.1/module.f.js +1 -1
- package/{fs → fjs}/asn.1/proof.f.js +32 -94
- package/fjs/asserts/module.f.d.ts +36 -0
- package/fjs/asserts/module.f.js +39 -0
- package/fjs/asserts/proof.f.d.ts +11 -0
- package/fjs/asserts/proof.f.js +18 -0
- package/{fs → fjs}/base_n/module.f.js +3 -3
- package/{fs → fjs}/base_n/proof.f.js +15 -39
- package/{fs → fjs/basen}/base128/module.f.d.ts +1 -1
- package/{fs → fjs/basen}/base128/module.f.js +1 -1
- package/{fs → fjs/basen}/base128/proof.f.js +3 -3
- package/{fs → fjs/basen}/base64/module.f.d.ts +2 -2
- package/{fs → fjs/basen}/base64/module.f.js +25 -15
- package/{fs → fjs/basen}/base64/proof.f.d.ts +2 -0
- package/{fs → fjs/basen}/base64/proof.f.js +26 -6
- package/{fs → fjs/basen}/cbase32/module.f.d.ts +2 -2
- package/{fs → fjs/basen}/cbase32/module.f.js +2 -2
- package/{fs → fjs/basen}/cbase32/proof.f.js +16 -43
- package/fjs/bnf/data/module.f.d.ts +52 -0
- package/{fs → fjs}/bnf/data/module.f.js +56 -6
- package/{fs → fjs}/bnf/data/proof.f.d.ts +1 -0
- package/{fs → fjs}/bnf/data/proof.f.js +59 -24
- package/{fs → fjs}/bnf/descent/module.f.d.ts +4 -14
- package/fjs/bnf/descent/module.f.js +124 -0
- package/{fs → fjs}/bnf/descent/proof.f.d.ts +1 -0
- package/{fs → fjs}/bnf/descent/proof.f.js +59 -28
- package/{fs → fjs}/bnf/ll1/module.f.d.ts +4 -4
- package/{fs → fjs}/bnf/ll1/module.f.js +15 -13
- package/{fs → fjs}/bnf/ll1/proof.f.d.ts +1 -0
- package/{fs → fjs}/bnf/ll1/proof.f.js +33 -16
- package/{fs → fjs}/bnf/module.f.d.ts +19 -5
- package/{fs → fjs}/bnf/module.f.js +14 -15
- package/fjs/bnf/proof.f.js +69 -0
- package/{fs → fjs}/bnf/testlib.f.js +2 -2
- package/{fs → fjs}/cas/cli/module.f.js +7 -7
- package/{fs → fjs}/cas/cli/proof.f.d.ts +4 -1
- package/{fs → fjs}/cas/cli/proof.f.js +37 -74
- package/fjs/cas/evo/mcp/module.f.d.ts +19 -0
- package/fjs/cas/evo/mcp/module.f.js +56 -0
- package/fjs/cas/evo/mcp/proof.f.d.ts +9 -0
- package/fjs/cas/evo/mcp/proof.f.js +95 -0
- package/fjs/cas/evo/module.f.d.ts +138 -0
- package/fjs/cas/evo/module.f.js +309 -0
- package/fjs/cas/evo/proof.f.d.ts +32 -0
- package/fjs/cas/evo/proof.f.js +453 -0
- package/fjs/cas/mcp/module.f.d.ts +49 -0
- package/fjs/cas/mcp/module.f.js +267 -0
- package/{fs → fjs}/cas/mcp/proof.f.d.ts +7 -2
- package/{fs → fjs}/cas/mcp/proof.f.js +116 -60
- package/{fs → fjs}/cas/module.f.d.ts +10 -0
- package/{fs → fjs}/cas/module.f.js +36 -10
- package/{fs → fjs}/cas/proof.f.d.ts +8 -2
- package/{fs → fjs}/cas/proof.f.js +85 -94
- package/{fs → fjs}/ci/bun/module.f.js +2 -2
- package/{fs → fjs}/ci/common/module.f.d.ts +2 -2
- package/{fs → fjs}/ci/common/module.f.js +4 -4
- package/fjs/ci/config/module.f.d.ts +42 -0
- package/{fs → fjs}/ci/config/module.f.js +6 -8
- package/fjs/ci/deno/module.f.js +20 -0
- package/{fs → fjs}/ci/module.f.js +9 -9
- package/{fs → fjs}/ci/node/module.f.d.ts +1 -1
- package/{fs → fjs}/ci/node/module.f.js +3 -5
- package/{fs → fjs}/ci/playwright/module.f.js +3 -3
- package/{fs → fjs}/ci/proof.f.js +27 -22
- package/{fs → fjs}/ci/rust/module.f.js +11 -3
- package/{fs → fjs}/cli/module.f.js +3 -3
- package/{fs → fjs}/cli/proof.f.js +25 -66
- package/{fs/types → fjs/common}/monoid/module.f.d.ts +1 -1
- package/{fs/types → fjs/common}/monoid/proof.f.js +4 -9
- package/{fs → fjs}/crypto/hmac/module.f.js +2 -2
- package/{fs → fjs}/crypto/hmac/proof.f.js +9 -17
- package/{fs → fjs}/crypto/pow/module.f.js +3 -3
- package/fjs/crypto/pow/proof.f.js +111 -0
- package/{fs → fjs}/crypto/secp/module.f.js +2 -2
- package/{fs → fjs}/crypto/secp/proof.f.js +14 -35
- package/{fs → fjs}/crypto/sha2/module.f.js +2 -2
- package/{fs → fjs}/crypto/sha2/proof.f.js +23 -54
- package/{fs → fjs}/crypto/sign/module.f.d.ts +0 -5
- package/{fs → fjs}/crypto/sign/module.f.js +11 -8
- package/{fs → fjs}/crypto/sign/proof.f.js +36 -105
- package/{fs → fjs}/crypto/vdf/module.f.js +1 -1
- package/{fs → fjs}/crypto/vdf/proof.f.js +23 -64
- package/{fs → fjs}/dev/module.f.js +6 -6
- package/{fs → fjs}/dev/package_json/module.f.js +6 -6
- package/{fs → fjs}/dev/package_json/proof.f.js +9 -9
- package/{fs → fjs}/dev/proof.f.js +3 -5
- package/{fs → fjs}/djs/ast/module.f.js +2 -2
- package/{fs → fjs}/djs/ast/proof.f.js +8 -16
- package/fjs/djs/examples/m.f.d.ts +2 -0
- package/{fs → fjs}/djs/module.f.d.ts +1 -1
- package/{fs → fjs}/djs/module.f.js +5 -5
- package/{fs → fjs}/djs/parser/module.f.d.ts +5 -0
- package/{fs → fjs}/djs/parser/module.f.js +24 -4
- package/{fs → fjs}/djs/parser/proof.f.js +145 -407
- package/{fs → fjs}/djs/proof.f.js +16 -39
- package/{fs → fjs}/djs/serializer/module.f.js +6 -6
- package/{fs → fjs}/djs/serializer/proof.f.js +18 -43
- package/fjs/djs/tokenizer/module.f.d.ts +24 -0
- package/fjs/djs/tokenizer/module.f.js +472 -0
- package/{fs/djs/tokenizer-new → fjs/djs/tokenizer}/proof.f.d.ts +4 -3
- package/{fs/djs/tokenizer-new → fjs/djs/tokenizer}/proof.f.js +447 -446
- package/{fs → fjs}/djs/transpiler/module.f.d.ts +5 -0
- package/{fs → fjs}/djs/transpiler/module.f.js +21 -11
- package/{fs → fjs}/djs/transpiler/proof.f.d.ts +3 -0
- package/fjs/djs/transpiler/proof.f.js +67 -0
- package/{fs → fjs}/effects/memory/module.f.js +4 -4
- package/{fs → fjs}/effects/memory/proof.f.js +11 -24
- package/{fs → fjs}/effects/module.f.js +1 -1
- package/{fs → fjs}/effects/node/memory/module.js +2 -2
- package/{fs → fjs}/effects/node/memory/proof.js +8 -15
- package/{fs → fjs}/effects/node/module.d.ts +1 -1
- package/{fs → fjs}/effects/node/module.f.d.ts +1 -1
- package/{fs → fjs}/effects/node/module.f.js +7 -7
- package/{fs → fjs}/effects/node/module.js +13 -13
- package/{fs → fjs}/effects/node/proof.f.d.ts +1 -0
- package/{fs → fjs}/effects/node/proof.f.js +106 -292
- package/{fs → fjs}/effects/node/virtual/module.f.js +7 -7
- package/{fs → fjs}/effects/node/virtual/proof.f.d.ts +2 -0
- package/{fs → fjs}/effects/node/virtual/proof.f.js +44 -30
- package/{fs → fjs}/effects/proof.f.js +18 -47
- package/fjs/emergent_testing/all.test.js +4 -0
- package/{fs → fjs}/emergent_testing/example.f.d.ts +1 -1
- package/{fs → fjs}/emergent_testing/module.f.js +6 -6
- package/{fs → fjs}/emergent_testing/proof.f.d.ts +19 -17
- package/{fs → fjs}/emergent_testing/proof.f.js +14 -14
- package/fjs/emergent_testing/scenarios/all.js +1 -0
- package/{fs → fjs}/fsc/bnf.f.js +2 -2
- package/{fs → fjs}/fsc/json.f.js +1 -1
- package/{fs → fjs}/fsc/module.f.js +7 -7
- package/{fs → fjs}/fsc/proof.f.js +16 -38
- package/{fs → fjs}/fsm/module.f.js +9 -9
- package/{fs → fjs}/fsm/proof.f.js +12 -19
- package/{fs → fjs}/js/tokenizer/module.f.js +7 -7
- package/{fs → fjs}/js/tokenizer/proof.f.js +5 -5
- package/{fs → fjs}/mcp/module.f.d.ts +20 -13
- package/{fs → fjs}/mcp/module.f.js +16 -9
- package/{fs → fjs}/mcp/proof.f.js +17 -17
- package/{fs → fjs}/mcp/stdio/module.f.d.ts +4 -4
- package/{fs → fjs}/mcp/stdio/module.f.js +12 -12
- package/{fs → fjs}/mcp/stdio/proof.f.js +10 -10
- package/{fs → fjs/media}/html/module.f.d.ts +3 -3
- package/{fs → fjs/media}/html/module.f.js +9 -9
- package/{fs → fjs/media}/html/proof.f.js +12 -33
- package/fjs/media/json/module.f.d.ts +50 -0
- package/{fs → fjs/media}/json/module.f.js +7 -7
- package/{fs → fjs/media}/json/parser/module.f.d.ts +7 -2
- package/{fs → fjs/media}/json/parser/module.f.js +21 -7
- package/{fs → fjs/media}/json/parser/proof.f.js +45 -120
- package/{fs → fjs/media}/json/proof.f.js +4 -4
- package/fjs/media/json/rpc/module.f.d.ts +114 -0
- package/{fs → fjs/media}/json/rpc/module.f.js +4 -4
- package/{fs → fjs/media}/json/rpc/proof.f.js +4 -4
- package/fjs/media/json/schema/module.f.d.ts +78 -0
- package/{fs → fjs/media}/json/schema/module.f.js +25 -41
- package/{fs → fjs/media}/json/schema/proof.f.js +6 -9
- package/{fs → fjs/media}/json/serializer/module.f.d.ts +1 -1
- package/{fs → fjs/media}/json/serializer/module.f.js +2 -2
- package/{fs → fjs/media}/json/serializer/proof.f.js +12 -29
- package/{fs → fjs/media}/json/tokenizer/module.f.d.ts +2 -2
- package/{fs → fjs/media}/json/tokenizer/module.f.js +4 -4
- package/{fs → fjs/media}/json/tokenizer/proof.f.js +5 -5
- package/fjs/media/module.f.d.ts +37 -0
- package/fjs/media/module.f.js +23 -0
- package/fjs/media/proof.f.d.ts +9 -0
- package/fjs/media/proof.f.js +58 -0
- package/fjs/media/revision/module.f.d.ts +78 -0
- package/fjs/media/revision/module.f.js +122 -0
- package/fjs/media/revision/proof.f.d.ts +31 -0
- package/fjs/media/revision/proof.f.js +140 -0
- package/{fs/mime → fjs/media/type}/module.f.d.ts +6 -6
- package/{fs/mime → fjs/media/type}/module.f.js +6 -6
- package/{fs/mime → fjs/media/type}/proof.f.js +8 -12
- package/fjs/module.f.d.ts +2 -0
- package/{fs/fjs → fjs}/module.f.js +9 -9
- package/fjs/module.js +4 -0
- package/{fs → fjs}/path/module.f.js +2 -2
- package/{fs → fjs}/path/proof.f.js +27 -78
- package/{fs/fjs → fjs}/proof.f.js +6 -4
- package/{fs → fjs}/sul/id/module.f.js +9 -9
- package/{fs → fjs}/sul/id/proof.f.js +12 -26
- package/{fs → fjs}/sul/level/hash/module.f.js +3 -3
- package/{fs → fjs}/sul/level/hash/proof.f.js +8 -8
- package/{fs → fjs}/sul/level/literal/module.f.js +5 -5
- package/{fs → fjs}/sul/level/literal/proof.f.js +15 -29
- package/{fs → fjs}/sul/module.f.js +3 -3
- package/{fs → fjs}/sul/proof.f.js +3 -3
- package/fjs/text/ascii/proof.f.d.ts +6 -0
- package/fjs/text/ascii/proof.f.js +14 -0
- package/{fs → fjs}/text/code_point/module.f.js +12 -12
- package/{fs → fjs}/text/code_point/proof.f.js +1 -1
- package/{fs → fjs}/text/module.f.js +5 -5
- package/{fs → fjs}/text/proof.f.js +7 -12
- package/{fs → fjs}/text/sgr/module.f.js +2 -2
- package/{fs → fjs}/text/sgr/proof.f.js +8 -17
- package/{fs → fjs}/text/utf16/module.f.js +6 -6
- package/{fs → fjs}/text/utf16/proof.f.js +27 -70
- package/{fs → fjs}/text/utf8/module.f.js +22 -17
- package/{fs → fjs}/text/utf8/proof.f.js +59 -128
- package/{fs → fjs}/types/array/module.f.js +1 -1
- package/{fs → fjs}/types/array/proof.f.js +21 -55
- package/{fs → fjs}/types/bigfloat/module.f.js +1 -1
- package/fjs/types/bigfloat/proof.f.js +217 -0
- package/{fs → fjs}/types/bigint/module.f.js +2 -2
- package/{fs → fjs}/types/bigint/proof.f.js +51 -147
- package/{fs → fjs}/types/bit_vec/module.f.js +8 -8
- package/{fs → fjs}/types/bit_vec/proof.f.js +76 -218
- package/{fs → fjs}/types/btree/find/module.f.js +1 -1
- package/fjs/types/btree/find/proof.f.d.ts +3 -0
- package/fjs/types/btree/find/proof.f.js +108 -0
- package/{fs → fjs}/types/btree/module.f.js +2 -2
- package/fjs/types/btree/proof.f.d.ts +13 -0
- package/{fs → fjs}/types/btree/proof.f.js +12 -19
- package/{fs → fjs}/types/btree/remove/module.f.js +4 -4
- package/fjs/types/btree/remove/proof.f.d.ts +9 -0
- package/{fs → fjs}/types/btree/remove/proof.f.js +88 -235
- package/{fs → fjs}/types/btree/set/module.f.js +8 -5
- package/{fs → fjs}/types/btree/set/proof.f.js +39 -28
- package/{fs → fjs}/types/byte_set/module.f.js +2 -2
- package/fjs/types/byte_set/proof.f.js +79 -0
- package/{fs → fjs}/types/function/compare/proof.f.js +14 -37
- package/fjs/types/function/operator/proof.f.d.ts +23 -0
- package/{fs → fjs}/types/function/operator/proof.f.js +18 -49
- package/{fs → fjs}/types/function/proof.f.js +3 -4
- package/{fs → fjs}/types/list/module.f.js +2 -2
- package/fjs/types/list/proof.f.d.ts +30 -0
- package/{fs → fjs}/types/list/proof.f.js +59 -167
- package/{fs → fjs}/types/map/proof.f.js +6 -14
- package/fjs/types/nibble_set/proof.f.js +60 -0
- package/{fs → fjs}/types/nominal/proof.f.js +5 -10
- package/{fs → fjs}/types/nullable/module.f.js +2 -2
- package/fjs/types/nullable/proof.f.js +29 -0
- package/{fs → fjs}/types/number/module.f.js +5 -5
- package/{fs → fjs}/types/number/proof.f.js +10 -25
- package/{fs → fjs}/types/object/module.f.js +4 -4
- package/{fs → fjs}/types/object/proof.f.js +4 -7
- package/{fs → fjs}/types/ordered_map/module.f.js +6 -6
- package/{fs → fjs}/types/ordered_map/proof.f.js +3 -3
- package/fjs/types/patricia_trie/proof.f.d.ts +13 -0
- package/{fs → fjs}/types/patricia_trie/proof.f.js +22 -22
- package/{fs → fjs}/types/prime_field/module.f.js +3 -8
- package/{fs → fjs}/types/prime_field/proof.f.js +2 -2
- package/{fs → fjs}/types/range/module.f.d.ts +1 -1
- package/fjs/types/range/module.f.js +2 -0
- package/fjs/types/range/proof.f.js +9 -0
- package/{fs → fjs}/types/range_map/module.f.js +4 -4
- package/{fs → fjs}/types/range_map/proof.f.js +35 -88
- package/{fs → fjs}/types/result/module.js +1 -1
- package/fjs/types/result/proof.f.d.ts +12 -0
- package/fjs/types/result/proof.f.js +31 -0
- package/{fs → fjs}/types/rtti/common/module.f.d.ts +36 -1
- package/{fs → fjs}/types/rtti/common/module.f.js +48 -4
- package/fjs/types/rtti/common/proof.f.d.ts +8 -0
- package/fjs/types/rtti/common/proof.f.js +51 -0
- package/{fs → fjs}/types/rtti/module.f.d.ts +2 -2
- package/{fs → fjs}/types/rtti/module.f.js +1 -1
- package/{fs → fjs}/types/rtti/parse/module.f.js +16 -25
- package/{fs → fjs}/types/rtti/parse/proof.f.js +9 -20
- package/{fs → fjs}/types/rtti/ts/module.f.d.ts +10 -4
- package/{fs → fjs}/types/rtti/ts/module.f.js +1 -1
- package/{fs → fjs}/types/rtti/ts/proof.f.js +2 -2
- package/{fs → fjs}/types/rtti/validate/module.f.js +11 -32
- package/{fs → fjs}/types/rtti/validate/proof.f.js +6 -11
- package/{fs → fjs}/types/sorted_list/module.f.js +3 -3
- package/{fs → fjs}/types/sorted_list/proof.f.js +14 -27
- package/{fs → fjs}/types/sorted_set/module.f.js +1 -1
- package/{fs → fjs}/types/sorted_set/proof.f.js +20 -45
- package/{fs → fjs}/types/string/module.f.js +4 -4
- package/fjs/types/string/proof.f.js +77 -0
- package/{fs → fjs}/types/string_set/module.f.js +6 -6
- package/fjs/types/string_set/proof.f.js +43 -0
- package/{fs → fjs}/types/ts/proof.f.d.ts +18 -18
- package/{fs → fjs}/types/ts/proof.f.js +16 -43
- package/{fs → fjs}/types/uint8array/module.f.js +10 -10
- package/{fs → fjs}/types/uint8array/proof.f.d.ts +4 -1
- package/{fs → fjs}/types/uint8array/proof.f.js +11 -11
- package/{fs → fjs}/website/module.f.js +3 -3
- package/fjs/website/proof.f.js +13 -0
- package/package.json +8 -8
- package/fs/asserts/module.f.d.ts +0 -4
- package/fs/asserts/module.f.js +0 -9
- package/fs/asserts/proof.f.d.ts +0 -8
- package/fs/asserts/proof.f.js +0 -51
- package/fs/bnf/data/module.f.d.ts +0 -30
- package/fs/bnf/descent/module.f.js +0 -119
- package/fs/bnf/proof.f.js +0 -104
- package/fs/cas/mcp/module.f.d.ts +0 -36
- package/fs/cas/mcp/module.f.js +0 -249
- package/fs/ci/config/module.f.d.ts +0 -43
- package/fs/ci/deno/module.f.js +0 -16
- package/fs/crypto/pow/proof.f.js +0 -161
- package/fs/djs/examples/m.f.d.ts +0 -2
- package/fs/djs/tokenizer/module.f.d.ts +0 -12
- package/fs/djs/tokenizer/module.f.js +0 -62
- package/fs/djs/tokenizer/proof.f.d.ts +0 -7
- package/fs/djs/tokenizer/proof.f.js +0 -543
- package/fs/djs/tokenizer-new/module.f.d.ts +0 -3
- package/fs/djs/tokenizer-new/module.f.js +0 -155
- package/fs/djs/transpiler/proof.f.js +0 -68
- package/fs/emergent_testing/all.test.js +0 -4
- package/fs/emergent_testing/scenarios/all.js +0 -1
- package/fs/fjs/module.f.d.ts +0 -2
- package/fs/fjs/module.js +0 -4
- package/fs/json/module.f.d.ts +0 -50
- package/fs/json/rpc/module.f.d.ts +0 -114
- package/fs/json/schema/module.f.d.ts +0 -77
- package/fs/text/ascii/proof.f.d.ts +0 -4
- package/fs/text/ascii/proof.f.js +0 -24
- package/fs/types/bigfloat/proof.f.js +0 -348
- package/fs/types/btree/find/proof.f.js +0 -151
- package/fs/types/btree/proof.f.d.ts +0 -7
- package/fs/types/btree/remove/proof.f.d.ts +0 -4
- package/fs/types/byte_set/proof.f.js +0 -120
- package/fs/types/function/operator/proof.f.d.ts +0 -12
- package/fs/types/list/proof.f.d.ts +0 -22
- package/fs/types/nibble_set/proof.f.js +0 -89
- package/fs/types/nullable/proof.f.js +0 -50
- package/fs/types/patricia_trie/proof.f.d.ts +0 -7
- package/fs/types/range/module.f.js +0 -2
- package/fs/types/range/proof.f.d.ts +0 -1
- package/fs/types/range/proof.f.js +0 -18
- package/fs/types/result/proof.f.d.ts +0 -6
- package/fs/types/result/proof.f.js +0 -52
- package/fs/types/string/proof.f.js +0 -118
- package/fs/types/string_set/proof.f.js +0 -82
- package/fs/website/proof.f.js +0 -16
- /package/{fs → fjs}/asn.1/module.f.d.ts +0 -0
- /package/{fs → fjs}/asn.1/proof.f.d.ts +0 -0
- /package/{fs → fjs}/base_n/module.f.d.ts +0 -0
- /package/{fs → fjs}/base_n/proof.f.d.ts +0 -0
- /package/{fs → fjs/basen}/base128/proof.f.d.ts +0 -0
- /package/{fs → fjs/basen}/cbase32/proof.f.d.ts +0 -0
- /package/{fs → fjs}/bnf/proof.f.d.ts +0 -0
- /package/{fs → fjs}/bnf/testlib.f.d.ts +0 -0
- /package/{fs → fjs}/cas/cli/module.f.d.ts +0 -0
- /package/{fs → fjs}/ci/bun/module.f.d.ts +0 -0
- /package/{fs → fjs}/ci/deno/module.f.d.ts +0 -0
- /package/{fs → fjs}/ci/module.f.d.ts +0 -0
- /package/{fs → fjs}/ci/playwright/module.f.d.ts +0 -0
- /package/{fs → fjs}/ci/proof.f.d.ts +0 -0
- /package/{fs → fjs}/ci/rust/module.f.d.ts +0 -0
- /package/{fs → fjs}/cli/module.f.d.ts +0 -0
- /package/{fs → fjs}/cli/proof.f.d.ts +0 -0
- /package/{fs/types → fjs/common}/monoid/module.f.js +0 -0
- /package/{fs/types → fjs/common}/monoid/proof.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/hmac/module.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/hmac/proof.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/pow/module.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/pow/proof.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/secp/module.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/secp/proof.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/sha2/module.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/sha2/proof.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/sign/proof.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/vdf/module.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/vdf/proof.f.d.ts +0 -0
- /package/{fs → fjs}/dev/module.f.d.ts +0 -0
- /package/{fs → fjs}/dev/package_json/module.f.d.ts +0 -0
- /package/{fs → fjs}/dev/package_json/proof.f.d.ts +0 -0
- /package/{fs → fjs}/dev/proof.f.d.ts +0 -0
- /package/{fs → fjs}/djs/ast/module.f.d.ts +0 -0
- /package/{fs → fjs}/djs/ast/proof.f.d.ts +0 -0
- /package/{fs → fjs}/djs/examples/input.f.d.ts +0 -0
- /package/{fs → fjs}/djs/examples/input.f.js +0 -0
- /package/{fs → fjs}/djs/examples/m.f.js +0 -0
- /package/{fs → fjs}/djs/parser/proof.f.d.ts +0 -0
- /package/{fs → fjs}/djs/proof.f.d.ts +0 -0
- /package/{fs → fjs}/djs/serializer/module.f.d.ts +0 -0
- /package/{fs → fjs}/djs/serializer/proof.f.d.ts +0 -0
- /package/{fs → fjs}/effects/list/module.f.d.ts +0 -0
- /package/{fs → fjs}/effects/list/module.f.js +0 -0
- /package/{fs → fjs}/effects/memory/module.f.d.ts +0 -0
- /package/{fs → fjs}/effects/memory/proof.f.d.ts +0 -0
- /package/{fs → fjs}/effects/mock/module.f.d.ts +0 -0
- /package/{fs → fjs}/effects/mock/module.f.js +0 -0
- /package/{fs → fjs}/effects/module.d.ts +0 -0
- /package/{fs → fjs}/effects/module.f.d.ts +0 -0
- /package/{fs → fjs}/effects/module.js +0 -0
- /package/{fs → fjs}/effects/node/memory/module.d.ts +0 -0
- /package/{fs → fjs}/effects/node/memory/proof.d.ts +0 -0
- /package/{fs → fjs}/effects/node/virtual/module.f.d.ts +0 -0
- /package/{fs → fjs}/effects/proof.f.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/all.test.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/example.f.js +0 -0
- /package/{fs → fjs}/emergent_testing/module.f.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/all.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.fail.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.fail.js +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.pass.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.pass.js +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/async.fail.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/async.fail.js +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/async.pass.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/async.pass.js +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/fail.fail.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/fail.fail.js +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/return-value.pass.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/return-value.pass.js +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/thenable.pass.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/thenable.pass.js +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/thenable2.pass.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/thenable2.pass.js +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/throw.pass.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/throw.pass.js +0 -0
- /package/{fs → fjs}/fsc/bnf.f.d.ts +0 -0
- /package/{fs → fjs}/fsc/json.f.d.ts +0 -0
- /package/{fs → fjs}/fsc/module.f.d.ts +0 -0
- /package/{fs → fjs}/fsc/proof.f.d.ts +0 -0
- /package/{fs → fjs}/fsm/module.f.d.ts +0 -0
- /package/{fs → fjs}/fsm/proof.f.d.ts +0 -0
- /package/{fs → fjs}/js/tokenizer/module.f.d.ts +0 -0
- /package/{fs → fjs}/js/tokenizer/proof.f.d.ts +0 -0
- /package/{fs → fjs}/mcp/proof.f.d.ts +0 -0
- /package/{fs → fjs}/mcp/stdio/proof.f.d.ts +0 -0
- /package/{fs → fjs/media}/html/proof.f.d.ts +0 -0
- /package/{fs → fjs/media}/json/parser/proof.f.d.ts +0 -0
- /package/{fs → fjs/media}/json/proof.f.d.ts +0 -0
- /package/{fs → fjs/media}/json/rpc/proof.f.d.ts +0 -0
- /package/{fs → fjs/media}/json/schema/proof.f.d.ts +0 -0
- /package/{fs → fjs/media}/json/serializer/proof.f.d.ts +0 -0
- /package/{fs → fjs/media}/json/tokenizer/proof.f.d.ts +0 -0
- /package/{fs/mime → fjs/media/type}/proof.f.d.ts +0 -0
- /package/{fs/fjs → fjs}/module.d.ts +0 -0
- /package/{fs → fjs}/path/module.f.d.ts +0 -0
- /package/{fs → fjs}/path/proof.f.d.ts +0 -0
- /package/{fs/fjs → fjs}/proof.f.d.ts +0 -0
- /package/{fs → fjs}/sul/id/module.f.d.ts +0 -0
- /package/{fs → fjs}/sul/id/proof.f.d.ts +0 -0
- /package/{fs → fjs}/sul/level/hash/module.f.d.ts +0 -0
- /package/{fs → fjs}/sul/level/hash/proof.f.d.ts +0 -0
- /package/{fs → fjs}/sul/level/literal/module.f.d.ts +0 -0
- /package/{fs → fjs}/sul/level/literal/proof.f.d.ts +0 -0
- /package/{fs → fjs}/sul/module.f.d.ts +0 -0
- /package/{fs → fjs}/sul/proof.f.d.ts +0 -0
- /package/{fs → fjs}/text/ascii/module.f.d.ts +0 -0
- /package/{fs → fjs}/text/ascii/module.f.js +0 -0
- /package/{fs → fjs}/text/code_point/module.f.d.ts +0 -0
- /package/{fs → fjs}/text/code_point/proof.f.d.ts +0 -0
- /package/{fs → fjs}/text/module.f.d.ts +0 -0
- /package/{fs → fjs}/text/proof.f.d.ts +0 -0
- /package/{fs → fjs}/text/sgr/module.f.d.ts +0 -0
- /package/{fs → fjs}/text/sgr/proof.f.d.ts +0 -0
- /package/{fs → fjs}/text/utf16/module.f.d.ts +0 -0
- /package/{fs → fjs}/text/utf16/proof.f.d.ts +0 -0
- /package/{fs → fjs}/text/utf8/module.f.d.ts +0 -0
- /package/{fs → fjs}/text/utf8/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/array/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/array/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/bigfloat/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/bigfloat/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/bigint/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/bigint/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/bit_vec/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/bit_vec/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/btree/find/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/btree/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/btree/remove/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/btree/set/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/btree/set/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/btree/types/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/btree/types/module.f.js +0 -0
- /package/{fs → fjs}/types/byte_set/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/byte_set/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/function/compare/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/function/compare/module.f.js +0 -0
- /package/{fs/types/btree/find → fjs/types/function/compare}/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/function/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/function/module.f.js +0 -0
- /package/{fs → fjs}/types/function/operator/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/function/operator/module.f.js +0 -0
- /package/{fs/types/function/compare → fjs/types/function}/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/list/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/map/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/map/module.f.js +0 -0
- /package/{fs → fjs}/types/map/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/nibble_set/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/nibble_set/module.f.js +0 -0
- /package/{fs → fjs}/types/nibble_set/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/nominal/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/nominal/module.f.js +0 -0
- /package/{fs → fjs}/types/nominal/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/nullable/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/nullable/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/number/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/number/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/object/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/object/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/option/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/option/module.f.js +0 -0
- /package/{fs → fjs}/types/ordered_map/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/ordered_map/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/patricia_trie/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/patricia_trie/module.f.js +0 -0
- /package/{fs → fjs}/types/phantom/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/phantom/module.f.js +0 -0
- /package/{fs → fjs}/types/prime_field/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/prime_field/proof.f.d.ts +0 -0
- /package/{fs/types/function → fjs/types/range}/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/range_map/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/range_map/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/result/module.d.ts +0 -0
- /package/{fs → fjs}/types/result/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/result/module.f.js +0 -0
- /package/{fs → fjs}/types/rtti/parse/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/rtti/parse/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/rtti/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/rtti/proof.f.js +0 -0
- /package/{fs → fjs}/types/rtti/ts/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/rtti/validate/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/rtti/validate/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/sorted_list/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/sorted_list/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/sorted_set/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/sorted_set/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/string/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/string/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/string_set/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/string_set/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/ts/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/ts/module.f.js +0 -0
- /package/{fs → fjs}/types/uint8array/module.f.d.ts +0 -0
- /package/{fs → fjs}/website/module.f.d.ts +0 -0
- /package/{fs → fjs}/website/proof.f.d.ts +0 -0
|
@@ -1,150 +1,107 @@
|
|
|
1
|
-
import { toCodePointList, fromCodePointList, stringToList, listToString, stringToCodePointList, codePointListToString } from
|
|
2
|
-
import { stringify as jsonStringify } from
|
|
3
|
-
import { sort } from
|
|
4
|
-
import { toArray } from
|
|
1
|
+
import { toCodePointList, fromCodePointList, stringToList, listToString, stringToCodePointList, codePointListToString } from './module.f.js';
|
|
2
|
+
import { stringify as jsonStringify } from '../../media/json/module.f.js';
|
|
3
|
+
import { sort } from '../../types/object/module.f.js';
|
|
4
|
+
import { toArray } from '../../types/list/module.f.js';
|
|
5
|
+
import { assertEq } from '../../asserts/module.f.js';
|
|
5
6
|
const stringify = (a) => jsonStringify(sort)(a);
|
|
6
7
|
export const proof = {
|
|
7
8
|
toCodePointList: [
|
|
8
9
|
() => {
|
|
9
10
|
const result = stringify(toArray(toCodePointList([-1, 65536])));
|
|
10
|
-
|
|
11
|
-
throw result;
|
|
12
|
-
}
|
|
11
|
+
assertEq(result, '[4294967295,4294967295]');
|
|
13
12
|
},
|
|
14
13
|
() => {
|
|
15
14
|
const result = stringify(toArray(toCodePointList([0, 36, 8364, 55295, 57344, 65535])));
|
|
16
|
-
|
|
17
|
-
throw result;
|
|
18
|
-
}
|
|
15
|
+
assertEq(result, '[0,36,8364,55295,57344,65535]');
|
|
19
16
|
},
|
|
20
17
|
() => {
|
|
21
18
|
const result = stringify(toArray(toCodePointList([56320, 57343])));
|
|
22
|
-
|
|
23
|
-
throw result;
|
|
24
|
-
}
|
|
19
|
+
assertEq(result, '[-2147427328,-2147426305]');
|
|
25
20
|
},
|
|
26
21
|
() => {
|
|
27
22
|
const result = stringify(toArray(toCodePointList([55296, 56320, 55297, 56375, 55378, 57186, 56319, 57343])));
|
|
28
|
-
|
|
29
|
-
throw result;
|
|
30
|
-
}
|
|
23
|
+
assertEq(result, '[65536,66615,150370,1114111]');
|
|
31
24
|
},
|
|
32
25
|
() => {
|
|
33
26
|
const result = stringify(toArray(toCodePointList([55296, 55296])));
|
|
34
|
-
|
|
35
|
-
throw result;
|
|
36
|
-
}
|
|
27
|
+
assertEq(result, '[-2147428352,-2147428352]');
|
|
37
28
|
},
|
|
38
29
|
() => {
|
|
39
30
|
const result = stringify(toArray(toCodePointList([55296, 0])));
|
|
40
|
-
|
|
41
|
-
throw result;
|
|
42
|
-
}
|
|
31
|
+
assertEq(result, '[-2147428352,0]');
|
|
43
32
|
},
|
|
44
33
|
() => {
|
|
45
34
|
const result = stringify(toArray(toCodePointList([56320])));
|
|
46
|
-
|
|
47
|
-
throw result;
|
|
48
|
-
}
|
|
35
|
+
assertEq(result, '[-2147427328]');
|
|
49
36
|
},
|
|
50
37
|
() => {
|
|
51
38
|
const result = stringify(toArray(toCodePointList([56320, 0])));
|
|
52
|
-
|
|
53
|
-
throw result;
|
|
54
|
-
}
|
|
39
|
+
assertEq(result, '[-2147427328,0]');
|
|
55
40
|
}
|
|
56
41
|
],
|
|
57
42
|
fromCodePointList: [
|
|
58
43
|
() => {
|
|
59
44
|
const result = stringify(toArray(fromCodePointList([0])));
|
|
60
|
-
|
|
61
|
-
throw result;
|
|
62
|
-
}
|
|
45
|
+
assertEq(result, '[0]');
|
|
63
46
|
},
|
|
64
47
|
() => {
|
|
65
48
|
const result = stringify(toArray(fromCodePointList([0x24])));
|
|
66
|
-
|
|
67
|
-
throw result;
|
|
68
|
-
}
|
|
49
|
+
assertEq(result, '[36]');
|
|
69
50
|
},
|
|
70
51
|
() => {
|
|
71
52
|
const result = stringify(toArray(fromCodePointList([0x20AC])));
|
|
72
|
-
|
|
73
|
-
throw result;
|
|
74
|
-
}
|
|
53
|
+
assertEq(result, '[8364]');
|
|
75
54
|
},
|
|
76
55
|
() => {
|
|
77
56
|
const result = stringify(toArray(fromCodePointList([0xd7ff])));
|
|
78
|
-
|
|
79
|
-
throw result;
|
|
80
|
-
}
|
|
57
|
+
assertEq(result, '[55295]');
|
|
81
58
|
},
|
|
82
59
|
() => {
|
|
83
60
|
const result = stringify(toArray(fromCodePointList([0xe000])));
|
|
84
|
-
|
|
85
|
-
throw result;
|
|
86
|
-
}
|
|
61
|
+
assertEq(result, '[57344]');
|
|
87
62
|
},
|
|
88
63
|
() => {
|
|
89
64
|
const result = stringify(toArray(fromCodePointList([0xffff])));
|
|
90
|
-
|
|
91
|
-
throw result;
|
|
92
|
-
}
|
|
65
|
+
assertEq(result, '[65535]');
|
|
93
66
|
},
|
|
94
67
|
() => {
|
|
95
68
|
const result = stringify(toArray(fromCodePointList([0x10000])));
|
|
96
|
-
|
|
97
|
-
throw result;
|
|
98
|
-
}
|
|
69
|
+
assertEq(result, '[55296,56320]');
|
|
99
70
|
},
|
|
100
71
|
() => {
|
|
101
72
|
const result = stringify(toArray(fromCodePointList([0x10437])));
|
|
102
|
-
|
|
103
|
-
throw result;
|
|
104
|
-
}
|
|
73
|
+
assertEq(result, '[55297,56375]');
|
|
105
74
|
},
|
|
106
75
|
() => {
|
|
107
76
|
const result = stringify(toArray(fromCodePointList([0x24B62])));
|
|
108
|
-
|
|
109
|
-
throw result;
|
|
110
|
-
}
|
|
77
|
+
assertEq(result, '[55378,57186]');
|
|
111
78
|
},
|
|
112
79
|
() => {
|
|
113
80
|
const result = stringify(toArray(fromCodePointList([0x10ffff])));
|
|
114
|
-
|
|
115
|
-
throw result;
|
|
116
|
-
}
|
|
81
|
+
assertEq(result, '[56319,57343]');
|
|
117
82
|
},
|
|
118
83
|
() => {
|
|
119
84
|
const result = stringify(toArray(fromCodePointList([-1, 0xd800, 0xdfff, 0x110000])));
|
|
120
|
-
|
|
121
|
-
throw result;
|
|
122
|
-
}
|
|
85
|
+
assertEq(result, '[65535,55296,57343,0]');
|
|
123
86
|
}
|
|
124
87
|
],
|
|
125
88
|
string: [
|
|
126
89
|
() => {
|
|
127
90
|
const utf16List = stringToList("Hello world!😂🚜🚲");
|
|
128
91
|
const result = listToString(utf16List);
|
|
129
|
-
|
|
130
|
-
throw result;
|
|
131
|
-
}
|
|
92
|
+
assertEq(result, "Hello world!😂🚜🚲");
|
|
132
93
|
},
|
|
133
94
|
() => {
|
|
134
95
|
const cpList = stringToCodePointList("Hello world!😂🚜🚲");
|
|
135
96
|
const result = codePointListToString(cpList);
|
|
136
|
-
|
|
137
|
-
throw result;
|
|
138
|
-
}
|
|
97
|
+
assertEq(result, "Hello world!😂🚜🚲");
|
|
139
98
|
},
|
|
140
99
|
() => {
|
|
141
100
|
const a = stringToList("Hello world!😂🚜🚲");
|
|
142
101
|
const b = toCodePointList(a);
|
|
143
102
|
const c = fromCodePointList(b);
|
|
144
103
|
const result = listToString(c);
|
|
145
|
-
|
|
146
|
-
throw result;
|
|
147
|
-
}
|
|
104
|
+
assertEq(result, "Hello world!😂🚜🚲");
|
|
148
105
|
}
|
|
149
106
|
],
|
|
150
107
|
stringToList: [
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
-
import { flatMap, toArray } from
|
|
7
|
-
import { decoder, errorMask, isValidCodePoint } from
|
|
8
|
-
import { msb, u8List, length } from
|
|
9
|
-
import { codePointListToString } from
|
|
6
|
+
import { flatMap, toArray } from '../../types/list/module.f.js';
|
|
7
|
+
import { decoder, errorMask, isValidCodePoint } from '../code_point/module.f.js';
|
|
8
|
+
import { msb, u8List, length } from '../../types/bit_vec/module.f.js';
|
|
9
|
+
import { codePointListToString } from '../utf16/module.f.js';
|
|
10
10
|
/**
|
|
11
11
|
* UTF-8 byte-format constants. Each byte kind is defined by a tag — the fixed
|
|
12
12
|
* high bits identifying the kind — and a payload mask selecting the code-point
|
|
@@ -36,6 +36,21 @@ const contByte = (x) => x & contMask | contTag;
|
|
|
36
36
|
* Reads the six payload bits of a continuation byte.
|
|
37
37
|
*/
|
|
38
38
|
const contPayload = (b) => b & contMask;
|
|
39
|
+
/**
|
|
40
|
+
* The valid lead-byte range for 2-, 3-, and 4-byte sequences (RFC 3629);
|
|
41
|
+
* excludes overlong 2-byte leads (`C0`, `C1`) and leads above `U+10FFFF` (`F5`-`F7`).
|
|
42
|
+
*/
|
|
43
|
+
const leadMin = 0b1100_0010;
|
|
44
|
+
const leadMax = 0b1111_0100;
|
|
45
|
+
const isLeadByte = (b) => b >= leadMin && b <= leadMax;
|
|
46
|
+
/**
|
|
47
|
+
* Dispatches a fresh-state byte, emitting `prefix` ahead of whatever the byte
|
|
48
|
+
* itself produces. Shared by the `state === null` arm and by error recovery
|
|
49
|
+
* after {@link utf8StateToError}, which differ only in `prefix`.
|
|
50
|
+
*/
|
|
51
|
+
const restart = (prefix) => (byte) => byte < contTag ? [[...prefix, byte], null]
|
|
52
|
+
: isLeadByte(byte) ? [[...prefix], [byte]]
|
|
53
|
+
: [[...prefix, byte | errorMask], null];
|
|
39
54
|
/**
|
|
40
55
|
* Converts a Unicode code point to a sequence of UTF-8 bytes.
|
|
41
56
|
* @param input The Unicode code point to be converted. Valid range:
|
|
@@ -151,13 +166,8 @@ export const utf8ByteToCodePointOp = (byte, state) => {
|
|
|
151
166
|
if (byte < 0x00 || byte > 0xff) {
|
|
152
167
|
return [[errorMask], state];
|
|
153
168
|
}
|
|
154
|
-
if (state === null)
|
|
155
|
-
|
|
156
|
-
return [[byte], null];
|
|
157
|
-
if (byte >= 0b1100_0010 && byte <= 0b1111_0100)
|
|
158
|
-
return [[], [byte]];
|
|
159
|
-
return [[byte | errorMask], null];
|
|
160
|
-
}
|
|
169
|
+
if (state === null)
|
|
170
|
+
return restart([])(byte);
|
|
161
171
|
if (byte >= contTag && byte < lead2Tag) {
|
|
162
172
|
switch (state.length) {
|
|
163
173
|
case 1: {
|
|
@@ -197,12 +207,7 @@ export const utf8ByteToCodePointOp = (byte, state) => {
|
|
|
197
207
|
}
|
|
198
208
|
}
|
|
199
209
|
}
|
|
200
|
-
|
|
201
|
-
if (byte < contTag)
|
|
202
|
-
return [[error, byte], null];
|
|
203
|
-
if (byte >= 0b1100_0010 && byte <= 0b1111_0100)
|
|
204
|
-
return [[error], [byte]];
|
|
205
|
-
return [[error, byte | errorMask], null];
|
|
210
|
+
return restart([utf8StateToError(state)])(byte);
|
|
206
211
|
};
|
|
207
212
|
/**
|
|
208
213
|
* Handles the end-of-file (EOF) case for UTF-8 decoding.
|
|
@@ -1,237 +1,175 @@
|
|
|
1
|
-
import { toCodePointList, fromCodePointList, fromVec } from
|
|
2
|
-
import { stringify as jsonStringify } from
|
|
3
|
-
import { sort } from
|
|
4
|
-
import { toArray } from
|
|
5
|
-
import { msb, u8ListToVec } from
|
|
1
|
+
import { toCodePointList, fromCodePointList, fromVec, utf8ByteToCodePointOp } from './module.f.js';
|
|
2
|
+
import { stringify as jsonStringify } from '../../media/json/module.f.js';
|
|
3
|
+
import { sort } from '../../types/object/module.f.js';
|
|
4
|
+
import { toArray } from '../../types/list/module.f.js';
|
|
5
|
+
import { msb, u8ListToVec, vec } from '../../types/bit_vec/module.f.js';
|
|
6
|
+
import { assertEq } from '../../asserts/module.f.js';
|
|
6
7
|
const stringify = jsonStringify(sort);
|
|
7
8
|
export const proof = {
|
|
8
9
|
toCodePoint: [
|
|
9
10
|
() => {
|
|
10
11
|
const result = stringify(toArray(toCodePointList([-1, 256])));
|
|
11
|
-
|
|
12
|
-
throw result;
|
|
13
|
-
}
|
|
12
|
+
assertEq(result, '[2147483648,2147483648]');
|
|
14
13
|
},
|
|
15
14
|
() => {
|
|
16
15
|
const result = stringify(toArray(toCodePointList([128, 193, 245, 255])));
|
|
17
|
-
|
|
18
|
-
throw result;
|
|
19
|
-
}
|
|
16
|
+
assertEq(result, '[-2147483520,-2147483455,-2147483403,-2147483393]');
|
|
20
17
|
},
|
|
21
18
|
() => {
|
|
22
19
|
const result = stringify(toArray(toCodePointList([0, 1, 127])));
|
|
23
|
-
|
|
24
|
-
throw result;
|
|
25
|
-
}
|
|
20
|
+
assertEq(result, '[0,1,127]');
|
|
26
21
|
},
|
|
27
22
|
() => {
|
|
28
23
|
const result = stringify(toArray(toCodePointList([194, 128, 194, 169, 223, 191])));
|
|
29
|
-
|
|
30
|
-
throw result;
|
|
31
|
-
}
|
|
24
|
+
assertEq(result, '[128,169,2047]');
|
|
32
25
|
},
|
|
33
26
|
() => {
|
|
34
27
|
const result = stringify(toArray(toCodePointList([194, 194, 127, 194, 192, 194])));
|
|
35
|
-
|
|
36
|
-
throw result;
|
|
37
|
-
}
|
|
28
|
+
assertEq(result, '[-2147483454,-2147483454,127,-2147483454,-2147483456,-2147483454]');
|
|
38
29
|
},
|
|
39
30
|
() => {
|
|
40
31
|
const result = stringify(toArray(toCodePointList([224, 160, 128, 224, 160, 129, 239, 191, 191])));
|
|
41
|
-
|
|
42
|
-
throw result;
|
|
43
|
-
}
|
|
32
|
+
assertEq(result, '[2048,2049,65535]');
|
|
44
33
|
},
|
|
45
34
|
() => {
|
|
46
35
|
const result = stringify(toArray(toCodePointList([224, 224, 160, 127, 239, 191])));
|
|
47
|
-
|
|
48
|
-
throw result;
|
|
49
|
-
}
|
|
36
|
+
assertEq(result, '[-2147483424,-2147482592,127,-2147481601]');
|
|
50
37
|
},
|
|
51
38
|
() => {
|
|
52
39
|
const result = stringify(toArray(toCodePointList([240, 144, 128, 128, 240, 144, 128, 129, 244, 143, 191, 191])));
|
|
53
|
-
|
|
54
|
-
throw result;
|
|
55
|
-
}
|
|
40
|
+
assertEq(result, '[65536,65537,1114111]');
|
|
56
41
|
},
|
|
57
42
|
() => {
|
|
58
43
|
const result = stringify(toArray(toCodePointList([240, 240, 160, 127, 244, 191])));
|
|
59
|
-
|
|
60
|
-
throw result;
|
|
61
|
-
}
|
|
44
|
+
assertEq(result, '[-2147483408,-2147483104,127,-2147482817]');
|
|
62
45
|
},
|
|
63
46
|
() => {
|
|
64
47
|
const result = stringify(toArray(toCodePointList([240, 160, 160, 244, 160, 160])));
|
|
65
|
-
|
|
66
|
-
throw result;
|
|
67
|
-
}
|
|
48
|
+
assertEq(result, '[-2147448800,-2147432416]');
|
|
68
49
|
},
|
|
69
50
|
// Overlong 3-byte encodings (E0 80..9F ..) are rejected, not decoded.
|
|
70
51
|
() => {
|
|
71
52
|
const result = stringify(toArray(toCodePointList([224, 128, 128])));
|
|
72
|
-
|
|
73
|
-
throw result;
|
|
74
|
-
}
|
|
53
|
+
assertEq(result, '[-2147483424,-2147483520,-2147483520]');
|
|
75
54
|
},
|
|
76
55
|
() => {
|
|
77
56
|
const result = stringify(toArray(toCodePointList([224, 159, 191])));
|
|
78
|
-
|
|
79
|
-
throw result;
|
|
80
|
-
}
|
|
57
|
+
assertEq(result, '[-2147483424,-2147483489,-2147483457]');
|
|
81
58
|
},
|
|
82
59
|
// Overlong 4-byte encodings (F0 80..8F .. ..) are rejected, not decoded.
|
|
83
60
|
() => {
|
|
84
61
|
const result = stringify(toArray(toCodePointList([240, 128, 128, 128])));
|
|
85
|
-
|
|
86
|
-
throw result;
|
|
87
|
-
}
|
|
62
|
+
assertEq(result, '[-2147483408,-2147483520,-2147483520,-2147483520]');
|
|
88
63
|
},
|
|
89
64
|
() => {
|
|
90
65
|
const result = stringify(toArray(toCodePointList([240, 143, 191, 191])));
|
|
91
|
-
|
|
92
|
-
throw result;
|
|
93
|
-
}
|
|
66
|
+
assertEq(result, '[-2147483408,-2147483505,-2147483457,-2147483457]');
|
|
94
67
|
},
|
|
95
68
|
// Valid boundary cases still decode: E0 A0 80 -> U+0800, F0 90 80 80 -> U+10000.
|
|
96
69
|
() => {
|
|
97
70
|
const result = stringify(toArray(toCodePointList([224, 160, 128])));
|
|
98
|
-
|
|
99
|
-
throw result;
|
|
100
|
-
}
|
|
71
|
+
assertEq(result, '[2048]');
|
|
101
72
|
},
|
|
102
73
|
() => {
|
|
103
74
|
const result = stringify(toArray(toCodePointList([240, 144, 128, 128])));
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
75
|
+
assertEq(result, '[65536]');
|
|
76
|
+
},
|
|
77
|
+
// A byte stream never accumulates a 2-byte state whose lead is >= F8
|
|
78
|
+
// (isLeadByte caps leads at F4), so this defensive fallthrough is
|
|
79
|
+
// only reachable by calling the scan op directly with such a state.
|
|
80
|
+
() => {
|
|
81
|
+
const result = stringify(utf8ByteToCodePointOp(0x80, [0xf8, 0x80]));
|
|
82
|
+
assertEq(result, '[[-2147483136,-2147483520],null]');
|
|
107
83
|
}
|
|
108
84
|
],
|
|
109
85
|
fromCodePointList: [
|
|
110
86
|
() => {
|
|
111
87
|
const result = stringify(toArray(fromCodePointList([0, 1, 0x7F])));
|
|
112
|
-
|
|
113
|
-
throw result;
|
|
114
|
-
}
|
|
88
|
+
assertEq(result, '[0,1,127]');
|
|
115
89
|
},
|
|
116
90
|
() => {
|
|
117
91
|
const result = stringify(toArray(fromCodePointList([0x80])));
|
|
118
|
-
|
|
119
|
-
throw result;
|
|
120
|
-
}
|
|
92
|
+
assertEq(result, '[194,128]');
|
|
121
93
|
},
|
|
122
94
|
() => {
|
|
123
95
|
const result = stringify(toArray(fromCodePointList([0xa9])));
|
|
124
|
-
|
|
125
|
-
throw result;
|
|
126
|
-
}
|
|
96
|
+
assertEq(result, '[194,169]');
|
|
127
97
|
},
|
|
128
98
|
() => {
|
|
129
99
|
const result = stringify(toArray(fromCodePointList([0x7ff])));
|
|
130
|
-
|
|
131
|
-
throw result;
|
|
132
|
-
}
|
|
100
|
+
assertEq(result, '[223,191]');
|
|
133
101
|
},
|
|
134
102
|
() => {
|
|
135
103
|
const result = stringify(toArray(fromCodePointList([0x800])));
|
|
136
|
-
|
|
137
|
-
throw result;
|
|
138
|
-
}
|
|
104
|
+
assertEq(result, '[224,160,128]');
|
|
139
105
|
},
|
|
140
106
|
() => {
|
|
141
107
|
const result = stringify(toArray(fromCodePointList([0x801])));
|
|
142
|
-
|
|
143
|
-
throw result;
|
|
144
|
-
}
|
|
108
|
+
assertEq(result, '[224,160,129]');
|
|
145
109
|
},
|
|
146
110
|
() => {
|
|
147
111
|
const result = stringify(toArray(fromCodePointList([0xffff])));
|
|
148
|
-
|
|
149
|
-
throw result;
|
|
150
|
-
}
|
|
112
|
+
assertEq(result, '[239,191,191]');
|
|
151
113
|
},
|
|
152
114
|
() => {
|
|
153
115
|
const result = stringify(toArray(fromCodePointList([0x10000])));
|
|
154
|
-
|
|
155
|
-
throw result;
|
|
156
|
-
}
|
|
116
|
+
assertEq(result, '[240,144,128,128]');
|
|
157
117
|
},
|
|
158
118
|
() => {
|
|
159
119
|
const result = stringify(toArray(fromCodePointList([0x10001])));
|
|
160
|
-
|
|
161
|
-
throw result;
|
|
162
|
-
}
|
|
120
|
+
assertEq(result, '[240,144,128,129]');
|
|
163
121
|
},
|
|
164
122
|
() => {
|
|
165
123
|
const result = stringify(toArray(fromCodePointList([0x10FFFF])));
|
|
166
|
-
|
|
167
|
-
throw result;
|
|
168
|
-
}
|
|
124
|
+
assertEq(result, '[244,143,191,191]');
|
|
169
125
|
},
|
|
170
126
|
() => {
|
|
171
127
|
const result = stringify(toArray(fromCodePointList([0x110000, 2147483648])));
|
|
172
|
-
|
|
173
|
-
throw result;
|
|
174
|
-
}
|
|
128
|
+
assertEq(result, '[2147483648,2147483648]');
|
|
175
129
|
}
|
|
176
130
|
],
|
|
177
131
|
toFrom: [
|
|
178
132
|
() => {
|
|
179
133
|
const codePointList = toCodePointList([128, 193, 245, 255]);
|
|
180
134
|
const result = stringify(toArray(fromCodePointList(codePointList)));
|
|
181
|
-
|
|
182
|
-
throw result;
|
|
183
|
-
}
|
|
135
|
+
assertEq(result, '[128,193,245,255]');
|
|
184
136
|
},
|
|
185
137
|
() => {
|
|
186
138
|
const codePointList = toCodePointList([194, 194, 127, 194, 192, 194]);
|
|
187
139
|
const result = stringify(toArray(fromCodePointList(codePointList)));
|
|
188
|
-
|
|
189
|
-
throw result;
|
|
190
|
-
}
|
|
140
|
+
assertEq(result, '[194,194,127,194,192,194]');
|
|
191
141
|
},
|
|
192
142
|
() => {
|
|
193
143
|
const codePointList = toCodePointList([224, 224, 160, 127, 239, 191]);
|
|
194
144
|
const result = stringify(toArray(fromCodePointList(codePointList)));
|
|
195
|
-
|
|
196
|
-
throw result;
|
|
197
|
-
}
|
|
145
|
+
assertEq(result, '[224,224,160,127,239,191]');
|
|
198
146
|
},
|
|
199
147
|
() => {
|
|
200
148
|
const codePointList = toCodePointList([240, 240, 160, 127, 244, 191]);
|
|
201
149
|
const result = stringify(toArray(fromCodePointList(codePointList)));
|
|
202
|
-
|
|
203
|
-
throw result;
|
|
204
|
-
}
|
|
150
|
+
assertEq(result, '[240,240,160,127,244,191]');
|
|
205
151
|
},
|
|
206
152
|
() => {
|
|
207
153
|
const codePointList = toCodePointList([240, 160, 160, 244, 160, 160]);
|
|
208
154
|
const result = stringify(toArray(fromCodePointList(codePointList)));
|
|
209
|
-
|
|
210
|
-
throw result;
|
|
211
|
-
}
|
|
155
|
+
assertEq(result, '[240,160,160,244,160,160]');
|
|
212
156
|
}
|
|
213
157
|
],
|
|
214
158
|
fromVec: [
|
|
215
159
|
// Valid ASCII → decoded string
|
|
216
160
|
() => {
|
|
217
161
|
const v = u8ListToVec(msb)([0x68, 0x65, 0x6c, 0x6c, 0x6f]); // "hello"
|
|
218
|
-
|
|
219
|
-
throw 'expected "hello"';
|
|
220
|
-
}
|
|
162
|
+
assertEq(fromVec(v), 'hello', 'expected "hello"');
|
|
221
163
|
},
|
|
222
164
|
// Valid multi-byte UTF-8 → decoded string (U+00A9 COPYRIGHT SIGN, 2-byte)
|
|
223
165
|
() => {
|
|
224
166
|
const v = u8ListToVec(msb)([0xc2, 0xa9]); // "©"
|
|
225
|
-
|
|
226
|
-
throw 'expected copyright sign';
|
|
227
|
-
}
|
|
167
|
+
assertEq(fromVec(v), '©', 'expected copyright sign');
|
|
228
168
|
},
|
|
229
169
|
// Valid 3-byte UTF-8 (U+4E2D CJK)
|
|
230
170
|
() => {
|
|
231
171
|
const v = u8ListToVec(msb)([0xe4, 0xb8, 0xad]); // "中"
|
|
232
|
-
|
|
233
|
-
throw 'expected CJK character';
|
|
234
|
-
}
|
|
172
|
+
assertEq(fromVec(v), '中', 'expected CJK character');
|
|
235
173
|
},
|
|
236
174
|
// Valid 4-byte UTF-8 (U+1F600 GRINNING FACE)
|
|
237
175
|
() => {
|
|
@@ -243,44 +181,37 @@ export const proof = {
|
|
|
243
181
|
// Invalid byte sequence → null
|
|
244
182
|
() => {
|
|
245
183
|
const v = u8ListToVec(msb)([0xff, 0xfe]); // not valid UTF-8
|
|
246
|
-
|
|
247
|
-
throw 'expected null for invalid UTF-8';
|
|
248
|
-
}
|
|
184
|
+
assertEq(fromVec(v), null, 'expected null for invalid UTF-8');
|
|
249
185
|
},
|
|
250
186
|
// Lone continuation byte → null
|
|
251
187
|
() => {
|
|
252
188
|
const v = u8ListToVec(msb)([0x80]);
|
|
253
|
-
|
|
254
|
-
throw 'expected null for lone continuation byte';
|
|
255
|
-
}
|
|
189
|
+
assertEq(fromVec(v), null, 'expected null for lone continuation byte');
|
|
256
190
|
},
|
|
257
191
|
// Surrogate half (U+D800, encoded as CESU-8 0xED 0xA0 0x80) → null
|
|
258
192
|
() => {
|
|
259
193
|
const v = u8ListToVec(msb)([0xed, 0xa0, 0x80]);
|
|
260
|
-
|
|
261
|
-
throw 'expected null for surrogate';
|
|
262
|
-
}
|
|
194
|
+
assertEq(fromVec(v), null, 'expected null for surrogate');
|
|
263
195
|
},
|
|
264
196
|
// Empty Vec → empty string
|
|
265
197
|
() => {
|
|
266
198
|
const v = u8ListToVec(msb)([]);
|
|
267
|
-
|
|
268
|
-
throw 'expected empty string';
|
|
269
|
-
}
|
|
199
|
+
assertEq(fromVec(v), '', 'expected empty string');
|
|
270
200
|
},
|
|
271
201
|
// Overlong 3-byte encoding (E0 80 80, would decode to U+0000) → null
|
|
272
202
|
() => {
|
|
273
203
|
const v = u8ListToVec(msb)([0xe0, 0x80, 0x80]);
|
|
274
|
-
|
|
275
|
-
throw 'expected null for overlong 3-byte encoding';
|
|
276
|
-
}
|
|
204
|
+
assertEq(fromVec(v), null, 'expected null for overlong 3-byte encoding');
|
|
277
205
|
},
|
|
278
206
|
// Overlong 4-byte encoding (F0 80 80 80, would decode to U+0000) → null
|
|
279
207
|
() => {
|
|
280
208
|
const v = u8ListToVec(msb)([0xf0, 0x80, 0x80, 0x80]);
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
209
|
+
assertEq(fromVec(v), null, 'expected null for overlong 4-byte encoding');
|
|
210
|
+
},
|
|
211
|
+
// Vec length not a multiple of 8 bits → null
|
|
212
|
+
() => {
|
|
213
|
+
const v = vec(4n)(0n);
|
|
214
|
+
assertEq(fromVec(v), null);
|
|
284
215
|
},
|
|
285
216
|
]
|
|
286
217
|
};
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
-
import { fromUndefined, map } from
|
|
6
|
+
import { fromUndefined, map } from '../nullable/module.f.js';
|
|
7
7
|
export const isArray = (value) => value instanceof Array;
|
|
8
8
|
/**
|
|
9
9
|
* Currently, TypeScript can't narrow the type of `readonly T[]` to `Array2<T>`
|