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,14 +1,15 @@
|
|
|
1
|
-
import * as _ from './module.f.
|
|
2
|
-
import * as map from '../../types/map/module.f.
|
|
3
|
-
import * as Module from '../module/module.f.
|
|
4
|
-
import * as ModuleFunction from '../module/function/module.f.
|
|
5
|
-
import * as Result from '../../types/result/module.f.
|
|
6
|
-
import * as Package from '../package/module.f.
|
|
7
|
-
import * as o from '../../types/object/module.f.
|
|
1
|
+
import * as _ from './module.f.ts'
|
|
2
|
+
import * as map from '../../types/map/module.f.ts'
|
|
3
|
+
import * as Module from '../module/module.f.ts'
|
|
4
|
+
import * as ModuleFunction from '../module/function/module.f.ts'
|
|
5
|
+
import * as Result from '../../types/result/module.f.ts'
|
|
6
|
+
import * as Package from '../package/module.f.ts'
|
|
7
|
+
import * as o from '../../types/object/module.f.ts'
|
|
8
8
|
const { at } = o
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
const compileMap
|
|
11
|
+
: { readonly [k in string]?: Result.Result<ModuleFunction.Function_, unknown> }
|
|
12
|
+
= {
|
|
12
13
|
':index.js': [
|
|
13
14
|
'ok',
|
|
14
15
|
require_ => m0 => {
|
|
@@ -31,13 +32,15 @@ const compileMap = {
|
|
|
31
32
|
() => m0 => [['ok', 'x:r.js'], m0]],
|
|
32
33
|
}
|
|
33
34
|
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
const compile
|
|
36
|
+
: ModuleFunction.Compile
|
|
37
|
+
= source => compileMap[source] ?? ['error', 'invalid source']
|
|
36
38
|
|
|
37
|
-
|
|
39
|
+
type StringMap = { readonly [k in string]: string }
|
|
38
40
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
const packageMap
|
|
42
|
+
: { readonly [k in string]: { readonly dependencies: StringMap, readonly files: StringMap }}
|
|
43
|
+
= {
|
|
41
44
|
'': {
|
|
42
45
|
dependencies: {
|
|
43
46
|
'x': '/node_modules/x'
|
|
@@ -56,8 +59,9 @@ const packageMap = {
|
|
|
56
59
|
},
|
|
57
60
|
}
|
|
58
61
|
|
|
59
|
-
|
|
60
|
-
|
|
62
|
+
const packageGet
|
|
63
|
+
: Package.Get
|
|
64
|
+
= packageId => {
|
|
61
65
|
const p = at(packageId)(packageMap)
|
|
62
66
|
return p === null ? null :
|
|
63
67
|
{
|
|
@@ -69,7 +73,7 @@ const packageGet = packageId => {
|
|
|
69
73
|
const getOrBuild = _.getOrBuild
|
|
70
74
|
(compile)
|
|
71
75
|
(packageGet)
|
|
72
|
-
(
|
|
76
|
+
(map as Module.MapInterface<map.Map<Module.State>>)
|
|
73
77
|
|
|
74
78
|
export default () => {
|
|
75
79
|
let [r, m] = getOrBuild({ package: '', path: ['index.js'] })(map.empty)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An IO interface for creating and running module functions.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import * as TypesResult from '../../../types/result/module.f.ts'
|
|
6
|
+
|
|
7
|
+
export type Function_ = <M>(require: Require<M>) => (prior: M) => Result<M>
|
|
8
|
+
|
|
9
|
+
export type Result<M> = readonly[TypesResult.Result<unknown, unknown>, M]
|
|
10
|
+
|
|
11
|
+
export type Require<M> = (path: string) => (prior: M) => Result<M>
|
|
12
|
+
|
|
13
|
+
export type Compile = (source: string) => TypesResult.Result<Function_, unknown>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as O from '../../types/object/module.f.ts'
|
|
2
|
+
|
|
3
|
+
export type MapInterface<M> = {
|
|
4
|
+
readonly at: (moduleId: string) => (moduleMap: M) => State | null
|
|
5
|
+
readonly setReplace: (moduleId: string) => (moduleState: State) => (moduleMap: M) => M
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export type State = |
|
|
9
|
+
readonly['ok', Module] |
|
|
10
|
+
readonly['error', Error]
|
|
11
|
+
|
|
12
|
+
type Module = {
|
|
13
|
+
readonly exports: unknown
|
|
14
|
+
readonly requireMap: O.Map<string>
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export type Error = |
|
|
18
|
+
['file not found'] |
|
|
19
|
+
['compilation error', unknown] |
|
|
20
|
+
['runtime error', unknown] |
|
|
21
|
+
['circular reference']
|
|
22
|
+
|
|
23
|
+
export type Id = {
|
|
24
|
+
readonly package: string
|
|
25
|
+
readonly path: readonly string[]
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export const dir
|
|
29
|
+
: (id: Id) => Id | null
|
|
30
|
+
= id => {
|
|
31
|
+
const len = id.path.length
|
|
32
|
+
if (len < 1) { return null }
|
|
33
|
+
return {
|
|
34
|
+
package: id.package,
|
|
35
|
+
path: id.path.slice(0, len - 1)
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export const idToString
|
|
40
|
+
: (id: Id) => string
|
|
41
|
+
= id => `${id.package}/${id.path.join('/')}`
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import unsafeResult from '../types/result/module.
|
|
1
|
+
import unsafeResult from '../types/result/module.ts'
|
|
2
2
|
const { tryCatch } = unsafeResult
|
|
3
|
-
import * as result from '../types/result/module.f.
|
|
3
|
+
import * as result from '../types/result/module.f.ts'
|
|
4
4
|
const { unwrap } = result
|
|
5
|
-
import * as ModuleFunction from './module/function/module.f.
|
|
5
|
+
import * as ModuleFunction from './module/function/module.f.ts'
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const mutableRequire
|
|
7
|
+
const build
|
|
8
|
+
: (f: Function) => ModuleFunction.Function_
|
|
9
|
+
= f => immutableRequire => mutableData => {
|
|
10
|
+
const mutableRequire
|
|
11
|
+
: (path: string) => unknown
|
|
12
|
+
= path => {
|
|
11
13
|
const [result, data] = immutableRequire(path)(mutableData)
|
|
12
14
|
// Side effect: setting a variable from a nested function (closure)
|
|
13
15
|
// is not allowed in FunctionalScript.
|
|
@@ -22,7 +24,8 @@ const build = f => immutableRequire => mutableData => {
|
|
|
22
24
|
return [result, mutableData]
|
|
23
25
|
}
|
|
24
26
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
export const compile
|
|
28
|
+
: ModuleFunction.Compile
|
|
29
|
+
= source =>
|
|
27
30
|
// Side effect: a `Function` constructor is not allowed in FunctionalScript.
|
|
28
31
|
tryCatch(() => build(Function('module', 'require', `"use strict";${source}`)))
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as json from '../../../json/module.f.ts'
|
|
2
|
+
const { isObject } = json
|
|
3
|
+
import * as list from '../../../types/list/module.f.ts'
|
|
4
|
+
const { map, every } = list
|
|
5
|
+
const { entries } = Object
|
|
6
|
+
|
|
7
|
+
type DependencyJson = readonly[string, string]
|
|
8
|
+
|
|
9
|
+
type DependencyMapJson = {readonly[k in string]: string}
|
|
10
|
+
|
|
11
|
+
export type DependenciesJson = DependencyMapJson|null
|
|
12
|
+
|
|
13
|
+
const isDependencyJson
|
|
14
|
+
: (entry: json.Entry) => boolean
|
|
15
|
+
= ([, v]) => typeof v === 'string'
|
|
16
|
+
|
|
17
|
+
export const isDependenciesJson
|
|
18
|
+
= (j: json.Unknown): j is DependenciesJson => {
|
|
19
|
+
if (j === null) { return true }
|
|
20
|
+
if (!isObject(j)) { return false }
|
|
21
|
+
return every(map(isDependencyJson)(entries(j)))
|
|
22
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as json from '../../json/module.f.ts'
|
|
2
|
+
const { isObject } = json
|
|
3
|
+
import * as dependencies from './dependencies/module.f.ts'
|
|
4
|
+
const { isDependenciesJson } = dependencies
|
|
5
|
+
import * as o from '../../types/object/module.f.ts'
|
|
6
|
+
const { at } = o
|
|
7
|
+
|
|
8
|
+
type PackageJson = {
|
|
9
|
+
readonly name: string
|
|
10
|
+
readonly version: string
|
|
11
|
+
readonly dependencies?: dependencies.DependenciesJson
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const isPackageJson
|
|
15
|
+
= (j: json.Unknown): j is PackageJson => {
|
|
16
|
+
if (!isObject(j)) { return false }
|
|
17
|
+
if (typeof j.name !== 'string') { return false }
|
|
18
|
+
if (typeof j.version !== 'string') { return false }
|
|
19
|
+
if (!isDependenciesJson(at('dependencies')(j))) { return false }
|
|
20
|
+
return true
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export type Package = {
|
|
24
|
+
readonly dependency: (localPackageId: string) => string | null
|
|
25
|
+
readonly file: (localFileId: string) => string | null
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @note Current package has an empty string '' as a packageId.
|
|
30
|
+
*/
|
|
31
|
+
export type Get = (packageId: string) => Package | null
|
|
@@ -1,28 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
import * as list from '../../types/list/module.f.mjs'
|
|
1
|
+
import * as list from '../../types/list/module.f.ts'
|
|
3
2
|
const { next, fold, reverse, first, flat, toArray, filterMap, isEmpty, concat } = list
|
|
4
|
-
import * as string from '../../types/string/module.f.
|
|
3
|
+
import * as string from '../../types/string/module.f.ts'
|
|
5
4
|
const { join } = string
|
|
6
|
-
import * as Package from '../package/module.f.
|
|
7
|
-
import * as Module from '../module/module.f.
|
|
5
|
+
import * as Package from '../package/module.f.ts'
|
|
6
|
+
import * as Module from '../module/module.f.ts'
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
type Items = readonly string[]
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* }} LocalPath
|
|
17
|
-
*/
|
|
10
|
+
type LocalPath = {
|
|
11
|
+
readonly external: boolean
|
|
12
|
+
readonly dir: boolean
|
|
13
|
+
readonly items: Items
|
|
14
|
+
}
|
|
18
15
|
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
const split
|
|
17
|
+
: (path: string) => readonly string[]
|
|
18
|
+
= path => path.split('/')
|
|
21
19
|
|
|
22
|
-
|
|
20
|
+
type OptionList = readonly[list.List<string>] | null
|
|
23
21
|
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
const normItemsOp
|
|
23
|
+
: (items: string) => (prior: OptionList) => OptionList
|
|
24
|
+
= first => prior => {
|
|
26
25
|
if (prior === null) { return null }
|
|
27
26
|
const tail = prior[0]
|
|
28
27
|
switch (first) {
|
|
@@ -38,21 +37,24 @@ const normItemsOp = first => prior => {
|
|
|
38
37
|
}
|
|
39
38
|
}
|
|
40
39
|
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
const normItems
|
|
41
|
+
: (items: list.List<string>) => OptionList
|
|
42
|
+
= items => {
|
|
43
43
|
const result = fold(normItemsOp)([list.empty])(items)
|
|
44
44
|
return result === null ? result : [reverse(result[0])]
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
const firstNull = first(null)
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const fSeq
|
|
49
|
+
export const parseLocal
|
|
50
|
+
: (local: string) => (path: string) => LocalPath|null
|
|
51
|
+
= local => {
|
|
52
|
+
const fSeq
|
|
53
|
+
: (path: string) => readonly[boolean, boolean, list.List<string>]
|
|
54
|
+
= path => {
|
|
53
55
|
const pathSeq = split(path)
|
|
54
56
|
const dir = [null, '', '.', '..'].includes(pathSeq[pathSeq.length - 1])
|
|
55
|
-
return
|
|
57
|
+
return (['.', '..'] as readonly (string|null)[]).includes(firstNull(pathSeq)) ?
|
|
56
58
|
[false, dir, flat([split(local), pathSeq])] :
|
|
57
59
|
[true, dir, pathSeq]
|
|
58
60
|
}
|
|
@@ -69,40 +71,44 @@ export const parseLocal = local => {
|
|
|
69
71
|
}
|
|
70
72
|
}
|
|
71
73
|
|
|
72
|
-
|
|
74
|
+
type IdPath = readonly[string, list.List<string>]
|
|
73
75
|
|
|
74
|
-
/** @type {
|
|
75
|
-
const variants
|
|
76
|
+
/** @type {} */
|
|
77
|
+
const variants
|
|
78
|
+
: (prior: readonly[string|null, list.List<string>]) => list.Thunk<IdPath>
|
|
79
|
+
= prior => () => {
|
|
76
80
|
const [a, b] = prior
|
|
77
81
|
const r = next(b)
|
|
78
82
|
if (r === list.empty) { return list.empty }
|
|
79
83
|
const { first, tail } = r
|
|
80
|
-
|
|
81
|
-
|
|
84
|
+
const n
|
|
85
|
+
: IdPath
|
|
86
|
+
= [a === null ? first : `${a}/${first}`, tail]
|
|
82
87
|
return { first: n, tail: variants(n) }
|
|
83
88
|
}
|
|
84
89
|
|
|
85
|
-
|
|
86
|
-
|
|
90
|
+
const mapDependency
|
|
91
|
+
: (d: (local: string) => string|null) => (p: IdPath) => IdPath|null
|
|
92
|
+
= d => ([external, internal]) => {
|
|
87
93
|
const id = d(external)
|
|
88
94
|
return id === null ? null : [id, internal]
|
|
89
95
|
}
|
|
90
96
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
* }} Path
|
|
97
|
-
*/
|
|
97
|
+
type Path = {
|
|
98
|
+
readonly package: string,
|
|
99
|
+
readonly items: Items,
|
|
100
|
+
readonly dir: boolean,
|
|
101
|
+
}
|
|
98
102
|
|
|
99
103
|
/**
|
|
100
|
-
* @type {
|
|
101
|
-
* (dir: boolean) =>
|
|
102
|
-
* (items: list.List<string>) =>
|
|
103
|
-
* Path|null}
|
|
104
|
+
* @type {}
|
|
104
105
|
*/
|
|
105
|
-
export const parseGlobal
|
|
106
|
+
export const parseGlobal
|
|
107
|
+
: (d: (local: string) => string|null) =>
|
|
108
|
+
(dir: boolean) =>
|
|
109
|
+
(items: list.List<string>) =>
|
|
110
|
+
Path|null
|
|
111
|
+
= dependencies =>
|
|
106
112
|
{
|
|
107
113
|
const fMap = filterMap(mapDependency(dependencies))
|
|
108
114
|
return dir => items => {
|
|
@@ -114,13 +120,15 @@ export const parseGlobal = dependencies =>
|
|
|
114
120
|
}
|
|
115
121
|
|
|
116
122
|
/**
|
|
117
|
-
* @type {
|
|
118
|
-
* (dependencies: (local: string) => string|null) =>
|
|
119
|
-
* (local: string) =>
|
|
120
|
-
* (path: string) =>
|
|
121
|
-
* Path|null }
|
|
123
|
+
* @type { }
|
|
122
124
|
*/
|
|
123
|
-
export const parse
|
|
125
|
+
export const parse
|
|
126
|
+
: (packageId: string) =>
|
|
127
|
+
(dependencies: (local: string) => string|null) =>
|
|
128
|
+
(local: string) =>
|
|
129
|
+
(path: string) =>
|
|
130
|
+
Path|null
|
|
131
|
+
= packageId => dependencies => {
|
|
124
132
|
const pg = parseGlobal(dependencies)
|
|
125
133
|
return local => path => {
|
|
126
134
|
const parsed = parseLocal(local)(path)
|
|
@@ -131,31 +139,28 @@ export const parse = packageId => dependencies => {
|
|
|
131
139
|
}
|
|
132
140
|
}
|
|
133
141
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
* }} FoundResult
|
|
139
|
-
*/
|
|
142
|
+
type FoundResult = {
|
|
143
|
+
readonly id: Module.Id
|
|
144
|
+
readonly source: string
|
|
145
|
+
}
|
|
140
146
|
|
|
141
|
-
|
|
147
|
+
type Result = FoundResult| null
|
|
142
148
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
*/
|
|
150
|
-
export const parseAndFind = packageGet => moduleId => path => {
|
|
149
|
+
export const parseAndFind
|
|
150
|
+
: (packageGet: Package.Get) =>
|
|
151
|
+
(moduleId: Module.Id) =>
|
|
152
|
+
(path: string) =>
|
|
153
|
+
Result
|
|
154
|
+
= packageGet => moduleId => path => {
|
|
151
155
|
const currentPack = packageGet(moduleId.package)
|
|
152
156
|
if (currentPack === null) { return null }
|
|
153
157
|
const p = parse(moduleId.package)(currentPack.dependency)(moduleId.path.join('/'))(path)
|
|
154
158
|
if (p === null) { return null }
|
|
155
159
|
const pack = packageGet(p.package)
|
|
156
160
|
if (pack === null) { return null }
|
|
157
|
-
|
|
158
|
-
|
|
161
|
+
const tryFile
|
|
162
|
+
: (file: string) => FoundResult | null
|
|
163
|
+
= file => {
|
|
159
164
|
const source = pack.file(file)
|
|
160
165
|
return source === null ? null : { id: { package: p.package, path: file.split('/') }, source }
|
|
161
166
|
}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
import * as _ from './module.f.
|
|
2
|
-
import * as dev from '../../dev/module.f.
|
|
1
|
+
import * as _ from './module.f.ts'
|
|
2
|
+
import * as dev from '../../dev/module.f.ts'
|
|
3
3
|
const { todo } = dev
|
|
4
|
-
import * as json from '../../json/module.f.
|
|
5
|
-
import * as f from '../../types/function/module.f.
|
|
4
|
+
import * as json from '../../json/module.f.ts'
|
|
5
|
+
import * as f from '../../types/function/module.f.ts'
|
|
6
6
|
const { identity } = f
|
|
7
|
-
import * as object from '../../types/object/module.f.
|
|
7
|
+
import * as object from '../../types/object/module.f.ts'
|
|
8
8
|
const { at } = object
|
|
9
|
-
import * as Package from '../package/module.f.
|
|
9
|
+
import * as Package from '../package/module.f.ts'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
const i
|
|
12
|
+
: <T>(o: object.Map<T>) => (s: string) => T|null
|
|
13
|
+
= o => s => at(s)(o)
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
const stringify
|
|
16
|
+
: (g: json.Unknown) => string
|
|
17
|
+
= json.stringify(identity)
|
|
16
18
|
|
|
17
19
|
export default {
|
|
18
20
|
0: () => {
|
|
@@ -70,8 +72,9 @@ export default {
|
|
|
70
72
|
},
|
|
71
73
|
},
|
|
72
74
|
9: () => {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
+
const packages
|
|
76
|
+
: object.Map<Package.Package>
|
|
77
|
+
= {
|
|
75
78
|
'': {
|
|
76
79
|
dependency: () => todo(),
|
|
77
80
|
file: i({ 'a/c': 'return "a/c"' }),
|
|
@@ -81,8 +84,9 @@ export default {
|
|
|
81
84
|
if (result !== '{"id":{"package":"","path":["a","c"]},"source":"return \\"a/c\\""}') { throw result }
|
|
82
85
|
},
|
|
83
86
|
10: () => {
|
|
84
|
-
|
|
85
|
-
|
|
87
|
+
const packages
|
|
88
|
+
: object.Map<Package.Package>
|
|
89
|
+
= {
|
|
86
90
|
'': {
|
|
87
91
|
dependency: x => {
|
|
88
92
|
const path = `node_modules/${x}`
|
|
@@ -131,8 +135,9 @@ export default {
|
|
|
131
135
|
}
|
|
132
136
|
},
|
|
133
137
|
11: () => {
|
|
134
|
-
|
|
135
|
-
|
|
138
|
+
const packages
|
|
139
|
+
: object.Map<Package.Package>
|
|
140
|
+
= {
|
|
136
141
|
'': {
|
|
137
142
|
dependency: x => {
|
|
138
143
|
const path = `node_modules/${x}`
|
|
@@ -158,8 +163,9 @@ export default {
|
|
|
158
163
|
}
|
|
159
164
|
},
|
|
160
165
|
12: () => {
|
|
161
|
-
|
|
162
|
-
|
|
166
|
+
const packages
|
|
167
|
+
: object.Map<Package.Package>
|
|
168
|
+
= {
|
|
163
169
|
'': {
|
|
164
170
|
dependency: x => {
|
|
165
171
|
const path = `node_modules/${x}`
|
|
@@ -179,4 +185,4 @@ export default {
|
|
|
179
185
|
const result = stringify(_.parseAndFind(i(packages))({ package: '', path: ['a', 'b'] })('z/a/c'))
|
|
180
186
|
if (result !== '{"id":{"package":"node_modules/z/a/c","path":["index.js"]},"source":"return \\"a/c\\""}') { throw result }
|
|
181
187
|
}
|
|
182
|
-
}
|
|
188
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as _ from './module.
|
|
2
|
-
import * as Run from './module/function/module.f.
|
|
1
|
+
import * as _ from './module.ts'
|
|
2
|
+
import * as Run from './module/function/module.f.ts'
|
|
3
3
|
|
|
4
4
|
export default {
|
|
5
5
|
ok: () => {
|
|
@@ -32,8 +32,9 @@ export default {
|
|
|
32
32
|
const d = _.compile(depSource)
|
|
33
33
|
if (d[0] !== 'ok') { throw d }
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
const req
|
|
36
|
+
: Run.Require<number>
|
|
37
|
+
= path => prior => {
|
|
37
38
|
if (path !== 'm') { throw path }
|
|
38
39
|
return d[1](req)(prior + 1)
|
|
39
40
|
}
|
|
@@ -1,50 +1,51 @@
|
|
|
1
|
-
|
|
2
|
-
import * as
|
|
3
|
-
import * as bi from '../../types/bigint/module.f.mjs'
|
|
1
|
+
import * as Operator from '../../types/function/operator/module.f.ts'
|
|
2
|
+
import * as bi from '../../types/bigint/module.f.ts'
|
|
4
3
|
const { scalar_mul } = bi
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
type Reduce = Operator.Reduce<bigint>
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
type Unary = Operator.Unary<bigint, bigint>
|
|
9
8
|
|
|
10
9
|
/**
|
|
11
10
|
* A type representing a prime field and its associated operations.
|
|
12
|
-
*
|
|
13
|
-
* @typedef {{
|
|
14
|
-
* readonly p: bigint
|
|
15
|
-
* readonly middle: bigint
|
|
16
|
-
* readonly max: bigint
|
|
17
|
-
* readonly neg: Unary
|
|
18
|
-
* readonly sub: Reduce
|
|
19
|
-
* readonly add: Reduce
|
|
20
|
-
* readonly abs: Unary
|
|
21
|
-
* readonly mul: Reduce
|
|
22
|
-
* readonly reciprocal: Unary
|
|
23
|
-
* readonly div: Reduce
|
|
24
|
-
* readonly pow: Reduce
|
|
25
|
-
* readonly pow2: Unary
|
|
26
|
-
* readonly pow3: Unary
|
|
27
|
-
* }} PrimeField
|
|
28
11
|
*/
|
|
12
|
+
export type PrimeField = {
|
|
13
|
+
readonly p: bigint
|
|
14
|
+
readonly middle: bigint
|
|
15
|
+
readonly max: bigint
|
|
16
|
+
readonly neg: Unary
|
|
17
|
+
readonly sub: Reduce
|
|
18
|
+
readonly add: Reduce
|
|
19
|
+
readonly abs: Unary
|
|
20
|
+
readonly mul: Reduce
|
|
21
|
+
readonly reciprocal: Unary
|
|
22
|
+
readonly div: Reduce
|
|
23
|
+
readonly pow: Reduce
|
|
24
|
+
readonly pow2: Unary
|
|
25
|
+
readonly pow3: Unary
|
|
26
|
+
}
|
|
29
27
|
|
|
30
28
|
/**
|
|
31
29
|
* Creates a prime field with the specified prime modulus and associated operations.
|
|
32
30
|
*
|
|
33
31
|
* @param p - A prime number to define the field.
|
|
34
32
|
* @returns The prime field object.
|
|
35
|
-
*
|
|
36
|
-
* @type {(p: bigint) => PrimeField}
|
|
37
33
|
*/
|
|
38
|
-
export const prime_field
|
|
39
|
-
|
|
40
|
-
|
|
34
|
+
export const prime_field
|
|
35
|
+
: (p: bigint) => PrimeField
|
|
36
|
+
= p => {
|
|
37
|
+
const sub
|
|
38
|
+
: Reduce
|
|
39
|
+
= a => b => {
|
|
41
40
|
const r = a - b
|
|
42
41
|
return r < 0 ? r + p : r
|
|
43
42
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const reciprocal
|
|
43
|
+
const mul
|
|
44
|
+
: Reduce
|
|
45
|
+
= a => b => a * b % p
|
|
46
|
+
const reciprocal
|
|
47
|
+
: Unary
|
|
48
|
+
= a => {
|
|
48
49
|
if (a === 0n) { throw '1/0' }
|
|
49
50
|
let a1 = a
|
|
50
51
|
let a0 = p
|
|
@@ -62,10 +63,12 @@ export const prime_field = p => {
|
|
|
62
63
|
return f1
|
|
63
64
|
}
|
|
64
65
|
const middle = p >> 1n
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const pow
|
|
66
|
+
const pow2
|
|
67
|
+
: Unary
|
|
68
|
+
= a => mul(a)(a)
|
|
69
|
+
const pow
|
|
70
|
+
: Reduce
|
|
71
|
+
= scalar_mul({ 0: 1n, add: mul })
|
|
69
72
|
return {
|
|
70
73
|
p,
|
|
71
74
|
middle,
|
|
@@ -98,10 +101,10 @@ export const prime_field = p => {
|
|
|
98
101
|
* const root = sqrt(field)(4n);
|
|
99
102
|
* if (root !== 2n) { throw root }
|
|
100
103
|
* ```
|
|
101
|
-
*
|
|
102
|
-
* @type {(f: PrimeField) => (a: bigint) => bigint|null}
|
|
103
104
|
*/
|
|
104
|
-
export const sqrt
|
|
105
|
+
export const sqrt
|
|
106
|
+
: (f: PrimeField) => (a: bigint) => bigint|null
|
|
107
|
+
= ({p, mul, pow }) => {
|
|
105
108
|
if ((p & 3n) !== 3n) { throw 'sqrt' }
|
|
106
109
|
const sqrt_k = (p + 1n) >> 2n
|
|
107
110
|
return a => {
|