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
package/fs/bnf/proof.f.js
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { classic, deterministic } from "./testlib.f.js";
|
|
2
|
-
import { rangeEncode, str, set, range, commaJoin0Plus, isEmpty, oneEncode, repeat1Plus, } from "./module.f.js";
|
|
3
|
-
export const proof = {
|
|
4
|
-
test: () => {
|
|
5
|
-
classic();
|
|
6
|
-
deterministic();
|
|
7
|
-
},
|
|
8
|
-
throw: {
|
|
9
|
-
rangeEncodeInvalid: [
|
|
10
|
-
() => { rangeEncode(-1, 0); },
|
|
11
|
-
() => { rangeEncode(0, -1); },
|
|
12
|
-
() => { rangeEncode(5, 3); },
|
|
13
|
-
],
|
|
14
|
-
rangeInvalid: [
|
|
15
|
-
() => { range('a'); },
|
|
16
|
-
() => { range('abc'); },
|
|
17
|
-
],
|
|
18
|
-
},
|
|
19
|
-
str: [
|
|
20
|
-
() => {
|
|
21
|
-
const result = str('a');
|
|
22
|
-
if (typeof result !== 'number') {
|
|
23
|
-
throw result;
|
|
24
|
-
}
|
|
25
|
-
if (result !== oneEncode(0x61)) {
|
|
26
|
-
throw result;
|
|
27
|
-
}
|
|
28
|
-
},
|
|
29
|
-
() => {
|
|
30
|
-
const result = str('ab');
|
|
31
|
-
if (!Array.isArray(result)) {
|
|
32
|
-
throw result;
|
|
33
|
-
}
|
|
34
|
-
if (result.length !== 2) {
|
|
35
|
-
throw result;
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
],
|
|
39
|
-
set: () => {
|
|
40
|
-
const result = set('abc');
|
|
41
|
-
if (typeof result !== 'object' || result === null) {
|
|
42
|
-
throw result;
|
|
43
|
-
}
|
|
44
|
-
if (!('a' in result)) {
|
|
45
|
-
throw result;
|
|
46
|
-
}
|
|
47
|
-
if (!('b' in result)) {
|
|
48
|
-
throw result;
|
|
49
|
-
}
|
|
50
|
-
if (!('c' in result)) {
|
|
51
|
-
throw result;
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
commaJoin0Plus: () => {
|
|
55
|
-
const ws = '';
|
|
56
|
-
const item = 'x';
|
|
57
|
-
const result = commaJoin0Plus(ws)('[]', item);
|
|
58
|
-
if (!Array.isArray(result)) {
|
|
59
|
-
throw result;
|
|
60
|
-
}
|
|
61
|
-
if (result[0] !== '[') {
|
|
62
|
-
throw result;
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
isEmpty: [
|
|
66
|
-
() => { if (!isEmpty('')) {
|
|
67
|
-
throw 'empty string should be empty';
|
|
68
|
-
} },
|
|
69
|
-
() => { if (!isEmpty([])) {
|
|
70
|
-
throw 'empty array should be empty';
|
|
71
|
-
} },
|
|
72
|
-
() => { if (isEmpty('a')) {
|
|
73
|
-
throw 'non-empty string should not be empty';
|
|
74
|
-
} },
|
|
75
|
-
() => {
|
|
76
|
-
const f = () => '';
|
|
77
|
-
if (!isEmpty(f)) {
|
|
78
|
-
throw 'function returning empty string should be empty';
|
|
79
|
-
}
|
|
80
|
-
},
|
|
81
|
-
],
|
|
82
|
-
repeat1Plus: [
|
|
83
|
-
() => {
|
|
84
|
-
const result = repeat1Plus('x');
|
|
85
|
-
if (result[0] !== 'x') {
|
|
86
|
-
throw result[0];
|
|
87
|
-
}
|
|
88
|
-
if (typeof result[1] !== 'function') {
|
|
89
|
-
throw 'expected repeat0Plus function';
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
() => {
|
|
93
|
-
const rule = 'ab';
|
|
94
|
-
const result = repeat1Plus(rule);
|
|
95
|
-
if (result[0] !== rule) {
|
|
96
|
-
throw result[0];
|
|
97
|
-
}
|
|
98
|
-
const inner = result[1]();
|
|
99
|
-
if (!('some' in inner) || !('none' in inner)) {
|
|
100
|
-
throw 'expected Option shape';
|
|
101
|
-
}
|
|
102
|
-
},
|
|
103
|
-
],
|
|
104
|
-
};
|
package/fs/cas/mcp/module.f.d.ts
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { type Effect } from '../../effects/module.f.ts';
|
|
2
|
-
import { type MemOp } from '../../effects/memory/module.f.ts';
|
|
3
|
-
import { type Read, type Write } from '../../effects/node/module.f.ts';
|
|
4
|
-
import { type McpConfig, type McpHandlers } from '../../mcp/module.f.ts';
|
|
5
|
-
import { type FileCasOperation } from '../module.f.ts';
|
|
6
|
-
/** Arguments for `cas_add`: content to store, with optional encoding type. */
|
|
7
|
-
export declare const casAddArgs: {
|
|
8
|
-
readonly content: import("../../types/rtti/module.f.ts").String;
|
|
9
|
-
readonly type: import("../../types/rtti/module.f.ts").Or<["text", "base64", undefined]>;
|
|
10
|
-
};
|
|
11
|
-
/** Arguments for `cas_get`: the cBase32 hash to look up; optionally request inline content. */
|
|
12
|
-
export declare const casGetArgs: {
|
|
13
|
-
readonly hash: import("../../types/rtti/module.f.ts").String;
|
|
14
|
-
readonly content: import("../../types/rtti/module.f.ts").Or<readonly [import("../../types/rtti/module.f.ts").Boolean, undefined]>;
|
|
15
|
-
};
|
|
16
|
-
/** Arguments for `cas_list`: none. */
|
|
17
|
-
export declare const casListArgs: {};
|
|
18
|
-
/**
|
|
19
|
-
* MCP handlers for `FileCas`.
|
|
20
|
-
*/
|
|
21
|
-
export declare const casMcpHandlers: (home: string) => McpHandlers<FileCasOperation>;
|
|
22
|
-
/**
|
|
23
|
-
* Static MCP configuration for the CAS server: advertises the `tools`
|
|
24
|
-
* capability, identifies the server, and pins the protocol version.
|
|
25
|
-
*/
|
|
26
|
-
export declare const casConfig: McpConfig;
|
|
27
|
-
/**
|
|
28
|
-
* Runs the file CAS MCP server over stdio: allocates the session-state slot, builds
|
|
29
|
-
* the `mcpStep` for `c`, and drives the read → parse → dispatch → write loop
|
|
30
|
-
* until stdin EOF.
|
|
31
|
-
*/
|
|
32
|
-
export declare const casMcpServer: (home: string) => Effect<Read | Write | MemOp | FileCasOperation, void>;
|
|
33
|
-
export declare const proof: {
|
|
34
|
-
casMcpServer: () => void;
|
|
35
|
-
collectReadOverflow: () => void;
|
|
36
|
-
};
|
package/fs/cas/mcp/module.f.js
DELETED
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP adapter for the content-addressable store.
|
|
3
|
-
*
|
|
4
|
-
* Maps `Cas<O>` operations onto MCP tools, so an agent that speaks MCP can
|
|
5
|
-
* store a blob and get back its hash, fetch a blob by hash, and enumerate
|
|
6
|
-
* what is stored — without shelling out to the `cas` CLI. The store itself
|
|
7
|
-
* (`fs/cas/module.f.ts`) stays transport-agnostic; this is an additional
|
|
8
|
-
* front end alongside the CLI `main`.
|
|
9
|
-
*
|
|
10
|
-
* ## Tools
|
|
11
|
-
*
|
|
12
|
-
* | Tool | args | action | result |
|
|
13
|
-
* |------------|-------------------------------|------------------|-------------------------------------|
|
|
14
|
-
* | `cas_add` | `{ content, type? }` | `c.write(...)` | hash (cBase32) |
|
|
15
|
-
* | `cas_get` | `{ hash, content?: boolean }` | `c.read(key)` | JSON `{length,mime_type,type[,content]}` |
|
|
16
|
-
* | `cas_list` | `{}` | `c.list()` | hashes, one per line |
|
|
17
|
-
*
|
|
18
|
-
* ## `cas_add` input encoding
|
|
19
|
-
*
|
|
20
|
-
* The optional `type` field controls how `content` is interpreted:
|
|
21
|
-
* - `'text'` (default, or omitted): `content` is a UTF-8 string stored as raw
|
|
22
|
-
* bytes. Most agent-generated content (scripts, JSON, prompts) can be stored
|
|
23
|
-
* without any encoding step.
|
|
24
|
-
* - `'base64'`: `content` is RFC 4648 base64, decoded to bytes before storage.
|
|
25
|
-
* Use this for pre-encoded binary payloads.
|
|
26
|
-
*
|
|
27
|
-
* Inline content (either encoding) is capped at 128 KiB (`maxLength`). There is
|
|
28
|
-
* no MCP route for larger content — the server never opens a local path named by
|
|
29
|
-
* the client (see the invariant in `fs/cas/mcp/README.md`); large files go
|
|
30
|
-
* through the `cas` CLI (`cas add <path>`) instead, run directly by the user.
|
|
31
|
-
*
|
|
32
|
-
* ## `cas_get` output
|
|
33
|
-
*
|
|
34
|
-
* Always returns a JSON object `{ length, mime_type, type[, url][, content] }`.
|
|
35
|
-
* `type` is always present (`'text'` or `'base64'`). A single classifier — the
|
|
36
|
-
* `fs/mime` detector state machine (length × magic-byte eliminator × UTF-8 DFA) —
|
|
37
|
-
* produces the same three-way verdict on both paths, so there is no second,
|
|
38
|
-
* divergent copy of the rules:
|
|
39
|
-
*
|
|
40
|
-
* 1. **Magic-byte hit** (PNG/JPEG/GIF/WebP/PDF/ZIP) → `type: 'base64'` with the
|
|
41
|
-
* detected `mime_type`.
|
|
42
|
-
* 2. **Whole-blob-valid UTF-8** → `type: 'text'`, `mime_type: 'text/plain'`.
|
|
43
|
-
* 3. **Fallback** → `type: 'base64'`, `mime_type: 'application/octet-stream'`.
|
|
44
|
-
*
|
|
45
|
-
* **Metadata-only (`content: false`, the default) is size-independent.** It folds
|
|
46
|
-
* the read stream through `fs/mime` `detectStream` and never buffers the blob.
|
|
47
|
-
* Because a single `Vec` caps at `maxLength` bits (128 KiB), the old
|
|
48
|
-
* drain-into-one-`Vec` approach failed on any blob larger than one chunk even when
|
|
49
|
-
* only metadata was asked for; streaming detection returns correct
|
|
50
|
-
* `{ length, mime_type, type[, url] }` regardless of size.
|
|
51
|
-
*
|
|
52
|
-
* **`content: true`** first derives `{ length, mime_type, type }` with the same
|
|
53
|
-
* size-independent `fs/mime` `detectStream` machine, then materializes the bytes
|
|
54
|
-
* (via `collectRead`, bounded by `maxLength`) and encodes the inline payload by
|
|
55
|
-
* `type` — a `fs/text/utf8` `fromVec` string for `text`, base64 for `base64`. A
|
|
56
|
-
* blob larger than `maxLength` (128 KiB) cannot be buffered into one `Vec`, so it
|
|
57
|
-
* is rejected here with a descriptive *"too large"* error (carrying the byte size
|
|
58
|
-
* and `url`) rather than being misreported as absent; it should be fetched via
|
|
59
|
-
* `url` or inspected with metadata-only `cas_get`.
|
|
60
|
-
*
|
|
61
|
-
* ## Encoding split: hashes vs. content
|
|
62
|
-
*
|
|
63
|
-
* `Cas<O>` deals in `Vec` (bit vectors); MCP models only `textContent` today.
|
|
64
|
-
* **Hashes** travel as cBase32 (`fs/cbase32`) — the canonical CAS hash format,
|
|
65
|
-
* shared with the CLI and the on-disk store layout. **Content** encoding is
|
|
66
|
-
* determined at read time as described above.
|
|
67
|
-
*
|
|
68
|
-
* ## Error convention
|
|
69
|
-
*
|
|
70
|
-
* MCP draws a line the dispatcher already respects: *protocol* failures
|
|
71
|
-
* (unknown method, malformed JSON-RPC params) are JSON-RPC errors handled by
|
|
72
|
-
* `mcpStep`. *Tool* failures come back as a normal `tools/call` result with
|
|
73
|
-
* `isError: true` and a text explanation, so the model can read and react:
|
|
74
|
-
* - `type: 'base64'` with malformed content (base64 `decode` → `null`) → `isError`
|
|
75
|
-
* - malformed `hash` (`cBase32ToVec` → `null`) → `isError`
|
|
76
|
-
* - `cas_get` on an absent hash (`c.read` → `undefined`) → `isError`
|
|
77
|
-
* - `cas_get` with `content: true` on a blob larger than `maxLength` → `isError`
|
|
78
|
-
* (distinct "too large" message, not "no such hash")
|
|
79
|
-
* - unknown tool `name` → `isError`
|
|
80
|
-
*
|
|
81
|
-
* @module
|
|
82
|
-
*/
|
|
83
|
-
import { string, option, or, boolean } from "../../types/rtti/module.f.js";
|
|
84
|
-
import { stringify } from "../../json/module.f.js";
|
|
85
|
-
import { pure, decode } from "../../effects/module.f.js";
|
|
86
|
-
import { create } from "../../effects/memory/module.f.js";
|
|
87
|
-
import { cBase32ToVec, vecToCBase32 } from "../../cbase32/module.f.js";
|
|
88
|
-
import { decode as base64Decode, encode as base64Encode } from "../../base64/module.f.js";
|
|
89
|
-
import { tryUtf8 } from "../../text/module.f.js";
|
|
90
|
-
import { detectStream } from "../../mime/module.f.js";
|
|
91
|
-
import { empty, length as bitVecLength, maxLength, maxLengthBytes, msb, vec } from "../../types/bit_vec/module.f.js";
|
|
92
|
-
import { ok, error } from "../../types/result/module.f.js";
|
|
93
|
-
import {} from "../../effects/node/module.f.js";
|
|
94
|
-
import { stdioTransport } from "../../mcp/stdio/module.f.js";
|
|
95
|
-
import { mcpStep, uninitializedState, toolEntry, fromRegistry, errorResult, } from "../../mcp/module.f.js";
|
|
96
|
-
import { fileCas } from "../module.f.js";
|
|
97
|
-
import { fromVec } from "../../text/utf8/module.f.js";
|
|
98
|
-
import { identity } from "../../types/function/module.f.js";
|
|
99
|
-
import { sha256 } from "../../crypto/sha2/module.f.js";
|
|
100
|
-
import { nonEmpty, empty as elEmpty } from "../../effects/list/module.f.js";
|
|
101
|
-
// ── Argument schemas (declared once, used for both inputSchema and validate) ─────
|
|
102
|
-
/** Arguments for `cas_add`: content to store, with optional encoding type. */
|
|
103
|
-
export const casAddArgs = {
|
|
104
|
-
content: string,
|
|
105
|
-
type: or('text', 'base64', undefined)
|
|
106
|
-
};
|
|
107
|
-
/** Arguments for `cas_get`: the cBase32 hash to look up; optionally request inline content. */
|
|
108
|
-
export const casGetArgs = {
|
|
109
|
-
hash: string,
|
|
110
|
-
content: option(boolean)
|
|
111
|
-
};
|
|
112
|
-
/** Arguments for `cas_list`: none. */
|
|
113
|
-
export const casListArgs = {};
|
|
114
|
-
// ── Stream helper ────────────────────────────────────────────────────────────────
|
|
115
|
-
/**
|
|
116
|
-
* Drains a CAS read stream into a single `Vec`. Used only on the `content: true`
|
|
117
|
-
* path, where the whole blob is needed for inline base64 / UTF-8 transfer; the
|
|
118
|
-
* chunk stream is concatenated and an error item is surfaced as the result.
|
|
119
|
-
* Metadata-only `cas_get` avoids this entirely via `fs/mime` `detectStream`,
|
|
120
|
-
* which is why it is not bound by the `maxLength` ceiling below.
|
|
121
|
-
*/
|
|
122
|
-
const collectRead = (stream) => {
|
|
123
|
-
const loop = (acc) => (s) => s.step((node) => {
|
|
124
|
-
if (node === undefined) {
|
|
125
|
-
return pure(ok(acc));
|
|
126
|
-
}
|
|
127
|
-
const { first, tail } = node;
|
|
128
|
-
const [t, v] = first;
|
|
129
|
-
if (t === 'error') {
|
|
130
|
-
return pure(first);
|
|
131
|
-
}
|
|
132
|
-
// A single `Vec` cannot exceed `maxLength` bits; concatenating past it would
|
|
133
|
-
// overflow the runtime's `bigint` constraint. Surface that as an error item
|
|
134
|
-
// so the tool reports a failure rather than crashing the process.
|
|
135
|
-
if (bitVecLength(acc) + bitVecLength(v) > maxLength) {
|
|
136
|
-
return pure(error(`cas blob exceeds maximum vector length of ${maxLength} bits`));
|
|
137
|
-
}
|
|
138
|
-
return loop(msb.concat(acc)(v))(tail);
|
|
139
|
-
});
|
|
140
|
-
return loop(empty)(stream);
|
|
141
|
-
};
|
|
142
|
-
// ── Tool registry ──────────────────────────────────────────────────────────────
|
|
143
|
-
const toJson = stringify(identity);
|
|
144
|
-
/** Registry of all CAS tools. */
|
|
145
|
-
const casToolRegistry = (home) => {
|
|
146
|
-
const c = fileCas(sha256)(home);
|
|
147
|
-
return [
|
|
148
|
-
toolEntry('cas_add', 'Store content and return its hash (cBase32). Pass type:"base64" for binary; omit or pass type:"text" for UTF-8 text (default). Inline content is capped at 128 KiB (131072 bytes) — larger content is rejected. For larger content, store the file with the `cas` CLI instead: run `npx functionalscript cas add <path>` yourself if you have shell access, or give the user that exact command to run — it prints the resulting hash on stdout.', casAddArgs, ({ type, content }) => {
|
|
149
|
-
// type:'text' or 'base64' — resolve content to Vec, store via c.write()
|
|
150
|
-
let x = type === 'base64'
|
|
151
|
-
? base64Decode(content)
|
|
152
|
-
: tryUtf8(content);
|
|
153
|
-
return x === null
|
|
154
|
-
? pure(errorResult('too large or malformed — for large content, run `npx functionalscript cas add <path>` (or have the user run it) instead'))
|
|
155
|
-
// The resolved content fits in one chunk; feed it as a single-item stream.
|
|
156
|
-
: c.write(nonEmpty(ok(x), elEmpty())).step(([tag, hash]) => pure(tag === 'error'
|
|
157
|
-
? errorResult('write')
|
|
158
|
-
: okResult(vecToCBase32(hash))));
|
|
159
|
-
}),
|
|
160
|
-
toolEntry('cas_get', 'Inspect a blob by hash. Always returns JSON {length,mime_type,type[,url]} where type is "text" or "base64". Pass content:true to also include the inline content string, but content is capped at 128 KiB (131072 bytes) — a larger blob is rejected with an error. To download a blob, prefer the url field returned in the result instead of requesting inline content.', casGetArgs, r => {
|
|
161
|
-
const key = cBase32ToVec(r.hash);
|
|
162
|
-
if (key === null) {
|
|
163
|
-
return pure(errorResult(`invalid cBase32 hash: ${r.hash}`));
|
|
164
|
-
}
|
|
165
|
-
const url = c.url(key);
|
|
166
|
-
return detectStream(c.read(key)).step(([tag, detected]) => {
|
|
167
|
-
if (tag === 'error') {
|
|
168
|
-
return pure(errorResult(`no such hash: ${r.hash}`));
|
|
169
|
-
}
|
|
170
|
-
const { length, mime_type, type } = detected;
|
|
171
|
-
const meta = { length: Number(length), mime_type, type, url };
|
|
172
|
-
if (r.content !== true) {
|
|
173
|
-
// content:true path continues below; this is just the metadata step.
|
|
174
|
-
return pure(okResult(toJson(meta)));
|
|
175
|
-
}
|
|
176
|
-
// A single `Vec` caps at `maxLength` bits (`maxLengthBytes` bytes), so
|
|
177
|
-
// a larger blob cannot be buffered for inline transfer. Report the
|
|
178
|
-
// size and point at the size-independent alternatives instead of
|
|
179
|
-
// misreporting an existing blob as `no such hash`.
|
|
180
|
-
if (length > maxLengthBytes) {
|
|
181
|
-
return pure(errorResult(`blob too large to fetch inline (${length} bytes, limit ${maxLengthBytes} bytes); use the url field (${url}) or omit content for metadata`));
|
|
182
|
-
}
|
|
183
|
-
return collectRead(c.read(key)).step(([collectTag, value]) => {
|
|
184
|
-
if (collectTag === 'error') {
|
|
185
|
-
return pure(errorResult(`no such hash: ${r.hash}`));
|
|
186
|
-
}
|
|
187
|
-
if (type === 'text') {
|
|
188
|
-
// `type: 'text'` means the detector validated `value` as UTF-8,
|
|
189
|
-
// so `fromVec` is non-null here; guard defensively regardless.
|
|
190
|
-
const str = fromVec(value);
|
|
191
|
-
return pure(str === null
|
|
192
|
-
? errorResult(`content is not byte-aligned: ${r.hash}`)
|
|
193
|
-
: okResult(toJson({ ...meta, content: str })));
|
|
194
|
-
}
|
|
195
|
-
const blob = base64Encode(value);
|
|
196
|
-
return pure(blob === null
|
|
197
|
-
? errorResult(`content is not byte-aligned: ${r.hash}`)
|
|
198
|
-
: okResult(toJson({ ...meta, content: blob })));
|
|
199
|
-
});
|
|
200
|
-
});
|
|
201
|
-
}),
|
|
202
|
-
toolEntry('cas_list', 'List all stored content hashes (cBase32), one per line.', casListArgs, () => c.list().step(hashes => pure(okResult(hashes.map(vecToCBase32).join('\n'))))),
|
|
203
|
-
];
|
|
204
|
-
};
|
|
205
|
-
// ── Result helpers ──────────────────────────────────────────────────────────────
|
|
206
|
-
/** A successful single-text-block tool result. */
|
|
207
|
-
const okResult = (text) => ({ content: [{ type: 'text', text }] });
|
|
208
|
-
// ── Handlers ────────────────────────────────────────────────────────────────────
|
|
209
|
-
/**
|
|
210
|
-
* MCP handlers for `FileCas`.
|
|
211
|
-
*/
|
|
212
|
-
export const casMcpHandlers = (home) => fromRegistry(casToolRegistry(home));
|
|
213
|
-
// ── Session configuration ───────────────────────────────────────────────────────
|
|
214
|
-
/**
|
|
215
|
-
* Static MCP configuration for the CAS server: advertises the `tools`
|
|
216
|
-
* capability, identifies the server, and pins the protocol version.
|
|
217
|
-
*/
|
|
218
|
-
export const casConfig = {
|
|
219
|
-
serverInfo: { name: 'functionalscript-cas', version: '0.30.0' },
|
|
220
|
-
capabilities: { tools: {} },
|
|
221
|
-
protocolVersion: '2024-11-05',
|
|
222
|
-
};
|
|
223
|
-
// ── Server ──────────────────────────────────────────────────────────────────────
|
|
224
|
-
/**
|
|
225
|
-
* Runs the file CAS MCP server over stdio: allocates the session-state slot, builds
|
|
226
|
-
* the `mcpStep` for `c`, and drives the read → parse → dispatch → write loop
|
|
227
|
-
* until stdin EOF.
|
|
228
|
-
*/
|
|
229
|
-
export const casMcpServer = (home) => create(uninitializedState).step(key => stdioTransport(mcpStep(casConfig)(casMcpHandlers(home))(key)));
|
|
230
|
-
// ── Tests ────────────────────────────────────────────────────────────────────
|
|
231
|
-
export const proof = {
|
|
232
|
-
// casMcpServer is never called in integration tests because it drives a
|
|
233
|
-
// real stdio server; call it here to cover its Effect-building body.
|
|
234
|
-
casMcpServer: () => { casMcpServer('/'); },
|
|
235
|
-
// The overflow guard in collectRead (lines 125-126) is only reached when
|
|
236
|
-
// the running total of two stream chunks would exceed maxLength. Feed a
|
|
237
|
-
// pure stream whose second chunk pushes it just over the limit so the
|
|
238
|
-
// error branch executes without any real I/O.
|
|
239
|
-
collectReadOverflow: () => {
|
|
240
|
-
const half = maxLength / 2n;
|
|
241
|
-
const v1 = vec(half)(0n);
|
|
242
|
-
const v2 = vec(half + 1n)(0n);
|
|
243
|
-
const stream = nonEmpty(ok(v1), nonEmpty(ok(v2), elEmpty()));
|
|
244
|
-
const d = decode(collectRead(stream));
|
|
245
|
-
if (!d.done || d.result[0] !== 'error') {
|
|
246
|
-
throw 'expected overflow error';
|
|
247
|
-
}
|
|
248
|
-
},
|
|
249
|
-
};
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Centralized version pins and OS images used by the CI generator: runner
|
|
3
|
-
* images, tool versions (Bun, Deno, Playwright, Rust, Node, Wasmtime, Wasmer,
|
|
4
|
-
* TSGO).
|
|
5
|
-
*
|
|
6
|
-
* @module
|
|
7
|
-
*/
|
|
8
|
-
export declare const images: {
|
|
9
|
-
readonly ubuntu: {
|
|
10
|
-
readonly intel: "ubuntu-26.04";
|
|
11
|
-
readonly arm: "ubuntu-26.04-arm";
|
|
12
|
-
};
|
|
13
|
-
readonly macos: {
|
|
14
|
-
readonly intel: "macos-26-intel";
|
|
15
|
-
readonly arm: "macos-26";
|
|
16
|
-
};
|
|
17
|
-
readonly windows: {
|
|
18
|
-
readonly intel: "windows-2025";
|
|
19
|
-
readonly arm: "windows-11-arm";
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
export declare const functionalscript: "0.35.2";
|
|
23
|
-
export declare const bun = "1.3.14";
|
|
24
|
-
export declare const deno = "2.9.1";
|
|
25
|
-
export declare const playwright = "1.61.1";
|
|
26
|
-
export declare const node: {
|
|
27
|
-
readonly default: "26.4.0";
|
|
28
|
-
readonly node22: "22.23.1";
|
|
29
|
-
readonly node24: "24.18.0";
|
|
30
|
-
};
|
|
31
|
-
export declare const wasmtime = "46.0.1";
|
|
32
|
-
export declare const wasmer = "7.2.0";
|
|
33
|
-
export declare const tsgo = "7.0.0-dev.20260707.2";
|
|
34
|
-
export declare const actions: {
|
|
35
|
-
readonly 'actions/checkout': "v7";
|
|
36
|
-
readonly 'actions/setup-node': "v6.4.0";
|
|
37
|
-
readonly 'actions/cache': "v6.1.0";
|
|
38
|
-
readonly 'denoland/setup-deno': "v2.0.5";
|
|
39
|
-
readonly 'oven-sh/setup-bun': "v2.2.0";
|
|
40
|
-
readonly 'bytecodealliance/actions/wasmtime/setup': "v1.1.3";
|
|
41
|
-
readonly 'wasmerio/setup-wasmer': "v3.1";
|
|
42
|
-
readonly 'dtolnay/rust-toolchain': "1.96.1";
|
|
43
|
-
};
|
package/fs/ci/deno/module.f.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CI step builder for Deno: installs the pinned Deno version and runs the
|
|
3
|
-
* FunctionalScript package smoke test plus Deno coverage in one canonical job.
|
|
4
|
-
*
|
|
5
|
-
* @module
|
|
6
|
-
*/
|
|
7
|
-
import { deno } from "../config/module.f.js";
|
|
8
|
-
import { clean, install, test, uses } from "../common/module.f.js";
|
|
9
|
-
const denoTest = 'deno test --allow-read --allow-env --allow-sys';
|
|
10
|
-
export const denoSteps = (version) => clean([
|
|
11
|
-
install(uses('denoland/setup-deno', { 'deno-version': deno })),
|
|
12
|
-
install({ run: `deno install -g -A npm:functionalscript@${version}` }),
|
|
13
|
-
test({ run: `deno run -A npm:functionalscript@${version} t` }),
|
|
14
|
-
test({ run: 'deno install --frozen' }),
|
|
15
|
-
test({ run: `${denoTest} --coverage && deno coverage --include='.*module\\.f\\.ts'` }),
|
|
16
|
-
]);
|
package/fs/crypto/pow/proof.f.js
DELETED
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
import { utf8 } from "../../text/module.f.js";
|
|
2
|
-
import { empty, uint } from "../../types/bit_vec/module.f.js";
|
|
3
|
-
import { computeSync, sha224, sha256 } from "../sha2/module.f.js";
|
|
4
|
-
import { bitcoinPow, genesisNBits, genesisTarget, pow, sha256Pow, targetFromNBits } from "./module.f.js";
|
|
5
|
-
const p256 = sha256Pow;
|
|
6
|
-
const p224 = pow(sha224);
|
|
7
|
-
const sample = utf8('functionalscript pow proof');
|
|
8
|
-
const emptyData = empty;
|
|
9
|
-
/** Target large enough for {@link sample} under SHA-256 (`0x207fffff`). */
|
|
10
|
-
const easyNBits = 0x207fffffn;
|
|
11
|
-
/** Compact encoding for target `1` (`0x03000001`). */
|
|
12
|
-
const hardNBits = 0x03000001n;
|
|
13
|
-
/** SHA-256 of the empty message (NIST / Bitcoin block merkle uses this primitive). */
|
|
14
|
-
const sha256EmptyHash = 0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855n;
|
|
15
|
-
/** Bitcoin block #0 header hash as big-endian uint256. */
|
|
16
|
-
const block0Hash = 0x000000000019d6689c085ae165831e934ff763ae46a2a6cffb388491c27dc990n;
|
|
17
|
-
const expectNull = (nBits) => {
|
|
18
|
-
if (targetFromNBits(nBits) !== null) {
|
|
19
|
-
throw nBits;
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
export const proof = {
|
|
23
|
-
targetFromNBits: {
|
|
24
|
-
genesis: () => {
|
|
25
|
-
if (targetFromNBits(genesisNBits) !== genesisTarget) {
|
|
26
|
-
throw 'genesis target';
|
|
27
|
-
}
|
|
28
|
-
},
|
|
29
|
-
block0HashWithinGenesisTarget: () => {
|
|
30
|
-
if (block0Hash > genesisTarget) {
|
|
31
|
-
throw 'block0 hash exceeds genesis target';
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
|
-
exponent3: () => {
|
|
35
|
-
if (targetFromNBits(0x030000ffn) !== 0xffn) {
|
|
36
|
-
throw 'exponent 3';
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
exponent2: () => {
|
|
40
|
-
if (targetFromNBits(0x02008000n) !== 0x80n) {
|
|
41
|
-
throw 'exponent 2';
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
hardTargetOne: () => {
|
|
45
|
-
if (targetFromNBits(hardNBits) !== 1n) {
|
|
46
|
-
throw 'hard target';
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
zero: () => {
|
|
50
|
-
if (targetFromNBits(0n) !== 0n) {
|
|
51
|
-
throw 'zero nBits';
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
negative: () => {
|
|
55
|
-
expectNull(0x01800001n);
|
|
56
|
-
},
|
|
57
|
-
negativeHighMantissa: () => {
|
|
58
|
-
expectNull(0x22ffffffn);
|
|
59
|
-
},
|
|
60
|
-
overflowExponent: () => {
|
|
61
|
-
expectNull(0x23000001n);
|
|
62
|
-
},
|
|
63
|
-
exceeds256: () => {
|
|
64
|
-
expectNull(0x227fffffn);
|
|
65
|
-
},
|
|
66
|
-
},
|
|
67
|
-
meets: {
|
|
68
|
-
easy: () => {
|
|
69
|
-
if (!p256.meets(easyNBits)(sample)) {
|
|
70
|
-
throw 'easy nBits should pass';
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
hard: () => {
|
|
74
|
-
if (p256.meets(hardNBits)(sample)) {
|
|
75
|
-
throw 'target 1 should fail';
|
|
76
|
-
}
|
|
77
|
-
},
|
|
78
|
-
genesisFailsSample: () => {
|
|
79
|
-
if (p256.meets(genesisNBits)(sample)) {
|
|
80
|
-
throw 'genesis target too hard for sample';
|
|
81
|
-
}
|
|
82
|
-
},
|
|
83
|
-
zeroTargetRejectsSample: () => {
|
|
84
|
-
if (p256.meets(0n)(sample)) {
|
|
85
|
-
throw 'non-zero hash vs zero target';
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
|
-
invalidNBits: () => {
|
|
89
|
-
if (p256.meets(0x01800001n)(sample)) {
|
|
90
|
-
throw 'invalid nBits should not pass';
|
|
91
|
-
}
|
|
92
|
-
},
|
|
93
|
-
hashLeqTarget: () => {
|
|
94
|
-
const h = p256.hashInt(sample);
|
|
95
|
-
const target = targetFromNBits(easyNBits);
|
|
96
|
-
if (target === null) {
|
|
97
|
-
throw 'easy nBits decode';
|
|
98
|
-
}
|
|
99
|
-
if (h > target) {
|
|
100
|
-
throw 'hash above easy target';
|
|
101
|
-
}
|
|
102
|
-
if (!(h <= target)) {
|
|
103
|
-
throw 'hash <= target';
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
},
|
|
107
|
-
hashInt: {
|
|
108
|
-
sha256Sample: () => {
|
|
109
|
-
const digest = computeSync(sha256)([sample]);
|
|
110
|
-
if (p256.hashInt(sample) !== uint(digest)) {
|
|
111
|
-
throw 'sha256 sample';
|
|
112
|
-
}
|
|
113
|
-
},
|
|
114
|
-
sha256Empty: () => {
|
|
115
|
-
if (p256.hashInt(emptyData) !== sha256EmptyHash) {
|
|
116
|
-
throw 'sha256 empty constant';
|
|
117
|
-
}
|
|
118
|
-
const digest = computeSync(sha256)([emptyData]);
|
|
119
|
-
if (p256.hashInt(emptyData) !== uint(digest)) {
|
|
120
|
-
throw 'sha256 empty';
|
|
121
|
-
}
|
|
122
|
-
},
|
|
123
|
-
sha224: () => {
|
|
124
|
-
const digest = computeSync(sha224)([sample]);
|
|
125
|
-
if (p224.hashInt(sample) !== uint(digest)) {
|
|
126
|
-
throw 'sha224';
|
|
127
|
-
}
|
|
128
|
-
},
|
|
129
|
-
stable: () => {
|
|
130
|
-
if (p256.hashInt(sample) !== p256.hashInt(sample)) {
|
|
131
|
-
throw 'stable';
|
|
132
|
-
}
|
|
133
|
-
},
|
|
134
|
-
},
|
|
135
|
-
pow: {
|
|
136
|
-
sha256Pow: () => {
|
|
137
|
-
const built = pow(sha256);
|
|
138
|
-
if (sha256Pow.hashInt(sample) !== built.hashInt(sample)) {
|
|
139
|
-
throw 'hashInt';
|
|
140
|
-
}
|
|
141
|
-
if (sha256Pow.meets(easyNBits)(sample) !== built.meets(easyNBits)(sample)) {
|
|
142
|
-
throw 'meets';
|
|
143
|
-
}
|
|
144
|
-
},
|
|
145
|
-
bitcoinPow: () => {
|
|
146
|
-
if (bitcoinPow.hashInt(sample) !== sha256Pow.hashInt(sample)) {
|
|
147
|
-
throw 'bitcoinPow';
|
|
148
|
-
}
|
|
149
|
-
},
|
|
150
|
-
independentInstances: () => {
|
|
151
|
-
const a = pow(sha256);
|
|
152
|
-
const b = pow(sha256);
|
|
153
|
-
if (a.hashInt(sample) !== b.hashInt(sample)) {
|
|
154
|
-
throw 'hashInt';
|
|
155
|
-
}
|
|
156
|
-
if (a.meets(easyNBits)(sample) !== b.meets(easyNBits)(sample)) {
|
|
157
|
-
throw 'meets';
|
|
158
|
-
}
|
|
159
|
-
},
|
|
160
|
-
},
|
|
161
|
-
};
|
package/fs/djs/examples/m.f.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { type List } from '../../types/list/module.f.ts';
|
|
2
|
-
import * as jsTokenizer from '../../js/tokenizer/module.f.ts';
|
|
3
|
-
export type DjsToken = {
|
|
4
|
-
readonly kind: 'true' | 'false' | 'null' | 'undefined';
|
|
5
|
-
} | {
|
|
6
|
-
readonly kind: '{' | '}' | ':' | ',' | '[' | ']' | '.' | '=';
|
|
7
|
-
} | jsTokenizer.StringToken | jsTokenizer.NumberToken | jsTokenizer.ErrorToken | jsTokenizer.IdToken | jsTokenizer.BigIntToken | jsTokenizer.WhitespaceToken | jsTokenizer.NewLineToken | jsTokenizer.CommentToken | jsTokenizer.EofToken;
|
|
8
|
-
export type DjsTokenWithMetadata = {
|
|
9
|
-
readonly token: DjsToken;
|
|
10
|
-
readonly metadata: jsTokenizer.TokenMetadata;
|
|
11
|
-
};
|
|
12
|
-
export declare const tokenize: (input: List<number>) => (path: string) => List<DjsTokenWithMetadata>;
|