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,115 +1,89 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import * as result from '../../types/result/module.f.mjs'
|
|
4
|
-
import * as list from '../../types/list/module.f.mjs'
|
|
1
|
+
import * as result from '../../types/result/module.f.ts'
|
|
2
|
+
import * as list from '../../types/list/module.f.ts'
|
|
5
3
|
const { fold, first, drop, toArray, map: listMap, length } = list
|
|
6
|
-
import * as Operator from '../../types/function/operator/module.f.
|
|
7
|
-
import * as tokenizerT from '../tokenizer/module.f.
|
|
8
|
-
import * as map from '../../types/map/module.f.
|
|
4
|
+
import * as Operator from '../../types/function/operator/module.f.ts'
|
|
5
|
+
import * as tokenizerT from '../tokenizer/module.f.ts'
|
|
6
|
+
import * as map from '../../types/map/module.f.ts'
|
|
9
7
|
const { setReplace, at } = map
|
|
10
|
-
import * as o from '../../types/object/module.f.
|
|
8
|
+
import * as o from '../../types/object/module.f.ts'
|
|
11
9
|
const { fromMap } = o
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
* readonly module: ModuleState
|
|
90
|
-
* readonly valueState: '' | '[' | '[v' | '[,' | '{' | '{k' | '{:' | '{v' | '{,'
|
|
91
|
-
* readonly top: DjsStackElement | null
|
|
92
|
-
* readonly stack: DjsStack
|
|
93
|
-
* }} ParseValueState
|
|
94
|
-
*/
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* @typedef {{
|
|
98
|
-
* readonly state: 'result'
|
|
99
|
-
* readonly module: ModuleState
|
|
100
|
-
* }} ResultState
|
|
101
|
-
*/
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* @typedef {{
|
|
105
|
-
* readonly state: 'error'
|
|
106
|
-
* readonly message: string
|
|
107
|
-
* }} ErrorState
|
|
108
|
-
*/
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
/** @type {(token: tokenizerT.DjsToken) => (state: InitialState) => ParserState}} */
|
|
112
|
-
const parseInitialOp = token => state => {
|
|
11
|
+
export type DjsModule = [readonly string[], readonly DjsConst[]]
|
|
12
|
+
|
|
13
|
+
export type DjsConst = boolean|string|number|null|bigint|undefined|DjsModuleRef|DjsArray|DjsObject
|
|
14
|
+
|
|
15
|
+
type DjsModuleRef = ['aref' | 'cref', number]
|
|
16
|
+
|
|
17
|
+
type DjsArray = ['array', readonly DjsConst[]]
|
|
18
|
+
|
|
19
|
+
export type DjsObject = {
|
|
20
|
+
readonly [k in string]: DjsConst
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
type DjsStackArray = ['array', list.List<DjsConst>]
|
|
24
|
+
|
|
25
|
+
type DjsStackObject = ['object', map.Map<DjsConst>, string]
|
|
26
|
+
|
|
27
|
+
type DjsStackElement = |
|
|
28
|
+
DjsStackArray |
|
|
29
|
+
DjsStackObject
|
|
30
|
+
|
|
31
|
+
type DjsStack = list.List<DjsStackElement>
|
|
32
|
+
|
|
33
|
+
type ParserState = InitialState | NewLineRequiredState | ImportState | ConstState | ExportState | ParseValueState | ResultState | ErrorState
|
|
34
|
+
|
|
35
|
+
type ModuleState = {
|
|
36
|
+
readonly refs: map.Map<DjsModuleRef>
|
|
37
|
+
readonly modules: list.List<string>
|
|
38
|
+
readonly consts: list.List<DjsConst>
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
type InitialState = {
|
|
42
|
+
readonly state: ''
|
|
43
|
+
readonly module: ModuleState
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
type NewLineRequiredState = {
|
|
47
|
+
readonly state: 'nl'
|
|
48
|
+
readonly module: ModuleState
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
type ImportState = {
|
|
52
|
+
readonly state: 'import' | 'import+name' | 'import+from'
|
|
53
|
+
readonly module: ModuleState
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
type ConstState = {
|
|
57
|
+
readonly state: 'const' | 'const+name'
|
|
58
|
+
readonly module: ModuleState
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
type ExportState = {
|
|
62
|
+
readonly state: 'export'
|
|
63
|
+
readonly module: ModuleState
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
type ParseValueState = {
|
|
67
|
+
readonly state: 'constValue' | 'exportValue'
|
|
68
|
+
readonly module: ModuleState
|
|
69
|
+
readonly valueState: '' | '[' | '[v' | '[,' | '{' | '{k' | '{:' | '{v' | '{,'
|
|
70
|
+
readonly top: DjsStackElement | null
|
|
71
|
+
readonly stack: DjsStack
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
type ResultState = {
|
|
75
|
+
readonly state: 'result'
|
|
76
|
+
readonly module: ModuleState
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
type ErrorState = {
|
|
80
|
+
readonly state: 'error'
|
|
81
|
+
readonly message: string
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const parseInitialOp
|
|
85
|
+
: (token: tokenizerT.DjsToken) => (state: InitialState) => ParserState
|
|
86
|
+
= token => state => {
|
|
113
87
|
switch (token.kind)
|
|
114
88
|
{
|
|
115
89
|
case 'ws':
|
|
@@ -127,10 +101,11 @@ const parseInitialOp = token => state => {
|
|
|
127
101
|
return { state: 'error', message: 'unexpected token' }
|
|
128
102
|
}
|
|
129
103
|
|
|
130
|
-
|
|
131
|
-
|
|
104
|
+
const parseNewLineRequiredOp
|
|
105
|
+
: (token: tokenizerT.DjsToken) => (state: NewLineRequiredState) => ParserState
|
|
106
|
+
= token => state => {
|
|
132
107
|
switch (token.kind) {
|
|
133
|
-
case 'ws':
|
|
108
|
+
case 'ws':
|
|
134
109
|
case '//':
|
|
135
110
|
case '/*': return state
|
|
136
111
|
case 'nl': return { ... state, state: '' }
|
|
@@ -138,8 +113,9 @@ const parseNewLineRequiredOp = token => state => {
|
|
|
138
113
|
}
|
|
139
114
|
}
|
|
140
115
|
|
|
141
|
-
|
|
142
|
-
|
|
116
|
+
const parseExportOp
|
|
117
|
+
: (token: tokenizerT.DjsToken) => (state: ExportState) => ParserState
|
|
118
|
+
= token => state => {
|
|
143
119
|
switch (token.kind) {
|
|
144
120
|
case 'ws':
|
|
145
121
|
case 'nl':
|
|
@@ -152,8 +128,9 @@ const parseExportOp = token => state => {
|
|
|
152
128
|
return { state: 'error', message: 'unexpected token' }
|
|
153
129
|
}
|
|
154
130
|
|
|
155
|
-
|
|
156
|
-
|
|
131
|
+
const parseResultOp
|
|
132
|
+
: (token: tokenizerT.DjsToken) => (state: ResultState) => ParserState
|
|
133
|
+
= token => state => {
|
|
157
134
|
switch (token.kind) {
|
|
158
135
|
case 'ws':
|
|
159
136
|
case 'nl':
|
|
@@ -163,8 +140,9 @@ const parseResultOp = token => state => {
|
|
|
163
140
|
}
|
|
164
141
|
}
|
|
165
142
|
|
|
166
|
-
|
|
167
|
-
|
|
143
|
+
const parseConstOp
|
|
144
|
+
: (token: tokenizerT.DjsToken) => (state: ConstState) => ParserState
|
|
145
|
+
= token => state => {
|
|
168
146
|
switch (token.kind) {
|
|
169
147
|
case 'ws':
|
|
170
148
|
case 'nl':
|
|
@@ -173,8 +151,9 @@ const parseConstOp = token => state => {
|
|
|
173
151
|
case 'id': {
|
|
174
152
|
if (map.at(token.value)(state.module.refs) !== null)
|
|
175
153
|
return { state: 'error', message: 'duplicate id' }
|
|
176
|
-
|
|
177
|
-
|
|
154
|
+
let cref
|
|
155
|
+
: DjsModuleRef
|
|
156
|
+
= ['cref', length(state.module.consts)]
|
|
178
157
|
let refs = map.setReplace(token.value)(cref)(state.module.refs)
|
|
179
158
|
return { ... state, state: 'const+name', module: { ...state.module, refs: refs } }
|
|
180
159
|
}
|
|
@@ -182,8 +161,9 @@ const parseConstOp = token => state => {
|
|
|
182
161
|
}
|
|
183
162
|
}
|
|
184
163
|
|
|
185
|
-
|
|
186
|
-
|
|
164
|
+
const parseConstNameOp
|
|
165
|
+
: (token: tokenizerT.DjsToken) => (state: ConstState) => ParserState
|
|
166
|
+
= token => state => {
|
|
187
167
|
switch (token.kind) {
|
|
188
168
|
case 'ws':
|
|
189
169
|
case 'nl':
|
|
@@ -194,18 +174,21 @@ const parseConstNameOp = token => state => {
|
|
|
194
174
|
}
|
|
195
175
|
}
|
|
196
176
|
|
|
197
|
-
|
|
198
|
-
|
|
177
|
+
const parseImportOp
|
|
178
|
+
: (token: tokenizerT.DjsToken) => (state: ImportState) => ParserState
|
|
179
|
+
= token => state => {
|
|
199
180
|
switch (token.kind) {
|
|
200
181
|
case 'ws':
|
|
201
182
|
case 'nl':
|
|
202
183
|
case '//':
|
|
203
184
|
case '/*': return state
|
|
204
185
|
case 'id': {
|
|
205
|
-
if (map.at(token.value)(state.module.refs) !== null)
|
|
186
|
+
if (map.at(token.value)(state.module.refs) !== null) {
|
|
206
187
|
return { state: 'error', message: 'duplicate id' }
|
|
207
|
-
|
|
208
|
-
let aref
|
|
188
|
+
}
|
|
189
|
+
let aref
|
|
190
|
+
: DjsModuleRef
|
|
191
|
+
= ['aref', length(state.module.modules)]
|
|
209
192
|
let refs = map.setReplace(token.value)(aref)(state.module.refs)
|
|
210
193
|
return { ... state, state: 'import+name', module: { ...state.module, refs: refs } }
|
|
211
194
|
}
|
|
@@ -213,8 +196,9 @@ const parseImportOp = token => state => {
|
|
|
213
196
|
}
|
|
214
197
|
}
|
|
215
198
|
|
|
216
|
-
|
|
217
|
-
|
|
199
|
+
const parseImportNameOp
|
|
200
|
+
: (token: tokenizerT.DjsToken) => (state: ImportState) => ParserState
|
|
201
|
+
= token => state => {
|
|
218
202
|
switch (token.kind) {
|
|
219
203
|
case 'ws':
|
|
220
204
|
case 'nl':
|
|
@@ -227,8 +211,9 @@ const parseImportNameOp = token => state => {
|
|
|
227
211
|
return { state: 'error', message: 'unexpected token' }
|
|
228
212
|
}
|
|
229
213
|
|
|
230
|
-
|
|
231
|
-
|
|
214
|
+
const parseImportFromOp
|
|
215
|
+
: (token: tokenizerT.DjsToken) => (state: ImportState) => ParserState
|
|
216
|
+
= token => state => {
|
|
232
217
|
switch (token.kind) {
|
|
233
218
|
case 'ws':
|
|
234
219
|
case 'nl':
|
|
@@ -242,23 +227,28 @@ const parseImportFromOp = token => state => {
|
|
|
242
227
|
}
|
|
243
228
|
}
|
|
244
229
|
|
|
245
|
-
|
|
246
|
-
|
|
230
|
+
const addKeyToObject
|
|
231
|
+
: (obj: DjsStackObject) => (key: string) => DjsStackObject
|
|
232
|
+
= obj => key => ([ 'object', obj[1], key])
|
|
247
233
|
|
|
248
|
-
|
|
249
|
-
|
|
234
|
+
const addValueToObject
|
|
235
|
+
: (obj: DjsStackObject) => (value: DjsConst) => DjsStackObject
|
|
236
|
+
= obj => value => ([ 'object', setReplace(obj[2])(value)(obj[1]), '' ])
|
|
250
237
|
|
|
251
|
-
|
|
252
|
-
|
|
238
|
+
const addToArray
|
|
239
|
+
: (array: DjsStackArray) => (value: DjsConst) => DjsStackArray
|
|
240
|
+
= array => value => ([ 'array', list.concat(array[1])([value]) ])
|
|
253
241
|
|
|
254
|
-
|
|
255
|
-
|
|
242
|
+
const pushKey
|
|
243
|
+
: (state: ParseValueState) => (key: string) => ParserState
|
|
244
|
+
= state => key => {
|
|
256
245
|
if (state.top?.[0] === 'object') { return { ... state, valueState: '{k', top: addKeyToObject(state.top)(key), stack: state.stack } }
|
|
257
246
|
return { state: 'error', message: 'error' }
|
|
258
247
|
}
|
|
259
248
|
|
|
260
|
-
|
|
261
|
-
|
|
249
|
+
const pushValue
|
|
250
|
+
: (state: ParseValueState) => (value: DjsConst) => ParserState
|
|
251
|
+
= state => value => {
|
|
262
252
|
if (state.top === null) {
|
|
263
253
|
let consts = list.concat(state.module.consts)([value])
|
|
264
254
|
switch(state.state)
|
|
@@ -271,50 +261,59 @@ const pushValue = state => value => {
|
|
|
271
261
|
return { ... state, valueState: '{v', top: addValueToObject(state.top)(value), stack: state.stack }
|
|
272
262
|
}
|
|
273
263
|
|
|
274
|
-
|
|
275
|
-
|
|
264
|
+
const pushRef
|
|
265
|
+
: (state: ParseValueState) => (name: string) => ParserState
|
|
266
|
+
= state => name => {
|
|
276
267
|
const ref = at(name)(state.module.refs)
|
|
277
268
|
if (ref === null)
|
|
278
269
|
return { state: 'error', message: 'const not found' }
|
|
279
270
|
return pushValue(state)(ref)
|
|
280
271
|
}
|
|
281
272
|
|
|
282
|
-
|
|
283
|
-
|
|
273
|
+
const startArray
|
|
274
|
+
: (state: ParseValueState) => ParserState
|
|
275
|
+
= state => {
|
|
284
276
|
const newStack = state.top === null ? null : { first: state.top, tail: state.stack }
|
|
285
277
|
return { ... state, valueState: '[', top: ['array', null ], stack: newStack }
|
|
286
278
|
}
|
|
287
279
|
|
|
288
|
-
|
|
289
|
-
|
|
280
|
+
const endArray
|
|
281
|
+
: (state: ParseValueState) => ParserState
|
|
282
|
+
= state => {
|
|
290
283
|
const top = state.top;
|
|
291
|
-
|
|
292
|
-
|
|
284
|
+
const newState
|
|
285
|
+
: ParseValueState
|
|
286
|
+
= { ... state, valueState: '', top: first(null)(state.stack), stack: drop(1)(state.stack) }
|
|
293
287
|
if (top !== null && top[0] === 'array')
|
|
294
288
|
{
|
|
295
|
-
|
|
296
|
-
|
|
289
|
+
const array
|
|
290
|
+
: DjsArray
|
|
291
|
+
= ['array', toArray(top[1])];
|
|
297
292
|
return pushValue(newState)(array)
|
|
298
293
|
}
|
|
299
294
|
return pushValue(newState)(null)
|
|
300
295
|
}
|
|
301
296
|
|
|
302
|
-
|
|
303
|
-
|
|
297
|
+
const startObject
|
|
298
|
+
: (state: ParseValueState) => ParserState
|
|
299
|
+
= state => {
|
|
304
300
|
const newStack = state.top === null ? null : { first: state.top, tail: state.stack }
|
|
305
301
|
return { ... state, valueState: '{', top: ['object', null, ''], stack: newStack }
|
|
306
302
|
}
|
|
307
303
|
|
|
308
|
-
|
|
309
|
-
|
|
304
|
+
const endObject
|
|
305
|
+
: (state: ParseValueState) => ParserState
|
|
306
|
+
= state => {
|
|
310
307
|
const obj = state?.top !== null && state?.top[0] === 'object' ? fromMap(state.top[1]) : null;
|
|
311
|
-
|
|
312
|
-
|
|
308
|
+
const newState
|
|
309
|
+
: ParseValueState
|
|
310
|
+
= { ... state, valueState: '', top: first(null)(state.stack), stack: drop(1)(state.stack) }
|
|
313
311
|
return pushValue(newState)(obj)
|
|
314
312
|
}
|
|
315
313
|
|
|
316
|
-
|
|
317
|
-
|
|
314
|
+
const tokenToValue
|
|
315
|
+
: (token: tokenizerT.DjsToken) => DjsConst
|
|
316
|
+
= token => {
|
|
318
317
|
switch (token.kind) {
|
|
319
318
|
case 'null': return null
|
|
320
319
|
case 'false': return false
|
|
@@ -327,8 +326,9 @@ const tokenToValue = token => {
|
|
|
327
326
|
}
|
|
328
327
|
}
|
|
329
328
|
|
|
330
|
-
|
|
331
|
-
|
|
329
|
+
const isValueToken
|
|
330
|
+
: (token: tokenizerT.DjsToken) => boolean
|
|
331
|
+
= token => {
|
|
332
332
|
switch (token.kind) {
|
|
333
333
|
case 'null':
|
|
334
334
|
case 'false':
|
|
@@ -341,8 +341,9 @@ const isValueToken = token => {
|
|
|
341
341
|
}
|
|
342
342
|
}
|
|
343
343
|
|
|
344
|
-
|
|
345
|
-
|
|
344
|
+
const parseValueOp
|
|
345
|
+
: (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
|
|
346
|
+
= token => state => {
|
|
346
347
|
if (isValueToken(token)) { return pushValue(state)(tokenToValue(token)) }
|
|
347
348
|
switch (token.kind)
|
|
348
349
|
{
|
|
@@ -357,8 +358,9 @@ const parseValueOp = token => state => {
|
|
|
357
358
|
}
|
|
358
359
|
}
|
|
359
360
|
|
|
360
|
-
|
|
361
|
-
|
|
361
|
+
const parseArrayStartOp
|
|
362
|
+
: (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
|
|
363
|
+
= token => state => {
|
|
362
364
|
if (isValueToken(token)) { return pushValue(state)(tokenToValue(token)) }
|
|
363
365
|
switch (token.kind)
|
|
364
366
|
{
|
|
@@ -374,8 +376,9 @@ const parseArrayStartOp = token => state => {
|
|
|
374
376
|
}
|
|
375
377
|
}
|
|
376
378
|
|
|
377
|
-
|
|
378
|
-
|
|
379
|
+
const parseArrayValueOp
|
|
380
|
+
: (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
|
|
381
|
+
= token => state => {
|
|
379
382
|
switch (token.kind)
|
|
380
383
|
{
|
|
381
384
|
case ']': return endArray(state)
|
|
@@ -388,11 +391,12 @@ const parseArrayValueOp = token => state => {
|
|
|
388
391
|
}
|
|
389
392
|
}
|
|
390
393
|
|
|
391
|
-
|
|
392
|
-
|
|
394
|
+
const parseObjectStartOp
|
|
395
|
+
: (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
|
|
396
|
+
= token => state => {
|
|
393
397
|
switch (token.kind)
|
|
394
398
|
{
|
|
395
|
-
case 'string': return pushKey(state)(token.value)
|
|
399
|
+
case 'string': return pushKey(state)(token.value)
|
|
396
400
|
case '}': return endObject(state)
|
|
397
401
|
case 'ws':
|
|
398
402
|
case 'nl':
|
|
@@ -402,8 +406,9 @@ const parseObjectStartOp = token => state => {
|
|
|
402
406
|
}
|
|
403
407
|
}
|
|
404
408
|
|
|
405
|
-
|
|
406
|
-
|
|
409
|
+
const parseObjectKeyOp
|
|
410
|
+
: (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
|
|
411
|
+
= token => state => {
|
|
407
412
|
switch (token.kind)
|
|
408
413
|
{
|
|
409
414
|
case ':': return { ... state, valueState: '{:', top: state.top, stack: state.stack }
|
|
@@ -415,8 +420,9 @@ const parseObjectKeyOp = token => state => {
|
|
|
415
420
|
}
|
|
416
421
|
}
|
|
417
422
|
|
|
418
|
-
|
|
419
|
-
|
|
423
|
+
const parseObjectColonOp
|
|
424
|
+
: (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
|
|
425
|
+
= token => state => {
|
|
420
426
|
if (isValueToken(token)) { return pushValue(state)(tokenToValue(token)) }
|
|
421
427
|
switch (token.kind)
|
|
422
428
|
{
|
|
@@ -431,8 +437,9 @@ const parseObjectColonOp = token => state => {
|
|
|
431
437
|
}
|
|
432
438
|
}
|
|
433
439
|
|
|
434
|
-
|
|
435
|
-
|
|
440
|
+
const parseObjectNextOp
|
|
441
|
+
: (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
|
|
442
|
+
= token => state => {
|
|
436
443
|
switch (token.kind)
|
|
437
444
|
{
|
|
438
445
|
case '}': return endObject(state)
|
|
@@ -445,8 +452,9 @@ const parseObjectNextOp = token => state => {
|
|
|
445
452
|
}
|
|
446
453
|
}
|
|
447
454
|
|
|
448
|
-
|
|
449
|
-
|
|
455
|
+
const parseObjectCommaOp
|
|
456
|
+
: (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
|
|
457
|
+
= token => state => {
|
|
450
458
|
switch (token.kind)
|
|
451
459
|
{
|
|
452
460
|
case 'string': return pushKey(state)(token.value)
|
|
@@ -458,8 +466,9 @@ const parseObjectCommaOp = token => state => {
|
|
|
458
466
|
}
|
|
459
467
|
}
|
|
460
468
|
|
|
461
|
-
|
|
462
|
-
|
|
469
|
+
const foldOp
|
|
470
|
+
: Operator.Fold<tokenizerT.DjsToken, ParserState>
|
|
471
|
+
= token => state => {
|
|
463
472
|
switch (state.state) {
|
|
464
473
|
case '': return parseInitialOp(token)(state)
|
|
465
474
|
case 'nl': return parseNewLineRequiredOp(token)(state)
|
|
@@ -490,11 +499,10 @@ const foldOp = token => state => {
|
|
|
490
499
|
}
|
|
491
500
|
}
|
|
492
501
|
|
|
493
|
-
|
|
494
|
-
export const parse = tokenList => {
|
|
502
|
+
export const parse = (tokenList: list.List<tokenizerT.DjsToken>): result.Result<DjsModule, string> => {
|
|
495
503
|
const state = fold(foldOp)({ state: '', module: { refs: null, modules: null, consts: null }})(tokenList)
|
|
496
504
|
switch (state.state) {
|
|
497
|
-
case 'result': return result.ok([ toArray(state.module.modules), toArray(state.module.consts) ])
|
|
505
|
+
case 'result': return result.ok<DjsModule>([ toArray(state.module.modules), toArray(state.module.consts) ])
|
|
498
506
|
case 'error': return result.error(state.message)
|
|
499
507
|
default: return result.error('unexpected end')
|
|
500
508
|
}
|