functionalscript 0.2.6 → 0.3.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/.github/workflows/ci.yml +20 -4
- package/CHANGELOG.md +5 -0
- package/com/cpp/{module.f.mjs → module.f.ts} +65 -44
- package/com/cpp/{test.f.mjs → test.f.ts} +1 -1
- package/com/cpp/testlib.f.ts +8 -0
- package/com/cs/{module.f.mjs → module.f.ts} +47 -38
- package/com/cs/{test.f.mjs → test.f.ts} +2 -2
- package/com/cs/testlib.f.ts +8 -0
- package/com/rust/module.f.ts +287 -0
- package/com/rust/{test.f.mjs → test.f.ts} +1 -1
- package/com/rust/testlib.f.ts +8 -0
- package/com/test/{build.f.mjs → build.f.ts} +47 -45
- package/com/test/{build.mjs → build.ts} +7 -6
- package/com/types/module.f.ts +62 -0
- package/com/types/{testlib.f.mjs → testlib.f.ts} +2 -3
- package/commonjs/build/module.f.ts +100 -0
- package/commonjs/build/{test.f.mjs → test.f.ts} +21 -17
- package/commonjs/module/function/module.f.ts +13 -0
- package/commonjs/module/module.f.ts +41 -0
- package/commonjs/module.f.ts +7 -0
- package/commonjs/{module.mjs → module.ts} +12 -9
- package/commonjs/package/dependencies/module.f.ts +22 -0
- package/commonjs/package/dependencies/{test.f.mjs → test.f.ts} +1 -1
- package/commonjs/package/module.f.ts +31 -0
- package/commonjs/package/{test.f.mjs → test.f.ts} +1 -1
- package/commonjs/path/{module.f.mjs → module.f.ts} +72 -67
- package/commonjs/path/{test.f.mjs → test.f.ts} +25 -19
- package/commonjs/{test.mjs → test.ts} +5 -4
- package/crypto/prime_field/{module.f.mjs → module.f.ts} +40 -37
- package/crypto/prime_field/{test.f.mjs → test.f.ts} +7 -5
- package/crypto/secp/{module.f.mjs → module.f.ts} +44 -44
- package/crypto/secp/{test.f.mjs → test.f.ts} +16 -11
- package/crypto/sha2/{module.f.mjs → module.f.ts} +61 -46
- package/crypto/sha2/{test.f.mjs → test.f.ts} +12 -9
- package/deno.json +71 -0
- package/dev/README.md +8 -0
- package/dev/index.ts +3 -0
- package/dev/{module.f.mjs → module.f.ts} +0 -2
- package/dev/{module.mjs → module.ts} +66 -61
- package/dev/test/{module.f.mjs → module.f.ts} +57 -70
- package/dev/{test.f.mjs → test.f.ts} +7 -5
- package/dev/test.ts +53 -0
- package/djs/{module.f.mjs → module.f.ts} +31 -31
- package/djs/parser/{module.f.mjs → module.f.ts} +190 -182
- package/djs/parser/{test.f.mjs → test.f.ts} +173 -150
- package/djs/serializer/module.f.ts +90 -0
- package/djs/{test.f.mjs → test.f.ts} +4 -4
- package/djs/tokenizer/{module.f.mjs → module.f.ts} +35 -42
- package/djs/tokenizer/{test.f.mjs → test.f.ts} +9 -8
- package/fsc/{module.f.mjs → module.f.ts} +41 -44
- package/fsc/{test.f.mjs → test.f.ts} +8 -6
- package/fsm/module.f.ts +107 -0
- package/fsm/{test.f.mjs → test.f.ts} +10 -9
- package/html/module.f.ts +108 -0
- package/html/{test.f.mjs → test.f.ts} +10 -7
- package/issues/lang/3110-function.md +25 -1
- package/issues/{test.f.mjs → test.f.ts} +3 -2
- package/js/tokenizer/module.f.ts +882 -0
- package/js/tokenizer/{test.f.mjs → test.f.ts} +11 -10
- package/json/module.f.ts +94 -0
- package/json/parser/{module.f.mjs → module.f.ts} +113 -109
- package/json/parser/{test.f.mjs → test.f.ts} +10 -9
- package/json/serializer/module.f.ts +70 -0
- package/json/serializer/{test.f.mjs → test.f.ts} +3 -3
- package/json/{test.f.mjs → test.f.ts} +3 -3
- package/json/tokenizer/{module.f.mjs → module.f.ts} +29 -36
- package/json/tokenizer/{test.f.mjs → test.f.ts} +9 -8
- package/nanvm-lib/src/extension.rs +15 -4
- package/nanvm-lib/src/interface.rs +7 -10
- package/nanvm-lib/src/lib.rs +3 -3
- package/nanvm-lib/src/naive.rs +10 -3
- package/nanvm-lib/src/nanenum.rs +5 -1
- package/nanvm-lib/tests/{test.f.mjs → test.f.ts} +7 -6
- package/nodejs/version/{main.mjs → main.ts} +1 -1
- package/nodejs/version/module.f.ts +42 -0
- package/nodejs/version/{test.f.mjs → test.f.ts} +11 -12
- package/package.json +9 -9
- package/text/ascii/{module.f.mjs → module.f.ts} +10 -8
- package/text/ascii/{test.f.mjs → test.f.ts} +4 -4
- package/text/module.f.ts +30 -0
- package/text/sgr/{module.f.mjs → module.f.ts} +3 -5
- package/text/{test.f.mjs → test.f.ts} +5 -4
- package/text/utf16/module.f.ts +108 -0
- package/text/utf16/{test.f.mjs → test.f.ts} +7 -6
- package/text/utf8/{module.f.mjs → module.f.ts} +29 -23
- package/text/utf8/{test.f.mjs → test.f.ts} +4 -4
- package/tsconfig.json +4 -1
- package/types/array/module.f.ts +89 -0
- package/types/array/{test.f.mjs → test.f.ts} +3 -3
- package/types/bigfloat/{module.f.mjs → module.f.ts} +25 -20
- package/types/bigfloat/{test.f.mjs → test.f.ts} +1 -1
- package/types/bigint/{module.f.mjs → module.f.ts} +29 -28
- package/types/bigint/{test.f.mjs → test.f.ts} +2 -2
- package/types/bit_vec/{module.f.mjs → module.f.ts} +16 -37
- package/types/bit_vec/{test.f.mjs → test.f.ts} +1 -1
- package/types/btree/find/module.f.ts +92 -0
- package/types/btree/find/{test.f.mjs → test.f.ts} +20 -16
- package/types/btree/{module.f.mjs → module.f.ts} +9 -9
- package/types/btree/remove/{module.f.mjs → module.f.ts} +43 -53
- package/types/btree/remove/{test.f.mjs → test.f.ts} +19 -15
- package/types/btree/set/{module.f.mjs → module.f.ts} +17 -20
- package/types/btree/set/{test.f.mjs → test.f.ts} +96 -66
- package/types/btree/{test.f.mjs → test.f.ts} +34 -26
- package/types/btree/types/module.f.ts +27 -0
- package/types/byte_set/module.f.ts +70 -0
- package/types/byte_set/{test.f.mjs → test.f.ts} +8 -7
- package/types/function/compare/module.f.ts +26 -0
- package/types/function/compare/{test.f.mjs → test.f.ts} +1 -1
- package/types/function/module.f.ts +43 -0
- package/types/function/operator/module.f.ts +63 -0
- package/types/function/test.f.ts +20 -0
- package/types/list/module.f.ts +345 -0
- package/types/list/{test.f.mjs → test.f.ts} +30 -24
- package/types/map/module.f.ts +65 -0
- package/types/map/{test.f.mjs → test.f.ts} +6 -5
- package/types/nibble_set/module.f.ts +34 -0
- package/types/nibble_set/{test.f.mjs → test.f.ts} +3 -3
- package/types/nullable/module.f.ts +9 -0
- package/types/nullable/{test.f.mjs → test.f.ts} +2 -2
- package/types/number/module.f.ts +16 -0
- package/types/number/{test.f.mjs → test.f.ts} +7 -5
- package/types/object/module.f.ts +30 -0
- package/types/object/{test.f.mjs → test.f.ts} +2 -2
- package/types/range/module.f.ts +10 -0
- package/types/range/{test.f.mjs → test.f.ts} +1 -1
- package/types/range_map/module.f.ts +70 -0
- package/types/range_map/{test.f.mjs → test.f.ts} +82 -57
- package/types/result/module.f.ts +20 -0
- package/types/result/{module.mjs → module.ts} +4 -3
- package/types/sorted_list/module.f.ts +83 -0
- package/types/sorted_list/{test.f.mjs → test.f.ts} +14 -12
- package/types/sorted_set/module.f.ts +36 -0
- package/types/sorted_set/{test.f.mjs → test.f.ts} +14 -12
- package/types/string/module.f.ts +24 -0
- package/types/string/{test.f.mjs → test.f.ts} +2 -2
- package/types/string_set/module.f.ts +37 -0
- package/types/string_set/{test.f.mjs → test.f.ts} +2 -2
- package/com/cpp/testlib.f.mjs +0 -8
- package/com/cs/testlib.f.mjs +0 -8
- package/com/rust/module.f.mjs +0 -272
- package/com/rust/testlib.f.mjs +0 -8
- package/com/types/module.f.mjs +0 -67
- package/commonjs/build/module.f.mjs +0 -100
- package/commonjs/module/function/module.f.mjs +0 -21
- package/commonjs/module/module.f.mjs +0 -53
- package/commonjs/module.f.mjs +0 -11
- package/commonjs/package/dependencies/module.f.mjs +0 -22
- package/commonjs/package/module.f.mjs +0 -36
- package/dev/index.mjs +0 -3
- package/dev/test.mjs +0 -60
- package/fsm/module.f.mjs +0 -99
- package/html/module.f.mjs +0 -102
- package/js/tokenizer/module.f.mjs +0 -872
- package/json/module.f.mjs +0 -89
- package/json/serializer/module.f.mjs +0 -87
- package/jsr.json +0 -66
- package/nodejs/version/module.f.mjs +0 -47
- package/out/com/cpp/module.f.d.mts +0 -7
- package/out/com/cpp/module.f.mjs +0 -130
- package/out/com/cpp/test.f.d.mts +0 -2
- package/out/com/cpp/test.f.mjs +0 -40
- package/out/com/cpp/testlib.f.d.mts +0 -2
- package/out/com/cpp/testlib.f.mjs +0 -7
- package/out/com/cs/module.f.d.mts +0 -7
- package/out/com/cs/module.f.mjs +0 -104
- package/out/com/cs/test.f.d.mts +0 -2
- package/out/com/cs/test.f.mjs +0 -43
- package/out/com/cs/testlib.f.d.mts +0 -2
- package/out/com/cs/testlib.f.mjs +0 -7
- package/out/com/rust/module.f.d.mts +0 -23
- package/out/com/rust/module.f.mjs +0 -224
- package/out/com/rust/test.f.d.mts +0 -2
- package/out/com/rust/test.f.mjs +0 -123
- package/out/com/rust/testlib.f.d.mts +0 -2
- package/out/com/rust/testlib.f.mjs +0 -7
- package/out/com/test/build.d.mts +0 -1
- package/out/com/test/build.f.d.mts +0 -26
- package/out/com/test/build.f.mjs +0 -98
- package/out/com/test/build.mjs +0 -40
- package/out/com/types/module.f.d.mts +0 -23
- package/out/com/types/module.f.mjs +0 -51
- package/out/com/types/testlib.f.d.mts +0 -44
- package/out/com/types/testlib.f.mjs +0 -30
- package/out/commonjs/build/module.f.d.mts +0 -20
- package/out/commonjs/build/module.f.mjs +0 -107
- package/out/commonjs/build/test.f.d.mts +0 -3
- package/out/commonjs/build/test.f.mjs +0 -102
- package/out/commonjs/module/function/module.f.d.mts +0 -5
- package/out/commonjs/module/function/module.f.mjs +0 -15
- package/out/commonjs/module/module.f.d.mts +0 -52
- package/out/commonjs/module/module.f.mjs +0 -48
- package/out/commonjs/module.d.mts +0 -3
- package/out/commonjs/module.f.d.mts +0 -2
- package/out/commonjs/module.f.mjs +0 -10
- package/out/commonjs/module.mjs +0 -26
- package/out/commonjs/package/dependencies/module.f.d.mts +0 -6
- package/out/commonjs/package/dependencies/module.f.mjs +0 -21
- package/out/commonjs/package/dependencies/test.f.d.mts +0 -2
- package/out/commonjs/package/dependencies/test.f.mjs +0 -15
- package/out/commonjs/package/module.f.d.mts +0 -21
- package/out/commonjs/package/module.f.mjs +0 -40
- package/out/commonjs/package/test.f.d.mts +0 -2
- package/out/commonjs/package/test.f.mjs +0 -27
- package/out/commonjs/path/module.f.d.mts +0 -60
- package/out/commonjs/path/module.f.mjs +0 -171
- package/out/commonjs/path/test.f.d.mts +0 -25
- package/out/commonjs/path/test.f.mjs +0 -231
- package/out/commonjs/test.d.mts +0 -8
- package/out/commonjs/test.mjs +0 -87
- package/out/crypto/prime_field/module.f.d.mts +0 -67
- package/out/crypto/prime_field/module.f.mjs +0 -110
- package/out/crypto/prime_field/test.f.d.mts +0 -13
- package/out/crypto/prime_field/test.f.mjs +0 -152
- package/out/crypto/secp/module.f.d.mts +0 -110
- package/out/crypto/secp/module.f.mjs +0 -173
- package/out/crypto/secp/test.f.d.mts +0 -5
- package/out/crypto/secp/test.f.mjs +0 -78
- package/out/crypto/sha2/module.f.d.mts +0 -15
- package/out/crypto/sha2/module.f.mjs +0 -172
- package/out/crypto/sha2/test.f.d.mts +0 -10
- package/out/crypto/sha2/test.f.mjs +0 -86
- package/out/dev/index.d.mts +0 -1
- package/out/dev/index.mjs +0 -2
- package/out/dev/module.d.mts +0 -26
- package/out/dev/module.f.d.mts +0 -1
- package/out/dev/module.f.mjs +0 -2
- package/out/dev/module.mjs +0 -167
- package/out/dev/test/module.f.d.mts +0 -25
- package/out/dev/test/module.f.mjs +0 -134
- package/out/dev/test.d.mts +0 -3
- package/out/dev/test.f.d.mts +0 -9
- package/out/dev/test.f.mjs +0 -58
- package/out/dev/test.mjs +0 -52
- package/out/djs/module.f.d.mts +0 -20
- package/out/djs/module.f.mjs +0 -79
- package/out/djs/parser/module.f.d.mts +0 -56
- package/out/djs/parser/module.f.mjs +0 -448
- package/out/djs/parser/test.f.d.mts +0 -13
- package/out/djs/parser/test.f.mjs +0 -569
- package/out/djs/test.f.d.mts +0 -12
- package/out/djs/test.f.mjs +0 -84
- package/out/djs/tokenizer/module.f.d.mts +0 -13
- package/out/djs/tokenizer/module.f.mjs +0 -91
- package/out/djs/tokenizer/test.f.d.mts +0 -7
- package/out/djs/tokenizer/test.f.mjs +0 -530
- package/out/fsc/module.f.d.mts +0 -7
- package/out/fsc/module.f.mjs +0 -105
- package/out/fsc/test.f.d.mts +0 -4
- package/out/fsc/test.f.mjs +0 -19
- package/out/fsm/module.f.d.mts +0 -14
- package/out/fsm/module.f.mjs +0 -80
- package/out/fsm/test.f.d.mts +0 -5
- package/out/fsm/test.f.mjs +0 -138
- package/out/html/module.f.d.mts +0 -17
- package/out/html/module.f.mjs +0 -80
- package/out/html/test.f.d.mts +0 -10
- package/out/html/test.f.mjs +0 -45
- package/out/issues/test.f.d.mts +0 -16
- package/out/issues/test.f.mjs +0 -66
- package/out/js/tokenizer/module.f.d.mts +0 -163
- package/out/js/tokenizer/module.f.mjs +0 -729
- package/out/js/tokenizer/test.f.d.mts +0 -9
- package/out/js/tokenizer/test.f.mjs +0 -906
- package/out/json/module.f.d.mts +0 -33
- package/out/json/module.f.mjs +0 -89
- package/out/json/parser/module.f.d.mts +0 -32
- package/out/json/parser/module.f.mjs +0 -224
- package/out/json/parser/test.f.d.mts +0 -5
- package/out/json/parser/test.f.mjs +0 -329
- package/out/json/serializer/module.f.d.mts +0 -36
- package/out/json/serializer/module.f.mjs +0 -67
- package/out/json/serializer/test.f.d.mts +0 -8
- package/out/json/serializer/test.f.mjs +0 -87
- package/out/json/test.f.d.mts +0 -8
- package/out/json/test.f.mjs +0 -61
- package/out/json/tokenizer/module.f.d.mts +0 -13
- package/out/json/tokenizer/module.f.mjs +0 -78
- package/out/json/tokenizer/test.f.d.mts +0 -6
- package/out/json/tokenizer/test.f.mjs +0 -420
- package/out/nanvm-lib/tests/test.f.d.mts +0 -36
- package/out/nanvm-lib/tests/test.f.mjs +0 -87
- package/out/nodejs/version/main.d.mts +0 -1
- package/out/nodejs/version/main.mjs +0 -3
- package/out/nodejs/version/module.f.d.mts +0 -12
- package/out/nodejs/version/module.f.mjs +0 -34
- package/out/nodejs/version/test.f.d.mts +0 -2
- package/out/nodejs/version/test.f.mjs +0 -97
- package/out/text/ascii/module.f.d.mts +0 -70
- package/out/text/ascii/module.f.mjs +0 -154
- package/out/text/ascii/test.f.d.mts +0 -4
- package/out/text/ascii/test.f.mjs +0 -14
- package/out/text/module.f.d.mts +0 -13
- package/out/text/module.f.mjs +0 -19
- package/out/text/sgr/module.f.d.mts +0 -12
- package/out/text/sgr/module.f.mjs +0 -17
- package/out/text/test.f.d.mts +0 -2
- package/out/text/test.f.mjs +0 -19
- package/out/text/utf16/module.f.d.mts +0 -12
- package/out/text/utf16/module.f.mjs +0 -86
- package/out/text/utf16/test.f.d.mts +0 -6
- package/out/text/utf16/test.f.mjs +0 -145
- package/out/text/utf8/module.f.d.mts +0 -10
- package/out/text/utf8/module.f.mjs +0 -126
- package/out/text/utf8/test.f.d.mts +0 -6
- package/out/text/utf8/test.f.mjs +0 -175
- package/out/types/array/module.f.d.mts +0 -31
- package/out/types/array/module.f.mjs +0 -95
- package/out/types/array/test.f.d.mts +0 -10
- package/out/types/array/test.f.mjs +0 -116
- package/out/types/bigfloat/module.f.d.mts +0 -6
- package/out/types/bigfloat/module.f.mjs +0 -77
- package/out/types/bigfloat/test.f.d.mts +0 -6
- package/out/types/bigfloat/test.f.mjs +0 -349
- package/out/types/bigint/module.f.d.mts +0 -29
- package/out/types/bigint/module.f.mjs +0 -114
- package/out/types/bigint/test.f.d.mts +0 -16
- package/out/types/bigint/test.f.mjs +0 -199
- package/out/types/bit_vec/module.f.d.mts +0 -158
- package/out/types/bit_vec/module.f.mjs +0 -194
- package/out/types/bit_vec/test.f.d.mts +0 -23
- package/out/types/bit_vec/test.f.mjs +0 -210
- package/out/types/btree/find/module.f.d.mts +0 -36
- package/out/types/btree/find/module.f.mjs +0 -137
- package/out/types/btree/find/test.f.d.mts +0 -2
- package/out/types/btree/find/test.f.mjs +0 -156
- package/out/types/btree/module.f.d.mts +0 -5
- package/out/types/btree/module.f.mjs +0 -34
- package/out/types/btree/remove/module.f.d.mts +0 -14
- package/out/types/btree/remove/module.f.mjs +0 -209
- package/out/types/btree/remove/test.f.d.mts +0 -7
- package/out/types/btree/remove/test.f.mjs +0 -638
- package/out/types/btree/set/module.f.d.mts +0 -5
- package/out/types/btree/set/module.f.mjs +0 -114
- package/out/types/btree/set/test.f.d.mts +0 -2
- package/out/types/btree/set/test.f.mjs +0 -390
- package/out/types/btree/test.f.d.mts +0 -13
- package/out/types/btree/test.f.mjs +0 -83
- package/out/types/btree/types/module.f.d.mts +0 -14
- package/out/types/btree/types/module.f.mjs +0 -50
- package/out/types/byte_set/module.f.d.mts +0 -25
- package/out/types/byte_set/module.f.mjs +0 -42
- package/out/types/byte_set/test.f.d.mts +0 -13
- package/out/types/byte_set/test.f.mjs +0 -123
- package/out/types/function/compare/module.f.d.mts +0 -23
- package/out/types/function/compare/module.f.mjs +0 -22
- package/out/types/function/compare/test.f.d.mts +0 -2
- package/out/types/function/compare/test.f.mjs +0 -8
- package/out/types/function/module.f.d.mts +0 -51
- package/out/types/function/module.f.mjs +0 -44
- package/out/types/function/operator/module.f.d.mts +0 -60
- package/out/types/function/operator/module.f.mjs +0 -60
- package/out/types/function/test.f.d.mts +0 -2
- package/out/types/function/test.f.mjs +0 -15
- package/out/types/list/module.f.d.mts +0 -82
- package/out/types/list/module.f.mjs +0 -269
- package/out/types/list/test.f.d.mts +0 -38
- package/out/types/list/test.f.mjs +0 -401
- package/out/types/map/module.f.d.mts +0 -21
- package/out/types/map/module.f.mjs +0 -54
- package/out/types/map/test.f.d.mts +0 -5
- package/out/types/map/test.f.mjs +0 -115
- package/out/types/nibble_set/module.f.d.mts +0 -16
- package/out/types/nibble_set/module.f.mjs +0 -19
- package/out/types/nibble_set/test.f.d.mts +0 -13
- package/out/types/nibble_set/test.f.mjs +0 -90
- package/out/types/nullable/module.f.d.mts +0 -9
- package/out/types/nullable/module.f.mjs +0 -9
- package/out/types/nullable/test.f.d.mts +0 -2
- package/out/types/nullable/test.f.mjs +0 -12
- package/out/types/number/module.f.d.mts +0 -7
- package/out/types/number/module.f.mjs +0 -12
- package/out/types/number/test.f.d.mts +0 -11
- package/out/types/number/test.f.mjs +0 -126
- package/out/types/object/module.f.d.mts +0 -22
- package/out/types/object/module.f.mjs +0 -27
- package/out/types/object/test.f.d.mts +0 -5
- package/out/types/object/test.f.mjs +0 -17
- package/out/types/range/module.f.d.mts +0 -6
- package/out/types/range/module.f.mjs +0 -6
- package/out/types/range/test.f.d.mts +0 -2
- package/out/types/range/test.f.mjs +0 -18
- package/out/types/range_map/module.f.d.mts +0 -19
- package/out/types/range_map/module.f.mjs +0 -84
- package/out/types/range_map/test.f.d.mts +0 -6
- package/out/types/range_map/test.f.mjs +0 -201
- package/out/types/result/module.d.mts +0 -7
- package/out/types/result/module.f.d.mts +0 -22
- package/out/types/result/module.f.mjs +0 -25
- package/out/types/result/module.mjs +0 -16
- package/out/types/sorted_list/module.f.d.mts +0 -53
- package/out/types/sorted_list/module.f.mjs +0 -102
- package/out/types/sorted_list/test.f.d.mts +0 -5
- package/out/types/sorted_list/test.f.mjs +0 -66
- package/out/types/sorted_set/module.f.d.mts +0 -19
- package/out/types/sorted_set/module.f.mjs +0 -29
- package/out/types/sorted_set/test.f.d.mts +0 -6
- package/out/types/sorted_set/test.f.mjs +0 -80
- package/out/types/string/module.f.d.mts +0 -9
- package/out/types/string/module.f.mjs +0 -17
- package/out/types/string/test.f.d.mts +0 -15
- package/out/types/string/test.f.mjs +0 -58
- package/out/types/string_set/module.f.d.mts +0 -13
- package/out/types/string_set/module.f.mjs +0 -29
- package/out/types/string_set/test.f.d.mts +0 -5
- package/out/types/string_set/test.f.mjs +0 -65
- package/text/module.f.mjs +0 -27
- package/text/utf16/module.f.mjs +0 -96
- package/types/array/module.f.mjs +0 -119
- package/types/btree/find/module.f.mjs +0 -125
- package/types/btree/types/module.f.mjs +0 -64
- package/types/byte_set/module.f.mjs +0 -61
- package/types/function/compare/module.f.mjs +0 -29
- package/types/function/module.f.mjs +0 -50
- package/types/function/operator/module.f.mjs +0 -78
- package/types/function/test.f.mjs +0 -17
- package/types/list/module.f.mjs +0 -320
- package/types/map/module.f.mjs +0 -67
- package/types/nibble_set/module.f.mjs +0 -28
- package/types/nullable/module.f.mjs +0 -11
- package/types/number/module.f.mjs +0 -16
- package/types/object/module.f.mjs +0 -33
- package/types/range/module.f.mjs +0 -8
- package/types/range_map/module.f.mjs +0 -84
- package/types/result/module.f.mjs +0 -28
- package/types/sorted_list/module.f.mjs +0 -107
- package/types/sorted_set/module.f.mjs +0 -38
- package/types/string/module.f.mjs +0 -22
- package/types/string_set/module.f.mjs +0 -36
package/.github/workflows/ci.yml
CHANGED
|
@@ -10,14 +10,29 @@ on:
|
|
|
10
10
|
pull_request:
|
|
11
11
|
|
|
12
12
|
jobs:
|
|
13
|
-
|
|
13
|
+
node20:
|
|
14
14
|
runs-on: ubuntu-latest
|
|
15
15
|
|
|
16
16
|
strategy:
|
|
17
17
|
matrix:
|
|
18
|
-
node-version: [16, 18, 20
|
|
18
|
+
node-version: [16, 18, 20]
|
|
19
19
|
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
|
20
20
|
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v2
|
|
23
|
+
- uses: actions/setup-node@v2
|
|
24
|
+
with:
|
|
25
|
+
node-version: ${{ matrix.node-version }}
|
|
26
|
+
- run: npm ci
|
|
27
|
+
- run: npm run test20
|
|
28
|
+
|
|
29
|
+
node:
|
|
30
|
+
runs-on: ubuntu-latest
|
|
31
|
+
|
|
32
|
+
strategy:
|
|
33
|
+
matrix:
|
|
34
|
+
node-version: [22, 23]
|
|
35
|
+
|
|
21
36
|
steps:
|
|
22
37
|
- uses: actions/checkout@v2
|
|
23
38
|
- uses: actions/setup-node@v2
|
|
@@ -41,7 +56,8 @@ jobs:
|
|
|
41
56
|
- uses: denoland/setup-deno@v1
|
|
42
57
|
with:
|
|
43
58
|
deno-version: ${{ matrix.deno-version }}
|
|
44
|
-
- run: deno
|
|
59
|
+
- run: deno task test
|
|
60
|
+
- run: deno publish --dry-run --allow-slow-types
|
|
45
61
|
|
|
46
62
|
bun:
|
|
47
63
|
|
|
@@ -50,7 +66,7 @@ jobs:
|
|
|
50
66
|
steps:
|
|
51
67
|
- uses: actions/checkout@v2
|
|
52
68
|
- run: curl https://bun.sh/install | bash
|
|
53
|
-
- run: /home/runner/.bun/bin/bun ./dev/test.
|
|
69
|
+
- run: /home/runner/.bun/bin/bun ./dev/test.ts
|
|
54
70
|
|
|
55
71
|
COM:
|
|
56
72
|
strategy:
|
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## Unreleased
|
|
9
9
|
|
|
10
|
+
## 0.3.0
|
|
11
|
+
|
|
12
|
+
- Switching to TypeScript file [PR #330] https://github.com/functionalscript/functionalscript/pull/330
|
|
13
|
+
- DJS: add serializer [PR #326] https://github.com/functionalscript/functionalscript/pull/326
|
|
14
|
+
|
|
10
15
|
## 0.2.6
|
|
11
16
|
|
|
12
17
|
- Refactoring of a vector of bits [PR #328](https://github.com/functionalscript/functionalscript/pull/328)
|
|
@@ -1,22 +1,21 @@
|
|
|
1
|
-
// @ts-self-types="./module.f.d.mts"
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
2
|
* This module generates C++ code blocks, including structs, interfaces, and method headers,
|
|
5
3
|
* based on a COM library of type definitions.
|
|
6
4
|
*/
|
|
7
5
|
|
|
8
|
-
import * as types from '../types/module.f.
|
|
9
|
-
import * as text from '../../text/module.f.
|
|
10
|
-
import * as O from '../../types/object/module.f.
|
|
11
|
-
import * as list from '../../types/list/module.f.
|
|
12
|
-
import * as string from '../../types/string/module.f.
|
|
6
|
+
import * as types from '../types/module.f.ts'
|
|
7
|
+
import * as text from '../../text/module.f.ts'
|
|
8
|
+
import * as O from '../../types/object/module.f.ts'
|
|
9
|
+
import * as list from '../../types/list/module.f.ts'
|
|
10
|
+
import * as string from '../../types/string/module.f.ts'
|
|
13
11
|
const { join } = string
|
|
14
12
|
const { paramList } = types
|
|
15
13
|
const { map, flatMap, flat } = list
|
|
16
14
|
const { entries } = Object
|
|
17
15
|
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
const struct
|
|
17
|
+
= (name: string) => (body: text.Block): text.Block =>
|
|
18
|
+
[`struct ${name}`, '{', body, '};']
|
|
20
19
|
|
|
21
20
|
const baseTypeMap = {
|
|
22
21
|
u8: 'uint8_t',
|
|
@@ -34,24 +33,29 @@ const baseTypeMap = {
|
|
|
34
33
|
bool: 'bool',
|
|
35
34
|
}
|
|
36
35
|
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
const baseType
|
|
37
|
+
: (t: types.BaseType) => string
|
|
38
|
+
= t => baseTypeMap[t]
|
|
39
39
|
|
|
40
40
|
const resultVoid = types.result('void')
|
|
41
41
|
|
|
42
42
|
const namespace = text.curly('namespace')
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
const comRef
|
|
45
|
+
: (id: string) => string
|
|
46
|
+
= id => `::nanocom::ref<${id}>`
|
|
46
47
|
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
const ptr
|
|
49
|
+
: (id: string) => string
|
|
50
|
+
= id => `${id} const*`
|
|
49
51
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
+
const ref
|
|
53
|
+
: (id: string) => string
|
|
54
|
+
= id => `${id} const&`
|
|
52
55
|
|
|
53
|
-
|
|
54
|
-
|
|
56
|
+
const paramName
|
|
57
|
+
: (p: types.Field) => string
|
|
58
|
+
= ([name]) => name
|
|
55
59
|
|
|
56
60
|
const mapParamName = map(paramName)
|
|
57
61
|
|
|
@@ -59,12 +63,15 @@ const joinComma = join(', ')
|
|
|
59
63
|
|
|
60
64
|
/**
|
|
61
65
|
* Generates the C++ code for a library.
|
|
62
|
-
* @type {(name: string) => (lib: types.Library) => text.Block}
|
|
63
66
|
*/
|
|
64
|
-
export const cpp
|
|
67
|
+
export const cpp
|
|
68
|
+
: (name: string) => (lib: types.Library) => text.Block
|
|
69
|
+
= name => lib => {
|
|
70
|
+
|
|
71
|
+
const interface_
|
|
72
|
+
: (t: types.Type) => string|null
|
|
73
|
+
= t => {
|
|
65
74
|
|
|
66
|
-
/** @type {(t: types.Type) => string|null} */
|
|
67
|
-
const interface_ = t => {
|
|
68
75
|
if (!(t instanceof Array) || t.length !== 1) {
|
|
69
76
|
return null
|
|
70
77
|
}
|
|
@@ -72,8 +79,10 @@ export const cpp = name => lib => {
|
|
|
72
79
|
return 'interface' in lib[name] ? name : null
|
|
73
80
|
}
|
|
74
81
|
|
|
75
|
-
|
|
76
|
-
|
|
82
|
+
const objectType
|
|
83
|
+
: (i: (t: string) => string) => (t: types.Type) => string
|
|
84
|
+
= i => t => {
|
|
85
|
+
|
|
77
86
|
if (typeof (t) === 'string') { return baseType(t) }
|
|
78
87
|
if (t.length === 2) { return `${type(t[1])} const*` }
|
|
79
88
|
const [id] = t
|
|
@@ -84,28 +93,35 @@ export const cpp = name => lib => {
|
|
|
84
93
|
|
|
85
94
|
const resultType = objectType(ptr)
|
|
86
95
|
|
|
87
|
-
|
|
88
|
-
|
|
96
|
+
const field
|
|
97
|
+
: (s: types.Field) => text.Item
|
|
98
|
+
= ([name, t]) => `${type(t)} ${name};`
|
|
89
99
|
|
|
90
100
|
const mapField = map(field)
|
|
91
101
|
|
|
92
|
-
|
|
93
|
-
|
|
102
|
+
const defStruct
|
|
103
|
+
: (s: types.Struct) => text.Block
|
|
104
|
+
= s => mapField(entries(s.struct))
|
|
94
105
|
|
|
95
|
-
|
|
96
|
-
|
|
106
|
+
const cppResult
|
|
107
|
+
: (fa: types.FieldArray) => string
|
|
108
|
+
= resultVoid(resultType)
|
|
97
109
|
|
|
98
|
-
|
|
99
|
-
|
|
110
|
+
const param
|
|
111
|
+
: (p: types.Field) => string
|
|
112
|
+
= ([name, t]) => `${objectType(ref)(t)} ${name}`
|
|
100
113
|
|
|
101
114
|
const mapParam = map(param)
|
|
102
115
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
116
|
+
const methodHeader
|
|
117
|
+
: (result: string) => (paramArrayStr: string) => (name: string) => text.Item
|
|
118
|
+
= result => paramArrayStr => name =>
|
|
119
|
+
`virtual ${result} ${name}${paramArrayStr} const noexcept = 0;`
|
|
120
|
+
|
|
121
|
+
const method
|
|
122
|
+
: (m: types.Method) => readonly text.Item[]
|
|
123
|
+
= ([name, paramArray]) => {
|
|
106
124
|
|
|
107
|
-
/** @type {(m: types.Method) => readonly text.Item[]} */
|
|
108
|
-
const method = ([name, paramArray]) => {
|
|
109
125
|
const result = cppResult(paramArray)
|
|
110
126
|
const paramL = paramList(paramArray)
|
|
111
127
|
const paramArrayStr = `(${joinComma(mapParam(paramL))})`
|
|
@@ -125,8 +141,10 @@ export const cpp = name => lib => {
|
|
|
125
141
|
|
|
126
142
|
const mapMethod = flatMap(method)
|
|
127
143
|
|
|
128
|
-
|
|
129
|
-
|
|
144
|
+
const defInterface
|
|
145
|
+
: (i: types.Interface) => text.Block
|
|
146
|
+
= ({ guid, interface: i }) => {
|
|
147
|
+
|
|
130
148
|
const g = guid.replaceAll('-', '');
|
|
131
149
|
const lo = g.substring(0, 16);
|
|
132
150
|
const hi = g.substring(16);
|
|
@@ -136,8 +154,10 @@ export const cpp = name => lib => {
|
|
|
136
154
|
])
|
|
137
155
|
}
|
|
138
156
|
|
|
139
|
-
|
|
140
|
-
|
|
157
|
+
const def
|
|
158
|
+
: (kv: O.Entry<types.Definition>) => text.Block
|
|
159
|
+
= ([name, d]) => 'interface' in d
|
|
160
|
+
|
|
141
161
|
? [
|
|
142
162
|
`class ${name} : public ::nanocom::IUnknown`,
|
|
143
163
|
'{',
|
|
@@ -147,8 +167,9 @@ export const cpp = name => lib => {
|
|
|
147
167
|
]
|
|
148
168
|
: struct(name)(defStruct(d))
|
|
149
169
|
|
|
150
|
-
|
|
151
|
-
|
|
170
|
+
const forward
|
|
171
|
+
: (kv: O.Entry<types.Definition>) => text.Block
|
|
172
|
+
= ([name]) => [`struct ${name};`]
|
|
152
173
|
|
|
153
174
|
const e = entries(lib)
|
|
154
175
|
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as string from '../../types/string/module.f.ts'
|
|
2
|
+
const { join } = string
|
|
3
|
+
import * as text from '../../text/module.f.ts'
|
|
4
|
+
const { flat } = text
|
|
5
|
+
import library from '../types/testlib.f.ts'
|
|
6
|
+
import { cpp } from './module.f.ts'
|
|
7
|
+
|
|
8
|
+
export default () => join('\n')(flat(' ')(cpp('My')(library)))
|
|
@@ -1,33 +1,31 @@
|
|
|
1
|
-
// @ts-self-types="./module.f.d.mts"
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
2
|
* This module generates C# code blocks for COM interop from a high-level type library definition.
|
|
5
3
|
*
|
|
6
4
|
* The module maps type definitions (e.g., structs, interfaces, and methods) into C# constructs
|
|
7
5
|
* with appropriate attributes for COM interop, such as `[StructLayout]`, `[Guid]`, and `[InterfaceType]`.
|
|
8
6
|
*/
|
|
9
|
-
import * as types from '../types/module.f.
|
|
7
|
+
import * as types from '../types/module.f.ts'
|
|
10
8
|
const { result, paramList } = types
|
|
11
|
-
import * as text from '../../text/module.f.
|
|
9
|
+
import * as text from '../../text/module.f.ts'
|
|
12
10
|
const { curly } = text
|
|
13
|
-
import * as list from '../../types/list/module.f.
|
|
11
|
+
import * as list from '../../types/list/module.f.ts'
|
|
14
12
|
const { flat, map, some, flatMap } = list
|
|
15
|
-
import * as string from '../../types/string/module.f.
|
|
13
|
+
import * as string from '../../types/string/module.f.ts'
|
|
16
14
|
const { join } = string
|
|
17
|
-
import * as O from '../../types/object/module.f.
|
|
15
|
+
import * as O from '../../types/object/module.f.ts'
|
|
18
16
|
const { entries } = Object
|
|
19
17
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
18
|
+
const using
|
|
19
|
+
: (v: string) => string
|
|
20
|
+
= v => `using ${v};`
|
|
21
|
+
|
|
22
|
+
const typeDef
|
|
23
|
+
: (attributes: list.List<string>) =>
|
|
24
|
+
(type: string) =>
|
|
25
|
+
(name: string) =>
|
|
26
|
+
(body: text.Block) =>
|
|
27
|
+
list.List<text.Item>
|
|
28
|
+
= attributes => type => name => body =>
|
|
31
29
|
flat([
|
|
32
30
|
map(v => `[${v}]`)(attributes),
|
|
33
31
|
curly(`public ${type}`)(name)(body)
|
|
@@ -49,34 +47,41 @@ const baseTypeMap = {
|
|
|
49
47
|
usize: 'UIntPtr',
|
|
50
48
|
}
|
|
51
49
|
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
const baseType
|
|
51
|
+
: (t: types.BaseType) => string
|
|
52
|
+
= t => baseTypeMap[t]
|
|
54
53
|
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
const unsafe
|
|
55
|
+
: (isUnsafe: boolean) => string
|
|
56
|
+
= isUnsafe => isUnsafe ? 'unsafe ' : ''
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
const fullType
|
|
59
|
+
: (t: types.Type) => readonly[boolean, string]
|
|
60
|
+
= t =>
|
|
60
61
|
typeof (t) === 'string' ? [false, baseType(t)] :
|
|
61
62
|
t.length === 1 ? [false, t[0]] :
|
|
62
63
|
[true, `${type(t[1])}*`]
|
|
63
64
|
|
|
64
|
-
|
|
65
|
-
|
|
65
|
+
const type
|
|
66
|
+
: (m: types.Type) => string
|
|
67
|
+
= t => fullType(t)[1]
|
|
66
68
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
+
const param
|
|
70
|
+
: (f: types.Field) => string
|
|
71
|
+
= ([name, t]) => `${type(t)} ${name}`
|
|
69
72
|
|
|
70
73
|
const mapParam = map(param)
|
|
71
74
|
|
|
72
|
-
|
|
73
|
-
|
|
75
|
+
const field
|
|
76
|
+
: (f: types.Field) => string
|
|
77
|
+
= ([name, comType]) => {
|
|
74
78
|
const [isUnsafe, t] = fullType(comType)
|
|
75
79
|
return `public ${unsafe(isUnsafe)}${t} ${name};`
|
|
76
80
|
}
|
|
77
81
|
|
|
78
|
-
|
|
79
|
-
|
|
82
|
+
const isUnsafeField
|
|
83
|
+
: (field: types.Field) => boolean
|
|
84
|
+
= field => fullType(field[1])[0]
|
|
80
85
|
|
|
81
86
|
const mapIsUnsafeField = map(isUnsafeField)
|
|
82
87
|
|
|
@@ -84,8 +89,10 @@ const resultVoid = result('void')
|
|
|
84
89
|
|
|
85
90
|
const joinComma = join(', ')
|
|
86
91
|
|
|
87
|
-
|
|
88
|
-
|
|
92
|
+
const method
|
|
93
|
+
: (e: O.Entry<types.FieldArray>) => readonly string[]
|
|
94
|
+
= ([name, m]) => {
|
|
95
|
+
|
|
89
96
|
const paramAndResultList = entries(m)
|
|
90
97
|
const pl = paramList(m)
|
|
91
98
|
const isUnsafe = some(mapIsUnsafeField(paramAndResultList))
|
|
@@ -103,8 +110,9 @@ const mapField = map(field)
|
|
|
103
110
|
|
|
104
111
|
const flatMapMethod = flatMap(method)
|
|
105
112
|
|
|
106
|
-
|
|
107
|
-
|
|
113
|
+
const def
|
|
114
|
+
: (e: O.Entry<types.Definition>) => list.List<text.Item>
|
|
115
|
+
= ([n, d]) => {
|
|
108
116
|
return !('interface' in d) ?
|
|
109
117
|
struct(n)(mapField(entries(d.struct))) :
|
|
110
118
|
typeDef
|
|
@@ -127,9 +135,10 @@ const header = [
|
|
|
127
135
|
|
|
128
136
|
/**
|
|
129
137
|
* Generates the C# code for a library.
|
|
130
|
-
* @type {(name: string) => (library: types.Library) => text.Block}
|
|
131
138
|
*/
|
|
132
|
-
export const cs
|
|
139
|
+
export const cs
|
|
140
|
+
: (name: string) => (library: types.Library) => text.Block
|
|
141
|
+
= name => library => {
|
|
133
142
|
const v = flatMapDef(entries(library))
|
|
134
143
|
const ns = namespace(name)(v)
|
|
135
144
|
return flat([header, ns])
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as text from '../../text/module.f.ts'
|
|
2
|
+
const { flat } = text
|
|
3
|
+
import * as string from '../../types/string/module.f.ts'
|
|
4
|
+
const { join } = string
|
|
5
|
+
import { cs } from './module.f.ts'
|
|
6
|
+
import library from '../types/testlib.f.ts'
|
|
7
|
+
|
|
8
|
+
export default join('\n')(flat(' ')(cs('My')(library)))
|