functionalscript 0.37.0 → 0.39.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/fjs/bnf/token_symbol/module.f.d.ts +38 -0
- package/fjs/bnf/token_symbol/module.f.js +48 -0
- package/fjs/bnf/token_symbol/proof.f.d.ts +10 -0
- package/fjs/bnf/token_symbol/proof.f.js +37 -0
- package/{fs → fjs}/cas/cli/module.f.js +6 -9
- 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 +27 -0
- package/fjs/cas/evo/mcp/module.f.js +94 -0
- package/fjs/cas/evo/mcp/proof.f.d.ts +11 -0
- package/fjs/cas/evo/mcp/proof.f.js +126 -0
- package/fjs/cas/evo/module.f.d.ts +202 -0
- package/fjs/cas/evo/module.f.js +421 -0
- package/fjs/cas/evo/proof.f.d.ts +39 -0
- package/fjs/cas/evo/proof.f.js +572 -0
- package/fjs/cas/mcp/module.f.d.ts +49 -0
- package/{fs → fjs}/cas/mcp/module.f.js +61 -81
- package/{fs → fjs}/cas/mcp/proof.f.d.ts +4 -1
- package/{fs → fjs}/cas/mcp/proof.f.js +45 -17
- package/{fs → fjs}/cas/module.f.d.ts +10 -0
- package/{fs → fjs}/cas/module.f.js +89 -36
- package/fjs/cas/proof.f.d.ts +18 -0
- package/fjs/cas/proof.f.js +305 -0
- package/{fs → fjs}/ci/bun/module.f.js +3 -3
- package/{fs → fjs}/ci/common/module.f.d.ts +1 -2
- package/{fs → fjs}/ci/common/module.f.js +1 -5
- package/{fs → fjs}/ci/config/module.f.d.ts +8 -8
- package/{fs → fjs}/ci/config/module.f.js +8 -8
- package/{fs → fjs}/ci/deno/module.f.js +3 -3
- package/{fs → fjs}/ci/module.f.js +3 -4
- package/{fs → fjs}/ci/node/module.f.js +11 -9
- package/{fs → fjs}/ci/proof.f.js +16 -9
- package/{fs → fjs}/ci/rust/module.f.js +9 -1
- package/{fs → fjs}/cli/module.f.js +2 -2
- package/{fs → fjs}/cli/proof.f.js +22 -63
- package/{fs → fjs}/common/monoid/module.f.d.ts +46 -2
- package/fjs/common/monoid/module.f.js +88 -0
- package/fjs/common/monoid/proof.f.d.ts +9 -0
- package/fjs/common/monoid/proof.f.js +48 -0
- 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/module.f.js +25 -25
- 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/module.f.js +5 -8
- package/{fs → fjs}/djs/parser/module.f.d.ts +8 -0
- package/{fs → fjs}/djs/parser/module.f.js +37 -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/module.f.js +6 -6
- package/{fs → fjs}/djs/transpiler/proof.f.d.ts +3 -0
- package/{fs → fjs}/djs/transpiler/proof.f.js +29 -30
- package/fjs/effects/eff/module.f.d.ts +72 -0
- package/fjs/effects/eff/module.f.js +46 -0
- package/fjs/effects/eff/proof.f.d.ts +11 -0
- package/fjs/effects/eff/proof.f.js +58 -0
- package/{fs → fjs}/effects/list/module.f.d.ts +11 -5
- package/{fs → fjs}/effects/list/module.f.js +2 -1
- package/{fs → fjs}/effects/memory/proof.f.js +15 -29
- package/fjs/effects/module.f.d.ts +388 -0
- package/fjs/effects/module.f.js +288 -0
- package/{fs → fjs}/effects/node/memory/proof.js +7 -13
- package/{fs → fjs}/effects/node/module.d.ts +1 -1
- package/{fs → fjs}/effects/node/module.f.d.ts +2 -2
- package/{fs → fjs}/effects/node/module.f.js +9 -11
- 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 +121 -299
- package/{fs → fjs}/effects/node/virtual/proof.f.d.ts +1 -0
- package/{fs → fjs}/effects/node/virtual/proof.f.js +36 -29
- package/fjs/effects/proof.f.d.ts +51 -0
- package/fjs/effects/proof.f.js +178 -0
- package/{fs → fjs}/emergent_testing/module.f.js +55 -39
- package/{fs → fjs}/emergent_testing/proof.f.d.ts +4 -0
- package/{fs → fjs}/emergent_testing/proof.f.js +60 -27
- 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 +17 -10
- package/{fs → fjs}/mcp/proof.f.js +17 -16
- package/{fs → fjs}/mcp/stdio/module.f.d.ts +4 -4
- package/{fs → fjs}/mcp/stdio/module.f.js +14 -14
- 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/module.f.js +2 -2
- package/{fs → fjs}/media/type/proof.f.js +8 -15
- package/{fs → fjs}/module.f.js +5 -9
- 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/module.f.js +4 -3
- package/{fs → fjs}/types/bigint/proof.f.js +49 -145
- package/{fs → fjs}/types/bit_vec/module.f.js +5 -15
- 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/module.f.d.ts +5 -0
- package/{fs → fjs}/types/btree/remove/module.f.js +12 -0
- 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/module.f.d.ts +21 -0
- package/{fs → fjs}/types/list/module.f.js +17 -0
- package/{fs → fjs}/types/list/proof.f.d.ts +1 -0
- package/{fs → fjs}/types/list/proof.f.js +79 -164
- 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/module.f.js +2 -1
- 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/{fs → fjs}/types/string/module.f.js +10 -2
- 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/module.f.js +2 -3
- package/{fs → fjs}/website/proof.f.js +3 -6
- 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/proof.f.d.ts +0 -20
- package/fs/cas/proof.f.js +0 -294
- package/fs/common/monoid/module.f.js +0 -44
- package/fs/common/monoid/proof.f.d.ts +0 -4
- package/fs/common/monoid/proof.f.js +0 -27
- 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/effects/module.f.d.ts +0 -106
- package/fs/effects/module.f.js +0 -80
- package/fs/effects/proof.f.d.ts +0 -25
- package/fs/effects/proof.f.js +0 -115
- 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}/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/node/module.f.d.ts +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/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/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/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}/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.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/virtual/module.f.d.ts +0 -0
- /package/{fs → fjs}/effects/node/virtual/module.f.js +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/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/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/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/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/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/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/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/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/proof.f.d.ts +0 -0
|
@@ -2,30 +2,30 @@
|
|
|
2
2
|
* Conversions between `Uint8Array` values and bit vectors.
|
|
3
3
|
*
|
|
4
4
|
* @deprecated FunctionalScript represents byte data as `bigint`-based bit
|
|
5
|
-
* vectors (`Vec` from `
|
|
6
|
-
* `
|
|
5
|
+
* vectors (`Vec` from `fjs/types/bit_vec`). Use `utf8`/`utf8ToString` from
|
|
6
|
+
* `fjs/text` for string encoding, and the `bit_vec` module directly for raw
|
|
7
7
|
* byte manipulation. `Uint8Array` interop belongs at Node.js boundaries only
|
|
8
8
|
* (e.g. `fromVec`/`toVec` when reading or writing files).
|
|
9
9
|
*
|
|
10
10
|
* @module
|
|
11
11
|
*/
|
|
12
|
+
import { assert, assertNotNullish } from '../../asserts/module.f.js';
|
|
12
13
|
import { utf8, utf8ToString } from '../../text/module.f.js';
|
|
13
|
-
import { maxLengthBytes, msb, u8List, u8ListToVec } from '../bit_vec/module.f.js';
|
|
14
|
+
import { maxLengthBytes, msb, tryU8ListToVec, u8List, u8ListToVec } from '../bit_vec/module.f.js';
|
|
14
15
|
import { compose } from '../function/module.f.js';
|
|
15
16
|
import { flat, fromArrayLike, iterable, map } from '../list/module.f.js';
|
|
16
17
|
const u8ListToVecMsb = u8ListToVec(msb);
|
|
18
|
+
const tryU8ListToVecMsb = tryU8ListToVec(msb);
|
|
17
19
|
const u8ListMsb = u8List(msb);
|
|
18
20
|
/**
|
|
19
21
|
* Converts a Uint8Array into an MSB-first bit vector.
|
|
20
22
|
*/
|
|
21
23
|
export const toVec = (input) => {
|
|
22
|
-
|
|
23
|
-
throw "the array is too big";
|
|
24
|
-
}
|
|
24
|
+
assert(input.length <= maxLengthBytes, "the array is too big");
|
|
25
25
|
return u8ListToVecMsb(fromArrayLike(input));
|
|
26
26
|
};
|
|
27
27
|
const m = map(fromArrayLike);
|
|
28
|
-
export const listToVec = (input) =>
|
|
28
|
+
export const listToVec = (input) => assertNotNullish(tryU8ListToVecMsb(flat(m(input))), "the array is too big");
|
|
29
29
|
/**
|
|
30
30
|
* Converts an MSB-first bit vector into a Uint8Array.
|
|
31
31
|
*/
|
|
@@ -10,5 +10,8 @@ export declare const proof: {
|
|
|
10
10
|
utf8RoundTrip: () => void;
|
|
11
11
|
listToVec: () => void;
|
|
12
12
|
maxLength: () => import("../bit_vec/module.f.ts").Vec;
|
|
13
|
-
throw:
|
|
13
|
+
throw: {
|
|
14
|
+
toVec: () => import("../bit_vec/module.f.ts").Vec;
|
|
15
|
+
listToVec: () => import("../bit_vec/module.f.ts").Vec;
|
|
16
|
+
};
|
|
14
17
|
};
|
|
@@ -2,15 +2,12 @@ import { maxLength, maxLengthBytes, vec } from '../bit_vec/module.f.js';
|
|
|
2
2
|
import { toVec, fromVec, listToVec, decodeUtf8, encodeUtf8 } from './module.f.js';
|
|
3
3
|
import { strictEqual } from '../function/operator/module.f.js';
|
|
4
4
|
import { equal, fromArrayLike } from '../list/module.f.js';
|
|
5
|
+
import { assert } from '../../asserts/module.f.js';
|
|
5
6
|
const assertEq = (a, b) => {
|
|
6
|
-
|
|
7
|
-
throw [a, b];
|
|
8
|
-
}
|
|
7
|
+
assert(a === b, [a, b]);
|
|
9
8
|
};
|
|
10
9
|
const assertArrayEq = (a, b) => {
|
|
11
|
-
|
|
12
|
-
throw [a, b];
|
|
13
|
-
}
|
|
10
|
+
assert(equal(strictEqual)(fromArrayLike(a))(fromArrayLike(b)), [a, b]);
|
|
14
11
|
};
|
|
15
12
|
export const proof = {
|
|
16
13
|
empty: () => {
|
|
@@ -60,5 +57,8 @@ export const proof = {
|
|
|
60
57
|
assertArrayEq(fromVec(result), Uint8Array.from([1, 2, 3]));
|
|
61
58
|
},
|
|
62
59
|
maxLength: () => toVec(new Uint8Array(Number(maxLengthBytes))),
|
|
63
|
-
throw:
|
|
60
|
+
throw: {
|
|
61
|
+
toVec: () => toVec(new Uint8Array(Number(maxLengthBytes) + 1)),
|
|
62
|
+
listToVec: () => listToVec([new Uint8Array(Number(maxLengthBytes)), Uint8Array.from([0])]),
|
|
63
|
+
},
|
|
64
64
|
};
|
|
@@ -5,11 +5,10 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { htmlUtf8 } from '../media/html/module.f.js';
|
|
7
7
|
import { writeFile } from '../effects/node/module.f.js';
|
|
8
|
-
import { pure } from '../effects/module.f.js';
|
|
8
|
+
import { pure, step } from '../effects/module.f.js';
|
|
9
9
|
const html = htmlUtf8()(['a',
|
|
10
10
|
{ href: 'https://github.com/functionalscript/functionalscript' },
|
|
11
11
|
'GitHub Repository'
|
|
12
12
|
]);
|
|
13
|
-
const program = writeFile('index.html', html)
|
|
14
|
-
.step(() => pure(0));
|
|
13
|
+
const program = step(writeFile('index.html', html), () => pure(0));
|
|
15
14
|
export const main = () => program;
|
|
@@ -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.39.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",
|
|
@@ -43,8 +43,8 @@
|
|
|
43
43
|
},
|
|
44
44
|
"homepage": "https://github.com/functionalscript/functionalscript#readme",
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@playwright/test": "1.
|
|
47
|
-
"@types/node": "26.1.
|
|
46
|
+
"@playwright/test": "1.62.0",
|
|
47
|
+
"@types/node": "26.1.2",
|
|
48
48
|
"typescript": "7.0.2"
|
|
49
49
|
}
|
|
50
50
|
}
|
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/cas/proof.f.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { type FileCasOperation } from './module.f.ts';
|
|
2
|
-
import { type Effect } from '../effects/module.f.ts';
|
|
3
|
-
import { type ReadFile, type WriteFile, type Rm, type Mkdir } from '../effects/node/module.f.ts';
|
|
4
|
-
type TestOp = FileCasOperation | WriteFile | ReadFile | Rm | Mkdir;
|
|
5
|
-
declare const testAddBigFile: () => Effect<TestOp, void>;
|
|
6
|
-
declare const testAddAndGetBigFile: () => Effect<TestOp, void>;
|
|
7
|
-
export declare const proof: {
|
|
8
|
-
addBigFile: typeof testAddBigFile;
|
|
9
|
-
addAndGetBigFile: typeof testAddAndGetBigFile;
|
|
10
|
-
casWriteRead: () => void;
|
|
11
|
-
casReadMissingShard: () => void;
|
|
12
|
-
casWriteMultiChunk: () => void;
|
|
13
|
-
casWriteDedup: () => void;
|
|
14
|
-
casWriteErrorItemAborts: () => void;
|
|
15
|
-
casWriteReadExceedsMaxLength: () => void;
|
|
16
|
-
casWriteGcReclaimsExpired: () => void;
|
|
17
|
-
casUploadSuccess: () => void;
|
|
18
|
-
casUploadFailureKeepsSource: () => void;
|
|
19
|
-
};
|
|
20
|
-
export {};
|