functionalscript 0.44.0 → 0.46.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 +5 -3
- package/fjs/asn.1/module.f.mjs +8 -1
- package/fjs/asn.1/proof.f.d.mts +15 -0
- package/fjs/asn.1/proof.f.mjs +31 -3
- package/fjs/asserts/module.f.d.mts +14 -0
- package/fjs/asserts/module.f.mjs +20 -0
- package/fjs/asserts/proof.f.d.mts +3 -0
- package/fjs/asserts/proof.f.mjs +15 -1
- package/fjs/basen/base128/module.f.mjs +22 -5
- package/fjs/basen/base128/proof.f.d.mts +3 -1
- package/fjs/basen/base128/proof.f.mjs +3 -1
- package/fjs/basen/base64/module.f.mjs +7 -3
- package/fjs/basen/base64/proof.f.d.mts +3 -1
- package/fjs/basen/base64/proof.f.mjs +7 -4
- package/fjs/basen/cbase32/proof.f.d.mts +3 -1
- package/fjs/basen/cbase32/proof.f.mjs +3 -1
- package/fjs/bnf/data/module.f.d.mts +32 -6
- package/fjs/bnf/data/module.f.mjs +112 -7
- package/fjs/bnf/data/proof.f.d.mts +2 -0
- package/fjs/bnf/data/proof.f.mjs +74 -4
- package/fjs/bnf/data/types.d.ts +20 -2
- package/fjs/bnf/descent/module.f.d.mts +34 -5
- package/fjs/bnf/descent/module.f.mjs +176 -54
- package/fjs/bnf/descent/proof.f.d.mts +3 -0
- package/fjs/bnf/descent/proof.f.mjs +189 -27
- package/fjs/bnf/descent/types.d.ts +24 -18
- package/fjs/bnf/ll1/module.f.d.mts +74 -6
- package/fjs/bnf/ll1/module.f.mjs +297 -95
- package/fjs/bnf/ll1/proof.f.d.mts +17 -2
- package/fjs/bnf/ll1/proof.f.mjs +372 -137
- package/fjs/bnf/ll1/types.d.ts +25 -27
- package/fjs/bnf/matcher/module.f.d.mts +66 -0
- package/fjs/bnf/matcher/module.f.mjs +81 -0
- package/fjs/bnf/matcher/proof.f.d.mts +10 -0
- package/fjs/bnf/matcher/proof.f.mjs +79 -0
- package/fjs/bnf/matcher/types.d.ts +54 -0
- package/fjs/bnf/module.f.d.mts +15 -6
- package/fjs/bnf/module.f.mjs +52 -11
- package/fjs/bnf/proof.f.d.mts +2 -0
- package/fjs/bnf/proof.f.mjs +79 -3
- package/fjs/bnf/testlib.f.d.mts +31 -0
- package/fjs/bnf/testlib.f.mjs +80 -0
- package/fjs/bnf/token_symbol/module.f.d.mts +4 -3
- package/fjs/bnf/token_symbol/module.f.mjs +7 -6
- package/fjs/bnf/token_symbol/proof.f.mjs +5 -2
- package/fjs/bnf/token_symbol/types.d.ts +2 -2
- package/fjs/bnf/types.d.ts +10 -3
- package/fjs/cas/cli/module.f.d.mts +1 -1
- package/fjs/cas/cli/module.f.mjs +14 -20
- package/fjs/cas/cli/proof.f.d.mts +4 -4
- package/fjs/cas/cli/proof.f.mjs +47 -34
- package/fjs/cas/evo/module.f.d.mts +71 -31
- package/fjs/cas/evo/module.f.mjs +223 -138
- package/fjs/cas/evo/proof.f.d.mts +10 -1
- package/fjs/cas/evo/proof.f.mjs +311 -226
- package/fjs/cas/evo/types.d.ts +45 -9
- package/fjs/cas/module.f.d.mts +18 -32
- package/fjs/cas/module.f.mjs +164 -176
- package/fjs/cas/proof.f.d.mts +11 -8
- package/fjs/cas/proof.f.mjs +259 -147
- package/fjs/cas/types.d.ts +24 -10
- package/fjs/ci/common/module.f.d.mts +1 -1
- package/fjs/ci/common/module.f.mjs +1 -0
- package/fjs/ci/config/module.f.d.mts +3 -3
- package/fjs/ci/config/module.f.mjs +3 -3
- package/fjs/ci/module.f.d.mts +5 -5
- package/fjs/ci/module.f.mjs +8 -7
- package/fjs/ci/nix/module.f.d.mts +7 -5
- package/fjs/ci/nix/module.f.mjs +13 -12
- package/fjs/ci/nix/proof.f.d.mts +2 -0
- package/fjs/ci/nix/proof.f.mjs +4 -4
- package/fjs/ci/proof.f.d.mts +4 -2
- package/fjs/ci/proof.f.mjs +13 -8
- package/fjs/cli/module.f.d.mts +4 -6
- package/fjs/cli/module.f.mjs +4 -8
- package/fjs/cli/proof.f.d.mts +4 -2
- package/fjs/cli/proof.f.mjs +21 -18
- package/fjs/cli/types.d.ts +2 -3
- package/fjs/common/monoid/module.f.d.mts +70 -12
- package/fjs/common/monoid/module.f.mjs +177 -14
- package/fjs/common/monoid/proof.f.d.mts +12 -1
- package/fjs/common/monoid/proof.f.mjs +88 -4
- package/fjs/common/monoid/types.d.ts +23 -0
- package/fjs/crypto/hmac/module.f.mjs +2 -2
- package/fjs/crypto/secp/proof.f.d.mts +3 -1
- package/fjs/crypto/secp/proof.f.mjs +3 -1
- package/fjs/crypto/sha2/module.f.mjs +3 -1
- package/fjs/crypto/sha2/proof.f.d.mts +4 -1
- package/fjs/crypto/sha2/proof.f.mjs +27 -1
- package/fjs/crypto/sha2/types.d.ts +11 -0
- package/fjs/crypto/sign/module.f.mjs +2 -2
- package/fjs/crypto/vdf/module.f.d.mts +23 -4
- package/fjs/crypto/vdf/module.f.mjs +6 -4
- package/fjs/dev/module.f.d.mts +17 -5
- package/fjs/dev/module.f.mjs +60 -30
- package/fjs/dev/update/module.f.d.mts +11 -3
- package/fjs/dev/update/module.f.mjs +16 -11
- package/fjs/dev/update/proof.f.d.mts +4 -3
- package/fjs/dev/update/proof.f.mjs +11 -7
- package/fjs/djs/module.f.d.mts +13 -5
- package/fjs/djs/module.f.mjs +31 -16
- package/fjs/djs/parser/module.f.d.mts +16 -3
- package/fjs/djs/parser/module.f.mjs +135 -16
- package/fjs/djs/parser/proof.f.d.mts +8 -1
- package/fjs/djs/parser/proof.f.mjs +287 -13
- package/fjs/djs/parser/types.d.ts +7 -1
- package/fjs/djs/proof.f.d.mts +20 -1
- package/fjs/djs/proof.f.mjs +190 -12
- package/fjs/djs/serializer/module.f.d.mts +25 -8
- package/fjs/djs/serializer/module.f.mjs +66 -19
- package/fjs/djs/serializer/proof.f.d.mts +5 -0
- package/fjs/djs/serializer/proof.f.mjs +23 -1
- package/fjs/djs/tokenizer/module.f.d.mts +17 -5
- package/fjs/djs/tokenizer/module.f.mjs +120 -73
- package/fjs/djs/tokenizer/proof.f.d.mts +3 -0
- package/fjs/djs/tokenizer/proof.f.mjs +86 -67
- package/fjs/djs/transpiler/module.f.d.mts +13 -19
- package/fjs/djs/transpiler/module.f.mjs +79 -72
- package/fjs/djs/transpiler/types.d.ts +29 -0
- package/fjs/djs/types.d.ts +7 -1
- package/fjs/effects/list/module.f.d.mts +23 -12
- package/fjs/effects/list/module.f.mjs +16 -12
- package/fjs/effects/list/types.d.ts +27 -7
- package/fjs/effects/memory/module.f.d.mts +6 -3
- package/fjs/effects/memory/module.f.mjs +7 -7
- package/fjs/effects/memory/proof.f.d.mts +4 -0
- package/fjs/effects/memory/proof.f.mjs +18 -9
- package/fjs/effects/memory/types.d.ts +4 -3
- package/fjs/effects/mock/module.f.d.mts +28 -4
- package/fjs/effects/mock/module.f.mjs +39 -5
- package/fjs/effects/mock/types.d.ts +10 -1
- package/fjs/effects/module.d.mts +12 -2
- package/fjs/effects/module.f.d.mts +469 -281
- package/fjs/effects/module.f.mjs +538 -299
- package/fjs/effects/module.mjs +11 -2
- package/fjs/effects/node/memory/module.d.mts +7 -2
- package/fjs/effects/node/memory/module.mjs +9 -5
- package/fjs/effects/node/memory/proof.d.mts +2 -0
- package/fjs/effects/node/memory/proof.mjs +12 -5
- package/fjs/effects/node/module.d.mts +8 -2
- package/fjs/effects/node/module.f.d.mts +183 -43
- package/fjs/effects/node/module.f.mjs +260 -62
- package/fjs/effects/node/module.mjs +61 -50
- package/fjs/effects/node/proof.f.d.mts +28 -2
- package/fjs/effects/node/proof.f.mjs +161 -42
- package/fjs/effects/node/types.d.ts +106 -18
- package/fjs/effects/node/virtual/module.f.d.mts +21 -4
- package/fjs/effects/node/virtual/module.f.mjs +113 -70
- package/fjs/effects/node/virtual/proof.f.d.mts +31 -2
- package/fjs/effects/node/virtual/proof.f.mjs +201 -8
- package/fjs/effects/proof.f.d.mts +69 -34
- package/fjs/effects/proof.f.mjs +413 -130
- package/fjs/effects/types.d.ts +161 -33
- package/fjs/emergent_testing/all.test.d.mts +8 -0
- package/fjs/emergent_testing/all.test.mjs +14 -0
- package/fjs/emergent_testing/module.f.d.mts +22 -10
- package/fjs/emergent_testing/module.f.mjs +119 -85
- package/fjs/emergent_testing/proof.f.d.mts +21 -7
- package/fjs/emergent_testing/proof.f.mjs +169 -35
- package/fjs/emergent_testing/types.d.ts +22 -4
- package/fjs/fsc/bnf.f.d.mts +3 -0
- package/fjs/fsc/bnf.f.mjs +4 -1
- package/fjs/fsc/json.f.d.mts +3 -0
- package/fjs/fsc/json.f.mjs +4 -1
- package/fjs/fsc/module.f.d.mts +9 -0
- package/fjs/fsc/module.f.mjs +5 -3
- package/fjs/fsm/module.f.d.mts +14 -4
- package/fjs/fsm/module.f.mjs +54 -37
- package/fjs/fsm/proof.f.d.mts +5 -0
- package/fjs/fsm/proof.f.mjs +87 -115
- package/fjs/js/keywords/module.f.d.mts +52 -0
- package/fjs/js/keywords/module.f.mjs +72 -0
- package/fjs/{emergent_testing/scenarios/return-value.pass.d.ts → js/keywords/proof.f.d.mts} +1 -1
- package/fjs/js/keywords/proof.f.mjs +13 -0
- package/fjs/js/tokenizer/module.f.d.mts +30 -3
- package/fjs/js/tokenizer/module.f.mjs +161 -211
- package/fjs/js/tokenizer/proof.f.d.mts +1 -0
- package/fjs/js/tokenizer/proof.f.mjs +54 -24
- package/fjs/js/tokenizer/types.d.ts +33 -24
- package/fjs/mcp/cas/module.f.d.mts +1 -6
- package/fjs/mcp/cas/module.f.mjs +55 -51
- package/fjs/mcp/cas/proof.f.d.mts +15 -0
- package/fjs/mcp/cas/proof.f.mjs +174 -0
- package/fjs/mcp/evo/module.f.d.mts +19 -10
- package/fjs/mcp/evo/module.f.mjs +48 -27
- package/fjs/mcp/evo/proof.f.d.mts +6 -1
- package/fjs/mcp/evo/proof.f.mjs +115 -31
- package/fjs/mcp/module.f.d.mts +39 -4
- package/fjs/mcp/module.f.mjs +14 -12
- package/fjs/mcp/proof.f.d.mts +13 -1
- package/fjs/mcp/proof.f.mjs +120 -61
- package/fjs/media/html/module.f.d.mts +12 -0
- package/fjs/media/html/module.f.mjs +7 -5
- package/fjs/media/html/proof.f.d.mts +3 -0
- package/fjs/media/html/proof.f.mjs +4 -1
- package/fjs/media/json/extended/module.f.d.mts +82 -0
- package/fjs/media/json/extended/module.f.mjs +153 -0
- package/fjs/media/json/extended/proof.f.d.mts +42 -0
- package/fjs/media/json/extended/proof.f.mjs +127 -0
- package/fjs/media/json/extended/types.d.ts +23 -0
- package/fjs/media/json/module.f.d.mts +8 -2
- package/fjs/media/json/module.f.mjs +43 -41
- package/fjs/media/json/number/module.f.d.mts +59 -0
- package/fjs/media/json/number/module.f.mjs +136 -0
- package/fjs/media/json/number/proof.f.d.mts +24 -0
- package/fjs/media/json/number/proof.f.mjs +86 -0
- package/fjs/media/json/number/types.d.ts +28 -0
- package/fjs/media/json/parser/module.f.d.mts +25 -13
- package/fjs/media/json/parser/module.f.mjs +133 -72
- package/fjs/media/json/parser/proof.f.d.mts +5 -0
- package/fjs/media/json/parser/proof.f.mjs +31 -1
- package/fjs/media/json/parser/types.d.ts +38 -14
- package/fjs/media/json/rtti/module.f.d.mts +1 -1
- package/fjs/media/json/rtti/module.f.mjs +1 -1
- package/fjs/media/json/rtti/proof.f.d.mts +3 -0
- package/fjs/media/json/rtti/proof.f.mjs +12 -12
- package/fjs/media/json/schema/module.f.d.mts +61 -27
- package/fjs/media/json/schema/module.f.mjs +218 -63
- package/fjs/media/json/schema/proof.f.d.mts +41 -1
- package/fjs/media/json/schema/proof.f.mjs +220 -9
- package/fjs/media/json/serializer/module.f.d.mts +44 -0
- package/fjs/media/json/serializer/module.f.mjs +71 -9
- package/fjs/media/json/tokenizer/module.f.d.mts +8 -0
- package/fjs/media/json/tokenizer/module.f.mjs +31 -8
- package/fjs/media/json/tokenizer/proof.f.d.mts +6 -0
- package/fjs/media/json/tokenizer/proof.f.mjs +62 -21
- package/fjs/media/json/types.d.ts +36 -10
- package/fjs/media/lock/module.f.d.mts +100 -0
- package/fjs/media/lock/module.f.mjs +125 -0
- package/fjs/media/lock/proof.f.d.mts +33 -0
- package/fjs/media/lock/proof.f.mjs +196 -0
- package/fjs/media/lock/types.d.ts +15 -0
- package/fjs/media/module.f.d.mts +6 -5
- package/fjs/media/module.f.mjs +8 -7
- package/fjs/media/nix/module.f.d.mts +13 -0
- package/fjs/media/nix/module.f.mjs +4 -2
- package/fjs/media/nix/proof.f.d.mts +3 -0
- package/fjs/media/nix/proof.f.mjs +4 -1
- package/fjs/media/note/module.f.d.mts +121 -0
- package/fjs/media/note/module.f.mjs +131 -0
- package/fjs/media/note/proof.f.d.mts +29 -0
- package/fjs/media/note/proof.f.mjs +150 -0
- package/fjs/media/note/types.d.ts +10 -0
- package/fjs/media/proof.f.d.mts +4 -1
- package/fjs/media/proof.f.mjs +40 -21
- package/fjs/media/revision/module.f.d.mts +83 -7
- package/fjs/media/revision/module.f.mjs +127 -23
- package/fjs/media/revision/proof.f.d.mts +14 -0
- package/fjs/media/revision/proof.f.mjs +93 -2
- package/fjs/media/revision/types.d.ts +34 -5
- package/fjs/media/type/module.f.d.mts +53 -18
- package/fjs/media/type/module.f.mjs +87 -97
- package/fjs/media/type/proof.f.d.mts +17 -0
- package/fjs/media/type/proof.f.mjs +73 -13
- package/fjs/module.d.mts +5 -0
- package/fjs/module.f.d.mts +8 -0
- package/fjs/module.f.mjs +33 -10
- package/fjs/module.mjs +6 -0
- package/fjs/nanvm/proof.f.mjs +3 -3
- package/fjs/nanvm/rust/module.f.mjs +1 -1
- package/fjs/nanvm/update/module.f.d.mts +4 -4
- package/fjs/nanvm/update/module.f.mjs +8 -9
- package/fjs/nanvm/update/proof.f.mjs +4 -3
- package/fjs/path/module.f.d.mts +8 -0
- package/fjs/path/module.f.mjs +4 -2
- package/fjs/proof.f.d.mts +7 -3
- package/fjs/proof.f.mjs +41 -12
- package/fjs/protocol/json_rpc/module.f.d.mts +3 -3
- package/fjs/protocol/json_rpc/module.f.mjs +10 -7
- package/fjs/protocol/json_rpc/proof.f.d.mts +6 -0
- package/fjs/protocol/json_rpc/proof.f.mjs +26 -5
- package/fjs/protocol/mcp/module.f.d.mts +10 -13
- package/fjs/protocol/mcp/module.f.mjs +74 -58
- package/fjs/protocol/mcp/proof.f.d.mts +16 -3
- package/fjs/protocol/mcp/proof.f.mjs +224 -69
- package/fjs/protocol/mcp/stdio/module.f.d.mts +17 -11
- package/fjs/protocol/mcp/stdio/module.f.mjs +39 -33
- package/fjs/protocol/mcp/stdio/proof.f.d.mts +5 -3
- package/fjs/protocol/mcp/stdio/proof.f.mjs +46 -13
- package/fjs/protocol/mcp/stdio/types.d.ts +14 -0
- package/fjs/protocol/mcp/types.d.ts +17 -6
- package/fjs/sul/id/module.f.d.mts +4 -0
- package/fjs/sul/id/module.f.mjs +6 -6
- package/fjs/sul/level/hash/module.f.d.mts +4 -1
- package/fjs/sul/level/hash/module.f.mjs +6 -4
- package/fjs/sul/level/hash/proof.f.d.mts +4 -0
- package/fjs/sul/level/hash/proof.f.mjs +7 -4
- package/fjs/sul/level/literal/module.f.d.mts +4 -1
- package/fjs/sul/level/literal/module.f.mjs +4 -3
- package/fjs/sul/level/literal/proof.f.d.mts +3 -0
- package/fjs/sul/level/literal/proof.f.mjs +4 -1
- package/fjs/sul/module.f.d.mts +5 -3
- package/fjs/sul/module.f.mjs +23 -17
- package/fjs/sul/proof.f.d.mts +4 -0
- package/fjs/sul/proof.f.mjs +5 -2
- package/fjs/text/ascii/module.f.d.mts +26 -0
- package/fjs/text/ascii/module.f.mjs +49 -1
- package/fjs/text/ascii/proof.f.d.mts +10 -0
- package/fjs/text/ascii/proof.f.mjs +33 -1
- package/fjs/text/code_point/module.f.d.mts +29 -3
- package/fjs/text/code_point/module.f.mjs +32 -9
- package/fjs/text/code_point/proof.f.d.mts +2 -0
- package/fjs/text/code_point/proof.f.mjs +39 -0
- package/fjs/text/module.f.d.mts +4 -2
- package/fjs/text/module.f.mjs +4 -3
- package/fjs/text/proof.f.d.mts +3 -0
- package/fjs/text/proof.f.mjs +4 -1
- package/fjs/text/sgr/module.f.d.mts +6 -5
- package/fjs/text/sgr/module.f.mjs +8 -8
- package/fjs/text/sgr/proof.f.d.mts +3 -0
- package/fjs/text/sgr/proof.f.mjs +4 -1
- package/fjs/text/utf16/module.f.d.mts +5 -1
- package/fjs/text/utf16/module.f.mjs +38 -35
- package/fjs/text/utf16/proof.f.d.mts +3 -1
- package/fjs/text/utf16/proof.f.mjs +19 -2
- package/fjs/text/utf8/module.f.d.mts +9 -5
- package/fjs/text/utf8/module.f.mjs +20 -20
- package/fjs/types/array/module.f.d.mts +2 -1
- package/fjs/types/array/module.f.mjs +16 -4
- package/fjs/types/bigfloat/module.f.d.mts +21 -1
- package/fjs/types/bigfloat/module.f.mjs +33 -7
- package/fjs/types/bigfloat/proof.f.d.mts +1 -0
- package/fjs/types/bigfloat/proof.f.mjs +46 -0
- package/fjs/types/bigint/module.f.d.mts +4 -0
- package/fjs/types/bigint/module.f.mjs +4 -3
- package/fjs/types/bit_vec/module.f.d.mts +10 -16
- package/fjs/types/bit_vec/module.f.mjs +99 -95
- package/fjs/types/bit_vec/proof.f.d.mts +6 -0
- package/fjs/types/bit_vec/proof.f.mjs +31 -5
- package/fjs/types/btree/find/module.f.d.mts +5 -1
- package/fjs/types/btree/find/module.f.mjs +5 -5
- package/fjs/types/btree/find/proof.f.d.mts +5 -1
- package/fjs/types/btree/find/proof.f.mjs +5 -3
- package/fjs/types/btree/module.f.d.mts +3 -0
- package/fjs/types/btree/module.f.mjs +3 -2
- package/fjs/types/btree/proof.f.d.mts +5 -1
- package/fjs/types/btree/proof.f.mjs +5 -3
- package/fjs/types/btree/remove/module.f.d.mts +11 -0
- package/fjs/types/btree/remove/module.f.mjs +10 -10
- package/fjs/types/btree/remove/proof.f.d.mts +3 -0
- package/fjs/types/btree/remove/proof.f.mjs +4 -1
- package/fjs/types/btree/set/module.f.d.mts +9 -0
- package/fjs/types/btree/set/module.f.mjs +14 -17
- package/fjs/types/btree/set/proof.f.d.mts +3 -0
- package/fjs/types/btree/set/proof.f.mjs +16 -1
- package/fjs/types/btree/types/module.f.d.mts +2 -1
- package/fjs/types/btree/types/module.f.mjs +2 -1
- package/fjs/types/byte_set/module.f.d.mts +20 -4
- package/fjs/types/byte_set/module.f.mjs +18 -8
- package/fjs/types/byte_set/proof.f.d.mts +3 -1
- package/fjs/types/byte_set/proof.f.mjs +10 -8
- package/fjs/types/function/compare/module.f.d.mts +3 -2
- package/fjs/types/function/compare/module.f.mjs +13 -5
- package/fjs/types/function/module.f.d.mts +8 -1
- package/fjs/types/function/module.f.mjs +8 -1
- package/fjs/types/function/operator/module.f.d.mts +2 -1
- package/fjs/types/function/operator/module.f.mjs +2 -2
- package/fjs/types/list/module.f.d.mts +10 -3
- package/fjs/types/list/module.f.mjs +6 -4
- package/fjs/types/list/proof.f.d.mts +4 -1
- package/fjs/types/list/proof.f.mjs +4 -2
- package/fjs/types/nibble_set/module.f.d.mts +2 -1
- package/fjs/types/nibble_set/module.f.mjs +2 -2
- package/fjs/types/nominal/module.f.d.mts +2 -1
- package/fjs/types/nominal/module.f.mjs +2 -1
- package/fjs/types/nullable/module.f.d.mts +26 -6
- package/fjs/types/nullable/module.f.mjs +25 -6
- package/fjs/types/nullable/proof.f.d.mts +4 -0
- package/fjs/types/nullable/proof.f.mjs +15 -0
- package/fjs/types/number/module.f.d.mts +4 -0
- package/fjs/types/number/module.f.mjs +4 -3
- package/fjs/types/object/module.f.d.mts +26 -4
- package/fjs/types/object/module.f.mjs +26 -7
- package/fjs/types/object/proof.f.d.mts +5 -2
- package/fjs/types/object/proof.f.mjs +6 -3
- package/fjs/types/object/structurally_same/module.f.d.mts +39 -0
- package/fjs/types/object/structurally_same/module.f.mjs +59 -0
- package/fjs/types/object/structurally_same/proof.f.d.mts +6 -0
- package/fjs/types/object/structurally_same/proof.f.mjs +73 -0
- package/fjs/types/ordered_map/module.f.d.mts +5 -0
- package/fjs/types/ordered_map/module.f.mjs +5 -4
- package/fjs/types/ordered_map/proof.f.d.mts +3 -0
- package/fjs/types/ordered_map/proof.f.mjs +4 -1
- package/fjs/types/patricia_trie/module.f.d.mts +2 -1
- package/fjs/types/patricia_trie/module.f.mjs +27 -12
- package/fjs/types/patricia_trie/proof.f.d.mts +3 -0
- package/fjs/types/patricia_trie/proof.f.mjs +4 -1
- package/fjs/types/prime_field/module.f.d.mts +3 -1
- package/fjs/types/prime_field/module.f.mjs +3 -2
- package/fjs/types/range/module.f.d.mts +2 -1
- package/fjs/types/range/module.f.mjs +2 -2
- package/fjs/types/range_map/module.f.d.mts +6 -0
- package/fjs/types/range_map/module.f.mjs +6 -9
- package/fjs/types/range_map/proof.f.d.mts +5 -1
- package/fjs/types/range_map/proof.f.mjs +5 -3
- package/fjs/types/range_set/module.f.d.mts +5 -0
- package/fjs/types/range_set/module.f.mjs +1 -0
- package/fjs/types/range_set/proof.f.d.mts +3 -0
- package/fjs/types/range_set/proof.f.mjs +4 -1
- package/fjs/types/result/module.d.mts +8 -0
- package/fjs/types/result/module.f.d.mts +37 -7
- package/fjs/types/result/module.f.mjs +38 -8
- package/fjs/types/result/module.mjs +9 -1
- package/fjs/types/result/proof.f.d.mts +5 -0
- package/fjs/types/result/proof.f.mjs +22 -2
- package/fjs/types/rtti/common/module.f.d.mts +44 -14
- package/fjs/types/rtti/common/module.f.mjs +42 -36
- package/fjs/types/rtti/common/proof.f.d.mts +4 -0
- package/fjs/types/rtti/common/proof.f.mjs +10 -7
- package/fjs/types/rtti/data/module.f.d.mts +134 -0
- package/fjs/types/rtti/data/module.f.mjs +1053 -0
- package/fjs/types/rtti/data/proof.f.d.mts +76 -0
- package/fjs/types/rtti/data/proof.f.mjs +589 -0
- package/fjs/types/rtti/data/types.d.ts +83 -0
- package/fjs/types/rtti/module.f.d.mts +12 -5
- package/fjs/types/rtti/module.f.mjs +7 -5
- package/fjs/types/rtti/parse/module.f.d.mts +48 -0
- package/fjs/types/rtti/parse/module.f.mjs +45 -34
- package/fjs/types/rtti/parse/proof.f.d.mts +3 -2
- package/fjs/types/rtti/parse/proof.f.mjs +51 -52
- package/fjs/types/rtti/proof.f.d.mts +3 -1
- package/fjs/types/rtti/proof.f.mjs +6 -2
- package/fjs/types/rtti/ts/module.f.d.mts +68 -9
- package/fjs/types/rtti/ts/module.f.mjs +258 -30
- package/fjs/types/rtti/ts/proof.f.d.mts +44 -0
- package/fjs/types/rtti/ts/proof.f.mjs +152 -4
- package/fjs/types/rtti/ts/types.d.ts +25 -1
- package/fjs/types/rtti/types.d.ts +40 -0
- package/fjs/types/sorted_list/module.f.d.mts +4 -1
- package/fjs/types/sorted_list/module.f.mjs +21 -12
- package/fjs/types/sorted_list/proof.f.d.mts +3 -1
- package/fjs/types/sorted_list/proof.f.mjs +3 -1
- package/fjs/types/sorted_set/module.f.d.mts +49 -1
- package/fjs/types/sorted_set/module.f.mjs +26 -2
- package/fjs/types/sorted_set/proof.f.d.mts +4 -1
- package/fjs/types/sorted_set/proof.f.mjs +19 -2
- package/fjs/types/string/module.f.d.mts +4 -0
- package/fjs/types/string/module.f.mjs +4 -3
- package/fjs/types/string_set/module.f.d.mts +3 -1
- package/fjs/types/string_set/module.f.mjs +3 -2
- package/fjs/types/ts/module.f.d.mts +2 -0
- package/fjs/types/ts/module.f.mjs +3 -3
- package/fjs/types/ts/proof.f.d.mts +1 -0
- package/fjs/types/ts/proof.f.mjs +5 -0
- package/fjs/types/ts/types.d.ts +6 -1
- package/fjs/types/uint8array/module.f.d.mts +13 -2
- package/fjs/types/uint8array/module.f.mjs +20 -15
- package/fjs/website/module.f.d.mts +5 -2
- package/fjs/website/module.f.mjs +6 -8
- package/fjs/website/proof.f.mjs +2 -1
- package/package.json +3 -3
- package/fjs/asn.1/types.js +0 -6
- package/fjs/asserts/types.js +0 -6
- package/fjs/basen/types.js +0 -6
- package/fjs/bnf/data/types.js +0 -6
- package/fjs/bnf/descent/types.js +0 -6
- package/fjs/bnf/ll1/types.js +0 -6
- package/fjs/bnf/token_symbol/types.js +0 -6
- package/fjs/bnf/types.js +0 -6
- package/fjs/cas/evo/types.js +0 -7
- package/fjs/cas/types.js +0 -6
- package/fjs/ci/common/types.js +0 -1
- package/fjs/ci/nix/types.js +0 -6
- package/fjs/ci/types.js +0 -6
- package/fjs/cli/types.js +0 -6
- package/fjs/common/monoid/types.js +0 -6
- package/fjs/crypto/pow/types.js +0 -6
- package/fjs/crypto/secp/types.js +0 -6
- package/fjs/crypto/sha2/types.js +0 -6
- package/fjs/crypto/sign/types.js +0 -6
- package/fjs/crypto/vdf/types.js +0 -6
- package/fjs/dev/package_json/module.f.d.mts +0 -32
- package/fjs/dev/package_json/module.f.mjs +0 -37
- package/fjs/dev/package_json/proof.f.d.mts +0 -6
- package/fjs/dev/package_json/proof.f.mjs +0 -32
- package/fjs/dev/types.js +0 -6
- package/fjs/djs/ast/types.js +0 -8
- package/fjs/djs/parser/types.js +0 -7
- package/fjs/djs/tokenizer/types.js +0 -7
- package/fjs/djs/types.js +0 -7
- package/fjs/effects/eff/module.f.d.mts +0 -10
- package/fjs/effects/eff/module.f.mjs +0 -68
- package/fjs/effects/eff/proof.f.d.mts +0 -12
- package/fjs/effects/eff/proof.f.mjs +0 -66
- package/fjs/effects/eff/types.d.ts +0 -71
- package/fjs/effects/eff/types.js +0 -6
- package/fjs/effects/list/types.js +0 -6
- package/fjs/effects/memory/types.js +0 -6
- package/fjs/effects/mock/types.js +0 -6
- package/fjs/effects/node/types.js +0 -6
- package/fjs/effects/node/virtual/types.js +0 -7
- package/fjs/effects/types.js +0 -6
- package/fjs/emergent_testing/all.test.d.ts +0 -1
- package/fjs/emergent_testing/all.test.js +0 -5
- package/fjs/emergent_testing/scenarios/all.d.ts +0 -1
- package/fjs/emergent_testing/scenarios/all.js +0 -1
- package/fjs/emergent_testing/scenarios/async-subtests.fail.d.ts +0 -6
- package/fjs/emergent_testing/scenarios/async-subtests.fail.js +0 -9
- package/fjs/emergent_testing/scenarios/async-subtests.pass.d.ts +0 -6
- package/fjs/emergent_testing/scenarios/async-subtests.pass.js +0 -9
- package/fjs/emergent_testing/scenarios/async.fail.d.ts +0 -3
- package/fjs/emergent_testing/scenarios/async.fail.js +0 -6
- package/fjs/emergent_testing/scenarios/async.pass.d.ts +0 -3
- package/fjs/emergent_testing/scenarios/async.pass.js +0 -5
- package/fjs/emergent_testing/scenarios/fail.fail.d.ts +0 -3
- package/fjs/emergent_testing/scenarios/fail.fail.js +0 -3
- package/fjs/emergent_testing/scenarios/return-value.pass.js +0 -4
- package/fjs/emergent_testing/scenarios/thenable.pass.d.ts +0 -5
- package/fjs/emergent_testing/scenarios/thenable.pass.js +0 -11
- package/fjs/emergent_testing/scenarios/thenable2.pass.d.ts +0 -5
- package/fjs/emergent_testing/scenarios/thenable2.pass.js +0 -3
- package/fjs/emergent_testing/scenarios/throw.pass.d.ts +0 -5
- package/fjs/emergent_testing/scenarios/throw.pass.js +0 -3
- package/fjs/emergent_testing/types.js +0 -6
- package/fjs/js/tokenizer/types.js +0 -6
- package/fjs/media/html/types.js +0 -6
- package/fjs/media/json/parser/types.js +0 -6
- package/fjs/media/json/tokenizer/types.js +0 -6
- package/fjs/media/json/types.js +0 -13
- package/fjs/media/nix/types.js +0 -6
- package/fjs/media/revision/types.js +0 -8
- package/fjs/media/type/types.js +0 -6
- package/fjs/media/types.js +0 -7
- package/fjs/nanvm/types.js +0 -11
- package/fjs/protocol/json_rpc/types.js +0 -8
- package/fjs/protocol/mcp/types.js +0 -8
- package/fjs/sul/id/types.js +0 -6
- package/fjs/sul/level/hash/types.js +0 -6
- package/fjs/sul/level/literal/types.js +0 -6
- package/fjs/sul/types.js +0 -6
- package/fjs/text/sgr/types.js +0 -6
- package/fjs/text/types.js +0 -6
- package/fjs/text/utf16/types.js +0 -6
- package/fjs/text/utf8/types.js +0 -6
- package/fjs/types/array/types.js +0 -6
- package/fjs/types/bigfloat/types.js +0 -6
- package/fjs/types/bigint/types.js +0 -6
- package/fjs/types/bit_vec/types.js +0 -6
- package/fjs/types/btree/find/types.js +0 -6
- package/fjs/types/btree/types/types.js +0 -6
- package/fjs/types/byte_set/types.js +0 -6
- package/fjs/types/function/compare/types.js +0 -6
- package/fjs/types/function/operator/types.js +0 -6
- package/fjs/types/function/types.js +0 -6
- package/fjs/types/list/types.js +0 -6
- package/fjs/types/nibble_set/types.js +0 -6
- package/fjs/types/nominal/types.js +0 -6
- package/fjs/types/nullable/types.js +0 -6
- package/fjs/types/object/types.js +0 -8
- package/fjs/types/option/types.js +0 -6
- package/fjs/types/ordered_map/types.js +0 -6
- package/fjs/types/patricia_trie/types.js +0 -6
- package/fjs/types/phantom/types.js +0 -11
- package/fjs/types/prime_field/types.js +0 -6
- package/fjs/types/range/types.js +0 -6
- package/fjs/types/range_map/types.js +0 -6
- package/fjs/types/result/types.js +0 -6
- package/fjs/types/rtti/common/types.js +0 -1
- package/fjs/types/rtti/parse/types.js +0 -1
- package/fjs/types/rtti/ts/types.js +0 -1
- package/fjs/types/rtti/types.js +0 -1
- package/fjs/types/rtti/validate/module.f.d.mts +0 -6
- package/fjs/types/rtti/validate/module.f.mjs +0 -169
- package/fjs/types/rtti/validate/proof.f.d.mts +0 -125
- package/fjs/types/rtti/validate/proof.f.mjs +0 -437
- package/fjs/types/rtti/validate/types.d.ts +0 -6
- package/fjs/types/rtti/validate/types.js +0 -1
- package/fjs/types/sorted_list/types.js +0 -6
- package/fjs/types/sorted_set/types.js +0 -6
- package/fjs/types/string_set/types.js +0 -6
- package/fjs/types/ts/types.js +0 -8
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* @import { JsToken, JsTokenWithMetadata } from './types.ts'
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { assertEq } from '../../asserts/module.f.mjs'
|
|
6
|
+
import { mergeTrivia, tokenize } from './module.f.mjs'
|
|
6
7
|
import { map, toArray } from '../../types/list/module.f.mjs'
|
|
7
8
|
import { stringifyAsTree } from '../../djs/serializer/module.f.mjs'
|
|
8
9
|
import { sort } from '../../types/object/module.f.mjs'
|
|
@@ -20,6 +21,14 @@ const stringify = stringifyAsTree(sort)
|
|
|
20
21
|
const withoutMetada = tokenWithMetada => tokenWithMetada.token
|
|
21
22
|
|
|
22
23
|
export const proof = {
|
|
24
|
+
// The coalescing rule both tokenizers read. All four combinations, since
|
|
25
|
+
// the whole point of exporting it is that neither side re-derives them.
|
|
26
|
+
mergeTrivia: [
|
|
27
|
+
() => assertEq(mergeTrivia('ws', 'ws'), 'ws'),
|
|
28
|
+
() => assertEq(mergeTrivia('ws', 'nl'), 'nl'),
|
|
29
|
+
() => assertEq(mergeTrivia('nl', 'ws'), 'nl'),
|
|
30
|
+
() => assertEq(mergeTrivia('nl', 'nl'), 'nl'),
|
|
31
|
+
],
|
|
23
32
|
djs: [
|
|
24
33
|
() => {
|
|
25
34
|
const result = stringify(tokenizeString(''))
|
|
@@ -164,16 +173,37 @@ export const proof = {
|
|
|
164
173
|
},
|
|
165
174
|
() => {
|
|
166
175
|
const result = stringify(tokenizeString('0'))
|
|
167
|
-
if (result !== '[{"
|
|
176
|
+
if (result !== '[{"kind":"number","value":"0"},{"kind":"eof"}]') { throw result }
|
|
168
177
|
},
|
|
169
178
|
() => {
|
|
170
179
|
const result = stringify(tokenizeString('[0]'))
|
|
171
|
-
if (result !== '[{"kind":"["},{"
|
|
180
|
+
if (result !== '[{"kind":"["},{"kind":"number","value":"0"},{"kind":"]"},{"kind":"eof"}]') { throw result }
|
|
172
181
|
},
|
|
173
182
|
() => {
|
|
174
183
|
const result = stringify(tokenizeString('00'))
|
|
175
184
|
if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"eof"}]') { throw result }
|
|
176
185
|
},
|
|
186
|
+
() => {
|
|
187
|
+
// A leading zero followed by another digit (not '0' itself, so
|
|
188
|
+
// digit19ToToken's own '0'-state arm, distinct from '00' above).
|
|
189
|
+
const result = stringify(tokenizeString('01'))
|
|
190
|
+
if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"eof"}]') { throw result }
|
|
191
|
+
},
|
|
192
|
+
() => {
|
|
193
|
+
// 'e' right after a bare '.' (no fractional digits yet).
|
|
194
|
+
const result = stringify(tokenizeString('1.e5'))
|
|
195
|
+
if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"eof"}]') { throw result }
|
|
196
|
+
},
|
|
197
|
+
() => {
|
|
198
|
+
// '+' after the exponent's digits have already started. A trailing
|
|
199
|
+
// digit (not just eof) matters here: if this branch were merged
|
|
200
|
+
// into the accepting 'e' arm, the '+' would restart the exponent
|
|
201
|
+
// and the trailing '3' would complete a *valid* number instead —
|
|
202
|
+
// 'invalid number' alone doesn't distinguish that from eof cutting
|
|
203
|
+
// the (still invalid) token short.
|
|
204
|
+
const result = stringify(tokenizeString('1e5+3'))
|
|
205
|
+
if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"eof"}]') { throw result }
|
|
206
|
+
},
|
|
177
207
|
() => {
|
|
178
208
|
// terminal char after invalidNumber state (covers invalidNumberStateOp terminal branch)
|
|
179
209
|
const result = stringify(tokenizeString('00,'))
|
|
@@ -185,23 +215,23 @@ export const proof = {
|
|
|
185
215
|
},
|
|
186
216
|
() => {
|
|
187
217
|
const result = stringify(tokenizeString('123456789012345678901234567890'))
|
|
188
|
-
if (result !== '[{"
|
|
218
|
+
if (result !== '[{"kind":"number","value":"123456789012345678901234567890"},{"kind":"eof"}]') { throw result }
|
|
189
219
|
},
|
|
190
220
|
() => {
|
|
191
221
|
const result = stringify(tokenizeString('{90}'))
|
|
192
|
-
if (result !== '[{"kind":"{"},{"
|
|
222
|
+
if (result !== '[{"kind":"{"},{"kind":"number","value":"90"},{"kind":"}"},{"kind":"eof"}]') { throw result }
|
|
193
223
|
},
|
|
194
224
|
() => {
|
|
195
225
|
const result = stringify(tokenizeString('1 2'))
|
|
196
|
-
if (result !== '[{"
|
|
226
|
+
if (result !== '[{"kind":"number","value":"1"},{"kind":"ws"},{"kind":"number","value":"2"},{"kind":"eof"}]') { throw result }
|
|
197
227
|
},
|
|
198
228
|
() => {
|
|
199
229
|
const result = stringify(tokenizeString('0. 2'))
|
|
200
|
-
if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"ws"},{"
|
|
230
|
+
if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"ws"},{"kind":"number","value":"2"},{"kind":"eof"}]') { throw result }
|
|
201
231
|
},
|
|
202
232
|
() => {
|
|
203
233
|
const result = stringify(tokenizeString('10-0'))
|
|
204
|
-
if (result !== '[{"
|
|
234
|
+
if (result !== '[{"kind":"number","value":"10"},{"kind":"-"},{"kind":"number","value":"0"},{"kind":"eof"}]') { throw result }
|
|
205
235
|
},
|
|
206
236
|
() => {
|
|
207
237
|
const result = stringify(tokenizeString('9a:'))
|
|
@@ -209,11 +239,11 @@ export const proof = {
|
|
|
209
239
|
},
|
|
210
240
|
() => {
|
|
211
241
|
const result = stringify(tokenizeString('-10'))
|
|
212
|
-
if (result !== '[{"kind":"-"},{"
|
|
242
|
+
if (result !== '[{"kind":"-"},{"kind":"number","value":"10"},{"kind":"eof"}]') { throw result }
|
|
213
243
|
},
|
|
214
244
|
() => {
|
|
215
245
|
const result = stringify(tokenizeString('-0'))
|
|
216
|
-
if (result !== '[{"kind":"-"},{"
|
|
246
|
+
if (result !== '[{"kind":"-"},{"kind":"number","value":"0"},{"kind":"eof"}]') { throw result }
|
|
217
247
|
},
|
|
218
248
|
() => {
|
|
219
249
|
const result = stringify(tokenizeString('-00'))
|
|
@@ -221,15 +251,15 @@ export const proof = {
|
|
|
221
251
|
},
|
|
222
252
|
() => {
|
|
223
253
|
const result = stringify(tokenizeString('-.123'))
|
|
224
|
-
if (result !== '[{"kind":"-"},{"kind":"."},{"
|
|
254
|
+
if (result !== '[{"kind":"-"},{"kind":"."},{"kind":"number","value":"123"},{"kind":"eof"}]') { throw result }
|
|
225
255
|
},
|
|
226
256
|
() => {
|
|
227
257
|
const result = stringify(tokenizeString('0.01'))
|
|
228
|
-
if (result !== '[{"
|
|
258
|
+
if (result !== '[{"kind":"number","value":"0.01"},{"kind":"eof"}]') { throw result }
|
|
229
259
|
},
|
|
230
260
|
() => {
|
|
231
261
|
const result = stringify(tokenizeString('-0.9'))
|
|
232
|
-
if (result !== '[{"kind":"-"},{"
|
|
262
|
+
if (result !== '[{"kind":"-"},{"kind":"number","value":"0.9"},{"kind":"eof"}]') { throw result }
|
|
233
263
|
},
|
|
234
264
|
() => {
|
|
235
265
|
const result = stringify(tokenizeString('-0.'))
|
|
@@ -241,11 +271,11 @@ export const proof = {
|
|
|
241
271
|
},
|
|
242
272
|
() => {
|
|
243
273
|
const result = stringify(tokenizeString('12.34'))
|
|
244
|
-
if (result !== '[{"
|
|
274
|
+
if (result !== '[{"kind":"number","value":"12.34"},{"kind":"eof"}]') { throw result }
|
|
245
275
|
},
|
|
246
276
|
() => {
|
|
247
277
|
const result = stringify(tokenizeString('-12.00'))
|
|
248
|
-
if (result !== '[{"kind":"-"},{"
|
|
278
|
+
if (result !== '[{"kind":"-"},{"kind":"number","value":"12.00"},{"kind":"eof"}]') { throw result }
|
|
249
279
|
},
|
|
250
280
|
() => {
|
|
251
281
|
const result = stringify(tokenizeString('-12.'))
|
|
@@ -262,27 +292,27 @@ export const proof = {
|
|
|
262
292
|
},
|
|
263
293
|
() => {
|
|
264
294
|
const result = stringify(tokenizeString('0e1'))
|
|
265
|
-
if (result !== '[{"
|
|
295
|
+
if (result !== '[{"kind":"number","value":"0e1"},{"kind":"eof"}]') { throw result }
|
|
266
296
|
},
|
|
267
297
|
() => {
|
|
268
298
|
const result = stringify(tokenizeString('0e+2'))
|
|
269
|
-
if (result !== '[{"
|
|
299
|
+
if (result !== '[{"kind":"number","value":"0e+2"},{"kind":"eof"}]') { throw result }
|
|
270
300
|
},
|
|
271
301
|
() => {
|
|
272
302
|
const result = stringify(tokenizeString('0e-0'))
|
|
273
|
-
if (result !== '[{"
|
|
303
|
+
if (result !== '[{"kind":"number","value":"0e-0"},{"kind":"eof"}]') { throw result }
|
|
274
304
|
},
|
|
275
305
|
() => {
|
|
276
306
|
const result = stringify(tokenizeString('12e0000'))
|
|
277
|
-
if (result !== '[{"
|
|
307
|
+
if (result !== '[{"kind":"number","value":"12e0000"},{"kind":"eof"}]') { throw result }
|
|
278
308
|
},
|
|
279
309
|
() => {
|
|
280
310
|
const result = stringify(tokenizeString('-12e-0001'))
|
|
281
|
-
if (result !== '[{"kind":"-"},{"
|
|
311
|
+
if (result !== '[{"kind":"-"},{"kind":"number","value":"12e-0001"},{"kind":"eof"}]') { throw result }
|
|
282
312
|
},
|
|
283
313
|
() => {
|
|
284
314
|
const result = stringify(tokenizeString('-12.34e1234'))
|
|
285
|
-
if (result !== '[{"kind":"-"},{"
|
|
315
|
+
if (result !== '[{"kind":"-"},{"kind":"number","value":"12.34e1234"},{"kind":"eof"}]') { throw result }
|
|
286
316
|
},
|
|
287
317
|
() => {
|
|
288
318
|
const result = stringify(tokenizeString('0e'))
|
|
@@ -302,11 +332,11 @@ export const proof = {
|
|
|
302
332
|
},
|
|
303
333
|
() => {
|
|
304
334
|
const result = stringify(tokenizeString('123 _123'))
|
|
305
|
-
if (result !== '[{"
|
|
335
|
+
if (result !== '[{"kind":"number","value":"123"},{"kind":"ws"},{"kind":"id","value":"_123"},{"kind":"eof"}]') { throw result }
|
|
306
336
|
},
|
|
307
337
|
() => {
|
|
308
338
|
const result = stringify(tokenizeString('123 $123'))
|
|
309
|
-
if (result !== '[{"
|
|
339
|
+
if (result !== '[{"kind":"number","value":"123"},{"kind":"ws"},{"kind":"id","value":"$123"},{"kind":"eof"}]') { throw result }
|
|
310
340
|
},
|
|
311
341
|
() => {
|
|
312
342
|
const result = stringify(tokenizeString('123_123'))
|
|
@@ -361,7 +391,7 @@ export const proof = {
|
|
|
361
391
|
},
|
|
362
392
|
() => {
|
|
363
393
|
const result = stringify(tokenizeString('1*2'))
|
|
364
|
-
if (result !== '[{"
|
|
394
|
+
if (result !== '[{"kind":"number","value":"1"},{"kind":"*"},{"kind":"number","value":"2"},{"kind":"eof"}]') { throw result }
|
|
365
395
|
},
|
|
366
396
|
() => {
|
|
367
397
|
const result = stringify(tokenizeString('( )'))
|
|
@@ -5,15 +5,25 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { RangeMapArray } from '../../types/range_map/types.ts';
|
|
7
7
|
import type { List } from '../../types/list/types.ts';
|
|
8
|
-
import type {
|
|
8
|
+
import type { keywords } from '../keywords/module.f.mjs';
|
|
9
9
|
export type StringToken = {
|
|
10
10
|
readonly kind: 'string';
|
|
11
11
|
readonly value: string;
|
|
12
12
|
};
|
|
13
|
+
/**
|
|
14
|
+
* A numeric literal, kept as the exact source lexeme.
|
|
15
|
+
*
|
|
16
|
+
* `value` is the canonical lossless numeric source: the tokenizer never
|
|
17
|
+
* narrows it to a runtime numeric representation, so a syntactically valid
|
|
18
|
+
* literal reaches its consumer whatever its magnitude — a coefficient beyond
|
|
19
|
+
* the runtime's `bigint` limit and an exponent beyond `number` precision alike.
|
|
20
|
+
* Each consumer applies its own numeric policy to `value`; see
|
|
21
|
+
* [`fjs/media/json/number`](../../media/json/number/module.f.mjs) for the
|
|
22
|
+
* bounded lexical helpers that read it without narrowing.
|
|
23
|
+
*/
|
|
13
24
|
export type NumberToken = {
|
|
14
25
|
readonly kind: 'number';
|
|
15
26
|
readonly value: string;
|
|
16
|
-
readonly bf: BigFloat;
|
|
17
27
|
};
|
|
18
28
|
export type BigIntToken = {
|
|
19
29
|
readonly kind: 'bigint';
|
|
@@ -23,6 +33,12 @@ export type ErrorToken = {
|
|
|
23
33
|
readonly kind: 'error';
|
|
24
34
|
message: _ErrorMessage;
|
|
25
35
|
};
|
|
36
|
+
/**
|
|
37
|
+
* The two trivia kinds. A maximal run of whitespace and newlines collapses to
|
|
38
|
+
* one token, and the run is `'nl'` if it contains any newline — see
|
|
39
|
+
* `mergeTrivia` in `./module.f.mjs`, which owns that rule.
|
|
40
|
+
*/
|
|
41
|
+
export type TriviaKind = 'ws' | 'nl';
|
|
26
42
|
export type WhitespaceToken = {
|
|
27
43
|
readonly kind: 'ws';
|
|
28
44
|
};
|
|
@@ -45,19 +61,15 @@ export type _NullToken = {
|
|
|
45
61
|
export type _UndefinedToken = {
|
|
46
62
|
readonly kind: 'undefined';
|
|
47
63
|
};
|
|
48
|
-
/**
|
|
64
|
+
/**
|
|
65
|
+
* A keyword token, its kind drawn from the one source of truth for
|
|
66
|
+
* JavaScript keywords, `fjs/js/keywords` — minus the literal keywords
|
|
67
|
+
* (`true`/`false`/`null`/`undefined`), which have their own token types.
|
|
68
|
+
*
|
|
69
|
+
* @internal
|
|
70
|
+
*/
|
|
49
71
|
export type _KeywordToken = {
|
|
50
|
-
readonly kind:
|
|
51
|
-
} | {
|
|
52
|
-
readonly kind: 'debugger' | 'default' | 'delete' | 'do' | 'else' | 'enum' | 'eval' | 'export';
|
|
53
|
-
} | {
|
|
54
|
-
readonly kind: 'extends' | 'finally' | 'for' | 'function' | 'if' | 'implements' | 'import' | 'in';
|
|
55
|
-
} | {
|
|
56
|
-
readonly kind: 'instanceof' | 'interface' | 'let' | 'new' | 'package' | 'private' | 'protected' | 'public';
|
|
57
|
-
} | {
|
|
58
|
-
readonly kind: 'return' | 'static' | 'super' | 'switch' | 'this' | 'throw' | 'try' | 'typeof';
|
|
59
|
-
} | {
|
|
60
|
-
readonly kind: 'var' | 'void' | 'while' | 'with' | 'yield';
|
|
72
|
+
readonly kind: Exclude<typeof keywords[number], 'true' | 'false' | 'null' | 'undefined'>;
|
|
61
73
|
};
|
|
62
74
|
export type IdToken = {
|
|
63
75
|
readonly kind: 'id';
|
|
@@ -158,20 +170,17 @@ export type _ParseUnicodeCharState = {
|
|
|
158
170
|
readonly unicode: number;
|
|
159
171
|
readonly hexIndex: number;
|
|
160
172
|
};
|
|
161
|
-
/**
|
|
173
|
+
/**
|
|
174
|
+
* Numeric scanning state. It accumulates the lexeme only: no coefficient or
|
|
175
|
+
* exponent is materialized while scanning, so digit counts are bounded by the
|
|
176
|
+
* input rather than by any runtime numeric limit.
|
|
177
|
+
*
|
|
178
|
+
* @internal
|
|
179
|
+
*/
|
|
162
180
|
export type _ParseNumberState = {
|
|
163
181
|
readonly kind: 'number';
|
|
164
182
|
readonly numberKind: '0' | 'int' | '.' | 'fractional' | 'e' | 'e+' | 'e-' | 'expDigits' | 'bigint';
|
|
165
183
|
readonly value: string;
|
|
166
|
-
readonly b: _ParseNumberBuffer;
|
|
167
|
-
};
|
|
168
|
-
/** @internal */
|
|
169
|
-
export type _ParseNumberBuffer = {
|
|
170
|
-
readonly s: -1n | 1n;
|
|
171
|
-
readonly m: bigint;
|
|
172
|
-
readonly f: number;
|
|
173
|
-
readonly es: -1 | 1;
|
|
174
|
-
readonly e: number;
|
|
175
184
|
};
|
|
176
185
|
/** @internal */
|
|
177
186
|
export type _InvalidNumberState = {
|
|
@@ -101,17 +101,12 @@
|
|
|
101
101
|
*
|
|
102
102
|
* @module
|
|
103
103
|
*
|
|
104
|
-
* @import { Effect } from '../../effects/types.ts'
|
|
105
104
|
* @import { MemOp } from '../../effects/memory/types.ts'
|
|
106
105
|
* @import { Vec } from '../../types/bit_vec/types.ts'
|
|
107
|
-
* @import {
|
|
108
|
-
* @import { ToolEntry, ToolsCallResult } from '../../protocol/mcp/types.ts'
|
|
106
|
+
* @import { ToolEntry } from '../../protocol/mcp/types.ts'
|
|
109
107
|
* @import { FileCasOperation } from '../../cas/types.ts'
|
|
110
108
|
* @import { Cache } from '../../cas/evo/types.ts'
|
|
111
109
|
* @import { Key } from '../../effects/memory/types.ts'
|
|
112
|
-
* @import { Ts } from '../../types/rtti/ts/types.ts'
|
|
113
|
-
* @import { List } from '../../effects/list/types.ts'
|
|
114
|
-
* @import { IoResult } from '../../effects/node/types.ts'
|
|
115
110
|
*/
|
|
116
111
|
import type { MemOp } from '../../effects/memory/types.ts';
|
|
117
112
|
import type { ToolEntry } from '../../protocol/mcp/types.ts';
|
package/fjs/mcp/cas/module.f.mjs
CHANGED
|
@@ -101,39 +101,38 @@
|
|
|
101
101
|
*
|
|
102
102
|
* @module
|
|
103
103
|
*
|
|
104
|
-
* @import { Effect } from '../../effects/types.ts'
|
|
105
104
|
* @import { MemOp } from '../../effects/memory/types.ts'
|
|
106
105
|
* @import { Vec } from '../../types/bit_vec/types.ts'
|
|
107
|
-
* @import {
|
|
108
|
-
* @import { ToolEntry, ToolsCallResult } from '../../protocol/mcp/types.ts'
|
|
106
|
+
* @import { ToolEntry } from '../../protocol/mcp/types.ts'
|
|
109
107
|
* @import { FileCasOperation } from '../../cas/types.ts'
|
|
110
108
|
* @import { Cache } from '../../cas/evo/types.ts'
|
|
111
109
|
* @import { Key } from '../../effects/memory/types.ts'
|
|
112
|
-
* @import { Ts } from '../../types/rtti/ts/types.ts'
|
|
113
|
-
* @import { List } from '../../effects/list/types.ts'
|
|
114
|
-
* @import { IoResult } from '../../effects/node/types.ts'
|
|
115
110
|
*/
|
|
116
111
|
|
|
117
112
|
import { string, option, or, boolean } from '../../types/rtti/module.f.mjs'
|
|
118
113
|
import { stringify } from '../../media/json/module.f.mjs'
|
|
119
|
-
import {
|
|
114
|
+
import { pureOk, resultStep } from '../../effects/module.f.mjs'
|
|
120
115
|
import { cBase32ToVec, vecToCBase32 } from '../../basen/cbase32/module.f.mjs'
|
|
121
116
|
import { decode as base64Decode, encode as base64Encode } from '../../basen/base64/module.f.mjs'
|
|
122
117
|
import { tryUtf8 } from '../../text/module.f.mjs'
|
|
123
118
|
import { detectStream } from '../../media/type/module.f.mjs'
|
|
124
119
|
import { detect } from '../../media/module.f.mjs'
|
|
125
120
|
import { revisionDialect } from '../../media/revision/module.f.mjs'
|
|
121
|
+
import { lockDialect } from '../../media/lock/module.f.mjs'
|
|
122
|
+
import { noteDialect } from '../../media/note/module.f.mjs'
|
|
126
123
|
import { maxLengthBytes } from '../../types/bit_vec/module.f.mjs'
|
|
127
124
|
import { ok } from '../../types/result/module.f.mjs'
|
|
128
125
|
import {
|
|
129
126
|
toolEntry, errorResult, okResult,
|
|
130
127
|
} from '../../protocol/mcp/module.f.mjs'
|
|
131
128
|
import { collectRead, fileCas } from '../../cas/module.f.mjs'
|
|
129
|
+
import { errorSummary } from '../../effects/node/module.f.mjs'
|
|
132
130
|
import { fromVec } from '../../text/utf8/module.f.mjs'
|
|
133
131
|
import { identity } from '../../types/function/module.f.mjs'
|
|
134
132
|
import { sha256 } from '../../crypto/sha2/module.f.mjs'
|
|
135
133
|
import { nonEmpty, empty as elEmpty } from '../../effects/list/module.f.mjs'
|
|
136
134
|
import { syncRevision } from '../../cas/evo/module.f.mjs'
|
|
135
|
+
import { assertNotNullish } from '../../asserts/module.f.mjs'
|
|
137
136
|
|
|
138
137
|
// ── Argument schemas (declared once, used for both inputSchema and validate) ─────
|
|
139
138
|
|
|
@@ -156,8 +155,13 @@ export const casListArgs = /** @type {const} */ ({})
|
|
|
156
155
|
|
|
157
156
|
const toJson = stringify(identity)
|
|
158
157
|
|
|
159
|
-
/**
|
|
160
|
-
|
|
158
|
+
/**
|
|
159
|
+
* The dialect-aware classifier, bound to the dialects this server recognizes:
|
|
160
|
+
* the revision format, the shared lock maps revisions reference
|
|
161
|
+
* (`fjs/media/lock`), and notes (`fjs/media/note`), so `cas_get` reports each
|
|
162
|
+
* under its own media type instead of `text/plain`.
|
|
163
|
+
*/
|
|
164
|
+
const detectDialect = detect([revisionDialect, lockDialect, noteDialect])
|
|
161
165
|
|
|
162
166
|
/** @typedef {{
|
|
163
167
|
* readonly length: number
|
|
@@ -184,46 +188,43 @@ export const casToolRegistry = home => cacheKey => {
|
|
|
184
188
|
'cas_add',
|
|
185
189
|
'Store content and return its hash (cBase32). Pass type:"base64" for binary; omit or pass type:"text" for UTF-8 text (default). Inline content is capped at 128 KiB (131072 bytes) — larger content is rejected. For larger content, store the file with the `cas` CLI instead: run `npx functionalscript cas add <path>` yourself if you have shell access, or give the user that exact command to run — it prints the resulting hash on stdout.',
|
|
186
190
|
casAddArgs,
|
|
187
|
-
|
|
188
|
-
(({ type, content }) => {
|
|
191
|
+
({ type, content }) => {
|
|
189
192
|
// type:'text' or 'base64' — resolve content to Vec, store via c.write()
|
|
190
193
|
/** @type {Vec | null} */
|
|
191
194
|
let x = type === 'base64'
|
|
192
195
|
? base64Decode(content)
|
|
193
196
|
: tryUtf8(content)
|
|
194
197
|
return x === null
|
|
195
|
-
?
|
|
198
|
+
? pureOk(errorResult('too large or malformed — for large content, run `npx functionalscript cas add <path>` (or have the user run it) instead'))
|
|
196
199
|
// The resolved content fits in one chunk; feed it as a single-item stream.
|
|
197
|
-
:
|
|
198
|
-
c.write(nonEmpty(
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
if (writeResult[0] === 'error') { return pure(errorResult('write')) }
|
|
200
|
+
: resultStep(
|
|
201
|
+
c.write(nonEmpty(x, elEmpty())),
|
|
202
|
+
writeResult => {
|
|
203
|
+
if (writeResult[0] === 'error') { return pureOk(errorResult('write')) }
|
|
202
204
|
const hash = writeResult[1]
|
|
203
|
-
return
|
|
204
|
-
syncRevision(cacheKey)(hash)(
|
|
205
|
-
() =>
|
|
205
|
+
return resultStep(
|
|
206
|
+
syncRevision(cacheKey)(hash)(x),
|
|
207
|
+
() => pureOk(okResult(vecToCBase32(hash)))
|
|
206
208
|
)
|
|
207
|
-
}
|
|
209
|
+
},
|
|
208
210
|
)
|
|
209
|
-
}
|
|
211
|
+
},
|
|
210
212
|
),
|
|
211
213
|
toolEntry(
|
|
212
214
|
'cas_get',
|
|
213
215
|
'Inspect a blob by hash. Always returns JSON {length,mimeType,type[,uri]} where type is "text" or "base64". Pass content:true to also include the inline payload as text (type:"text") or blob (type:"base64"), but content is capped at 128 KiB (131072 bytes) — a larger blob is rejected with an error. To download a blob, prefer the uri field returned in the result instead of requesting inline content.',
|
|
214
216
|
casGetArgs,
|
|
215
|
-
|
|
216
|
-
(r => {
|
|
217
|
+
r => {
|
|
217
218
|
const key = cBase32ToVec(r.hash)
|
|
218
219
|
if (key === null) {
|
|
219
|
-
return
|
|
220
|
+
return pureOk(errorResult(`invalid cBase32 hash: ${r.hash}`))
|
|
220
221
|
}
|
|
221
222
|
const uri = c.url(key)
|
|
222
|
-
return
|
|
223
|
+
return resultStep(
|
|
223
224
|
detectStream(c.read(key)),
|
|
224
225
|
([tag, detected]) => {
|
|
225
226
|
if (tag === 'error') {
|
|
226
|
-
return
|
|
227
|
+
return pureOk(errorResult(`no such hash: ${r.hash}`))
|
|
227
228
|
}
|
|
228
229
|
const { length, mime_type: mimeType, type } = detected
|
|
229
230
|
/** @type {_Meta} */
|
|
@@ -233,17 +234,17 @@ export const casToolRegistry = home => cacheKey => {
|
|
|
233
234
|
// only attempt the extra bounded read when it stands a chance
|
|
234
235
|
// (whole-blob text within the same cap `content: true` allows).
|
|
235
236
|
if (type !== 'text' || length > maxLengthBytes) {
|
|
236
|
-
return
|
|
237
|
+
return pureOk(okResult(toJson(meta)))
|
|
237
238
|
}
|
|
238
|
-
return
|
|
239
|
+
return resultStep(
|
|
239
240
|
collectRead(c.read(key)),
|
|
240
241
|
([collectTag, value]) => {
|
|
241
242
|
// Already known to fit from the streaming pass above, so an
|
|
242
243
|
// error here means the hash vanished between reads; fall back
|
|
243
244
|
// to the streaming verdict rather than fail the whole request.
|
|
244
|
-
if (collectTag === 'error') { return
|
|
245
|
+
if (collectTag === 'error') { return pureOk(okResult(toJson(meta))) }
|
|
245
246
|
const refined = detectDialect(value)
|
|
246
|
-
return
|
|
247
|
+
return pureOk(okResult(toJson({ ...meta, mimeType: refined.mime_type })))
|
|
247
248
|
}
|
|
248
249
|
)
|
|
249
250
|
}
|
|
@@ -252,14 +253,14 @@ export const casToolRegistry = home => cacheKey => {
|
|
|
252
253
|
// size and point at the size-independent alternatives instead of
|
|
253
254
|
// misreporting an existing blob as `no such hash`.
|
|
254
255
|
if (length > maxLengthBytes) {
|
|
255
|
-
return
|
|
256
|
+
return pureOk(errorResult(
|
|
256
257
|
`blob too large to fetch inline (${length} bytes, limit ${maxLengthBytes} bytes); use the uri field (${uri}) or omit content for metadata`))
|
|
257
258
|
}
|
|
258
|
-
return
|
|
259
|
+
return resultStep(
|
|
259
260
|
collectRead(c.read(key)),
|
|
260
261
|
([collectTag, value]) => {
|
|
261
262
|
if (collectTag === 'error') {
|
|
262
|
-
return
|
|
263
|
+
return pureOk(errorResult(`no such hash: ${r.hash}`))
|
|
263
264
|
}
|
|
264
265
|
// Re-derive the verdict from the now-materialized blob so a
|
|
265
266
|
// dialect match — only decidable with the whole parsed JSON in
|
|
@@ -269,34 +270,37 @@ export const casToolRegistry = home => cacheKey => {
|
|
|
269
270
|
/** @type {_Meta} */
|
|
270
271
|
const refinedMeta = { length: Number(refined.length), mimeType: refined.mime_type, type: refined.type, uri }
|
|
271
272
|
if (refined.type === 'text') {
|
|
272
|
-
// `type: 'text'` means the detector validated `value` as
|
|
273
|
-
//
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
)
|
|
273
|
+
// `type: 'text'` means the detector validated `value` as
|
|
274
|
+
// whole-blob UTF-8 with a byte-aligned length (see
|
|
275
|
+
// `media/type`'s `finish`) — the same two conditions
|
|
276
|
+
// `fromVec` checks, via the same decoder — so `fromVec`
|
|
277
|
+
// cannot return `null` here (mirrors `media`'s own `detect`).
|
|
278
|
+
const str = assertNotNullish(fromVec(value), 'cas_get: type text implies fromVec succeeds')
|
|
279
|
+
return pureOk(okResult(toJson({ ...refinedMeta, text: str })))
|
|
279
280
|
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
281
|
+
// Every byte ever written through `cas_add`/the CAS store is
|
|
282
|
+
// whole-byte chunks (UTF-8 text or already-decoded base64), so
|
|
283
|
+
// `value` is always byte-aligned regardless of which branch
|
|
284
|
+
// classified it — `base64Encode` only rejects a non-byte-aligned
|
|
285
|
+
// input.
|
|
286
|
+
const blob = assertNotNullish(base64Encode(value), 'cas_get: stored content is always byte-aligned')
|
|
287
|
+
return pureOk(okResult(toJson({ ...refinedMeta, blob })))
|
|
285
288
|
},
|
|
286
289
|
)
|
|
287
290
|
},
|
|
288
291
|
)
|
|
289
|
-
}
|
|
292
|
+
},
|
|
290
293
|
),
|
|
291
294
|
toolEntry(
|
|
292
295
|
'cas_list',
|
|
293
296
|
'List all stored content hashes (cBase32), one per line.',
|
|
294
297
|
casListArgs,
|
|
295
|
-
|
|
296
|
-
(() => step(
|
|
298
|
+
() => resultStep(
|
|
297
299
|
c.list(),
|
|
298
|
-
|
|
299
|
-
|
|
300
|
+
r => pureOk(r[0] === 'error'
|
|
301
|
+
? errorResult(errorSummary(r[1]))
|
|
302
|
+
: okResult(r[1].map(vecToCBase32).join('\n')))
|
|
303
|
+
),
|
|
300
304
|
),
|
|
301
305
|
]
|
|
302
306
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @import { Effect } from '../../effects/types.ts'
|
|
3
|
+
* @import { Result } from '../../types/result/types.ts'
|
|
4
|
+
* @import { FileCasOperation } from '../../cas/types.ts'
|
|
5
|
+
* @import { MemOp } from '../../effects/memory/types.ts'
|
|
6
|
+
* @import { Cache } from '../../cas/evo/types.ts'
|
|
7
|
+
* @import { Key } from '../../effects/memory/types.ts'
|
|
8
|
+
* @import { ToolsCallResult } from '../../protocol/mcp/types.ts'
|
|
9
|
+
*/
|
|
10
|
+
export declare const proof: {
|
|
11
|
+
casListStorageErrorReturnsError: () => void;
|
|
12
|
+
casAddWriteErrorReturnsError: () => void;
|
|
13
|
+
casGetMetadataRefineHashVanishesFallsBackToStreamingVerdict: () => void;
|
|
14
|
+
casGetContentFetchHashVanishesReturnsError: () => void;
|
|
15
|
+
};
|