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
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @import { TNode } from '../types/types.ts'
|
|
3
|
+
*/
|
|
4
|
+
|
|
1
5
|
import { set as setSet } from './module.f.mjs'
|
|
2
|
-
/** @import { TNode } from '../types/types.ts' */
|
|
3
6
|
import { cmp } from '../../string/module.f.mjs'
|
|
4
7
|
import { stringify } from '../../../media/json/module.f.mjs'
|
|
5
8
|
import { sort } from '../../object/module.f.mjs'
|
|
@@ -421,6 +424,18 @@ const test = [
|
|
|
421
424
|
jsonStr(replacedSecond),
|
|
422
425
|
'[[["1"],"100",["121","144"]],"16",[["169"],"25",["36"]],"4-updated",[["49"],"64",["81","9"]]]',
|
|
423
426
|
)
|
|
427
|
+
},
|
|
428
|
+
|
|
429
|
+
// Replacing the first value of a two-value leaf exercises the
|
|
430
|
+
// `x.length === 2` arm of the `i === 1` "replace" case, which the
|
|
431
|
+
// fixtures above never reach — their two-value-leaf replaces all land on
|
|
432
|
+
// the second value.
|
|
433
|
+
() => {
|
|
434
|
+
/** @type {TNode<string>} */
|
|
435
|
+
const _map = set(['1'])('2')
|
|
436
|
+
assertEq(jsonStr(_map), '["1","2"]')
|
|
437
|
+
const replaced = replace(_map)('1')(() => '1-updated')
|
|
438
|
+
assertEq(jsonStr(replaced), '["1-updated","2"]')
|
|
424
439
|
}
|
|
425
440
|
]
|
|
426
441
|
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
* themselves live in `./types.ts`.
|
|
4
4
|
*
|
|
5
5
|
* @module
|
|
6
|
+
*
|
|
7
|
+
* @import { Branch1, Branch3, Branch5, TNode } from './types.ts'
|
|
6
8
|
*/
|
|
7
|
-
/** @import { Branch1, Branch3, Branch5, TNode } from './types.ts' */
|
|
8
9
|
import type { Branch1, Branch3, Branch5, TNode } from './types.ts';
|
|
9
10
|
/**
|
|
10
11
|
* Demotes a single-child branch root to its only child.
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
* themselves live in `./types.ts`.
|
|
4
4
|
*
|
|
5
5
|
* @module
|
|
6
|
+
*
|
|
7
|
+
* @import { Branch1, Branch3, Branch5, TNode } from './types.ts'
|
|
6
8
|
*/
|
|
7
|
-
/** @import { Branch1, Branch3, Branch5, TNode } from './types.ts' */
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Demotes a single-child branch root to its only child.
|
|
@@ -1,8 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compact byte-set operations and predicates. See `./types.ts` for the
|
|
3
|
+
* `ByteSet` type.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*
|
|
7
|
+
* @import { RangeMap } from '../range_map/types.ts'
|
|
8
|
+
* @import { ByteSet } from './types.ts'
|
|
9
|
+
*/
|
|
1
10
|
import type { RangeMap } from '../range_map/types.ts';
|
|
2
|
-
import type { SortedSet } from '../sorted_set/types.ts';
|
|
3
11
|
import type { ByteSet } from './types.ts';
|
|
4
12
|
export type _Byte = number;
|
|
5
|
-
/** @import { ByteSet } from './types.ts' */
|
|
6
13
|
/** @typedef {number} _Byte */
|
|
7
14
|
/** @type {(n: _Byte) => (s: ByteSet) => boolean} */
|
|
8
15
|
export declare const has: (n: _Byte) => (s: ByteSet) => boolean;
|
|
@@ -22,5 +29,14 @@ export declare const set: (_: number) => (b: ByteSet) => ByteSet;
|
|
|
22
29
|
export declare const setRange: (_: readonly [number, number]) => (b: ByteSet) => ByteSet;
|
|
23
30
|
/** @type {(n: _Byte) => (s: ByteSet) => ByteSet} */
|
|
24
31
|
export declare const unset: (n: _Byte) => (s: ByteSet) => ByteSet;
|
|
25
|
-
/**
|
|
26
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Re-expresses the set as a range map: one entry per membership boundary,
|
|
34
|
+
* carrying whether the range up to that byte is in the set.
|
|
35
|
+
*
|
|
36
|
+
* The payload is the set's own answer — `boolean` — and nothing more. A caller
|
|
37
|
+
* that needs ranges labelled with something else maps over the result; that
|
|
38
|
+
* labelling belongs to the caller, not to a byte set.
|
|
39
|
+
*
|
|
40
|
+
* @type {(n: ByteSet) => RangeMap<boolean>}
|
|
41
|
+
*/
|
|
42
|
+
export declare const toRangeMap: (n: ByteSet) => RangeMap<boolean>;
|
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
* `ByteSet` type.
|
|
4
4
|
*
|
|
5
5
|
* @module
|
|
6
|
+
*
|
|
7
|
+
* @import { RangeMap } from '../range_map/types.ts'
|
|
8
|
+
* @import { ByteSet } from './types.ts'
|
|
6
9
|
*/
|
|
10
|
+
|
|
7
11
|
import { compose } from '../function/module.f.mjs'
|
|
8
|
-
/** @import { RangeMap } from '../range_map/types.ts' */
|
|
9
|
-
/** @import { SortedSet } from '../sorted_set/types.ts' */
|
|
10
12
|
import { reverse, countdown, flat, map } from '../list/module.f.mjs'
|
|
11
|
-
/** @import { ByteSet } from './types.ts' */
|
|
12
13
|
|
|
13
14
|
/** @typedef {number} _Byte */
|
|
14
15
|
|
|
@@ -55,12 +56,21 @@ export const unset = n => s => difference(s)(one(n))
|
|
|
55
56
|
|
|
56
57
|
const counter = reverse(countdown(256))
|
|
57
58
|
|
|
58
|
-
/** @type {(n: ByteSet) => (
|
|
59
|
-
const toRangeMapOp = n =>
|
|
59
|
+
/** @type {(n: ByteSet) => (i: number) => RangeMap<boolean>} */
|
|
60
|
+
const toRangeMapOp = n => i => {
|
|
60
61
|
const current = has(i + 1)(n)
|
|
61
62
|
const prev = has(i)(n)
|
|
62
|
-
return current === prev ? null : [[prev
|
|
63
|
+
return current === prev ? null : [[prev, i]]
|
|
63
64
|
}
|
|
64
65
|
|
|
65
|
-
/**
|
|
66
|
-
|
|
66
|
+
/**
|
|
67
|
+
* Re-expresses the set as a range map: one entry per membership boundary,
|
|
68
|
+
* carrying whether the range up to that byte is in the set.
|
|
69
|
+
*
|
|
70
|
+
* The payload is the set's own answer — `boolean` — and nothing more. A caller
|
|
71
|
+
* that needs ranges labelled with something else maps over the result; that
|
|
72
|
+
* labelling belongs to the caller, not to a byte set.
|
|
73
|
+
*
|
|
74
|
+
* @type {(n: ByteSet) => RangeMap<boolean>}
|
|
75
|
+
*/
|
|
76
|
+
export const toRangeMap = n => flat(map(toRangeMapOp(n))(counter))
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* @import { Unknown } from '../../media/json/types.ts'
|
|
3
|
+
*/
|
|
2
4
|
|
|
3
5
|
import { has, empty, set, setRange, unset, universe, complement, toRangeMap } from './module.f.mjs'
|
|
4
6
|
import { every, countdown, map, toArray } from '../list/module.f.mjs'
|
|
@@ -63,22 +65,22 @@ export const proof = {
|
|
|
63
65
|
},
|
|
64
66
|
toRangeMap: [
|
|
65
67
|
() => {
|
|
66
|
-
const result = stringify(toArray(toRangeMap(empty)
|
|
68
|
+
const result = stringify(toArray(toRangeMap(empty)))
|
|
67
69
|
assertEq(result, '[]')
|
|
68
70
|
},
|
|
69
71
|
() => {
|
|
70
72
|
const s = set(0)(empty)
|
|
71
|
-
const result = stringify(toArray(toRangeMap(s)
|
|
72
|
-
assertEq(result, '[[
|
|
73
|
+
const result = stringify(toArray(toRangeMap(s)))
|
|
74
|
+
assertEq(result, '[[true,0]]')
|
|
73
75
|
},
|
|
74
76
|
() => {
|
|
75
77
|
const s = setRange([1, 2])(empty)
|
|
76
|
-
const result = stringify(toArray(toRangeMap(s)
|
|
77
|
-
assertEq(result, '[[
|
|
78
|
+
const result = stringify(toArray(toRangeMap(s)))
|
|
79
|
+
assertEq(result, '[[false,0],[true,2]]')
|
|
78
80
|
},
|
|
79
81
|
() => {
|
|
80
|
-
const result = stringify(toArray(toRangeMap(universe)
|
|
81
|
-
assertEq(result, '[[
|
|
82
|
+
const result = stringify(toArray(toRangeMap(universe)))
|
|
83
|
+
assertEq(result, '[[true,255]]')
|
|
82
84
|
},
|
|
83
85
|
]
|
|
84
86
|
}
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
* Comparison function types and helpers.
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { Index, Tuple } from '../../array/types.ts'
|
|
7
|
+
* @import { Cmp1, Cmp2, Compare, Sign } from './types.ts'
|
|
5
8
|
*/
|
|
6
|
-
/** @import { Index, Tuple } from '../../array/types.ts' */
|
|
7
|
-
/** @import { Cmp1, Cmp2, Compare, Sign } from './types.ts' */
|
|
8
9
|
import type { Index, Tuple } from '../../array/types.ts';
|
|
9
10
|
import type { Cmp1, Cmp2, Compare, Sign } from './types.ts';
|
|
10
11
|
/** @type {<T>(cmp: Compare<T>) => (value: T) => Index<3>} */
|
|
@@ -2,18 +2,26 @@
|
|
|
2
2
|
* Comparison function types and helpers.
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { Index, Tuple } from '../../array/types.ts'
|
|
7
|
+
* @import { Cmp1, Cmp2, Compare, Sign } from './types.ts'
|
|
5
8
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
9
|
+
|
|
10
|
+
import { assert } from '../../../asserts/module.f.mjs'
|
|
8
11
|
|
|
9
12
|
/** @type {<T>(cmp: Compare<T>) => (value: T) => Index<3>} */
|
|
10
|
-
export const index3
|
|
11
|
-
|
|
13
|
+
export const index3 = cmp => value => {
|
|
14
|
+
const i = cmp(value) + 1
|
|
15
|
+
assert(i === 0 || i === 1 || i === 2, i)
|
|
16
|
+
return i
|
|
17
|
+
}
|
|
12
18
|
|
|
13
19
|
/** @type {<T>(cmp: Compare<T>) => (v2: Tuple<2, T>) => Index<5>} */
|
|
14
20
|
export const index5 = cmp => ([v0, v1]) => {
|
|
15
21
|
const _0 = cmp(v0)
|
|
16
|
-
|
|
22
|
+
const i = _0 <= 0 ? _0 + 1 : cmp(v1) + 3
|
|
23
|
+
assert(i === 0 || i === 1 || i === 2 || i === 3 || i === 4, i)
|
|
24
|
+
return i
|
|
17
25
|
}
|
|
18
26
|
|
|
19
27
|
/** @type {<A extends Cmp1>(a: A) => <B extends Cmp2<A, B>>(b: B) => Sign} */
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Function combinators: composition, identity, argument flipping, and the
|
|
3
|
+
* chainable `Fn` wrapper.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*
|
|
7
|
+
* @import { Func, Fn } from './types.ts'
|
|
8
|
+
*/
|
|
2
9
|
import type { Func, Fn } from './types.ts';
|
|
3
10
|
/**
|
|
4
11
|
* A postfix compose function.
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Function combinators: composition, identity, argument flipping, and the
|
|
3
|
+
* chainable `Fn` wrapper.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*
|
|
7
|
+
* @import { Func, Fn } from './types.ts'
|
|
8
|
+
*/
|
|
2
9
|
|
|
3
10
|
/**
|
|
4
11
|
* A postfix compose function.
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
* Common higher-order operator type aliases.
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { Fold, Reduce, Scan, StateScan, Unary } from './types.ts'
|
|
5
7
|
*/
|
|
6
8
|
import type { Fold, Reduce, Scan, StateScan, Unary } from './types.ts';
|
|
7
|
-
/** @import { Fold, Reduce, Scan, StateScan, Unary } from './types.ts' */
|
|
8
9
|
/** @type {(separator: string) => Reduce<string>} */
|
|
9
10
|
export declare const join: (separator: string) => Reduce<string>;
|
|
10
11
|
/** @type {Reduce<string>} */
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
* Common higher-order operator type aliases.
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { Fold, Reduce, Scan, StateScan, Unary } from './types.ts'
|
|
5
7
|
*/
|
|
6
8
|
|
|
7
|
-
/** @import { Fold, Reduce, Scan, StateScan, Unary } from './types.ts' */
|
|
8
|
-
|
|
9
9
|
/** @type {(separator: string) => Reduce<string>} */
|
|
10
10
|
export const join = separator => value => prior =>
|
|
11
11
|
`${prior}${separator}${value}`
|
|
@@ -1,8 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Immutable list data structure utilities and combinators.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { Nullable } from '../nullable/types.ts'
|
|
7
|
+
* @import {Scan, StateScan, Fold, Reduce, Equal} from '../function/operator/types.ts'
|
|
8
|
+
* @import { Accumulator, Concat, Entry, List, NonEmpty, NotLazy, Result, Thunk } from './types.ts'
|
|
9
|
+
*/
|
|
1
10
|
import type { Nullable } from '../nullable/types.ts';
|
|
2
11
|
import type { Scan, StateScan, Fold, Reduce, Equal } from '../function/operator/types.ts';
|
|
3
12
|
import type { Accumulator, Entry, List, Result, Thunk } from './types.ts';
|
|
4
|
-
/** @import {Scan, StateScan, Fold, Reduce, Equal} from '../function/operator/types.ts' */
|
|
5
|
-
/** @import { Accumulator, Concat, Entry, List, NonEmpty, NotLazy, Result, Thunk } from './types.ts' */
|
|
6
13
|
export declare const fromArrayLike: <T>(
|
|
7
14
|
/**
|
|
8
15
|
* @template T
|
|
@@ -70,7 +77,7 @@ export declare const reduce: <T>(op: Reduce<T>) => <D>(def: D) => (input: List<T
|
|
|
70
77
|
* Folds `input` with an {@link Accumulator}, short-circuiting to `null` the
|
|
71
78
|
* moment `update` rejects an item; otherwise finalizes with `end`. This is the
|
|
72
79
|
* list-level `try*` sibling of {@link fold} for accumulations that can fail
|
|
73
|
-
* partway through (see the `try*`/`Nullable` convention in `
|
|
80
|
+
* partway through (see the `try*`/`Nullable` convention in `DESIGN.md` §6).
|
|
74
81
|
*
|
|
75
82
|
* @type {<I, T, R>({ init, update, end }: Accumulator<I, T, R>) => (input: List<I>) => Nullable<R>}
|
|
76
83
|
*/
|
|
@@ -2,9 +2,13 @@
|
|
|
2
2
|
* Immutable list data structure utilities and combinators.
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { Nullable } from '../nullable/types.ts'
|
|
7
|
+
* @import {Scan, StateScan, Fold, Reduce, Equal} from '../function/operator/types.ts'
|
|
8
|
+
* @import { Accumulator, Concat, Entry, List, NonEmpty, NotLazy, Result, Thunk } from './types.ts'
|
|
5
9
|
*/
|
|
10
|
+
|
|
6
11
|
import { identity, fn, compose } from '../function/module.f.mjs'
|
|
7
|
-
/** @import { Nullable } from '../nullable/types.ts' */
|
|
8
12
|
import {
|
|
9
13
|
addition,
|
|
10
14
|
logicalNot,
|
|
@@ -13,8 +17,6 @@ import {
|
|
|
13
17
|
foldToScan,
|
|
14
18
|
reduceToScan,
|
|
15
19
|
} from '../function/operator/module.f.mjs'
|
|
16
|
-
/** @import {Scan, StateScan, Fold, Reduce, Equal} from '../function/operator/types.ts' */
|
|
17
|
-
/** @import { Accumulator, Concat, Entry, List, NonEmpty, NotLazy, Result, Thunk } from './types.ts' */
|
|
18
20
|
|
|
19
21
|
export const fromArrayLike =
|
|
20
22
|
/**
|
|
@@ -236,7 +238,7 @@ export const reduce = op => def => compose(scan(reduceToScan(op)))(last(def))
|
|
|
236
238
|
* Folds `input` with an {@link Accumulator}, short-circuiting to `null` the
|
|
237
239
|
* moment `update` rejects an item; otherwise finalizes with `end`. This is the
|
|
238
240
|
* list-level `try*` sibling of {@link fold} for accumulations that can fail
|
|
239
|
-
* partway through (see the `try*`/`Nullable` convention in `
|
|
241
|
+
* partway through (see the `try*`/`Nullable` convention in `DESIGN.md` §6).
|
|
240
242
|
*
|
|
241
243
|
* @type {<I, T, R>({ init, update, end }: Accumulator<I, T, R>) => (input: List<I>) => Nullable<R>}
|
|
242
244
|
*/
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* @import { Unknown } from '../../media/json/types.ts'
|
|
3
|
+
* @import { List } from './types.ts'
|
|
4
|
+
*/
|
|
2
5
|
declare const stringifyTest: () => void;
|
|
3
6
|
declare const countdownTest: () => void;
|
|
4
7
|
declare const flatTest: () => void;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* @import { Unknown } from '../../media/json/types.ts'
|
|
3
|
+
* @import { List } from './types.ts'
|
|
4
|
+
*/
|
|
2
5
|
|
|
3
|
-
/** @import { List } from './types.ts' */
|
|
4
6
|
import { length, concat, countdown, cycle, drop, dropWhile, entries, every, filter, find, flat, flatMap, map, next, reduce, reverse, scan, some, take, takeWhile, toArray, zip, first, filterMap, isEmpty, equal, tryFold } from './module.f.mjs'
|
|
5
7
|
import { stringify } from '../../media/json/module.f.mjs'
|
|
6
8
|
import { sort } from '../object/module.f.mjs'
|
|
@@ -13,9 +13,10 @@
|
|
|
13
13
|
* `ByteSet` is a `bigint`, which `JSON.stringify` cannot serialize.
|
|
14
14
|
*
|
|
15
15
|
* @module
|
|
16
|
+
*
|
|
17
|
+
* @import { Nibble, NibbleSet } from './types.ts'
|
|
16
18
|
*/
|
|
17
19
|
import type { Nibble, NibbleSet } from './types.ts';
|
|
18
|
-
/** @import { Nibble, NibbleSet } from './types.ts' */
|
|
19
20
|
export declare const empty = 0;
|
|
20
21
|
export declare const universe = 65535;
|
|
21
22
|
/** @type {(n: Nibble) => (s: NibbleSet) => boolean} */
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
* `ByteSet` is a `bigint`, which `JSON.stringify` cannot serialize.
|
|
14
14
|
*
|
|
15
15
|
* @module
|
|
16
|
+
*
|
|
17
|
+
* @import { Nibble, NibbleSet } from './types.ts'
|
|
16
18
|
*/
|
|
17
19
|
|
|
18
|
-
/** @import { Nibble, NibbleSet } from './types.ts' */
|
|
19
|
-
|
|
20
20
|
export const empty = 0
|
|
21
21
|
|
|
22
22
|
export const universe = 0xFFFF
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* Nominal typing helpers for branded TypeScript types.
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { Nominal } from './types.ts'
|
|
5
7
|
*/
|
|
6
8
|
import type { Nominal } from './types.ts';
|
|
7
|
-
/** @import { Nominal } from './types.ts' */
|
|
8
9
|
export declare const asNominal: <N extends string, R extends string, B>(b: B) => Nominal<N, R, B>;
|
|
9
10
|
export declare const asBase: <T extends string, R extends string, B>(n: Nominal<T, R, B>) => B;
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
* Nominal typing helpers for branded TypeScript types.
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { Nominal } from './types.ts'
|
|
5
7
|
*/
|
|
6
8
|
|
|
7
9
|
import { identity } from "../function/module.f.mjs"
|
|
8
|
-
/** @import { Nominal } from './types.ts' */
|
|
9
10
|
|
|
10
11
|
export const asNominal =
|
|
11
12
|
/** @type {<N extends string, R extends string, B>(b: B) => Nominal<N, R, B>} */
|
|
@@ -1,15 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utilities for nullable (`null`/`undefined`) value handling.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { Option } from '../option/types.ts'
|
|
7
|
+
* @import { Nullable } from './types.ts'
|
|
8
|
+
*/
|
|
1
9
|
import type { Option } from '../option/types.ts';
|
|
2
10
|
import type { Nullable } from './types.ts';
|
|
3
|
-
/** @import { Option } from '../option/types.ts' */
|
|
4
|
-
/** @import { Nullable } from './types.ts' */
|
|
5
11
|
/**
|
|
6
|
-
*
|
|
12
|
+
* Folds a `Nullable<T>` into a single value: `f` for a present value, `none`
|
|
13
|
+
* for `null`.
|
|
14
|
+
*
|
|
15
|
+
* The two branches carry independent result types, and `R2` lives on its own
|
|
16
|
+
* curry step on purpose. With `T`, `R1` and `R2` all on the outer generic they
|
|
17
|
+
* are instantiated together at `match(f)` — before `none` exists — so `R2` has
|
|
18
|
+
* nothing to infer from and collapses to `unknown`. Inferring it at the second
|
|
19
|
+
* call instead is what lets {@link map} be derived below.
|
|
20
|
+
*
|
|
21
|
+
* @type {<T, R1>(f: (_: T) => R1) => <R2>(none: () => R2) => (_: Nullable<T>) => R1 | R2}
|
|
7
22
|
*/
|
|
8
|
-
export declare const
|
|
23
|
+
export declare const match: <T, R1>(f: (_: T) => R1) => <R2>(none: () => R2) => (_: Nullable<T>) => R1 | R2;
|
|
9
24
|
/**
|
|
10
|
-
*
|
|
25
|
+
* Projects the present value of a `Nullable<T>`, passing `null` through.
|
|
26
|
+
*
|
|
27
|
+
* `map` is `match` with the absent branch fixed to `null`, so the
|
|
28
|
+
* `value === null` guard is written once, in `match`.
|
|
29
|
+
*
|
|
30
|
+
* @type {<T, R>(f: (value: T) => R) => (value: Nullable<T>) => Nullable<R>}
|
|
11
31
|
*/
|
|
12
|
-
export declare const
|
|
32
|
+
export declare const map: <T, R>(f: (value: T) => R) => (value: Nullable<T>) => Nullable<R>;
|
|
13
33
|
/**
|
|
14
34
|
* @type {<T>(value: Nullable<T>) => Option<T>}
|
|
15
35
|
*/
|
|
@@ -2,21 +2,40 @@
|
|
|
2
2
|
* Utilities for nullable (`null`/`undefined`) value handling.
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { Option } from '../option/types.ts'
|
|
7
|
+
* @import { Nullable } from './types.ts'
|
|
5
8
|
*/
|
|
9
|
+
|
|
6
10
|
import { assert } from '../../asserts/module.f.mjs'
|
|
7
11
|
import { fn } from '../function/module.f.mjs'
|
|
8
|
-
/** @import { Option } from '../option/types.ts' */
|
|
9
|
-
/** @import { Nullable } from './types.ts' */
|
|
10
12
|
|
|
11
13
|
/**
|
|
12
|
-
*
|
|
14
|
+
* Folds a `Nullable<T>` into a single value: `f` for a present value, `none`
|
|
15
|
+
* for `null`.
|
|
16
|
+
*
|
|
17
|
+
* The two branches carry independent result types, and `R2` lives on its own
|
|
18
|
+
* curry step on purpose. With `T`, `R1` and `R2` all on the outer generic they
|
|
19
|
+
* are instantiated together at `match(f)` — before `none` exists — so `R2` has
|
|
20
|
+
* nothing to infer from and collapses to `unknown`. Inferring it at the second
|
|
21
|
+
* call instead is what lets {@link map} be derived below.
|
|
22
|
+
*
|
|
23
|
+
* @type {<T, R1>(f: (_: T) => R1) => <R2>(none: () => R2) => (_: Nullable<T>) => R1 | R2}
|
|
13
24
|
*/
|
|
14
|
-
export const
|
|
25
|
+
export const match = f => none => value => value === null ? none() : f(value)
|
|
26
|
+
|
|
27
|
+
/** The absent branch `map` fixes `match`'s `none` to. */
|
|
28
|
+
const noneIsNull = () => null
|
|
15
29
|
|
|
16
30
|
/**
|
|
17
|
-
*
|
|
31
|
+
* Projects the present value of a `Nullable<T>`, passing `null` through.
|
|
32
|
+
*
|
|
33
|
+
* `map` is `match` with the absent branch fixed to `null`, so the
|
|
34
|
+
* `value === null` guard is written once, in `match`.
|
|
35
|
+
*
|
|
36
|
+
* @type {<T, R>(f: (value: T) => R) => (value: Nullable<T>) => Nullable<R>}
|
|
18
37
|
*/
|
|
19
|
-
export const
|
|
38
|
+
export const map = f => match(f)(noneIsNull)
|
|
20
39
|
|
|
21
40
|
/**
|
|
22
41
|
* @type {<T>(value: Nullable<T>) => Option<T>}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @import { Assert } from '../../asserts/types.ts'
|
|
3
|
+
* @import { Equal } from '../ts/types.ts'
|
|
4
|
+
*/
|
|
5
|
+
|
|
1
6
|
import { fromUndefined, map, match, toOption } from './module.f.mjs'
|
|
2
7
|
import { assert, assertEq } from '../../asserts/module.f.mjs'
|
|
3
8
|
|
|
@@ -24,6 +29,16 @@ export const proof = [
|
|
|
24
29
|
assertEq(double(3), 6)
|
|
25
30
|
assertEq(double(null), -1)
|
|
26
31
|
},
|
|
32
|
+
() => {
|
|
33
|
+
// The two branches carry independent result types: `describe` is
|
|
34
|
+
// `(_: Nullable<number>) => number | string`, not one unified `R`.
|
|
35
|
+
/** @type {(v: number) => number} */
|
|
36
|
+
const twice = v => v * 2
|
|
37
|
+
const describe = match(twice)(() => 'none')
|
|
38
|
+
/** @typedef {Assert<Equal<ReturnType<typeof describe>, number | string>>} _Branches */
|
|
39
|
+
assertEq(describe(3), 6)
|
|
40
|
+
assertEq(describe(null), 'none')
|
|
41
|
+
},
|
|
27
42
|
() => {
|
|
28
43
|
assertEq(fromUndefined(undefined), null, 0)
|
|
29
44
|
assertEq(fromUndefined(5), 5, 1)
|
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
* `countOnes` for 32-bit population count using SWAR.
|
|
4
4
|
*
|
|
5
5
|
* @module
|
|
6
|
+
*
|
|
7
|
+
* @import { List } from '../list/types.ts'
|
|
8
|
+
* @import { Reduce } from '../function/operator/types.ts'
|
|
9
|
+
* @import { Sign } from '../function/compare/types.ts'
|
|
6
10
|
*/
|
|
7
11
|
import type { List } from '../list/types.ts';
|
|
8
12
|
import type { Sign } from '../function/compare/types.ts';
|
|
@@ -3,14 +3,15 @@
|
|
|
3
3
|
* `countOnes` for 32-bit population count using SWAR.
|
|
4
4
|
*
|
|
5
5
|
* @module
|
|
6
|
+
*
|
|
7
|
+
* @import { List } from '../list/types.ts'
|
|
8
|
+
* @import { Reduce } from '../function/operator/types.ts'
|
|
9
|
+
* @import { Sign } from '../function/compare/types.ts'
|
|
6
10
|
*/
|
|
7
11
|
|
|
8
12
|
import { reduce } from '../list/module.f.mjs'
|
|
9
|
-
/** @import { List } from '../list/types.ts' */
|
|
10
13
|
import { addition } from '../function/operator/module.f.mjs'
|
|
11
|
-
/** @import { Reduce } from '../function/operator/types.ts' */
|
|
12
14
|
import { cmp as uCmp, min as uMin, max as uMax } from '../function/compare/module.f.mjs'
|
|
13
|
-
/** @import { Sign } from '../function/compare/types.ts' */
|
|
14
15
|
import { fold } from '../../common/monoid/module.f.mjs'
|
|
15
16
|
|
|
16
17
|
/** @type {(input: List<number>) => number} */
|
|
@@ -1,15 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Plain-object helpers: safe property lookup via `at`,
|
|
3
|
-
* between entries and `OrderedMap`.
|
|
2
|
+
* Plain-object helpers: safe property lookup via `at`, structural comparison
|
|
3
|
+
* via `structurallySame`, and conversions between entries and `OrderedMap`.
|
|
4
|
+
* See `./types.ts` for the
|
|
4
5
|
* `OptionalMap`/`RequiredMap`/`StringMap`/`Entry`/`OneKey`/`SingleProperty`/
|
|
5
6
|
* `NotUnion` type-level API.
|
|
6
7
|
*
|
|
7
8
|
* @module
|
|
9
|
+
*
|
|
10
|
+
* @import { List } from '../list/types.ts'
|
|
11
|
+
* @import { Nullable } from '../nullable/types.ts'
|
|
12
|
+
* @import { OrderedMap } from '../ordered_map/types.ts'
|
|
13
|
+
* @import { StringMap, Entry } from './types.ts'
|
|
8
14
|
*/
|
|
9
15
|
import type { List } from '../list/types.ts';
|
|
10
16
|
import type { Nullable } from '../nullable/types.ts';
|
|
11
17
|
import type { OrderedMap } from '../ordered_map/types.ts';
|
|
12
18
|
import type { StringMap, Entry } from './types.ts';
|
|
19
|
+
/**
|
|
20
|
+
* `structurallySame` is implemented in a dependency-free leaf so `fjs/asserts`
|
|
21
|
+
* can use it without the cycle `asserts -> object -> nullable -> asserts`; see
|
|
22
|
+
* `./structurally_same/README.md`. This module is its public home.
|
|
23
|
+
*/
|
|
24
|
+
export { structurallySame } from './structurally_same/module.f.mjs';
|
|
13
25
|
/** @type {(name: string) => <T>(object: StringMap<T>) => Nullable<Exclude<T, undefined>>} */
|
|
14
26
|
export declare const at: (name: string) => <T>(object: StringMap<T>) => Nullable<Exclude<T, undefined>>;
|
|
15
27
|
/** @type {<T>(e: List<Entry<T>>) => List<Entry<T>>} */
|
|
@@ -29,5 +41,15 @@ export declare const isObject: (value: unknown) => value is { readonly [k in str
|
|
|
29
41
|
* @type {<T>(map: StringMap<Exclude<T, undefined>>) => readonly Exclude<T, undefined>[]}
|
|
30
42
|
*/
|
|
31
43
|
export declare const definedValues: <T>(map: StringMap<Exclude<T, undefined>>) => readonly Exclude<T, undefined>[];
|
|
32
|
-
/**
|
|
33
|
-
|
|
44
|
+
/**
|
|
45
|
+
* Returns only the defined (non-undefined) entries of a partial record.
|
|
46
|
+
*
|
|
47
|
+
* `T` is the record's own value type, which `StringMap` already makes
|
|
48
|
+
* optional. Writing the parameter as `StringMap<Exclude<T, undefined>>`
|
|
49
|
+
* instead would leave `T` in a non-inference position, so a record whose value
|
|
50
|
+
* type is itself generic — the leaf-parameterized JSON tree, say — could not
|
|
51
|
+
* be passed at all.
|
|
52
|
+
*
|
|
53
|
+
* @type {<T>(cmd: StringMap<T>) => readonly Entry<T>[]}
|
|
54
|
+
*/
|
|
55
|
+
export declare const definedEntries: <T>(cmd: StringMap<T>) => readonly Entry<T>[];
|