functionalscript 0.2.6 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/ci.yml +19 -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} +65 -60
- 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
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import * as encoding from './module.f.
|
|
2
|
-
import * as json from '../../json/module.f.
|
|
3
|
-
import * as o from '../../types/object/module.f.
|
|
1
|
+
import * as encoding from './module.f.ts'
|
|
2
|
+
import * as json from '../../json/module.f.ts'
|
|
3
|
+
import * as o from '../../types/object/module.f.ts'
|
|
4
4
|
const { sort } = o
|
|
5
|
-
import * as list from '../../types/list/module.f.
|
|
5
|
+
import * as list from '../../types/list/module.f.ts'
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
const stringify
|
|
8
|
+
: (a: readonly json.Unknown[]) => string
|
|
9
|
+
= a => json.stringify(sort)(a)
|
|
9
10
|
|
|
10
11
|
export default {
|
|
11
12
|
toCodePointList: [
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
import * as
|
|
3
|
-
import * as
|
|
4
|
-
import * as Array from '../../types/array/module.f.mjs'
|
|
1
|
+
import * as list from '../../types/list/module.f.ts'
|
|
2
|
+
import * as operator from '../../types/function/operator/module.f.ts'
|
|
3
|
+
import * as Array from '../../types/array/module.f.ts'
|
|
5
4
|
const { flatMap, flat, stateScan } = list
|
|
6
5
|
|
|
7
|
-
|
|
6
|
+
type ByteOrEof = u8|null
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
type Utf8NonEmptyState = Array.Array1<number>|Array.Array2<number>|Array.Array3<number>
|
|
10
9
|
|
|
11
|
-
|
|
10
|
+
type Utf8State = null|Utf8NonEmptyState
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
type u8 = number
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
type i32 = number
|
|
16
15
|
|
|
17
16
|
const errorMask = 0b1000_0000_0000_0000_0000_0000_0000_0000
|
|
18
17
|
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
const codePointToUtf8
|
|
19
|
+
: (input:number) => list.List<u8>
|
|
20
|
+
= 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] }
|
|
23
23
|
if (input >= 0x0800 && input <= 0xffff) { return [input >> 12 | 0b1110_0000, input >> 6 & 0b0011_1111 | 0b1000_0000, input & 0b0011_1111 | 0b1000_0000] }
|
|
@@ -33,8 +33,9 @@ const codePointToUtf8 = input => {
|
|
|
33
33
|
|
|
34
34
|
export const fromCodePointList = flatMap(codePointToUtf8)
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
const utf8StateToError
|
|
37
|
+
: (state: Utf8NonEmptyState) => i32
|
|
38
|
+
= state => {
|
|
38
39
|
let x
|
|
39
40
|
switch (state.length) {
|
|
40
41
|
case 1: {
|
|
@@ -59,8 +60,9 @@ const utf8StateToError = state => {
|
|
|
59
60
|
return x | errorMask
|
|
60
61
|
}
|
|
61
62
|
|
|
62
|
-
|
|
63
|
-
|
|
63
|
+
const utf8ByteToCodePointOp
|
|
64
|
+
: operator.StateScan<number, Utf8State, list.List<i32>>
|
|
65
|
+
= state => byte => {
|
|
64
66
|
if (byte < 0x00 || byte > 0xff) {
|
|
65
67
|
return [[errorMask], state]
|
|
66
68
|
}
|
|
@@ -95,15 +97,19 @@ const utf8ByteToCodePointOp = state => byte => {
|
|
|
95
97
|
return [[error, byte | errorMask], null]
|
|
96
98
|
}
|
|
97
99
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
+
const utf8EofToCodePointOp
|
|
101
|
+
: (state: Utf8State) => readonly[list.List<i32>, Utf8State]
|
|
102
|
+
= state =>
|
|
100
103
|
[state === null ? null : [utf8StateToError(state)], null]
|
|
101
104
|
|
|
102
|
-
|
|
103
|
-
|
|
105
|
+
const utf8ByteOrEofToCodePointOp
|
|
106
|
+
: operator.StateScan<ByteOrEof, Utf8State, list.List<i32>>
|
|
107
|
+
= state => input => input === null ? utf8EofToCodePointOp(state) : utf8ByteToCodePointOp(state)(input)
|
|
104
108
|
|
|
105
|
-
|
|
106
|
-
|
|
109
|
+
const eofList
|
|
110
|
+
: list.List<ByteOrEof>
|
|
111
|
+
= [null]
|
|
107
112
|
|
|
108
|
-
|
|
109
|
-
|
|
113
|
+
export const toCodePointList
|
|
114
|
+
: (input: list.List<u8>) => list.List<i32>
|
|
115
|
+
= input => flat(stateScan(utf8ByteOrEofToCodePointOp)(null)(flat([input, eofList])))
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import * as encoding from './module.f.
|
|
2
|
-
import * as json from '../../json/module.f.
|
|
3
|
-
import * as o from '../../types/object/module.f.
|
|
1
|
+
import * as encoding from './module.f.ts'
|
|
2
|
+
import * as json from '../../json/module.f.ts'
|
|
3
|
+
import * as o from '../../types/object/module.f.ts'
|
|
4
4
|
const { sort } = o
|
|
5
|
-
import * as list from '../../types/list/module.f.
|
|
5
|
+
import * as list from '../../types/list/module.f.ts'
|
|
6
6
|
|
|
7
7
|
const stringify = json.stringify(sort)
|
|
8
8
|
|
package/tsconfig.json
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"compilerOptions": {
|
|
3
3
|
/* Visit https://aka.ms/tsconfig.json to read more about this file */
|
|
4
|
+
"allowImportingTsExtensions": true,
|
|
5
|
+
"rewriteRelativeImportExtensions": true,
|
|
6
|
+
"verbatimModuleSyntax": true,
|
|
4
7
|
|
|
5
8
|
/* Projects */
|
|
6
9
|
// "incremental": true, /* Enable incremental compilation */
|
|
@@ -47,7 +50,7 @@
|
|
|
47
50
|
// "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
|
|
48
51
|
// "sourceMap": true, /* Create source map files for emitted JavaScript files. */
|
|
49
52
|
// "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
|
-
"outDir": "./out", /* Specify an output folder for all emitted files. */
|
|
53
|
+
// "outDir": "./out", /* Specify an output folder for all emitted files. */
|
|
51
54
|
// "removeComments": true, /* Disable emitting comments. */
|
|
52
55
|
"noEmit": true, /* Disable emitting files from a compilation. */
|
|
53
56
|
// "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import * as option from '../nullable/module.f.ts'
|
|
2
|
+
const { map } = option
|
|
3
|
+
|
|
4
|
+
export type Array1<T> = readonly[T]
|
|
5
|
+
|
|
6
|
+
type Index1 = 0
|
|
7
|
+
|
|
8
|
+
export type Array2<T> = readonly[T, T]
|
|
9
|
+
|
|
10
|
+
type Tuple2<T0, T1> = readonly[T0, T1]
|
|
11
|
+
|
|
12
|
+
type Index2 = 0|1
|
|
13
|
+
|
|
14
|
+
export type Array3<T> = readonly[T, T, T]
|
|
15
|
+
|
|
16
|
+
type Tuple3<T0, T1, T2> = readonly[T0, T1, T2]
|
|
17
|
+
|
|
18
|
+
export type Index3 = 0|1|2
|
|
19
|
+
|
|
20
|
+
export type Array4<T> = readonly[T, T, T, T]
|
|
21
|
+
|
|
22
|
+
type Index4 = 0|1|2|3
|
|
23
|
+
|
|
24
|
+
export type Array5<T> = readonly[T, T, T, T, T]
|
|
25
|
+
|
|
26
|
+
export type Array8<T> = readonly[T, T, T, T, T, T, T, T]
|
|
27
|
+
|
|
28
|
+
export type Array16<T> = readonly[T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T]
|
|
29
|
+
|
|
30
|
+
type Index16 = 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15
|
|
31
|
+
|
|
32
|
+
type Array1_5<T> = Array1<T>| Array2<T> | Array3<T> | Array4<T> | Array5<T>
|
|
33
|
+
|
|
34
|
+
export type Index5 = 0|1|2|3|4
|
|
35
|
+
|
|
36
|
+
export type KeyOf<T> = T extends Array1<infer _> ? Index1 :
|
|
37
|
+
T extends Array2<infer _> ? Index2 :
|
|
38
|
+
T extends Array3<infer _> ? Index3 :
|
|
39
|
+
T extends Array4<infer _> ? Index4 :
|
|
40
|
+
T extends Array5<infer _> ? Index5 :
|
|
41
|
+
T extends readonly (infer _)[] ? number :
|
|
42
|
+
never
|
|
43
|
+
|
|
44
|
+
const uncheckTail
|
|
45
|
+
: <T>(_: readonly T[]) => readonly T[]
|
|
46
|
+
= a => a.slice(1)
|
|
47
|
+
|
|
48
|
+
const uncheckHead
|
|
49
|
+
: <T>(_: readonly T[]) => readonly T[]
|
|
50
|
+
= a => a.slice(0, -1)
|
|
51
|
+
|
|
52
|
+
export const at
|
|
53
|
+
: (index: number) => <T>(a: readonly T[]) => T|null
|
|
54
|
+
= i => a => {
|
|
55
|
+
const r = a[i]
|
|
56
|
+
return r === void 0 ? null : r
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export const first
|
|
60
|
+
: <T>(_: readonly T[]) => T|null
|
|
61
|
+
= at(0)
|
|
62
|
+
|
|
63
|
+
export const last
|
|
64
|
+
: <T>(_: readonly T[]) => T|null
|
|
65
|
+
= a => at(a.length - 1)(a)
|
|
66
|
+
|
|
67
|
+
export const tail
|
|
68
|
+
: <T>(_: readonly T[]) => readonly T[] | null
|
|
69
|
+
= a => a.length === 0 ? null : uncheckTail(a)
|
|
70
|
+
|
|
71
|
+
export const splitFirst
|
|
72
|
+
= <T>(a: readonly T[]): readonly[T, readonly T[]]|null => {
|
|
73
|
+
const split
|
|
74
|
+
: (_: T) => readonly[T, readonly T[]]
|
|
75
|
+
= first => [first, uncheckTail(a)]
|
|
76
|
+
return map(split)(first(a))
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export const head
|
|
80
|
+
: <T>(_: readonly T[]) => readonly T[]|null
|
|
81
|
+
= a => a.length === 0 ? null : uncheckHead(a)
|
|
82
|
+
|
|
83
|
+
export const splitLast
|
|
84
|
+
: <T>(_: readonly T[]) => readonly[readonly T[], T]|null
|
|
85
|
+
= a => {
|
|
86
|
+
const lastA = last(a)
|
|
87
|
+
if (lastA === null) { return null }
|
|
88
|
+
return [uncheckHead(a), lastA]
|
|
89
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import * as _ from './module.f.
|
|
2
|
-
import * as json from '../../json/module.f.
|
|
3
|
-
import * as o from '../object/module.f.
|
|
1
|
+
import * as _ from './module.f.ts'
|
|
2
|
+
import * as json from '../../json/module.f.ts'
|
|
3
|
+
import * as o from '../object/module.f.ts'
|
|
4
4
|
const { sort } = o
|
|
5
5
|
|
|
6
6
|
const stringify = json.stringify(sort)
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
import * as bi from '../bigint/module.f.mjs'
|
|
1
|
+
import * as bi from '../bigint/module.f.ts'
|
|
3
2
|
const { abs, sign } = bi
|
|
4
3
|
|
|
5
|
-
|
|
4
|
+
export type BigFloat = readonly[bigint,number]
|
|
6
5
|
|
|
7
|
-
|
|
6
|
+
type BigFloatWithRemainder = readonly[BigFloat,bigint]
|
|
8
7
|
|
|
9
8
|
const twoPow53 = 0b0010_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000n
|
|
10
9
|
const twoPow54 = 0b0100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000n
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
const increaseMantissa
|
|
12
|
+
: (value: BigFloat) => (min: bigint) => BigFloat
|
|
13
|
+
= ([m, e]) => min => {
|
|
14
14
|
if (m === 0n) {
|
|
15
15
|
return [m, e]
|
|
16
16
|
}
|
|
@@ -25,8 +25,9 @@ const increaseMantissa = ([m, e]) => min => {
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
const decreaseMantissa
|
|
29
|
+
: (value: BigFloat) => (max: bigint) => BigFloat
|
|
30
|
+
= ([m, e]) => max => {
|
|
30
31
|
if (m === 0n) {
|
|
31
32
|
return [m, e]
|
|
32
33
|
}
|
|
@@ -41,19 +42,23 @@ const decreaseMantissa = ([m, e]) => max => {
|
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
44
|
|
|
44
|
-
|
|
45
|
-
|
|
45
|
+
const pow
|
|
46
|
+
: (base: bigint) => (exp: number) => bigint
|
|
47
|
+
= base => exp => base ** BigInt(exp)
|
|
46
48
|
|
|
47
49
|
const pow5 = pow(5n)
|
|
48
50
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
+
export const multiply
|
|
52
|
+
: (b: BigFloat) => (mul: bigint) => BigFloat
|
|
53
|
+
= ([m, e]) => mul => [m * mul, e]
|
|
51
54
|
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
const divide
|
|
56
|
+
: (b: BigFloat) => (div: bigint) => BigFloatWithRemainder
|
|
57
|
+
= ([m, e]) => div => [[m / div, e], m % div]
|
|
54
58
|
|
|
55
|
-
|
|
56
|
-
|
|
59
|
+
const round53
|
|
60
|
+
: (b: BigFloatWithRemainder) => BigFloat
|
|
61
|
+
= ([[m, e], r]) => {
|
|
57
62
|
const mabs = abs(m)
|
|
58
63
|
const s = BigInt(sign(m))
|
|
59
64
|
const [m54, e54] = decreaseMantissa([mabs, e])(twoPow54)
|
|
@@ -67,14 +72,14 @@ const round53 = ([[m, e], r]) => {
|
|
|
67
72
|
return multiply([m53 + o54, e53])(s)
|
|
68
73
|
}
|
|
69
74
|
|
|
70
|
-
|
|
71
|
-
|
|
75
|
+
export const decToBin
|
|
76
|
+
: (dec: BigFloat) => BigFloat
|
|
77
|
+
= dec => {
|
|
72
78
|
if (dec[0] === 0n) {
|
|
73
79
|
return [0n, 0]
|
|
74
80
|
}
|
|
75
81
|
if (dec[1] >= 0) {
|
|
76
|
-
|
|
77
|
-
const bin = [dec[0] * pow5(dec[1]), dec[1]]
|
|
82
|
+
const bin: BigFloat = [dec[0] * pow5(dec[1]), dec[1]]
|
|
78
83
|
const inc = increaseMantissa(bin)(twoPow53)
|
|
79
84
|
return round53([inc, 0n])
|
|
80
85
|
}
|
|
@@ -1,36 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
import * as
|
|
3
|
-
import * as Operator from '../function/operator/module.f.mjs'
|
|
1
|
+
import * as compare from '../function/compare/module.f.ts'
|
|
2
|
+
import * as Operator from '../function/operator/module.f.ts'
|
|
4
3
|
const { unsafeCmp } = compare
|
|
5
|
-
import * as list from '../list/module.f.
|
|
4
|
+
import * as list from '../list/module.f.ts'
|
|
6
5
|
const { reduce } = list
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
type Unary = Operator.Unary<bigint, bigint>
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
export const addition
|
|
10
|
+
: (a: bigint) => (b: bigint) => bigint
|
|
11
|
+
= a => b => a + b
|
|
12
12
|
|
|
13
13
|
export const sum = reduce(addition)(0n)
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
export const abs
|
|
16
|
+
: (a: bigint) => bigint
|
|
17
|
+
= a => a >= 0 ? a : -a
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
export const sign
|
|
20
|
+
: (a: bigint) => compare.Sign
|
|
21
|
+
= a => unsafeCmp(a)(0n)
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
+
export const serialize
|
|
24
|
+
: (a: bigint) => string
|
|
25
|
+
= a => `${a}n`
|
|
23
26
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
* readonly add: Operator.Reduce<T>
|
|
29
|
-
* }} Additive
|
|
30
|
-
*/
|
|
27
|
+
type Additive<T> = {
|
|
28
|
+
readonly 0: T
|
|
29
|
+
readonly add: Operator.Reduce<T>
|
|
30
|
+
}
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
export const scalar_mul
|
|
33
|
+
: <T>(a: Additive<T>) => (a: T) => (n: bigint) => T
|
|
34
|
+
= ({ 0: _0, add }) => a => n => {
|
|
34
35
|
let ai = a
|
|
35
36
|
let ni = n
|
|
36
37
|
let result = _0
|
|
@@ -54,8 +55,8 @@ export const scalar_mul = ({ 0: _0, add }) => a => n => {
|
|
|
54
55
|
* - `log2(2n)` returns `1n`,
|
|
55
56
|
* - `log2(15n)` returns `3n`.
|
|
56
57
|
*
|
|
57
|
-
* @param
|
|
58
|
-
* @returns
|
|
58
|
+
* @param v - The input BigInt.
|
|
59
|
+
* @returns The base-2 logarithm (floor) of the input BigInt, or `-1n` if the input is less than or equal to 0.
|
|
59
60
|
*
|
|
60
61
|
* @remarks
|
|
61
62
|
* The function operates in two phases:
|
|
@@ -64,7 +65,7 @@ export const scalar_mul = ({ 0: _0, add }) => a => n => {
|
|
|
64
65
|
* 2. **Binary Search Phase:** Refines the result by halving the step size and incrementally
|
|
65
66
|
* determining the exact value of the logarithm.
|
|
66
67
|
*/
|
|
67
|
-
export const log2 = v => {
|
|
68
|
+
export const log2 = (v: bigint): bigint => {
|
|
68
69
|
if (v <= 0n) { return -1n }
|
|
69
70
|
let result = 0n
|
|
70
71
|
let i = 1n
|
|
@@ -104,14 +105,14 @@ export const log2 = v => {
|
|
|
104
105
|
* The function handles both positive and negative numbers. For negative inputs, the bit length is calculated
|
|
105
106
|
* based on the absolute value of the number. Zero has a bit length of 0.
|
|
106
107
|
*
|
|
107
|
-
* @param
|
|
108
|
-
* @returns
|
|
108
|
+
* @param v - The input BigInt.
|
|
109
|
+
* @returns The bit length of the input BigInt.
|
|
109
110
|
*
|
|
110
111
|
* @remark
|
|
111
112
|
* The function uses the `log2` function to calculate the position of the most significant bit(MSB)
|
|
112
113
|
* and adds `1n` to account for the MSB itself.For negative numbers, the absolute value is used.
|
|
113
114
|
*/
|
|
114
|
-
export const bitLength = v => {
|
|
115
|
+
export const bitLength = (v: bigint): bigint => {
|
|
115
116
|
if (v <= 0n) {
|
|
116
117
|
if (v === 0n) { return 0n }
|
|
117
118
|
v = -v
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import { flip } from '../function/module.f.mjs'
|
|
1
|
+
import { log2 } from '../bigint/module.f.ts'
|
|
2
|
+
import { flip } from '../function/module.f.ts'
|
|
4
3
|
|
|
5
4
|
/**
|
|
6
5
|
* A vector of bits represented as a `bigint`.
|
|
7
|
-
*
|
|
8
|
-
* @typedef {bigint} Vec
|
|
9
6
|
*/
|
|
7
|
+
type Vec = bigint
|
|
10
8
|
|
|
11
9
|
/**
|
|
12
10
|
* An empty vector of bits.
|
|
@@ -21,8 +19,6 @@ export const length = log2
|
|
|
21
19
|
/**
|
|
22
20
|
* Creates a vector of bits of the given `len` and the given unsigned integer.
|
|
23
21
|
*
|
|
24
|
-
* @type {(len: bigint) => (ui: bigint) => Vec}
|
|
25
|
-
*
|
|
26
22
|
* @example
|
|
27
23
|
*
|
|
28
24
|
* ```js
|
|
@@ -31,21 +27,18 @@ export const length = log2
|
|
|
31
27
|
* const v1 = vec4(0x5FEn) // 0x1En
|
|
32
28
|
* ```
|
|
33
29
|
*/
|
|
34
|
-
export const vec = len => {
|
|
30
|
+
export const vec = (len: bigint): (ui: bigint) => Vec => {
|
|
35
31
|
if (len <= 0n) { return () => empty }
|
|
36
32
|
const stop = 1n << len
|
|
37
33
|
const mask = stop - 1n
|
|
38
34
|
return data => stop | (data & mask)
|
|
39
35
|
}
|
|
40
36
|
|
|
41
|
-
|
|
42
|
-
const mask = len => (1n << len) - 1n
|
|
37
|
+
const mask = (len: bigint) => (1n << len) - 1n
|
|
43
38
|
|
|
44
39
|
/**
|
|
45
40
|
* Returns the unsigned integer of the given vector by removing a stop bit.
|
|
46
41
|
*
|
|
47
|
-
* @type {(len: Vec) => bigint}
|
|
48
|
-
*
|
|
49
42
|
* @example
|
|
50
43
|
*
|
|
51
44
|
* ```js
|
|
@@ -53,13 +46,11 @@ const mask = len => (1n << len) - 1n
|
|
|
53
46
|
* const result = uint(vector); // result is 0x5n
|
|
54
47
|
* ```
|
|
55
48
|
*/
|
|
56
|
-
export const uint = v => v ^ (1n << length(v))
|
|
49
|
+
export const uint = (v: Vec): bigint => v ^ (1n << length(v))
|
|
57
50
|
|
|
58
51
|
/**
|
|
59
52
|
* Extract the least significant unsigned integer from the given vector.
|
|
60
53
|
*
|
|
61
|
-
* @type {(uintLen: bigint) => (v: Vec) => bigint}
|
|
62
|
-
*
|
|
63
54
|
* @example
|
|
64
55
|
*
|
|
65
56
|
* ```js
|
|
@@ -68,7 +59,7 @@ export const uint = v => v ^ (1n << length(v))
|
|
|
68
59
|
* const result2 = uintLsb(16n)(vector); // result2 is 0xF5n
|
|
69
60
|
* ```
|
|
70
61
|
*/
|
|
71
|
-
export const uintLsb = len => {
|
|
62
|
+
export const uintLsb = (len: bigint): (v: Vec) => bigint => {
|
|
72
63
|
const m = mask(len)
|
|
73
64
|
return v => {
|
|
74
65
|
const result = v & m
|
|
@@ -79,8 +70,6 @@ export const uintLsb = len => {
|
|
|
79
70
|
/**
|
|
80
71
|
* Removes the first `len` least significant bits from the given vector.
|
|
81
72
|
*
|
|
82
|
-
* @type {(len: bigint) => (v: Vec) => Vec}
|
|
83
|
-
*
|
|
84
73
|
* @example
|
|
85
74
|
*
|
|
86
75
|
* ```js
|
|
@@ -89,7 +78,7 @@ export const uintLsb = len => {
|
|
|
89
78
|
* const r2 = removeLsb(24n)(v) // 0x1n
|
|
90
79
|
* ```
|
|
91
80
|
*/
|
|
92
|
-
export const removeLsb = len => v => {
|
|
81
|
+
export const removeLsb = (len: bigint) => (v: Vec): Vec => {
|
|
93
82
|
const r = v >> len
|
|
94
83
|
return r === 0n ? empty : r
|
|
95
84
|
}
|
|
@@ -97,8 +86,6 @@ export const removeLsb = len => v => {
|
|
|
97
86
|
/**
|
|
98
87
|
* Extracts the least significant unsigned integer and removes it from the vector.
|
|
99
88
|
*
|
|
100
|
-
* @type {(len: bigint) => (v: Vec) => [bigint, Vec]}
|
|
101
|
-
*
|
|
102
89
|
* @example
|
|
103
90
|
*
|
|
104
91
|
* ```js
|
|
@@ -107,7 +94,7 @@ export const removeLsb = len => v => {
|
|
|
107
94
|
* const [result2, rest2] = popUintLsb(16n)(vector); // result2 is 0xF5n, rest2 is 1n
|
|
108
95
|
* ```
|
|
109
96
|
*/
|
|
110
|
-
export const popUintLsb = len => {
|
|
97
|
+
export const popUintLsb = (len: bigint): (v: Vec) => readonly[bigint, Vec] => {
|
|
111
98
|
const m = mask(len)
|
|
112
99
|
return v => {
|
|
113
100
|
const result = v & m
|
|
@@ -118,8 +105,6 @@ export const popUintLsb = len => {
|
|
|
118
105
|
/**
|
|
119
106
|
* Extract the most significant unsigned integer of the given `len` from the given vector.
|
|
120
107
|
*
|
|
121
|
-
* @type {(len: bigint) => (v: Vec) => bigint}
|
|
122
|
-
*
|
|
123
108
|
* @example
|
|
124
109
|
*
|
|
125
110
|
* ```js
|
|
@@ -128,7 +113,7 @@ export const popUintLsb = len => {
|
|
|
128
113
|
* const result2 = uintMsb(16n)(vector); // result2 is 0xF500n
|
|
129
114
|
* ```
|
|
130
115
|
*/
|
|
131
|
-
export const uintMsb = len => {
|
|
116
|
+
export const uintMsb = (len: bigint): (v: Vec) => bigint => {
|
|
132
117
|
const m = mask(len)
|
|
133
118
|
return v => (v >> (length(v) - len)) & m
|
|
134
119
|
}
|
|
@@ -136,8 +121,6 @@ export const uintMsb = len => {
|
|
|
136
121
|
/**
|
|
137
122
|
* Removes the first `len` most significant bits from the given vector.
|
|
138
123
|
*
|
|
139
|
-
* @type {(len: bigint) => (v: Vec) => Vec}
|
|
140
|
-
*
|
|
141
124
|
* @example
|
|
142
125
|
*
|
|
143
126
|
* ```js
|
|
@@ -146,13 +129,11 @@ export const uintMsb = len => {
|
|
|
146
129
|
* const r2 = removeMsb(24n)(v) // 0x1n
|
|
147
130
|
* ```
|
|
148
131
|
*/
|
|
149
|
-
export const removeMsb = len => v => vec(length(v) - len)(v)
|
|
132
|
+
export const removeMsb = (len: bigint) => (v: Vec): Vec => vec(length(v) - len)(v)
|
|
150
133
|
|
|
151
134
|
/**
|
|
152
135
|
* Extracts the most significant unsigned integer and removes it from the vector.
|
|
153
136
|
*
|
|
154
|
-
* @type {(len: bigint) => (v: Vec) => [bigint, Vec]}
|
|
155
|
-
*
|
|
156
137
|
* @example
|
|
157
138
|
*
|
|
158
139
|
* ```js
|
|
@@ -161,7 +142,7 @@ export const removeMsb = len => v => vec(length(v) - len)(v)
|
|
|
161
142
|
* const [result2, rest2] = popUintMsb(16n)(vector); // [0xF500n, 1n]
|
|
162
143
|
* ```
|
|
163
144
|
*/
|
|
164
|
-
export const popUintMsb = len => {
|
|
145
|
+
export const popUintMsb = (len: bigint): (v: Vec) => readonly[bigint, Vec] => {
|
|
165
146
|
const m = mask(len)
|
|
166
147
|
return v => {
|
|
167
148
|
const d = length(v) - len
|
|
@@ -172,8 +153,6 @@ export const popUintMsb = len => {
|
|
|
172
153
|
/**
|
|
173
154
|
* Concat the given vectors of bits. The first vector is the least significant.
|
|
174
155
|
*
|
|
175
|
-
* @type {(a: Vec) => (b: Vec) => Vec}
|
|
176
|
-
*
|
|
177
156
|
* @example
|
|
178
157
|
*
|
|
179
158
|
* ```js
|
|
@@ -183,7 +162,7 @@ export const popUintMsb = len => {
|
|
|
183
162
|
* const ab = concatLsb(a)(b) // 0x18945n
|
|
184
163
|
* ```
|
|
185
164
|
*/
|
|
186
|
-
export const concatLsb = a => {
|
|
165
|
+
export const concatLsb = (a: Vec): (b: Vec) => Vec => {
|
|
187
166
|
const aLen = length(a)
|
|
188
167
|
const m = mask(aLen)
|
|
189
168
|
return b => (b << aLen) | (a & m)
|
|
@@ -192,8 +171,6 @@ export const concatLsb = a => {
|
|
|
192
171
|
/**
|
|
193
172
|
* Concat the given vectors of bits. The first vector is the most significant.
|
|
194
173
|
*
|
|
195
|
-
* @type {(b: Vec) => (a: Vec) => Vec}
|
|
196
|
-
*
|
|
197
174
|
* @example
|
|
198
175
|
*
|
|
199
176
|
* ```js
|
|
@@ -203,4 +180,6 @@ export const concatLsb = a => {
|
|
|
203
180
|
* const ab = concatMsb(a)(b) // 0x14589n
|
|
204
181
|
* ```
|
|
205
182
|
*/
|
|
206
|
-
export const concatMsb
|
|
183
|
+
export const concatMsb
|
|
184
|
+
: (b: Vec) => (a: Vec) => Vec
|
|
185
|
+
= flip(concatLsb)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { empty, vec, length, concatLsb, uintLsb, uintMsb, removeLsb, concatMsb, removeMsb, uint, popUintLsb, popUintMsb } from './module.f.
|
|
1
|
+
import { empty, vec, length, concatLsb, uintLsb, uintMsb, removeLsb, concatMsb, removeMsb, uint, popUintLsb, popUintMsb } from './module.f.ts'
|
|
2
2
|
|
|
3
3
|
export default {
|
|
4
4
|
examples: {
|