functionalscript 0.1.609 → 0.2.1
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/com/cpp/module.f.mjs +20 -25
- package/com/cpp/testlib.f.mjs +3 -4
- package/com/cs/module.f.mjs +18 -23
- package/com/cs/testlib.f.mjs +3 -5
- package/com/rust/module.f.mjs +25 -30
- package/com/rust/testlib.f.mjs +3 -5
- package/com/test/build.f.mjs +2 -2
- package/com/test/build.mjs +4 -4
- package/com/types/module.f.mjs +5 -12
- package/commonjs/build/module.f.mjs +23 -28
- package/commonjs/build/test.f.mjs +4 -4
- package/commonjs/module/function/module.f.mjs +0 -2
- package/commonjs/module/module.f.mjs +2 -9
- package/commonjs/module.f.mjs +0 -2
- package/commonjs/module.mjs +2 -7
- package/commonjs/package/dependencies/module.f.mjs +5 -10
- package/commonjs/package/dependencies/test.f.mjs +1 -1
- package/commonjs/package/module.f.mjs +6 -13
- package/commonjs/package/test.f.mjs +1 -1
- package/commonjs/path/module.f.mjs +12 -23
- package/commonjs/path/test.f.mjs +11 -11
- package/commonjs/test.mjs +1 -1
- package/dev/module.f.mjs +1 -4
- package/dev/module.mjs +1 -1
- package/dev/test/module.f.mjs +4 -6
- package/djs/module.f.mjs +12 -19
- package/djs/parser/module.f.mjs +18 -24
- package/djs/parser/test.f.mjs +9 -9
- package/djs/test.f.mjs +4 -4
- package/djs/tokenizer/module.f.mjs +18 -23
- package/djs/tokenizer/test.f.mjs +6 -6
- package/fsc/module.f.mjs +17 -24
- package/fsc/test.f.mjs +3 -3
- package/fsm/module.f.mjs +27 -38
- package/fsm/test.f.mjs +8 -8
- package/html/module.f.mjs +14 -23
- package/html/test.f.mjs +4 -4
- package/js/tokenizer/module.f.mjs +55 -62
- package/js/tokenizer/test.f.mjs +6 -6
- package/json/module.f.mjs +18 -31
- package/json/parser/module.f.mjs +9 -14
- package/json/parser/test.f.mjs +7 -7
- package/json/serializer/module.f.mjs +14 -29
- package/json/serializer/test.f.mjs +2 -2
- package/json/test.f.mjs +3 -3
- package/json/tokenizer/module.f.mjs +14 -19
- package/json/tokenizer/test.f.mjs +6 -6
- package/jsr.json +59 -59
- package/nodejs/version/main.mjs +1 -1
- package/nodejs/version/module.f.mjs +2 -7
- package/nodejs/version/test.f.mjs +3 -3
- package/out/com/cpp/module.f.d.mts +4 -0
- package/out/com/cpp/module.f.mjs +123 -0
- package/out/com/cpp/test.f.mjs +40 -0
- package/out/com/cpp/testlib.f.mjs +7 -0
- package/out/com/cs/module.f.d.mts +4 -0
- package/out/com/cs/module.f.mjs +95 -0
- package/out/com/cs/test.f.mjs +43 -0
- package/out/com/cs/testlib.f.mjs +7 -0
- package/{com → out/com}/rust/module.f.d.mts +3 -7
- package/out/com/rust/module.f.mjs +213 -0
- package/out/com/rust/test.f.mjs +123 -0
- package/out/com/rust/testlib.f.mjs +7 -0
- package/{com → out/com}/test/build.f.d.mts +2 -2
- package/out/com/test/build.f.mjs +98 -0
- package/out/com/test/build.mjs +40 -0
- package/{com → out/com}/types/module.f.d.mts +5 -10
- package/out/com/types/module.f.mjs +51 -0
- package/out/com/types/testlib.f.mjs +30 -0
- package/out/commonjs/build/module.f.d.mts +20 -0
- package/out/commonjs/build/module.f.mjs +107 -0
- package/out/commonjs/build/test.f.mjs +102 -0
- package/{commonjs → out/commonjs}/module/function/module.f.d.mts +0 -2
- package/out/commonjs/module/function/module.f.mjs +15 -0
- package/{commonjs → out/commonjs}/module/module.f.d.mts +16 -21
- package/out/commonjs/module/module.f.mjs +48 -0
- package/out/commonjs/module.d.mts +3 -0
- package/{commonjs → out/commonjs}/module.f.d.mts +0 -2
- package/out/commonjs/module.f.mjs +10 -0
- package/out/commonjs/module.mjs +26 -0
- package/out/commonjs/package/dependencies/module.f.d.mts +6 -0
- package/out/commonjs/package/dependencies/module.f.mjs +21 -0
- package/out/commonjs/package/dependencies/test.f.mjs +15 -0
- package/out/commonjs/package/module.f.d.mts +21 -0
- package/out/commonjs/package/module.f.mjs +40 -0
- package/out/commonjs/package/test.f.mjs +27 -0
- package/{commonjs → out/commonjs}/path/module.f.d.mts +25 -32
- package/out/commonjs/path/module.f.mjs +171 -0
- package/out/commonjs/path/test.f.mjs +231 -0
- package/out/commonjs/test.mjs +87 -0
- package/out/dev/index.mjs +2 -0
- package/out/dev/module.f.d.mts +1 -0
- package/out/dev/module.f.mjs +2 -0
- package/out/dev/module.mjs +167 -0
- package/{dev → out/dev}/test/module.f.d.mts +2 -3
- package/out/dev/test/module.f.mjs +134 -0
- package/out/dev/test.f.mjs +58 -0
- package/out/dev/test.mjs +52 -0
- package/{djs → out/djs}/module.f.d.mts +13 -18
- package/out/djs/module.f.mjs +75 -0
- package/{djs → out/djs}/parser/module.f.d.mts +11 -15
- package/out/djs/parser/module.f.mjs +432 -0
- package/out/djs/parser/test.f.mjs +535 -0
- package/out/djs/test.f.mjs +84 -0
- package/out/djs/tokenizer/module.f.d.mts +13 -0
- package/out/djs/tokenizer/module.f.mjs +87 -0
- package/out/djs/tokenizer/test.f.mjs +480 -0
- package/out/fsc/module.f.d.mts +7 -0
- package/out/fsc/module.f.mjs +105 -0
- package/out/fsc/test.f.mjs +19 -0
- package/out/fsm/module.f.d.mts +14 -0
- package/out/fsm/module.f.mjs +80 -0
- package/out/fsm/test.f.mjs +138 -0
- package/out/html/module.f.d.mts +15 -0
- package/out/html/module.f.mjs +94 -0
- package/out/html/test.f.mjs +45 -0
- package/out/issues/test.f.mjs +66 -0
- package/{js → out/js}/tokenizer/module.f.d.mts +10 -15
- package/out/js/tokenizer/module.f.mjs +686 -0
- package/out/js/tokenizer/test.f.mjs +844 -0
- package/out/json/module.f.d.mts +33 -0
- package/out/json/module.f.mjs +89 -0
- package/{json → out/json}/parser/module.f.d.mts +9 -13
- package/out/json/parser/module.f.mjs +224 -0
- package/out/json/parser/test.f.mjs +321 -0
- package/out/json/serializer/module.f.d.mts +36 -0
- package/out/json/serializer/module.f.mjs +67 -0
- package/out/json/serializer/test.f.mjs +87 -0
- package/out/json/test.f.mjs +61 -0
- package/out/json/tokenizer/module.f.d.mts +13 -0
- package/out/json/tokenizer/module.f.mjs +78 -0
- package/out/json/tokenizer/test.f.mjs +420 -0
- package/out/nanvm-lib/tests/test.f.mjs +87 -0
- package/out/nodejs/version/main.mjs +3 -0
- package/{nodejs → out/nodejs}/version/module.f.d.mts +4 -9
- package/out/nodejs/version/module.f.mjs +34 -0
- package/out/nodejs/version/test.f.mjs +97 -0
- package/{prime_field → out/prime_field}/module.f.d.mts +20 -23
- package/out/prime_field/module.f.mjs +87 -0
- package/out/prime_field/test.f.mjs +145 -0
- package/{secp → out/secp}/module.f.d.mts +27 -28
- package/out/secp/module.f.mjs +113 -0
- package/out/secp/test.f.mjs +63 -0
- package/out/sha2/module.f.d.mts +15 -0
- package/out/sha2/module.f.mjs +172 -0
- package/out/sha2/test.f.mjs +86 -0
- package/out/text/ascii/module.f.d.mts +70 -0
- package/out/text/ascii/module.f.mjs +154 -0
- package/out/text/ascii/test.f.mjs +14 -0
- package/out/text/module.f.d.mts +13 -0
- package/out/text/module.f.mjs +19 -0
- package/out/text/sgr/module.f.d.mts +12 -0
- package/out/text/sgr/module.f.mjs +17 -0
- package/out/text/test.f.mjs +19 -0
- package/out/text/utf16/module.f.d.mts +12 -0
- package/out/text/utf16/module.f.mjs +86 -0
- package/out/text/utf16/test.f.mjs +145 -0
- package/out/text/utf8/module.f.d.mts +10 -0
- package/out/text/utf8/module.f.mjs +126 -0
- package/out/text/utf8/test.f.mjs +175 -0
- package/{types → out/types}/array/module.f.d.mts +14 -24
- package/out/types/array/module.f.mjs +95 -0
- package/out/types/array/test.f.mjs +116 -0
- package/out/types/bigfloat/module.f.d.mts +6 -0
- package/out/types/bigfloat/module.f.mjs +77 -0
- package/out/types/bigfloat/test.f.mjs +349 -0
- package/out/types/bigint/module.f.d.mts +29 -0
- package/{types/bigint/module.f.d.mts → out/types/bigint/module.f.mjs} +64 -27
- package/out/types/bigint/test.f.mjs +192 -0
- package/{types → out/types}/btree/find/module.f.d.mts +20 -26
- package/out/types/btree/find/module.f.mjs +137 -0
- package/out/types/btree/find/test.f.mjs +156 -0
- package/out/types/btree/module.f.d.mts +5 -0
- package/out/types/btree/module.f.mjs +34 -0
- package/{types → out/types}/btree/remove/module.f.d.mts +7 -12
- package/out/types/btree/remove/module.f.mjs +209 -0
- package/out/types/btree/remove/test.f.mjs +638 -0
- package/{types → out/types}/btree/set/module.f.d.mts +3 -7
- package/out/types/btree/set/module.f.mjs +114 -0
- package/out/types/btree/set/test.f.mjs +390 -0
- package/out/types/btree/test.f.mjs +83 -0
- package/{types → out/types}/btree/types/module.f.d.mts +0 -2
- package/out/types/btree/types/module.f.mjs +50 -0
- package/out/types/byte_set/module.f.d.mts +25 -0
- package/out/types/byte_set/module.f.mjs +42 -0
- package/out/types/byte_set/test.f.mjs +123 -0
- package/{types → out/types}/function/compare/module.f.d.mts +9 -15
- package/out/types/function/compare/module.f.mjs +22 -0
- package/out/types/function/compare/test.f.mjs +8 -0
- package/{types → out/types}/function/module.f.d.mts +20 -27
- package/out/types/function/module.f.mjs +44 -0
- package/{types → out/types}/function/operator/module.f.d.mts +28 -43
- package/out/types/function/operator/module.f.mjs +60 -0
- package/out/types/function/test.f.mjs +15 -0
- package/out/types/list/module.f.d.mts +82 -0
- package/out/types/list/module.f.mjs +269 -0
- package/out/types/list/test.f.mjs +401 -0
- package/out/types/map/module.f.d.mts +21 -0
- package/out/types/map/module.f.mjs +54 -0
- package/out/types/map/test.f.mjs +115 -0
- package/out/types/nibble_set/module.f.d.mts +16 -0
- package/out/types/nibble_set/module.f.mjs +19 -0
- package/out/types/nibble_set/test.f.mjs +90 -0
- package/out/types/nullable/module.f.d.mts +9 -0
- package/out/types/nullable/module.f.mjs +9 -0
- package/out/types/nullable/test.f.mjs +12 -0
- package/out/types/number/module.f.d.mts +7 -0
- package/out/types/number/module.f.mjs +12 -0
- package/out/types/number/test.f.mjs +126 -0
- package/out/types/object/module.f.d.mts +22 -0
- package/out/types/object/module.f.mjs +27 -0
- package/out/types/object/test.f.mjs +17 -0
- package/out/types/range/module.f.d.mts +6 -0
- package/out/types/range/module.f.mjs +6 -0
- package/out/types/range/test.f.mjs +18 -0
- package/{types → out/types}/range_map/module.f.d.mts +9 -15
- package/out/types/range_map/module.f.mjs +84 -0
- package/out/types/range_map/test.f.mjs +201 -0
- package/out/types/result/module.d.mts +7 -0
- package/{types → out/types}/result/module.f.d.mts +6 -12
- package/out/types/result/module.f.mjs +25 -0
- package/out/types/result/module.mjs +16 -0
- package/{types → out/types}/sorted_list/module.f.d.mts +22 -28
- package/out/types/sorted_list/module.f.mjs +102 -0
- package/out/types/sorted_list/test.f.mjs +66 -0
- package/{types → out/types}/sorted_set/module.f.d.mts +6 -12
- package/out/types/sorted_set/module.f.mjs +29 -0
- package/out/types/sorted_set/test.f.mjs +80 -0
- package/out/types/string/module.f.d.mts +9 -0
- package/out/types/string/module.f.mjs +17 -0
- package/out/types/string/test.f.mjs +58 -0
- package/out/types/string_set/module.f.d.mts +13 -0
- package/out/types/string_set/module.f.mjs +29 -0
- package/out/types/string_set/test.f.mjs +65 -0
- package/package.json +5 -4
- package/prime_field/module.f.mjs +9 -12
- package/prime_field/test.f.mjs +1 -1
- package/secp/module.f.mjs +38 -39
- package/secp/test.f.mjs +4 -4
- package/sha2/module.f.mjs +7 -20
- package/sha2/test.f.mjs +4 -4
- package/text/ascii/module.f.mjs +5 -10
- package/text/ascii/test.f.mjs +3 -3
- package/text/module.f.mjs +7 -14
- package/text/sgr/module.f.mjs +2 -4
- package/text/test.f.mjs +3 -3
- package/text/utf16/module.f.mjs +17 -28
- package/text/utf16/test.f.mjs +5 -5
- package/text/utf8/module.f.mjs +9 -16
- package/text/utf8/test.f.mjs +4 -4
- package/tsconfig.json +2 -2
- package/types/array/module.f.mjs +8 -25
- package/types/array/test.f.mjs +3 -3
- package/types/bigfloat/module.f.mjs +3 -10
- package/types/bigfloat/test.f.mjs +1 -1
- package/types/bigint/module.f.mjs +11 -30
- package/types/bigint/test.f.mjs +1 -1
- package/types/btree/find/module.f.mjs +8 -17
- package/types/btree/find/test.f.mjs +7 -7
- package/types/btree/module.f.mjs +6 -11
- package/types/btree/remove/module.f.mjs +10 -17
- package/types/btree/remove/test.f.mjs +5 -5
- package/types/btree/set/module.f.mjs +4 -9
- package/types/btree/set/test.f.mjs +4 -4
- package/types/btree/test.f.mjs +9 -9
- package/types/btree/types/module.f.mjs +0 -2
- package/types/byte_set/module.f.mjs +14 -39
- package/types/byte_set/test.f.mjs +5 -5
- package/types/function/compare/module.f.mjs +3 -12
- package/types/function/compare/test.f.mjs +1 -1
- package/types/function/module.f.mjs +4 -15
- package/types/function/operator/module.f.mjs +14 -41
- package/types/function/test.f.mjs +1 -1
- package/types/list/module.f.mjs +45 -114
- package/types/list/test.f.mjs +10 -10
- package/types/map/module.f.mjs +15 -30
- package/types/map/test.f.mjs +2 -2
- package/types/nibble_set/module.f.mjs +7 -24
- package/types/nibble_set/test.f.mjs +2 -2
- package/types/nullable/module.f.mjs +2 -9
- package/types/nullable/test.f.mjs +1 -1
- package/types/number/module.f.mjs +8 -19
- package/types/number/test.f.mjs +1 -1
- package/types/object/module.f.mjs +9 -20
- package/types/object/test.f.mjs +1 -1
- package/types/range/module.f.mjs +2 -9
- package/types/range/test.f.mjs +1 -1
- package/types/range_map/module.f.mjs +9 -18
- package/types/range_map/test.f.mjs +32 -32
- package/types/result/module.f.mjs +3 -12
- package/types/result/module.mjs +2 -2
- package/types/sorted_list/module.f.mjs +10 -19
- package/types/sorted_list/test.f.mjs +7 -7
- package/types/sorted_set/module.f.mjs +7 -16
- package/types/sorted_set/test.f.mjs +7 -7
- package/types/string/module.f.mjs +10 -21
- package/types/string/test.f.mjs +2 -2
- package/types/string_set/module.f.mjs +12 -27
- package/types/string_set/test.f.mjs +1 -1
- package/com/cpp/module.f.d.mts +0 -8
- package/com/cs/module.f.d.mts +0 -8
- package/commonjs/build/module.f.d.mts +0 -24
- package/commonjs/module.d.mts +0 -7
- package/commonjs/package/dependencies/module.f.d.mts +0 -10
- package/commonjs/package/module.f.d.mts +0 -27
- package/dev/module.f.d.mts +0 -4
- package/djs/tokenizer/module.f.d.mts +0 -17
- package/fsc/module.f.d.mts +0 -12
- package/fsm/module.f.d.mts +0 -21
- package/html/module.f.d.mts +0 -20
- package/json/module.f.d.mts +0 -41
- package/json/serializer/module.f.d.mts +0 -45
- package/json/tokenizer/module.f.d.mts +0 -17
- package/sha2/module.f.d.mts +0 -23
- package/text/ascii/module.f.d.mts +0 -73
- package/text/module.f.d.mts +0 -18
- package/text/sgr/module.f.d.mts +0 -14
- package/text/utf16/module.f.d.mts +0 -19
- package/text/utf8/module.f.d.mts +0 -15
- package/types/bigfloat/module.f.d.mts +0 -11
- package/types/btree/module.f.d.mts +0 -9
- package/types/byte_set/module.f.d.mts +0 -38
- package/types/list/module.f.d.mts +0 -117
- package/types/map/module.f.d.mts +0 -30
- package/types/nibble_set/module.f.d.mts +0 -26
- package/types/nullable/module.f.d.mts +0 -14
- package/types/number/module.f.d.mts +0 -13
- package/types/object/module.f.d.mts +0 -29
- package/types/range/module.f.d.mts +0 -11
- package/types/result/module.d.mts +0 -7
- package/types/string/module.f.d.mts +0 -15
- package/types/string_set/module.f.d.mts +0 -21
- /package/{com → out/com}/cpp/test.f.d.mts +0 -0
- /package/{com → out/com}/cpp/testlib.f.d.mts +0 -0
- /package/{com → out/com}/cs/test.f.d.mts +0 -0
- /package/{com → out/com}/cs/testlib.f.d.mts +0 -0
- /package/{com → out/com}/rust/test.f.d.mts +0 -0
- /package/{com → out/com}/rust/testlib.f.d.mts +0 -0
- /package/{com → out/com}/test/build.d.mts +0 -0
- /package/{com → out/com}/types/testlib.f.d.mts +0 -0
- /package/{commonjs → out/commonjs}/build/test.f.d.mts +0 -0
- /package/{commonjs → out/commonjs}/package/dependencies/test.f.d.mts +0 -0
- /package/{commonjs → out/commonjs}/package/test.f.d.mts +0 -0
- /package/{commonjs → out/commonjs}/path/test.f.d.mts +0 -0
- /package/{commonjs → out/commonjs}/test.d.mts +0 -0
- /package/{dev → out/dev}/index.d.mts +0 -0
- /package/{dev → out/dev}/module.d.mts +0 -0
- /package/{dev → out/dev}/test.d.mts +0 -0
- /package/{dev → out/dev}/test.f.d.mts +0 -0
- /package/{djs → out/djs}/parser/test.f.d.mts +0 -0
- /package/{djs → out/djs}/test.f.d.mts +0 -0
- /package/{djs → out/djs}/tokenizer/test.f.d.mts +0 -0
- /package/{fsc → out/fsc}/test.f.d.mts +0 -0
- /package/{fsm → out/fsm}/test.f.d.mts +0 -0
- /package/{html → out/html}/test.f.d.mts +0 -0
- /package/{issues → out/issues}/test.f.d.mts +0 -0
- /package/{js → out/js}/tokenizer/test.f.d.mts +0 -0
- /package/{json → out/json}/parser/test.f.d.mts +0 -0
- /package/{json → out/json}/serializer/test.f.d.mts +0 -0
- /package/{json → out/json}/test.f.d.mts +0 -0
- /package/{json → out/json}/tokenizer/test.f.d.mts +0 -0
- /package/{nanvm-lib → out/nanvm-lib}/tests/test.f.d.mts +0 -0
- /package/{nodejs → out/nodejs}/version/main.d.mts +0 -0
- /package/{nodejs → out/nodejs}/version/test.f.d.mts +0 -0
- /package/{prime_field → out/prime_field}/test.f.d.mts +0 -0
- /package/{secp → out/secp}/test.f.d.mts +0 -0
- /package/{sha2 → out/sha2}/test.f.d.mts +0 -0
- /package/{text → out/text}/ascii/test.f.d.mts +0 -0
- /package/{text → out/text}/test.f.d.mts +0 -0
- /package/{text → out/text}/utf16/test.f.d.mts +0 -0
- /package/{text → out/text}/utf8/test.f.d.mts +0 -0
- /package/{types → out/types}/array/test.f.d.mts +0 -0
- /package/{types → out/types}/bigfloat/test.f.d.mts +0 -0
- /package/{types → out/types}/bigint/test.f.d.mts +0 -0
- /package/{types → out/types}/btree/find/test.f.d.mts +0 -0
- /package/{types → out/types}/btree/remove/test.f.d.mts +0 -0
- /package/{types → out/types}/btree/set/test.f.d.mts +0 -0
- /package/{types → out/types}/btree/test.f.d.mts +0 -0
- /package/{types → out/types}/byte_set/test.f.d.mts +0 -0
- /package/{types → out/types}/function/compare/test.f.d.mts +0 -0
- /package/{types → out/types}/function/test.f.d.mts +0 -0
- /package/{types → out/types}/list/test.f.d.mts +0 -0
- /package/{types → out/types}/map/test.f.d.mts +0 -0
- /package/{types → out/types}/nibble_set/test.f.d.mts +0 -0
- /package/{types → out/types}/nullable/test.f.d.mts +0 -0
- /package/{types → out/types}/number/test.f.d.mts +0 -0
- /package/{types → out/types}/object/test.f.d.mts +0 -0
- /package/{types → out/types}/range/test.f.d.mts +0 -0
- /package/{types → out/types}/range_map/test.f.d.mts +0 -0
- /package/{types → out/types}/sorted_list/test.f.d.mts +0 -0
- /package/{types → out/types}/sorted_set/test.f.d.mts +0 -0
- /package/{types → out/types}/string/test.f.d.mts +0 -0
- /package/{types → out/types}/string_set/test.f.d.mts +0 -0
package/text/utf16/module.f.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import range from '../../types/range/module.f.mjs'
|
|
2
|
+
import * as list from '../../types/list/module.f.mjs'
|
|
3
|
+
import * as operator from '../../types/function/operator/module.f.mjs'
|
|
4
|
+
import * as range from '../../types/range/module.f.mjs'
|
|
5
5
|
const { contains } = range
|
|
6
|
-
import f from '../../types/function/module.f.mjs'
|
|
6
|
+
import * as f from '../../types/function/module.f.mjs'
|
|
7
7
|
const { fn } = f
|
|
8
8
|
const { map, flat, stateScan, reduce, flatMap, empty } = list
|
|
9
9
|
|
|
@@ -32,7 +32,7 @@ const errorMask = 0b1000_0000_0000_0000_0000_0000_0000_0000
|
|
|
32
32
|
/** @type {(a: i32) => boolean} */
|
|
33
33
|
const isSupplementaryPlane = contains([0x01_0000, 0x10_ffff])
|
|
34
34
|
|
|
35
|
-
/** @type {(input: i32) =>
|
|
35
|
+
/** @type {(input: i32) => list.List<u16>} */
|
|
36
36
|
const codePointToUtf16 = codePoint => {
|
|
37
37
|
if (isBmpCodePoint(codePoint)) { return [codePoint] }
|
|
38
38
|
if (isSupplementaryPlane(codePoint)) {
|
|
@@ -44,11 +44,11 @@ const codePointToUtf16 = codePoint => {
|
|
|
44
44
|
return [codePoint & 0xffff]
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
const fromCodePointList = flatMap(codePointToUtf16)
|
|
47
|
+
export const fromCodePointList = flatMap(codePointToUtf16)
|
|
48
48
|
|
|
49
49
|
const u16 = contains([0x0000, 0xFFFF])
|
|
50
50
|
|
|
51
|
-
/** @type {
|
|
51
|
+
/** @type {operator.StateScan<u16, Utf16State, list.List<i32>>} */
|
|
52
52
|
const utf16ByteToCodePointOp = state => word => {
|
|
53
53
|
if (!u16(word)) {
|
|
54
54
|
return [[0xffffffff], state]
|
|
@@ -68,21 +68,21 @@ const utf16ByteToCodePointOp = state => word => {
|
|
|
68
68
|
return [[state | errorMask, word | errorMask], null]
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
/** @type {(state: Utf16State) => readonly[
|
|
71
|
+
/** @type {(state: Utf16State) => readonly[list.List<i32>, Utf16State]} */
|
|
72
72
|
const utf16EofToCodePointOp = state => [state === null ? empty : [state | errorMask], null]
|
|
73
73
|
|
|
74
|
-
/** @type {
|
|
74
|
+
/** @type {operator.StateScan<WordOrEof, Utf16State, list.List<i32>>} */
|
|
75
75
|
const utf16ByteOrEofToCodePointOp = state => input => input === null ? utf16EofToCodePointOp(state) : utf16ByteToCodePointOp(state)(input)
|
|
76
76
|
|
|
77
|
-
/** @type {
|
|
77
|
+
/** @type {list.List<WordOrEof>} */
|
|
78
78
|
const eofList = [null]
|
|
79
79
|
|
|
80
|
-
/** @type {(input:
|
|
81
|
-
const toCodePointList = input => flat(stateScan(utf16ByteOrEofToCodePointOp)(null)(flat([input, eofList])))
|
|
80
|
+
/** @type {(input: list.List<u16>) => list.List<i32>} */
|
|
81
|
+
export const toCodePointList = input => flat(stateScan(utf16ByteOrEofToCodePointOp)(null)(flat([input, eofList])))
|
|
82
82
|
|
|
83
|
-
/** @type {(s: string) =>
|
|
84
|
-
const stringToList = s => {
|
|
85
|
-
/** @type {(i: number) =>
|
|
83
|
+
/** @type {(s: string) => list.List<u16>} */
|
|
84
|
+
export const stringToList = s => {
|
|
85
|
+
/** @type {(i: number) => list.Result<number>} */
|
|
86
86
|
const at = i => {
|
|
87
87
|
const first = s.charCodeAt(i)
|
|
88
88
|
return isNaN(first) ? empty : { first, tail: () => at(i + 1) }
|
|
@@ -90,18 +90,7 @@ const stringToList = s => {
|
|
|
90
90
|
return at(0)
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
/** @type {(input:
|
|
94
|
-
const listToString = fn(map(String.fromCharCode))
|
|
93
|
+
/** @type {(input: list.List<u16>) => string} */
|
|
94
|
+
export const listToString = fn(map(String.fromCharCode))
|
|
95
95
|
.then(reduce(operator.concat)(''))
|
|
96
96
|
.result
|
|
97
|
-
|
|
98
|
-
export default {
|
|
99
|
-
/** @readonly */
|
|
100
|
-
fromCodePointList,
|
|
101
|
-
/** @readonly */
|
|
102
|
-
toCodePointList,
|
|
103
|
-
/** @readonly */
|
|
104
|
-
stringToList,
|
|
105
|
-
/** @readonly */
|
|
106
|
-
listToString
|
|
107
|
-
}
|
package/text/utf16/test.f.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import encoding from './module.f.mjs'
|
|
2
|
-
import
|
|
3
|
-
import o from '../../types/object/module.f.mjs'
|
|
1
|
+
import * as encoding from './module.f.mjs'
|
|
2
|
+
import * as json from '../../json/module.f.mjs'
|
|
3
|
+
import * as o from '../../types/object/module.f.mjs'
|
|
4
4
|
const { sort } = o
|
|
5
|
-
import list from '../../types/list/module.f.mjs'
|
|
5
|
+
import * as list from '../../types/list/module.f.mjs'
|
|
6
6
|
|
|
7
|
-
/** @type {(a: readonly
|
|
7
|
+
/** @type {(a: readonly json.Unknown[]) => string} */
|
|
8
8
|
const stringify = a => json.stringify(sort)(a)
|
|
9
9
|
|
|
10
10
|
export default {
|
package/text/utf8/module.f.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
|
-
import
|
|
2
|
+
import * as list from '../../types/list/module.f.mjs'
|
|
3
3
|
import * as operator from '../../types/function/operator/module.f.mjs'
|
|
4
4
|
import * as Array from '../../types/array/module.f.mjs'
|
|
5
5
|
const { flatMap, flat, stateScan } = list
|
|
@@ -16,7 +16,7 @@ const { flatMap, flat, stateScan } = list
|
|
|
16
16
|
|
|
17
17
|
const errorMask = 0b1000_0000_0000_0000_0000_0000_0000_0000
|
|
18
18
|
|
|
19
|
-
/** @type {(input:number) =>
|
|
19
|
+
/** @type {(input:number) => list.List<u8>} */
|
|
20
20
|
const codePointToUtf8 = input => {
|
|
21
21
|
if (input >= 0x0000 && input <= 0x007f) { return [input & 0b01111_1111] }
|
|
22
22
|
if (input >= 0x0080 && input <= 0x07ff) { return [input >> 6 | 0b1100_0000, input & 0b0011_1111 | 0b1000_0000] }
|
|
@@ -31,7 +31,7 @@ const codePointToUtf8 = input => {
|
|
|
31
31
|
return [errorMask]
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
const fromCodePointList = flatMap(codePointToUtf8)
|
|
34
|
+
export const fromCodePointList = flatMap(codePointToUtf8)
|
|
35
35
|
|
|
36
36
|
/** @type {(state: Utf8NonEmptyState) => i32}*/
|
|
37
37
|
const utf8StateToError = state => {
|
|
@@ -59,7 +59,7 @@ const utf8StateToError = state => {
|
|
|
59
59
|
return x | errorMask
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
/** @type {operator.StateScan<number, Utf8State,
|
|
62
|
+
/** @type {operator.StateScan<number, Utf8State, list.List<i32>>} */
|
|
63
63
|
const utf8ByteToCodePointOp = state => byte => {
|
|
64
64
|
if (byte < 0x00 || byte > 0xff) {
|
|
65
65
|
return [[errorMask], state]
|
|
@@ -95,22 +95,15 @@ const utf8ByteToCodePointOp = state => byte => {
|
|
|
95
95
|
return [[error, byte | errorMask], null]
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
/** @type {(state: Utf8State) => readonly[
|
|
98
|
+
/** @type {(state: Utf8State) => readonly[list.List<i32>, Utf8State]} */
|
|
99
99
|
const utf8EofToCodePointOp = state =>
|
|
100
100
|
[state === null ? null : [utf8StateToError(state)], null]
|
|
101
101
|
|
|
102
|
-
/** @type {operator.StateScan<ByteOrEof, Utf8State,
|
|
102
|
+
/** @type {operator.StateScan<ByteOrEof, Utf8State, list.List<i32>>} */
|
|
103
103
|
const utf8ByteOrEofToCodePointOp = state => input => input === null ? utf8EofToCodePointOp(state) : utf8ByteToCodePointOp(state)(input)
|
|
104
104
|
|
|
105
|
-
/** @type {
|
|
105
|
+
/** @type {list.List<ByteOrEof>} */
|
|
106
106
|
const eofList = [null]
|
|
107
107
|
|
|
108
|
-
/** @type {(input:
|
|
109
|
-
const toCodePointList = input => flat(stateScan(utf8ByteOrEofToCodePointOp)(null)(flat([input, eofList])))
|
|
110
|
-
|
|
111
|
-
export default {
|
|
112
|
-
/** @readonly */
|
|
113
|
-
fromCodePointList,
|
|
114
|
-
/** @readonly */
|
|
115
|
-
toCodePointList
|
|
116
|
-
}
|
|
108
|
+
/** @type {(input: list.List<u8>) => list.List<i32>} */
|
|
109
|
+
export const toCodePointList = input => flat(stateScan(utf8ByteOrEofToCodePointOp)(null)(flat([input, eofList])))
|
package/text/utf8/test.f.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import encoding from './module.f.mjs'
|
|
2
|
-
import json from '../../json/module.f.mjs'
|
|
3
|
-
import o from '../../types/object/module.f.mjs'
|
|
1
|
+
import * as encoding from './module.f.mjs'
|
|
2
|
+
import * as json from '../../json/module.f.mjs'
|
|
3
|
+
import * as o from '../../types/object/module.f.mjs'
|
|
4
4
|
const { sort } = o
|
|
5
|
-
import list from '../../types/list/module.f.mjs'
|
|
5
|
+
import * as list from '../../types/list/module.f.mjs'
|
|
6
6
|
|
|
7
7
|
const stringify = json.stringify(sort)
|
|
8
8
|
|
package/tsconfig.json
CHANGED
|
@@ -42,12 +42,12 @@
|
|
|
42
42
|
// "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */
|
|
43
43
|
|
|
44
44
|
/* Emit */
|
|
45
|
-
|
|
45
|
+
"declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
|
|
46
46
|
// "declarationMap": true, /* Create sourcemaps for d.ts files. */
|
|
47
47
|
// "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
|
|
48
48
|
// "sourceMap": true, /* Create source map files for emitted JavaScript files. */
|
|
49
49
|
// "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */
|
|
50
|
-
|
|
50
|
+
"outDir": "./out", /* Specify an output folder for all emitted files. */
|
|
51
51
|
// "removeComments": true, /* Disable emitting comments. */
|
|
52
52
|
"noEmit": true, /* Disable emitting files from a compilation. */
|
|
53
53
|
// "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
|
package/types/array/module.f.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
|
-
import option from '../nullable/module.f.mjs'
|
|
2
|
+
import * as option from '../nullable/module.f.mjs'
|
|
3
3
|
const { map } = option
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -86,22 +86,22 @@ const uncheckTail = a => a.slice(1)
|
|
|
86
86
|
const uncheckHead = a => a.slice(0, -1)
|
|
87
87
|
|
|
88
88
|
/** @type {(index: number) => <T>(a: readonly T[]) => T|null} */
|
|
89
|
-
const at = i => a => {
|
|
89
|
+
export const at = i => a => {
|
|
90
90
|
const r = a[i]
|
|
91
91
|
return r === void 0 ? null : r
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
/** @type {<T>(_: readonly T[]) => T|null} */
|
|
95
|
-
const first = at(0)
|
|
95
|
+
export const first = at(0)
|
|
96
96
|
|
|
97
97
|
/** @type {<T>(_: readonly T[]) => T|null} */
|
|
98
|
-
const last = a => at(a.length - 1)(a)
|
|
98
|
+
export const last = a => at(a.length - 1)(a)
|
|
99
99
|
|
|
100
100
|
/** @type {<T>(_: readonly T[]) => readonly T[] | null} */
|
|
101
|
-
const tail = a => a.length === 0 ? null : uncheckTail(a)
|
|
101
|
+
export const tail = a => a.length === 0 ? null : uncheckTail(a)
|
|
102
102
|
|
|
103
103
|
/** @type {<T>(_: readonly T[]) => readonly[T, readonly T[]]|null} */
|
|
104
|
-
const splitFirst = a => {
|
|
104
|
+
export const splitFirst = a => {
|
|
105
105
|
/** @typedef {typeof a[0]} T*/
|
|
106
106
|
/** @type {(_: T) => readonly[T, readonly T[]]} */
|
|
107
107
|
const split = first => [first, uncheckTail(a)]
|
|
@@ -109,28 +109,11 @@ const splitFirst = a => {
|
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
/** @type {<T>(_: readonly T[]) => readonly T[]|null} */
|
|
112
|
-
const head = a => a.length === 0 ? null : uncheckHead(a)
|
|
112
|
+
export const head = a => a.length === 0 ? null : uncheckHead(a)
|
|
113
113
|
|
|
114
114
|
/** @type {<T>(_: readonly T[]) => readonly[readonly T[], T]|null} */
|
|
115
|
-
const splitLast = a => {
|
|
115
|
+
export const splitLast = a => {
|
|
116
116
|
const lastA = last(a)
|
|
117
117
|
if (lastA === null) { return null }
|
|
118
118
|
return [uncheckHead(a), lastA]
|
|
119
119
|
}
|
|
120
|
-
|
|
121
|
-
export default {
|
|
122
|
-
/** @readonly */
|
|
123
|
-
at,
|
|
124
|
-
/** @readnly */
|
|
125
|
-
first,
|
|
126
|
-
/** @readonly */
|
|
127
|
-
last,
|
|
128
|
-
/** @readonly */
|
|
129
|
-
head,
|
|
130
|
-
/** @readonly */
|
|
131
|
-
tail,
|
|
132
|
-
/** @readonly */
|
|
133
|
-
splitFirst,
|
|
134
|
-
/** @readonly */
|
|
135
|
-
splitLast,
|
|
136
|
-
}
|
package/types/array/test.f.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import _ from './module.f.mjs'
|
|
2
|
-
import json from '../../json/module.f.mjs'
|
|
3
|
-
import o from '../object/module.f.mjs'
|
|
1
|
+
import * as _ from './module.f.mjs'
|
|
2
|
+
import * as json from '../../json/module.f.mjs'
|
|
3
|
+
import * as o from '../object/module.f.mjs'
|
|
4
4
|
const { sort } = o
|
|
5
5
|
|
|
6
6
|
const stringify = json.stringify(sort)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
|
-
import bi from '../bigint/module.f.mjs'
|
|
2
|
+
import * as bi from '../bigint/module.f.mjs'
|
|
3
3
|
const { abs, sign } = bi
|
|
4
4
|
|
|
5
5
|
/** @typedef {readonly[bigint,number]} BigFloat */
|
|
@@ -47,7 +47,7 @@ const pow = base => exp => base ** BigInt(exp)
|
|
|
47
47
|
const pow5 = pow(5n)
|
|
48
48
|
|
|
49
49
|
/** @type {(b: BigFloat) => (mul: bigint) => BigFloat} */
|
|
50
|
-
const multiply = ([m, e]) => mul => [m * mul, e]
|
|
50
|
+
export const multiply = ([m, e]) => mul => [m * mul, e]
|
|
51
51
|
|
|
52
52
|
/** @type {(b: BigFloat) => (div: bigint) => BigFloatWithRemainder} */
|
|
53
53
|
const divide = ([m, e]) => div => [[m / div, e], m % div]
|
|
@@ -68,7 +68,7 @@ const round53 = ([[m, e], r]) => {
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
/** @type {(dec: BigFloat) => BigFloat} */
|
|
71
|
-
const decToBin = dec => {
|
|
71
|
+
export const decToBin = dec => {
|
|
72
72
|
if (dec[0] === 0n) {
|
|
73
73
|
return [0n, 0]
|
|
74
74
|
}
|
|
@@ -86,10 +86,3 @@ const decToBin = dec => {
|
|
|
86
86
|
const r53 = round53(qr)
|
|
87
87
|
return multiply(r53)(s)
|
|
88
88
|
}
|
|
89
|
-
|
|
90
|
-
export default {
|
|
91
|
-
/** @readonly */
|
|
92
|
-
decToBin,
|
|
93
|
-
/** @readonly */
|
|
94
|
-
multiply
|
|
95
|
-
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
|
-
import
|
|
2
|
+
import * as compare from '../function/compare/module.f.mjs'
|
|
3
3
|
import * as Operator from '../function/operator/module.f.mjs'
|
|
4
4
|
const { unsafeCmp } = compare
|
|
5
|
-
import list from '../list/module.f.mjs'
|
|
5
|
+
import * as list from '../list/module.f.mjs'
|
|
6
6
|
const { reduce } = list
|
|
7
7
|
|
|
8
8
|
/** @typedef {Operator.Unary<bigint, bigint>} Unary*/
|
|
9
9
|
|
|
10
10
|
/** @type {(a: bigint) => (b: bigint) => bigint} */
|
|
11
|
-
const addition = a => b => a + b
|
|
11
|
+
export const addition = a => b => a + b
|
|
12
12
|
|
|
13
|
-
const sum = reduce(addition)(0n)
|
|
13
|
+
export const sum = reduce(addition)(0n)
|
|
14
14
|
|
|
15
15
|
/** @type {(a: bigint) => bigint} */
|
|
16
|
-
const abs = a => a >= 0 ? a : -a
|
|
16
|
+
export const abs = a => a >= 0 ? a : -a
|
|
17
17
|
|
|
18
|
-
/** @type {(a: bigint) =>
|
|
19
|
-
const sign = a => unsafeCmp(a)(0n)
|
|
18
|
+
/** @type {(a: bigint) => compare.Sign} */
|
|
19
|
+
export const sign = a => unsafeCmp(a)(0n)
|
|
20
20
|
|
|
21
21
|
/** @type {(a: bigint) => string} */
|
|
22
|
-
const serialize = a => `${a}n`
|
|
22
|
+
export const serialize = a => `${a}n`
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* @template T
|
|
@@ -30,7 +30,7 @@ const serialize = a => `${a}n`
|
|
|
30
30
|
*/
|
|
31
31
|
|
|
32
32
|
/** @type {<T>(a: Additive<T>) => (a: T) => (n: bigint) => T} */
|
|
33
|
-
const scalar_mul = ({ 0: _0, add }) => a => n => {
|
|
33
|
+
export const scalar_mul = ({ 0: _0, add }) => a => n => {
|
|
34
34
|
let ai = a
|
|
35
35
|
let ni = n
|
|
36
36
|
let result = _0
|
|
@@ -64,7 +64,7 @@ const scalar_mul = ({ 0: _0, add }) => a => n => {
|
|
|
64
64
|
* 2. **Binary Search Phase:** Refines the result by halving the step size and incrementally
|
|
65
65
|
* determining the exact value of the logarithm.
|
|
66
66
|
*/
|
|
67
|
-
const log2 = v => {
|
|
67
|
+
export const log2 = v => {
|
|
68
68
|
if (v <= 0n) { return -1n }
|
|
69
69
|
let result = 0n
|
|
70
70
|
let i = 1n
|
|
@@ -111,29 +111,10 @@ const log2 = v => {
|
|
|
111
111
|
* The function uses the `log2` function to calculate the position of the most significant bit(MSB)
|
|
112
112
|
* and adds `1n` to account for the MSB itself.For negative numbers, the absolute value is used.
|
|
113
113
|
*/
|
|
114
|
-
const bitLength = v => {
|
|
114
|
+
export const bitLength = v => {
|
|
115
115
|
if (v <= 0n) {
|
|
116
116
|
if (v === 0n) { return 0n }
|
|
117
117
|
v = -v
|
|
118
118
|
}
|
|
119
119
|
return log2(v) + 1n
|
|
120
120
|
}
|
|
121
|
-
|
|
122
|
-
export default {
|
|
123
|
-
/** @readonly */
|
|
124
|
-
addition,
|
|
125
|
-
/** @readonly */
|
|
126
|
-
sum,
|
|
127
|
-
/** @readonly */
|
|
128
|
-
abs,
|
|
129
|
-
/** @readonly */
|
|
130
|
-
sign,
|
|
131
|
-
/** @readonly */
|
|
132
|
-
serialize,
|
|
133
|
-
/** @readonly */
|
|
134
|
-
scalar_mul,
|
|
135
|
-
/** @readonly */
|
|
136
|
-
log2,
|
|
137
|
-
/** @readonly */
|
|
138
|
-
bitLength,
|
|
139
|
-
}
|
package/types/bigint/test.f.mjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
2
|
import * as _ from '../types/module.f.mjs'
|
|
3
3
|
import * as List from '../../list/module.f.mjs'
|
|
4
|
-
import
|
|
4
|
+
import * as cmp from '../../function/compare/module.f.mjs'
|
|
5
5
|
const { index3, index5 } = cmp
|
|
6
6
|
import * as Array from '../../array/module.f.mjs'
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* @template T
|
|
10
|
-
* @typedef {readonly[
|
|
10
|
+
* @typedef {readonly[cmp.Index3, _.Leaf1<T>]} FirstLeaf1
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
/**
|
|
@@ -17,7 +17,7 @@ import * as Array from '../../array/module.f.mjs'
|
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* @template T
|
|
20
|
-
* @typedef {readonly[
|
|
20
|
+
* @typedef {readonly[cmp.Index5, _.Leaf2<T>]} FirstLeaf2
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
23
|
/**
|
|
@@ -62,11 +62,11 @@ const child = item =>
|
|
|
62
62
|
* }} Result<T>
|
|
63
63
|
*/
|
|
64
64
|
|
|
65
|
-
/** @type {<T>(c:
|
|
66
|
-
const find = c => {
|
|
65
|
+
/** @type {<T>(c: cmp.Compare<T>) => (node: _.Node<T>) => Result<T>} */
|
|
66
|
+
export const find = c => {
|
|
67
67
|
const i3 = index3(c)
|
|
68
68
|
const i5 = index5(c)
|
|
69
|
-
/** @typedef {typeof c extends
|
|
69
|
+
/** @typedef {typeof c extends cmp.Compare<infer T> ? T : never} T */
|
|
70
70
|
/** @type {(prior: Path<T>) => (node: _.Node<T>) => Result<T>} */
|
|
71
71
|
const f = tail => node => {
|
|
72
72
|
/** @type {(index: Array.KeyOf<typeof node>) => Result<T>} */
|
|
@@ -99,7 +99,7 @@ const find = c => {
|
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
/** @type {<T>(first: First<T>) => boolean} */
|
|
102
|
-
const isFound = ([i]) => {
|
|
102
|
+
export const isFound = ([i]) => {
|
|
103
103
|
switch (i) {
|
|
104
104
|
case 1: case 3: { return true }
|
|
105
105
|
default: { return false }
|
|
@@ -107,7 +107,7 @@ const isFound = ([i]) => {
|
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
/** @type {<T>(first: First<T>) => T | null} */
|
|
110
|
-
const value = ([i, r]) => {
|
|
110
|
+
export const value = ([i, r]) => {
|
|
111
111
|
switch (i) {
|
|
112
112
|
case 1: {
|
|
113
113
|
switch (r.length) {
|
|
@@ -123,12 +123,3 @@ const value = ([i, r]) => {
|
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
|
-
|
|
127
|
-
export default {
|
|
128
|
-
/** @readonly */
|
|
129
|
-
find,
|
|
130
|
-
/** @readonly */
|
|
131
|
-
value,
|
|
132
|
-
/** @readonly */
|
|
133
|
-
isFound,
|
|
134
|
-
}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import
|
|
2
|
-
import list from '../../list/module.f.mjs'
|
|
3
|
-
import
|
|
4
|
-
import o from '../../object/module.f.mjs'
|
|
1
|
+
import * as _ from './module.f.mjs'
|
|
2
|
+
import * as list from '../../list/module.f.mjs'
|
|
3
|
+
import * as json from '../../../json/module.f.mjs'
|
|
4
|
+
import * as o from '../../object/module.f.mjs'
|
|
5
5
|
const { sort } = o
|
|
6
6
|
import * as btree from '../types/module.f.mjs'
|
|
7
|
-
import string from '../../string/module.f.mjs'
|
|
7
|
+
import * as string from '../../string/module.f.mjs'
|
|
8
8
|
const { cmp } = string
|
|
9
|
-
import s from '../set/module.f.mjs'
|
|
9
|
+
import * as s from '../set/module.f.mjs'
|
|
10
10
|
|
|
11
11
|
const jsonStr = json.stringify(sort)
|
|
12
12
|
|
|
13
13
|
/** @type {(node: btree.Node<string>) => (value: string) => btree.Node<string>} */
|
|
14
14
|
const set = node => value => s.set(cmp(value))(() => value)(node)
|
|
15
15
|
|
|
16
|
-
/** @type {(r:
|
|
16
|
+
/** @type {(r: _.Result<json.Unknown>) => string} */
|
|
17
17
|
const str = r => jsonStr(list.toArray(list.map(x => x[0])(r)))
|
|
18
18
|
|
|
19
19
|
/** @type {(i: string) => (m: btree.Node<string>) => string} */
|
package/types/btree/module.f.mjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import * as list from '../list/module.f.mjs'
|
|
4
4
|
const { flat } = list
|
|
5
|
-
import n from '../nullable/module.f.mjs'
|
|
5
|
+
import * as n from '../nullable/module.f.mjs'
|
|
6
6
|
const { map } = n
|
|
7
7
|
import * as _ from './types/module.f.mjs'
|
|
8
8
|
|
|
9
|
-
/** @type {<T>(node: _.Node<T>) =>
|
|
9
|
+
/** @type {<T>(node: _.Node<T>) => list.Thunk<T>} */
|
|
10
10
|
const nodeValues = node => () => {
|
|
11
11
|
switch (node.length) {
|
|
12
12
|
case 1: case 2: { return node }
|
|
@@ -29,12 +29,7 @@ const nodeValues = node => () => {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
const values = map(nodeValues)
|
|
32
|
+
export const empty = null
|
|
34
33
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
empty: null,
|
|
38
|
-
/** @readonly */
|
|
39
|
-
values,
|
|
40
|
-
}
|
|
34
|
+
/** @type {<T>(tree: _.Tree<T>) => list.List<T>} */
|
|
35
|
+
export const values = map(nodeValues)
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
2
|
import * as _ from '../types/module.f.mjs'
|
|
3
3
|
import * as Cmp from '../../function/compare/module.f.mjs'
|
|
4
|
-
import
|
|
5
|
-
import list from '../../list/module.f.mjs'
|
|
4
|
+
import * as find from '../find/module.f.mjs'
|
|
5
|
+
import * as list from '../../list/module.f.mjs'
|
|
6
6
|
const { fold, concat, next } = list
|
|
7
7
|
import * as Array from '../../array/module.f.mjs'
|
|
8
|
-
import n from '../../nullable/module.f.mjs'
|
|
8
|
+
import * as n from '../../nullable/module.f.mjs'
|
|
9
9
|
const { map } = n
|
|
10
10
|
|
|
11
11
|
/**
|
|
@@ -17,11 +17,11 @@ const { map } = n
|
|
|
17
17
|
* @template T
|
|
18
18
|
* @typedef {{
|
|
19
19
|
* readonly first: Leaf01<T>,
|
|
20
|
-
* readonly tail:
|
|
20
|
+
* readonly tail: find.Path<T>
|
|
21
21
|
* }} RemovePath
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
|
-
/** @type {<T>(tail:
|
|
24
|
+
/** @type {<T>(tail: find.Path<T>) => (n: _.Node<T>) => readonly[T, RemovePath<T>]} */
|
|
25
25
|
const path = tail => n => {
|
|
26
26
|
switch (n.length) {
|
|
27
27
|
case 1: { return [n[0], { first: null, tail }] }
|
|
@@ -95,7 +95,7 @@ const initValue1 = a => n => {
|
|
|
95
95
|
* @typedef {(a: A) => (n: _.Branch3<T>) => _.Branch1<T> | _.Branch3<T>} Merge
|
|
96
96
|
*/
|
|
97
97
|
|
|
98
|
-
/** @type {<A, T>(ms: Array.Array2<Merge<A, T>>) => (i:
|
|
98
|
+
/** @type {<A, T>(ms: Array.Array2<Merge<A, T>>) => (i: find.PathItem<T>) => (a: A) => Branch<T>} */
|
|
99
99
|
const reduceX = ms => ([i, n]) => a => {
|
|
100
100
|
const [m0, m2] = ms
|
|
101
101
|
/** @typedef {typeof ms extends Array.Array2<Merge<infer A, infer T>> ? [A,T] : never} AT */
|
|
@@ -118,14 +118,14 @@ const reduce = fold(reduceX([reduceValue0, reduceValue2]))
|
|
|
118
118
|
const initReduce = reduceX([initValue0, initValue1])
|
|
119
119
|
|
|
120
120
|
/** @type {<T>(c: Cmp.Compare<T>) => (node: _.Node<T>) => _.Tree<T>} */
|
|
121
|
-
const nodeRemove = c => node => {
|
|
121
|
+
export const nodeRemove = c => node => {
|
|
122
122
|
/** @typedef {typeof c extends Cmp.Compare<infer T> ? T : never} T */
|
|
123
123
|
/** @type {() => null | RemovePath<T>} */
|
|
124
124
|
const f = () => {
|
|
125
125
|
const { first, tail } = find.find(c)(node)
|
|
126
|
-
/** @type {(n: _.Node<T>) => (f: (v: T) =>
|
|
126
|
+
/** @type {(n: _.Node<T>) => (f: (v: T) => find.PathItem<T>) => RemovePath<T>} */
|
|
127
127
|
const branch = n => f => {
|
|
128
|
-
const [v, p] = path(/** @type {
|
|
128
|
+
const [v, p] = path(/** @type {find.Path<T>} */(null))(n)
|
|
129
129
|
return { first: p.first, tail: concat(p.tail)({ first: f(v), tail }) }
|
|
130
130
|
}
|
|
131
131
|
const [i, n] = first
|
|
@@ -158,11 +158,4 @@ const nodeRemove = c => node => {
|
|
|
158
158
|
}
|
|
159
159
|
|
|
160
160
|
/** @type {<T>(c: Cmp.Compare<T>) => (tree: _.Tree<T>) => _.Tree<T>} */
|
|
161
|
-
const remove = c => map(nodeRemove(c))
|
|
162
|
-
|
|
163
|
-
export default {
|
|
164
|
-
/** @readonly */
|
|
165
|
-
nodeRemove,
|
|
166
|
-
/** @readonly */
|
|
167
|
-
remove,
|
|
168
|
-
}
|
|
161
|
+
export const remove = c => map(nodeRemove(c))
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import _ from './module.f.mjs'
|
|
1
|
+
import * as _ from './module.f.mjs'
|
|
2
2
|
import * as BTree from '../types/module.f.mjs'
|
|
3
|
-
import s from '../set/module.f.mjs'
|
|
4
|
-
import str from '../../string/module.f.mjs'
|
|
3
|
+
import * as s from '../set/module.f.mjs'
|
|
4
|
+
import * as str from '../../string/module.f.mjs'
|
|
5
5
|
const { cmp } = str
|
|
6
|
-
import json from '../../../json/module.f.mjs'
|
|
7
|
-
import o from '../../object/module.f.mjs'
|
|
6
|
+
import * as json from '../../../json/module.f.mjs'
|
|
7
|
+
import * as o from '../../object/module.f.mjs'
|
|
8
8
|
const { sort } = o
|
|
9
9
|
|
|
10
10
|
/** @type {(node: BTree.Node<string>) => (value: string) => BTree.Node<string>} */
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
2
|
import * as _ from '../types/module.f.mjs'
|
|
3
|
-
import
|
|
3
|
+
import * as btreeFind from '../find/module.f.mjs'
|
|
4
4
|
const { find } = btreeFind
|
|
5
5
|
import * as Cmp from '../../function/compare/module.f.mjs'
|
|
6
|
-
import list from '../../list/module.f.mjs'
|
|
6
|
+
import * as list from '../../list/module.f.mjs'
|
|
7
7
|
const { fold } = list
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -14,7 +14,7 @@ const { fold } = list
|
|
|
14
14
|
/** @type {<T>(b: _.Branch5<T> | _.Branch7<T>) => Branch1To3<T>} */
|
|
15
15
|
const b57 = b => b.length === 5 ? [b] : [[b[0], b[1], b[2]], b[3], [b[4], b[5], b[6]]]
|
|
16
16
|
|
|
17
|
-
/** @type {<T>(i:
|
|
17
|
+
/** @type {<T>(i: btreeFind.PathItem<T>) => (a: Branch1To3<T>) => Branch1To3<T>} */
|
|
18
18
|
const reduceOp = ([i, x]) => a => {
|
|
19
19
|
switch (i) {
|
|
20
20
|
case 0: {
|
|
@@ -89,9 +89,4 @@ const nodeSet = c => g => node => {
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
/** @type {<T>(c: Cmp.Compare<T>) => (f: (value: T|null) => T) => (tree: _.Tree<T>) => _.Node<T>} */
|
|
92
|
-
const set = c => f => tree => tree === null ? [f(null)] : nodeSet(c)(f)(tree)
|
|
93
|
-
|
|
94
|
-
export default {
|
|
95
|
-
/** @readonly */
|
|
96
|
-
set,
|
|
97
|
-
}
|
|
92
|
+
export const set = c => f => tree => tree === null ? [f(null)] : nodeSet(c)(f)(tree)
|