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
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @module
|
|
7
7
|
*/
|
|
8
|
-
import { isArray } from
|
|
9
|
-
import { iterable } from
|
|
10
|
-
import { fromUndefined } from
|
|
11
|
-
import { entries as mapEntries, fromEntries as mapFromEntries } from
|
|
8
|
+
import { isArray } from '../array/module.f.js';
|
|
9
|
+
import { iterable } from '../list/module.f.js';
|
|
10
|
+
import { fromUndefined } from '../nullable/module.f.js';
|
|
11
|
+
import { entries as mapEntries, fromEntries as mapFromEntries } from '../ordered_map/module.f.js';
|
|
12
12
|
const { getOwnPropertyDescriptor, fromEntries: objectFromEntries } = Object;
|
|
13
13
|
export const at = name => object => {
|
|
14
14
|
const d = getOwnPropertyDescriptor(object, name);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { at } from
|
|
1
|
+
import { at } from './module.f.js';
|
|
2
|
+
import { assertEq } from '../../asserts/module.f.js';
|
|
2
3
|
export const proof = {
|
|
3
4
|
stringMap: {
|
|
4
5
|
infiniteIsOptional: true,
|
|
@@ -7,15 +8,11 @@ export const proof = {
|
|
|
7
8
|
ctor: () => {
|
|
8
9
|
const a = {};
|
|
9
10
|
const value = at('constructor')(a);
|
|
10
|
-
|
|
11
|
-
throw value;
|
|
12
|
-
}
|
|
11
|
+
assertEq(value, null);
|
|
13
12
|
},
|
|
14
13
|
property: () => {
|
|
15
14
|
const a = { constructor: 42 };
|
|
16
15
|
const value = at('constructor')(a);
|
|
17
|
-
|
|
18
|
-
throw value;
|
|
19
|
-
}
|
|
16
|
+
assertEq(value, 42);
|
|
20
17
|
}
|
|
21
18
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { value, find } from
|
|
2
|
-
import { set } from
|
|
3
|
-
import { remove as btreeRemove } from
|
|
4
|
-
import { values } from
|
|
5
|
-
import { cmp } from
|
|
6
|
-
import { fold } from
|
|
1
|
+
import { value, find } from '../btree/find/module.f.js';
|
|
2
|
+
import { set } from '../btree/set/module.f.js';
|
|
3
|
+
import { remove as btreeRemove } from '../btree/remove/module.f.js';
|
|
4
|
+
import { values } from '../btree/module.f.js';
|
|
5
|
+
import { cmp } from '../string/module.f.js';
|
|
6
|
+
import { fold } from '../list/module.f.js';
|
|
7
7
|
const keyCmp = a => ([b]) => cmp(a)(b);
|
|
8
8
|
export const at = (name) => (map) => {
|
|
9
9
|
if (map === null) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { at, setReplace, setReduce, empty, entries, remove, fromEntries } from
|
|
2
|
-
import { toArray } from
|
|
3
|
-
import { assertEq } from
|
|
1
|
+
import { at, setReplace, setReduce, empty, entries, remove, fromEntries } from './module.f.js';
|
|
2
|
+
import { toArray } from '../list/module.f.js';
|
|
3
|
+
import { assertEq } from '../../asserts/module.f.js';
|
|
4
4
|
export const proof = {
|
|
5
5
|
main: [
|
|
6
6
|
() => {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
declare const empty: () => void;
|
|
2
|
+
declare const singleLeaf: () => void;
|
|
3
|
+
declare const twoLeaves: () => void;
|
|
4
|
+
declare const descending: () => void;
|
|
5
|
+
declare const ascending: () => void;
|
|
6
|
+
export declare const proof: {
|
|
7
|
+
empty: typeof empty;
|
|
8
|
+
singleLeaf: typeof singleLeaf;
|
|
9
|
+
twoLeaves: typeof twoLeaves;
|
|
10
|
+
descending: typeof descending;
|
|
11
|
+
ascending: typeof ascending;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { assert } from
|
|
2
|
-
import { emptyState, patriciaTrie } from
|
|
1
|
+
import { assert, assertEq } from '../../asserts/module.f.js';
|
|
2
|
+
import { emptyState, patriciaTrie } from './module.f.js';
|
|
3
3
|
const combine = (a, b) => a * 1000n + b;
|
|
4
4
|
const create = (a, b, s) => {
|
|
5
5
|
const h = combine(a, b);
|
|
@@ -14,53 +14,53 @@ const runExample = (inputs, expectedLeaves, expectedNodeCounts) => {
|
|
|
14
14
|
const prevCount = state[0].length;
|
|
15
15
|
state = push([x, x], state);
|
|
16
16
|
const actual = leaves(state);
|
|
17
|
-
|
|
17
|
+
assertEq(actual.length, expectedLeaves[i].length);
|
|
18
18
|
for (let j = 0; j < actual.length; j++) {
|
|
19
|
-
|
|
19
|
+
assertEq(actual[j], expectedLeaves[i][j]);
|
|
20
20
|
}
|
|
21
21
|
const newNodes = state[0].slice(prevCount);
|
|
22
|
-
|
|
22
|
+
assertEq(newNodes.length, expectedNodeCounts[i]);
|
|
23
23
|
for (const [l, r, h] of newNodes) {
|
|
24
|
-
|
|
24
|
+
assertEq(h, combine(l, r));
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
const prevCount = state[0].length;
|
|
28
28
|
const [root, finalStorage] = end(state);
|
|
29
29
|
const finalNodes = finalStorage.slice(prevCount);
|
|
30
|
-
|
|
30
|
+
assertEq(finalNodes.length, expectedLeaves[expectedLeaves.length - 1].length - 1);
|
|
31
31
|
assert(root !== undefined);
|
|
32
32
|
for (const [l, r, h] of finalNodes) {
|
|
33
|
-
|
|
33
|
+
assertEq(h, combine(l, r));
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
36
|
const empty = () => {
|
|
37
37
|
const [root, storage] = end(emptyState([]));
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
assertEq(storage.length, 0);
|
|
39
|
+
assertEq(root, undefined);
|
|
40
40
|
};
|
|
41
41
|
const singleLeaf = () => {
|
|
42
42
|
const state = push([42n, 42n], emptyState([]));
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
assertEq(state[0].length, 0);
|
|
44
|
+
assertEq(leaves(state).length, 1);
|
|
45
|
+
assertEq(leaves(state)[0], 42n);
|
|
46
46
|
const [root, finalStorage] = end(state);
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
assertEq(finalStorage.length, 0);
|
|
48
|
+
assertEq(root, 42n);
|
|
49
49
|
};
|
|
50
50
|
const twoLeaves = () => {
|
|
51
51
|
const s1 = push([7n, 7n], emptyState([]));
|
|
52
52
|
const prevCount = s1[0].length;
|
|
53
53
|
const s2 = push([3n, 3n], s1);
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
assertEq(s2[0].slice(prevCount).length, 0);
|
|
55
|
+
assertEq(leaves(s2).length, 2);
|
|
56
56
|
const prevCount2 = s2[0].length;
|
|
57
57
|
const [root, finalStorage] = end(s2);
|
|
58
58
|
const finalNodes = finalStorage.slice(prevCount2);
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
59
|
+
assertEq(finalNodes.length, 1);
|
|
60
|
+
assertEq(finalNodes[0][0], 7n);
|
|
61
|
+
assertEq(finalNodes[0][1], 3n);
|
|
62
|
+
assertEq(finalNodes[0][2], combine(7n, 3n));
|
|
63
|
+
assertEq(root, combine(7n, 3n));
|
|
64
64
|
};
|
|
65
65
|
// example.md — descending
|
|
66
66
|
// merges happen at: step 2 (1), 3 (1), 4 (1), 7 (2), 8 (2), A (1), C (2), F (1)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { repeat } from
|
|
2
|
-
import {
|
|
1
|
+
import { repeat } from '../../common/monoid/module.f.js';
|
|
2
|
+
import { assertNotNullish } from '../../asserts/module.f.js';
|
|
3
3
|
/**
|
|
4
4
|
* Creates a prime field with the specified prime modulus and associated operations.
|
|
5
5
|
*
|
|
@@ -102,16 +102,11 @@ export const modSqrt = (field) => {
|
|
|
102
102
|
return x => {
|
|
103
103
|
const v = reduce(x);
|
|
104
104
|
const r = sqrt_p(v);
|
|
105
|
-
if (r !== null) {
|
|
106
|
-
return r;
|
|
107
|
-
}
|
|
108
105
|
// For a prime `p ≡ 3 (mod 4)`, `−1` is a non-residue, so exactly one of
|
|
109
106
|
// `±v` is a quadratic residue: if `v` has no root, `neg(v)` must — hence
|
|
110
107
|
// `s` is non-null. `sqrt` already enforces `p ≡ 3 (mod 4)`, but primality
|
|
111
108
|
// is never checked, so the only way to reach `s === null` is a *composite*
|
|
112
109
|
// modulus (where the residue argument breaks).
|
|
113
|
-
|
|
114
|
-
assert(s !== null, 'modSqrt');
|
|
115
|
-
return s;
|
|
110
|
+
return r !== null ? r : assertNotNullish(sqrt_p(neg(v)), 'modSqrt');
|
|
116
111
|
};
|
|
117
112
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { modSqrt, prime_field, sqrt } from
|
|
2
|
-
import { assert, assertEq } from
|
|
1
|
+
import { modSqrt, prime_field, sqrt } from './module.f.js';
|
|
2
|
+
import { assert, assertEq } from '../../asserts/module.f.js';
|
|
3
3
|
export const proof = {
|
|
4
4
|
throw: {
|
|
5
5
|
reciprocal_zero: () => prime_field(7n).reciprocal(0n),
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { contains } from './module.f.js';
|
|
2
|
+
import { assert } from '../../asserts/module.f.js';
|
|
3
|
+
export const proof = () => {
|
|
4
|
+
assert(contains(0, 5)(1), 1);
|
|
5
|
+
assert(contains(0, 5)(0), 0);
|
|
6
|
+
assert(contains(0, 5)(5), 5);
|
|
7
|
+
assert(!(contains(0, 5)(-1)), -1);
|
|
8
|
+
assert(!(contains(0, 5)(6)), 6);
|
|
9
|
+
};
|
|
@@ -34,10 +34,10 @@
|
|
|
34
34
|
* if (rmOps.get(16)(merged) !== 0) { throw 'error' }
|
|
35
35
|
* ```
|
|
36
36
|
*/
|
|
37
|
-
import { genericMerge } from
|
|
38
|
-
import { next } from
|
|
39
|
-
import { cmp } from
|
|
40
|
-
import { bsearch } from
|
|
37
|
+
import { genericMerge } from '../sorted_list/module.f.js';
|
|
38
|
+
import { next } from '../list/module.f.js';
|
|
39
|
+
import { cmp } from '../number/module.f.js';
|
|
40
|
+
import { bsearch } from '../function/compare/module.f.js';
|
|
41
41
|
const reduceOp = ({ union, equal }) => state => ([aItem, aMax]) => ([bItem, bMax]) => {
|
|
42
42
|
const sign = cmp(aMax)(bMax);
|
|
43
43
|
const min = sign === 1 ? bMax : aMax;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { get, merge, fromRange, rangeMap } from
|
|
2
|
-
import { stringify } from
|
|
3
|
-
import { sort } from
|
|
4
|
-
import { union } from
|
|
5
|
-
import { equal, toArray } from
|
|
6
|
-
import { strictEqual } from
|
|
7
|
-
import { cmp } from
|
|
1
|
+
import { get, merge, fromRange, rangeMap } from './module.f.js';
|
|
2
|
+
import { stringify } from '../../media/json/module.f.js';
|
|
3
|
+
import { sort } from '../object/module.f.js';
|
|
4
|
+
import { union } from '../sorted_set/module.f.js';
|
|
5
|
+
import { equal, toArray } from '../list/module.f.js';
|
|
6
|
+
import { strictEqual } from '../function/operator/module.f.js';
|
|
7
|
+
import { cmp } from '../string/module.f.js';
|
|
8
|
+
import { assertEq } from '../../asserts/module.f.js';
|
|
8
9
|
const str = stringify(sort);
|
|
9
10
|
const op = {
|
|
10
11
|
union: union(cmp),
|
|
@@ -25,31 +26,17 @@ export const proof = {
|
|
|
25
26
|
const merged = toArray(rmOps.merge(range1)(range2));
|
|
26
27
|
// Retrieve values from the merged range map
|
|
27
28
|
//
|
|
28
|
-
|
|
29
|
-
throw 'error';
|
|
30
|
-
}
|
|
29
|
+
assertEq(rmOps.get(-1)(merged), 0, 'error');
|
|
31
30
|
//
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
if (rmOps.get(2)(merged) !== 2) {
|
|
36
|
-
throw 'error';
|
|
37
|
-
}
|
|
31
|
+
assertEq(rmOps.get(0)(merged), 2, 'error');
|
|
32
|
+
assertEq(rmOps.get(2)(merged), 2, 'error');
|
|
38
33
|
// 2 | 5 = 7
|
|
39
|
-
|
|
40
|
-
throw 'error';
|
|
41
|
-
}
|
|
34
|
+
assertEq(rmOps.get(7)(merged), 7, 'error');
|
|
42
35
|
//
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
if (rmOps.get(15)(merged) !== 5) {
|
|
47
|
-
throw 'error';
|
|
48
|
-
}
|
|
36
|
+
assertEq(rmOps.get(12)(merged), 5, 'error');
|
|
37
|
+
assertEq(rmOps.get(15)(merged), 5, 'error');
|
|
49
38
|
//
|
|
50
|
-
|
|
51
|
-
throw 'error';
|
|
52
|
-
}
|
|
39
|
+
assertEq(rmOps.get(16)(merged), 0, 'error');
|
|
53
40
|
},
|
|
54
41
|
merge: [
|
|
55
42
|
() => {
|
|
@@ -57,63 +44,49 @@ export const proof = {
|
|
|
57
44
|
const b = null;
|
|
58
45
|
const merged = merge(op)(a)(b);
|
|
59
46
|
const result = str(toArray(merged));
|
|
60
|
-
|
|
61
|
-
throw result;
|
|
62
|
-
}
|
|
47
|
+
assertEq(result, '[[["a"],1],[["b"],2]]');
|
|
63
48
|
},
|
|
64
49
|
() => {
|
|
65
50
|
const a = null;
|
|
66
51
|
const b = [[['a'], 1], [['b'], 2]];
|
|
67
52
|
const merged = merge(op)(a)(b);
|
|
68
53
|
const result = str(toArray(merged));
|
|
69
|
-
|
|
70
|
-
throw result;
|
|
71
|
-
}
|
|
54
|
+
assertEq(result, '[[["a"],1],[["b"],2]]');
|
|
72
55
|
},
|
|
73
56
|
() => {
|
|
74
57
|
const a = [[['a'], 1], [['b'], 2]];
|
|
75
58
|
const b = [[['a'], 1], [['b'], 2]];
|
|
76
59
|
const merged = merge(op)(a)(b);
|
|
77
60
|
const result = str(toArray(merged));
|
|
78
|
-
|
|
79
|
-
throw result;
|
|
80
|
-
}
|
|
61
|
+
assertEq(result, '[[["a"],1],[["b"],2]]');
|
|
81
62
|
},
|
|
82
63
|
() => {
|
|
83
64
|
const a = [[['a'], 1], [['c'], 3]];
|
|
84
65
|
const b = [[['b'], 2], [['d'], 4]];
|
|
85
66
|
const merged = merge(op)(a)(b);
|
|
86
67
|
const result = str(toArray(merged));
|
|
87
|
-
|
|
88
|
-
throw result;
|
|
89
|
-
}
|
|
68
|
+
assertEq(result, '[[["a","b"],1],[["b","c"],2],[["c","d"],3],[["d"],4]]');
|
|
90
69
|
},
|
|
91
70
|
() => {
|
|
92
71
|
const a = [[['a'], 1], [['d'], 4]];
|
|
93
72
|
const b = [[['b'], 2], [['c'], 3]];
|
|
94
73
|
const merged = merge(op)(a)(b);
|
|
95
74
|
const result = str(toArray(merged));
|
|
96
|
-
|
|
97
|
-
throw result;
|
|
98
|
-
}
|
|
75
|
+
assertEq(result, '[[["a","b"],1],[["b","d"],2],[["c","d"],3],[["d"],4]]');
|
|
99
76
|
},
|
|
100
77
|
() => {
|
|
101
78
|
const a = [[['a'], 1], [['b'], 2]];
|
|
102
79
|
const b = [[['b'], 1], [['a'], 2]];
|
|
103
80
|
const merged = merge(op)(a)(b);
|
|
104
81
|
const result = str(toArray(merged));
|
|
105
|
-
|
|
106
|
-
throw result;
|
|
107
|
-
}
|
|
82
|
+
assertEq(result, '[[["a","b"],2]]');
|
|
108
83
|
},
|
|
109
84
|
() => {
|
|
110
85
|
const a = [[['a'], 1], [['b'], 2], [['a'], 3]];
|
|
111
86
|
const b = [[['a'], 5]];
|
|
112
87
|
const merged = merge(op)(a)(b);
|
|
113
88
|
const result = str(toArray(merged));
|
|
114
|
-
|
|
115
|
-
throw result;
|
|
116
|
-
}
|
|
89
|
+
assertEq(result, '[[["a"],1],[["a","b"],2],[["a"],5]]');
|
|
117
90
|
}
|
|
118
91
|
],
|
|
119
92
|
get: () => {
|
|
@@ -123,58 +96,42 @@ export const proof = {
|
|
|
123
96
|
() => {
|
|
124
97
|
const rm = [[['a'], 10], [['b'], 20], [['c'], 30]];
|
|
125
98
|
const result = str(at(5)(rm));
|
|
126
|
-
|
|
127
|
-
throw result;
|
|
128
|
-
}
|
|
99
|
+
assertEq(result, '["a"]');
|
|
129
100
|
},
|
|
130
101
|
() => {
|
|
131
102
|
const rm = [[['a'], 10], [['b'], 20], [['c'], 30]];
|
|
132
103
|
const result = str(at(10)(rm));
|
|
133
|
-
|
|
134
|
-
throw result;
|
|
135
|
-
}
|
|
104
|
+
assertEq(result, '["a"]');
|
|
136
105
|
},
|
|
137
106
|
() => {
|
|
138
107
|
const rm = [[['a'], 10], [['b'], 20], [['c'], 30]];
|
|
139
108
|
const result = str(at(15)(rm));
|
|
140
|
-
|
|
141
|
-
throw result;
|
|
142
|
-
}
|
|
109
|
+
assertEq(result, '["b"]');
|
|
143
110
|
},
|
|
144
111
|
() => {
|
|
145
112
|
const rm = [[['a'], 10], [['b'], 20], [['c'], 30]];
|
|
146
113
|
const result = str(at(20)(rm));
|
|
147
|
-
|
|
148
|
-
throw result;
|
|
149
|
-
}
|
|
114
|
+
assertEq(result, '["b"]');
|
|
150
115
|
},
|
|
151
116
|
() => {
|
|
152
117
|
const rm = [[['a'], 10], [['b'], 20], [['c'], 30]];
|
|
153
118
|
const result = str(at(25)(rm));
|
|
154
|
-
|
|
155
|
-
throw result;
|
|
156
|
-
}
|
|
119
|
+
assertEq(result, '["c"]');
|
|
157
120
|
},
|
|
158
121
|
() => {
|
|
159
122
|
const rm = [[['a'], 10], [['b'], 20], [['c'], 30]];
|
|
160
123
|
const result = str(at(30)(rm));
|
|
161
|
-
|
|
162
|
-
throw result;
|
|
163
|
-
}
|
|
124
|
+
assertEq(result, '["c"]');
|
|
164
125
|
},
|
|
165
126
|
() => {
|
|
166
127
|
const rm = [[['a'], 10], [['b'], 20], [['c'], 30]];
|
|
167
128
|
const result = str(at(35)(rm));
|
|
168
|
-
|
|
169
|
-
throw result;
|
|
170
|
-
}
|
|
129
|
+
assertEq(result, '[]');
|
|
171
130
|
},
|
|
172
131
|
() => {
|
|
173
132
|
const rm = [];
|
|
174
133
|
const result = str(at(10)(rm));
|
|
175
|
-
|
|
176
|
-
throw result;
|
|
177
|
-
}
|
|
134
|
+
assertEq(result, '[]');
|
|
178
135
|
}
|
|
179
136
|
];
|
|
180
137
|
},
|
|
@@ -184,33 +141,23 @@ export const proof = {
|
|
|
184
141
|
return [
|
|
185
142
|
() => {
|
|
186
143
|
const result = get(def)(0)(rm);
|
|
187
|
-
|
|
188
|
-
throw result;
|
|
189
|
-
}
|
|
144
|
+
assertEq(result, -1);
|
|
190
145
|
},
|
|
191
146
|
() => {
|
|
192
147
|
const result = get(def)(1)(rm);
|
|
193
|
-
|
|
194
|
-
throw result;
|
|
195
|
-
}
|
|
148
|
+
assertEq(result, 42);
|
|
196
149
|
},
|
|
197
150
|
() => {
|
|
198
151
|
const result = get(def)(3)(rm);
|
|
199
|
-
|
|
200
|
-
throw result;
|
|
201
|
-
}
|
|
152
|
+
assertEq(result, 42);
|
|
202
153
|
},
|
|
203
154
|
() => {
|
|
204
155
|
const result = get(def)(7)(rm);
|
|
205
|
-
|
|
206
|
-
throw result;
|
|
207
|
-
}
|
|
156
|
+
assertEq(result, 42);
|
|
208
157
|
},
|
|
209
158
|
() => {
|
|
210
159
|
const result = get(def)(9)(rm);
|
|
211
|
-
|
|
212
|
-
throw result;
|
|
213
|
-
}
|
|
160
|
+
assertEq(result, -1);
|
|
214
161
|
},
|
|
215
162
|
];
|
|
216
163
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
declare const example: () => void;
|
|
2
|
+
declare const invertTest: () => void;
|
|
3
|
+
declare const mapOkTest: () => void;
|
|
4
|
+
export declare const proof: {
|
|
5
|
+
example: typeof example;
|
|
6
|
+
invertTest: typeof invertTest;
|
|
7
|
+
mapOkTest: typeof mapOkTest;
|
|
8
|
+
throw: {
|
|
9
|
+
unwrapError: () => string;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { error, ok, unwrap, invert, mapOk } from "./module.f.js";
|
|
2
|
+
import { assert, assertEq } from '../../asserts/module.f.js';
|
|
3
|
+
const example = () => {
|
|
4
|
+
const success = ok(42);
|
|
5
|
+
const failure = error('Something went wrong');
|
|
6
|
+
assertEq(unwrap(success), 42, 'error');
|
|
7
|
+
const [kind, v] = failure;
|
|
8
|
+
assertEq(kind, 'error');
|
|
9
|
+
// `v` is inferred as `string` here
|
|
10
|
+
assertEq(v, 'Something went wrong', 'error');
|
|
11
|
+
};
|
|
12
|
+
const invertTest = () => {
|
|
13
|
+
const [k0, v0] = invert(ok(42));
|
|
14
|
+
assert(!(k0 !== 'error' || v0 !== 42), [k0, v0]);
|
|
15
|
+
const [k1, v1] = invert(error('oops'));
|
|
16
|
+
assert(!(k1 !== 'ok' || v1 !== 'oops'), [k1, v1]);
|
|
17
|
+
};
|
|
18
|
+
const mapOkTest = () => {
|
|
19
|
+
const [k0, v0] = mapOk((n) => n + 1)(ok(41));
|
|
20
|
+
assert(!(k0 !== 'ok' || v0 !== 42), [k0, v0]);
|
|
21
|
+
const [k1, v1] = mapOk((n) => n + 1)(error('oops'));
|
|
22
|
+
assert(!(k1 !== 'error' || v1 !== 'oops'), [k1, v1]);
|
|
23
|
+
};
|
|
24
|
+
export const proof = {
|
|
25
|
+
example,
|
|
26
|
+
invertTest,
|
|
27
|
+
mapOkTest,
|
|
28
|
+
throw: {
|
|
29
|
+
unwrapError: () => unwrap(error('oops')),
|
|
30
|
+
},
|
|
31
|
+
};
|
|
@@ -15,6 +15,11 @@
|
|
|
15
15
|
* with one handler per variant; `visit(v)(rtti)` recognizes `rtti` and
|
|
16
16
|
* calls the matching handler. Both consumers compose their top-level
|
|
17
17
|
* function from a visitor.
|
|
18
|
+
* - `eachEntry`: the container entry loop (array/record/tuple/struct), shared
|
|
19
|
+
* by both consumers' container builders. Callers choose what (if anything)
|
|
20
|
+
* to accumulate, so `validate`'s pure pass/fail check pays no allocation.
|
|
21
|
+
* - `orVisit`: the shared `or` handler — try each variant's recursive walker,
|
|
22
|
+
* return the first match.
|
|
18
23
|
*
|
|
19
24
|
* Keeping the kernel here also removes `parse`'s incidental dependency on
|
|
20
25
|
* `validate` and gives future schema-driven consumers (e.g. the data form
|
|
@@ -22,7 +27,7 @@
|
|
|
22
27
|
*
|
|
23
28
|
* @module
|
|
24
29
|
*/
|
|
25
|
-
import type { Primitive, Unknown } from '
|
|
30
|
+
import type { Primitive, Unknown } from '../ts/module.f.ts';
|
|
26
31
|
import { type Info0, type Primitive0, type Struct, type Tag1, type Tuple, type Type } from '../module.f.ts';
|
|
27
32
|
import { type Error, type Result as CommonResult } from '../../result/module.f.ts';
|
|
28
33
|
import type { Ts } from '../ts/module.f.ts';
|
|
@@ -74,6 +79,36 @@ export type Container<K extends Tag1> = K extends 'array' ? ReadonlyArray<Unknow
|
|
|
74
79
|
export declare const isArray: IsContainer<ReadonlyArray<Unknown>>;
|
|
75
80
|
/** `IsContainer` guard for records/structs, shared by `validate` and `parse`. */
|
|
76
81
|
export declare const isObject: IsContainer<StringMap<string, Unknown>>;
|
|
82
|
+
/**
|
|
83
|
+
* Runs `item` over each `[key, value]` entry, bailing out with the first
|
|
84
|
+
* error, path-prefixed with that entry's key. On success, folds each item's
|
|
85
|
+
* result into `acc` (starting from `init`) with `accumulate` and returns the
|
|
86
|
+
* final accumulator.
|
|
87
|
+
*
|
|
88
|
+
* Shared by `validate` and `parse`'s container builders (array/record/tuple/
|
|
89
|
+
* struct), which differ only in what `item` does with the value and what
|
|
90
|
+
* they accumulate: `validate` has nothing to collect — its entire schema is
|
|
91
|
+
* "did every entry succeed?" — so it passes `undefined`/`(acc) => acc` and
|
|
92
|
+
* pays no allocation per entry; `parse` needs the rebuilt `[key, value]`
|
|
93
|
+
* pairs, so it folds them into a `List` (see its call site) and converts to
|
|
94
|
+
* an array once at the end.
|
|
95
|
+
*/
|
|
96
|
+
export declare const eachEntry: <V, R, A>(entries: ReadonlyArray<readonly [string, V]>, item: (k: string, v: V) => CommonResult<R, ValidationError>, init: A, accumulate: (acc: A, k: string, value: R) => A) => CommonResult<A, ValidationError>;
|
|
97
|
+
/** `Result` with the payload type erased; avoids instantiating `Ts<Type>`. */
|
|
98
|
+
export type ResultE = CommonResult<Unknown, ValidationError>;
|
|
99
|
+
/** A `Validate`-shaped function with the payload type erased. */
|
|
100
|
+
export type ValidateE = (value: Unknown) => ResultE;
|
|
101
|
+
/**
|
|
102
|
+
* First variant in `variants` that `recurse` accepts, else `verror('no match')`.
|
|
103
|
+
*
|
|
104
|
+
* Shared `or` handler for `validate` and `parse`: both try each variant
|
|
105
|
+
* against the value and return the first `'ok'` verbatim, differing only in
|
|
106
|
+
* which recursive function (`validate` or `parse`) walks each variant. `recurse`
|
|
107
|
+
* is typed over the erased `ValidateE` alias — annotating it as `(t: Type) =>
|
|
108
|
+
* Validate<Type>` would itself instantiate `Validate<Type>` and hit TS2589 —
|
|
109
|
+
* so each caller passes its recursive function through one boundary cast.
|
|
110
|
+
*/
|
|
111
|
+
export declare const orVisit: (recurse: (t: Type) => ValidateE) => (variants: readonly Type[]) => (value: Unknown) => ResultE;
|
|
77
112
|
/**
|
|
78
113
|
* Visits a schema `Type` by dispatching to the matching handler in `v`.
|
|
79
114
|
*
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {} from
|
|
2
|
-
import { error, ok } from
|
|
3
|
-
import { isArray as commonIsArray } from
|
|
4
|
-
import { isObject as commonIsObject } from
|
|
1
|
+
import {} from '../module.f.js';
|
|
2
|
+
import { error, ok } from '../../result/module.f.js';
|
|
3
|
+
import { isArray as commonIsArray } from '../../array/module.f.js';
|
|
4
|
+
import { isObject as commonIsObject } from '../../object/module.f.js';
|
|
5
5
|
/** Builds an error result with empty path and the given message. */
|
|
6
6
|
export const verror = (message) => error({ path: [], message });
|
|
7
7
|
/** Prepends `key` to the error's path, used to build the path bottom-up. */
|
|
@@ -25,6 +25,50 @@ const visitConst = (v) => (c) => typeof c === 'object' && c !== null
|
|
|
25
25
|
export const isArray = value => commonIsArray(value);
|
|
26
26
|
/** `IsContainer` guard for records/structs, shared by `validate` and `parse`. */
|
|
27
27
|
export const isObject = value => commonIsObject(value);
|
|
28
|
+
/**
|
|
29
|
+
* Runs `item` over each `[key, value]` entry, bailing out with the first
|
|
30
|
+
* error, path-prefixed with that entry's key. On success, folds each item's
|
|
31
|
+
* result into `acc` (starting from `init`) with `accumulate` and returns the
|
|
32
|
+
* final accumulator.
|
|
33
|
+
*
|
|
34
|
+
* Shared by `validate` and `parse`'s container builders (array/record/tuple/
|
|
35
|
+
* struct), which differ only in what `item` does with the value and what
|
|
36
|
+
* they accumulate: `validate` has nothing to collect — its entire schema is
|
|
37
|
+
* "did every entry succeed?" — so it passes `undefined`/`(acc) => acc` and
|
|
38
|
+
* pays no allocation per entry; `parse` needs the rebuilt `[key, value]`
|
|
39
|
+
* pairs, so it folds them into a `List` (see its call site) and converts to
|
|
40
|
+
* an array once at the end.
|
|
41
|
+
*/
|
|
42
|
+
export const eachEntry = (entries, item, init, accumulate) => {
|
|
43
|
+
let acc = init;
|
|
44
|
+
for (const [k, v] of entries) {
|
|
45
|
+
const r = item(k, v);
|
|
46
|
+
if (r[0] === 'error') {
|
|
47
|
+
return prependPath(k, r);
|
|
48
|
+
}
|
|
49
|
+
acc = accumulate(acc, k, r[1]);
|
|
50
|
+
}
|
|
51
|
+
return ok(acc);
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* First variant in `variants` that `recurse` accepts, else `verror('no match')`.
|
|
55
|
+
*
|
|
56
|
+
* Shared `or` handler for `validate` and `parse`: both try each variant
|
|
57
|
+
* against the value and return the first `'ok'` verbatim, differing only in
|
|
58
|
+
* which recursive function (`validate` or `parse`) walks each variant. `recurse`
|
|
59
|
+
* is typed over the erased `ValidateE` alias — annotating it as `(t: Type) =>
|
|
60
|
+
* Validate<Type>` would itself instantiate `Validate<Type>` and hit TS2589 —
|
|
61
|
+
* so each caller passes its recursive function through one boundary cast.
|
|
62
|
+
*/
|
|
63
|
+
export const orVisit = (recurse) => (variants) => (value) => {
|
|
64
|
+
for (const t of variants) {
|
|
65
|
+
const r = recurse(t)(value);
|
|
66
|
+
if (r[0] === 'ok') {
|
|
67
|
+
return r;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return verror('no match');
|
|
71
|
+
};
|
|
28
72
|
/**
|
|
29
73
|
* Visits a schema `Type` by dispatching to the matching handler in `v`.
|
|
30
74
|
*
|