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
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
declare namespace _default {
|
|
2
|
-
function sum(): void;
|
|
3
|
-
let abs: (() => void)[];
|
|
4
|
-
let serialize: (() => void)[];
|
|
5
|
-
let log2: (() => void)[];
|
|
6
|
-
function toString2(): void;
|
|
7
|
-
function minus(): void;
|
|
8
|
-
function not(): void;
|
|
9
|
-
let bitLen: {
|
|
10
|
-
0: () => void;
|
|
11
|
-
m: () => void;
|
|
12
|
-
big: () => void;
|
|
13
|
-
neg: (() => void)[];
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
export default _default;
|
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
import * as _ from './module.f.mjs';
|
|
2
|
-
const { sum, abs, serialize, log2, bitLength } = _;
|
|
3
|
-
export default {
|
|
4
|
-
sum: () => {
|
|
5
|
-
const result = sum([2n, 3n, 4n, 5n]);
|
|
6
|
-
if (result !== 14n) {
|
|
7
|
-
throw result;
|
|
8
|
-
}
|
|
9
|
-
},
|
|
10
|
-
abs: [
|
|
11
|
-
() => {
|
|
12
|
-
const result = abs(10n);
|
|
13
|
-
if (result !== 10n) {
|
|
14
|
-
throw result;
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
() => {
|
|
18
|
-
const result = abs(-10n);
|
|
19
|
-
if (result !== 10n) {
|
|
20
|
-
throw result;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
],
|
|
24
|
-
serialize: [
|
|
25
|
-
() => {
|
|
26
|
-
const result = serialize(0n);
|
|
27
|
-
if (result !== '0n') {
|
|
28
|
-
throw result;
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
() => {
|
|
32
|
-
const result = serialize(123456789012345678901234567890n);
|
|
33
|
-
if (result !== '123456789012345678901234567890n') {
|
|
34
|
-
throw result;
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
() => {
|
|
38
|
-
const result = serialize(-55555n);
|
|
39
|
-
if (result !== '-55555n') {
|
|
40
|
-
throw result;
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
],
|
|
44
|
-
log2: [
|
|
45
|
-
() => {
|
|
46
|
-
const result = log2(-3n);
|
|
47
|
-
if (result !== -1n) {
|
|
48
|
-
throw result;
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
() => {
|
|
52
|
-
const result = log2(0n);
|
|
53
|
-
if (result !== -1n) {
|
|
54
|
-
throw result;
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
() => {
|
|
58
|
-
const result = log2(1n);
|
|
59
|
-
if (result !== 0n) {
|
|
60
|
-
throw result;
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
() => {
|
|
64
|
-
const result = log2(2n);
|
|
65
|
-
if (result !== 1n) {
|
|
66
|
-
throw result;
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
() => {
|
|
70
|
-
const result = log2(3n);
|
|
71
|
-
if (result !== 1n) {
|
|
72
|
-
throw result;
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
() => {
|
|
76
|
-
const result = log2(4n);
|
|
77
|
-
if (result !== 2n) {
|
|
78
|
-
throw result;
|
|
79
|
-
}
|
|
80
|
-
},
|
|
81
|
-
() => {
|
|
82
|
-
const result = log2(7n);
|
|
83
|
-
if (result !== 2n) {
|
|
84
|
-
throw result;
|
|
85
|
-
}
|
|
86
|
-
},
|
|
87
|
-
() => {
|
|
88
|
-
const result = log2(8n);
|
|
89
|
-
if (result !== 3n) {
|
|
90
|
-
throw result;
|
|
91
|
-
}
|
|
92
|
-
},
|
|
93
|
-
() => {
|
|
94
|
-
const result = log2(15n);
|
|
95
|
-
if (result !== 3n) {
|
|
96
|
-
throw result;
|
|
97
|
-
}
|
|
98
|
-
},
|
|
99
|
-
() => {
|
|
100
|
-
const result = log2(16n);
|
|
101
|
-
if (result !== 4n) {
|
|
102
|
-
throw result;
|
|
103
|
-
}
|
|
104
|
-
},
|
|
105
|
-
() => {
|
|
106
|
-
// max for Bun (131_072 Bytes)
|
|
107
|
-
const v = 1048575n;
|
|
108
|
-
const result = log2(1n << v);
|
|
109
|
-
if (result !== v) {
|
|
110
|
-
throw result;
|
|
111
|
-
}
|
|
112
|
-
},
|
|
113
|
-
() => {
|
|
114
|
-
const v = 0x18945n;
|
|
115
|
-
const result = log2(v);
|
|
116
|
-
if (result !== 16n) {
|
|
117
|
-
throw result;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
],
|
|
121
|
-
toString2: () => {
|
|
122
|
-
// max for Bun (131_072 Bytes)
|
|
123
|
-
const v = 1048575n;
|
|
124
|
-
const result = (1n << v).toString(2).length - 1;
|
|
125
|
-
if (result !== 1_048_575) {
|
|
126
|
-
throw result;
|
|
127
|
-
}
|
|
128
|
-
},
|
|
129
|
-
minus: () => {
|
|
130
|
-
let i = 0n;
|
|
131
|
-
while (i < 1048575n) {
|
|
132
|
-
const s = -i;
|
|
133
|
-
if (i !== -s) {
|
|
134
|
-
throw [i, s];
|
|
135
|
-
}
|
|
136
|
-
i += 1n;
|
|
137
|
-
}
|
|
138
|
-
},
|
|
139
|
-
not: () => {
|
|
140
|
-
let i = 0n;
|
|
141
|
-
while (i < 1048575n) {
|
|
142
|
-
const s = ~i;
|
|
143
|
-
if (i !== ~s) {
|
|
144
|
-
throw [i, s];
|
|
145
|
-
}
|
|
146
|
-
i += 1n;
|
|
147
|
-
}
|
|
148
|
-
},
|
|
149
|
-
bitLen: {
|
|
150
|
-
0: () => {
|
|
151
|
-
const s = bitLength(0n);
|
|
152
|
-
if (s !== 0n) {
|
|
153
|
-
throw s;
|
|
154
|
-
}
|
|
155
|
-
},
|
|
156
|
-
m: () => {
|
|
157
|
-
let i = 0n;
|
|
158
|
-
while (i < 10000n) {
|
|
159
|
-
const s = bitLength(1n << i);
|
|
160
|
-
if (s !== i + 1n) {
|
|
161
|
-
throw [s, i];
|
|
162
|
-
}
|
|
163
|
-
i += 1n;
|
|
164
|
-
}
|
|
165
|
-
},
|
|
166
|
-
big: () => {
|
|
167
|
-
const s = bitLength(1n << 1000000n);
|
|
168
|
-
if (s !== 1000001n) {
|
|
169
|
-
throw s;
|
|
170
|
-
}
|
|
171
|
-
},
|
|
172
|
-
neg: [
|
|
173
|
-
() => {
|
|
174
|
-
const s = bitLength(-1n);
|
|
175
|
-
if (s !== 1n) {
|
|
176
|
-
throw s;
|
|
177
|
-
}
|
|
178
|
-
},
|
|
179
|
-
() => {
|
|
180
|
-
const s = bitLength(-2n);
|
|
181
|
-
if (s !== 2n) {
|
|
182
|
-
throw s;
|
|
183
|
-
}
|
|
184
|
-
},
|
|
185
|
-
() => {
|
|
186
|
-
const s = bitLength(-3n);
|
|
187
|
-
if (s !== 2n) {
|
|
188
|
-
throw s;
|
|
189
|
-
}
|
|
190
|
-
},
|
|
191
|
-
() => {
|
|
192
|
-
const s = bitLength(-4n);
|
|
193
|
-
if (s !== 3n) {
|
|
194
|
-
throw s;
|
|
195
|
-
}
|
|
196
|
-
},
|
|
197
|
-
]
|
|
198
|
-
}
|
|
199
|
-
};
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A vector of bits represented as a `bigint`.
|
|
3
|
-
*
|
|
4
|
-
* @typedef {bigint} Vec
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* An empty vector of bits.
|
|
8
|
-
*/
|
|
9
|
-
export const empty: 1n;
|
|
10
|
-
/**
|
|
11
|
-
* Calculates the length of the given vector of bits.
|
|
12
|
-
*/
|
|
13
|
-
export const length: (v: bigint) => bigint;
|
|
14
|
-
/**
|
|
15
|
-
* Creates a vector of bits of the given `len` and the given unsigned integer.
|
|
16
|
-
*
|
|
17
|
-
* @type {(len: bigint) => (ui: bigint) => Vec}
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
*
|
|
21
|
-
* ```js
|
|
22
|
-
* const vec4 = vec(4n)
|
|
23
|
-
* const v0 = vec4(5n) // 0x15n
|
|
24
|
-
* const v1 = vec4(0x5FEn) // 0x1En
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
export const vec: (len: bigint) => (ui: bigint) => Vec;
|
|
28
|
-
/**
|
|
29
|
-
* Returns the unsigned integer of the given vector by removing a stop bit.
|
|
30
|
-
*
|
|
31
|
-
* @type {(len: Vec) => bigint}
|
|
32
|
-
*
|
|
33
|
-
* @example
|
|
34
|
-
*
|
|
35
|
-
* ```js
|
|
36
|
-
* const vector = vec(8n)(0x5n) // 0x105n
|
|
37
|
-
* const result = uint(vector); // result is 0x5n
|
|
38
|
-
* ```
|
|
39
|
-
*/
|
|
40
|
-
export const uint: (len: Vec) => bigint;
|
|
41
|
-
/**
|
|
42
|
-
* Extract the least significant unsigned integer from the given vector.
|
|
43
|
-
*
|
|
44
|
-
* @type {(uintLen: bigint) => (v: Vec) => bigint}
|
|
45
|
-
*
|
|
46
|
-
* @example
|
|
47
|
-
*
|
|
48
|
-
* ```js
|
|
49
|
-
* const vector = vec(8n)(0xF5n) // 0x1F5n
|
|
50
|
-
* const result = uintLsb(4n)(vector); // result is 5n
|
|
51
|
-
* const result2 = uintLsb(16n)(vector); // result2 is 0xF5n
|
|
52
|
-
* ```
|
|
53
|
-
*/
|
|
54
|
-
export const uintLsb: (uintLen: bigint) => (v: Vec) => bigint;
|
|
55
|
-
/**
|
|
56
|
-
* Removes the first `len` least significant bits from the given vector.
|
|
57
|
-
*
|
|
58
|
-
* @type {(len: bigint) => (v: Vec) => Vec}
|
|
59
|
-
*
|
|
60
|
-
* @example
|
|
61
|
-
*
|
|
62
|
-
* ```js
|
|
63
|
-
* const v = vec(16n)(0x3456n) // 0x13456n
|
|
64
|
-
* const r = removeLsb(4n)(v) // 0x1345n
|
|
65
|
-
* const r2 = removeLsb(24n)(v) // 0x1n
|
|
66
|
-
* ```
|
|
67
|
-
*/
|
|
68
|
-
export const removeLsb: (len: bigint) => (v: Vec) => Vec;
|
|
69
|
-
/**
|
|
70
|
-
* Extracts the least significant unsigned integer and removes it from the vector.
|
|
71
|
-
*
|
|
72
|
-
* @type {(len: bigint) => (v: Vec) => [bigint, Vec]}
|
|
73
|
-
*
|
|
74
|
-
* @example
|
|
75
|
-
*
|
|
76
|
-
* ```js
|
|
77
|
-
* const vector = vec(8n)(0xF5n) // 0x1F5n
|
|
78
|
-
* const [result, rest] = popUintLsb(4n)(vector); // result is 5n, rest is 0x1Fn
|
|
79
|
-
* const [result2, rest2] = popUintLsb(16n)(vector); // result2 is 0xF5n, rest2 is 1n
|
|
80
|
-
* ```
|
|
81
|
-
*/
|
|
82
|
-
export const popUintLsb: (len: bigint) => (v: Vec) => [bigint, Vec];
|
|
83
|
-
/**
|
|
84
|
-
* Extract the most significant unsigned integer of the given `len` from the given vector.
|
|
85
|
-
*
|
|
86
|
-
* @type {(len: bigint) => (v: Vec) => bigint}
|
|
87
|
-
*
|
|
88
|
-
* @example
|
|
89
|
-
*
|
|
90
|
-
* ```js
|
|
91
|
-
* const vector = vec(8n)(0xF5n) // 0x1F5n
|
|
92
|
-
* const result = uintMsb(4n)(vector); // result is 0xFn
|
|
93
|
-
* const result2 = uintMsb(16n)(vector); // result2 is 0xF500n
|
|
94
|
-
* ```
|
|
95
|
-
*/
|
|
96
|
-
export const uintMsb: (len: bigint) => (v: Vec) => bigint;
|
|
97
|
-
/**
|
|
98
|
-
* Removes the first `len` most significant bits from the given vector.
|
|
99
|
-
*
|
|
100
|
-
* @type {(len: bigint) => (v: Vec) => Vec}
|
|
101
|
-
*
|
|
102
|
-
* @example
|
|
103
|
-
*
|
|
104
|
-
* ```js
|
|
105
|
-
* const v = vec(16n)(0x3456n) // 0x13456n
|
|
106
|
-
* const r = removeMsb(4n)(v) // 0x1456n
|
|
107
|
-
* const r2 = removeMsb(24n)(v) // 0x1n
|
|
108
|
-
* ```
|
|
109
|
-
*/
|
|
110
|
-
export const removeMsb: (len: bigint) => (v: Vec) => Vec;
|
|
111
|
-
/**
|
|
112
|
-
* Extracts the most significant unsigned integer and removes it from the vector.
|
|
113
|
-
*
|
|
114
|
-
* @type {(len: bigint) => (v: Vec) => [bigint, Vec]}
|
|
115
|
-
*
|
|
116
|
-
* @example
|
|
117
|
-
*
|
|
118
|
-
* ```js
|
|
119
|
-
* const vector = vec(8n)(0xF5n) // 0x1F5n
|
|
120
|
-
* const [result, rest] = popUintMsb(4n)(vector); // [0xFn, 0x15n]
|
|
121
|
-
* const [result2, rest2] = popUintMsb(16n)(vector); // [0xF500n, 1n]
|
|
122
|
-
* ```
|
|
123
|
-
*/
|
|
124
|
-
export const popUintMsb: (len: bigint) => (v: Vec) => [bigint, Vec];
|
|
125
|
-
/**
|
|
126
|
-
* Concat the given vectors of bits. The first vector is the least significant.
|
|
127
|
-
*
|
|
128
|
-
* @type {(a: Vec) => (b: Vec) => Vec}
|
|
129
|
-
*
|
|
130
|
-
* @example
|
|
131
|
-
*
|
|
132
|
-
* ```js
|
|
133
|
-
* const u8 = vec(8n)
|
|
134
|
-
* const a = u8(0x45n) // 0x145n
|
|
135
|
-
* const b = u8(0x89n) // 0x189n
|
|
136
|
-
* const ab = concatLsb(a)(b) // 0x18945n
|
|
137
|
-
* ```
|
|
138
|
-
*/
|
|
139
|
-
export const concatLsb: (a: Vec) => (b: Vec) => Vec;
|
|
140
|
-
/**
|
|
141
|
-
* Concat the given vectors of bits. The first vector is the most significant.
|
|
142
|
-
*
|
|
143
|
-
* @type {(b: Vec) => (a: Vec) => Vec}
|
|
144
|
-
*
|
|
145
|
-
* @example
|
|
146
|
-
*
|
|
147
|
-
* ```js
|
|
148
|
-
* const u8 = vec(8n)
|
|
149
|
-
* const a = u8(0x45n) // 0x145n
|
|
150
|
-
* const b = u8(0x89n) // 0x189n
|
|
151
|
-
* const ab = concatMsb(a)(b) // 0x14589n
|
|
152
|
-
* ```
|
|
153
|
-
*/
|
|
154
|
-
export const concatMsb: (b: Vec) => (a: Vec) => Vec;
|
|
155
|
-
/**
|
|
156
|
-
* A vector of bits represented as a `bigint`.
|
|
157
|
-
*/
|
|
158
|
-
export type Vec = bigint;
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
// @ts-self-types="./module.f.d.mts"
|
|
2
|
-
import { log2 } from '../bigint/module.f.mjs';
|
|
3
|
-
import { flip } from '../function/module.f.mjs';
|
|
4
|
-
/**
|
|
5
|
-
* A vector of bits represented as a `bigint`.
|
|
6
|
-
*
|
|
7
|
-
* @typedef {bigint} Vec
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* An empty vector of bits.
|
|
11
|
-
*/
|
|
12
|
-
export const empty = 1n;
|
|
13
|
-
/**
|
|
14
|
-
* Calculates the length of the given vector of bits.
|
|
15
|
-
*/
|
|
16
|
-
export const length = log2;
|
|
17
|
-
/**
|
|
18
|
-
* Creates a vector of bits of the given `len` and the given unsigned integer.
|
|
19
|
-
*
|
|
20
|
-
* @type {(len: bigint) => (ui: bigint) => Vec}
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
*
|
|
24
|
-
* ```js
|
|
25
|
-
* const vec4 = vec(4n)
|
|
26
|
-
* const v0 = vec4(5n) // 0x15n
|
|
27
|
-
* const v1 = vec4(0x5FEn) // 0x1En
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
export const vec = len => {
|
|
31
|
-
if (len <= 0n) {
|
|
32
|
-
return () => empty;
|
|
33
|
-
}
|
|
34
|
-
const stop = 1n << len;
|
|
35
|
-
const mask = stop - 1n;
|
|
36
|
-
return data => stop | (data & mask);
|
|
37
|
-
};
|
|
38
|
-
/** @type {(len: bigint) => bigint} */
|
|
39
|
-
const mask = len => (1n << len) - 1n;
|
|
40
|
-
/**
|
|
41
|
-
* Returns the unsigned integer of the given vector by removing a stop bit.
|
|
42
|
-
*
|
|
43
|
-
* @type {(len: Vec) => bigint}
|
|
44
|
-
*
|
|
45
|
-
* @example
|
|
46
|
-
*
|
|
47
|
-
* ```js
|
|
48
|
-
* const vector = vec(8n)(0x5n) // 0x105n
|
|
49
|
-
* const result = uint(vector); // result is 0x5n
|
|
50
|
-
* ```
|
|
51
|
-
*/
|
|
52
|
-
export const uint = v => v ^ (1n << length(v));
|
|
53
|
-
/**
|
|
54
|
-
* Extract the least significant unsigned integer from the given vector.
|
|
55
|
-
*
|
|
56
|
-
* @type {(uintLen: bigint) => (v: Vec) => bigint}
|
|
57
|
-
*
|
|
58
|
-
* @example
|
|
59
|
-
*
|
|
60
|
-
* ```js
|
|
61
|
-
* const vector = vec(8n)(0xF5n) // 0x1F5n
|
|
62
|
-
* const result = uintLsb(4n)(vector); // result is 5n
|
|
63
|
-
* const result2 = uintLsb(16n)(vector); // result2 is 0xF5n
|
|
64
|
-
* ```
|
|
65
|
-
*/
|
|
66
|
-
export const uintLsb = len => {
|
|
67
|
-
const m = mask(len);
|
|
68
|
-
return v => {
|
|
69
|
-
const result = v & m;
|
|
70
|
-
return result === v ? uint(v) : result;
|
|
71
|
-
};
|
|
72
|
-
};
|
|
73
|
-
/**
|
|
74
|
-
* Removes the first `len` least significant bits from the given vector.
|
|
75
|
-
*
|
|
76
|
-
* @type {(len: bigint) => (v: Vec) => Vec}
|
|
77
|
-
*
|
|
78
|
-
* @example
|
|
79
|
-
*
|
|
80
|
-
* ```js
|
|
81
|
-
* const v = vec(16n)(0x3456n) // 0x13456n
|
|
82
|
-
* const r = removeLsb(4n)(v) // 0x1345n
|
|
83
|
-
* const r2 = removeLsb(24n)(v) // 0x1n
|
|
84
|
-
* ```
|
|
85
|
-
*/
|
|
86
|
-
export const removeLsb = len => v => {
|
|
87
|
-
const r = v >> len;
|
|
88
|
-
return r === 0n ? empty : r;
|
|
89
|
-
};
|
|
90
|
-
/**
|
|
91
|
-
* Extracts the least significant unsigned integer and removes it from the vector.
|
|
92
|
-
*
|
|
93
|
-
* @type {(len: bigint) => (v: Vec) => [bigint, Vec]}
|
|
94
|
-
*
|
|
95
|
-
* @example
|
|
96
|
-
*
|
|
97
|
-
* ```js
|
|
98
|
-
* const vector = vec(8n)(0xF5n) // 0x1F5n
|
|
99
|
-
* const [result, rest] = popUintLsb(4n)(vector); // result is 5n, rest is 0x1Fn
|
|
100
|
-
* const [result2, rest2] = popUintLsb(16n)(vector); // result2 is 0xF5n, rest2 is 1n
|
|
101
|
-
* ```
|
|
102
|
-
*/
|
|
103
|
-
export const popUintLsb = len => {
|
|
104
|
-
const m = mask(len);
|
|
105
|
-
return v => {
|
|
106
|
-
const result = v & m;
|
|
107
|
-
return result === v ? [uint(v), empty] : [result, v >> len];
|
|
108
|
-
};
|
|
109
|
-
};
|
|
110
|
-
/**
|
|
111
|
-
* Extract the most significant unsigned integer of the given `len` from the given vector.
|
|
112
|
-
*
|
|
113
|
-
* @type {(len: bigint) => (v: Vec) => bigint}
|
|
114
|
-
*
|
|
115
|
-
* @example
|
|
116
|
-
*
|
|
117
|
-
* ```js
|
|
118
|
-
* const vector = vec(8n)(0xF5n) // 0x1F5n
|
|
119
|
-
* const result = uintMsb(4n)(vector); // result is 0xFn
|
|
120
|
-
* const result2 = uintMsb(16n)(vector); // result2 is 0xF500n
|
|
121
|
-
* ```
|
|
122
|
-
*/
|
|
123
|
-
export const uintMsb = len => {
|
|
124
|
-
const m = mask(len);
|
|
125
|
-
return v => (v >> (length(v) - len)) & m;
|
|
126
|
-
};
|
|
127
|
-
/**
|
|
128
|
-
* Removes the first `len` most significant bits from the given vector.
|
|
129
|
-
*
|
|
130
|
-
* @type {(len: bigint) => (v: Vec) => Vec}
|
|
131
|
-
*
|
|
132
|
-
* @example
|
|
133
|
-
*
|
|
134
|
-
* ```js
|
|
135
|
-
* const v = vec(16n)(0x3456n) // 0x13456n
|
|
136
|
-
* const r = removeMsb(4n)(v) // 0x1456n
|
|
137
|
-
* const r2 = removeMsb(24n)(v) // 0x1n
|
|
138
|
-
* ```
|
|
139
|
-
*/
|
|
140
|
-
export const removeMsb = len => v => vec(length(v) - len)(v);
|
|
141
|
-
/**
|
|
142
|
-
* Extracts the most significant unsigned integer and removes it from the vector.
|
|
143
|
-
*
|
|
144
|
-
* @type {(len: bigint) => (v: Vec) => [bigint, Vec]}
|
|
145
|
-
*
|
|
146
|
-
* @example
|
|
147
|
-
*
|
|
148
|
-
* ```js
|
|
149
|
-
* const vector = vec(8n)(0xF5n) // 0x1F5n
|
|
150
|
-
* const [result, rest] = popUintMsb(4n)(vector); // [0xFn, 0x15n]
|
|
151
|
-
* const [result2, rest2] = popUintMsb(16n)(vector); // [0xF500n, 1n]
|
|
152
|
-
* ```
|
|
153
|
-
*/
|
|
154
|
-
export const popUintMsb = len => {
|
|
155
|
-
const m = mask(len);
|
|
156
|
-
return v => {
|
|
157
|
-
const d = length(v) - len;
|
|
158
|
-
return [(v >> d) & m, vec(d)(v)];
|
|
159
|
-
};
|
|
160
|
-
};
|
|
161
|
-
/**
|
|
162
|
-
* Concat the given vectors of bits. The first vector is the least significant.
|
|
163
|
-
*
|
|
164
|
-
* @type {(a: Vec) => (b: Vec) => Vec}
|
|
165
|
-
*
|
|
166
|
-
* @example
|
|
167
|
-
*
|
|
168
|
-
* ```js
|
|
169
|
-
* const u8 = vec(8n)
|
|
170
|
-
* const a = u8(0x45n) // 0x145n
|
|
171
|
-
* const b = u8(0x89n) // 0x189n
|
|
172
|
-
* const ab = concatLsb(a)(b) // 0x18945n
|
|
173
|
-
* ```
|
|
174
|
-
*/
|
|
175
|
-
export const concatLsb = a => {
|
|
176
|
-
const aLen = length(a);
|
|
177
|
-
const m = mask(aLen);
|
|
178
|
-
return b => (b << aLen) | (a & m);
|
|
179
|
-
};
|
|
180
|
-
/**
|
|
181
|
-
* Concat the given vectors of bits. The first vector is the most significant.
|
|
182
|
-
*
|
|
183
|
-
* @type {(b: Vec) => (a: Vec) => Vec}
|
|
184
|
-
*
|
|
185
|
-
* @example
|
|
186
|
-
*
|
|
187
|
-
* ```js
|
|
188
|
-
* const u8 = vec(8n)
|
|
189
|
-
* const a = u8(0x45n) // 0x145n
|
|
190
|
-
* const b = u8(0x89n) // 0x189n
|
|
191
|
-
* const ab = concatMsb(a)(b) // 0x14589n
|
|
192
|
-
* ```
|
|
193
|
-
*/
|
|
194
|
-
export const concatMsb = flip(concatLsb);
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
declare namespace _default {
|
|
2
|
-
export namespace examples {
|
|
3
|
-
function vec(): void;
|
|
4
|
-
function uint(): void;
|
|
5
|
-
function uintLsb(): void;
|
|
6
|
-
function uintMsb(): void;
|
|
7
|
-
function popUintLsb(): void;
|
|
8
|
-
function popUintMsb(): void;
|
|
9
|
-
function concatLsb(): void;
|
|
10
|
-
function concatMsb(): void;
|
|
11
|
-
function removeLsb(): void;
|
|
12
|
-
function removeMsb(): void;
|
|
13
|
-
}
|
|
14
|
-
export function uintLsb_1(): void;
|
|
15
|
-
export { uintLsb_1 as uintLsb };
|
|
16
|
-
export function uintSmall(): void;
|
|
17
|
-
export function vecExample(): void;
|
|
18
|
-
export function length(): void;
|
|
19
|
-
export function bitset(): void;
|
|
20
|
-
export function appendBack(): void;
|
|
21
|
-
export function removeBack(): void;
|
|
22
|
-
}
|
|
23
|
-
export default _default;
|