functionalscript 0.37.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/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/proof.f.js +12 -36
- package/{fs → fjs}/basen/base64/proof.f.d.ts +1 -0
- package/{fs → fjs}/basen/base64/proof.f.js +15 -1
- package/{fs → fjs}/basen/cbase32/proof.f.js +15 -42
- package/fjs/bnf/data/module.f.d.ts +52 -0
- package/{fs → fjs}/bnf/data/module.f.js +53 -3
- package/{fs → fjs}/bnf/data/proof.f.d.ts +1 -0
- package/{fs → fjs}/bnf/data/proof.f.js +54 -19
- 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 +55 -24
- package/{fs → fjs}/bnf/ll1/module.f.d.ts +4 -4
- package/{fs → fjs}/bnf/ll1/module.f.js +7 -5
- package/{fs → fjs}/bnf/ll1/proof.f.d.ts +1 -0
- package/{fs → fjs}/bnf/ll1/proof.f.js +27 -10
- package/{fs → fjs}/bnf/module.f.d.ts +19 -5
- package/{fs → fjs}/bnf/module.f.js +10 -11
- package/fjs/bnf/proof.f.js +69 -0
- package/{fs → fjs}/bnf/testlib.f.js +2 -2
- package/{fs → fjs}/cas/cli/proof.f.d.ts +4 -1
- package/{fs → fjs}/cas/cli/proof.f.js +29 -66
- 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/{fs → fjs}/cas/mcp/module.f.js +54 -76
- package/{fs → fjs}/cas/mcp/proof.f.d.ts +4 -1
- package/{fs → fjs}/cas/mcp/proof.f.js +41 -13
- package/{fs → fjs}/cas/module.f.d.ts +10 -0
- package/{fs → fjs}/cas/module.f.js +27 -1
- package/{fs → fjs}/cas/proof.f.d.ts +4 -0
- package/{fs → fjs}/cas/proof.f.js +77 -86
- package/{fs → fjs}/ci/config/module.f.d.ts +5 -5
- package/{fs → fjs}/ci/config/module.f.js +5 -5
- package/{fs → fjs}/ci/proof.f.js +14 -9
- package/{fs → fjs}/ci/rust/module.f.js +9 -1
- package/{fs → fjs}/cli/proof.f.js +22 -63
- package/{fs → fjs}/common/monoid/proof.f.js +4 -9
- package/{fs → fjs}/crypto/hmac/proof.f.js +4 -12
- package/fjs/crypto/pow/proof.f.js +111 -0
- package/{fs → fjs}/crypto/secp/proof.f.js +12 -33
- package/{fs → fjs}/crypto/sha2/proof.f.js +18 -49
- package/{fs → fjs}/crypto/sign/module.f.d.ts +0 -5
- package/{fs → fjs}/crypto/sign/module.f.js +7 -4
- package/{fs → fjs}/crypto/sign/proof.f.js +36 -105
- package/{fs → fjs}/crypto/vdf/proof.f.js +22 -63
- package/{fs → fjs}/dev/package_json/proof.f.js +7 -7
- package/{fs → fjs}/dev/proof.f.js +2 -4
- package/{fs → fjs}/djs/ast/proof.f.js +4 -12
- package/{fs → fjs}/djs/parser/module.f.d.ts +5 -0
- package/{fs → fjs}/djs/parser/module.f.js +20 -0
- package/{fs → fjs}/djs/parser/proof.f.js +138 -400
- package/{fs → fjs}/djs/proof.f.js +13 -36
- package/{fs → fjs}/djs/serializer/proof.f.js +14 -39
- 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 +446 -445
- package/{fs → fjs}/djs/transpiler/proof.f.d.ts +3 -0
- package/{fs → fjs}/djs/transpiler/proof.f.js +29 -30
- package/{fs → fjs}/effects/memory/proof.f.js +8 -21
- package/{fs → fjs}/effects/node/memory/proof.js +5 -12
- 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.js +3 -3
- 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/proof.f.d.ts +1 -0
- package/{fs → fjs}/effects/node/virtual/proof.f.js +36 -29
- package/{fs → fjs}/effects/proof.f.js +16 -45
- package/{fs → fjs}/emergent_testing/proof.f.js +7 -7
- package/{fs → fjs}/fsc/proof.f.js +12 -34
- package/{fs → fjs}/fsm/proof.f.js +5 -12
- package/{fs → fjs}/mcp/module.f.d.ts +7 -0
- package/{fs → fjs}/mcp/module.f.js +9 -2
- package/{fs → fjs}/mcp/proof.f.js +12 -12
- package/{fs → fjs}/mcp/stdio/module.f.d.ts +2 -2
- package/{fs → fjs}/mcp/stdio/module.f.js +2 -2
- package/{fs → fjs}/media/html/proof.f.js +12 -33
- package/{fs → fjs}/media/json/parser/module.f.d.ts +5 -0
- package/{fs → fjs}/media/json/parser/module.f.js +14 -0
- package/{fs → fjs}/media/json/parser/proof.f.js +39 -114
- package/{fs → fjs}/media/json/rpc/module.f.js +1 -1
- package/{fs → fjs}/media/json/schema/module.f.d.ts +2 -2
- package/{fs → fjs}/media/json/schema/module.f.js +23 -39
- package/{fs → fjs}/media/json/schema/proof.f.js +3 -6
- package/{fs → fjs}/media/json/serializer/proof.f.js +10 -27
- package/{fs → fjs}/media/module.f.d.ts +6 -6
- package/{fs → fjs}/media/module.f.js +3 -4
- package/{fs → fjs}/media/proof.f.js +5 -4
- package/{fs → fjs}/media/revision/module.f.d.ts +31 -4
- package/{fs → fjs}/media/revision/module.f.js +35 -23
- package/{fs → fjs}/media/revision/proof.f.d.ts +10 -8
- package/fjs/media/revision/proof.f.js +140 -0
- package/{fs → fjs}/media/type/proof.f.js +2 -6
- package/{fs → fjs}/module.f.js +1 -1
- package/{fs → fjs}/path/proof.f.js +27 -78
- package/{fs → fjs}/proof.f.js +2 -0
- package/{fs → fjs}/sul/id/proof.f.js +7 -21
- package/{fs → fjs}/sul/level/hash/proof.f.js +5 -5
- package/{fs → fjs}/sul/level/literal/proof.f.js +12 -26
- package/fjs/text/ascii/proof.f.d.ts +6 -0
- package/{fs → fjs}/text/ascii/proof.f.js +4 -14
- package/{fs → fjs}/text/code_point/module.f.js +10 -10
- package/{fs → fjs}/text/proof.f.js +4 -9
- package/{fs → fjs}/text/sgr/proof.f.js +6 -15
- package/{fs → fjs}/text/utf16/module.f.js +1 -1
- package/{fs → fjs}/text/utf16/proof.f.js +23 -66
- package/{fs → fjs}/text/utf8/proof.f.js +56 -125
- package/{fs → fjs}/types/array/proof.f.js +18 -52
- package/fjs/types/bigfloat/proof.f.js +217 -0
- package/{fs → fjs}/types/bigint/proof.f.js +49 -145
- package/{fs → fjs}/types/bit_vec/proof.f.js +72 -214
- package/{fs → fjs}/types/btree/find/proof.f.js +23 -66
- package/{fs → fjs}/types/btree/proof.f.js +5 -12
- package/{fs → fjs}/types/btree/remove/proof.f.d.ts +2 -0
- package/{fs → fjs}/types/btree/remove/proof.f.js +83 -230
- package/{fs → fjs}/types/btree/set/module.f.js +5 -2
- package/{fs → fjs}/types/btree/set/proof.f.js +35 -24
- package/{fs → fjs}/types/byte_set/proof.f.js +22 -63
- package/{fs → fjs}/types/function/compare/proof.f.js +13 -36
- package/{fs → fjs}/types/function/operator/proof.f.js +17 -48
- package/{fs → fjs}/types/function/proof.f.js +2 -3
- package/{fs → fjs}/types/list/proof.f.js +55 -163
- package/{fs → fjs}/types/map/proof.f.js +4 -12
- package/{fs → fjs}/types/nibble_set/proof.f.js +16 -45
- package/{fs → fjs}/types/nominal/proof.f.js +5 -10
- package/fjs/types/nullable/proof.f.js +29 -0
- package/{fs → fjs}/types/number/proof.f.js +9 -24
- package/{fs → fjs}/types/object/proof.f.js +3 -6
- package/{fs → fjs}/types/patricia_trie/proof.f.js +21 -21
- package/{fs → fjs}/types/prime_field/module.f.js +2 -7
- 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/proof.f.js +28 -81
- package/{fs → fjs}/types/result/proof.f.d.ts +3 -2
- 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 +44 -0
- 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/parse/module.f.js +13 -22
- package/{fs → fjs}/types/rtti/parse/proof.f.js +7 -18
- package/{fs → fjs}/types/rtti/ts/module.f.d.ts +10 -4
- package/{fs → fjs}/types/rtti/validate/module.f.js +8 -29
- package/{fs → fjs}/types/rtti/validate/proof.f.js +4 -9
- package/{fs → fjs}/types/sorted_list/proof.f.js +8 -21
- package/{fs → fjs}/types/sorted_set/proof.f.js +14 -39
- package/fjs/types/string/proof.f.js +77 -0
- package/fjs/types/string_set/proof.f.js +43 -0
- package/{fs → fjs}/types/ts/proof.f.js +15 -42
- package/{fs → fjs}/types/uint8array/module.f.js +7 -7
- package/{fs → fjs}/types/uint8array/proof.f.d.ts +4 -1
- package/{fs → fjs}/types/uint8array/proof.f.js +7 -7
- package/{fs → fjs}/website/proof.f.js +3 -6
- package/package.json +6 -6
- 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/crypto/pow/proof.f.js +0 -161
- 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/media/revision/proof.f.js +0 -119
- package/fs/text/ascii/proof.f.d.ts +0 -4
- package/fs/types/bigfloat/proof.f.js +0 -348
- package/fs/types/nullable/proof.f.js +0 -50
- package/fs/types/range/module.f.js +0 -2
- package/fs/types/range/proof.f.js +0 -18
- 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 → fjs}/asn.1/module.f.d.ts +0 -0
- /package/{fs → fjs}/asn.1/module.f.js +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/module.f.js +0 -0
- /package/{fs → fjs}/base_n/proof.f.d.ts +0 -0
- /package/{fs → fjs}/basen/base128/module.f.d.ts +0 -0
- /package/{fs → fjs}/basen/base128/module.f.js +0 -0
- /package/{fs → fjs}/basen/base128/proof.f.d.ts +0 -0
- /package/{fs → fjs}/basen/base128/proof.f.js +0 -0
- /package/{fs → fjs}/basen/base64/module.f.d.ts +0 -0
- /package/{fs → fjs}/basen/base64/module.f.js +0 -0
- /package/{fs → fjs}/basen/cbase32/module.f.d.ts +0 -0
- /package/{fs → fjs}/basen/cbase32/module.f.js +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}/cas/cli/module.f.js +0 -0
- /package/{fs → fjs}/ci/bun/module.f.d.ts +0 -0
- /package/{fs → fjs}/ci/bun/module.f.js +0 -0
- /package/{fs → fjs}/ci/common/module.f.d.ts +0 -0
- /package/{fs → fjs}/ci/common/module.f.js +0 -0
- /package/{fs → fjs}/ci/deno/module.f.d.ts +0 -0
- /package/{fs → fjs}/ci/deno/module.f.js +0 -0
- /package/{fs → fjs}/ci/module.f.d.ts +0 -0
- /package/{fs → fjs}/ci/module.f.js +0 -0
- /package/{fs → fjs}/ci/node/module.f.d.ts +0 -0
- /package/{fs → fjs}/ci/node/module.f.js +0 -0
- /package/{fs → fjs}/ci/playwright/module.f.d.ts +0 -0
- /package/{fs → fjs}/ci/playwright/module.f.js +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/module.f.js +0 -0
- /package/{fs → fjs}/cli/proof.f.d.ts +0 -0
- /package/{fs → fjs}/common/monoid/module.f.d.ts +0 -0
- /package/{fs → fjs}/common/monoid/module.f.js +0 -0
- /package/{fs → 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/module.f.js +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/module.f.js +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/module.f.js +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/module.f.js +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/module.f.js +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/module.f.js +0 -0
- /package/{fs → fjs}/dev/package_json/module.f.d.ts +0 -0
- /package/{fs → fjs}/dev/package_json/module.f.js +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/module.f.js +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.d.ts +0 -0
- /package/{fs → fjs}/djs/examples/m.f.js +0 -0
- /package/{fs → fjs}/djs/module.f.d.ts +0 -0
- /package/{fs → fjs}/djs/module.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/module.f.js +0 -0
- /package/{fs → fjs}/djs/serializer/proof.f.d.ts +0 -0
- /package/{fs → fjs}/djs/transpiler/module.f.d.ts +0 -0
- /package/{fs → fjs}/djs/transpiler/module.f.js +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/module.f.js +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.f.js +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/module.js +0 -0
- /package/{fs → fjs}/effects/node/memory/proof.d.ts +0 -0
- /package/{fs → fjs}/effects/node/module.f.js +0 -0
- /package/{fs → fjs}/effects/node/virtual/module.f.d.ts +0 -0
- /package/{fs → fjs}/effects/node/virtual/module.f.js +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/all.test.js +0 -0
- /package/{fs → fjs}/emergent_testing/example.f.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/module.f.js +0 -0
- /package/{fs → fjs}/emergent_testing/proof.f.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/all.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/all.js +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/bnf.f.js +0 -0
- /package/{fs → fjs}/fsc/json.f.d.ts +0 -0
- /package/{fs → fjs}/fsc/json.f.js +0 -0
- /package/{fs → fjs}/fsc/module.f.d.ts +0 -0
- /package/{fs → fjs}/fsc/module.f.js +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/module.f.js +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/module.f.js +0 -0
- /package/{fs → fjs}/js/tokenizer/proof.f.d.ts +0 -0
- /package/{fs → fjs}/js/tokenizer/proof.f.js +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}/mcp/stdio/proof.f.js +0 -0
- /package/{fs → fjs}/media/html/module.f.d.ts +0 -0
- /package/{fs → fjs}/media/html/module.f.js +0 -0
- /package/{fs → fjs}/media/html/proof.f.d.ts +0 -0
- /package/{fs → fjs}/media/json/module.f.d.ts +0 -0
- /package/{fs → fjs}/media/json/module.f.js +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/proof.f.js +0 -0
- /package/{fs → fjs}/media/json/rpc/module.f.d.ts +0 -0
- /package/{fs → fjs}/media/json/rpc/proof.f.d.ts +0 -0
- /package/{fs → fjs}/media/json/rpc/proof.f.js +0 -0
- /package/{fs → fjs}/media/json/schema/proof.f.d.ts +0 -0
- /package/{fs → fjs}/media/json/serializer/module.f.d.ts +0 -0
- /package/{fs → fjs}/media/json/serializer/module.f.js +0 -0
- /package/{fs → fjs}/media/json/serializer/proof.f.d.ts +0 -0
- /package/{fs → fjs}/media/json/tokenizer/module.f.d.ts +0 -0
- /package/{fs → fjs}/media/json/tokenizer/module.f.js +0 -0
- /package/{fs → fjs}/media/json/tokenizer/proof.f.d.ts +0 -0
- /package/{fs → fjs}/media/json/tokenizer/proof.f.js +0 -0
- /package/{fs → fjs}/media/proof.f.d.ts +0 -0
- /package/{fs → fjs}/media/type/module.f.d.ts +0 -0
- /package/{fs → fjs}/media/type/module.f.js +0 -0
- /package/{fs → fjs}/media/type/proof.f.d.ts +0 -0
- /package/{fs → fjs}/module.d.ts +0 -0
- /package/{fs → fjs}/module.f.d.ts +0 -0
- /package/{fs → fjs}/module.js +0 -0
- /package/{fs → fjs}/path/module.f.d.ts +0 -0
- /package/{fs → fjs}/path/module.f.js +0 -0
- /package/{fs → fjs}/path/proof.f.d.ts +0 -0
- /package/{fs → fjs}/proof.f.d.ts +0 -0
- /package/{fs → fjs}/sul/id/module.f.d.ts +0 -0
- /package/{fs → fjs}/sul/id/module.f.js +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/module.f.js +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/module.f.js +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/module.f.js +0 -0
- /package/{fs → fjs}/sul/proof.f.d.ts +0 -0
- /package/{fs → fjs}/sul/proof.f.js +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/code_point/proof.f.js +0 -0
- /package/{fs → fjs}/text/module.f.d.ts +0 -0
- /package/{fs → fjs}/text/module.f.js +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/module.f.js +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/module.f.js +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/module.f.js +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/module.f.js +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/module.f.js +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/module.f.js +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/find/module.f.js +0 -0
- /package/{fs → fjs}/types/btree/find/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/btree/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/btree/module.f.js +0 -0
- /package/{fs → fjs}/types/btree/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/btree/remove/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/btree/remove/module.f.js +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/module.f.js +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 → 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 → fjs}/types/function/operator/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/function/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/list/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/list/module.f.js +0 -0
- /package/{fs → fjs}/types/list/proof.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/module.f.js +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/module.f.js +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/module.f.js +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/module.f.js +0 -0
- /package/{fs → fjs}/types/ordered_map/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/ordered_map/proof.f.js +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/patricia_trie/proof.f.d.ts +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 → fjs}/types/prime_field/proof.f.js +0 -0
- /package/{fs → 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/module.f.js +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/result/module.js +0 -0
- /package/{fs → fjs}/types/rtti/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/rtti/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/module.f.js +0 -0
- /package/{fs → fjs}/types/rtti/ts/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/rtti/ts/proof.f.js +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/module.f.js +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/module.f.js +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/module.f.js +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/module.f.js +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/ts/proof.f.d.ts +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/module.f.js +0 -0
- /package/{fs → fjs}/website/proof.f.d.ts +0 -0
|
@@ -1,170 +1,119 @@
|
|
|
1
1
|
import { concat, isProperPrefix, join, normalize, relativize, toPosix } from "./module.f.js";
|
|
2
|
+
import { assertEq } from '../asserts/module.f.js';
|
|
2
3
|
const normalizeTest = [
|
|
3
4
|
() => {
|
|
4
5
|
const norm = normalize("dir/file.json");
|
|
5
|
-
|
|
6
|
-
throw norm;
|
|
7
|
-
}
|
|
6
|
+
assertEq(norm, "dir/file.json");
|
|
8
7
|
},
|
|
9
8
|
() => {
|
|
10
9
|
const norm = normalize("dir//file.json");
|
|
11
|
-
|
|
12
|
-
throw norm;
|
|
13
|
-
}
|
|
10
|
+
assertEq(norm, "dir/file.json");
|
|
14
11
|
},
|
|
15
12
|
() => {
|
|
16
13
|
const norm = normalize("../../dir/file.json");
|
|
17
|
-
|
|
18
|
-
throw norm;
|
|
19
|
-
}
|
|
14
|
+
assertEq(norm, "../../dir/file.json");
|
|
20
15
|
},
|
|
21
16
|
() => {
|
|
22
17
|
const norm = normalize("../../dir/../file.json");
|
|
23
|
-
|
|
24
|
-
throw norm;
|
|
25
|
-
}
|
|
18
|
+
assertEq(norm, "../../file.json");
|
|
26
19
|
},
|
|
27
20
|
];
|
|
28
21
|
const concatTest = [
|
|
29
22
|
() => {
|
|
30
23
|
const c = concat("a")("b");
|
|
31
|
-
|
|
32
|
-
throw c;
|
|
33
|
-
}
|
|
24
|
+
assertEq(c, "a/b");
|
|
34
25
|
},
|
|
35
26
|
() => {
|
|
36
27
|
const c = concat("a///b/")("c");
|
|
37
|
-
|
|
38
|
-
throw c;
|
|
39
|
-
}
|
|
28
|
+
assertEq(c, "a/b/c");
|
|
40
29
|
},
|
|
41
30
|
() => {
|
|
42
31
|
const c = concat("a/../b/..")("c");
|
|
43
|
-
|
|
44
|
-
throw c;
|
|
45
|
-
}
|
|
32
|
+
assertEq(c, "c");
|
|
46
33
|
},
|
|
47
34
|
];
|
|
48
35
|
const joinTest = [
|
|
49
36
|
() => {
|
|
50
37
|
const r = join('a', 'b');
|
|
51
|
-
|
|
52
|
-
throw r;
|
|
53
|
-
}
|
|
38
|
+
assertEq(r, 'a/b');
|
|
54
39
|
},
|
|
55
40
|
() => {
|
|
56
41
|
const r = join('/abs/root', 'x');
|
|
57
|
-
|
|
58
|
-
throw r;
|
|
59
|
-
}
|
|
42
|
+
assertEq(r, '/abs/root/x');
|
|
60
43
|
},
|
|
61
44
|
() => {
|
|
62
45
|
const r = join('a', 'b', 'c', 'd');
|
|
63
|
-
|
|
64
|
-
throw r;
|
|
65
|
-
}
|
|
46
|
+
assertEq(r, 'a/b/c/d');
|
|
66
47
|
},
|
|
67
48
|
() => {
|
|
68
49
|
const r = join('', 'x');
|
|
69
|
-
|
|
70
|
-
throw r;
|
|
71
|
-
}
|
|
50
|
+
assertEq(r, '/x');
|
|
72
51
|
},
|
|
73
52
|
() => {
|
|
74
53
|
const r = join();
|
|
75
|
-
|
|
76
|
-
throw r;
|
|
77
|
-
}
|
|
54
|
+
assertEq(r, '');
|
|
78
55
|
},
|
|
79
56
|
() => {
|
|
80
57
|
const r = join('only');
|
|
81
|
-
|
|
82
|
-
throw r;
|
|
83
|
-
}
|
|
58
|
+
assertEq(r, 'only');
|
|
84
59
|
},
|
|
85
60
|
];
|
|
86
61
|
const relativizeTest = [
|
|
87
62
|
() => {
|
|
88
63
|
const r = relativize('/repo', '/repo/fs/a.ts');
|
|
89
|
-
|
|
90
|
-
throw r;
|
|
91
|
-
}
|
|
64
|
+
assertEq(r, './fs/a.ts');
|
|
92
65
|
},
|
|
93
66
|
() => {
|
|
94
67
|
const r = relativize('/repo', '/other/a.ts');
|
|
95
|
-
|
|
96
|
-
throw r;
|
|
97
|
-
}
|
|
68
|
+
assertEq(r, '/other/a.ts');
|
|
98
69
|
},
|
|
99
70
|
() => {
|
|
100
71
|
const r = relativize('', './fs/a.ts');
|
|
101
|
-
|
|
102
|
-
throw r;
|
|
103
|
-
}
|
|
72
|
+
assertEq(r, './fs/a.ts');
|
|
104
73
|
},
|
|
105
74
|
];
|
|
106
75
|
const toPosixTest = [
|
|
107
76
|
() => {
|
|
108
77
|
const p = toPosix('a\\b\\c');
|
|
109
|
-
|
|
110
|
-
throw p;
|
|
111
|
-
}
|
|
78
|
+
assertEq(p, 'a/b/c');
|
|
112
79
|
},
|
|
113
80
|
() => {
|
|
114
81
|
const p = toPosix('a/b/c');
|
|
115
|
-
|
|
116
|
-
throw p;
|
|
117
|
-
}
|
|
82
|
+
assertEq(p, 'a/b/c');
|
|
118
83
|
},
|
|
119
84
|
() => {
|
|
120
85
|
const p = toPosix('C:\\Users\\x');
|
|
121
|
-
|
|
122
|
-
throw p;
|
|
123
|
-
}
|
|
86
|
+
assertEq(p, 'C:/Users/x');
|
|
124
87
|
},
|
|
125
88
|
() => {
|
|
126
89
|
const p = toPosix('');
|
|
127
|
-
|
|
128
|
-
throw p;
|
|
129
|
-
}
|
|
90
|
+
assertEq(p, '');
|
|
130
91
|
},
|
|
131
92
|
];
|
|
132
93
|
const isProperPrefixTest = [
|
|
133
94
|
() => {
|
|
134
95
|
const r = isProperPrefix(['a', 'b'], ['a', 'b', 'c']);
|
|
135
|
-
|
|
136
|
-
throw r;
|
|
137
|
-
}
|
|
96
|
+
assertEq(r, true);
|
|
138
97
|
},
|
|
139
98
|
() => {
|
|
140
99
|
const r = isProperPrefix(['a', 'b'], ['a', 'b']);
|
|
141
|
-
|
|
142
|
-
throw r;
|
|
143
|
-
}
|
|
100
|
+
assertEq(r, false);
|
|
144
101
|
},
|
|
145
102
|
() => {
|
|
146
103
|
const r = isProperPrefix(['a', 'x'], ['a', 'b', 'c']);
|
|
147
|
-
|
|
148
|
-
throw r;
|
|
149
|
-
}
|
|
104
|
+
assertEq(r, false);
|
|
150
105
|
},
|
|
151
106
|
() => {
|
|
152
107
|
const r = isProperPrefix(['a', 'b', 'c'], ['a', 'b']);
|
|
153
|
-
|
|
154
|
-
throw r;
|
|
155
|
-
}
|
|
108
|
+
assertEq(r, false);
|
|
156
109
|
},
|
|
157
110
|
() => {
|
|
158
111
|
const r = isProperPrefix([], ['a']);
|
|
159
|
-
|
|
160
|
-
throw r;
|
|
161
|
-
}
|
|
112
|
+
assertEq(r, true);
|
|
162
113
|
},
|
|
163
114
|
() => {
|
|
164
115
|
const r = isProperPrefix([], []);
|
|
165
|
-
|
|
166
|
-
throw r;
|
|
167
|
-
}
|
|
116
|
+
assertEq(r, false);
|
|
168
117
|
},
|
|
169
118
|
];
|
|
170
119
|
export const proof = { normalizeTest, concatTest, joinTest, relativizeTest, toPosixTest, isProperPrefixTest };
|
package/{fs → fjs}/proof.f.js
RENAMED
|
@@ -25,6 +25,8 @@ export const proof = {
|
|
|
25
25
|
mcp: () => {
|
|
26
26
|
// stdin is empty in the virtual environment, so the server sees EOF
|
|
27
27
|
// immediately and shuts down cleanly, exercising the `mcp` handler.
|
|
28
|
+
// The store is empty too, so `casMcpServer`'s Evo cache scan
|
|
29
|
+
// (`initEvo`) also runs and finds nothing.
|
|
28
30
|
const [, code] = run({})(['mcp']);
|
|
29
31
|
assertEq(code, 0);
|
|
30
32
|
},
|
|
@@ -28,9 +28,7 @@ export const proof = {
|
|
|
28
28
|
inline_is_raw: () => assert(isRaw(compress(level3Id(0x00n), level3Id(0x00n)))),
|
|
29
29
|
// Non-commutativity: argument order is preserved in concatenation
|
|
30
30
|
non_commutative: () => {
|
|
31
|
-
|
|
32
|
-
throw compress(level3Id(0n), level3Id(1n));
|
|
33
|
-
}
|
|
31
|
+
assert(compress(level3Id(0n), level3Id(1n)) !== compress(level3Id(1n), level3Id(0n)), compress(level3Id(0n), level3Id(1n)));
|
|
34
32
|
},
|
|
35
33
|
// Overflow: two 127-bit raw payloads sum to 254 bits, exceeding the 253-bit inline limit
|
|
36
34
|
overflow_is_hash: () => assert(isHash(overflowHash)),
|
|
@@ -38,38 +36,26 @@ export const proof = {
|
|
|
38
36
|
hash_left_is_hash: () => assert(isHash(compress(overflowHash, level3Id(0n)))),
|
|
39
37
|
hash_right_is_hash: () => assert(isHash(compress(level3Id(0n), overflowHash))),
|
|
40
38
|
hash_non_commutative: () => {
|
|
41
|
-
|
|
42
|
-
throw compress(overflowHash, level3Id(0n));
|
|
43
|
-
}
|
|
39
|
+
assert(compress(overflowHash, level3Id(0n)) !== compress(level3Id(0n), overflowHash), compress(overflowHash, level3Id(0n)));
|
|
44
40
|
},
|
|
45
41
|
// High-bit sensitivity: prefix bit of `a` is included in the SHA2 upper half
|
|
46
42
|
hash_merge_a_high_bits: () => {
|
|
47
|
-
|
|
48
|
-
throw compress(hashId(0n), hashId(0n));
|
|
49
|
-
}
|
|
43
|
+
assert(compress(hashId(0n), hashId(0n)) !== compress(level3Id(0n), hashId(0n)), compress(hashId(0n), hashId(0n)));
|
|
50
44
|
},
|
|
51
45
|
// High-bit sensitivity: prefix bit of `b` is included in the SHA2 lower half
|
|
52
46
|
hash_merge_b_high_bits: () => {
|
|
53
|
-
|
|
54
|
-
throw compress(hashId(0n), hashId(0n));
|
|
55
|
-
}
|
|
47
|
+
assert(compress(hashId(0n), hashId(0n)) !== compress(hashId(0n), level3Id(0n)), compress(hashId(0n), hashId(0n)));
|
|
56
48
|
},
|
|
57
49
|
// Shift correctness: changing a bit in `a` (upper 256 bits of SHA2 input) changes result
|
|
58
50
|
hash_merge_a_sensitivity: () => {
|
|
59
|
-
|
|
60
|
-
throw compress(hFF, hFF);
|
|
61
|
-
}
|
|
51
|
+
assert(compress(hFF, hFF) !== compress(hFE, hFF), compress(hFF, hFF));
|
|
62
52
|
},
|
|
63
53
|
// Shift correctness: changing a bit in `b` (lower 256 bits of SHA2 input) changes result
|
|
64
54
|
hash_merge_b_sensitivity: () => {
|
|
65
|
-
|
|
66
|
-
throw compress(hFF, hFF);
|
|
67
|
-
}
|
|
55
|
+
assert(compress(hFF, hFF) !== compress(hFF, hFE), compress(hFF, hFF));
|
|
68
56
|
},
|
|
69
57
|
// Shift correctness: same bit-flip in `a` vs `b` lands at different SHA2 input positions
|
|
70
58
|
hash_merge_shift: () => {
|
|
71
|
-
|
|
72
|
-
throw compress(hFE, hFF);
|
|
73
|
-
}
|
|
59
|
+
assert(compress(hFE, hFF) !== compress(hFF, hFE), compress(hFE, hFF));
|
|
74
60
|
},
|
|
75
61
|
};
|
|
@@ -42,9 +42,9 @@ export const proof = {
|
|
|
42
42
|
// All symbols before the terminator return undefined
|
|
43
43
|
intermediate_undefined: () => {
|
|
44
44
|
const [r0, st0] = enc(s1, initial);
|
|
45
|
-
|
|
45
|
+
assertEq(r0, undefined);
|
|
46
46
|
const [r1, st1] = enc(s0, st0);
|
|
47
|
-
|
|
47
|
+
assertEq(r1, undefined);
|
|
48
48
|
const [r2] = enc(s1, st1);
|
|
49
49
|
assert(r2 !== undefined);
|
|
50
50
|
},
|
|
@@ -100,13 +100,13 @@ export const proof = {
|
|
|
100
100
|
// Trie-internal merges have isSymbol=false; only the terminal merge has isSymbol=true
|
|
101
101
|
isSymbol_terminal_only: () => {
|
|
102
102
|
const [, storage] = runWord([s1, s0, s0]);
|
|
103
|
-
|
|
104
|
-
|
|
103
|
+
assertEq(storage[0][3], false); // Patricia trie merge
|
|
104
|
+
assertEq(storage[1][3], true); // terminal compress(root, t)
|
|
105
105
|
},
|
|
106
106
|
// Single-step word: no trie merges, exactly one isSymbol=true
|
|
107
107
|
isSymbol_min_word: () => {
|
|
108
108
|
const [, storage] = runWord([s0, s0]);
|
|
109
109
|
assertEq(storage.length, 1);
|
|
110
|
-
|
|
110
|
+
assertEq(storage[0][3], true);
|
|
111
111
|
},
|
|
112
112
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { chunkList, msb, vec } from '../../../types/bit_vec/module.f.js';
|
|
2
|
+
import { assert, assertEq } from '../../../asserts/module.f.js';
|
|
2
3
|
import { map, stateScan, toArray } from '../../../types/list/module.f.js';
|
|
3
4
|
import { emptyEncodeState, emptyPipelineState, level, literal1ToVec, literal2ToVec, literal3ToVec, pipelineStep, symbolToString, wordEqual, wordToString } from './module.f.js';
|
|
4
5
|
const tests = (n) => {
|
|
@@ -18,33 +19,24 @@ const tests = (n) => {
|
|
|
18
19
|
}
|
|
19
20
|
// encode
|
|
20
21
|
const a = toArray(stateScan(push)(emptyEncodeState)(word));
|
|
21
|
-
|
|
22
|
-
throw a;
|
|
23
|
-
}
|
|
22
|
+
assert(a.slice(0, -1).every(i => i === undefined), a);
|
|
24
23
|
const x = a.at(-1);
|
|
25
|
-
|
|
26
|
-
throw x;
|
|
27
|
-
}
|
|
24
|
+
assertEq(x, expected);
|
|
28
25
|
}
|
|
29
26
|
};
|
|
30
27
|
};
|
|
31
28
|
const l = (f) => (l, e) => {
|
|
32
29
|
const result = f(l);
|
|
33
|
-
|
|
34
|
-
throw [result, e];
|
|
35
|
-
}
|
|
30
|
+
assertEq(result, e, [result, e]);
|
|
36
31
|
};
|
|
37
32
|
const vecToBits = (v) => map((b) => msb.front(1n)(b))(chunkList(msb)(1n)(v));
|
|
38
33
|
const w = (symbol, expected) => {
|
|
39
34
|
const result = literal3ToVec(symbol);
|
|
40
|
-
|
|
41
|
-
throw [result, expected];
|
|
35
|
+
assertEq(result, expected, [result, expected]);
|
|
42
36
|
const a = toArray(stateScan(pipelineStep)(emptyPipelineState)(vecToBits(expected)));
|
|
43
|
-
|
|
44
|
-
throw a;
|
|
37
|
+
assert(a.slice(0, -1).every(o => o === undefined), a);
|
|
45
38
|
const out = a.at(-1);
|
|
46
|
-
|
|
47
|
-
throw out;
|
|
39
|
+
assertEq(out, symbol);
|
|
48
40
|
};
|
|
49
41
|
export const proof = {
|
|
50
42
|
x2: () => {
|
|
@@ -688,9 +680,7 @@ export const proof = {
|
|
|
688
680
|
},
|
|
689
681
|
wordToString: () => {
|
|
690
682
|
const result = wordToString([0n, 1n, 0xabn]);
|
|
691
|
-
|
|
692
|
-
throw result;
|
|
693
|
-
}
|
|
683
|
+
assertEq(result, '0,1,ab');
|
|
694
684
|
},
|
|
695
685
|
pipeline: () => {
|
|
696
686
|
// 4 L1 [0,0] words → 2 L2 [0,0] words → L3 [0,0] word → symbol 0
|
|
@@ -698,14 +688,12 @@ export const proof = {
|
|
|
698
688
|
let s = emptyPipelineState;
|
|
699
689
|
for (let i = 0; i < 7; i++) {
|
|
700
690
|
const [out, next] = pipelineStep(0n, s);
|
|
701
|
-
|
|
702
|
-
throw out;
|
|
691
|
+
assertEq(out, undefined);
|
|
703
692
|
s = next;
|
|
704
693
|
}
|
|
705
694
|
// 8th zero emits L3 symbol 0
|
|
706
695
|
const [out0, s2] = pipelineStep(0n, s);
|
|
707
|
-
|
|
708
|
-
throw out0;
|
|
696
|
+
assertEq(out0, 0n);
|
|
709
697
|
// state resets after emit: second batch of 8 zeros also emits 0
|
|
710
698
|
let s3 = s2;
|
|
711
699
|
for (let i = 0; i < 7; i++) {
|
|
@@ -713,8 +701,7 @@ export const proof = {
|
|
|
713
701
|
s3 = next;
|
|
714
702
|
}
|
|
715
703
|
const [out1] = pipelineStep(0n, s3);
|
|
716
|
-
|
|
717
|
-
throw out1;
|
|
704
|
+
assertEq(out1, 0n);
|
|
718
705
|
// 8 ones emit a different symbol than 8 zeros
|
|
719
706
|
let s4 = emptyPipelineState;
|
|
720
707
|
for (let i = 0; i < 7; i++) {
|
|
@@ -722,7 +709,6 @@ export const proof = {
|
|
|
722
709
|
s4 = next;
|
|
723
710
|
}
|
|
724
711
|
const [out2] = pipelineStep(1n, s4);
|
|
725
|
-
|
|
726
|
-
throw out2;
|
|
712
|
+
assert(out2 !== 0n, out2);
|
|
727
713
|
}
|
|
728
714
|
};
|
|
@@ -1,24 +1,14 @@
|
|
|
1
1
|
import { one, range } from './module.f.js';
|
|
2
2
|
import { stringify as jsonStringify } from '../../media/json/module.f.js';
|
|
3
3
|
import { sort } from '../../types/object/module.f.js';
|
|
4
|
+
import { assertEq } from '../../asserts/module.f.js';
|
|
4
5
|
const stringify = jsonStringify(sort);
|
|
5
6
|
export const proof = {
|
|
6
7
|
range: () => {
|
|
7
8
|
const r = stringify(range("A"));
|
|
8
|
-
|
|
9
|
-
throw r;
|
|
10
|
-
}
|
|
9
|
+
assertEq(r, '[65,65]');
|
|
11
10
|
},
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
try {
|
|
15
|
-
one('');
|
|
16
|
-
}
|
|
17
|
-
catch (_) {
|
|
18
|
-
threw = true;
|
|
19
|
-
}
|
|
20
|
-
if (!threw) {
|
|
21
|
-
throw 'expected throw';
|
|
22
|
-
}
|
|
11
|
+
throw: {
|
|
12
|
+
oneThrowsOnEmpty: () => one(''),
|
|
23
13
|
},
|
|
24
14
|
};
|
|
@@ -48,18 +48,18 @@ const maxCodePoint = 0x10_ffff;
|
|
|
48
48
|
* Checks whether the 16-bit word (U16) is a high surrogate.
|
|
49
49
|
* Range: 0xD800 - 0xDBFF.
|
|
50
50
|
*/
|
|
51
|
-
export const isHighSurrogate = contains(
|
|
51
|
+
export const isHighSurrogate = contains(surrogateMin, lowSurrogateMin - 1);
|
|
52
52
|
/**
|
|
53
53
|
* Checks whether the 16-bit word (U16) is a low surrogate.
|
|
54
54
|
* Range: 0xDC00 - 0xDFFF.
|
|
55
55
|
*/
|
|
56
|
-
export const isLowSurrogate = contains(
|
|
56
|
+
export const isLowSurrogate = contains(lowSurrogateMin, surrogateMax);
|
|
57
57
|
/**
|
|
58
58
|
* Ranges of code points for the lower (Low) and higher (High) parts of the BMP
|
|
59
59
|
* (Basic Multilingual Plane), i.e. the BMP with the surrogate block removed.
|
|
60
60
|
*/
|
|
61
|
-
const lowBmp = contains(
|
|
62
|
-
const highBmp = contains(
|
|
61
|
+
const lowBmp = contains(0x0000, surrogateMin - 1);
|
|
62
|
+
const highBmp = contains(surrogateMax + 1, bmpMax);
|
|
63
63
|
/**
|
|
64
64
|
* Checks whether the code point is in the BMP range.
|
|
65
65
|
* BMP is the main Unicode plane that covers code points 0x0000 - 0xFFFF, except
|
|
@@ -70,13 +70,13 @@ export const isBmpCodePoint = (codePoint) => lowBmp(codePoint) || highBmp(codePo
|
|
|
70
70
|
* Checks whether the code point belongs to a supplementary (additional) Unicode
|
|
71
71
|
* plane. Supplementary planes cover code points from 0x010000 to 0x10FFFF.
|
|
72
72
|
*/
|
|
73
|
-
export const isSupplementaryPlane = contains(
|
|
73
|
+
export const isSupplementaryPlane = contains(bmpMax + 1, maxCodePoint);
|
|
74
74
|
/**
|
|
75
75
|
* The full assignable code-point range and the surrogate block, used to gate
|
|
76
76
|
* overall validity below.
|
|
77
77
|
*/
|
|
78
|
-
const validRange = contains(
|
|
79
|
-
const isSurrogate = contains(
|
|
78
|
+
const validRange = contains(0, maxCodePoint);
|
|
79
|
+
const isSurrogate = contains(surrogateMin, surrogateMax);
|
|
80
80
|
/**
|
|
81
81
|
* Checks whether the code point is a valid scalar value: within the assignable
|
|
82
82
|
* Unicode range (0x0000 - 0x10FFFF) and not a surrogate.
|
|
@@ -89,9 +89,9 @@ export const isValidCodePoint = (c) => validRange(c) && !isSurrogate(c);
|
|
|
89
89
|
* contiguous run; the whitespace block 0x0009 - 0x000D (TAB, LF, VT, FF, CR) is
|
|
90
90
|
* the only control range legitimate in text.
|
|
91
91
|
*/
|
|
92
|
-
const c0Control = contains(
|
|
93
|
-
const delAndC1Control = contains(
|
|
94
|
-
const textWhitespace = contains(
|
|
92
|
+
const c0Control = contains(0x00, 0x1f);
|
|
93
|
+
const delAndC1Control = contains(0x7f, 0x9f);
|
|
94
|
+
const textWhitespace = contains(0x09, 0x0d);
|
|
95
95
|
/**
|
|
96
96
|
* Checks whether the code point is a *text* code point — distinct from
|
|
97
97
|
* {@link isValidCodePoint}, which gates well-formedness for decoding. A code
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { assertEq, assertNotNullish } from '../asserts/module.f.js';
|
|
2
2
|
import { flat, utf8, utf8ToString, tryUtf8 } from './module.f.js';
|
|
3
3
|
import { join } from '../types/string/module.f.js';
|
|
4
4
|
import { empty, maxLengthBytes } from '../types/bit_vec/module.f.js';
|
|
@@ -15,20 +15,15 @@ export const proof = {
|
|
|
15
15
|
'e',
|
|
16
16
|
];
|
|
17
17
|
const result = join('\n')(flat(':')(text));
|
|
18
|
-
|
|
19
|
-
throw result;
|
|
20
|
-
}
|
|
18
|
+
assertEq(result, 'a\nb\n:c\n::d\ne');
|
|
21
19
|
},
|
|
22
20
|
encoding: () => {
|
|
23
21
|
const v = utf8('Hello world!');
|
|
24
22
|
const r = utf8ToString(v);
|
|
25
|
-
|
|
26
|
-
throw r;
|
|
27
|
-
}
|
|
23
|
+
assertEq(r, 'Hello world!');
|
|
28
24
|
},
|
|
29
25
|
tryUtf8RoundTrip: () => {
|
|
30
|
-
const v = tryUtf8('Hello world!');
|
|
31
|
-
assert(v !== null);
|
|
26
|
+
const v = assertNotNullish(tryUtf8('Hello world!'));
|
|
32
27
|
assertEq(v, utf8('Hello world!'));
|
|
33
28
|
assertEq(utf8ToString(v), 'Hello world!');
|
|
34
29
|
},
|
|
@@ -1,42 +1,33 @@
|
|
|
1
1
|
import { fgRed, reset, createConsoleText, backspace, csiWrite } from './module.f.js';
|
|
2
2
|
import { virtual, emptyState, defaultNodeProgramOptions } from '../../effects/node/virtual/module.f.js';
|
|
3
|
+
import { assert, assertEq } from '../../asserts/module.f.js';
|
|
3
4
|
const makeOptions = (isTTY) => ({ ...defaultNodeProgramOptions, std: { stdout: { isTTY }, stderr: { isTTY } } });
|
|
4
5
|
export const proof = [
|
|
5
6
|
() => {
|
|
6
|
-
|
|
7
|
-
throw new Error('Test failed: sgr(0)');
|
|
8
|
-
}
|
|
7
|
+
assertEq(fgRed, '\x1b[31m', new Error('Test failed: sgr(0)'));
|
|
9
8
|
},
|
|
10
9
|
() => {
|
|
11
10
|
const output = [];
|
|
12
11
|
const stdout = { write: (s) => { output.push(s); } };
|
|
13
12
|
const writer1 = createConsoleText(stdout);
|
|
14
13
|
const writer2 = writer1('hello');
|
|
15
|
-
|
|
16
|
-
throw output[0];
|
|
17
|
-
}
|
|
14
|
+
assert(output[0] === 'hello');
|
|
18
15
|
// replacing 'hello' (len=5) with 'hi' (len=2): suffixLength=3
|
|
19
16
|
writer2('hi');
|
|
20
17
|
const expected = backspace.repeat(5) + 'hi' + ' '.repeat(3) + backspace.repeat(3);
|
|
21
|
-
|
|
22
|
-
throw output[1];
|
|
23
|
-
}
|
|
18
|
+
assertEq(output[1], expected);
|
|
24
19
|
},
|
|
25
20
|
() => {
|
|
26
21
|
// csiWrite with isTTY=false strips ANSI SGR sequences
|
|
27
22
|
const writeFn = csiWrite(makeOptions(false))('stdout');
|
|
28
23
|
const [state] = virtual(emptyState)(writeFn(fgRed + 'hello' + reset));
|
|
29
|
-
|
|
30
|
-
throw ['expected ANSI stripped', state.stdout];
|
|
31
|
-
}
|
|
24
|
+
assertEq(state.stdout, 'hello', ['expected ANSI stripped', state.stdout]);
|
|
32
25
|
},
|
|
33
26
|
() => {
|
|
34
27
|
// csiWrite with isTTY=true preserves ANSI SGR sequences
|
|
35
28
|
const writeFn = csiWrite(makeOptions(true))('stdout');
|
|
36
29
|
const [state] = virtual(emptyState)(writeFn(fgRed + 'hello' + reset));
|
|
37
30
|
const expected = fgRed + 'hello' + reset;
|
|
38
|
-
|
|
39
|
-
throw ['expected ANSI preserved', state.stdout];
|
|
40
|
-
}
|
|
31
|
+
assertEq(state.stdout, expected, ['expected ANSI preserved', state.stdout]);
|
|
41
32
|
},
|
|
42
33
|
];
|
|
@@ -107,7 +107,7 @@ export const fromCodePointList = flatMap(codePointToUtf16);
|
|
|
107
107
|
* const edgeCaseHigh = u16(0xFFFF) // true: Maximum valid value for UTF-16
|
|
108
108
|
* ```
|
|
109
109
|
*/
|
|
110
|
-
const u16 = contains(
|
|
110
|
+
const u16 = contains(0x0000, 0xFFFF);
|
|
111
111
|
/**
|
|
112
112
|
* A stateful operation that converts a UTF-16 word (U16) to a list of Unicode code points (CodePoint),
|
|
113
113
|
* while maintaining the state of surrogate pair decoding.
|