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,8 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
*/
|
|
3
|
+
|
|
4
|
+
import { isRepeat, toData } from '../../bnf/data/module.f.mjs'
|
|
3
5
|
import { stringToCodePointList, stringToList } from '../../text/utf16/module.f.mjs'
|
|
4
6
|
import { toArray } from '../../types/list/module.f.mjs'
|
|
5
|
-
import { jsGrammar, tokenizeString, descentParserCpOnly, tokenizeJs, tokenize } from './module.f.mjs'
|
|
7
|
+
import { jsGrammar, jsMatcher, tokenizeString, descentParserCpOnly, tokenizeJs, tokenize } from './module.f.mjs'
|
|
6
8
|
import { assert, assertEq } from '../../asserts/module.f.mjs'
|
|
7
9
|
import { stringifyAsTree } from '../serializer/module.f.mjs'
|
|
8
10
|
import { sort } from '../../types/object/module.f.mjs'
|
|
@@ -22,13 +24,21 @@ const errorAt = s => {
|
|
|
22
24
|
}
|
|
23
25
|
|
|
24
26
|
export const proof = {
|
|
27
|
+
// The whole-file grammar is one repetition of a token, and `toData` records
|
|
28
|
+
// that rather than leaving it as the right-recursive variant `repeat0Plus`
|
|
29
|
+
// builds — which is why the tokenizer reads its entry name from `jsMatcher`
|
|
30
|
+
// instead of naming a rule: the rules that encoded the repetition are gone.
|
|
31
|
+
jsGrammar: () => {
|
|
32
|
+
const [ruleSet, entry] = toData(jsGrammar())
|
|
33
|
+
assert(isRepeat(ruleSet[entry]), JSON.stringify([ruleSet[entry], entry]))
|
|
34
|
+
},
|
|
25
35
|
isValid: [() => {
|
|
26
|
-
const m =
|
|
36
|
+
const [m, entry] = jsMatcher()
|
|
27
37
|
|
|
28
38
|
/** @type {(s: string, expected: boolean) => void} */
|
|
29
39
|
const expect = (s, expected) => {
|
|
30
40
|
const cp = toArray(stringToCodePointList(s))
|
|
31
|
-
const mr = descentParserCpOnly(m,
|
|
41
|
+
const mr = descentParserCpOnly(m, entry, cp)
|
|
32
42
|
const success = mr.success && mr.idx === cp.length
|
|
33
43
|
assertEq(success, expected, JSON.stringify([s, mr]))
|
|
34
44
|
}
|
|
@@ -64,121 +74,121 @@ export const proof = {
|
|
|
64
74
|
],
|
|
65
75
|
tokenizer: [
|
|
66
76
|
() => {
|
|
67
|
-
const m =
|
|
77
|
+
const [m, entry] = jsMatcher()
|
|
68
78
|
const cp = toArray(stringToCodePointList('tr'))
|
|
69
|
-
const mr = descentParserCpOnly(m,
|
|
79
|
+
const mr = descentParserCpOnly(m, entry, cp)
|
|
70
80
|
const seq = mr.ast.sequence[0]
|
|
71
81
|
assert(!(seq instanceof Array), JSON.stringify(mr))
|
|
72
82
|
assertEq(seq.tag, 'id', JSON.stringify(mr))
|
|
73
83
|
},
|
|
74
84
|
() => {
|
|
75
|
-
const m =
|
|
85
|
+
const [m, entry] = jsMatcher()
|
|
76
86
|
const cp = toArray(stringToCodePointList('"tr"'))
|
|
77
|
-
const mr = descentParserCpOnly(m,
|
|
87
|
+
const mr = descentParserCpOnly(m, entry, cp)
|
|
78
88
|
const seq = mr.ast.sequence[0]
|
|
79
89
|
assert(!(seq instanceof Array), JSON.stringify(mr))
|
|
80
90
|
assertEq(seq.tag, 'string', JSON.stringify(mr))
|
|
81
91
|
},
|
|
82
92
|
() => {
|
|
83
|
-
const m =
|
|
93
|
+
const [m, entry] = jsMatcher()
|
|
84
94
|
const cp = toArray(stringToCodePointList('56.7e+5'))
|
|
85
|
-
const mr = descentParserCpOnly(m,
|
|
95
|
+
const mr = descentParserCpOnly(m, entry, cp)
|
|
86
96
|
const seq = mr.ast.sequence[0]
|
|
87
97
|
assert(!(seq instanceof Array), JSON.stringify(mr))
|
|
88
98
|
assertEq(seq.tag, 'number', JSON.stringify(mr))
|
|
89
99
|
},
|
|
90
100
|
() => {
|
|
91
|
-
const m =
|
|
101
|
+
const [m, entry] = jsMatcher()
|
|
92
102
|
const cp = toArray(stringToCodePointList('56n'))
|
|
93
|
-
const mr = descentParserCpOnly(m,
|
|
103
|
+
const mr = descentParserCpOnly(m, entry, cp)
|
|
94
104
|
const seq = mr.ast.sequence[0]
|
|
95
105
|
assert(!(seq instanceof Array), JSON.stringify(mr))
|
|
96
106
|
assertEq(seq.tag, 'number', JSON.stringify(mr))
|
|
97
107
|
},
|
|
98
108
|
() => {
|
|
99
|
-
const m =
|
|
109
|
+
const [m, entry] = jsMatcher()
|
|
100
110
|
const cp = toArray(stringToCodePointList('*'))
|
|
101
|
-
const mr = descentParserCpOnly(m,
|
|
111
|
+
const mr = descentParserCpOnly(m, entry, cp)
|
|
102
112
|
const seq = mr.ast.sequence[0]
|
|
103
113
|
assert(!(seq instanceof Array), JSON.stringify(mr))
|
|
104
114
|
assertEq(seq.tag, '*', JSON.stringify(mr))
|
|
105
115
|
},
|
|
106
116
|
() => {
|
|
107
|
-
const m =
|
|
117
|
+
const [m, entry] = jsMatcher()
|
|
108
118
|
const cp = toArray(stringToCodePointList('**'))
|
|
109
|
-
const mr = descentParserCpOnly(m,
|
|
119
|
+
const mr = descentParserCpOnly(m, entry, cp)
|
|
110
120
|
const seq = mr.ast.sequence[0]
|
|
111
121
|
assert(!(seq instanceof Array), JSON.stringify(mr))
|
|
112
122
|
assertEq(seq.tag, '**', JSON.stringify(mr))
|
|
113
123
|
},
|
|
114
124
|
() => {
|
|
115
|
-
const m =
|
|
125
|
+
const [m, entry] = jsMatcher()
|
|
116
126
|
const cp = toArray(stringToCodePointList('=>'))
|
|
117
|
-
const mr = descentParserCpOnly(m,
|
|
127
|
+
const mr = descentParserCpOnly(m, entry, cp)
|
|
118
128
|
const seq = mr.ast.sequence[0]
|
|
119
129
|
assert(!(seq instanceof Array), JSON.stringify(mr))
|
|
120
130
|
assertEq(seq.tag, '=>', JSON.stringify(mr))
|
|
121
131
|
},
|
|
122
132
|
() => {
|
|
123
|
-
const m =
|
|
133
|
+
const [m, entry] = jsMatcher()
|
|
124
134
|
const cp = toArray(stringToCodePointList('=='))
|
|
125
|
-
const mr = descentParserCpOnly(m,
|
|
135
|
+
const mr = descentParserCpOnly(m, entry, cp)
|
|
126
136
|
const seq = mr.ast.sequence[0]
|
|
127
137
|
assert(!(seq instanceof Array), JSON.stringify(mr))
|
|
128
138
|
assert(!(seq.tag !== '=='), JSON.stringify(mr))
|
|
129
139
|
},
|
|
130
140
|
() => {
|
|
131
|
-
const m =
|
|
141
|
+
const [m, entry] = jsMatcher()
|
|
132
142
|
const cp = toArray(stringToCodePointList('==='))
|
|
133
|
-
const mr = descentParserCpOnly(m,
|
|
143
|
+
const mr = descentParserCpOnly(m, entry, cp)
|
|
134
144
|
const seq = mr.ast.sequence[0]
|
|
135
145
|
assert(!(seq instanceof Array), JSON.stringify(mr))
|
|
136
146
|
assert(!(seq.tag !== '==='), JSON.stringify(mr))
|
|
137
147
|
},
|
|
138
148
|
() => {
|
|
139
|
-
const m =
|
|
149
|
+
const [m, entry] = jsMatcher()
|
|
140
150
|
const cp = toArray(stringToCodePointList('='))
|
|
141
|
-
const mr = descentParserCpOnly(m,
|
|
151
|
+
const mr = descentParserCpOnly(m, entry, cp)
|
|
142
152
|
const seq = mr.ast.sequence[0]
|
|
143
153
|
assert(!(seq instanceof Array), JSON.stringify(mr))
|
|
144
154
|
assertEq(seq.tag, '=', JSON.stringify(mr))
|
|
145
155
|
},
|
|
146
156
|
() => {
|
|
147
|
-
const m =
|
|
157
|
+
const [m, entry] = jsMatcher()
|
|
148
158
|
const cp = toArray(stringToCodePointList(' '))
|
|
149
|
-
const mr = descentParserCpOnly(m,
|
|
159
|
+
const mr = descentParserCpOnly(m, entry, cp)
|
|
150
160
|
const seq = mr.ast.sequence[0]
|
|
151
161
|
assert(!(seq instanceof Array), JSON.stringify(mr))
|
|
152
162
|
assertEq(seq.tag, ' ', JSON.stringify(mr))
|
|
153
163
|
},
|
|
154
164
|
() => {
|
|
155
|
-
const m =
|
|
165
|
+
const [m, entry] = jsMatcher()
|
|
156
166
|
const cp = toArray(stringToCodePointList('\n'))
|
|
157
|
-
const mr = descentParserCpOnly(m,
|
|
167
|
+
const mr = descentParserCpOnly(m, entry, cp)
|
|
158
168
|
const seq = mr.ast.sequence[0]
|
|
159
169
|
assert(!(seq instanceof Array), JSON.stringify(mr))
|
|
160
170
|
assertEq(seq.tag, '\n', JSON.stringify(mr))
|
|
161
171
|
},
|
|
162
172
|
() => {
|
|
163
|
-
const m =
|
|
173
|
+
const [m, entry] = jsMatcher()
|
|
164
174
|
const cp = toArray(stringToCodePointList('/\n'))
|
|
165
|
-
const mr = descentParserCpOnly(m,
|
|
175
|
+
const mr = descentParserCpOnly(m, entry, cp)
|
|
166
176
|
const seq = mr.ast.sequence[0]
|
|
167
177
|
assert(!(seq instanceof Array), JSON.stringify(mr))
|
|
168
178
|
assertEq(seq.tag, '/', JSON.stringify(mr))
|
|
169
179
|
},
|
|
170
180
|
() => {
|
|
171
|
-
const m =
|
|
181
|
+
const [m, entry] = jsMatcher()
|
|
172
182
|
const cp = toArray(stringToCodePointList('//\n'))
|
|
173
|
-
const mr = descentParserCpOnly(m,
|
|
183
|
+
const mr = descentParserCpOnly(m, entry, cp)
|
|
174
184
|
const seq = mr.ast.sequence[0]
|
|
175
185
|
assert(!(seq instanceof Array), JSON.stringify(mr))
|
|
176
186
|
assertEq(seq.tag, 'comment', JSON.stringify(mr))
|
|
177
187
|
},
|
|
178
188
|
() => {
|
|
179
|
-
const m =
|
|
189
|
+
const [m, entry] = jsMatcher()
|
|
180
190
|
const cp = toArray(stringToCodePointList('/*1*/'))
|
|
181
|
-
const mr = descentParserCpOnly(m,
|
|
191
|
+
const mr = descentParserCpOnly(m, entry, cp)
|
|
182
192
|
const seq = mr.ast.sequence[0]
|
|
183
193
|
assert(!(seq instanceof Array), JSON.stringify(mr))
|
|
184
194
|
assertEq(seq.tag, 'comment', JSON.stringify(mr))
|
|
@@ -287,11 +297,11 @@ export const proof = {
|
|
|
287
297
|
},
|
|
288
298
|
() => {
|
|
289
299
|
const result = tokenizeString('0')
|
|
290
|
-
if (result !== '[{"
|
|
300
|
+
if (result !== '[{"kind":"number","value":"0"},{"kind":"eof"}]') { throw result }
|
|
291
301
|
},
|
|
292
302
|
() => {
|
|
293
303
|
const result = tokenizeString('[0]')
|
|
294
|
-
if (result !== '[{"kind":"["},{"
|
|
304
|
+
if (result !== '[{"kind":"["},{"kind":"number","value":"0"},{"kind":"]"},{"kind":"eof"}]') { throw result }
|
|
295
305
|
},
|
|
296
306
|
() => {
|
|
297
307
|
const result = tokenizeString('00')
|
|
@@ -303,15 +313,15 @@ export const proof = {
|
|
|
303
313
|
},
|
|
304
314
|
() => {
|
|
305
315
|
const result = tokenizeString('123456789012345678901234567890')
|
|
306
|
-
if (result !== '[{"
|
|
316
|
+
if (result !== '[{"kind":"number","value":"123456789012345678901234567890"},{"kind":"eof"}]') { throw result }
|
|
307
317
|
},
|
|
308
318
|
() => {
|
|
309
319
|
const result = tokenizeString('{90}')
|
|
310
|
-
if (result !== '[{"kind":"{"},{"
|
|
320
|
+
if (result !== '[{"kind":"{"},{"kind":"number","value":"90"},{"kind":"}"},{"kind":"eof"}]') { throw result }
|
|
311
321
|
},
|
|
312
322
|
() => {
|
|
313
323
|
const result = tokenizeString('1 2')
|
|
314
|
-
if (result !== '[{"
|
|
324
|
+
if (result !== '[{"kind":"number","value":"1"},{"kind":"ws"},{"kind":"number","value":"2"},{"kind":"eof"}]') { throw result }
|
|
315
325
|
},
|
|
316
326
|
() => {
|
|
317
327
|
const result = tokenizeString('0. 2')
|
|
@@ -319,7 +329,7 @@ export const proof = {
|
|
|
319
329
|
},
|
|
320
330
|
() => {
|
|
321
331
|
const result = tokenizeString('10-0')
|
|
322
|
-
if (result !== '[{"
|
|
332
|
+
if (result !== '[{"kind":"number","value":"10"},{"kind":"-"},{"kind":"number","value":"0"},{"kind":"eof"}]') { throw result }
|
|
323
333
|
},
|
|
324
334
|
() => {
|
|
325
335
|
const result = tokenizeString('9a:')
|
|
@@ -327,11 +337,11 @@ export const proof = {
|
|
|
327
337
|
},
|
|
328
338
|
() => {
|
|
329
339
|
const result = tokenizeString('-10')
|
|
330
|
-
if (result !== '[{"kind":"-"},{"
|
|
340
|
+
if (result !== '[{"kind":"-"},{"kind":"number","value":"10"},{"kind":"eof"}]') { throw result }
|
|
331
341
|
},
|
|
332
342
|
() => {
|
|
333
343
|
const result = tokenizeString('-0')
|
|
334
|
-
if (result !== '[{"kind":"-"},{"
|
|
344
|
+
if (result !== '[{"kind":"-"},{"kind":"number","value":"0"},{"kind":"eof"}]') { throw result }
|
|
335
345
|
},
|
|
336
346
|
() => {
|
|
337
347
|
const result = tokenizeString('-00')
|
|
@@ -339,15 +349,15 @@ export const proof = {
|
|
|
339
349
|
},
|
|
340
350
|
() => {
|
|
341
351
|
const result = tokenizeString('-.123')
|
|
342
|
-
if (result !== '[{"kind":"-"},{"kind":"."},{"
|
|
352
|
+
if (result !== '[{"kind":"-"},{"kind":"."},{"kind":"number","value":"123"},{"kind":"eof"}]') { throw result }
|
|
343
353
|
},
|
|
344
354
|
() => {
|
|
345
355
|
const result = tokenizeString('0.01')
|
|
346
|
-
if (result !== '[{"
|
|
356
|
+
if (result !== '[{"kind":"number","value":"0.01"},{"kind":"eof"}]') { throw result }
|
|
347
357
|
},
|
|
348
358
|
() => {
|
|
349
359
|
const result = tokenizeString('-0.9')
|
|
350
|
-
if (result !== '[{"kind":"-"},{"
|
|
360
|
+
if (result !== '[{"kind":"-"},{"kind":"number","value":"0.9"},{"kind":"eof"}]') { throw result }
|
|
351
361
|
},
|
|
352
362
|
() => {
|
|
353
363
|
const result = tokenizeString('-0.')
|
|
@@ -359,11 +369,11 @@ export const proof = {
|
|
|
359
369
|
},
|
|
360
370
|
() => {
|
|
361
371
|
const result = tokenizeString('12.34')
|
|
362
|
-
if (result !== '[{"
|
|
372
|
+
if (result !== '[{"kind":"number","value":"12.34"},{"kind":"eof"}]') { throw result }
|
|
363
373
|
},
|
|
364
374
|
() => {
|
|
365
375
|
const result = tokenizeString('-12.00')
|
|
366
|
-
if (result !== '[{"kind":"-"},{"
|
|
376
|
+
if (result !== '[{"kind":"-"},{"kind":"number","value":"12.00"},{"kind":"eof"}]') { throw result }
|
|
367
377
|
},
|
|
368
378
|
() => {
|
|
369
379
|
const result = tokenizeString('-12.')
|
|
@@ -375,27 +385,27 @@ export const proof = {
|
|
|
375
385
|
},
|
|
376
386
|
() => {
|
|
377
387
|
const result = tokenizeString('0e1')
|
|
378
|
-
if (result !== '[{"
|
|
388
|
+
if (result !== '[{"kind":"number","value":"0e1"},{"kind":"eof"}]') { throw result }
|
|
379
389
|
},
|
|
380
390
|
() => {
|
|
381
391
|
const result = tokenizeString('0e+2')
|
|
382
|
-
if (result !== '[{"
|
|
392
|
+
if (result !== '[{"kind":"number","value":"0e+2"},{"kind":"eof"}]') { throw result }
|
|
383
393
|
},
|
|
384
394
|
() => {
|
|
385
395
|
const result = tokenizeString('0e-0')
|
|
386
|
-
if (result !== '[{"
|
|
396
|
+
if (result !== '[{"kind":"number","value":"0e-0"},{"kind":"eof"}]') { throw result }
|
|
387
397
|
},
|
|
388
398
|
() => {
|
|
389
399
|
const result = tokenizeString('12e0000')
|
|
390
|
-
if (result !== '[{"
|
|
400
|
+
if (result !== '[{"kind":"number","value":"12e0000"},{"kind":"eof"}]') { throw result }
|
|
391
401
|
},
|
|
392
402
|
() => {
|
|
393
403
|
const result = tokenizeString('-12e-0001')
|
|
394
|
-
if (result !== '[{"kind":"-"},{"
|
|
404
|
+
if (result !== '[{"kind":"-"},{"kind":"number","value":"12e-0001"},{"kind":"eof"}]') { throw result }
|
|
395
405
|
},
|
|
396
406
|
() => {
|
|
397
407
|
const result = tokenizeString('-12.34e1234')
|
|
398
|
-
if (result !== '[{"kind":"-"},{"
|
|
408
|
+
if (result !== '[{"kind":"-"},{"kind":"number","value":"12.34e1234"},{"kind":"eof"}]') { throw result }
|
|
399
409
|
},
|
|
400
410
|
() => {
|
|
401
411
|
const result = tokenizeString('0e')
|
|
@@ -415,11 +425,11 @@ export const proof = {
|
|
|
415
425
|
},
|
|
416
426
|
() => {
|
|
417
427
|
const result = tokenizeString('123 _123')
|
|
418
|
-
if (result !== '[{"
|
|
428
|
+
if (result !== '[{"kind":"number","value":"123"},{"kind":"ws"},{"kind":"id","value":"_123"},{"kind":"eof"}]') { throw result }
|
|
419
429
|
},
|
|
420
430
|
() => {
|
|
421
431
|
const result = tokenizeString('123 $123')
|
|
422
|
-
if (result !== '[{"
|
|
432
|
+
if (result !== '[{"kind":"number","value":"123"},{"kind":"ws"},{"kind":"id","value":"$123"},{"kind":"eof"}]') { throw result }
|
|
423
433
|
},
|
|
424
434
|
() => {
|
|
425
435
|
const result = tokenizeString('123_123')
|
|
@@ -474,7 +484,7 @@ export const proof = {
|
|
|
474
484
|
},
|
|
475
485
|
() => {
|
|
476
486
|
const result = tokenizeString('1*2')
|
|
477
|
-
if (result !== '[{"
|
|
487
|
+
if (result !== '[{"kind":"number","value":"1"},{"kind":"*"},{"kind":"number","value":"2"},{"kind":"eof"}]') { throw result }
|
|
478
488
|
},
|
|
479
489
|
() => {
|
|
480
490
|
const result = tokenizeString('( )')
|
|
@@ -883,42 +893,51 @@ export const proof = {
|
|
|
883
893
|
() => {
|
|
884
894
|
// keywords other than true/false/null/undefined become plain ids
|
|
885
895
|
const result = toArray(tokenize(stringToList('break'))(''))
|
|
886
|
-
assertEq(stringify(
|
|
896
|
+
assertEq(stringify(result), '[{"metadata":{"column":1,"line":1,"path":""},"token":{"kind":"id","value":"break"}},{"metadata":{"column":6,"line":1,"path":""},"token":{"kind":"eof"}}]')
|
|
887
897
|
},
|
|
888
898
|
() => {
|
|
889
899
|
const result = toArray(tokenize(stringToList('-10'))(''))
|
|
890
|
-
assertEq(stringify(
|
|
900
|
+
assertEq(stringify(result), '[{"metadata":{"column":2,"line":1,"path":""},"token":{"kind":"number","value":"-10"}},{"metadata":{"column":4,"line":1,"path":""},"token":{"kind":"eof"}}]')
|
|
891
901
|
},
|
|
892
902
|
() => {
|
|
893
903
|
const result = toArray(tokenize(stringToList('-0'))(''))
|
|
894
|
-
assertEq(stringify(
|
|
904
|
+
assertEq(stringify(result), '[{"metadata":{"column":2,"line":1,"path":""},"token":{"kind":"number","value":"-0"}},{"metadata":{"column":3,"line":1,"path":""},"token":{"kind":"eof"}}]')
|
|
895
905
|
},
|
|
896
906
|
() => {
|
|
897
907
|
const result = toArray(tokenize(stringToList('-1234567890n'))(''))
|
|
898
|
-
assertEq(stringify(
|
|
908
|
+
assertEq(stringify(result), '[{"metadata":{"column":2,"line":1,"path":""},"token":{"kind":"bigint","value":-1234567890n}},{"metadata":{"column":13,"line":1,"path":""},"token":{"kind":"eof"}}]')
|
|
899
909
|
},
|
|
900
910
|
() => {
|
|
901
|
-
//
|
|
911
|
+
// `js/tokenizer` merges '--' into one decrement-operator token, so
|
|
912
|
+
// this never enters (or re-enters) minus-state via a second '-';
|
|
913
|
+
// it's one error straight from the default state's unknown-token
|
|
914
|
+
// fallback, mapping the whole '--' token to a single error.
|
|
902
915
|
const result = toArray(tokenize(stringToList('--'))(''))
|
|
903
|
-
assertEq(stringify(
|
|
916
|
+
assertEq(stringify(result), '[{"metadata":{"column":1,"line":1,"path":""},"token":{"kind":"error","message":"invalid token"}},{"metadata":{"column":3,"line":1,"path":""},"token":{"kind":"eof"}}]')
|
|
904
917
|
},
|
|
905
918
|
() => {
|
|
906
919
|
const result = toArray(tokenize(stringToList('---'))(''))
|
|
907
|
-
assertEq(stringify(
|
|
920
|
+
assertEq(stringify(result), '[{"metadata":{"column":1,"line":1,"path":""},"token":{"kind":"error","message":"invalid token"}},{"metadata":{"column":4,"line":1,"path":""},"token":{"kind":"error","message":"invalid token"}},{"metadata":{"column":4,"line":1,"path":""},"token":{"kind":"eof"}}]')
|
|
908
921
|
},
|
|
909
922
|
() => {
|
|
910
923
|
// dangling '-' at eof
|
|
911
924
|
const result = toArray(tokenize(stringToList('-'))(''))
|
|
912
|
-
assertEq(stringify(
|
|
925
|
+
assertEq(stringify(result), '[{"metadata":{"column":2,"line":1,"path":""},"token":{"kind":"error","message":"invalid token"}},{"metadata":{"column":2,"line":1,"path":""},"token":{"kind":"eof"}}]')
|
|
926
|
+
},
|
|
927
|
+
() => {
|
|
928
|
+
// '-' followed by neither a number/bigint nor eof: one error for
|
|
929
|
+
// the dangling '-', then the following token maps through normally.
|
|
930
|
+
const result = toArray(tokenize(stringToList('-{'))(''))
|
|
931
|
+
assertEq(stringify(result), '[{"metadata":{"column":2,"line":1,"path":""},"token":{"kind":"error","message":"invalid token"}},{"metadata":{"column":2,"line":1,"path":""},"token":{"kind":"{"}},{"metadata":{"column":3,"line":1,"path":""},"token":{"kind":"eof"}}]')
|
|
913
932
|
},
|
|
914
933
|
() => {
|
|
915
934
|
const result = toArray(tokenize(stringToList('[-1234567890n]'))(''))
|
|
916
|
-
assertEq(stringify(
|
|
935
|
+
assertEq(stringify(result), '[{"metadata":{"column":1,"line":1,"path":""},"token":{"kind":"["}},{"metadata":{"column":3,"line":1,"path":""},"token":{"kind":"bigint","value":-1234567890n}},{"metadata":{"column":14,"line":1,"path":""},"token":{"kind":"]"}},{"metadata":{"column":15,"line":1,"path":""},"token":{"kind":"eof"}}]')
|
|
917
936
|
},
|
|
918
937
|
() => {
|
|
919
938
|
// grammar-level tokenizer error position flows through the DJS wrapper unchanged
|
|
920
939
|
const result = toArray(tokenize(stringToList('00'))(''))
|
|
921
|
-
assertEq(stringify(
|
|
940
|
+
assertEq(stringify(result), '[{"metadata":{"column":2,"line":1,"path":""},"token":{"kind":"error","message":"invalid token"}}]')
|
|
922
941
|
},
|
|
923
942
|
],
|
|
924
943
|
// Regression coverage for large inputs: both a file with many short tokens and a
|
|
@@ -5,38 +5,32 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @import { Unknown } from '../types.ts'
|
|
7
7
|
* @import { Result } from '../../types/result/types.ts'
|
|
8
|
-
* @import { List } from '../../types/list/types.ts'
|
|
9
|
-
* @import { OrderedMap } from '../../types/ordered_map/types.ts'
|
|
10
8
|
* @import { ParseError } from '../parser/types.ts'
|
|
11
9
|
* @import { AstModule } from '../ast/types.ts'
|
|
10
|
+
* @import { Operation } from '../../effects/types.ts'
|
|
11
|
+
* @import { IoChannel } from '../../effects/node/types.ts'
|
|
12
12
|
* @import { Effect } from '../../effects/types.ts'
|
|
13
13
|
* @import { ReadFile } from '../../effects/node/types.ts'
|
|
14
|
+
* @import { ParseContext } from './types.ts'
|
|
14
15
|
*/
|
|
15
16
|
import type { Unknown } from '../types.ts';
|
|
16
|
-
import type { Result } from '../../types/result/types.ts';
|
|
17
|
-
import type { List } from '../../types/list/types.ts';
|
|
18
|
-
import type { OrderedMap } from '../../types/ordered_map/types.ts';
|
|
19
17
|
import type { ParseError } from '../parser/types.ts';
|
|
20
18
|
import type { Effect } from '../../effects/types.ts';
|
|
21
19
|
import type { ReadFile } from '../../effects/node/types.ts';
|
|
22
|
-
export type ParseContext = {
|
|
23
|
-
readonly complete: OrderedMap<djsResult>;
|
|
24
|
-
readonly stack: List<string>;
|
|
25
|
-
readonly error: ParseError | null;
|
|
26
|
-
};
|
|
27
|
-
export type djsResult = {
|
|
28
|
-
djs: Unknown;
|
|
29
|
-
};
|
|
30
20
|
/**
|
|
31
|
-
* Transpiles
|
|
21
|
+
* Transpiles the file at `path` into a single `Unknown` value.
|
|
22
|
+
*
|
|
23
|
+
* The extension names its language: a `.json` file is a JSON document, read by
|
|
24
|
+
* `fjs/media/json`, and anything else is a FunctionalScript module, whose
|
|
25
|
+
* imports are resolved recursively — each of them a module too, whatever it is
|
|
26
|
+
* called ([spec: the `__proto__` key](../../../spec/README.md#the-__proto__-key)).
|
|
32
27
|
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* on a parse failure or circular dependency.
|
|
28
|
+
* Returns `['ok', value]` on success, or `['error', ParseError]` on a parse
|
|
29
|
+
* failure, a missing file, or a circular dependency.
|
|
36
30
|
*
|
|
37
|
-
* @type {(path: string) => Effect<ReadFile,
|
|
31
|
+
* @type {(path: string) => Effect<ReadFile, Unknown, ParseError>}
|
|
38
32
|
*/
|
|
39
|
-
export declare const transpile: (path: string) => Effect<ReadFile,
|
|
33
|
+
export declare const transpile: (path: string) => Effect<ReadFile, Unknown, ParseError>;
|
|
40
34
|
export declare const proof: {
|
|
41
35
|
throw: {
|
|
42
36
|
mapDjsUnresolvedImport: () => Unknown;
|