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
package/fjs/effects/module.mjs
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Impure effect interpretation: runs an `Effect` step by step against an
|
|
3
|
+
* asynchronous operation map.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*
|
|
7
|
+
* @import { Effect, Operation, ToAsyncOperationMap } from './types.ts'
|
|
8
|
+
* @import { Result } from '../types/result/types.ts'
|
|
9
|
+
*/
|
|
10
|
+
|
|
2
11
|
import { match } from './module.f.mjs'
|
|
3
12
|
|
|
4
13
|
/**
|
|
5
14
|
* @template {Operation} O
|
|
6
15
|
* @param {ToAsyncOperationMap<O>} map
|
|
7
|
-
* @returns {<T>(effect: Effect<O, T>) => Promise<T
|
|
16
|
+
* @returns {<T, E>(effect: Effect<O, T, E>) => Promise<Result<T, E>>}
|
|
8
17
|
*/
|
|
9
18
|
export const asyncRun = map => async effect => {
|
|
10
19
|
const next = match(map)
|
|
@@ -2,8 +2,13 @@
|
|
|
2
2
|
* Node.js interpreter helpers for memory effects.
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { Effect, ToAsyncOperationMap } from '../../types.ts'
|
|
7
|
+
* @import { Result } from '../../../types/result/types.ts'
|
|
8
|
+
* @import { Key, MemOp } from '../../memory/types.ts'
|
|
5
9
|
*/
|
|
6
10
|
import type { Effect, ToAsyncOperationMap } from '../../types.ts';
|
|
11
|
+
import type { Result } from '../../../types/result/types.ts';
|
|
7
12
|
import type { MemOp } from '../../memory/types.ts';
|
|
8
13
|
export type MemoryOperationMap = ToAsyncOperationMap<MemOp>;
|
|
9
14
|
export type Uuid = () => string;
|
|
@@ -19,6 +24,6 @@ export type Uuid = () => string;
|
|
|
19
24
|
export declare const memoryOperationMap: (uuid?: Uuid) => MemoryOperationMap;
|
|
20
25
|
/**
|
|
21
26
|
* Runs a memory-only effect using a fresh memory store.
|
|
22
|
-
* @type {<T>(effect: Effect<MemOp, T>) => Promise<T
|
|
27
|
+
* @type {<T, E>(effect: Effect<MemOp, T, E>) => Promise<Result<T, E>>}
|
|
23
28
|
*/
|
|
24
|
-
export declare const run: <T>(effect: Effect<MemOp, T>) => Promise<T
|
|
29
|
+
export declare const run: <T, E>(effect: Effect<MemOp, T, E>) => Promise<Result<T, E>>;
|
|
@@ -2,13 +2,16 @@
|
|
|
2
2
|
* Node.js interpreter helpers for memory effects.
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { Effect, ToAsyncOperationMap } from '../../types.ts'
|
|
7
|
+
* @import { Result } from '../../../types/result/types.ts'
|
|
8
|
+
* @import { Key, MemOp } from '../../memory/types.ts'
|
|
5
9
|
*/
|
|
6
10
|
|
|
7
11
|
import { randomUUID } from 'node:crypto'
|
|
8
12
|
import { asyncRun } from '../../module.mjs'
|
|
9
|
-
|
|
13
|
+
import { ok } from '../../../types/result/module.f.mjs'
|
|
10
14
|
import { asBase, asNominal } from '../../memory/module.f.mjs'
|
|
11
|
-
/** @import { Key, MemOp } from '../../memory/types.ts' */
|
|
12
15
|
|
|
13
16
|
/** @typedef {ToAsyncOperationMap<MemOp>} MemoryOperationMap */
|
|
14
17
|
|
|
@@ -36,24 +39,25 @@ export const memoryOperationMap = (uuid = randomUUID) => {
|
|
|
36
39
|
/** @type {Key<unknown>} */
|
|
37
40
|
const key = asNominal(id)
|
|
38
41
|
store.set(id, value)
|
|
39
|
-
return key
|
|
42
|
+
return ok(key)
|
|
40
43
|
},
|
|
41
44
|
memRead: async key => {
|
|
42
45
|
const id = asBase(key)
|
|
43
46
|
if (!store.has(id)) { throw missingKey(id) }
|
|
44
|
-
return store.get(id)
|
|
47
|
+
return ok(store.get(id))
|
|
45
48
|
},
|
|
46
49
|
memWrite: async (key, value) => {
|
|
47
50
|
const id = asBase(key)
|
|
48
51
|
if (!store.has(id)) { throw missingKey(id) }
|
|
49
52
|
store.set(id, value)
|
|
53
|
+
return ok(undefined)
|
|
50
54
|
},
|
|
51
55
|
}
|
|
52
56
|
}
|
|
53
57
|
|
|
54
58
|
/**
|
|
55
59
|
* Runs a memory-only effect using a fresh memory store.
|
|
56
|
-
* @type {<T>(effect: Effect<MemOp, T>) => Promise<T
|
|
60
|
+
* @type {<T, E>(effect: Effect<MemOp, T, E>) => Promise<Result<T, E>>}
|
|
57
61
|
*/
|
|
58
62
|
export const run = effect =>
|
|
59
63
|
asyncRun(/** @type {ToAsyncOperationMap<MemOp>} */ (memoryOperationMap()))(effect)
|
|
@@ -2,17 +2,20 @@
|
|
|
2
2
|
* Node.js interpreter proofs for memory effects.
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { Key, MemOp } from '../../memory/types.ts'
|
|
5
7
|
*/
|
|
6
8
|
|
|
7
9
|
import { asyncRun } from '../../module.mjs'
|
|
10
|
+
import { errorSummary } from '../module.f.mjs'
|
|
8
11
|
import {
|
|
9
12
|
asNominal,
|
|
10
13
|
create, read, write,
|
|
11
14
|
} from '../../memory/module.f.mjs'
|
|
12
|
-
/** @import { Key, MemOp } from '../../memory/types.ts' */
|
|
13
15
|
import { memoryOperationMap, run } from './module.mjs'
|
|
14
16
|
import { assert, assertEq } from '../../../asserts/module.f.mjs'
|
|
15
|
-
import {
|
|
17
|
+
import { unwrap } from "../../../types/result/module.f.mjs"
|
|
18
|
+
import { step, unwrapStep } from '../../module.f.mjs'
|
|
16
19
|
|
|
17
20
|
export const proof = {
|
|
18
21
|
nodeInterpreter: async () => {
|
|
@@ -21,13 +24,17 @@ export const proof = {
|
|
|
21
24
|
key => step(
|
|
22
25
|
write(key, 2),
|
|
23
26
|
() => read(key)))
|
|
24
|
-
|
|
27
|
+
const r = await run(x)
|
|
28
|
+
assert(r[0] === 'ok', r)
|
|
29
|
+
assertEq(r[1], 2)
|
|
25
30
|
},
|
|
26
31
|
reusedOperationMapPersists: async () => {
|
|
27
32
|
const runner = asyncRun(/** @type {import('../../types.ts').ToAsyncOperationMap<MemOp>} */ (memoryOperationMap()))
|
|
28
|
-
|
|
33
|
+
// `unwrapStep` empties the channel, so what the runner hands back is
|
|
34
|
+
// an `ok` and these unwraps are total.
|
|
35
|
+
const key = unwrap(await runner(unwrapStep(create(1), errorSummary)))
|
|
29
36
|
await runner(write(key, 2))
|
|
30
|
-
const result = await runner(read(key))
|
|
37
|
+
const result = unwrap(await runner(unwrapStep(read(key), errorSummary)))
|
|
31
38
|
assertEq(result, 2)
|
|
32
39
|
},
|
|
33
40
|
missingKeyThrows: async () => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Node.js effect runner: interprets `Effect<NodeOp, T>` directly against the
|
|
2
|
+
* Node.js effect runner: interprets `Effect<NodeOp, T, E>` directly against the
|
|
3
3
|
* Node globals and built-in modules (`fs`, `http`, `child_process`, `process`,
|
|
4
4
|
* `fetch`, …).
|
|
5
5
|
*
|
|
@@ -11,9 +11,15 @@
|
|
|
11
11
|
* globals directly instead.
|
|
12
12
|
*
|
|
13
13
|
* @module
|
|
14
|
+
*
|
|
15
|
+
* @import { Effect } from '../types.ts'
|
|
16
|
+
* @import { IoResult, Server as EffectServer, Headers, Module, NodeOp, RequestListener as Erl, NodeProgram, NodeProgramOptions, WriteConsoles, TestContext, TestFn, } from './types.ts'
|
|
17
|
+
* @import { Result } from '../../types/result/types.ts'
|
|
18
|
+
* @import { StringMap } from '../../types/object/types.ts'
|
|
14
19
|
*/
|
|
15
20
|
import type { Effect } from '../types.ts';
|
|
16
21
|
import type { Headers, NodeOp, NodeProgram } from './types.ts';
|
|
22
|
+
import type { Result } from '../../types/result/types.ts';
|
|
17
23
|
import type { StringMap } from '../../types/object/types.ts';
|
|
18
24
|
export type _Server = {
|
|
19
25
|
readonly listen: (port: number) => void;
|
|
@@ -29,7 +35,7 @@ export type _ServerResponse = {
|
|
|
29
35
|
readonly end: (body: Uint8Array) => void;
|
|
30
36
|
};
|
|
31
37
|
export type _RequestListener = (req: _IncomingMessage, res: _ServerResponse) => Promise<void>;
|
|
32
|
-
export type _EffectToPromise = <T>(effect: Effect<NodeOp, T>) => Promise<T
|
|
38
|
+
export type _EffectToPromise = <T, E>(effect: Effect<NodeOp, T, E>) => Promise<Result<T, E>>;
|
|
33
39
|
export type _FrameworkRegister = (name: string, fn: () => Promise<void>) => Promise<void>;
|
|
34
40
|
/**
|
|
35
41
|
* Runs a `NodeProgram` against the real Node globals and process arguments,
|
|
@@ -1,42 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js effect operations: filesystem (`mkdir`, `readFile`, `readdir`,
|
|
3
|
+
* `writeFile`, `rm`, `access`, plus the `readUtf8File`/`writeUtf8File` text
|
|
4
|
+
* helpers), networking (`fetch`, `createServer`, `listen`),
|
|
5
|
+
* subprocess `exec`, `log`/`error` (wrappers over `write`), `import_`, `now`,
|
|
6
|
+
* `sandbox`, `forever`, and `all`/`both` parallelism; defines the
|
|
7
|
+
* `NodeOp`/`NodeProgram` types used by the Node runner.
|
|
8
|
+
*
|
|
9
|
+
* See `./types.ts` for the type-level API.
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*
|
|
13
|
+
* @import { Vec } from '../../types/bit_vec/types.ts'
|
|
14
|
+
* @import { Result } from '../../types/result/types.ts'
|
|
15
|
+
* @import { Commands, CommandSet, Effect, Func, NotImplemented, Operation } from '../types.ts'
|
|
16
|
+
* @import { List } from '../list/types.ts'
|
|
17
|
+
* @import { All, Access, Await, Console, CreateExclusive, CreateServer, Dirent, Engine, Env, Exec, ExecResult, Fetch, FileStat, Forever, Fs, Headers, Http, IncomingMessage, Import, IoChannel, IoError, IoErrorInfo, Listen, MakeDirectoryOptions, Mkdir, Module, Now, NodeOp, NodeProgramOptions, RandomInt, Read, ReadBytes, ReadConsoles, ReadFile, Readdir, ReaddirOptions, RequestListener, Rename, Rm, Sandbox, SandboxResult, Server, ServerResponse, Stat, Test, TestContext, TestFn, Write, WriteBytes, WriteConsoles, WriteFile, _UtfList, _WriteLoop } from './types.ts'
|
|
18
|
+
*/
|
|
1
19
|
import type { Vec } from '../../types/bit_vec/types.ts';
|
|
2
|
-
import type {
|
|
20
|
+
import type { Result } from '../../types/result/types.ts';
|
|
21
|
+
import type { Commands, Effect, Func, NotImplemented, Operation } from '../types.ts';
|
|
3
22
|
import type { List } from '../list/types.ts';
|
|
4
|
-
import type { All, Access, Await, Console, CreateExclusive, CreateServer, Engine, Exec, Fetch, Forever, Import,
|
|
5
|
-
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
23
|
+
import type { All, Access, Await, Console, CreateExclusive, CreateServer, Engine, Exec, Fetch, Forever, Import, IoChannel, IoError, IoErrorInfo, Listen, Mkdir, Now, NodeOp, RandomInt, Read, ReadBytes, ReadConsoles, ReadFile, Readdir, RequestListener, Rename, Rm, Sandbox, Server, Stat, Test, Write, WriteBytes, WriteFile } from './types.ts';
|
|
24
|
+
/**
|
|
25
|
+
* Builds a normalized host error. The constructor exists so the shape is
|
|
26
|
+
* written once: every runner reports its failures through it, and a consumer
|
|
27
|
+
* matching on `'ioError'` knows what the payload holds.
|
|
28
|
+
*
|
|
29
|
+
* @type {(info: IoErrorInfo) => IoError}
|
|
30
|
+
*/
|
|
31
|
+
export declare const ioError: (info: IoErrorInfo) => IoError;
|
|
32
|
+
/**
|
|
33
|
+
* Normalizes a **thrown** value into an {@link IoError}: the OS error code when
|
|
34
|
+
* the host attached a string one, and a message that is the `Error`'s own or
|
|
35
|
+
* the value's string form.
|
|
36
|
+
*
|
|
37
|
+
* This is the boundary where an impure runner's `catch` becomes ordinary effect
|
|
38
|
+
* data. Nothing past it sees the thrown object, which is the point — a stack, a
|
|
39
|
+
* `cause`, and arbitrary own properties do not survive a wire hop, and a
|
|
40
|
+
* program that branched on them would be reading the host's implementation
|
|
41
|
+
* rather than the operation's contract.
|
|
42
|
+
*
|
|
43
|
+
* @type {(e: unknown) => IoError}
|
|
44
|
+
*/
|
|
45
|
+
export declare const toIoError: (e: unknown) => IoError;
|
|
17
46
|
/**
|
|
18
47
|
* True if `e` is a "file or directory does not exist" (`ENOENT`) error.
|
|
19
48
|
*
|
|
20
|
-
* Node's filesystem rejections are `Error`s carrying `code: 'ENOENT'
|
|
21
|
-
*
|
|
22
|
-
* only the missing-path case (e.g. a fresh
|
|
23
|
-
* failures (permissions, corruption) rather
|
|
49
|
+
* Node's filesystem rejections are `Error`s carrying `code: 'ENOENT'`, which
|
|
50
|
+
* {@link toIoError} keeps; the virtual interpreter reports the same code for
|
|
51
|
+
* absent paths. Lets callers swallow only the missing-path case (e.g. a fresh
|
|
52
|
+
* store) while propagating genuine failures (permissions, corruption) rather
|
|
53
|
+
* than masking them.
|
|
54
|
+
*
|
|
55
|
+
* A {@link NotImplemented} is never "not found": a runner that cannot perform
|
|
56
|
+
* the operation has not looked for the path at all, so the two must not
|
|
57
|
+
* collapse into one benign branch — which is exactly what a bare `unknown`
|
|
58
|
+
* error channel used to allow.
|
|
59
|
+
*
|
|
60
|
+
* @type {(e: IoChannel) => boolean}
|
|
61
|
+
*/
|
|
62
|
+
export declare const isNotFound: (e: IoChannel) => boolean;
|
|
63
|
+
/**
|
|
64
|
+
* The commands of {@link nodeCommandSet}, in the form a partial runner tests
|
|
65
|
+
* membership against. The cast is the one `Object.keys` always needs: it
|
|
66
|
+
* answers `string[]` for a record whose keys the type system knows exactly.
|
|
24
67
|
*
|
|
25
|
-
* @type {
|
|
68
|
+
* @type {Commands<NodeOp>}
|
|
26
69
|
*/
|
|
27
|
-
export declare const
|
|
70
|
+
export declare const nodeCommands: Commands<NodeOp>;
|
|
28
71
|
/**
|
|
29
72
|
* To run the operation `O` should be known by the runner/engine.
|
|
30
|
-
* This is the reason why we merge `O` with `All` in the
|
|
73
|
+
* This is the reason why we merge `O` with `All` in the resulting effect.
|
|
74
|
+
*/
|
|
75
|
+
export declare const all: <O extends Operation, T, E>(...a: readonly Effect<O, T, E>[]) => Effect<O | All, readonly Result<T, E>[], NotImplemented>;
|
|
76
|
+
/**
|
|
77
|
+
* {@link all} in the `ok` channel: collects the values when every effect
|
|
78
|
+
* succeeded, and answers with the first failure otherwise.
|
|
79
|
+
*
|
|
80
|
+
* `all` alone cannot serve a fallible chain. Its envelope is the runner's
|
|
81
|
+
* (`OpResult`, saying whether the *operation* could be dispatched), so handing
|
|
82
|
+
* it `Effect`s nests one `Result` inside another and the caller receives
|
|
83
|
+
* `readonly Result<T, E>[]`. That has to be collapsed before the chain can
|
|
84
|
+
* `step` again, and a continuation that forgets to is the value-discarding
|
|
85
|
+
* hazard this migration exists to remove — one level in, where it is harder to
|
|
86
|
+
* see.
|
|
87
|
+
*
|
|
88
|
+
* **Every effect still runs.** The short-circuit is in the *result*, not in the
|
|
89
|
+
* execution: `all` performs them concurrently and this reads the answers once
|
|
90
|
+
* they are all in, so a failure does not cancel its siblings the way it stops
|
|
91
|
+
* the sequential `forEachStep` in `./module.f.mjs`. The error channel
|
|
92
|
+
* unions the runner's
|
|
93
|
+
* `NotImplemented` with the effects' own `E` for the same reason every other
|
|
94
|
+
* step does — either can be what went wrong.
|
|
95
|
+
*
|
|
96
|
+
* @type {<O extends Operation, T, E>(...a: readonly Effect<O, T, E>[]) => Effect<O | All, readonly T[], NotImplemented | E>}
|
|
31
97
|
*/
|
|
32
|
-
export declare const
|
|
98
|
+
export declare const allOk: <O extends Operation, T, E>(...a: readonly Effect<O, T, E>[]) => Effect<O | All, readonly T[], NotImplemented | E>;
|
|
33
99
|
/**
|
|
34
100
|
* @template {Operation} O0
|
|
35
101
|
* @template T0
|
|
36
|
-
* @
|
|
37
|
-
* @
|
|
102
|
+
* @template E0
|
|
103
|
+
* @param {Effect<O0, T0, E0>} a
|
|
104
|
+
* @returns {<O1 extends Operation, T1, E1>(b: Effect<O1, T1, E1>) => Effect<O0 | O1 | All, readonly[Result<T0, E0>, Result<T1, E1>], NotImplemented>}
|
|
38
105
|
*/
|
|
39
|
-
export declare const both: <O0 extends Operation, T0>(a: Effect<O0, T0>) => <O1 extends Operation, T1>(b: Effect<O1, T1>) => Effect<O0 | O1 | All, readonly [T0, T1]>;
|
|
106
|
+
export declare const both: <O0 extends Operation, T0, E0>(a: Effect<O0, T0, E0>) => <O1 extends Operation, T1, E1>(b: Effect<O1, T1, E1>) => Effect<O0 | O1 | All, readonly [Result<T0, E0>, Result<T1, E1>], NotImplemented>;
|
|
40
107
|
/** @type {Func<Fetch>} */
|
|
41
108
|
export declare const fetch: Func<Fetch>;
|
|
42
109
|
/** @type {Func<Mkdir>} */
|
|
@@ -46,13 +113,13 @@ export declare const readFile: Func<ReadFile>;
|
|
|
46
113
|
/**
|
|
47
114
|
* Reads a file as UTF-8 text.
|
|
48
115
|
*
|
|
49
|
-
* Preserves the
|
|
50
|
-
* on
|
|
51
|
-
* call site.
|
|
116
|
+
* Preserves the error channel instead of unwrapping so callers can
|
|
117
|
+
* pattern-match on it (e.g. convert a failure into a domain-specific error) or
|
|
118
|
+
* `unwrap` at the call site.
|
|
52
119
|
*
|
|
53
|
-
* @type {(path: string) => Effect<ReadFile,
|
|
120
|
+
* @type {(path: string) => Effect<ReadFile, string, IoChannel>}
|
|
54
121
|
*/
|
|
55
|
-
export declare const readUtf8File: (path: string) => Effect<ReadFile,
|
|
122
|
+
export declare const readUtf8File: (path: string) => Effect<ReadFile, string, IoChannel>;
|
|
56
123
|
/** @type {Func<Readdir>} */
|
|
57
124
|
export declare const readdir: Func<Readdir>;
|
|
58
125
|
/** @type {Func<WriteFile>} */
|
|
@@ -60,9 +127,9 @@ export declare const writeFile: Func<WriteFile>;
|
|
|
60
127
|
/**
|
|
61
128
|
* Writes a string to `path` as UTF-8 bytes.
|
|
62
129
|
*
|
|
63
|
-
* @type {(path: string, content: string) => Effect<WriteFile,
|
|
130
|
+
* @type {(path: string, content: string) => Effect<WriteFile, void, IoChannel>}
|
|
64
131
|
*/
|
|
65
|
-
export declare const writeUtf8File: (path: string, content: string) => Effect<WriteFile,
|
|
132
|
+
export declare const writeUtf8File: (path: string, content: string) => Effect<WriteFile, void, IoChannel>;
|
|
66
133
|
/** @type {Func<Rm>} */
|
|
67
134
|
export declare const rm: Func<Rm>;
|
|
68
135
|
/** @type {Func<Rename>} */
|
|
@@ -82,10 +149,10 @@ export declare const writeBytes: Func<WriteBytes>;
|
|
|
82
149
|
/**
|
|
83
150
|
* @template {Operation} O
|
|
84
151
|
* @param {string} path
|
|
85
|
-
* @param {List<O,
|
|
86
|
-
* @returns {Effect<O | WriteBytes | CreateExclusive,
|
|
152
|
+
* @param {List<O, Vec, IoChannel>} e
|
|
153
|
+
* @returns {Effect<O | WriteBytes | CreateExclusive, void, IoChannel>}
|
|
87
154
|
*/
|
|
88
|
-
export declare const writeFromStream: <O extends Operation>(path: string, e: List<O,
|
|
155
|
+
export declare const writeFromStream: <O extends Operation>(path: string, e: List<O, Vec, IoChannel>) => Effect<O | WriteBytes | CreateExclusive, void, IoChannel>;
|
|
89
156
|
/** @type {Func<Stat>} */
|
|
90
157
|
export declare const stat: Func<Stat>;
|
|
91
158
|
export declare const createServer: <O extends Operation>(listener: RequestListener<O>) => Effect<O | CreateServer, Server>;
|
|
@@ -96,12 +163,16 @@ export declare const forever: Func<Forever>;
|
|
|
96
163
|
/** @type {Func<Import>} */
|
|
97
164
|
export declare const import_: Func<Import>;
|
|
98
165
|
/** Emits a `Write` effect to the given named stream. */
|
|
166
|
+
/** @type {Func<Write>} */
|
|
99
167
|
export declare const write: Func<Write>;
|
|
100
168
|
/** Writes a line to `stdout`. Replaces the retired `Log` effect. */
|
|
169
|
+
/** @type {Console} */
|
|
101
170
|
export declare const log: Console;
|
|
102
171
|
/** Writes a line to `stderr`. Replaces the retired `Error` effect. */
|
|
172
|
+
/** @type {Console} */
|
|
103
173
|
export declare const error: Console;
|
|
104
174
|
/** Emits a `Read` effect, yielding the next input byte or `null` at EOF. */
|
|
175
|
+
/** @type {Func<Read>} */
|
|
105
176
|
export declare const read: Func<Read>;
|
|
106
177
|
/**
|
|
107
178
|
* Reads one line from `stream` as a pure combinator over the byte-level
|
|
@@ -117,9 +188,12 @@ export declare const read: Func<Read>;
|
|
|
117
188
|
* reversed and decoded once at the terminator, so a large line costs O(n)
|
|
118
189
|
* rather than the O(n²) of copying a growing array on every byte.
|
|
119
190
|
*
|
|
120
|
-
*
|
|
191
|
+
* A failed `read` — a runner without the operation — propagates: the line is
|
|
192
|
+
* not silently truncated into a `null` that a caller would read as EOF.
|
|
193
|
+
*
|
|
194
|
+
* @type {(stream: ReadConsoles) => Effect<Read, string | null, NotImplemented>}
|
|
121
195
|
*/
|
|
122
|
-
export declare const readLine: (stream: ReadConsoles) => Effect<Read, string | null>;
|
|
196
|
+
export declare const readLine: (stream: ReadConsoles) => Effect<Read, string | null, NotImplemented>;
|
|
123
197
|
/** @type {Func<Now>} */
|
|
124
198
|
export declare const now: Func<Now>;
|
|
125
199
|
/**
|
|
@@ -143,18 +217,84 @@ export declare const now: Func<Now>;
|
|
|
143
217
|
* @type {Func<Sandbox>}
|
|
144
218
|
*/
|
|
145
219
|
export declare const sandbox: Func<Sandbox>;
|
|
146
|
-
/** @type {(p: unknown) => Effect<Await, unknown>} */
|
|
147
|
-
export declare const awaitIfPromise: (p: unknown) => Effect<Await, unknown>;
|
|
220
|
+
/** @type {(p: unknown) => Effect<Await, unknown, NotImplemented>} */
|
|
221
|
+
export declare const awaitIfPromise: (p: unknown) => Effect<Await, unknown, NotImplemented>;
|
|
148
222
|
/** @type {Func<Test>} */
|
|
149
223
|
export declare const test: Func<Test>;
|
|
150
224
|
/**
|
|
151
|
-
* Writes an error line to `stderr` and
|
|
225
|
+
* Writes an error line to `stderr` and fails with exit code `1`. The canonical
|
|
152
226
|
* "fail with a message" program for a `NodeProgram`. For non-`1` exit codes,
|
|
153
|
-
* compose `
|
|
227
|
+
* compose `resultMapStep(error(s), () => resultError(n))` directly.
|
|
228
|
+
*
|
|
229
|
+
* **It never succeeds, and the type says so.** `E` is `number` and `T` is
|
|
230
|
+
* `never`, so `step`'s continuation takes a `never` and can never run. That is
|
|
231
|
+
* a continuation nobody reaches, not a compile error: writing one still type-
|
|
232
|
+
* checks, because a function accepting `never` accepts anything. What the type
|
|
233
|
+
* buys is that no *value* can be invented for the success branch, so nothing
|
|
234
|
+
* downstream can proceed as if this had succeeded.
|
|
235
|
+
*
|
|
236
|
+
* **The write's own outcome is deliberately discarded**, which is why this is
|
|
237
|
+
* `resultMapStep` rather than `mapStep`. The program is already failing and
|
|
238
|
+
* the exit code is `1` whether or not `stderr` accepted the bytes; propagating
|
|
239
|
+
* here would hand every caller a "failed to report a failure" branch with no
|
|
240
|
+
* better answer available to it than the one taken here.
|
|
241
|
+
*
|
|
242
|
+
* @type {(s: string) => Effect<Write, never, number>}
|
|
243
|
+
*/
|
|
244
|
+
export declare const errorExit: (s: string) => Effect<Write, never, number>;
|
|
245
|
+
/**
|
|
246
|
+
* The exit code a {@link Program} answered, from whichever branch it came.
|
|
247
|
+
*
|
|
248
|
+
* `Result<0, number>` puts a number at `[1]` on both sides — `ok(0)` for
|
|
249
|
+
* success, `error(n)` for failure — so reading the code never asks which
|
|
250
|
+
* branch produced it, while a caller that cares *whether* it failed still asks
|
|
251
|
+
* `[0]`. That is why the success type is the literal `0` rather than `void`.
|
|
252
|
+
*
|
|
253
|
+
* A non-zero code belongs in the `error` branch and `0` in the `ok` branch; the
|
|
254
|
+
* type cannot say so, since there is no "non-zero number", and nothing depends
|
|
255
|
+
* on it — this reads `[1]` either way.
|
|
256
|
+
*
|
|
257
|
+
* @type {(r: Result<0, number>) => number}
|
|
258
|
+
*/
|
|
259
|
+
export declare const exitCode: (r: Result<0, number>) => number;
|
|
260
|
+
/**
|
|
261
|
+
* Renders a channel error as a human line: an {@link IoError}'s own message, or
|
|
262
|
+
* the command name a runner could not dispatch.
|
|
263
|
+
*
|
|
264
|
+
* @type {(e: IoChannel) => string}
|
|
265
|
+
*/
|
|
266
|
+
export declare const errorMessage: (e: IoChannel) => string;
|
|
267
|
+
/**
|
|
268
|
+
* Renders a channel error for a **remote** caller: the command name for a
|
|
269
|
+
* {@link NotImplemented}, the OS error code for an `IoError`, and nothing else.
|
|
270
|
+
*
|
|
271
|
+
* {@link errorMessage} is for the operator of the program, who is entitled to
|
|
272
|
+
* the host's own words — including the path that failed. A protocol client is
|
|
273
|
+
* not, and the difference is not stylistic: `payload.message` is where the
|
|
274
|
+
* host puts the absolute path it could not read, so answering an MCP tool call
|
|
275
|
+
* with it publishes the server's filesystem layout to whoever is on the other
|
|
276
|
+
* end. The code (`ENOENT`, `EACCES`) says *what* went wrong without saying
|
|
277
|
+
* *where*, which is the part a client can act on anyway.
|
|
278
|
+
*
|
|
279
|
+
* A host that attached no code leaves nothing safe to forward, so the answer is
|
|
280
|
+
* the bare kind. That is deliberate: guessing which part of a free-text message
|
|
281
|
+
* is path-free is exactly the mistake this exists to prevent.
|
|
282
|
+
*
|
|
283
|
+
* @type {(e: IoChannel) => string}
|
|
284
|
+
*/
|
|
285
|
+
export declare const errorSummary: (e: IoChannel) => string;
|
|
286
|
+
/**
|
|
287
|
+
* Ends a program with an exit code that reflects `e`: `ok` yields `0`, and a
|
|
288
|
+
* failure is reported on `stderr` and yields `1` ({@link errorExit}).
|
|
289
|
+
*
|
|
290
|
+
* This is the exit-code policy a `NodeProgram` needs at the end of its chain,
|
|
291
|
+
* and the reason a program does not have to invent one per command. It is the
|
|
292
|
+
* counterpart of {@link isNotFound} at the other end of the channel: where that
|
|
293
|
+
* one asks which failure this is, this one stops asking and reports.
|
|
154
294
|
*
|
|
155
|
-
* @type {(
|
|
295
|
+
* @type {<O extends Operation, T>(e: Effect<O, T, IoChannel>) => Effect<O | Write, 0, number>}
|
|
156
296
|
*/
|
|
157
|
-
export declare const
|
|
297
|
+
export declare const exitStep: <O extends Operation, T>(e: Effect<O, T, IoChannel>) => Effect<O | Write, 0, number>;
|
|
158
298
|
/**
|
|
159
299
|
* Compares semantic versions numerically by major, minor, then patch.
|
|
160
300
|
*
|