functionalscript 0.3.3 → 0.3.5
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/com/cpp/module.f.d.ts +10 -0
- package/com/cpp/module.f.js +107 -0
- package/com/cpp/test.f.d.ts +2 -0
- package/com/cpp/{test.f.ts → test.f.js} +9 -11
- package/com/cpp/testlib.f.d.ts +2 -0
- package/com/cpp/testlib.f.js +5 -0
- package/com/cs/module.f.d.ts +12 -0
- package/com/cs/module.f.js +80 -0
- package/com/cs/test.f.d.ts +2 -0
- package/com/cs/{test.f.ts → test.f.js} +9 -11
- package/com/cs/testlib.f.d.ts +2 -0
- package/com/cs/testlib.f.js +5 -0
- package/com/rust/module.f.d.ts +15 -0
- package/com/rust/module.f.js +169 -0
- package/com/rust/test.f.d.ts +2 -0
- package/com/rust/{test.f.ts → test.f.js} +7 -7
- package/com/rust/testlib.f.d.ts +2 -0
- package/com/rust/testlib.f.js +5 -0
- package/com/test/build.f.d.ts +20 -0
- package/com/test/build.f.js +58 -0
- package/com/types/module.f.d.ts +28 -0
- package/com/types/module.f.js +8 -0
- package/com/types/testlib.f.d.ts +44 -0
- package/com/types/{testlib.f.ts → testlib.f.js} +2 -3
- package/commonjs/build/module.f.d.ts +6 -0
- package/commonjs/build/module.f.js +69 -0
- package/commonjs/build/test.f.d.ts +2 -0
- package/commonjs/build/test.f.js +96 -0
- package/commonjs/module/function/{module.f.ts → module.f.d.ts} +5 -10
- package/commonjs/module/function/module.f.js +4 -0
- package/commonjs/module/module.f.d.ts +18 -0
- package/commonjs/module/module.f.js +12 -0
- package/commonjs/module.f.d.ts +6 -0
- package/commonjs/module.f.js +1 -0
- package/commonjs/package/dependencies/module.f.d.ts +7 -0
- package/commonjs/package/dependencies/module.f.js +13 -0
- package/commonjs/package/dependencies/test.f.d.ts +2 -0
- package/commonjs/package/dependencies/test.f.js +15 -0
- package/commonjs/package/module.f.d.ts +17 -0
- package/commonjs/package/module.f.js +18 -0
- package/commonjs/package/test.f.d.ts +2 -0
- package/commonjs/package/test.f.js +27 -0
- package/commonjs/path/module.f.d.ts +24 -0
- package/commonjs/path/module.f.js +114 -0
- package/commonjs/path/test.f.d.ts +25 -0
- package/commonjs/path/{test.f.ts → test.f.js} +123 -89
- package/crypto/prime_field/module.f.d.ts +43 -0
- package/crypto/prime_field/module.f.js +78 -0
- package/crypto/prime_field/test.f.d.ts +13 -0
- package/crypto/prime_field/test.f.js +149 -0
- package/crypto/secp/module.f.d.ts +68 -0
- package/crypto/secp/module.f.js +127 -0
- package/crypto/secp/test.f.d.ts +5 -0
- package/crypto/secp/test.f.js +72 -0
- package/crypto/sha2/module.f.d.ts +13 -0
- package/crypto/sha2/module.f.js +145 -0
- package/crypto/sha2/test.f.d.ts +9 -0
- package/crypto/sha2/test.f.js +82 -0
- package/dev/module.f.d.ts +1 -0
- package/dev/module.f.js +1 -0
- package/dev/test/module.f.d.ts +20 -0
- package/dev/test/module.f.js +75 -0
- package/dev/test.f.d.ts +9 -0
- package/dev/{test.f.ts → test.f.js} +22 -24
- package/djs/module.f.d.ts +17 -0
- package/djs/module.f.js +63 -0
- package/djs/parser/module.f.d.ts +12 -0
- package/djs/parser/module.f.js +333 -0
- package/djs/parser/test.f.d.ts +12 -0
- package/djs/parser/test.f.js +717 -0
- package/djs/serializer/module.f.d.ts +9 -0
- package/djs/serializer/module.f.js +81 -0
- package/djs/test/input.f.d.ts +2 -0
- package/djs/test/input.f.js +4 -0
- package/djs/test/m.f.d.ts +2 -0
- package/djs/test/m.f.js +1 -0
- package/djs/test.f.d.ts +12 -0
- package/djs/test.f.js +84 -0
- package/djs/tokenizer/module.f.d.ts +8 -0
- package/djs/tokenizer/module.f.js +60 -0
- package/djs/tokenizer/test.f.d.ts +7 -0
- package/djs/tokenizer/test.f.js +529 -0
- package/fsc/module.f.d.ts +5 -0
- package/fsc/module.f.js +75 -0
- package/fsc/test.f.d.ts +4 -0
- package/fsc/test.f.js +19 -0
- package/fsm/module.f.d.ts +13 -0
- package/fsm/module.f.js +59 -0
- package/fsm/test.f.d.ts +5 -0
- package/fsm/test.f.js +137 -0
- package/html/module.f.d.ts +13 -0
- package/html/module.f.js +58 -0
- package/html/test.f.d.ts +9 -0
- package/html/test.f.js +42 -0
- package/issues/test.f.d.ts +16 -0
- package/issues/test.f.js +70 -0
- package/js/tokenizer/module.f.d.ts +86 -0
- package/js/tokenizer/module.f.js +503 -0
- package/js/tokenizer/test.f.d.ts +9 -0
- package/js/tokenizer/test.f.js +905 -0
- package/json/module.f.d.ts +20 -0
- package/json/module.f.js +68 -0
- package/json/parser/module.f.d.ts +5 -0
- package/json/parser/module.f.js +155 -0
- package/json/parser/test.f.d.ts +5 -0
- package/json/parser/test.f.js +328 -0
- package/json/serializer/module.f.d.ts +7 -0
- package/json/serializer/module.f.js +21 -0
- package/json/serializer/test.f.d.ts +8 -0
- package/json/serializer/test.f.js +87 -0
- package/json/test.f.d.ts +8 -0
- package/json/test.f.js +61 -0
- package/json/tokenizer/module.f.d.ts +8 -0
- package/json/tokenizer/module.f.js +52 -0
- package/json/tokenizer/test.f.d.ts +6 -0
- package/json/tokenizer/test.f.js +419 -0
- package/nanvm-lib/tests/test.f.d.ts +27 -0
- package/nanvm-lib/tests/test.f.js +84 -0
- package/nodejs/version/module.f.d.ts +11 -0
- package/nodejs/version/module.f.js +16 -0
- package/nodejs/version/test.f.d.ts +2 -0
- package/nodejs/version/{test.f.ts → test.f.js} +13 -22
- package/package.json +9 -5
- package/text/ascii/module.f.d.ts +129 -0
- package/text/ascii/module.f.js +148 -0
- package/text/ascii/test.f.d.ts +4 -0
- package/text/ascii/test.f.js +14 -0
- package/text/module.f.d.ts +8 -0
- package/text/module.f.js +10 -0
- package/text/sgr/module.f.d.ts +8 -0
- package/text/sgr/module.f.js +8 -0
- package/text/test.f.d.ts +2 -0
- package/text/test.f.js +18 -0
- package/text/utf16/module.f.d.ts +9 -0
- package/text/utf16/module.f.js +66 -0
- package/text/utf16/test.f.d.ts +6 -0
- package/text/utf16/test.f.js +144 -0
- package/text/utf8/module.f.d.ts +6 -0
- package/text/utf8/module.f.js +112 -0
- package/text/utf8/test.f.d.ts +6 -0
- package/text/utf8/test.f.js +175 -0
- package/types/array/module.f.d.ts +21 -0
- package/types/array/module.f.js +23 -0
- package/types/array/test.f.d.ts +10 -0
- package/types/array/test.f.js +116 -0
- package/types/bigfloat/module.f.d.ts +3 -0
- package/types/bigfloat/module.f.js +66 -0
- package/types/bigfloat/test.f.d.ts +6 -0
- package/types/bigfloat/test.f.js +349 -0
- package/types/bigint/module.f.d.ts +54 -0
- package/types/bigint/{module.f.ts → module.f.js} +42 -65
- package/types/bigint/test.f.d.ts +16 -0
- package/types/bigint/test.f.js +199 -0
- package/types/bit_vec/module.f.d.ts +134 -0
- package/types/bit_vec/{module.f.ts → module.f.js} +47 -65
- package/types/bit_vec/test.f.d.ts +22 -0
- package/types/bit_vec/test.f.js +210 -0
- package/types/btree/find/module.f.d.ts +20 -0
- package/types/btree/find/module.f.js +84 -0
- package/types/btree/find/test.f.d.ts +2 -0
- package/types/btree/find/test.f.js +152 -0
- package/types/btree/module.f.d.ts +4 -0
- package/types/btree/module.f.js +31 -0
- package/types/btree/remove/module.f.d.ts +4 -0
- package/types/btree/remove/module.f.js +174 -0
- package/types/btree/remove/test.f.d.ts +5 -0
- package/types/btree/remove/test.f.js +634 -0
- package/types/btree/set/module.f.d.ts +3 -0
- package/types/btree/set/module.f.js +103 -0
- package/types/btree/set/test.f.d.ts +2 -0
- package/types/btree/set/test.f.js +360 -0
- package/types/btree/test.f.d.ts +8 -0
- package/types/btree/test.f.js +75 -0
- package/types/btree/types/module.f.d.ts +11 -0
- package/types/btree/types/module.f.js +1 -0
- package/types/byte_set/module.f.d.ts +16 -0
- package/types/byte_set/module.f.js +28 -0
- package/types/byte_set/test.f.d.ts +12 -0
- package/types/byte_set/test.f.js +122 -0
- package/types/function/compare/module.f.d.ts +10 -0
- package/types/function/compare/module.f.js +7 -0
- package/types/function/compare/test.f.d.ts +2 -0
- package/types/function/compare/test.f.js +8 -0
- package/types/function/module.f.d.ts +28 -0
- package/types/function/module.f.js +19 -0
- package/types/function/operator/module.f.d.ts +20 -0
- package/types/function/operator/module.f.js +18 -0
- package/types/function/test.f.d.ts +2 -0
- package/types/function/test.f.js +12 -0
- package/types/list/module.f.d.ts +50 -0
- package/types/list/module.f.js +171 -0
- package/types/list/test.f.d.ts +22 -0
- package/types/list/test.f.js +395 -0
- package/types/map/module.f.d.ts +14 -0
- package/types/map/module.f.js +31 -0
- package/types/map/test.f.d.ts +5 -0
- package/types/map/test.f.js +114 -0
- package/types/nibble_set/module.f.d.ts +10 -0
- package/types/nibble_set/module.f.js +9 -0
- package/types/nibble_set/test.f.d.ts +12 -0
- package/types/nibble_set/test.f.js +90 -0
- package/types/nullable/module.f.d.ts +3 -0
- package/types/nullable/module.f.js +2 -0
- package/types/nullable/test.f.d.ts +2 -0
- package/types/nullable/test.f.js +12 -0
- package/types/number/module.f.d.ts +6 -0
- package/types/number/module.f.js +8 -0
- package/types/number/test.f.d.ts +11 -0
- package/types/number/test.f.js +124 -0
- package/types/object/module.f.d.ts +10 -0
- package/types/object/module.f.js +12 -0
- package/types/object/test.f.d.ts +5 -0
- package/types/object/test.f.js +17 -0
- package/types/range/module.f.d.ts +3 -0
- package/types/range/module.f.js +2 -0
- package/types/range/test.f.d.ts +2 -0
- package/types/range/test.f.js +18 -0
- package/types/range_map/module.f.d.ts +14 -0
- package/types/range_map/module.f.js +51 -0
- package/types/range_map/test.f.d.ts +6 -0
- package/types/range_map/test.f.js +176 -0
- package/types/result/module.f.d.ts +7 -0
- package/types/result/module.f.js +8 -0
- package/types/sorted_list/module.f.d.ts +16 -0
- package/types/sorted_list/module.f.js +56 -0
- package/types/sorted_list/test.f.d.ts +5 -0
- package/types/sorted_list/test.f.js +64 -0
- package/types/sorted_set/module.f.d.ts +7 -0
- package/types/sorted_set/module.f.js +14 -0
- package/types/sorted_set/test.f.d.ts +6 -0
- package/types/sorted_set/test.f.js +78 -0
- package/types/string/module.f.d.ts +6 -0
- package/types/string/module.f.js +11 -0
- package/types/string/test.f.d.ts +15 -0
- package/types/string/test.f.js +58 -0
- package/types/string_set/module.f.d.ts +9 -0
- package/types/string_set/module.f.js +22 -0
- package/types/string_set/test.f.d.ts +5 -0
- package/types/string_set/test.f.js +65 -0
- package/.github/FUNDING.yml +0 -12
- package/.github/dependabot.yml +0 -11
- package/.github/workflows/ci.yml +0 -88
- package/.github/workflows/npm-publish.yml +0 -53
- package/CHANGELOG.md +0 -29
- package/Cargo.lock +0 -18
- package/Cargo.toml +0 -7
- package/com/README.md +0 -3
- package/com/cpp/README.md +0 -80
- package/com/cpp/module.f.ts +0 -180
- package/com/cpp/nanocom.hpp +0 -195
- package/com/cpp/testlib.f.ts +0 -8
- package/com/cs/module.f.ts +0 -145
- package/com/cs/testlib.f.ts +0 -8
- package/com/proposals.md +0 -28
- package/com/rust/module.f.ts +0 -287
- package/com/rust/nanocom/Cargo.lock +0 -7
- package/com/rust/nanocom/Cargo.toml +0 -15
- package/com/rust/nanocom/README.md +0 -56
- package/com/rust/nanocom/src/class.rs +0 -6
- package/com/rust/nanocom/src/cobject.rs +0 -90
- package/com/rust/nanocom/src/guid.rs +0 -15
- package/com/rust/nanocom/src/hresult.rs +0 -7
- package/com/rust/nanocom/src/interface.rs +0 -9
- package/com/rust/nanocom/src/iunknown.rs +0 -13
- package/com/rust/nanocom/src/lib.rs +0 -20
- package/com/rust/nanocom/src/object.rs +0 -34
- package/com/rust/nanocom/src/ref.rs +0 -57
- package/com/rust/nanocom/src/vmt.rs +0 -7
- package/com/rust/nanocom/tests/it.rs +0 -186
- package/com/rust/nanocom/tests/itmod.rs +0 -195
- package/com/rust/testlib.f.ts +0 -8
- package/com/test/build.f.ts +0 -111
- package/com/test/build.ts +0 -45
- package/com/test/cpp/main.cpp +0 -74
- package/com/test/cs/Program.cs +0 -31
- package/com/test/cs/cs.csproj +0 -16
- package/com/test/rust/Cargo.toml +0 -12
- package/com/test/rust/src/lib.rs +0 -56
- package/com/types/module.f.ts +0 -62
- package/commonjs/README.md +0 -94
- package/commonjs/build/module.f.ts +0 -100
- package/commonjs/build/test.f.ts +0 -107
- package/commonjs/module/module.f.ts +0 -41
- package/commonjs/module.f.ts +0 -7
- package/commonjs/module.ts +0 -31
- package/commonjs/package/dependencies/module.f.ts +0 -22
- package/commonjs/package/dependencies/test.f.ts +0 -8
- package/commonjs/package/module.f.ts +0 -31
- package/commonjs/package/test.f.ts +0 -12
- package/commonjs/path/README.md +0 -17
- package/commonjs/path/module.f.ts +0 -171
- package/commonjs/test.ts +0 -64
- package/crypto/README.md +0 -3
- package/crypto/prime_field/module.f.ts +0 -114
- package/crypto/prime_field/test.f.ts +0 -95
- package/crypto/secp/module.f.ts +0 -182
- package/crypto/secp/test.f.ts +0 -68
- package/crypto/sha2/module.f.ts +0 -215
- package/crypto/sha2/test.f.ts +0 -83
- package/deno.json +0 -71
- package/dev/README.md +0 -8
- package/dev/index.ts +0 -3
- package/dev/module.f.ts +0 -1
- package/dev/module.ts +0 -196
- package/dev/test/module.f.ts +0 -135
- package/dev/test.ts +0 -53
- package/djs/README.md +0 -54
- package/djs/module.f.ts +0 -76
- package/djs/parser/module.f.ts +0 -509
- package/djs/parser/test.f.ts +0 -461
- package/djs/serializer/module.f.ts +0 -90
- package/djs/test.f.ts +0 -67
- package/djs/tokenizer/module.f.ts +0 -99
- package/djs/tokenizer/test.f.ts +0 -364
- package/doc/LANGUAGE.md +0 -255
- package/doc/README.md +0 -61
- package/doc/byte-code.md +0 -59
- package/doc/fa.md +0 -174
- package/doc/predefined.md +0 -143
- package/doc/proposals.md +0 -21
- package/doc/vm/README.md +0 -24
- package/doc/vm-rearchitecture.md +0 -129
- package/doc/vm.md +0 -150
- package/fsc/README.md +0 -111
- package/fsc/module.f.ts +0 -122
- package/fsc/test.f.ts +0 -21
- package/fsm/README.md +0 -113
- package/fsm/module.f.ts +0 -107
- package/fsm/test.f.ts +0 -139
- package/funding.json +0 -61
- package/html/README.md +0 -32
- package/html/module.f.ts +0 -109
- package/html/test.f.ts +0 -37
- package/issues/01-test-debug.md +0 -3
- package/issues/02-esm.md +0 -8
- package/issues/03-djs.md +0 -57
- package/issues/05-publish.md +0 -40
- package/issues/11-fs-load.md +0 -13
- package/issues/17-djs-extension.md +0 -6
- package/issues/README.md +0 -42
- package/issues/lang/1000-json.md +0 -50
- package/issues/lang/2110-default-export.md +0 -11
- package/issues/lang/2120-const.md +0 -14
- package/issues/lang/2130-default-import.md +0 -10
- package/issues/lang/2210-block-comment.md +0 -12
- package/issues/lang/2220-namespace-import.md +0 -25
- package/issues/lang/2310-undefined.md +0 -7
- package/issues/lang/2320-bigint.md +0 -7
- package/issues/lang/2330-property-accessor.md +0 -225
- package/issues/lang/2340-operators.md +0 -41
- package/issues/lang/2350-grouping.md +0 -11
- package/issues/lang/2360-built-in.md +0 -81
- package/issues/lang/2410-identifier-property.md +0 -9
- package/issues/lang/2420-line-comment.md +0 -10
- package/issues/lang/2430-trailing-comma.md +0 -13
- package/issues/lang/2440-shorthand.md +0 -8
- package/issues/lang/2450-destructuring.md +0 -12
- package/issues/lang/3110-function.md +0 -35
- package/issues/lang/3120-parameters.md +0 -9
- package/issues/lang/3130-body-const.md +0 -12
- package/issues/lang/3220-let.md +0 -11
- package/issues/lang/3240-export.md +0 -44
- package/issues/lang/3370-type-inference.md +0 -69
- package/issues/lang/3380-promise.md +0 -22
- package/issues/lang/3390-class.md +0 -3
- package/issues/lang/3410-expression.md +0 -12
- package/issues/lang/3420-one-parameter.md +0 -10
- package/issues/lang/3430-assignments.md +0 -23
- package/issues/lang/README.md +0 -193
- package/issues/test.f.ts +0 -58
- package/js/tokenizer/module.f.ts +0 -882
- package/js/tokenizer/test.f.ts +0 -617
- package/json/html/README.md +0 -49
- package/json/module.f.ts +0 -94
- package/json/parser/module.f.ts +0 -221
- package/json/parser/test.f.ts +0 -255
- package/json/serializer/module.f.ts +0 -74
- package/json/serializer/test.f.ts +0 -64
- package/json/test.f.ts +0 -48
- package/json/tokenizer/module.f.ts +0 -85
- package/json/tokenizer/test.f.ts +0 -290
- package/nanvm-lib/Cargo.toml +0 -6
- package/nanvm-lib/src/extension.rs +0 -130
- package/nanvm-lib/src/interface.rs +0 -133
- package/nanvm-lib/src/lib.rs +0 -7
- package/nanvm-lib/src/naive.rs +0 -236
- package/nanvm-lib/src/nanenum.rs +0 -236
- package/nanvm-lib/src/nullish.rs +0 -7
- package/nanvm-lib/src/sign.rs +0 -5
- package/nanvm-lib/src/simple.rs +0 -32
- package/nanvm-lib/tests/test.f.ts +0 -80
- package/nanvm-lib/tests/test.rs +0 -108
- package/nodejs/version/main.ts +0 -4
- package/nodejs/version/module.f.ts +0 -42
- package/text/README.md +0 -110
- package/text/ascii/module.f.ts +0 -222
- package/text/ascii/test.f.ts +0 -14
- package/text/module.f.ts +0 -30
- package/text/sgr/README.md +0 -3
- package/text/sgr/module.f.ts +0 -13
- package/text/test.f.ts +0 -19
- package/text/utf16/module.f.ts +0 -120
- package/text/utf16/test.f.ts +0 -107
- package/text/utf8/module.f.ts +0 -116
- package/text/utf8/test.f.ts +0 -125
- package/tsconfig.json +0 -104
- package/types/array/module.f.ts +0 -89
- package/types/array/test.f.ts +0 -88
- package/types/bigfloat/module.f.ts +0 -93
- package/types/bigfloat/test.f.ts +0 -218
- package/types/bigint/README.md +0 -35
- package/types/bigint/test.f.ts +0 -144
- package/types/bit_vec/README.md +0 -18
- package/types/bit_vec/test.f.ts +0 -129
- package/types/btree/README.md +0 -160
- package/types/btree/find/module.f.ts +0 -92
- package/types/btree/find/test.f.ts +0 -122
- package/types/btree/module.f.ts +0 -35
- package/types/btree/remove/module.f.ts +0 -151
- package/types/btree/remove/test.f.ts +0 -498
- package/types/btree/set/module.f.ts +0 -89
- package/types/btree/set/test.f.ts +0 -415
- package/types/btree/test.f.ts +0 -92
- package/types/btree/types/module.f.ts +0 -27
- package/types/byte_set/module.f.ts +0 -73
- package/types/byte_set/test.f.ts +0 -84
- package/types/function/compare/module.f.ts +0 -26
- package/types/function/compare/test.f.ts +0 -7
- package/types/function/module.f.ts +0 -43
- package/types/function/operator/module.f.ts +0 -65
- package/types/function/test.f.ts +0 -20
- package/types/list/module.f.ts +0 -350
- package/types/list/test.f.ts +0 -327
- package/types/map/module.f.ts +0 -65
- package/types/map/test.f.ts +0 -76
- package/types/nibble_set/module.f.ts +0 -34
- package/types/nibble_set/test.f.ts +0 -57
- package/types/nullable/module.f.ts +0 -9
- package/types/nullable/test.f.ts +0 -9
- package/types/number/module.f.ts +0 -20
- package/types/number/test.f.ts +0 -194
- package/types/object/module.f.ts +0 -30
- package/types/object/test.f.ts +0 -14
- package/types/range/module.f.ts +0 -10
- package/types/range/test.f.ts +0 -9
- package/types/range_map/module.f.ts +0 -70
- package/types/range_map/test.f.ts +0 -189
- package/types/result/module.f.ts +0 -20
- package/types/result/module.ts +0 -18
- package/types/sorted_list/module.f.ts +0 -83
- package/types/sorted_list/test.f.ts +0 -57
- package/types/sorted_set/module.f.ts +0 -36
- package/types/sorted_set/test.f.ts +0 -67
- package/types/string/module.f.ts +0 -26
- package/types/string/test.f.ts +0 -43
- package/types/string_set/module.f.ts +0 -37
- package/types/string_set/test.f.ts +0 -34
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
const e = a => b => {
|
|
2
|
+
if (a === b) { }
|
|
3
|
+
else {
|
|
4
|
+
throw [a, '===', b];
|
|
5
|
+
}
|
|
6
|
+
};
|
|
7
|
+
const n = a => b => {
|
|
8
|
+
if (a !== b) { }
|
|
9
|
+
else {
|
|
10
|
+
throw [a, '!==', b];
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
export default {
|
|
14
|
+
eq: {
|
|
15
|
+
nullish: () => {
|
|
16
|
+
e(null)(null);
|
|
17
|
+
e(undefined)(undefined);
|
|
18
|
+
n(null)(undefined);
|
|
19
|
+
},
|
|
20
|
+
boolean: {
|
|
21
|
+
boolean: () => {
|
|
22
|
+
e(true)(true);
|
|
23
|
+
e(false)(false);
|
|
24
|
+
n(true)(false);
|
|
25
|
+
},
|
|
26
|
+
nullish: () => {
|
|
27
|
+
n(false)(undefined);
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
number: {
|
|
31
|
+
number: () => {
|
|
32
|
+
e(2.3)(2.3);
|
|
33
|
+
n(2.3)(-5.4);
|
|
34
|
+
n(NaN)(NaN);
|
|
35
|
+
e(0)(-0);
|
|
36
|
+
if (!Object.is(-0, -0)) {
|
|
37
|
+
throw -0;
|
|
38
|
+
}
|
|
39
|
+
if (Object.is(0, -0)) {
|
|
40
|
+
throw -0;
|
|
41
|
+
}
|
|
42
|
+
e(Infinity)(Infinity);
|
|
43
|
+
e(-Infinity)(-Infinity);
|
|
44
|
+
n(Infinity)(-Infinity);
|
|
45
|
+
},
|
|
46
|
+
nullish: () => {
|
|
47
|
+
n(undefined)(NaN);
|
|
48
|
+
n(undefined)(0);
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
string: {
|
|
52
|
+
string: () => {
|
|
53
|
+
e("hello")("hello");
|
|
54
|
+
n("hello")("world");
|
|
55
|
+
},
|
|
56
|
+
number: () => {
|
|
57
|
+
n(0)("0");
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
bigint: {
|
|
61
|
+
bigint: () => {
|
|
62
|
+
e(12n)(12n);
|
|
63
|
+
n(12n)(-12n);
|
|
64
|
+
n(12n)(13n);
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
array: {
|
|
68
|
+
array: () => {
|
|
69
|
+
const a = [];
|
|
70
|
+
e(a)(a);
|
|
71
|
+
n([])([]);
|
|
72
|
+
const a0 = ['0'];
|
|
73
|
+
e(a0)(a0);
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
object: {
|
|
77
|
+
object: () => {
|
|
78
|
+
const o = { '0': '0' };
|
|
79
|
+
e(o)(o);
|
|
80
|
+
n(o)({ '0': '0' });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type Buffer = {};
|
|
2
|
+
type Fs<T> = {
|
|
3
|
+
readonly readFileSync: (name: string) => Buffer;
|
|
4
|
+
readonly writeFileSync: (name: string, content: string) => T;
|
|
5
|
+
};
|
|
6
|
+
export type Node<T> = {
|
|
7
|
+
readonly fs: Fs<T>;
|
|
8
|
+
};
|
|
9
|
+
export declare const getVersion: <T>(fs: Fs<T>) => string;
|
|
10
|
+
export declare const updateVersion: <T>(node: Node<T>) => readonly [T, T];
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const { stringify, parse } = JSON;
|
|
2
|
+
export const getVersion = fs => readJson(fs)('package').version;
|
|
3
|
+
const jsonFile = (jsonFile) => `${jsonFile}.json`;
|
|
4
|
+
const readJson = fs => name => parse(fs.readFileSync(jsonFile(name)).toString());
|
|
5
|
+
export const updateVersion = ({ fs }) => {
|
|
6
|
+
const f = (name) => {
|
|
7
|
+
return fs.writeFileSync(jsonFile(name), stringify({
|
|
8
|
+
...readJson(fs)(name),
|
|
9
|
+
version: getVersion(fs)
|
|
10
|
+
}, null, 2));
|
|
11
|
+
};
|
|
12
|
+
return [
|
|
13
|
+
f('package'),
|
|
14
|
+
f('deno')
|
|
15
|
+
];
|
|
16
|
+
};
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import * as _ from
|
|
2
|
-
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
const x
|
|
6
|
-
: { readonly[k in string]: unknown }
|
|
7
|
-
= {
|
|
1
|
+
import * as _ from "./module.f.js";
|
|
2
|
+
const version = '0.3.0';
|
|
3
|
+
const x = {
|
|
8
4
|
'package.json': {
|
|
9
5
|
"name": "functionalscript",
|
|
10
6
|
version,
|
|
@@ -41,8 +37,7 @@ const x
|
|
|
41
37
|
}
|
|
42
38
|
},
|
|
43
39
|
"deno.json": {}
|
|
44
|
-
}
|
|
45
|
-
|
|
40
|
+
};
|
|
46
41
|
const e = '{\n' +
|
|
47
42
|
' "name": "functionalscript",\n' +
|
|
48
43
|
` "version": "${version}",\n` +
|
|
@@ -77,23 +72,19 @@ const e = '{\n' +
|
|
|
77
72
|
' "@types/node": "^18.6.2",\n' +
|
|
78
73
|
' "typescript": "^4.7.4"\n' +
|
|
79
74
|
' }\n' +
|
|
80
|
-
'}'
|
|
81
|
-
|
|
82
|
-
const buffer
|
|
83
|
-
: (s: string) => _.Buffer
|
|
84
|
-
= s => ({
|
|
75
|
+
'}';
|
|
76
|
+
const buffer = s => ({
|
|
85
77
|
toString: () => s
|
|
86
|
-
})
|
|
87
|
-
|
|
78
|
+
});
|
|
88
79
|
export default () => {
|
|
89
|
-
const node
|
|
90
|
-
: _.Node<string>
|
|
91
|
-
= {
|
|
80
|
+
const node = {
|
|
92
81
|
fs: {
|
|
93
82
|
readFileSync: n => buffer(JSON.stringify(x[n])),
|
|
94
83
|
writeFileSync: (_, content) => content
|
|
95
84
|
}
|
|
85
|
+
};
|
|
86
|
+
const [n, d] = _.updateVersion(node);
|
|
87
|
+
if (n !== e) {
|
|
88
|
+
throw [n, e];
|
|
96
89
|
}
|
|
97
|
-
|
|
98
|
-
if (n !== e) { throw [n, e] }
|
|
99
|
-
}
|
|
90
|
+
};
|
package/package.json
CHANGED
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "functionalscript",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.5",
|
|
4
4
|
"type": "module",
|
|
5
|
+
"files": [
|
|
6
|
+
"**/*.f.d.ts",
|
|
7
|
+
"**/*.f.js"
|
|
8
|
+
],
|
|
5
9
|
"description": "FunctionalScript is a functional subset of JavaScript",
|
|
6
10
|
"scripts": {
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"prepack": "npm run tscp && npm run tsct",
|
|
11
|
+
"tsc-emit": "tsc --NoEmit false",
|
|
12
|
+
"prepack": "npm run tsc-emit",
|
|
10
13
|
"test20": "npm run prepack && node --trace-uncaught ./dev/test.js",
|
|
11
14
|
"test": "tsc && node --experimental-strip-types --trace-uncaught ./dev/test.ts",
|
|
12
15
|
"comtest": "node --experimental-strip-types ./com/test/build.ts",
|
|
13
16
|
"index": "node --experimental-strip-types ./dev/index.ts",
|
|
14
|
-
"version": "node --experimental-strip-types ./nodejs/version/main.ts"
|
|
17
|
+
"version": "node --experimental-strip-types ./nodejs/version/main.ts",
|
|
18
|
+
"fsc": "node --experimental-strip-types ./main.ts"
|
|
15
19
|
},
|
|
16
20
|
"repository": {
|
|
17
21
|
"type": "git",
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { type Range } from '../../types/range/module.f.ts';
|
|
2
|
+
export declare const one: (s: string) => number;
|
|
3
|
+
export declare const range: (s: string) => Range;
|
|
4
|
+
/** 0x08 */
|
|
5
|
+
export declare const backspace: number;
|
|
6
|
+
/** 0x09 */
|
|
7
|
+
export declare const ht: number;
|
|
8
|
+
/** 0x0A */
|
|
9
|
+
export declare const lf: number;
|
|
10
|
+
/** 0x0C */
|
|
11
|
+
export declare const ff: number;
|
|
12
|
+
/** 0x0D */
|
|
13
|
+
export declare const cr: number;
|
|
14
|
+
/** 0x20 */
|
|
15
|
+
export declare const space: number;
|
|
16
|
+
/** 0x21 */
|
|
17
|
+
export declare const exclamationMark: number;
|
|
18
|
+
/** 0x22 */
|
|
19
|
+
export declare const quotationMark: number;
|
|
20
|
+
/** 0x23 */
|
|
21
|
+
export declare const numberSign: number;
|
|
22
|
+
/** 0x24 */
|
|
23
|
+
export declare const dollarSign: number;
|
|
24
|
+
/** 0x25 */
|
|
25
|
+
export declare const percentSign: number;
|
|
26
|
+
/** 0x26 */
|
|
27
|
+
export declare const ampersand: number;
|
|
28
|
+
/** 0x27 */
|
|
29
|
+
export declare const apostrophe: number;
|
|
30
|
+
/** 0x28 */
|
|
31
|
+
export declare const leftParenthesis: number;
|
|
32
|
+
/** 0x29 */
|
|
33
|
+
export declare const rightParenthesis: number;
|
|
34
|
+
/** 0x2A */
|
|
35
|
+
export declare const asterisk: number;
|
|
36
|
+
/** 0x2B */
|
|
37
|
+
export declare const plusSign: number;
|
|
38
|
+
/** 0x2C */
|
|
39
|
+
export declare const comma: number;
|
|
40
|
+
/** 0x2D */
|
|
41
|
+
export declare const hyphenMinus: number;
|
|
42
|
+
/** 0x2E */
|
|
43
|
+
export declare const fullStop: number;
|
|
44
|
+
/** 0x2F */
|
|
45
|
+
export declare const solidus: number;
|
|
46
|
+
/** 0x30..0x39 */
|
|
47
|
+
export declare const digitRange: Range;
|
|
48
|
+
/** 0x30 */
|
|
49
|
+
export declare const digit0: number;
|
|
50
|
+
/** 0x31 */
|
|
51
|
+
export declare const digit1: number;
|
|
52
|
+
/** 0x32 */
|
|
53
|
+
export declare const digit2: number;
|
|
54
|
+
/** 0x33 */
|
|
55
|
+
export declare const digit3: number;
|
|
56
|
+
/** 0x34 */
|
|
57
|
+
export declare const digit4: number;
|
|
58
|
+
/** 0x35 */
|
|
59
|
+
export declare const digit5: number;
|
|
60
|
+
/** 0x36 */
|
|
61
|
+
export declare const digit6: number;
|
|
62
|
+
/** 0x37 */
|
|
63
|
+
export declare const digit7: number;
|
|
64
|
+
/** 0x38 */
|
|
65
|
+
export declare const digit8: number;
|
|
66
|
+
/** 0x39 */
|
|
67
|
+
export declare const digit9: number;
|
|
68
|
+
/** 0x3A */
|
|
69
|
+
export declare const colon: number;
|
|
70
|
+
/** 0x3B */
|
|
71
|
+
export declare const semicolon: number;
|
|
72
|
+
/** 0x3C */
|
|
73
|
+
export declare const lessThanSign: number;
|
|
74
|
+
/** 0x3D */
|
|
75
|
+
export declare const equalsSign: number;
|
|
76
|
+
/** 0x3E */
|
|
77
|
+
export declare const greaterThanSign: number;
|
|
78
|
+
/** 0x3F */
|
|
79
|
+
export declare const questionMark: number;
|
|
80
|
+
/** 0x40 */
|
|
81
|
+
export declare const commercialAt: number;
|
|
82
|
+
/** 0x41..0x5A */
|
|
83
|
+
export declare const latinCapitalLetterRange: Range;
|
|
84
|
+
/** 0x41 */
|
|
85
|
+
export declare const latinCapitalLetterA: number;
|
|
86
|
+
/** 0x45 */
|
|
87
|
+
export declare const latinCapitalLetterE: number;
|
|
88
|
+
/** 0x46 */
|
|
89
|
+
export declare const latinCapitalLetterF: number;
|
|
90
|
+
/** 0x5B */
|
|
91
|
+
export declare const leftSquareBracket: number;
|
|
92
|
+
/** 0x5C */
|
|
93
|
+
export declare const reverseSolidus: number;
|
|
94
|
+
/** 0x5D */
|
|
95
|
+
export declare const rightSquareBracket: number;
|
|
96
|
+
/** 0x5E */
|
|
97
|
+
export declare const circumflexAccent: number;
|
|
98
|
+
/** 0x5F */
|
|
99
|
+
export declare const lowLine: number;
|
|
100
|
+
/** 0x60 */
|
|
101
|
+
export declare const graveAccent: number;
|
|
102
|
+
/** 0x61..0x7A */
|
|
103
|
+
export declare const latinSmallLetterRange: Range;
|
|
104
|
+
/** 0x61 */
|
|
105
|
+
export declare const latinSmallLetterA: number;
|
|
106
|
+
/** 0x62 */
|
|
107
|
+
export declare const latinSmallLetterB: number;
|
|
108
|
+
/** 0x65 */
|
|
109
|
+
export declare const latinSmallLetterE: number;
|
|
110
|
+
/** 0x66 */
|
|
111
|
+
export declare const latinSmallLetterF: number;
|
|
112
|
+
/** 0x6E */
|
|
113
|
+
export declare const latinSmallLetterN: number;
|
|
114
|
+
/** 0x72 */
|
|
115
|
+
export declare const latinSmallLetterR: number;
|
|
116
|
+
/** 0x74 */
|
|
117
|
+
export declare const latinSmallLetterT: number;
|
|
118
|
+
/** 0x75 */
|
|
119
|
+
export declare const latinSmallLetterU: number;
|
|
120
|
+
/** 0x7A */
|
|
121
|
+
export declare const latinSmallLetterZ: number;
|
|
122
|
+
/** 0x7B */
|
|
123
|
+
export declare const leftCurlyBracket: number;
|
|
124
|
+
/** 0x7C */
|
|
125
|
+
export declare const verticalLine: number;
|
|
126
|
+
/** 0x7D */
|
|
127
|
+
export declare const rightCurlyBracket: number;
|
|
128
|
+
/** 0x7E */
|
|
129
|
+
export declare const tilde: number;
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import {} from "../../types/range/module.f.js";
|
|
2
|
+
const at = s => i => {
|
|
3
|
+
const r = s.codePointAt(i);
|
|
4
|
+
if (r === void 0) {
|
|
5
|
+
throw s;
|
|
6
|
+
}
|
|
7
|
+
return r;
|
|
8
|
+
};
|
|
9
|
+
export const one = (s) => at(s)(0);
|
|
10
|
+
export const range = s => {
|
|
11
|
+
const f = at(s);
|
|
12
|
+
const f0 = f(0);
|
|
13
|
+
if (s.length === 1) {
|
|
14
|
+
return [f0, f0];
|
|
15
|
+
}
|
|
16
|
+
return [f0, f(1)];
|
|
17
|
+
};
|
|
18
|
+
// 0x00..
|
|
19
|
+
/** 0x08 */
|
|
20
|
+
export const backspace = one('\b');
|
|
21
|
+
/** 0x09 */
|
|
22
|
+
export const ht = one('\t');
|
|
23
|
+
/** 0x0A */
|
|
24
|
+
export const lf = one('\n');
|
|
25
|
+
/** 0x0C */
|
|
26
|
+
export const ff = one('\f');
|
|
27
|
+
/** 0x0D */
|
|
28
|
+
export const cr = one('\r');
|
|
29
|
+
// 0x20..
|
|
30
|
+
/** 0x20 */
|
|
31
|
+
export const space = one(' ');
|
|
32
|
+
/** 0x21 */
|
|
33
|
+
export const exclamationMark = one('!');
|
|
34
|
+
/** 0x22 */
|
|
35
|
+
export const quotationMark = one('"');
|
|
36
|
+
/** 0x23 */
|
|
37
|
+
export const numberSign = one('#');
|
|
38
|
+
/** 0x24 */
|
|
39
|
+
export const dollarSign = one('$');
|
|
40
|
+
/** 0x25 */
|
|
41
|
+
export const percentSign = one('%');
|
|
42
|
+
/** 0x26 */
|
|
43
|
+
export const ampersand = one('&');
|
|
44
|
+
/** 0x27 */
|
|
45
|
+
export const apostrophe = one("'");
|
|
46
|
+
/** 0x28 */
|
|
47
|
+
export const leftParenthesis = one('(');
|
|
48
|
+
/** 0x29 */
|
|
49
|
+
export const rightParenthesis = one(')');
|
|
50
|
+
/** 0x2A */
|
|
51
|
+
export const asterisk = one('*');
|
|
52
|
+
/** 0x2B */
|
|
53
|
+
export const plusSign = one('+');
|
|
54
|
+
/** 0x2C */
|
|
55
|
+
export const comma = one(',');
|
|
56
|
+
/** 0x2D */
|
|
57
|
+
export const hyphenMinus = one('-');
|
|
58
|
+
/** 0x2E */
|
|
59
|
+
export const fullStop = one('.');
|
|
60
|
+
/** 0x2F */
|
|
61
|
+
export const solidus = one('/');
|
|
62
|
+
// 0x30..
|
|
63
|
+
/** 0x30..0x39 */
|
|
64
|
+
export const digitRange = range('09');
|
|
65
|
+
/** 0x30 */
|
|
66
|
+
export const digit0 = one('0');
|
|
67
|
+
/** 0x31 */
|
|
68
|
+
export const digit1 = one('1');
|
|
69
|
+
/** 0x32 */
|
|
70
|
+
export const digit2 = one('2');
|
|
71
|
+
/** 0x33 */
|
|
72
|
+
export const digit3 = one('3');
|
|
73
|
+
/** 0x34 */
|
|
74
|
+
export const digit4 = one('4');
|
|
75
|
+
/** 0x35 */
|
|
76
|
+
export const digit5 = one('5');
|
|
77
|
+
/** 0x36 */
|
|
78
|
+
export const digit6 = one('6');
|
|
79
|
+
/** 0x37 */
|
|
80
|
+
export const digit7 = one('7');
|
|
81
|
+
/** 0x38 */
|
|
82
|
+
export const digit8 = one('8');
|
|
83
|
+
/** 0x39 */
|
|
84
|
+
export const digit9 = one('9');
|
|
85
|
+
/** 0x3A */
|
|
86
|
+
export const colon = one(':');
|
|
87
|
+
/** 0x3B */
|
|
88
|
+
export const semicolon = one(';');
|
|
89
|
+
/** 0x3C */
|
|
90
|
+
export const lessThanSign = one('<');
|
|
91
|
+
/** 0x3D */
|
|
92
|
+
export const equalsSign = one('=');
|
|
93
|
+
/** 0x3E */
|
|
94
|
+
export const greaterThanSign = one('>');
|
|
95
|
+
/** 0x3F */
|
|
96
|
+
export const questionMark = one('?');
|
|
97
|
+
// 0x40..
|
|
98
|
+
/** 0x40 */
|
|
99
|
+
export const commercialAt = one('@');
|
|
100
|
+
/** 0x41..0x5A */
|
|
101
|
+
export const latinCapitalLetterRange = range('AZ');
|
|
102
|
+
/** 0x41 */
|
|
103
|
+
export const latinCapitalLetterA = one('A');
|
|
104
|
+
/** 0x45 */
|
|
105
|
+
export const latinCapitalLetterE = one('E');
|
|
106
|
+
/** 0x46 */
|
|
107
|
+
export const latinCapitalLetterF = one('F');
|
|
108
|
+
/** 0x5B */
|
|
109
|
+
export const leftSquareBracket = one('[');
|
|
110
|
+
/** 0x5C */
|
|
111
|
+
export const reverseSolidus = one('\\');
|
|
112
|
+
/** 0x5D */
|
|
113
|
+
export const rightSquareBracket = one(']');
|
|
114
|
+
/** 0x5E */
|
|
115
|
+
export const circumflexAccent = one('^');
|
|
116
|
+
/** 0x5F */
|
|
117
|
+
export const lowLine = one('_');
|
|
118
|
+
// 0x60..
|
|
119
|
+
/** 0x60 */
|
|
120
|
+
export const graveAccent = one('`');
|
|
121
|
+
/** 0x61..0x7A */
|
|
122
|
+
export const latinSmallLetterRange = range('az');
|
|
123
|
+
/** 0x61 */
|
|
124
|
+
export const latinSmallLetterA = one('a');
|
|
125
|
+
/** 0x62 */
|
|
126
|
+
export const latinSmallLetterB = one('b');
|
|
127
|
+
/** 0x65 */
|
|
128
|
+
export const latinSmallLetterE = one('e');
|
|
129
|
+
/** 0x66 */
|
|
130
|
+
export const latinSmallLetterF = one('f');
|
|
131
|
+
/** 0x6E */
|
|
132
|
+
export const latinSmallLetterN = one('n');
|
|
133
|
+
/** 0x72 */
|
|
134
|
+
export const latinSmallLetterR = one('r');
|
|
135
|
+
/** 0x74 */
|
|
136
|
+
export const latinSmallLetterT = one('t');
|
|
137
|
+
/** 0x75 */
|
|
138
|
+
export const latinSmallLetterU = one('u');
|
|
139
|
+
/** 0x7A */
|
|
140
|
+
export const latinSmallLetterZ = one('z');
|
|
141
|
+
/** 0x7B */
|
|
142
|
+
export const leftCurlyBracket = one('{');
|
|
143
|
+
/** 0x7C */
|
|
144
|
+
export const verticalLine = one('|');
|
|
145
|
+
/** 0x7D */
|
|
146
|
+
export const rightCurlyBracket = one('}');
|
|
147
|
+
/** 0x7E */
|
|
148
|
+
export const tilde = one('~');
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as _ from "./module.f.js";
|
|
2
|
+
const { range } = _;
|
|
3
|
+
import * as json from "../../json/module.f.js";
|
|
4
|
+
import * as o from "../../types/object/module.f.js";
|
|
5
|
+
const { sort } = o;
|
|
6
|
+
const stringify = json.stringify(sort);
|
|
7
|
+
export default {
|
|
8
|
+
range: () => {
|
|
9
|
+
const r = stringify(range("A"));
|
|
10
|
+
if (r !== '[65,65]') {
|
|
11
|
+
throw r;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as list from '../types/list/module.f.ts';
|
|
2
|
+
export type Block = ItemThunk | ItemArray;
|
|
3
|
+
type ItemArray = readonly Item[];
|
|
4
|
+
type ItemThunk = () => list.List<Item>;
|
|
5
|
+
export type Item = string | ItemArray | ItemThunk;
|
|
6
|
+
export declare const flat: (indent: string) => (text: Block) => list.List<string>;
|
|
7
|
+
export declare const curly: (type: string) => (name: string) => (body: Block) => Block;
|
|
8
|
+
export {};
|
package/text/module.f.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as list from "../types/list/module.f.js";
|
|
2
|
+
const { flatMap } = list;
|
|
3
|
+
export const flat = indent => {
|
|
4
|
+
const f = prefix => {
|
|
5
|
+
const g = item => typeof (item) === 'string' ? [`${prefix}${item}`] : f(`${prefix}${indent}`)(item);
|
|
6
|
+
return flatMap(g);
|
|
7
|
+
};
|
|
8
|
+
return f('');
|
|
9
|
+
};
|
|
10
|
+
export const curly = type => name => body => [`${type} ${name}`, '{', body, '}'];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* https://en.wikipedia.org/wiki/ANSI_escape_code#SGR
|
|
3
|
+
*/
|
|
4
|
+
export declare const sgr: (c: number) => string;
|
|
5
|
+
export declare const reset: string;
|
|
6
|
+
export declare const bold: string;
|
|
7
|
+
export declare const fgRed: string;
|
|
8
|
+
export declare const fgGreen: string;
|
package/text/test.f.d.ts
ADDED
package/text/test.f.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as _ from "./module.f.js";
|
|
2
|
+
import * as string from "../types/string/module.f.js";
|
|
3
|
+
const { join } = string;
|
|
4
|
+
export default () => {
|
|
5
|
+
const text = [
|
|
6
|
+
'a',
|
|
7
|
+
'b',
|
|
8
|
+
() => [
|
|
9
|
+
'c',
|
|
10
|
+
() => ['d'],
|
|
11
|
+
],
|
|
12
|
+
'e',
|
|
13
|
+
];
|
|
14
|
+
const result = join('\n')(_.flat(':')(text));
|
|
15
|
+
if (result !== 'a\nb\n:c\n::d\ne') {
|
|
16
|
+
throw result;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type List, type Thunk } from '../../types/list/module.f.ts';
|
|
2
|
+
type u16 = number;
|
|
3
|
+
type i32 = number;
|
|
4
|
+
export declare const fromCodePointList: (input: List<number>) => Thunk<number>;
|
|
5
|
+
declare const u16: (i: number) => boolean;
|
|
6
|
+
export declare const toCodePointList: (input: List<u16>) => List<i32>;
|
|
7
|
+
export declare const stringToList: (s: string) => List<u16>;
|
|
8
|
+
export declare const listToString: (input: List<u16>) => string;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { map, flat, stateScan, reduce, flatMap, empty, } from "../../types/list/module.f.js";
|
|
2
|
+
import * as operator from "../../types/function/operator/module.f.js";
|
|
3
|
+
import { contains } from "../../types/range/module.f.js";
|
|
4
|
+
import * as f from "../../types/function/module.f.js";
|
|
5
|
+
const { fn } = f;
|
|
6
|
+
const lowBmp = contains([0x0000, 0xd7ff]);
|
|
7
|
+
const highBmp = contains([0xe000, 0xffff]);
|
|
8
|
+
const isBmpCodePoint = codePoint => lowBmp(codePoint) || highBmp(codePoint);
|
|
9
|
+
const isHighSurrogate = contains([0xd800, 0xdbff]);
|
|
10
|
+
const isLowSurrogate = contains([0xdc00, 0xdfff]);
|
|
11
|
+
const errorMask = 0b1000_0000_0000_0000_0000_0000_0000_0000;
|
|
12
|
+
const isSupplementaryPlane = contains([0x01_0000, 0x10_ffff]);
|
|
13
|
+
const codePointToUtf16 = codePoint => {
|
|
14
|
+
if (isBmpCodePoint(codePoint)) {
|
|
15
|
+
return [codePoint];
|
|
16
|
+
}
|
|
17
|
+
if (isSupplementaryPlane(codePoint)) {
|
|
18
|
+
const n = codePoint - 0x1_0000;
|
|
19
|
+
const high = (n >> 10) + 0xd800;
|
|
20
|
+
const low = (n & 0b0011_1111_1111) + 0xdc00;
|
|
21
|
+
return [high, low];
|
|
22
|
+
}
|
|
23
|
+
return [codePoint & 0xffff];
|
|
24
|
+
};
|
|
25
|
+
export const fromCodePointList = flatMap(codePointToUtf16);
|
|
26
|
+
const u16 = contains([0x0000, 0xFFFF]);
|
|
27
|
+
const utf16ByteToCodePointOp = state => word => {
|
|
28
|
+
if (!u16(word)) {
|
|
29
|
+
return [[0xffffffff], state];
|
|
30
|
+
}
|
|
31
|
+
if (state === null) {
|
|
32
|
+
if (isBmpCodePoint(word)) {
|
|
33
|
+
return [[word], null];
|
|
34
|
+
}
|
|
35
|
+
if (isHighSurrogate(word)) {
|
|
36
|
+
return [[], word];
|
|
37
|
+
}
|
|
38
|
+
return [[word | errorMask], null];
|
|
39
|
+
}
|
|
40
|
+
if (isLowSurrogate(word)) {
|
|
41
|
+
const high = state - 0xd800;
|
|
42
|
+
const low = word - 0xdc00;
|
|
43
|
+
return [[(high << 10) + low + 0x10000], null];
|
|
44
|
+
}
|
|
45
|
+
if (isBmpCodePoint(word)) {
|
|
46
|
+
return [[state | errorMask, word], null];
|
|
47
|
+
}
|
|
48
|
+
if (isHighSurrogate(word)) {
|
|
49
|
+
return [[state | errorMask], word];
|
|
50
|
+
}
|
|
51
|
+
return [[state | errorMask, word | errorMask], null];
|
|
52
|
+
};
|
|
53
|
+
const utf16EofToCodePointOp = state => [state === null ? empty : [state | errorMask], null];
|
|
54
|
+
const utf16ByteOrEofToCodePointOp = state => input => input === null ? utf16EofToCodePointOp(state) : utf16ByteToCodePointOp(state)(input);
|
|
55
|
+
const eofList = [null];
|
|
56
|
+
export const toCodePointList = input => flat(stateScan(utf16ByteOrEofToCodePointOp)(null)(flat([input, eofList])));
|
|
57
|
+
export const stringToList = s => {
|
|
58
|
+
const at = i => {
|
|
59
|
+
const first = s.charCodeAt(i);
|
|
60
|
+
return isNaN(first) ? empty : { first, tail: () => at(i + 1) };
|
|
61
|
+
};
|
|
62
|
+
return at(0);
|
|
63
|
+
};
|
|
64
|
+
export const listToString = fn(map(String.fromCharCode))
|
|
65
|
+
.then(reduce(operator.concat)(''))
|
|
66
|
+
.result;
|