functionalscript 0.44.0 → 0.45.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/fjs/asn.1/proof.f.d.mts +5 -0
- package/fjs/asn.1/proof.f.mjs +15 -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/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/proof.f.mjs +0 -1
- package/fjs/bnf/descent/module.f.d.mts +17 -2
- package/fjs/bnf/descent/module.f.mjs +118 -41
- package/fjs/bnf/descent/proof.f.d.mts +1 -0
- package/fjs/bnf/descent/proof.f.mjs +77 -1
- package/fjs/bnf/descent/types.d.ts +12 -4
- package/fjs/bnf/ll1/module.f.d.mts +28 -2
- package/fjs/bnf/ll1/module.f.mjs +180 -38
- package/fjs/bnf/ll1/proof.f.d.mts +2 -0
- package/fjs/bnf/ll1/proof.f.mjs +62 -1
- package/fjs/bnf/ll1/types.d.ts +14 -8
- 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/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/proof.f.d.mts +3 -1
- package/fjs/cas/cli/proof.f.mjs +3 -1
- package/fjs/cas/evo/module.f.d.mts +7 -13
- package/fjs/cas/evo/module.f.mjs +103 -96
- package/fjs/cas/evo/proof.f.mjs +6 -3
- package/fjs/cas/module.f.mjs +96 -109
- 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 +2 -2
- package/fjs/ci/config/module.f.mjs +2 -2
- package/fjs/ci/nix/proof.f.d.mts +2 -0
- package/fjs/ci/nix/proof.f.mjs +2 -2
- package/fjs/ci/proof.f.d.mts +4 -2
- package/fjs/ci/proof.f.mjs +4 -3
- package/fjs/cli/proof.f.d.mts +4 -2
- package/fjs/cli/proof.f.mjs +4 -2
- 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/secp/proof.f.d.mts +3 -1
- package/fjs/crypto/secp/proof.f.mjs +3 -1
- package/fjs/crypto/sha2/proof.f.d.mts +3 -1
- package/fjs/crypto/sha2/proof.f.mjs +3 -1
- 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 +5 -2
- package/fjs/dev/module.f.mjs +5 -4
- package/fjs/dev/package_json/module.f.d.mts +7 -0
- package/fjs/dev/package_json/module.f.mjs +10 -7
- package/fjs/dev/update/module.f.d.mts +3 -0
- package/fjs/dev/update/module.f.mjs +3 -2
- package/fjs/dev/update/proof.f.d.mts +3 -0
- package/fjs/dev/update/proof.f.mjs +1 -2
- package/fjs/djs/parser/module.f.d.mts +3 -0
- package/fjs/djs/parser/module.f.mjs +18 -0
- package/fjs/djs/parser/proof.f.d.mts +3 -0
- package/fjs/djs/parser/proof.f.mjs +13 -1
- package/fjs/djs/proof.f.d.mts +3 -0
- package/fjs/djs/proof.f.mjs +4 -1
- package/fjs/djs/serializer/module.f.mjs +5 -4
- package/fjs/djs/tokenizer/module.f.mjs +21 -13
- package/fjs/djs/tokenizer/proof.f.d.mts +3 -0
- package/fjs/djs/tokenizer/proof.f.mjs +14 -2
- package/fjs/djs/transpiler/module.f.d.mts +1 -12
- package/fjs/djs/transpiler/module.f.mjs +1 -20
- package/fjs/djs/transpiler/types.d.ts +25 -0
- package/fjs/effects/eff/module.f.d.mts +10 -0
- package/fjs/effects/eff/module.f.mjs +4 -2
- package/fjs/effects/eff/proof.f.d.mts +3 -0
- package/fjs/effects/eff/proof.f.mjs +4 -1
- package/fjs/effects/list/module.f.d.mts +10 -2
- package/fjs/effects/list/module.f.mjs +4 -2
- package/fjs/effects/memory/module.f.d.mts +4 -2
- package/fjs/effects/memory/module.f.mjs +4 -3
- package/fjs/effects/memory/proof.f.d.mts +4 -0
- package/fjs/effects/memory/proof.f.mjs +5 -2
- package/fjs/effects/mock/module.f.d.mts +10 -2
- package/fjs/effects/mock/module.f.mjs +4 -2
- package/fjs/effects/module.d.mts +8 -0
- package/fjs/effects/module.f.d.mts +6 -4
- package/fjs/effects/module.f.mjs +6 -5
- package/fjs/effects/module.mjs +9 -1
- package/fjs/effects/node/memory/module.d.mts +3 -0
- package/fjs/effects/node/memory/module.mjs +3 -2
- package/fjs/effects/node/memory/proof.d.mts +2 -0
- package/fjs/effects/node/memory/proof.mjs +2 -1
- package/fjs/effects/node/module.d.mts +5 -0
- package/fjs/effects/node/module.f.d.mts +17 -12
- package/fjs/effects/node/module.f.mjs +6 -12
- package/fjs/effects/node/module.mjs +5 -17
- package/fjs/effects/node/virtual/module.f.d.mts +6 -3
- package/fjs/effects/node/virtual/module.f.mjs +6 -5
- package/fjs/effects/node/virtual/proof.f.d.mts +4 -1
- package/fjs/effects/node/virtual/proof.f.mjs +13 -1
- package/fjs/effects/proof.f.d.mts +3 -0
- package/fjs/effects/proof.f.mjs +4 -1
- 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 +6 -1
- package/fjs/emergent_testing/module.f.mjs +40 -66
- package/fjs/emergent_testing/proof.f.mjs +5 -5
- 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/proof.f.d.mts +3 -0
- package/fjs/fsm/proof.f.mjs +4 -1
- package/fjs/js/tokenizer/module.f.d.mts +7 -0
- package/fjs/js/tokenizer/module.f.mjs +19 -55
- package/fjs/mcp/module.f.d.mts +36 -1
- package/fjs/mcp/module.f.mjs +9 -7
- package/fjs/mcp/proof.f.d.mts +11 -1
- package/fjs/mcp/proof.f.mjs +11 -18
- package/fjs/media/html/module.f.d.mts +12 -0
- package/fjs/media/html/module.f.mjs +6 -4
- package/fjs/media/html/proof.f.d.mts +3 -0
- package/fjs/media/html/proof.f.mjs +4 -1
- package/fjs/media/json/parser/module.f.d.mts +1 -1
- package/fjs/media/json/parser/module.f.mjs +25 -8
- package/fjs/media/json/parser/types.d.ts +5 -0
- package/fjs/media/json/rtti/proof.f.d.mts +3 -0
- package/fjs/media/json/rtti/proof.f.mjs +3 -3
- package/fjs/media/json/schema/module.f.d.mts +61 -27
- package/fjs/media/json/schema/module.f.mjs +228 -63
- package/fjs/media/json/schema/proof.f.d.mts +41 -0
- package/fjs/media/json/schema/proof.f.mjs +219 -7
- package/fjs/media/json/serializer/module.f.d.mts +13 -0
- package/fjs/media/json/serializer/module.f.mjs +7 -7
- package/fjs/media/json/tokenizer/module.f.d.mts +8 -0
- package/fjs/media/json/tokenizer/module.f.mjs +24 -5
- 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/revision/module.f.d.mts +5 -0
- package/fjs/media/revision/module.f.mjs +8 -11
- package/fjs/media/revision/proof.f.d.mts +4 -0
- package/fjs/media/revision/proof.f.mjs +5 -2
- package/fjs/media/type/module.f.d.mts +28 -11
- package/fjs/media/type/module.f.mjs +69 -85
- package/fjs/media/type/proof.f.d.mts +16 -0
- package/fjs/media/type/proof.f.mjs +44 -4
- package/fjs/module.d.mts +5 -0
- package/fjs/module.f.d.mts +8 -0
- package/fjs/module.f.mjs +4 -2
- package/fjs/module.mjs +6 -0
- package/fjs/path/module.f.d.mts +8 -0
- package/fjs/path/module.f.mjs +4 -2
- package/fjs/proof.f.d.mts +4 -0
- package/fjs/proof.f.mjs +5 -2
- package/fjs/protocol/json_rpc/module.f.d.mts +1 -1
- package/fjs/protocol/json_rpc/module.f.mjs +7 -4
- package/fjs/protocol/json_rpc/proof.f.d.mts +6 -0
- package/fjs/protocol/json_rpc/proof.f.mjs +22 -1
- package/fjs/protocol/mcp/proof.f.d.mts +4 -0
- package/fjs/protocol/mcp/proof.f.mjs +47 -24
- package/fjs/protocol/mcp/stdio/module.f.d.mts +2 -4
- package/fjs/protocol/mcp/stdio/module.f.mjs +1 -8
- package/fjs/protocol/mcp/stdio/proof.f.d.mts +1 -1
- package/fjs/protocol/mcp/stdio/proof.f.mjs +1 -1
- package/fjs/protocol/mcp/stdio/types.d.ts +14 -0
- package/fjs/sul/id/module.f.d.mts +5 -0
- package/fjs/sul/id/module.f.mjs +5 -4
- package/fjs/sul/level/hash/module.f.d.mts +4 -1
- package/fjs/sul/level/hash/module.f.mjs +4 -3
- package/fjs/sul/level/hash/proof.f.d.mts +4 -0
- package/fjs/sul/level/hash/proof.f.mjs +5 -2
- 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 +5 -4
- 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 +21 -3
- package/fjs/text/code_point/module.f.mjs +24 -8
- package/fjs/text/code_point/proof.f.d.mts +1 -0
- package/fjs/text/code_point/proof.f.mjs +28 -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 +4 -1
- package/fjs/text/sgr/module.f.mjs +4 -3
- 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 +31 -33
- package/fjs/text/utf16/proof.f.d.mts +3 -1
- package/fjs/text/utf16/proof.f.mjs +18 -1
- package/fjs/text/utf8/module.f.d.mts +9 -5
- package/fjs/text/utf8/module.f.mjs +16 -18
- package/fjs/types/array/module.f.d.mts +2 -1
- package/fjs/types/array/module.f.mjs +2 -2
- 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 -14
- package/fjs/types/bit_vec/module.f.mjs +61 -71
- package/fjs/types/bit_vec/proof.f.d.mts +6 -0
- package/fjs/types/bit_vec/proof.f.mjs +29 -3
- 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 +9 -9
- 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 +5 -6
- package/fjs/types/btree/set/proof.f.d.mts +3 -0
- package/fjs/types/btree/set/proof.f.mjs +4 -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 +10 -1
- package/fjs/types/byte_set/module.f.mjs +5 -3
- package/fjs/types/byte_set/proof.f.d.mts +3 -1
- package/fjs/types/byte_set/proof.f.mjs +3 -1
- package/fjs/types/function/compare/module.f.d.mts +3 -2
- package/fjs/types/function/compare/module.f.mjs +3 -2
- 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 +9 -2
- package/fjs/types/list/module.f.mjs +5 -3
- 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 +8 -2
- package/fjs/types/nullable/module.f.mjs +4 -2
- 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 +14 -2
- package/fjs/types/object/module.f.mjs +15 -6
- 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 +2 -2
- 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 +35 -2
- package/fjs/types/rtti/common/module.f.mjs +9 -7
- package/fjs/types/rtti/common/proof.f.d.mts +4 -0
- package/fjs/types/rtti/common/proof.f.mjs +5 -2
- package/fjs/types/rtti/data/module.f.d.mts +120 -0
- package/fjs/types/rtti/data/module.f.mjs +1030 -0
- package/fjs/types/rtti/data/proof.f.d.mts +75 -0
- package/fjs/types/rtti/data/proof.f.mjs +566 -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 +38 -0
- package/fjs/types/rtti/parse/module.f.mjs +9 -7
- package/fjs/types/rtti/parse/proof.f.mjs +18 -38
- package/fjs/types/rtti/proof.f.d.mts +3 -1
- package/fjs/types/rtti/proof.f.mjs +3 -1
- package/fjs/types/rtti/ts/module.f.d.mts +68 -9
- package/fjs/types/rtti/ts/module.f.mjs +262 -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 +11 -0
- package/fjs/types/rtti/types.d.ts +40 -0
- package/fjs/types/rtti/validate/module.f.d.mts +36 -1
- package/fjs/types/rtti/validate/module.f.mjs +6 -4
- 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 +31 -1
- package/fjs/types/sorted_set/module.f.mjs +4 -2
- package/fjs/types/sorted_set/proof.f.d.mts +3 -1
- package/fjs/types/sorted_set/proof.f.mjs +3 -1
- 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 +3 -0
- package/fjs/website/module.f.mjs +3 -2
- 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/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/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.d.ts +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/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,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sloth verifiable delay function over a fixed 3072-bit safe prime.
|
|
3
|
+
*
|
|
4
|
+
* See `./types.ts` for the `Sloth` type-level API.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
*
|
|
10
|
+
* ```js
|
|
11
|
+
* import { sloth } from './module.f.mjs'
|
|
12
|
+
*
|
|
13
|
+
* const steps = 4n
|
|
14
|
+
* const x = 42n
|
|
15
|
+
* const y = sloth.eval(steps)(x)
|
|
16
|
+
* if (y === null || !sloth.verify(steps)(x)(y)) { throw y }
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @import { PrimeField } from '../../types/prime_field/types.ts'
|
|
20
|
+
* @import { Nullable } from '../../types/nullable/types.ts'
|
|
21
|
+
* @import { Unary } from '../../types/bigint/types.ts'
|
|
22
|
+
* @import { Sloth } from './types.ts'
|
|
23
|
+
*/
|
|
1
24
|
import type { Sloth } from './types.ts';
|
|
2
|
-
/** @import { PrimeField } from '../../types/prime_field/types.ts' */
|
|
3
|
-
/** @import { Nullable } from '../../types/nullable/types.ts' */
|
|
4
|
-
/** @import { Unary } from '../../types/bigint/types.ts' */
|
|
5
|
-
/** @import { Sloth } from './types.ts' */
|
|
6
25
|
/** Sloth VDF modulus (3072-bit safe prime, same as reference implementations). */
|
|
7
26
|
export declare const p = 170082004324204494273811327264862981553264701145937538369570764779791492622392118654022654452947093285873855529044371650895045691292912712699015605832276411308653107069798639938826015099738961427172366594187783204437869906954750443653318078358839409699824714551430573905637228307966826784684174483831608534979n;
|
|
8
27
|
/**
|
|
@@ -15,12 +15,14 @@
|
|
|
15
15
|
* const y = sloth.eval(steps)(x)
|
|
16
16
|
* if (y === null || !sloth.verify(steps)(x)(y)) { throw y }
|
|
17
17
|
* ```
|
|
18
|
+
*
|
|
19
|
+
* @import { PrimeField } from '../../types/prime_field/types.ts'
|
|
20
|
+
* @import { Nullable } from '../../types/nullable/types.ts'
|
|
21
|
+
* @import { Unary } from '../../types/bigint/types.ts'
|
|
22
|
+
* @import { Sloth } from './types.ts'
|
|
18
23
|
*/
|
|
24
|
+
|
|
19
25
|
import { modSqrt, prime_field } from '../../types/prime_field/module.f.mjs'
|
|
20
|
-
/** @import { PrimeField } from '../../types/prime_field/types.ts' */
|
|
21
|
-
/** @import { Nullable } from '../../types/nullable/types.ts' */
|
|
22
|
-
/** @import { Unary } from '../../types/bigint/types.ts' */
|
|
23
|
-
/** @import { Sloth } from './types.ts' */
|
|
24
26
|
|
|
25
27
|
/** Sloth VDF modulus (3072-bit safe prime, same as reference implementations). */
|
|
26
28
|
export const p =
|
package/fjs/dev/module.f.d.mts
CHANGED
|
@@ -2,12 +2,15 @@
|
|
|
2
2
|
* Development utilities for indexing modules and loading FunctionalScript files.
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { Access, All, Env, Import, Readdir } from '../effects/node/types.ts'
|
|
7
|
+
* @import { Effect } from '../effects/types.ts'
|
|
8
|
+
* @import { Dir } from '../effects/node/virtual/types.ts'
|
|
9
|
+
* @import { Module, ModuleMap, LoadModuleOperations } from './types.ts'
|
|
5
10
|
*/
|
|
6
11
|
import type { Env } from '../effects/node/types.ts';
|
|
7
12
|
import type { Effect } from '../effects/types.ts';
|
|
8
13
|
import type { ModuleMap, LoadModuleOperations } from './types.ts';
|
|
9
|
-
/** @import { Dir } from '../effects/node/virtual/types.ts' */
|
|
10
|
-
/** @import { Module, ModuleMap, LoadModuleOperations } from './types.ts' */
|
|
11
14
|
/**
|
|
12
15
|
* Returns `true` if the file should be loaded for proof discovery.
|
|
13
16
|
*
|
package/fjs/dev/module.f.mjs
CHANGED
|
@@ -2,19 +2,20 @@
|
|
|
2
2
|
* Development utilities for indexing modules and loading FunctionalScript files.
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { Access, All, Env, Import, Readdir } from '../effects/node/types.ts'
|
|
7
|
+
* @import { Effect } from '../effects/types.ts'
|
|
8
|
+
* @import { Dir } from '../effects/node/virtual/types.ts'
|
|
9
|
+
* @import { Module, ModuleMap, LoadModuleOperations } from './types.ts'
|
|
5
10
|
*/
|
|
6
11
|
|
|
7
12
|
import { all, import_, readdir } from '../effects/node/module.f.mjs'
|
|
8
|
-
/** @import { Access, All, Env, Import, Readdir } from '../effects/node/types.ts' */
|
|
9
13
|
import { cmp as strCmp } from '../types/string/module.f.mjs'
|
|
10
14
|
import { unwrap } from '../types/result/module.f.mjs'
|
|
11
15
|
import { pure, step } from '../effects/module.f.mjs'
|
|
12
|
-
/** @import { Effect } from '../effects/types.ts' */
|
|
13
16
|
import { join, relativize, toPosix } from '../path/module.f.mjs'
|
|
14
17
|
import { assert, assertEq } from '../asserts/module.f.mjs'
|
|
15
18
|
import { emptyState, virtual } from '../effects/node/virtual/module.f.mjs'
|
|
16
|
-
/** @import { Dir } from '../effects/node/virtual/types.ts' */
|
|
17
|
-
/** @import { Module, ModuleMap, LoadModuleOperations } from './types.ts' */
|
|
18
19
|
|
|
19
20
|
/**
|
|
20
21
|
* Returns `true` if the file should be loaded for proof discovery.
|
|
@@ -26,6 +26,13 @@ export declare const validatePackageJson: import("../../types/rtti/common/types.
|
|
|
26
26
|
readonly scripts: import("../../types/rtti/types.ts").Or<readonly [import("../../types/rtti/types.ts").Type1<"record", import("../../types/rtti/types.ts")._Type0<"string">>, undefined]>;
|
|
27
27
|
}>;
|
|
28
28
|
/**
|
|
29
|
+
* Parses `text` as JSON and validates it against {@link packageJsonSchema}.
|
|
30
|
+
*
|
|
31
|
+
* Both failures reach the caller as they were raised: a parse failure is a
|
|
32
|
+
* `string`, a schema failure a `ValidationError`, and `JsonTextError` is
|
|
33
|
+
* exactly that union — which is what `okThen` produces from the two steps'
|
|
34
|
+
* own error types, with no rewrapping to widen either one.
|
|
35
|
+
*
|
|
29
36
|
* @param {string} text
|
|
30
37
|
* @returns {Result<PackageJson, JsonTextError>}
|
|
31
38
|
*/
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
import { parse as parseJsonText } from '../../media/json/module.f.mjs'
|
|
13
13
|
import { option, record, string } from '../../types/rtti/module.f.mjs'
|
|
14
14
|
import { validate as rttiValidate } from '../../types/rtti/validate/module.f.mjs'
|
|
15
|
-
import {
|
|
15
|
+
import { okThen } from '../../types/result/module.f.mjs'
|
|
16
16
|
|
|
17
17
|
export const packageJsonSchema = /** @type {const} */ ({
|
|
18
18
|
name: option(string),
|
|
@@ -26,12 +26,15 @@ export const packageJsonSchema = /** @type {const} */ ({
|
|
|
26
26
|
export const validatePackageJson = rttiValidate(packageJsonSchema)
|
|
27
27
|
|
|
28
28
|
/**
|
|
29
|
+
* Parses `text` as JSON and validates it against {@link packageJsonSchema}.
|
|
30
|
+
*
|
|
31
|
+
* Both failures reach the caller as they were raised: a parse failure is a
|
|
32
|
+
* `string`, a schema failure a `ValidationError`, and `JsonTextError` is
|
|
33
|
+
* exactly that union — which is what `okThen` produces from the two steps'
|
|
34
|
+
* own error types, with no rewrapping to widen either one.
|
|
35
|
+
*
|
|
29
36
|
* @param {string} text
|
|
30
37
|
* @returns {Result<PackageJson, JsonTextError>}
|
|
31
38
|
*/
|
|
32
|
-
export const validatePackageJsonText = text =>
|
|
33
|
-
|
|
34
|
-
if (t === 'error') { return error(v) }
|
|
35
|
-
const [t2, v2] = validatePackageJson(v)
|
|
36
|
-
return t2 === 'ok' ? ok(v2) : error(v2)
|
|
37
|
-
}
|
|
39
|
+
export const validatePackageJsonText = text =>
|
|
40
|
+
okThen(validatePackageJson)(parseJsonText(text))
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
* Synchronizes local development configuration generated from canonical repository files.
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { Effect } from '../../effects/types.ts'
|
|
7
|
+
* @import { Mkdir, NodeProgram, ReadFile, WriteFile } from '../../effects/node/types.ts'
|
|
5
8
|
*/
|
|
6
9
|
import type { Effect } from '../../effects/types.ts';
|
|
7
10
|
import type { Mkdir, NodeProgram, ReadFile, WriteFile } from '../../effects/node/types.ts';
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
* Synchronizes local development configuration generated from canonical repository files.
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { Effect } from '../../effects/types.ts'
|
|
7
|
+
* @import { Mkdir, NodeProgram, ReadFile, WriteFile } from '../../effects/node/types.ts'
|
|
5
8
|
*/
|
|
6
9
|
|
|
7
10
|
import { history, historyStep, mapStep, step } from '../../effects/module.f.mjs'
|
|
8
|
-
/** @import { Effect } from '../../effects/types.ts' */
|
|
9
11
|
import { mkdir, readUtf8File, writeUtf8File } from '../../effects/node/module.f.mjs'
|
|
10
|
-
/** @import { Mkdir, NodeProgram, ReadFile, WriteFile } from '../../effects/node/types.ts' */
|
|
11
12
|
import { unwrap } from '../../types/result/module.f.mjs'
|
|
12
13
|
|
|
13
14
|
const source = /** @type {const} */ ('.copilot/mcp.json')
|
|
@@ -544,4 +544,22 @@ export const proof = {
|
|
|
544
544
|
assertEq(result.state, 'result')
|
|
545
545
|
},
|
|
546
546
|
},
|
|
547
|
+
endObject: {
|
|
548
|
+
// `endObject` is only ever invoked while `state.top` is an object
|
|
549
|
+
// (the `'{'`/`'{k'`/`'{:'`/`'{v'`/`'{,'` value-states guarantee it),
|
|
550
|
+
// so its non-object guard is a defensive branch unreachable through
|
|
551
|
+
// `parseFromTokens`. Call it directly to cover that branch.
|
|
552
|
+
nonObjectTop: () => {
|
|
553
|
+
/** @type {_ParseValueState} */
|
|
554
|
+
const state = {
|
|
555
|
+
state: 'exportValue',
|
|
556
|
+
module: { refs: null, modules: null, consts: null },
|
|
557
|
+
valueState: '{,',
|
|
558
|
+
top: null,
|
|
559
|
+
stack: null,
|
|
560
|
+
}
|
|
561
|
+
const result = endObject(state)
|
|
562
|
+
assertEq(result.state, 'result')
|
|
563
|
+
},
|
|
564
|
+
},
|
|
547
565
|
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @import { DjsTokenWithMetadata } from '../tokenizer/types.ts'
|
|
3
|
+
*/
|
|
4
|
+
|
|
1
5
|
import { parseFromTokens } from './module.f.mjs'
|
|
2
6
|
import { tokenize } from '../tokenizer/module.f.mjs'
|
|
3
|
-
/** @import { DjsTokenWithMetadata } from '../tokenizer/types.ts' */
|
|
4
7
|
import { toArray } from '../../types/list/module.f.mjs'
|
|
5
8
|
import { sort } from '../../types/object/module.f.mjs'
|
|
6
9
|
import { stringToList } from '../../text/utf16/module.f.mjs'
|
|
@@ -439,6 +442,15 @@ export const proof = {
|
|
|
439
442
|
assert(obj[0] === 'error', obj)
|
|
440
443
|
assertEq(obj[1].message, 'duplicate id', obj)
|
|
441
444
|
},
|
|
445
|
+
() => {
|
|
446
|
+
// No newline after the const's value: the parser hits `eof` while
|
|
447
|
+
// still in the newline-required state, instead of the following
|
|
448
|
+
// `nl` token every other `const` test provides.
|
|
449
|
+
const tokenList = tokenizeString('const a = 1')
|
|
450
|
+
const obj = parseFromTokens(tokenList)
|
|
451
|
+
assert(obj[0] === 'error', obj)
|
|
452
|
+
assertEq(obj[1].message, 'unexpected end', obj)
|
|
453
|
+
},
|
|
442
454
|
],
|
|
443
455
|
validWithArgs:[
|
|
444
456
|
() => {
|
package/fjs/djs/proof.f.d.mts
CHANGED
package/fjs/djs/proof.f.mjs
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* @import { Vec } from '../types/bit_vec/types.ts'
|
|
3
|
+
*/
|
|
4
|
+
|
|
2
5
|
import { compile } from './module.f.mjs'
|
|
3
6
|
import { virtual, emptyState } from '../effects/node/virtual/module.f.mjs'
|
|
4
7
|
import { utf8, utf8ToString } from '../text/module.f.mjs'
|
|
@@ -16,6 +16,7 @@ const { entries } = Object
|
|
|
16
16
|
import { compose, fn } from '../../types/function/module.f.mjs'
|
|
17
17
|
import { serialize as bigintSerialize } from '../../types/bigint/module.f.mjs'
|
|
18
18
|
import { objectWrap, arrayWrap, stringSerialize, numberSerialize, nullSerialize, boolSerialize } from '../../media/json/serializer/module.f.mjs'
|
|
19
|
+
import { assertNotNullish } from '../../asserts/module.f.mjs'
|
|
19
20
|
|
|
20
21
|
const colon = [':']
|
|
21
22
|
|
|
@@ -183,12 +184,12 @@ const addRef = djs => refs => {
|
|
|
183
184
|
export const stringify = sort => djs => {
|
|
184
185
|
const refs = countRefs(djs)
|
|
185
186
|
const consts = getConstants(refs)(djs)
|
|
187
|
+
// `consts` only ever holds values `getConstants` found `shared` for, i.e.
|
|
188
|
+
// values with an entry already in `refs` — so `refs.get(entry)` here is
|
|
189
|
+
// always defined.
|
|
186
190
|
/** @type {(entry: Unknown) => List<string>} */
|
|
187
191
|
const constSerialize = entry => {
|
|
188
|
-
const refCounter = refs.get(entry)
|
|
189
|
-
if (refCounter === undefined) {
|
|
190
|
-
throw 'unexpected behavior'
|
|
191
|
-
}
|
|
192
|
+
const refCounter = assertNotNullish(refs.get(entry))
|
|
192
193
|
return flat([['const c'], numberSerialize(refCounter[0]), [' = '], serializeWithConst(sort)(refs)(entry)(entry), ['\n']])
|
|
193
194
|
}
|
|
194
195
|
const constStrings = flatMap(constSerialize)(consts)
|
|
@@ -52,14 +52,12 @@ import { multiply } from '../../types/bigfloat/module.f.mjs'
|
|
|
52
52
|
import {
|
|
53
53
|
asterisk, backspace, ht, lf, ff, cr,
|
|
54
54
|
quotationMark, solidus, reverseSolidus,
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
latinSmallLetterA, latinSmallLetterB, latinSmallLetterF,
|
|
55
|
+
hexDigitValue,
|
|
56
|
+
latinSmallLetterB, latinSmallLetterF,
|
|
58
57
|
latinSmallLetterN, latinSmallLetterR, latinSmallLetterT, latinSmallLetterU,
|
|
59
|
-
range as asciiRange,
|
|
60
58
|
} from '../../text/ascii/module.f.mjs'
|
|
61
59
|
import { codePointListToString, stringToCodePointList } from '../../text/utf16/module.f.mjs'
|
|
62
|
-
import {
|
|
60
|
+
import { mapUnwrap } from '../../types/nullable/module.f.mjs'
|
|
63
61
|
import { concat, empty, filter, flat, flatMap, fold, map, stateScan, toArray } from '../../types/list/module.f.mjs'
|
|
64
62
|
import { stringifyAsTree } from '../serializer/module.f.mjs'
|
|
65
63
|
import { sort } from '../../types/object/module.f.mjs'
|
|
@@ -333,7 +331,13 @@ const filterFunc = tk => {
|
|
|
333
331
|
}
|
|
334
332
|
}
|
|
335
333
|
|
|
336
|
-
|
|
334
|
+
/**
|
|
335
|
+
* A `\uXXXX` escape reaches the `unicode` state only after the grammar has
|
|
336
|
+
* accepted its four hex digits, so a non-hex code point here is a tokenizer
|
|
337
|
+
* bug rather than bad input — assert instead of decoding it to a garbage
|
|
338
|
+
* value, which is what the hand-rolled ternary chain used to do.
|
|
339
|
+
*/
|
|
340
|
+
const unwrapHexDigitValue = mapUnwrap(hexDigitValue)
|
|
337
341
|
|
|
338
342
|
/** @typedef {
|
|
339
343
|
* | { readonly kind: 'normal' }
|
|
@@ -358,11 +362,7 @@ const stringDecodeScan = (cp, state) => {
|
|
|
358
362
|
default: return [[cp], { kind: 'normal' }]
|
|
359
363
|
}
|
|
360
364
|
case 'unicode': {
|
|
361
|
-
|
|
362
|
-
const digit = contains(...digitRange)(cp) ? cp - digit0
|
|
363
|
-
: contains(...rangeCapitalAF)(cp) ? cp - (latinCapitalLetterA - 10)
|
|
364
|
-
: cp - (latinSmallLetterA - 10)
|
|
365
|
-
const acc = (state.acc << 4) | digit
|
|
365
|
+
const acc = (state.acc << 4) | unwrapHexDigitValue(cp)
|
|
366
366
|
return state.count === 3 ? [[acc], { kind: 'normal' }] : [null, { kind: 'unicode', acc, count: state.count + 1 }]
|
|
367
367
|
}
|
|
368
368
|
default:
|
|
@@ -511,10 +511,13 @@ export const tokenizeString = s => {
|
|
|
511
511
|
// Finds `tag` in flatTokens and returns the metadata of the next code point after it.
|
|
512
512
|
// numError/unterminated tags are followed by the poisoning char / EOF-hitting position
|
|
513
513
|
// in the flattened AST walk order, so this pinpoints roughly where tokenization failed.
|
|
514
|
+
//
|
|
515
|
+
// The single call site only passes a `tag` it already confirmed via
|
|
516
|
+
// `flatTokens.includes(tag)`, so `indexOf` here is never -1.
|
|
514
517
|
/** @type {(tag: string, flatTokens: readonly _FlatToken[], fallback: TokenMetadata) => TokenMetadata} */
|
|
515
518
|
const metadataAfterTag = (tag, flatTokens, fallback) => {
|
|
516
519
|
const idx = flatTokens.indexOf(tag)
|
|
517
|
-
const found =
|
|
520
|
+
const found = flatTokens.slice(idx + 1).find((/** @type {_FlatToken} */ t) => t instanceof Array)
|
|
518
521
|
return found === undefined ? fallback : found[1]
|
|
519
522
|
}
|
|
520
523
|
|
|
@@ -592,11 +595,16 @@ const parseDjsDefaultState = input => {
|
|
|
592
595
|
|
|
593
596
|
// Folds a leading '-' into the following number/bigint token, mirroring the old
|
|
594
597
|
// fjs/djs/tokenizer's minus-state exactly.
|
|
598
|
+
//
|
|
599
|
+
// No `case '-'` here: the underlying `js/tokenizer` always merges two adjacent
|
|
600
|
+
// `-` characters into a single `'--'` token (the decrement operator), so this
|
|
601
|
+
// state — entered only after a single, unmerged `-` — can never itself see
|
|
602
|
+
// another `'-'`-kind input. Such an input falls through to `default`, which
|
|
603
|
+
// handles it exactly like any other non-number/bigint/eof token.
|
|
595
604
|
/** @type {(input: JsToken) => readonly [List<DjsToken>, _DjsScanState]} */
|
|
596
605
|
const parseDjsMinusState = input => {
|
|
597
606
|
switch (input.kind) {
|
|
598
607
|
case 'eof': return [[{ kind: 'error', message: 'invalid token' }, { kind: 'eof' }], { kind: 'def' }]
|
|
599
|
-
case '-': return [[{ kind: 'error', message: 'invalid token' }], { kind: '-' }]
|
|
600
608
|
case 'bigint': return [[{ kind: 'bigint', value: -1n * input.value }], { kind: 'def' }]
|
|
601
609
|
case 'number': return [[{ kind: 'number', bf: multiply(input.bf)(-1n), value: `-${input.value}` }], { kind: 'def' }]
|
|
602
610
|
default: return [{ first: { kind: 'error', message: 'invalid token' }, tail: mapDjsToken(input) }, { kind: 'def' }]
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* @import { Unknown } from '../types.ts'
|
|
3
|
+
*/
|
|
4
|
+
|
|
2
5
|
import { descentParser } from '../../bnf/descent/module.f.mjs'
|
|
3
6
|
import { stringToCodePointList, stringToList } from '../../text/utf16/module.f.mjs'
|
|
4
7
|
import { toArray } from '../../types/list/module.f.mjs'
|
|
@@ -898,7 +901,10 @@ export const proof = {
|
|
|
898
901
|
assertEq(stringify(/** @type {Unknown} */ (result)), '[{"metadata":{"column":2,"line":1,"path":""},"token":{"kind":"bigint","value":-1234567890n}},{"metadata":{"column":13,"line":1,"path":""},"token":{"kind":"eof"}}]')
|
|
899
902
|
},
|
|
900
903
|
() => {
|
|
901
|
-
//
|
|
904
|
+
// `js/tokenizer` merges '--' into one decrement-operator token, so
|
|
905
|
+
// this never enters (or re-enters) minus-state via a second '-';
|
|
906
|
+
// it's one error straight from the default state's unknown-token
|
|
907
|
+
// fallback, mapping the whole '--' token to a single error.
|
|
902
908
|
const result = toArray(tokenize(stringToList('--'))(''))
|
|
903
909
|
assertEq(stringify(/** @type {Unknown} */ (result)), '[{"metadata":{"column":1,"line":1,"path":""},"token":{"kind":"error","message":"invalid token"}},{"metadata":{"column":3,"line":1,"path":""},"token":{"kind":"eof"}}]')
|
|
904
910
|
},
|
|
@@ -911,6 +917,12 @@ export const proof = {
|
|
|
911
917
|
const result = toArray(tokenize(stringToList('-'))(''))
|
|
912
918
|
assertEq(stringify(/** @type {Unknown} */ (result)), '[{"metadata":{"column":2,"line":1,"path":""},"token":{"kind":"error","message":"invalid token"}},{"metadata":{"column":2,"line":1,"path":""},"token":{"kind":"eof"}}]')
|
|
913
919
|
},
|
|
920
|
+
() => {
|
|
921
|
+
// '-' followed by neither a number/bigint nor eof: one error for
|
|
922
|
+
// the dangling '-', then the following token maps through normally.
|
|
923
|
+
const result = toArray(tokenize(stringToList('-{'))(''))
|
|
924
|
+
assertEq(stringify(/** @type {Unknown} */ (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"}}]')
|
|
925
|
+
},
|
|
914
926
|
() => {
|
|
915
927
|
const result = toArray(tokenize(stringToList('[-1234567890n]'))(''))
|
|
916
928
|
assertEq(stringify(/** @type {Unknown} */ (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"}}]')
|
|
@@ -5,28 +5,17 @@
|
|
|
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'
|
|
12
10
|
* @import { Effect } from '../../effects/types.ts'
|
|
13
11
|
* @import { ReadFile } from '../../effects/node/types.ts'
|
|
12
|
+
* @import { ParseContext } from './types.ts'
|
|
14
13
|
*/
|
|
15
14
|
import type { Unknown } from '../types.ts';
|
|
16
15
|
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
16
|
import type { ParseError } from '../parser/types.ts';
|
|
20
17
|
import type { Effect } from '../../effects/types.ts';
|
|
21
18
|
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
19
|
/**
|
|
31
20
|
* Transpiles a DJS module graph rooted at `path` into a single `Unknown` value.
|
|
32
21
|
*
|
|
@@ -5,12 +5,11 @@
|
|
|
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'
|
|
12
10
|
* @import { Effect } from '../../effects/types.ts'
|
|
13
11
|
* @import { ReadFile } from '../../effects/node/types.ts'
|
|
12
|
+
* @import { ParseContext } from './types.ts'
|
|
14
13
|
*/
|
|
15
14
|
|
|
16
15
|
import { error, ok } from '../../types/result/module.f.mjs'
|
|
@@ -24,24 +23,6 @@ import { run } from '../ast/module.f.mjs'
|
|
|
24
23
|
import { foldStep, pure, step } from '../../effects/module.f.mjs'
|
|
25
24
|
import { readUtf8File } from '../../effects/node/module.f.mjs'
|
|
26
25
|
|
|
27
|
-
/**
|
|
28
|
-
* State threaded through the recursive transpilation of a DJS module graph.
|
|
29
|
-
*
|
|
30
|
-
* - `complete`: modules that have been fully parsed and evaluated, keyed by path.
|
|
31
|
-
* - `stack`: import chain currently being resolved (used to detect circular dependencies).
|
|
32
|
-
* - `error`: the first parse error encountered, or `null` while everything is clean.
|
|
33
|
-
* @typedef {{
|
|
34
|
-
* readonly complete: OrderedMap<djsResult>
|
|
35
|
-
* readonly stack: List<string>
|
|
36
|
-
* readonly error: ParseError | null
|
|
37
|
-
* }} ParseContext
|
|
38
|
-
*/
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* The evaluated DJS value produced for one successfully transpiled module.
|
|
42
|
-
* @typedef {{ djs: Unknown }} djsResult
|
|
43
|
-
*/
|
|
44
|
-
|
|
45
26
|
/** @type {(context: ParseContext) => (path: string) => Unknown} */
|
|
46
27
|
const mapDjs = context => path => {
|
|
47
28
|
const res = at(path)(context.complete)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the DJS transpiler.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { Unknown } from '../types.ts';
|
|
7
|
+
import type { List } from '../../types/list/types.ts';
|
|
8
|
+
import type { OrderedMap } from '../../types/ordered_map/types.ts';
|
|
9
|
+
import type { ParseError } from '../parser/types.ts';
|
|
10
|
+
/** The evaluated DJS value produced for one successfully transpiled module. */
|
|
11
|
+
export type djsResult = {
|
|
12
|
+
djs: Unknown;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* State threaded through the recursive transpilation of a DJS module graph.
|
|
16
|
+
*
|
|
17
|
+
* - `complete`: modules that have been fully parsed and evaluated, keyed by path.
|
|
18
|
+
* - `stack`: import chain currently being resolved (used to detect circular dependencies).
|
|
19
|
+
* - `error`: the first parse error encountered, or `null` while everything is clean.
|
|
20
|
+
*/
|
|
21
|
+
export type ParseContext = {
|
|
22
|
+
readonly complete: OrderedMap<djsResult>;
|
|
23
|
+
readonly stack: List<string>;
|
|
24
|
+
readonly error: ParseError | null;
|
|
25
|
+
};
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A fluent, method-chaining wrapper over the raw `Effect`.
|
|
3
|
+
*
|
|
4
|
+
* See `./types.ts` for the `Eff` type-level API.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*
|
|
8
|
+
* @import { Effect, Operation } from '../types.ts'
|
|
9
|
+
* @import { Eff } from './types.ts'
|
|
10
|
+
*/
|
|
1
11
|
import type { Effect, Operation } from '../types.ts';
|
|
2
12
|
import type { Eff } from './types.ts';
|
|
3
13
|
/**
|
|
@@ -4,10 +4,12 @@
|
|
|
4
4
|
* See `./types.ts` for the `Eff` type-level API.
|
|
5
5
|
*
|
|
6
6
|
* @module
|
|
7
|
+
*
|
|
8
|
+
* @import { Effect, Operation } from '../types.ts'
|
|
9
|
+
* @import { Eff } from './types.ts'
|
|
7
10
|
*/
|
|
11
|
+
|
|
8
12
|
import { history, historyStep, mapStep, pure } from '../module.f.mjs'
|
|
9
|
-
/** @import { Effect, Operation } from '../types.ts' */
|
|
10
|
-
/** @import { Eff } from './types.ts' */
|
|
11
13
|
|
|
12
14
|
/**
|
|
13
15
|
* Builds an `Eff` from two views of the same chain: `value`, the effect for the
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @import { Effect, OperationMap } from '../types.ts'
|
|
3
|
+
*/
|
|
4
|
+
|
|
1
5
|
import { do_, match, pure } from '../module.f.mjs'
|
|
2
6
|
import { assert, assertEq } from '../../asserts/module.f.mjs'
|
|
3
7
|
import { assertPure } from '../proof.f.mjs'
|
|
4
8
|
import { eff } from './module.f.mjs'
|
|
5
|
-
/** @import { Effect, OperationMap } from '../types.ts' */
|
|
6
9
|
|
|
7
10
|
/** @typedef {readonly['add', (a: number, b: number) => number]} _AddOp */
|
|
8
11
|
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Effectful cons-list construction.
|
|
3
|
+
*
|
|
4
|
+
* See `./types.ts` for the type-level API.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*
|
|
8
|
+
* @import { Effect, Operation } from "../types.ts"
|
|
9
|
+
* @import { List, Next } from "./types.ts"
|
|
10
|
+
*/
|
|
1
11
|
import type { Effect, Operation } from "../types.ts";
|
|
2
12
|
import type { List, Next } from "./types.ts";
|
|
3
|
-
/** @import { Effect, Operation } from "../types.ts" */
|
|
4
|
-
/** @import { List, Next } from "./types.ts" */
|
|
5
13
|
/**
|
|
6
14
|
* The empty `List`: a pure end-of-stream marker (`undefined`).
|
|
7
15
|
*
|
|
@@ -4,10 +4,12 @@
|
|
|
4
4
|
* See `./types.ts` for the type-level API.
|
|
5
5
|
*
|
|
6
6
|
* @module
|
|
7
|
+
*
|
|
8
|
+
* @import { Effect, Operation } from "../types.ts"
|
|
9
|
+
* @import { List, Next } from "./types.ts"
|
|
7
10
|
*/
|
|
11
|
+
|
|
8
12
|
import { pure } from "../module.f.mjs"
|
|
9
|
-
/** @import { Effect, Operation } from "../types.ts" */
|
|
10
|
-
/** @import { List, Next } from "./types.ts" */
|
|
11
13
|
|
|
12
14
|
/**
|
|
13
15
|
* The empty `List`: a pure end-of-stream marker (`undefined`).
|
|
@@ -14,12 +14,14 @@
|
|
|
14
14
|
* type-level API.
|
|
15
15
|
*
|
|
16
16
|
* @module
|
|
17
|
+
*
|
|
18
|
+
* @import { Nominal } from '../../types/nominal/types.ts'
|
|
19
|
+
* @import { Effect } from '../types.ts'
|
|
20
|
+
* @import { Key, MemCreate, MemRead, MemWrite, _MemKeyHash } from './types.ts'
|
|
17
21
|
*/
|
|
18
22
|
import type { Nominal } from '../../types/nominal/types.ts';
|
|
19
23
|
import type { Effect } from '../types.ts';
|
|
20
24
|
import type { Key, MemCreate, MemRead, MemWrite, _MemKeyHash } from './types.ts';
|
|
21
|
-
/** @import { Effect } from '../types.ts' */
|
|
22
|
-
/** @import { Key, MemCreate, MemRead, MemWrite, _MemKeyHash } from './types.ts' */
|
|
23
25
|
/** @type {(n: Nominal<'MemKey', _MemKeyHash, string>) => string} */
|
|
24
26
|
export declare const asBase: (n: Nominal<'MemKey', _MemKeyHash, string>) => string;
|
|
25
27
|
/** @type {(b: string) => Nominal<'MemKey', _MemKeyHash, string>} */
|