functionalscript 0.37.0 → 0.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/{fs → fjs}/asn.1/proof.f.js +32 -94
- package/fjs/asserts/module.f.d.ts +36 -0
- package/fjs/asserts/module.f.js +39 -0
- package/fjs/asserts/proof.f.d.ts +11 -0
- package/fjs/asserts/proof.f.js +18 -0
- package/{fs → fjs}/base_n/proof.f.js +12 -36
- package/{fs → fjs}/basen/base64/proof.f.d.ts +1 -0
- package/{fs → fjs}/basen/base64/proof.f.js +15 -1
- package/{fs → fjs}/basen/cbase32/proof.f.js +15 -42
- package/fjs/bnf/data/module.f.d.ts +52 -0
- package/{fs → fjs}/bnf/data/module.f.js +53 -3
- package/{fs → fjs}/bnf/data/proof.f.d.ts +1 -0
- package/{fs → fjs}/bnf/data/proof.f.js +54 -19
- package/{fs → fjs}/bnf/descent/module.f.d.ts +4 -14
- package/fjs/bnf/descent/module.f.js +124 -0
- package/{fs → fjs}/bnf/descent/proof.f.d.ts +1 -0
- package/{fs → fjs}/bnf/descent/proof.f.js +55 -24
- package/{fs → fjs}/bnf/ll1/module.f.d.ts +4 -4
- package/{fs → fjs}/bnf/ll1/module.f.js +7 -5
- package/{fs → fjs}/bnf/ll1/proof.f.d.ts +1 -0
- package/{fs → fjs}/bnf/ll1/proof.f.js +27 -10
- package/{fs → fjs}/bnf/module.f.d.ts +19 -5
- package/{fs → fjs}/bnf/module.f.js +10 -11
- package/fjs/bnf/proof.f.js +69 -0
- package/{fs → fjs}/bnf/testlib.f.js +2 -2
- package/{fs → fjs}/cas/cli/proof.f.d.ts +4 -1
- package/{fs → fjs}/cas/cli/proof.f.js +29 -66
- package/fjs/cas/evo/mcp/module.f.d.ts +19 -0
- package/fjs/cas/evo/mcp/module.f.js +56 -0
- package/fjs/cas/evo/mcp/proof.f.d.ts +9 -0
- package/fjs/cas/evo/mcp/proof.f.js +95 -0
- package/fjs/cas/evo/module.f.d.ts +138 -0
- package/fjs/cas/evo/module.f.js +309 -0
- package/fjs/cas/evo/proof.f.d.ts +32 -0
- package/fjs/cas/evo/proof.f.js +453 -0
- package/fjs/cas/mcp/module.f.d.ts +49 -0
- package/{fs → fjs}/cas/mcp/module.f.js +54 -76
- package/{fs → fjs}/cas/mcp/proof.f.d.ts +4 -1
- package/{fs → fjs}/cas/mcp/proof.f.js +41 -13
- package/{fs → fjs}/cas/module.f.d.ts +10 -0
- package/{fs → fjs}/cas/module.f.js +27 -1
- package/{fs → fjs}/cas/proof.f.d.ts +4 -0
- package/{fs → fjs}/cas/proof.f.js +77 -86
- package/{fs → fjs}/ci/config/module.f.d.ts +5 -5
- package/{fs → fjs}/ci/config/module.f.js +5 -5
- package/{fs → fjs}/ci/proof.f.js +14 -9
- package/{fs → fjs}/ci/rust/module.f.js +9 -1
- package/{fs → fjs}/cli/proof.f.js +22 -63
- package/{fs → fjs}/common/monoid/proof.f.js +4 -9
- package/{fs → fjs}/crypto/hmac/proof.f.js +4 -12
- package/fjs/crypto/pow/proof.f.js +111 -0
- package/{fs → fjs}/crypto/secp/proof.f.js +12 -33
- package/{fs → fjs}/crypto/sha2/proof.f.js +18 -49
- package/{fs → fjs}/crypto/sign/module.f.d.ts +0 -5
- package/{fs → fjs}/crypto/sign/module.f.js +7 -4
- package/{fs → fjs}/crypto/sign/proof.f.js +36 -105
- package/{fs → fjs}/crypto/vdf/proof.f.js +22 -63
- package/{fs → fjs}/dev/package_json/proof.f.js +7 -7
- package/{fs → fjs}/dev/proof.f.js +2 -4
- package/{fs → fjs}/djs/ast/proof.f.js +4 -12
- package/{fs → fjs}/djs/parser/module.f.d.ts +5 -0
- package/{fs → fjs}/djs/parser/module.f.js +20 -0
- package/{fs → fjs}/djs/parser/proof.f.js +138 -400
- package/{fs → fjs}/djs/proof.f.js +13 -36
- package/{fs → fjs}/djs/serializer/proof.f.js +14 -39
- package/fjs/djs/tokenizer/module.f.d.ts +24 -0
- package/fjs/djs/tokenizer/module.f.js +472 -0
- package/{fs/djs/tokenizer-new → fjs/djs/tokenizer}/proof.f.d.ts +4 -3
- package/{fs/djs/tokenizer-new → fjs/djs/tokenizer}/proof.f.js +446 -445
- package/{fs → fjs}/djs/transpiler/proof.f.d.ts +3 -0
- package/{fs → fjs}/djs/transpiler/proof.f.js +29 -30
- package/{fs → fjs}/effects/memory/proof.f.js +8 -21
- package/{fs → fjs}/effects/node/memory/proof.js +5 -12
- package/{fs → fjs}/effects/node/module.d.ts +1 -1
- package/{fs → fjs}/effects/node/module.f.d.ts +1 -1
- package/{fs → fjs}/effects/node/module.js +3 -3
- package/{fs → fjs}/effects/node/proof.f.d.ts +1 -0
- package/{fs → fjs}/effects/node/proof.f.js +106 -292
- package/{fs → fjs}/effects/node/virtual/proof.f.d.ts +1 -0
- package/{fs → fjs}/effects/node/virtual/proof.f.js +36 -29
- package/{fs → fjs}/effects/proof.f.js +16 -45
- package/{fs → fjs}/emergent_testing/proof.f.js +7 -7
- package/{fs → fjs}/fsc/proof.f.js +12 -34
- package/{fs → fjs}/fsm/proof.f.js +5 -12
- package/{fs → fjs}/mcp/module.f.d.ts +7 -0
- package/{fs → fjs}/mcp/module.f.js +9 -2
- package/{fs → fjs}/mcp/proof.f.js +12 -12
- package/{fs → fjs}/mcp/stdio/module.f.d.ts +2 -2
- package/{fs → fjs}/mcp/stdio/module.f.js +2 -2
- package/{fs → fjs}/media/html/proof.f.js +12 -33
- package/{fs → fjs}/media/json/parser/module.f.d.ts +5 -0
- package/{fs → fjs}/media/json/parser/module.f.js +14 -0
- package/{fs → fjs}/media/json/parser/proof.f.js +39 -114
- package/{fs → fjs}/media/json/rpc/module.f.js +1 -1
- package/{fs → fjs}/media/json/schema/module.f.d.ts +2 -2
- package/{fs → fjs}/media/json/schema/module.f.js +23 -39
- package/{fs → fjs}/media/json/schema/proof.f.js +3 -6
- package/{fs → fjs}/media/json/serializer/proof.f.js +10 -27
- package/{fs → fjs}/media/module.f.d.ts +6 -6
- package/{fs → fjs}/media/module.f.js +3 -4
- package/{fs → fjs}/media/proof.f.js +5 -4
- package/{fs → fjs}/media/revision/module.f.d.ts +31 -4
- package/{fs → fjs}/media/revision/module.f.js +35 -23
- package/{fs → fjs}/media/revision/proof.f.d.ts +10 -8
- package/fjs/media/revision/proof.f.js +140 -0
- package/{fs → fjs}/media/type/proof.f.js +2 -6
- package/{fs → fjs}/module.f.js +1 -1
- package/{fs → fjs}/path/proof.f.js +27 -78
- package/{fs → fjs}/proof.f.js +2 -0
- package/{fs → fjs}/sul/id/proof.f.js +7 -21
- package/{fs → fjs}/sul/level/hash/proof.f.js +5 -5
- package/{fs → fjs}/sul/level/literal/proof.f.js +12 -26
- package/fjs/text/ascii/proof.f.d.ts +6 -0
- package/{fs → fjs}/text/ascii/proof.f.js +4 -14
- package/{fs → fjs}/text/code_point/module.f.js +10 -10
- package/{fs → fjs}/text/proof.f.js +4 -9
- package/{fs → fjs}/text/sgr/proof.f.js +6 -15
- package/{fs → fjs}/text/utf16/module.f.js +1 -1
- package/{fs → fjs}/text/utf16/proof.f.js +23 -66
- package/{fs → fjs}/text/utf8/proof.f.js +56 -125
- package/{fs → fjs}/types/array/proof.f.js +18 -52
- package/fjs/types/bigfloat/proof.f.js +217 -0
- package/{fs → fjs}/types/bigint/proof.f.js +49 -145
- package/{fs → fjs}/types/bit_vec/proof.f.js +72 -214
- package/{fs → fjs}/types/btree/find/proof.f.js +23 -66
- package/{fs → fjs}/types/btree/proof.f.js +5 -12
- package/{fs → fjs}/types/btree/remove/proof.f.d.ts +2 -0
- package/{fs → fjs}/types/btree/remove/proof.f.js +83 -230
- package/{fs → fjs}/types/btree/set/module.f.js +5 -2
- package/{fs → fjs}/types/btree/set/proof.f.js +35 -24
- package/{fs → fjs}/types/byte_set/proof.f.js +22 -63
- package/{fs → fjs}/types/function/compare/proof.f.js +13 -36
- package/{fs → fjs}/types/function/operator/proof.f.js +17 -48
- package/{fs → fjs}/types/function/proof.f.js +2 -3
- package/{fs → fjs}/types/list/proof.f.js +55 -163
- package/{fs → fjs}/types/map/proof.f.js +4 -12
- package/{fs → fjs}/types/nibble_set/proof.f.js +16 -45
- package/{fs → fjs}/types/nominal/proof.f.js +5 -10
- package/fjs/types/nullable/proof.f.js +29 -0
- package/{fs → fjs}/types/number/proof.f.js +9 -24
- package/{fs → fjs}/types/object/proof.f.js +3 -6
- package/{fs → fjs}/types/patricia_trie/proof.f.js +21 -21
- package/{fs → fjs}/types/prime_field/module.f.js +2 -7
- package/{fs → fjs}/types/range/module.f.d.ts +1 -1
- package/fjs/types/range/module.f.js +2 -0
- package/fjs/types/range/proof.f.js +9 -0
- package/{fs → fjs}/types/range_map/proof.f.js +28 -81
- package/{fs → fjs}/types/result/proof.f.d.ts +3 -2
- package/fjs/types/result/proof.f.js +31 -0
- package/{fs → fjs}/types/rtti/common/module.f.d.ts +36 -1
- package/{fs → fjs}/types/rtti/common/module.f.js +44 -0
- package/fjs/types/rtti/common/proof.f.d.ts +8 -0
- package/fjs/types/rtti/common/proof.f.js +51 -0
- package/{fs → fjs}/types/rtti/parse/module.f.js +13 -22
- package/{fs → fjs}/types/rtti/parse/proof.f.js +7 -18
- package/{fs → fjs}/types/rtti/ts/module.f.d.ts +10 -4
- package/{fs → fjs}/types/rtti/validate/module.f.js +8 -29
- package/{fs → fjs}/types/rtti/validate/proof.f.js +4 -9
- package/{fs → fjs}/types/sorted_list/proof.f.js +8 -21
- package/{fs → fjs}/types/sorted_set/proof.f.js +14 -39
- package/fjs/types/string/proof.f.js +77 -0
- package/fjs/types/string_set/proof.f.js +43 -0
- package/{fs → fjs}/types/ts/proof.f.js +15 -42
- package/{fs → fjs}/types/uint8array/module.f.js +7 -7
- package/{fs → fjs}/types/uint8array/proof.f.d.ts +4 -1
- package/{fs → fjs}/types/uint8array/proof.f.js +7 -7
- package/{fs → fjs}/website/proof.f.js +3 -6
- package/package.json +6 -6
- package/fs/asserts/module.f.d.ts +0 -4
- package/fs/asserts/module.f.js +0 -9
- package/fs/asserts/proof.f.d.ts +0 -8
- package/fs/asserts/proof.f.js +0 -51
- package/fs/bnf/data/module.f.d.ts +0 -30
- package/fs/bnf/descent/module.f.js +0 -119
- package/fs/bnf/proof.f.js +0 -104
- package/fs/cas/mcp/module.f.d.ts +0 -36
- package/fs/crypto/pow/proof.f.js +0 -161
- package/fs/djs/tokenizer/module.f.d.ts +0 -12
- package/fs/djs/tokenizer/module.f.js +0 -62
- package/fs/djs/tokenizer/proof.f.d.ts +0 -7
- package/fs/djs/tokenizer/proof.f.js +0 -543
- package/fs/djs/tokenizer-new/module.f.d.ts +0 -3
- package/fs/djs/tokenizer-new/module.f.js +0 -155
- package/fs/media/revision/proof.f.js +0 -119
- package/fs/text/ascii/proof.f.d.ts +0 -4
- package/fs/types/bigfloat/proof.f.js +0 -348
- package/fs/types/nullable/proof.f.js +0 -50
- package/fs/types/range/module.f.js +0 -2
- package/fs/types/range/proof.f.js +0 -18
- package/fs/types/result/proof.f.js +0 -52
- package/fs/types/string/proof.f.js +0 -118
- package/fs/types/string_set/proof.f.js +0 -82
- /package/{fs → fjs}/asn.1/module.f.d.ts +0 -0
- /package/{fs → fjs}/asn.1/module.f.js +0 -0
- /package/{fs → fjs}/asn.1/proof.f.d.ts +0 -0
- /package/{fs → fjs}/base_n/module.f.d.ts +0 -0
- /package/{fs → fjs}/base_n/module.f.js +0 -0
- /package/{fs → fjs}/base_n/proof.f.d.ts +0 -0
- /package/{fs → fjs}/basen/base128/module.f.d.ts +0 -0
- /package/{fs → fjs}/basen/base128/module.f.js +0 -0
- /package/{fs → fjs}/basen/base128/proof.f.d.ts +0 -0
- /package/{fs → fjs}/basen/base128/proof.f.js +0 -0
- /package/{fs → fjs}/basen/base64/module.f.d.ts +0 -0
- /package/{fs → fjs}/basen/base64/module.f.js +0 -0
- /package/{fs → fjs}/basen/cbase32/module.f.d.ts +0 -0
- /package/{fs → fjs}/basen/cbase32/module.f.js +0 -0
- /package/{fs → fjs}/basen/cbase32/proof.f.d.ts +0 -0
- /package/{fs → fjs}/bnf/proof.f.d.ts +0 -0
- /package/{fs → fjs}/bnf/testlib.f.d.ts +0 -0
- /package/{fs → fjs}/cas/cli/module.f.d.ts +0 -0
- /package/{fs → fjs}/cas/cli/module.f.js +0 -0
- /package/{fs → fjs}/ci/bun/module.f.d.ts +0 -0
- /package/{fs → fjs}/ci/bun/module.f.js +0 -0
- /package/{fs → fjs}/ci/common/module.f.d.ts +0 -0
- /package/{fs → fjs}/ci/common/module.f.js +0 -0
- /package/{fs → fjs}/ci/deno/module.f.d.ts +0 -0
- /package/{fs → fjs}/ci/deno/module.f.js +0 -0
- /package/{fs → fjs}/ci/module.f.d.ts +0 -0
- /package/{fs → fjs}/ci/module.f.js +0 -0
- /package/{fs → fjs}/ci/node/module.f.d.ts +0 -0
- /package/{fs → fjs}/ci/node/module.f.js +0 -0
- /package/{fs → fjs}/ci/playwright/module.f.d.ts +0 -0
- /package/{fs → fjs}/ci/playwright/module.f.js +0 -0
- /package/{fs → fjs}/ci/proof.f.d.ts +0 -0
- /package/{fs → fjs}/ci/rust/module.f.d.ts +0 -0
- /package/{fs → fjs}/cli/module.f.d.ts +0 -0
- /package/{fs → fjs}/cli/module.f.js +0 -0
- /package/{fs → fjs}/cli/proof.f.d.ts +0 -0
- /package/{fs → fjs}/common/monoid/module.f.d.ts +0 -0
- /package/{fs → fjs}/common/monoid/module.f.js +0 -0
- /package/{fs → fjs}/common/monoid/proof.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/hmac/module.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/hmac/module.f.js +0 -0
- /package/{fs → fjs}/crypto/hmac/proof.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/pow/module.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/pow/module.f.js +0 -0
- /package/{fs → fjs}/crypto/pow/proof.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/secp/module.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/secp/module.f.js +0 -0
- /package/{fs → fjs}/crypto/secp/proof.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/sha2/module.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/sha2/module.f.js +0 -0
- /package/{fs → fjs}/crypto/sha2/proof.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/sign/proof.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/vdf/module.f.d.ts +0 -0
- /package/{fs → fjs}/crypto/vdf/module.f.js +0 -0
- /package/{fs → fjs}/crypto/vdf/proof.f.d.ts +0 -0
- /package/{fs → fjs}/dev/module.f.d.ts +0 -0
- /package/{fs → fjs}/dev/module.f.js +0 -0
- /package/{fs → fjs}/dev/package_json/module.f.d.ts +0 -0
- /package/{fs → fjs}/dev/package_json/module.f.js +0 -0
- /package/{fs → fjs}/dev/package_json/proof.f.d.ts +0 -0
- /package/{fs → fjs}/dev/proof.f.d.ts +0 -0
- /package/{fs → fjs}/djs/ast/module.f.d.ts +0 -0
- /package/{fs → fjs}/djs/ast/module.f.js +0 -0
- /package/{fs → fjs}/djs/ast/proof.f.d.ts +0 -0
- /package/{fs → fjs}/djs/examples/input.f.d.ts +0 -0
- /package/{fs → fjs}/djs/examples/input.f.js +0 -0
- /package/{fs → fjs}/djs/examples/m.f.d.ts +0 -0
- /package/{fs → fjs}/djs/examples/m.f.js +0 -0
- /package/{fs → fjs}/djs/module.f.d.ts +0 -0
- /package/{fs → fjs}/djs/module.f.js +0 -0
- /package/{fs → fjs}/djs/parser/proof.f.d.ts +0 -0
- /package/{fs → fjs}/djs/proof.f.d.ts +0 -0
- /package/{fs → fjs}/djs/serializer/module.f.d.ts +0 -0
- /package/{fs → fjs}/djs/serializer/module.f.js +0 -0
- /package/{fs → fjs}/djs/serializer/proof.f.d.ts +0 -0
- /package/{fs → fjs}/djs/transpiler/module.f.d.ts +0 -0
- /package/{fs → fjs}/djs/transpiler/module.f.js +0 -0
- /package/{fs → fjs}/effects/list/module.f.d.ts +0 -0
- /package/{fs → fjs}/effects/list/module.f.js +0 -0
- /package/{fs → fjs}/effects/memory/module.f.d.ts +0 -0
- /package/{fs → fjs}/effects/memory/module.f.js +0 -0
- /package/{fs → fjs}/effects/memory/proof.f.d.ts +0 -0
- /package/{fs → fjs}/effects/mock/module.f.d.ts +0 -0
- /package/{fs → fjs}/effects/mock/module.f.js +0 -0
- /package/{fs → fjs}/effects/module.d.ts +0 -0
- /package/{fs → fjs}/effects/module.f.d.ts +0 -0
- /package/{fs → fjs}/effects/module.f.js +0 -0
- /package/{fs → fjs}/effects/module.js +0 -0
- /package/{fs → fjs}/effects/node/memory/module.d.ts +0 -0
- /package/{fs → fjs}/effects/node/memory/module.js +0 -0
- /package/{fs → fjs}/effects/node/memory/proof.d.ts +0 -0
- /package/{fs → fjs}/effects/node/module.f.js +0 -0
- /package/{fs → fjs}/effects/node/virtual/module.f.d.ts +0 -0
- /package/{fs → fjs}/effects/node/virtual/module.f.js +0 -0
- /package/{fs → fjs}/effects/proof.f.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/all.test.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/all.test.js +0 -0
- /package/{fs → fjs}/emergent_testing/example.f.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/example.f.js +0 -0
- /package/{fs → fjs}/emergent_testing/module.f.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/module.f.js +0 -0
- /package/{fs → fjs}/emergent_testing/proof.f.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/all.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/all.js +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.fail.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.fail.js +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.pass.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/async-subtests.pass.js +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/async.fail.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/async.fail.js +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/async.pass.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/async.pass.js +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/fail.fail.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/fail.fail.js +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/return-value.pass.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/return-value.pass.js +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/thenable.pass.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/thenable.pass.js +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/thenable2.pass.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/thenable2.pass.js +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/throw.pass.d.ts +0 -0
- /package/{fs → fjs}/emergent_testing/scenarios/throw.pass.js +0 -0
- /package/{fs → fjs}/fsc/bnf.f.d.ts +0 -0
- /package/{fs → fjs}/fsc/bnf.f.js +0 -0
- /package/{fs → fjs}/fsc/json.f.d.ts +0 -0
- /package/{fs → fjs}/fsc/json.f.js +0 -0
- /package/{fs → fjs}/fsc/module.f.d.ts +0 -0
- /package/{fs → fjs}/fsc/module.f.js +0 -0
- /package/{fs → fjs}/fsc/proof.f.d.ts +0 -0
- /package/{fs → fjs}/fsm/module.f.d.ts +0 -0
- /package/{fs → fjs}/fsm/module.f.js +0 -0
- /package/{fs → fjs}/fsm/proof.f.d.ts +0 -0
- /package/{fs → fjs}/js/tokenizer/module.f.d.ts +0 -0
- /package/{fs → fjs}/js/tokenizer/module.f.js +0 -0
- /package/{fs → fjs}/js/tokenizer/proof.f.d.ts +0 -0
- /package/{fs → fjs}/js/tokenizer/proof.f.js +0 -0
- /package/{fs → fjs}/mcp/proof.f.d.ts +0 -0
- /package/{fs → fjs}/mcp/stdio/proof.f.d.ts +0 -0
- /package/{fs → fjs}/mcp/stdio/proof.f.js +0 -0
- /package/{fs → fjs}/media/html/module.f.d.ts +0 -0
- /package/{fs → fjs}/media/html/module.f.js +0 -0
- /package/{fs → fjs}/media/html/proof.f.d.ts +0 -0
- /package/{fs → fjs}/media/json/module.f.d.ts +0 -0
- /package/{fs → fjs}/media/json/module.f.js +0 -0
- /package/{fs → fjs}/media/json/parser/proof.f.d.ts +0 -0
- /package/{fs → fjs}/media/json/proof.f.d.ts +0 -0
- /package/{fs → fjs}/media/json/proof.f.js +0 -0
- /package/{fs → fjs}/media/json/rpc/module.f.d.ts +0 -0
- /package/{fs → fjs}/media/json/rpc/proof.f.d.ts +0 -0
- /package/{fs → fjs}/media/json/rpc/proof.f.js +0 -0
- /package/{fs → fjs}/media/json/schema/proof.f.d.ts +0 -0
- /package/{fs → fjs}/media/json/serializer/module.f.d.ts +0 -0
- /package/{fs → fjs}/media/json/serializer/module.f.js +0 -0
- /package/{fs → fjs}/media/json/serializer/proof.f.d.ts +0 -0
- /package/{fs → fjs}/media/json/tokenizer/module.f.d.ts +0 -0
- /package/{fs → fjs}/media/json/tokenizer/module.f.js +0 -0
- /package/{fs → fjs}/media/json/tokenizer/proof.f.d.ts +0 -0
- /package/{fs → fjs}/media/json/tokenizer/proof.f.js +0 -0
- /package/{fs → fjs}/media/proof.f.d.ts +0 -0
- /package/{fs → fjs}/media/type/module.f.d.ts +0 -0
- /package/{fs → fjs}/media/type/module.f.js +0 -0
- /package/{fs → fjs}/media/type/proof.f.d.ts +0 -0
- /package/{fs → fjs}/module.d.ts +0 -0
- /package/{fs → fjs}/module.f.d.ts +0 -0
- /package/{fs → fjs}/module.js +0 -0
- /package/{fs → fjs}/path/module.f.d.ts +0 -0
- /package/{fs → fjs}/path/module.f.js +0 -0
- /package/{fs → fjs}/path/proof.f.d.ts +0 -0
- /package/{fs → fjs}/proof.f.d.ts +0 -0
- /package/{fs → fjs}/sul/id/module.f.d.ts +0 -0
- /package/{fs → fjs}/sul/id/module.f.js +0 -0
- /package/{fs → fjs}/sul/id/proof.f.d.ts +0 -0
- /package/{fs → fjs}/sul/level/hash/module.f.d.ts +0 -0
- /package/{fs → fjs}/sul/level/hash/module.f.js +0 -0
- /package/{fs → fjs}/sul/level/hash/proof.f.d.ts +0 -0
- /package/{fs → fjs}/sul/level/literal/module.f.d.ts +0 -0
- /package/{fs → fjs}/sul/level/literal/module.f.js +0 -0
- /package/{fs → fjs}/sul/level/literal/proof.f.d.ts +0 -0
- /package/{fs → fjs}/sul/module.f.d.ts +0 -0
- /package/{fs → fjs}/sul/module.f.js +0 -0
- /package/{fs → fjs}/sul/proof.f.d.ts +0 -0
- /package/{fs → fjs}/sul/proof.f.js +0 -0
- /package/{fs → fjs}/text/ascii/module.f.d.ts +0 -0
- /package/{fs → fjs}/text/ascii/module.f.js +0 -0
- /package/{fs → fjs}/text/code_point/module.f.d.ts +0 -0
- /package/{fs → fjs}/text/code_point/proof.f.d.ts +0 -0
- /package/{fs → fjs}/text/code_point/proof.f.js +0 -0
- /package/{fs → fjs}/text/module.f.d.ts +0 -0
- /package/{fs → fjs}/text/module.f.js +0 -0
- /package/{fs → fjs}/text/proof.f.d.ts +0 -0
- /package/{fs → fjs}/text/sgr/module.f.d.ts +0 -0
- /package/{fs → fjs}/text/sgr/module.f.js +0 -0
- /package/{fs → fjs}/text/sgr/proof.f.d.ts +0 -0
- /package/{fs → fjs}/text/utf16/module.f.d.ts +0 -0
- /package/{fs → fjs}/text/utf16/proof.f.d.ts +0 -0
- /package/{fs → fjs}/text/utf8/module.f.d.ts +0 -0
- /package/{fs → fjs}/text/utf8/module.f.js +0 -0
- /package/{fs → fjs}/text/utf8/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/array/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/array/module.f.js +0 -0
- /package/{fs → fjs}/types/array/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/bigfloat/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/bigfloat/module.f.js +0 -0
- /package/{fs → fjs}/types/bigfloat/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/bigint/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/bigint/module.f.js +0 -0
- /package/{fs → fjs}/types/bigint/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/bit_vec/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/bit_vec/module.f.js +0 -0
- /package/{fs → fjs}/types/bit_vec/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/btree/find/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/btree/find/module.f.js +0 -0
- /package/{fs → fjs}/types/btree/find/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/btree/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/btree/module.f.js +0 -0
- /package/{fs → fjs}/types/btree/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/btree/remove/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/btree/remove/module.f.js +0 -0
- /package/{fs → fjs}/types/btree/set/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/btree/set/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/btree/types/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/btree/types/module.f.js +0 -0
- /package/{fs → fjs}/types/byte_set/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/byte_set/module.f.js +0 -0
- /package/{fs → fjs}/types/byte_set/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/function/compare/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/function/compare/module.f.js +0 -0
- /package/{fs → fjs}/types/function/compare/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/function/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/function/module.f.js +0 -0
- /package/{fs → fjs}/types/function/operator/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/function/operator/module.f.js +0 -0
- /package/{fs → fjs}/types/function/operator/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/function/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/list/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/list/module.f.js +0 -0
- /package/{fs → fjs}/types/list/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/map/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/map/module.f.js +0 -0
- /package/{fs → fjs}/types/map/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/nibble_set/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/nibble_set/module.f.js +0 -0
- /package/{fs → fjs}/types/nibble_set/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/nominal/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/nominal/module.f.js +0 -0
- /package/{fs → fjs}/types/nominal/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/nullable/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/nullable/module.f.js +0 -0
- /package/{fs → fjs}/types/nullable/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/number/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/number/module.f.js +0 -0
- /package/{fs → fjs}/types/number/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/object/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/object/module.f.js +0 -0
- /package/{fs → fjs}/types/object/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/option/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/option/module.f.js +0 -0
- /package/{fs → fjs}/types/ordered_map/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/ordered_map/module.f.js +0 -0
- /package/{fs → fjs}/types/ordered_map/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/ordered_map/proof.f.js +0 -0
- /package/{fs → fjs}/types/patricia_trie/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/patricia_trie/module.f.js +0 -0
- /package/{fs → fjs}/types/patricia_trie/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/phantom/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/phantom/module.f.js +0 -0
- /package/{fs → fjs}/types/prime_field/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/prime_field/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/prime_field/proof.f.js +0 -0
- /package/{fs → fjs}/types/range/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/range_map/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/range_map/module.f.js +0 -0
- /package/{fs → fjs}/types/range_map/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/result/module.d.ts +0 -0
- /package/{fs → fjs}/types/result/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/result/module.f.js +0 -0
- /package/{fs → fjs}/types/result/module.js +0 -0
- /package/{fs → fjs}/types/rtti/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/rtti/module.f.js +0 -0
- /package/{fs → fjs}/types/rtti/parse/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/rtti/parse/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/rtti/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/rtti/proof.f.js +0 -0
- /package/{fs → fjs}/types/rtti/ts/module.f.js +0 -0
- /package/{fs → fjs}/types/rtti/ts/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/rtti/ts/proof.f.js +0 -0
- /package/{fs → fjs}/types/rtti/validate/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/rtti/validate/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/sorted_list/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/sorted_list/module.f.js +0 -0
- /package/{fs → fjs}/types/sorted_list/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/sorted_set/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/sorted_set/module.f.js +0 -0
- /package/{fs → fjs}/types/sorted_set/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/string/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/string/module.f.js +0 -0
- /package/{fs → fjs}/types/string/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/string_set/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/string_set/module.f.js +0 -0
- /package/{fs → fjs}/types/string_set/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/ts/module.f.d.ts +0 -0
- /package/{fs → fjs}/types/ts/module.f.js +0 -0
- /package/{fs → fjs}/types/ts/proof.f.d.ts +0 -0
- /package/{fs → fjs}/types/uint8array/module.f.d.ts +0 -0
- /package/{fs → fjs}/website/module.f.d.ts +0 -0
- /package/{fs → fjs}/website/module.f.js +0 -0
- /package/{fs → fjs}/website/proof.f.d.ts +0 -0
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import { main } from './module.f.js';
|
|
2
2
|
import { emptyState, virtual } from '../effects/node/virtual/module.f.js';
|
|
3
|
-
import {
|
|
3
|
+
import { assertEq, assertNotNullish } from '../asserts/module.f.js';
|
|
4
4
|
export const proof = {
|
|
5
5
|
main: () => {
|
|
6
|
-
|
|
7
|
-
if (program === undefined) {
|
|
8
|
-
throw 'expected a program effect';
|
|
9
|
-
}
|
|
6
|
+
assertNotNullish(main(), 'expected a program effect');
|
|
10
7
|
},
|
|
11
8
|
run: () => {
|
|
12
9
|
const state = { ...emptyState, root: { '.github': { workflows: {} } } };
|
|
13
10
|
const [_, result] = virtual(state)(main());
|
|
14
|
-
|
|
11
|
+
assertEq(result, 0);
|
|
15
12
|
},
|
|
16
13
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "functionalscript",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.38.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"files": [
|
|
6
6
|
"**/*.js",
|
|
@@ -9,19 +9,19 @@
|
|
|
9
9
|
"description": "FunctionalScript is a purely functional subset of JavaScript",
|
|
10
10
|
"scripts": {
|
|
11
11
|
"prepack": "tsc --NoEmit false",
|
|
12
|
-
"test": "tsc && node ./
|
|
12
|
+
"test": "tsc && node ./fjs/module.ts t",
|
|
13
13
|
"cov": "node --test --experimental-test-coverage --test-coverage-include=**/module.f.ts",
|
|
14
|
-
"start": "node ./
|
|
15
|
-
"ci-update": "node ./
|
|
14
|
+
"start": "node ./fjs/module.ts",
|
|
15
|
+
"ci-update": "node ./fjs/module.ts ci",
|
|
16
16
|
"update": "npx npm-check-updates -u && npm install && deno install && bun install && npm run ci-update",
|
|
17
|
-
"index-html": "node ./
|
|
17
|
+
"index-html": "node ./fjs/module.ts r ./fjs/website/module.f.ts",
|
|
18
18
|
"website": "npm run prepack && npm run index-html"
|
|
19
19
|
},
|
|
20
20
|
"engines": {
|
|
21
21
|
"node": ">=22"
|
|
22
22
|
},
|
|
23
23
|
"bin": {
|
|
24
|
-
"fjs": "
|
|
24
|
+
"fjs": "fjs/module.js"
|
|
25
25
|
},
|
|
26
26
|
"repository": {
|
|
27
27
|
"type": "git",
|
package/fs/asserts/module.f.d.ts
DELETED
package/fs/asserts/module.f.js
DELETED
package/fs/asserts/proof.f.d.ts
DELETED
package/fs/asserts/proof.f.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { assert, assertEq, todo } from './module.f.js';
|
|
2
|
-
const throws = (f, expected) => {
|
|
3
|
-
let caught = false;
|
|
4
|
-
try {
|
|
5
|
-
f();
|
|
6
|
-
}
|
|
7
|
-
catch (e) {
|
|
8
|
-
caught = true;
|
|
9
|
-
if (e !== expected) {
|
|
10
|
-
throw ['unexpected throw value', e];
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
if (!caught) {
|
|
14
|
-
throw 'expected function to throw but it did not';
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
export const proof = {
|
|
18
|
-
assertPassesOnTrue: () => {
|
|
19
|
-
assert(true);
|
|
20
|
-
assert(true, 'with message');
|
|
21
|
-
},
|
|
22
|
-
assertThrowsDefaultMsg: () => {
|
|
23
|
-
throws(() => assert(false), 'assertion failed');
|
|
24
|
-
},
|
|
25
|
-
assertThrowsCustomMsg: () => {
|
|
26
|
-
throws(() => assert(false, 'oops'), 'oops');
|
|
27
|
-
},
|
|
28
|
-
assertEqPassesOnEqual: () => {
|
|
29
|
-
assertEq(1, 1);
|
|
30
|
-
assertEq('x', 'x');
|
|
31
|
-
},
|
|
32
|
-
assertEqThrowsOnUnequal: () => {
|
|
33
|
-
let caught = false;
|
|
34
|
-
try {
|
|
35
|
-
assertEq(1, 2);
|
|
36
|
-
}
|
|
37
|
-
catch (e) {
|
|
38
|
-
caught = true;
|
|
39
|
-
const arr = e;
|
|
40
|
-
if (arr[0] !== 1 || arr[1] !== 2) {
|
|
41
|
-
throw ['wrong throw value', e];
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
if (!caught) {
|
|
45
|
-
throw 'expected assertEq to throw';
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
todoThrows: () => {
|
|
49
|
-
throws(() => todo(), 'not implemented');
|
|
50
|
-
},
|
|
51
|
-
};
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { type Rule as FRule } from '../module.f.ts';
|
|
2
|
-
import { type StringMap } from '../../types/object/module.f.ts';
|
|
3
|
-
/**
|
|
4
|
-
* Encoded terminal range value used by BNF data rules.
|
|
5
|
-
*
|
|
6
|
-
* The same as the functional TerminalRange.
|
|
7
|
-
*/
|
|
8
|
-
export type TerminalRange = number;
|
|
9
|
-
/**
|
|
10
|
-
* Ordered list of grammar rule names.
|
|
11
|
-
*/
|
|
12
|
-
export type Sequence = readonly string[];
|
|
13
|
-
/** A variant of rule names. */
|
|
14
|
-
export type Variant = StringMap<string, string>;
|
|
15
|
-
/**
|
|
16
|
-
* Grammar rule definition.
|
|
17
|
-
*
|
|
18
|
-
* It can be one of:
|
|
19
|
-
* - a tagged variant map,
|
|
20
|
-
* - a sequence of referenced rule names,
|
|
21
|
-
* - an encoded terminal range.
|
|
22
|
-
*/
|
|
23
|
-
export type Rule = Variant | Sequence | TerminalRange;
|
|
24
|
-
/** The full grammar */
|
|
25
|
-
export type RuleSet = Readonly<Record<string, Rule>>;
|
|
26
|
-
/**
|
|
27
|
-
* Converts a functional grammar rule into serializable BNF data and returns
|
|
28
|
-
* the generated rule set with the entry rule identifier.
|
|
29
|
-
*/
|
|
30
|
-
export declare const toData: (fr: FRule) => readonly [RuleSet, string];
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Recursive descent matcher backend over the BNF data {@link RuleSet}.
|
|
3
|
-
*
|
|
4
|
-
* Built from the serializable IR in `fs/bnf/data`, this is a sibling of the
|
|
5
|
-
* LL(1) dispatch builder (`fs/bnf/ll1`). It walks the grammar by recursive
|
|
6
|
-
* descent and preserves per-code-point metadata, producing a metadata-aware
|
|
7
|
-
* AST ({@link AstRuleMeta}). It also exposes {@link createEmptyTagMap}, which
|
|
8
|
-
* records whether each rule can match the empty input.
|
|
9
|
-
*
|
|
10
|
-
* @module
|
|
11
|
-
*/
|
|
12
|
-
import {} from '../../text/utf16/module.f.js';
|
|
13
|
-
import { rangeDecode } from '../module.f.js';
|
|
14
|
-
import { contains as rangeContains } from '../../types/range/module.f.js';
|
|
15
|
-
import { definedEntries } from '../../types/object/module.f.js';
|
|
16
|
-
import { toData } from '../data/module.f.js';
|
|
17
|
-
import {} from '../module.f.js';
|
|
18
|
-
const emptyTagMapAdd = (ruleSet) => (map) => (name) => {
|
|
19
|
-
if (name in map) {
|
|
20
|
-
return [ruleSet, map, map[name]];
|
|
21
|
-
}
|
|
22
|
-
const rule = ruleSet[name];
|
|
23
|
-
if (typeof rule === 'number') {
|
|
24
|
-
return [ruleSet, { ...map, [name]: false }, false];
|
|
25
|
-
}
|
|
26
|
-
else if (rule instanceof Array) {
|
|
27
|
-
map = { ...map, [name]: true };
|
|
28
|
-
let emptyTag = rule.length == 0;
|
|
29
|
-
for (const item of rule) {
|
|
30
|
-
const [, newMap, itemEmptyTag] = emptyTagMapAdd(ruleSet)(map)(item);
|
|
31
|
-
map = newMap;
|
|
32
|
-
if (emptyTag === false) {
|
|
33
|
-
emptyTag = itemEmptyTag !== false;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return [ruleSet, { ...map, [name]: emptyTag }, emptyTag];
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
map = { ...map, [name]: true };
|
|
40
|
-
const entries = definedEntries(rule);
|
|
41
|
-
let emptyTag = false;
|
|
42
|
-
for (const [tag, item] of entries) {
|
|
43
|
-
const [, newMap, itemEmptyTag] = emptyTagMapAdd(ruleSet)(map)(item);
|
|
44
|
-
map = newMap;
|
|
45
|
-
if (itemEmptyTag !== false) {
|
|
46
|
-
emptyTag = tag;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return [ruleSet, { ...map, [name]: emptyTag }, emptyTag];
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* Creates a map that describes whether each rule can consume empty input and,
|
|
54
|
-
* for tagged variants, which tag represents the empty match.
|
|
55
|
-
*/
|
|
56
|
-
export const createEmptyTagMap = (data) => {
|
|
57
|
-
return emptyTagMapAdd(data[0])({})(data[1])[1];
|
|
58
|
-
};
|
|
59
|
-
/**
|
|
60
|
-
* Creates a recursive descent parser that preserves metadata for each consumed
|
|
61
|
-
* code point.
|
|
62
|
-
*/
|
|
63
|
-
export const descentParser = (fr) => {
|
|
64
|
-
const data = toData(fr);
|
|
65
|
-
const emptyTagMap = createEmptyTagMap(data);
|
|
66
|
-
const getEmptyTag = (name) => {
|
|
67
|
-
const res = emptyTagMap[name];
|
|
68
|
-
return res === false ? undefined : res;
|
|
69
|
-
};
|
|
70
|
-
const f = (name, tag, cp, idx) => {
|
|
71
|
-
const mrSuccess = (tag, sequence, idx) => [{ tag, sequence }, true, idx];
|
|
72
|
-
const mrFail = (tag, sequence, idx) => [{ tag, sequence }, false, idx];
|
|
73
|
-
const rule = data[0][name];
|
|
74
|
-
if (typeof rule === 'number') {
|
|
75
|
-
const emptyTag = getEmptyTag(name);
|
|
76
|
-
if (idx >= cp.length) {
|
|
77
|
-
return emptyTag === undefined ? mrFail(emptyTag, [], idx) : mrSuccess(emptyTag, [], idx);
|
|
78
|
-
}
|
|
79
|
-
const cpi = cp[idx];
|
|
80
|
-
const range = rangeDecode(rule);
|
|
81
|
-
if (rangeContains(range)(cpi[0])) {
|
|
82
|
-
return mrSuccess(tag, [cpi], idx + 1);
|
|
83
|
-
}
|
|
84
|
-
return mrFail(emptyTag, [], idx);
|
|
85
|
-
}
|
|
86
|
-
else if (rule instanceof Array) {
|
|
87
|
-
let seq = [];
|
|
88
|
-
let tidx = idx;
|
|
89
|
-
for (const item of rule) {
|
|
90
|
-
const m = f(item, undefined, cp, tidx);
|
|
91
|
-
const [astRule, success, nidx] = m;
|
|
92
|
-
tidx = nidx;
|
|
93
|
-
if (success === false) {
|
|
94
|
-
return mrFail(tag, [], idx);
|
|
95
|
-
}
|
|
96
|
-
seq = [...seq, astRule];
|
|
97
|
-
}
|
|
98
|
-
return mrSuccess(tag, seq, tidx);
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
const entries = definedEntries(rule);
|
|
102
|
-
const emptyTag = getEmptyTag(name);
|
|
103
|
-
let emptyResult = mrFail(emptyTag, [], idx);
|
|
104
|
-
for (const [tag, item] of entries) {
|
|
105
|
-
const m = f(item, tag, cp, idx);
|
|
106
|
-
if (m[1]) {
|
|
107
|
-
if (idx !== m[2])
|
|
108
|
-
return m;
|
|
109
|
-
emptyResult = m;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
return emptyResult;
|
|
113
|
-
}
|
|
114
|
-
};
|
|
115
|
-
const match = (name, cp) => {
|
|
116
|
-
return f(name, undefined, cp, 0);
|
|
117
|
-
};
|
|
118
|
-
return match;
|
|
119
|
-
};
|
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/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
|
-
};
|
|
@@ -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>;
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { empty, flat, map, stateScan } from '../../types/list/module.f.js';
|
|
2
|
-
import { multiply } from '../../types/bigfloat/module.f.js';
|
|
3
|
-
import * as jsTokenizer from '../../js/tokenizer/module.f.js';
|
|
4
|
-
const mapToken = input => {
|
|
5
|
-
switch (input.kind) {
|
|
6
|
-
case 'id':
|
|
7
|
-
case 'bigint':
|
|
8
|
-
case '{':
|
|
9
|
-
case '}':
|
|
10
|
-
case ':':
|
|
11
|
-
case ',':
|
|
12
|
-
case '[':
|
|
13
|
-
case ']':
|
|
14
|
-
case '.':
|
|
15
|
-
case '=':
|
|
16
|
-
case 'true':
|
|
17
|
-
case 'false':
|
|
18
|
-
case 'null':
|
|
19
|
-
case 'string':
|
|
20
|
-
case 'number':
|
|
21
|
-
case 'ws':
|
|
22
|
-
case 'nl':
|
|
23
|
-
case 'undefined':
|
|
24
|
-
case '//':
|
|
25
|
-
case '/*':
|
|
26
|
-
case 'eof':
|
|
27
|
-
case 'error': return [input];
|
|
28
|
-
default: return jsTokenizer.isKeywordToken(input) ? [{ kind: 'id', value: input.kind }] : [{ kind: 'error', message: 'invalid token' }];
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
const parseDefaultState = input => {
|
|
32
|
-
switch (input.kind) {
|
|
33
|
-
case 'eof': return [[{ kind: 'eof' }], { kind: 'def' }];
|
|
34
|
-
case '-': return [empty, { kind: '-' }];
|
|
35
|
-
default: return [mapToken(input), { kind: 'def' }];
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
const parseMinusState = input => {
|
|
39
|
-
switch (input.kind) {
|
|
40
|
-
case 'eof': return [[{ kind: 'error', message: 'invalid token' }, { kind: 'eof' }], { kind: 'def' }];
|
|
41
|
-
case '-': return [[{ kind: 'error', message: 'invalid token' }], { kind: '-' }];
|
|
42
|
-
case 'bigint': return [[{ kind: 'bigint', value: -1n * input.value }], { kind: 'def' }];
|
|
43
|
-
case 'number': return [[{ kind: 'number', bf: multiply(input.bf)(-1n), value: `-${input.value}` }], { kind: 'def' }];
|
|
44
|
-
default: return [{ first: { kind: 'error', message: 'invalid token' }, tail: mapToken(input) }, { kind: 'def' }];
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
const scanToken = (input, state) => {
|
|
48
|
-
switch (state.kind) {
|
|
49
|
-
case '-': return parseMinusState(input);
|
|
50
|
-
default: return parseDefaultState(input);
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
const mapTokenWithMetadata = metadata => token => { return { token, metadata }; };
|
|
54
|
-
const scanTokenWithMetadata = (input, state) => {
|
|
55
|
-
const [djsTokens, newState] = scanToken(input.token, state);
|
|
56
|
-
const djsTokensWithMetadata = map(mapTokenWithMetadata(input.metadata))(djsTokens);
|
|
57
|
-
return [djsTokensWithMetadata, newState];
|
|
58
|
-
};
|
|
59
|
-
export const tokenize = input => path => {
|
|
60
|
-
const jsTokens = jsTokenizer.tokenize(input)(path);
|
|
61
|
-
return flat(stateScan(scanTokenWithMetadata)({ kind: 'def' })(jsTokens));
|
|
62
|
-
};
|