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/com/cpp/module.f.mjs
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
|
-
import
|
|
3
|
-
import
|
|
2
|
+
import * as types from '../types/module.f.mjs'
|
|
3
|
+
import * as text from '../../text/module.f.mjs'
|
|
4
4
|
import * as O from '../../types/object/module.f.mjs'
|
|
5
|
-
import list from '../../types/list/module.f.mjs'
|
|
6
|
-
import string from '../../types/string/module.f.mjs'
|
|
5
|
+
import * as list from '../../types/list/module.f.mjs'
|
|
6
|
+
import * as string from '../../types/string/module.f.mjs'
|
|
7
7
|
const { join } = string
|
|
8
8
|
const { paramList } = types
|
|
9
9
|
const { map, flatMap, flat } = list
|
|
10
10
|
const { entries } = Object
|
|
11
11
|
|
|
12
|
-
/** @type {(name: string) => (body:
|
|
12
|
+
/** @type {(name: string) => (body: text.Block) => text.Block} */
|
|
13
13
|
const struct = name => body => [`struct ${name}`, '{', body, '};']
|
|
14
14
|
|
|
15
15
|
const baseTypeMap = {
|
|
@@ -28,7 +28,7 @@ const baseTypeMap = {
|
|
|
28
28
|
bool: 'bool',
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
/** @type {(t:
|
|
31
|
+
/** @type {(t: types.BaseType) => string} */
|
|
32
32
|
const baseType = t => baseTypeMap[t]
|
|
33
33
|
|
|
34
34
|
const resultVoid = types.result('void')
|
|
@@ -44,17 +44,17 @@ const ptr = id => `${id} const*`
|
|
|
44
44
|
/** @type {(id: string) => string} */
|
|
45
45
|
const ref = id => `${id} const&`
|
|
46
46
|
|
|
47
|
-
/** @type {(p:
|
|
47
|
+
/** @type {(p: types.Field) => string} */
|
|
48
48
|
const paramName = ([name]) => name
|
|
49
49
|
|
|
50
50
|
const mapParamName = map(paramName)
|
|
51
51
|
|
|
52
52
|
const joinComma = join(', ')
|
|
53
53
|
|
|
54
|
-
/** @type {(name: string) => (lib:
|
|
55
|
-
const cpp = name => lib => {
|
|
54
|
+
/** @type {(name: string) => (lib: types.Library) => text.Block} */
|
|
55
|
+
export const cpp = name => lib => {
|
|
56
56
|
|
|
57
|
-
/** @type {(t:
|
|
57
|
+
/** @type {(t: types.Type) => string|null} */
|
|
58
58
|
const interface_ = t => {
|
|
59
59
|
if (!(t instanceof Array) || t.length !== 1) {
|
|
60
60
|
return null
|
|
@@ -63,7 +63,7 @@ const cpp = name => lib => {
|
|
|
63
63
|
return 'interface' in lib[name] ? name : null
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
/** @type {(i: (t: string) => string) => (t:
|
|
66
|
+
/** @type {(i: (t: string) => string) => (t: types.Type) => string} */
|
|
67
67
|
const objectType = i => t => {
|
|
68
68
|
if (typeof (t) === 'string') { return baseType(t) }
|
|
69
69
|
if (t.length === 2) { return `${type(t[1])} const*` }
|
|
@@ -75,27 +75,27 @@ const cpp = name => lib => {
|
|
|
75
75
|
|
|
76
76
|
const resultType = objectType(ptr)
|
|
77
77
|
|
|
78
|
-
/** @type {(s:
|
|
78
|
+
/** @type {(s: types.Field) => text.Item} */
|
|
79
79
|
const field = ([name, t]) => `${type(t)} ${name};`
|
|
80
80
|
|
|
81
81
|
const mapField = map(field)
|
|
82
82
|
|
|
83
|
-
/** @type {(s:
|
|
83
|
+
/** @type {(s: types.Struct) => text.Block} */
|
|
84
84
|
const defStruct = s => mapField(entries(s.struct))
|
|
85
85
|
|
|
86
|
-
/** @type {(fa:
|
|
86
|
+
/** @type {(fa: types.FieldArray) => string} */
|
|
87
87
|
const cppResult = resultVoid(resultType)
|
|
88
88
|
|
|
89
|
-
/** @type {(p:
|
|
89
|
+
/** @type {(p: types.Field) => string} */
|
|
90
90
|
const param = ([name, t]) => `${objectType(ref)(t)} ${name}`
|
|
91
91
|
|
|
92
92
|
const mapParam = map(param)
|
|
93
93
|
|
|
94
|
-
/** @type {(result: string) => (paramArrayStr: string) => (name: string) =>
|
|
94
|
+
/** @type {(result: string) => (paramArrayStr: string) => (name: string) => text.Item} */
|
|
95
95
|
const methodHeader = result => paramArrayStr => name =>
|
|
96
96
|
`virtual ${result} ${name}${paramArrayStr} const noexcept = 0;`
|
|
97
97
|
|
|
98
|
-
/** @type {(m:
|
|
98
|
+
/** @type {(m: types.Method) => readonly text.Item[]} */
|
|
99
99
|
const method = ([name, paramArray]) => {
|
|
100
100
|
const result = cppResult(paramArray)
|
|
101
101
|
const paramL = paramList(paramArray)
|
|
@@ -116,7 +116,7 @@ const cpp = name => lib => {
|
|
|
116
116
|
|
|
117
117
|
const mapMethod = flatMap(method)
|
|
118
118
|
|
|
119
|
-
/** @type {(i:
|
|
119
|
+
/** @type {(i: types.Interface) => text.Block} */
|
|
120
120
|
const defInterface = ({ guid, interface: i }) => {
|
|
121
121
|
const g = guid.replaceAll('-', '');
|
|
122
122
|
const lo = g.substring(0, 16);
|
|
@@ -127,7 +127,7 @@ const cpp = name => lib => {
|
|
|
127
127
|
])
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
-
/** @type {(kv: O.Entry<
|
|
130
|
+
/** @type {(kv: O.Entry<types.Definition>) => text.Block} */
|
|
131
131
|
const def = ([name, d]) => 'interface' in d
|
|
132
132
|
? [
|
|
133
133
|
`class ${name} : public ::nanocom::IUnknown`,
|
|
@@ -138,7 +138,7 @@ const cpp = name => lib => {
|
|
|
138
138
|
]
|
|
139
139
|
: struct(name)(defStruct(d))
|
|
140
140
|
|
|
141
|
-
/** @type {(kv: O.Entry<
|
|
141
|
+
/** @type {(kv: O.Entry<types.Definition>) => text.Block} */
|
|
142
142
|
const forward = ([name]) => [`struct ${name};`]
|
|
143
143
|
|
|
144
144
|
const e = entries(lib)
|
|
@@ -148,8 +148,3 @@ const cpp = name => lib => {
|
|
|
148
148
|
namespace(name)(flat([flatMap(forward)(e), flatMap(def)(e)]))
|
|
149
149
|
])
|
|
150
150
|
}
|
|
151
|
-
|
|
152
|
-
export default {
|
|
153
|
-
/** @readonly */
|
|
154
|
-
cpp,
|
|
155
|
-
}
|
package/com/cpp/testlib.f.mjs
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import string from '../../types/string/module.f.mjs'
|
|
1
|
+
import * as string from '../../types/string/module.f.mjs'
|
|
2
2
|
const { join } = string
|
|
3
|
-
import text from '../../text/module.f.mjs'
|
|
3
|
+
import * as text from '../../text/module.f.mjs'
|
|
4
4
|
const { flat } = text
|
|
5
5
|
import library from '../types/testlib.f.mjs'
|
|
6
|
-
import
|
|
7
|
-
const { cpp } = m
|
|
6
|
+
import { cpp } from './module.f.mjs'
|
|
8
7
|
|
|
9
8
|
export default () => join('\n')(flat(' ')(cpp('My')(library)))
|
package/com/cs/module.f.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
|
-
import
|
|
2
|
+
import * as types from '../types/module.f.mjs'
|
|
3
3
|
const { result, paramList } = types
|
|
4
|
-
import
|
|
4
|
+
import * as text from '../../text/module.f.mjs'
|
|
5
5
|
const { curly } = text
|
|
6
|
-
import
|
|
6
|
+
import * as list from '../../types/list/module.f.mjs'
|
|
7
7
|
const { flat, map, some, flatMap } = list
|
|
8
|
-
import string from '../../types/string/module.f.mjs'
|
|
8
|
+
import * as string from '../../types/string/module.f.mjs'
|
|
9
9
|
const { join } = string
|
|
10
10
|
import * as O from '../../types/object/module.f.mjs'
|
|
11
11
|
const { entries } = Object
|
|
@@ -14,11 +14,11 @@ const { entries } = Object
|
|
|
14
14
|
const using = v => `using ${v};`
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
|
-
* @type {(attributes:
|
|
17
|
+
* @type {(attributes: list.List<string>) =>
|
|
18
18
|
* (type: string) =>
|
|
19
19
|
* (name: string) =>
|
|
20
|
-
* (body:
|
|
21
|
-
*
|
|
20
|
+
* (body: text.Block) =>
|
|
21
|
+
* list.List<text.Item>}
|
|
22
22
|
*/
|
|
23
23
|
const typeDef = attributes => type => name => body =>
|
|
24
24
|
flat([
|
|
@@ -42,33 +42,33 @@ const baseTypeMap = {
|
|
|
42
42
|
usize: 'UIntPtr',
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
/** @type {(t:
|
|
45
|
+
/** @type {(t: types.BaseType) => string} */
|
|
46
46
|
const baseType = t => baseTypeMap[t]
|
|
47
47
|
|
|
48
48
|
/** @type {(isUnsafe: boolean) => string} */
|
|
49
49
|
const unsafe = isUnsafe => isUnsafe ? 'unsafe ' : ''
|
|
50
50
|
|
|
51
|
-
/** @type {(t:
|
|
51
|
+
/** @type {(t: types.Type) => readonly[boolean, string]} */
|
|
52
52
|
const fullType = t =>
|
|
53
53
|
typeof (t) === 'string' ? [false, baseType(t)] :
|
|
54
54
|
t.length === 1 ? [false, t[0]] :
|
|
55
55
|
[true, `${type(t[1])}*`]
|
|
56
56
|
|
|
57
|
-
/** @type {(m:
|
|
57
|
+
/** @type {(m: types.Type) => string} */
|
|
58
58
|
const type = t => fullType(t)[1]
|
|
59
59
|
|
|
60
|
-
/** @type {(f:
|
|
60
|
+
/** @type {(f: types.Field) => string} */
|
|
61
61
|
const param = ([name, t]) => `${type(t)} ${name}`
|
|
62
62
|
|
|
63
63
|
const mapParam = map(param)
|
|
64
64
|
|
|
65
|
-
/** @type {(f:
|
|
65
|
+
/** @type {(f: types.Field) => string} */
|
|
66
66
|
const field = ([name, comType]) => {
|
|
67
67
|
const [isUnsafe, t] = fullType(comType)
|
|
68
68
|
return `public ${unsafe(isUnsafe)}${t} ${name};`
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
/** @type {(field:
|
|
71
|
+
/** @type {(field: types.Field) => boolean} */
|
|
72
72
|
const isUnsafeField = field => fullType(field[1])[0]
|
|
73
73
|
|
|
74
74
|
const mapIsUnsafeField = map(isUnsafeField)
|
|
@@ -77,7 +77,7 @@ const resultVoid = result('void')
|
|
|
77
77
|
|
|
78
78
|
const joinComma = join(', ')
|
|
79
79
|
|
|
80
|
-
/** @type {(e: O.Entry<
|
|
80
|
+
/** @type {(e: O.Entry<types.FieldArray>) => readonly string[]} */
|
|
81
81
|
const method = ([name, m]) => {
|
|
82
82
|
const paramAndResultList = entries(m)
|
|
83
83
|
const pl = paramList(m)
|
|
@@ -96,7 +96,7 @@ const mapField = map(field)
|
|
|
96
96
|
|
|
97
97
|
const flatMapMethod = flatMap(method)
|
|
98
98
|
|
|
99
|
-
/** @type {(e: O.Entry<
|
|
99
|
+
/** @type {(e: O.Entry<types.Definition>) => list.List<text.Item>} */
|
|
100
100
|
const def = ([n, d]) => {
|
|
101
101
|
return !('interface' in d) ?
|
|
102
102
|
struct(n)(mapField(entries(d.struct))) :
|
|
@@ -111,21 +111,16 @@ const flatMapDef = flatMap(def)
|
|
|
111
111
|
|
|
112
112
|
const namespace = curly('namespace')
|
|
113
113
|
|
|
114
|
-
/** @type {
|
|
114
|
+
/** @type {text.Block} */
|
|
115
115
|
const header = [
|
|
116
116
|
using('System'),
|
|
117
117
|
using('System.Runtime.InteropServices'),
|
|
118
118
|
''
|
|
119
119
|
]
|
|
120
120
|
|
|
121
|
-
/** @type {(name: string) => (library:
|
|
122
|
-
const cs = name => library => {
|
|
121
|
+
/** @type {(name: string) => (library: types.Library) => text.Block} */
|
|
122
|
+
export const cs = name => library => {
|
|
123
123
|
const v = flatMapDef(entries(library))
|
|
124
124
|
const ns = namespace(name)(v)
|
|
125
125
|
return flat([header, ns])
|
|
126
126
|
}
|
|
127
|
-
|
|
128
|
-
export default {
|
|
129
|
-
/** @readonly */
|
|
130
|
-
cs,
|
|
131
|
-
}
|
package/com/cs/testlib.f.mjs
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import text from '../../text/module.f.mjs'
|
|
1
|
+
import * as text from '../../text/module.f.mjs'
|
|
2
2
|
const { flat } = text
|
|
3
|
-
import string from '../../types/string/module.f.mjs'
|
|
3
|
+
import * as string from '../../types/string/module.f.mjs'
|
|
4
4
|
const { join } = string
|
|
5
|
-
import
|
|
5
|
+
import { cs } from './module.f.mjs'
|
|
6
6
|
import library from '../types/testlib.f.mjs'
|
|
7
7
|
|
|
8
|
-
const { cs } = x
|
|
9
|
-
|
|
10
8
|
export default join('\n')(flat(' ')(cs('My')(library)))
|
package/com/rust/module.f.mjs
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
|
-
import
|
|
2
|
+
import * as types from '../types/module.f.mjs'
|
|
3
3
|
const { paramList } = types
|
|
4
4
|
import * as Text from '../../text/module.f.mjs'
|
|
5
5
|
import * as O from '../../types/object/module.f.mjs'
|
|
6
|
-
import
|
|
6
|
+
import * as list from '../../types/list/module.f.mjs'
|
|
7
7
|
const { flat, map, flatMap } = list
|
|
8
8
|
const { entries } = Object
|
|
9
|
-
import func from '../../types/function/module.f.mjs'
|
|
9
|
+
import * as func from '../../types/function/module.f.mjs'
|
|
10
10
|
const { fn } = func
|
|
11
|
-
import string from '../../types/string/module.f.mjs'
|
|
11
|
+
import * as string from '../../types/string/module.f.mjs'
|
|
12
12
|
const { join } = string
|
|
13
13
|
|
|
14
14
|
/** @type {(field: string) => string} */
|
|
@@ -16,7 +16,7 @@ const rustField = field => `pub ${field},`
|
|
|
16
16
|
|
|
17
17
|
const mapRustField = map(rustField)
|
|
18
18
|
|
|
19
|
-
/** @type {(b:
|
|
19
|
+
/** @type {(b: list.Thunk<string>) => (name: string) => Text.Block} */
|
|
20
20
|
const rustStruct = b => name => [`#[repr(C)]`, `pub struct ${name} {`, mapRustField(b), `}`]
|
|
21
21
|
|
|
22
22
|
const commaJoin = join(', ')
|
|
@@ -29,21 +29,21 @@ const obj = name => `&${name}::Object`
|
|
|
29
29
|
|
|
30
30
|
const self = ['&self']
|
|
31
31
|
|
|
32
|
-
/** @type {(p:
|
|
32
|
+
/** @type {(p: types.Field) => string} */
|
|
33
33
|
const paramName = ([n]) => n
|
|
34
34
|
|
|
35
|
-
/** @type {(p:
|
|
35
|
+
/** @type {(p: types.FieldArray) => list.Thunk<string>} */
|
|
36
36
|
const callList = p => map(paramName)(paramList(p))
|
|
37
37
|
|
|
38
|
-
/** @type {(p:
|
|
38
|
+
/** @type {(p: types.FieldArray) => string} */
|
|
39
39
|
const call = p => commaJoin(callList(p))
|
|
40
40
|
|
|
41
|
-
/** @type {(p:
|
|
41
|
+
/** @type {(p: types.FieldArray) => string} */
|
|
42
42
|
const virtualCall = p => commaJoin(flat([['self'], callList(p)]))
|
|
43
43
|
|
|
44
44
|
const super_ = 'super::'
|
|
45
45
|
|
|
46
|
-
/** @type {(m:
|
|
46
|
+
/** @type {(m: types.Method) => string} */
|
|
47
47
|
const assign = ([n]) => `${n}: Self::${n},`
|
|
48
48
|
|
|
49
49
|
const mapAssign = map(assign)
|
|
@@ -131,12 +131,12 @@ const traitImpl = t => {
|
|
|
131
131
|
|
|
132
132
|
const where = ['Self: nanocom::Class<Interface = Interface>', 'nanocom::CObject<Self>: Ex']
|
|
133
133
|
|
|
134
|
-
/** @type {(library:
|
|
135
|
-
const rust = library => {
|
|
134
|
+
/** @type {(library: types.Library) => Text.Block} */
|
|
135
|
+
export const rust = library => {
|
|
136
136
|
|
|
137
|
-
/** @type {(p: string) => (o: (_: string) => string) => (t:
|
|
137
|
+
/** @type {(p: string) => (o: (_: string) => string) => (t: types.Type) => string} */
|
|
138
138
|
const type = p => {
|
|
139
|
-
/** @type {(o: (_: string) => string) => (t:
|
|
139
|
+
/** @type {(o: (_: string) => string) => (t: types.Type) => string} */
|
|
140
140
|
const f = o => t => {
|
|
141
141
|
if (typeof t === 'string') { return t }
|
|
142
142
|
if (t.length === 2) { return `*const ${f(ref)(t[1])}` }
|
|
@@ -147,7 +147,7 @@ const rust = library => {
|
|
|
147
147
|
return f
|
|
148
148
|
}
|
|
149
149
|
|
|
150
|
-
/** @type {(p: string) => (o: (_: string) => string) => (f:
|
|
150
|
+
/** @type {(p: string) => (o: (_: string) => string) => (f: types.Field) => string} */
|
|
151
151
|
const pf = p => o => ([name, t]) => `${name}: ${type(p)(o)(t)}`
|
|
152
152
|
|
|
153
153
|
const param = pf(super_)(obj)
|
|
@@ -156,36 +156,36 @@ const rust = library => {
|
|
|
156
156
|
|
|
157
157
|
const mapField = map(pf('')(ref))
|
|
158
158
|
|
|
159
|
-
/** @type {(fa:
|
|
159
|
+
/** @type {(fa: types.FieldArray) => (name: string) => Text.Block} */
|
|
160
160
|
const struct = fn(entries)
|
|
161
161
|
.then(mapField)
|
|
162
162
|
.then(rustStruct)
|
|
163
163
|
.result
|
|
164
164
|
|
|
165
|
-
/** @type {(first: readonly string[]) => (p:
|
|
165
|
+
/** @type {(first: readonly string[]) => (p: types.FieldArray) => string} */
|
|
166
166
|
const func = first => p => {
|
|
167
167
|
const resultStr = '_' in p ? ` -> ${type(super_)(ref)(p._)}` : ''
|
|
168
168
|
const params = commaJoin(flat([first, mapParam(paramList(p))]))
|
|
169
169
|
return `(${params})${resultStr}`
|
|
170
170
|
}
|
|
171
171
|
|
|
172
|
-
/** @type {(n: string) => (p:
|
|
172
|
+
/** @type {(n: string) => (p: types.FieldArray) => string} */
|
|
173
173
|
const virtualFnType = n => p => `extern "system" fn${n}${func(this_)(p)}`
|
|
174
174
|
|
|
175
|
-
/** @type {(m:
|
|
175
|
+
/** @type {(m: types.Method) => string} */
|
|
176
176
|
const virtualFn = ([n, p]) => `${n}: unsafe ${virtualFnType('')(p)}`
|
|
177
177
|
|
|
178
178
|
const mapVirtualFn = map(virtualFn)
|
|
179
179
|
|
|
180
|
-
/** @type {(m:
|
|
180
|
+
/** @type {(m: types.Method) => string} */
|
|
181
181
|
const headerFn = ([n, p]) => `fn ${n}${func(self)(p)}`
|
|
182
182
|
|
|
183
|
-
/** @type {(m:
|
|
183
|
+
/** @type {(m: types.Method) => string} */
|
|
184
184
|
const traitFn = m => `${headerFn(m)};`
|
|
185
185
|
|
|
186
186
|
const mapTraitFn = map(traitFn)
|
|
187
187
|
|
|
188
|
-
/** @type {(m:
|
|
188
|
+
/** @type {(m: types.Method) => Text.Block} */
|
|
189
189
|
const implFn = m => {
|
|
190
190
|
const [n, p] = m
|
|
191
191
|
return [
|
|
@@ -197,7 +197,7 @@ const rust = library => {
|
|
|
197
197
|
|
|
198
198
|
const flatMapImplFn = flatMap(implFn)
|
|
199
199
|
|
|
200
|
-
/** @type {(m:
|
|
200
|
+
/** @type {(m: types.Method) => Text.Block} */
|
|
201
201
|
const impl = ([n, p]) => {
|
|
202
202
|
const type = virtualFnType(` ${n}`)(p)
|
|
203
203
|
return [
|
|
@@ -209,7 +209,7 @@ const rust = library => {
|
|
|
209
209
|
|
|
210
210
|
const flatMapImpl = flatMap(impl)
|
|
211
211
|
|
|
212
|
-
/** @type {(i:
|
|
212
|
+
/** @type {(i: types.Interface) => (name: string) => Text.Block} */
|
|
213
213
|
const interface_ = ({ interface: i, guid }) => name => {
|
|
214
214
|
|
|
215
215
|
const e = entries(i)
|
|
@@ -253,13 +253,8 @@ const rust = library => {
|
|
|
253
253
|
]
|
|
254
254
|
}
|
|
255
255
|
|
|
256
|
-
/** @type {(type: O.Entry<
|
|
256
|
+
/** @type {(type: O.Entry<types.Definition>) => Text.Block} */
|
|
257
257
|
const def = ([name, type]) => ('interface' in type ? interface_(type) : struct(type.struct))(name)
|
|
258
258
|
|
|
259
259
|
return flat([['#![allow(non_snake_case)]'], flatMap(def)(entries(library))])
|
|
260
260
|
}
|
|
261
|
-
|
|
262
|
-
export default {
|
|
263
|
-
/** @readonly */
|
|
264
|
-
rust,
|
|
265
|
-
}
|
package/com/rust/testlib.f.mjs
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import text from '../../text/module.f.mjs'
|
|
1
|
+
import * as text from '../../text/module.f.mjs'
|
|
2
2
|
const { flat } = text
|
|
3
|
-
import string from '../../types/string/module.f.mjs'
|
|
3
|
+
import * as string from '../../types/string/module.f.mjs'
|
|
4
4
|
const { join } = string
|
|
5
|
-
import
|
|
5
|
+
import { rust } from './module.f.mjs'
|
|
6
6
|
import library from '../types/testlib.f.mjs'
|
|
7
7
|
|
|
8
|
-
const { rust } = x
|
|
9
|
-
|
|
10
8
|
export default join('\n')(flat(' ')(rust(library)))
|
package/com/test/build.f.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as list from '../../types/list/module.f.mjs'
|
|
2
2
|
const { flat } = list
|
|
3
3
|
|
|
4
4
|
import cppContent from '../cpp/testlib.f.mjs'
|
|
@@ -34,7 +34,7 @@ import rustContent from '../rust/testlib.f.mjs'
|
|
|
34
34
|
* readonly name: string
|
|
35
35
|
* readonly content: string
|
|
36
36
|
* }
|
|
37
|
-
* readonly line:
|
|
37
|
+
* readonly line: list.List<list.List<string>>
|
|
38
38
|
* }} Output
|
|
39
39
|
*/
|
|
40
40
|
|
package/com/test/build.mjs
CHANGED
|
@@ -3,12 +3,12 @@ import { execSync } from 'node:child_process'
|
|
|
3
3
|
import { platform, exit } from 'node:process'
|
|
4
4
|
import build, * as Build from './build.f.mjs'
|
|
5
5
|
const { cpp, cs, rust } = build
|
|
6
|
-
import string from '../../types/string/module.f.mjs'
|
|
6
|
+
import * as string from '../../types/string/module.f.mjs'
|
|
7
7
|
const { join } = string
|
|
8
8
|
const { log, error } = console
|
|
9
|
-
import sgr from '../../text/sgr/module.f.mjs'
|
|
10
|
-
const { bold, reset } = sgr
|
|
11
|
-
import list from '../../types/list/module.f.mjs'
|
|
9
|
+
import * as sgr from '../../text/sgr/module.f.mjs'
|
|
10
|
+
const { bold, reset } = sgr.codes
|
|
11
|
+
import * as list from '../../types/list/module.f.mjs'
|
|
12
12
|
|
|
13
13
|
import { fileURLToPath } from 'node:url'
|
|
14
14
|
import { dirname } from 'node:path'
|
package/com/types/module.f.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
2
|
import * as O from '../../types/object/module.f.mjs'
|
|
3
|
-
import
|
|
4
|
-
import f from '../../types/function/module.f.mjs'
|
|
3
|
+
import * as list from '../../types/list/module.f.mjs'
|
|
4
|
+
import * as f from '../../types/function/module.f.mjs'
|
|
5
5
|
const { compose } = f
|
|
6
6
|
const { filter } = list
|
|
7
7
|
const { entries } = Object
|
|
@@ -60,15 +60,8 @@ const isParam = ([name]) => name !== '_'
|
|
|
60
60
|
|
|
61
61
|
const filterParam = filter(isParam)
|
|
62
62
|
|
|
63
|
-
/** @type {(fa: FieldArray) =>
|
|
64
|
-
const paramList = compose(entries)(filterParam)
|
|
63
|
+
/** @type {(fa: FieldArray) => list.List<Field> } */
|
|
64
|
+
export const paramList = compose(entries)(filterParam)
|
|
65
65
|
|
|
66
66
|
/** @type {<T>(v: T) => (f: (type: Type) => T) => (fa: FieldArray) => T} */
|
|
67
|
-
const result = v => f => fa => '_' in fa ? f(fa._) : v
|
|
68
|
-
|
|
69
|
-
export default {
|
|
70
|
-
/** @readonly */
|
|
71
|
-
paramList,
|
|
72
|
-
/** @readonly */
|
|
73
|
-
result,
|
|
74
|
-
}
|
|
67
|
+
export const result = v => f => fa => '_' in fa ? f(fa._) : v
|
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
|
-
import * as
|
|
3
|
-
import
|
|
4
|
-
const { idToString, dir } =
|
|
2
|
+
import * as package_ from '../package/module.f.mjs'
|
|
3
|
+
import * as module from '../module/module.f.mjs'
|
|
4
|
+
const { idToString, dir } = module
|
|
5
5
|
import * as function_ from '../module/function/module.f.mjs'
|
|
6
|
-
import
|
|
6
|
+
import * as map from '../../types/map/module.f.mjs'
|
|
7
7
|
const { empty: mapEmpty, setReplace } = map
|
|
8
|
-
import object from '../../types/object/module.f.mjs'
|
|
8
|
+
import * as object from '../../types/object/module.f.mjs'
|
|
9
9
|
const { fromMap } = object
|
|
10
|
-
import path from '../path/module.f.mjs'
|
|
10
|
+
import * as path from '../path/module.f.mjs'
|
|
11
11
|
const { parseAndFind } = path
|
|
12
|
-
import
|
|
12
|
+
import * as stringSet from '../../types/string_set/module.f.mjs'
|
|
13
13
|
const { set: setSet, contains: setContains, empty: stringSetEmpty } = stringSet
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* @template M
|
|
17
17
|
* @typedef {{
|
|
18
|
-
* readonly packageGet:
|
|
19
|
-
* readonly moduleMapInterface:
|
|
20
|
-
* readonly moduleId:
|
|
18
|
+
* readonly packageGet: package_.Get
|
|
19
|
+
* readonly moduleMapInterface: module.MapInterface<M>
|
|
20
|
+
* readonly moduleId: module.Id
|
|
21
21
|
* readonly moduleMap: M
|
|
22
22
|
* }} Config
|
|
23
23
|
*/
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* @template M
|
|
27
|
-
* @typedef {readonly[
|
|
27
|
+
* @typedef {readonly[module.State, M]} Result
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
30
|
/** @type {<M>(moduleMap: M) => Result<M>} */
|
|
@@ -32,19 +32,19 @@ const notFound = moduleMap => [['error', ['file not found']], moduleMap]
|
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
34
|
* @type {(compile: function_.Compile) =>
|
|
35
|
-
* (packageGet:
|
|
36
|
-
* <M>(moduleMapInterface:
|
|
37
|
-
* (moduleId:
|
|
35
|
+
* (packageGet: package_.Get) =>
|
|
36
|
+
* <M>(moduleMapInterface: module.MapInterface<M>) =>
|
|
37
|
+
* (moduleId: module.Id) =>
|
|
38
38
|
* (moduleMap: M) =>
|
|
39
39
|
* Result<M>
|
|
40
40
|
* }
|
|
41
41
|
*/
|
|
42
|
-
const getOrBuild = compile => packageGet => moduleMapInterface => {
|
|
43
|
-
/** @typedef {typeof moduleMapInterface extends
|
|
42
|
+
export const getOrBuild = compile => packageGet => moduleMapInterface => {
|
|
43
|
+
/** @typedef {typeof moduleMapInterface extends module.MapInterface<infer M> ? M : never} M */
|
|
44
44
|
|
|
45
45
|
/**
|
|
46
|
-
* @type {(buildSet:
|
|
47
|
-
* (moduleId:
|
|
46
|
+
* @type {(buildSet: stringSet.StringSet) =>
|
|
47
|
+
* (moduleId: module.Id) =>
|
|
48
48
|
* (source: string) =>
|
|
49
49
|
* (moduleMap: M) =>
|
|
50
50
|
* Result<M>}
|
|
@@ -53,9 +53,9 @@ const getOrBuild = compile => packageGet => moduleMapInterface => {
|
|
|
53
53
|
const moduleIdStr = idToString(moduleId)
|
|
54
54
|
const buildSet1 = setSet(moduleIdStr)(buildSet)
|
|
55
55
|
const moduleDir = dir(moduleId)
|
|
56
|
-
/** @type {function_.Require<readonly[
|
|
56
|
+
/** @type {function_.Require<readonly[map.Map<string>, M]>} */
|
|
57
57
|
const require_ = p => ([requireMap, m]) => {
|
|
58
|
-
/** @type {(e: unknown) => function_.Result<readonly[
|
|
58
|
+
/** @type {(e: unknown) => function_.Result<readonly[map.Map<string>, M]>} */
|
|
59
59
|
const error = e => [['error', e], [requireMap, m]]
|
|
60
60
|
if (moduleDir === null) { return error('file not found') }
|
|
61
61
|
const r = parseAndFind(packageGet)(moduleDir)(p)
|
|
@@ -66,9 +66,9 @@ const getOrBuild = compile => packageGet => moduleMapInterface => {
|
|
|
66
66
|
return [state[0] === 'error' ? state : ['ok', state[1].exports], [setReplace(p)(rIdStr)(requireMap), m1]]
|
|
67
67
|
}
|
|
68
68
|
return source => moduleMap => {
|
|
69
|
-
/** @type {(s:
|
|
69
|
+
/** @type {(s: module.State) => (m: M) => Result<M>} */
|
|
70
70
|
const set = s => m => [s, moduleMapInterface.setReplace(moduleIdStr)(s)(m)]
|
|
71
|
-
/** @type {(e:
|
|
71
|
+
/** @type {(e: module.Error) => (m: M) => Result<M>} */
|
|
72
72
|
const error = e => set(['error', e])
|
|
73
73
|
// check compilation
|
|
74
74
|
const [kind, result] = compile(source)
|
|
@@ -81,7 +81,7 @@ const getOrBuild = compile => packageGet => moduleMapInterface => {
|
|
|
81
81
|
return x(moduleMap2)
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
|
-
/** @type {(moduleId:
|
|
84
|
+
/** @type {(moduleId: module.Id) => (moduleMap: M) => Result<M>} */
|
|
85
85
|
const f = moduleId => moduleMap => {
|
|
86
86
|
const moduleIdStr = idToString(moduleId)
|
|
87
87
|
// check moduleMap
|
|
@@ -98,8 +98,3 @@ const getOrBuild = compile => packageGet => moduleMapInterface => {
|
|
|
98
98
|
}
|
|
99
99
|
return f
|
|
100
100
|
}
|
|
101
|
-
|
|
102
|
-
export default {
|
|
103
|
-
/** @readonly */
|
|
104
|
-
getOrBuild,
|
|
105
|
-
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import _ from './module.f.mjs'
|
|
2
|
-
import
|
|
1
|
+
import * as _ from './module.f.mjs'
|
|
2
|
+
import * as map from '../../types/map/module.f.mjs'
|
|
3
3
|
import * as Module from '../module/module.f.mjs'
|
|
4
4
|
import * as ModuleFunction from '../module/function/module.f.mjs'
|
|
5
5
|
import * as Result from '../../types/result/module.f.mjs'
|
|
6
6
|
import * as Package from '../package/module.f.mjs'
|
|
7
|
-
import o from '../../types/object/module.f.mjs'
|
|
7
|
+
import * as o from '../../types/object/module.f.mjs'
|
|
8
8
|
const { at } = o
|
|
9
9
|
|
|
10
10
|
/** @type {{ readonly [k in string]?: Result.Result<ModuleFunction.Function_, unknown> }} */
|
|
@@ -69,7 +69,7 @@ const packageGet = packageId => {
|
|
|
69
69
|
const getOrBuild = _.getOrBuild
|
|
70
70
|
(compile)
|
|
71
71
|
(packageGet)
|
|
72
|
-
(/** @type {Module.MapInterface<
|
|
72
|
+
(/** @type {Module.MapInterface<map.Map<Module.State>>} */(map))
|
|
73
73
|
|
|
74
74
|
export default () => {
|
|
75
75
|
let [r, m] = getOrBuild({ package: '', path: ['index.js'] })(map.empty)
|