functionalscript 0.1.608 → 0.2.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/CHANGELOG.md +10 -0
- package/Cargo.lock +4 -0
- package/Cargo.toml +4 -2
- package/README.md +1 -1
- package/com/cpp/module.f.d.mts +4 -8
- package/com/cpp/module.f.mjs +20 -25
- package/com/cpp/testlib.f.mjs +3 -4
- package/com/cs/module.f.d.mts +4 -8
- package/com/cs/module.f.mjs +18 -23
- package/com/cs/testlib.f.mjs +3 -5
- package/com/rust/module.f.d.mts +3 -7
- package/com/rust/module.f.mjs +25 -30
- package/com/rust/nanocom/src/cobject.rs +1 -1
- package/com/rust/testlib.f.mjs +3 -5
- package/com/test/build.f.d.mts +2 -2
- package/com/test/build.f.mjs +2 -2
- package/com/test/build.mjs +4 -4
- package/com/test/rust/src/lib.rs +4 -4
- package/com/types/module.f.d.mts +5 -10
- package/com/types/module.f.mjs +5 -12
- package/commonjs/build/module.f.d.mts +13 -17
- package/commonjs/build/module.f.mjs +23 -28
- package/commonjs/build/test.f.mjs +4 -4
- package/commonjs/module/function/module.f.d.mts +0 -2
- package/commonjs/module/function/module.f.mjs +0 -2
- package/commonjs/module/module.f.d.mts +16 -21
- package/commonjs/module/module.f.mjs +2 -9
- package/commonjs/module.d.mts +1 -5
- package/commonjs/module.f.d.mts +0 -2
- package/commonjs/module.f.mjs +0 -2
- package/commonjs/module.mjs +2 -7
- package/commonjs/package/dependencies/module.f.d.mts +3 -7
- package/commonjs/package/dependencies/module.f.mjs +5 -10
- package/commonjs/package/dependencies/test.f.mjs +1 -1
- package/commonjs/package/module.f.d.mts +12 -18
- package/commonjs/package/module.f.mjs +6 -13
- package/commonjs/package/test.f.mjs +1 -1
- package/commonjs/path/module.f.d.mts +25 -32
- package/commonjs/path/module.f.mjs +12 -23
- package/commonjs/path/test.f.mjs +11 -11
- package/commonjs/test.mjs +1 -1
- package/dev/module.f.d.mts +1 -4
- package/dev/module.f.mjs +1 -4
- package/dev/module.mjs +1 -1
- package/dev/test/module.f.d.mts +2 -3
- package/dev/test/module.f.mjs +5 -7
- package/djs/module.f.d.mts +13 -18
- package/djs/module.f.mjs +12 -19
- package/djs/parser/module.f.d.mts +53 -37
- package/djs/parser/module.f.mjs +278 -131
- package/djs/parser/test.f.d.mts +4 -0
- package/djs/parser/test.f.mjs +186 -70
- package/djs/test.f.mjs +4 -4
- package/djs/tokenizer/module.f.d.mts +6 -10
- package/djs/tokenizer/module.f.mjs +19 -22
- package/djs/tokenizer/test.f.mjs +7 -7
- package/doc/LANGUAGE.md +17 -16
- package/doc/README.md +14 -50
- package/fsc/README.md +0 -3
- package/fsc/module.f.d.mts +4 -9
- package/fsc/module.f.mjs +17 -24
- package/fsc/test.f.mjs +3 -3
- package/fsm/README.md +1 -1
- package/fsm/module.f.d.mts +13 -20
- package/fsm/module.f.mjs +27 -38
- package/fsm/test.f.mjs +8 -8
- package/html/README.md +24 -0
- package/html/module.f.d.mts +7 -12
- package/html/module.f.mjs +14 -23
- package/html/test.f.mjs +4 -4
- package/issues/01-test-debug.md +3 -0
- package/issues/{publish.md → 05-publish.md} +8 -8
- package/issues/17-djs-extension.md +6 -0
- package/issues/README.md +20 -13
- package/issues/lang/1000-json.md +38 -0
- package/issues/lang/2110-default-export.md +2 -2
- package/issues/lang/2310-undefined.md +1 -1
- package/issues/lang/2330-property-accessor.md +225 -0
- package/issues/lang/2360-built-in.md +54 -47
- package/issues/lang/3240-export.md +44 -0
- package/issues/lang/README.md +64 -22
- package/issues/test.f.d.mts +16 -0
- package/issues/test.f.mjs +57 -0
- package/js/tokenizer/module.f.d.mts +18 -17
- package/js/tokenizer/module.f.mjs +80 -61
- package/js/tokenizer/test.f.mjs +15 -12
- package/json/module.f.d.mts +18 -26
- package/json/module.f.mjs +18 -31
- package/json/parser/module.f.d.mts +9 -13
- package/json/parser/module.f.mjs +9 -14
- package/json/parser/test.f.mjs +7 -7
- package/json/serializer/module.f.d.mts +11 -20
- package/json/serializer/module.f.mjs +14 -29
- package/json/serializer/test.f.mjs +2 -2
- package/json/test.f.mjs +3 -3
- package/json/tokenizer/module.f.d.mts +6 -10
- package/json/tokenizer/module.f.mjs +16 -20
- package/json/tokenizer/test.f.mjs +6 -6
- package/jsr.json +1 -1
- package/nanvm-lib/Cargo.toml +6 -0
- package/nanvm-lib/src/extension.rs +119 -0
- package/nanvm-lib/src/interface.rs +136 -0
- package/nanvm-lib/src/lib.rs +7 -0
- package/nanvm-lib/src/naive.rs +229 -0
- package/nanvm-lib/src/nanenum.rs +230 -0
- package/nanvm-lib/src/nullish.rs +7 -0
- package/nanvm-lib/src/sign.rs +5 -0
- package/nanvm-lib/src/simple.rs +32 -0
- package/nanvm-lib/tests/test.f.d.mts +36 -0
- package/nanvm-lib/tests/test.f.mjs +79 -0
- package/nanvm-lib/tests/test.rs +108 -0
- package/nodejs/version/main.mjs +1 -1
- package/nodejs/version/module.f.d.mts +4 -9
- package/nodejs/version/module.f.mjs +2 -7
- package/nodejs/version/test.f.mjs +3 -3
- package/package.json +1 -1
- package/prime_field/module.f.d.mts +20 -23
- package/prime_field/module.f.mjs +9 -12
- package/prime_field/test.f.mjs +1 -1
- package/secp/module.f.d.mts +27 -28
- package/secp/module.f.mjs +38 -39
- package/secp/test.f.mjs +4 -4
- package/sha2/module.f.d.mts +8 -16
- package/sha2/module.f.mjs +7 -20
- package/sha2/test.f.mjs +4 -4
- package/text/README.md +2 -2
- package/text/ascii/module.f.d.mts +69 -72
- package/text/ascii/module.f.mjs +5 -10
- package/text/ascii/test.f.mjs +3 -3
- package/text/module.f.d.mts +9 -14
- package/text/module.f.mjs +7 -14
- package/text/sgr/module.f.d.mts +7 -9
- package/text/sgr/module.f.mjs +2 -4
- package/text/test.f.mjs +3 -3
- package/text/utf16/module.f.d.mts +8 -15
- package/text/utf16/module.f.mjs +17 -28
- package/text/utf16/test.f.mjs +5 -5
- package/text/utf8/module.f.d.mts +4 -9
- package/text/utf8/module.f.mjs +9 -16
- package/text/utf8/test.f.mjs +4 -4
- package/types/array/module.f.d.mts +14 -24
- package/types/array/module.f.mjs +8 -25
- package/types/array/test.f.mjs +3 -3
- package/types/bigfloat/module.f.d.mts +4 -9
- package/types/bigfloat/module.f.mjs +3 -10
- package/types/bigfloat/test.f.mjs +1 -1
- package/types/bigint/module.f.d.mts +16 -64
- package/types/bigint/module.f.mjs +11 -30
- package/types/bigint/test.f.mjs +1 -1
- package/types/btree/find/module.f.d.mts +20 -26
- package/types/btree/find/module.f.mjs +8 -17
- package/types/btree/find/test.f.mjs +7 -7
- package/types/btree/module.f.d.mts +4 -8
- package/types/btree/module.f.mjs +6 -11
- package/types/btree/remove/module.f.d.mts +7 -12
- package/types/btree/remove/module.f.mjs +10 -17
- package/types/btree/remove/test.f.mjs +5 -5
- package/types/btree/set/module.f.d.mts +3 -7
- package/types/btree/set/module.f.mjs +4 -9
- package/types/btree/set/test.f.mjs +4 -4
- package/types/btree/test.f.mjs +9 -9
- package/types/btree/types/module.f.d.mts +0 -2
- package/types/btree/types/module.f.mjs +0 -2
- package/types/byte_set/module.f.d.mts +16 -29
- package/types/byte_set/module.f.mjs +14 -39
- package/types/byte_set/test.f.mjs +5 -5
- package/types/function/compare/module.f.d.mts +9 -15
- package/types/function/compare/module.f.mjs +3 -12
- package/types/function/compare/test.f.mjs +1 -1
- package/types/function/module.f.d.mts +20 -27
- package/types/function/module.f.mjs +4 -15
- package/types/function/operator/module.f.d.mts +28 -43
- package/types/function/operator/module.f.mjs +14 -41
- package/types/function/test.f.mjs +1 -1
- package/types/list/module.f.d.mts +56 -91
- package/types/list/module.f.mjs +45 -114
- package/types/list/test.f.mjs +10 -10
- package/types/map/module.f.d.mts +15 -24
- package/types/map/module.f.mjs +15 -30
- package/types/map/test.f.mjs +2 -2
- package/types/nibble_set/module.f.d.mts +10 -20
- package/types/nibble_set/module.f.mjs +7 -24
- package/types/nibble_set/test.f.mjs +2 -2
- package/types/nullable/module.f.d.mts +3 -8
- package/types/nullable/module.f.mjs +2 -9
- package/types/nullable/test.f.mjs +1 -1
- package/types/number/module.f.d.mts +7 -13
- package/types/number/module.f.mjs +8 -19
- package/types/number/test.f.mjs +1 -1
- package/types/object/module.f.d.mts +11 -18
- package/types/object/module.f.mjs +9 -20
- package/types/object/test.f.mjs +1 -1
- package/types/range/module.f.d.mts +3 -8
- package/types/range/module.f.mjs +2 -9
- package/types/range/test.f.mjs +1 -1
- package/types/range_map/module.f.d.mts +9 -15
- package/types/range_map/module.f.mjs +9 -18
- package/types/range_map/test.f.mjs +32 -32
- package/types/result/module.d.mts +3 -3
- package/types/result/module.f.d.mts +6 -12
- package/types/result/module.f.mjs +3 -12
- package/types/result/module.mjs +2 -2
- package/types/sorted_list/module.f.d.mts +22 -28
- package/types/sorted_list/module.f.mjs +10 -19
- package/types/sorted_list/test.f.mjs +7 -7
- package/types/sorted_set/module.f.d.mts +6 -12
- package/types/sorted_set/module.f.mjs +7 -16
- package/types/sorted_set/test.f.mjs +7 -7
- package/types/string/module.f.d.mts +8 -14
- package/types/string/module.f.mjs +10 -21
- package/types/string/test.f.mjs +2 -2
- package/types/string_set/module.f.d.mts +8 -16
- package/types/string_set/module.f.mjs +12 -27
- package/types/string_set/test.f.mjs +1 -1
- package/issues/lang/2351-property-accessor.md +0 -44
- package/issues/lang/2352-property-call.md +0 -43
- package/issues/lang/2353-property-at.md +0 -19
- package/issues/test-debug.md +0 -12
- /package/issues/{esm.md → 02-esm.md} +0 -0
- /package/issues/{djs.md → 03-djs.md} +0 -0
- /package/issues/{fs-load.md → 11-fs-load.md} +0 -0
- /package/issues/lang/{2330-grouping.md → 2350-grouping.md} +0 -0
package/types/map/module.f.mjs
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
2
|
import * as BtreeTypes from '../btree/types/module.f.mjs'
|
|
3
|
-
import btf from '../btree/find/module.f.mjs'
|
|
3
|
+
import * as btf from '../btree/find/module.f.mjs'
|
|
4
4
|
const { value, find } = btf
|
|
5
|
-
import bts from '../btree/set/module.f.mjs'
|
|
5
|
+
import * as bts from '../btree/set/module.f.mjs'
|
|
6
6
|
const { set } = bts
|
|
7
|
-
import btr from '../btree/remove/module.f.mjs'
|
|
7
|
+
import * as btr from '../btree/remove/module.f.mjs'
|
|
8
8
|
const { remove: btreeRemove } = btr
|
|
9
|
-
import bt from '../btree/module.f.mjs'
|
|
9
|
+
import * as bt from '../btree/module.f.mjs'
|
|
10
10
|
const { values } = bt
|
|
11
11
|
import * as Compare from '../function/compare/module.f.mjs'
|
|
12
|
-
import s from '../string/module.f.mjs'
|
|
12
|
+
import * as s from '../string/module.f.mjs'
|
|
13
13
|
const { cmp } = s
|
|
14
|
-
import
|
|
14
|
+
import * as list from '../list/module.f.mjs'
|
|
15
15
|
const { fold } = list
|
|
16
16
|
import * as Operator from '../function/operator/module.f.mjs'
|
|
17
17
|
|
|
@@ -36,7 +36,7 @@ import * as Operator from '../function/operator/module.f.mjs'
|
|
|
36
36
|
const keyCmp = a => ([b]) => cmp(a)(b)
|
|
37
37
|
|
|
38
38
|
/** @type {(name: string) => <T>(map: Map<T>) => T|null} */
|
|
39
|
-
const at = name => map => {
|
|
39
|
+
export const at = name => map => {
|
|
40
40
|
if (map === null) { return null }
|
|
41
41
|
const result = value(find(keyCmp(name))(map).first)
|
|
42
42
|
return result === null ? null : result[1]
|
|
@@ -47,36 +47,21 @@ const setReduceEntry = reduce => entry =>
|
|
|
47
47
|
set(keyCmp(entry[0]))(old => old === null ? entry : [old[0], reduce(old[1])(entry[1])])
|
|
48
48
|
|
|
49
49
|
/** @type {<T>(reduce: Operator.Reduce<T>) => (name: string) => (value: T) => (map: Map<T>) => Map<T>} */
|
|
50
|
-
const setReduce = reduce => name => value => setReduceEntry(reduce)([name, value])
|
|
50
|
+
export const setReduce = reduce => name => value => setReduceEntry(reduce)([name, value])
|
|
51
51
|
|
|
52
52
|
/** @type {<T>(a: T) => (b: T) => T} */
|
|
53
53
|
const replace = () => b => b
|
|
54
54
|
|
|
55
55
|
/** @type {(name: string) => <T>(value: T) => (map: Map<T>) => Map<T>} */
|
|
56
|
-
const setReplace = name => value => setReduceEntry(replace)([name, value])
|
|
56
|
+
export const setReplace = name => value => setReduceEntry(replace)([name, value])
|
|
57
57
|
|
|
58
|
-
/** @type {<T>(map: Map<T>) =>
|
|
59
|
-
const entries = values
|
|
58
|
+
/** @type {<T>(map: Map<T>) => list.List<Entry<T>>} */
|
|
59
|
+
export const entries = values
|
|
60
60
|
|
|
61
|
-
/** @type {<T>(entries:
|
|
62
|
-
const fromEntries = fold(setReduceEntry(replace))(null)
|
|
61
|
+
/** @type {<T>(entries: list.List<Entry<T>>) => Map<T>} */
|
|
62
|
+
export const fromEntries = fold(setReduceEntry(replace))(null)
|
|
63
63
|
|
|
64
64
|
/** @type {(name: string) => <T>(map: Map<T>) => Map<T>} */
|
|
65
|
-
const remove = name => btreeRemove(keyCmp(name))
|
|
65
|
+
export const remove = name => btreeRemove(keyCmp(name))
|
|
66
66
|
|
|
67
|
-
export
|
|
68
|
-
/** @readonly */
|
|
69
|
-
empty: null,
|
|
70
|
-
/** @readonly */
|
|
71
|
-
at,
|
|
72
|
-
/** @readonly */
|
|
73
|
-
setReduce,
|
|
74
|
-
/** @readonly */
|
|
75
|
-
setReplace,
|
|
76
|
-
/** @readonly */
|
|
77
|
-
entries,
|
|
78
|
-
/** @readonly */
|
|
79
|
-
fromEntries,
|
|
80
|
-
/** @readonly */
|
|
81
|
-
remove,
|
|
82
|
-
}
|
|
67
|
+
export const empty = null
|
package/types/map/test.f.mjs
CHANGED
|
@@ -1,26 +1,16 @@
|
|
|
1
|
-
declare namespace _default {
|
|
2
|
-
export { empty };
|
|
3
|
-
export { universe };
|
|
4
|
-
export { has };
|
|
5
|
-
export { complement };
|
|
6
|
-
export { set };
|
|
7
|
-
export { unset };
|
|
8
|
-
export { setRange };
|
|
9
|
-
}
|
|
10
|
-
export default _default;
|
|
11
|
-
export type NibbleSet = number;
|
|
12
|
-
export type Nibble = number;
|
|
13
1
|
/** @typedef {number} NibbleSet */
|
|
14
2
|
/** @typedef {number} Nibble */
|
|
15
|
-
|
|
16
|
-
|
|
3
|
+
export const empty: 0;
|
|
4
|
+
export const universe: 65535;
|
|
17
5
|
/** @type {(n: Nibble) => (s: NibbleSet) => boolean} */
|
|
18
|
-
|
|
19
|
-
/** @type {(n: NibbleSet) => NibbleSet} */
|
|
20
|
-
declare const complement: (n: NibbleSet) => NibbleSet;
|
|
6
|
+
export const has: (n: Nibble) => (s: NibbleSet) => boolean;
|
|
21
7
|
/** @type {(n: Nibble) => (s: NibbleSet) => NibbleSet} */
|
|
22
|
-
|
|
8
|
+
export const set: (n: Nibble) => (s: NibbleSet) => NibbleSet;
|
|
9
|
+
/** @type {(n: NibbleSet) => NibbleSet} */
|
|
10
|
+
export const complement: (n: NibbleSet) => NibbleSet;
|
|
23
11
|
/** @type {(n: Nibble) => (s: NibbleSet) => NibbleSet} */
|
|
24
|
-
|
|
12
|
+
export const unset: (n: Nibble) => (s: NibbleSet) => NibbleSet;
|
|
25
13
|
/** @type {(r: readonly[number, number]) => (s: NibbleSet) => NibbleSet} */
|
|
26
|
-
|
|
14
|
+
export const setRange: (r: readonly [number, number]) => (s: NibbleSet) => NibbleSet;
|
|
15
|
+
export type NibbleSet = number;
|
|
16
|
+
export type Nibble = number;
|
|
@@ -2,44 +2,27 @@
|
|
|
2
2
|
/** @typedef {number} NibbleSet */
|
|
3
3
|
/** @typedef {number} Nibble */
|
|
4
4
|
|
|
5
|
-
const empty = 0
|
|
5
|
+
export const empty = 0
|
|
6
6
|
|
|
7
|
-
const universe = 0xFFFF
|
|
7
|
+
export const universe = 0xFFFF
|
|
8
8
|
|
|
9
9
|
/** @type {(n: Nibble) => NibbleSet} */
|
|
10
10
|
const one = n => 1 << n
|
|
11
11
|
|
|
12
12
|
/** @type {(n: Nibble) => (s: NibbleSet) => boolean} */
|
|
13
|
-
const has = n => s => ((s >> n) & 1) === 1
|
|
13
|
+
export const has = n => s => ((s >> n) & 1) === 1
|
|
14
14
|
|
|
15
15
|
/** @type {(n: Nibble) => (s: NibbleSet) => NibbleSet} */
|
|
16
|
-
const set = n => s => s | one(n)
|
|
16
|
+
export const set = n => s => s | one(n)
|
|
17
17
|
|
|
18
18
|
/** @type {(n: NibbleSet) => NibbleSet} */
|
|
19
|
-
const complement = s => universe ^ s
|
|
19
|
+
export const complement = s => universe ^ s
|
|
20
20
|
|
|
21
21
|
/** @type {(n: Nibble) => (s: NibbleSet) => NibbleSet} */
|
|
22
|
-
const unset = n => s => s & complement(one(n))
|
|
22
|
+
export const unset = n => s => s & complement(one(n))
|
|
23
23
|
|
|
24
24
|
/** @type {(r: readonly[number, number]) => NibbleSet} */
|
|
25
25
|
const range = ([a, b]) => one(b - a + 1) - 1 << a
|
|
26
26
|
|
|
27
27
|
/** @type {(r: readonly[number, number]) => (s: NibbleSet) => NibbleSet} */
|
|
28
|
-
const setRange = r => s => s | range(r)
|
|
29
|
-
|
|
30
|
-
export default {
|
|
31
|
-
/** @readonly */
|
|
32
|
-
empty,
|
|
33
|
-
/** @readonly */
|
|
34
|
-
universe,
|
|
35
|
-
/** @readonly */
|
|
36
|
-
has,
|
|
37
|
-
/** @readonly */
|
|
38
|
-
complement,
|
|
39
|
-
/** @readonly */
|
|
40
|
-
set,
|
|
41
|
-
/** @readonly */
|
|
42
|
-
unset,
|
|
43
|
-
/** @readonly */
|
|
44
|
-
setRange,
|
|
45
|
-
}
|
|
28
|
+
export const setRange = r => s => s | range(r)
|
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
declare namespace _default {
|
|
2
|
-
export { map };
|
|
3
|
-
export { match };
|
|
4
|
-
}
|
|
5
|
-
export default _default;
|
|
6
|
-
export type Nullable<T> = T | null;
|
|
7
1
|
/**
|
|
8
2
|
* @template T
|
|
9
3
|
* @typedef {T|null} Nullable
|
|
10
4
|
*/
|
|
11
5
|
/** @type {<T, R>(f: (value: T) => R) => (value: Nullable<T>) => Nullable<R>} */
|
|
12
|
-
|
|
6
|
+
export const map: <T, R>(f: (value: T) => R) => (value: Nullable<T>) => Nullable<R>;
|
|
13
7
|
/** @type {<T, R>(f: (_: T) => R) => (none: () => R) => (_: Nullable<T>) => Nullable<R>} */
|
|
14
|
-
|
|
8
|
+
export const match: <T, R>(f: (_: T) => R) => (none: () => R) => (_: Nullable<T>) => Nullable<R>;
|
|
9
|
+
export type Nullable<T> = T | null;
|
|
@@ -5,14 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
/** @type {<T, R>(f: (value: T) => R) => (value: Nullable<T>) => Nullable<R>} */
|
|
8
|
-
const map = f => value => value === null ? null : f(value)
|
|
8
|
+
export const map = f => value => value === null ? null : f(value)
|
|
9
9
|
|
|
10
10
|
/** @type {<T, R>(f: (_: T) => R) => (none: () => R) => (_: Nullable<T>) => Nullable<R>} */
|
|
11
|
-
const match = f => none => value => value === null ? none() : f(value)
|
|
12
|
-
|
|
13
|
-
export default {
|
|
14
|
-
/** @readonly */
|
|
15
|
-
map,
|
|
16
|
-
/** @readonly */
|
|
17
|
-
match,
|
|
18
|
-
}
|
|
11
|
+
export const match = f => none => value => value === null ? none() : f(value)
|
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
declare const sum: (input: import("../list/module.f.mjs").List<number>) => number;
|
|
9
|
-
declare const min: (input: import("../list/module.f.mjs").List<number>) => number | null;
|
|
10
|
-
declare const max: (input: import("../list/module.f.mjs").List<number>) => number | null;
|
|
11
|
-
/** @type {(a: number) => (b: number) => Compare.Sign} */
|
|
12
|
-
declare const cmp: (a: number) => (b: number) => Compare.Sign;
|
|
13
|
-
import * as Compare from '../function/compare/module.f.mjs';
|
|
1
|
+
export const sum: (input: list.List<number>) => number;
|
|
2
|
+
export const min: (input: list.List<number>) => number | null;
|
|
3
|
+
export const max: (input: list.List<number>) => number | null;
|
|
4
|
+
/** @type {(a: number) => (b: number) => compare.Sign} */
|
|
5
|
+
export const cmp: (a: number) => (b: number) => compare.Sign;
|
|
6
|
+
import * as list from '../list/module.f.mjs';
|
|
7
|
+
import * as compare from '../function/compare/module.f.mjs';
|
|
@@ -1,27 +1,16 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
|
-
import list from '../list/module.f.mjs'
|
|
2
|
+
import * as list from '../list/module.f.mjs'
|
|
3
3
|
const { reduce } = list
|
|
4
|
-
import operator from '../function/operator/module.f.mjs'
|
|
4
|
+
import * as operator from '../function/operator/module.f.mjs'
|
|
5
5
|
const { addition, min: minOp, max: maxOp } = operator
|
|
6
|
-
import
|
|
6
|
+
import * as compare from '../function/compare/module.f.mjs'
|
|
7
7
|
const { unsafeCmp } = compare
|
|
8
8
|
|
|
9
|
-
const sum = reduce(addition)(0)
|
|
9
|
+
export const sum = reduce(addition)(0)
|
|
10
10
|
|
|
11
|
-
const min = reduce(minOp)(null)
|
|
11
|
+
export const min = reduce(minOp)(null)
|
|
12
12
|
|
|
13
|
-
const max = reduce(maxOp)(null)
|
|
13
|
+
export const max = reduce(maxOp)(null)
|
|
14
14
|
|
|
15
|
-
/** @type {(a: number) => (b: number) =>
|
|
16
|
-
const cmp = unsafeCmp
|
|
17
|
-
|
|
18
|
-
export default {
|
|
19
|
-
/** @readonly */
|
|
20
|
-
sum,
|
|
21
|
-
/** @readonly */
|
|
22
|
-
min,
|
|
23
|
-
/** @readonly */
|
|
24
|
-
max,
|
|
25
|
-
/** @readonly */
|
|
26
|
-
cmp,
|
|
27
|
-
}
|
|
15
|
+
/** @type {(a: number) => (b: number) => compare.Sign} */
|
|
16
|
+
export const cmp = unsafeCmp
|
package/types/number/test.f.mjs
CHANGED
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
declare namespace _default {
|
|
2
|
-
export { at };
|
|
3
|
-
export { sort };
|
|
4
|
-
export { fromEntries };
|
|
5
|
-
export { fromMap };
|
|
6
|
-
}
|
|
7
|
-
export default _default;
|
|
8
|
-
export type Map<T> = { readonly [k in string]: T; };
|
|
9
|
-
export type Entry<T> = readonly [string, T];
|
|
10
1
|
/**
|
|
11
2
|
* @template T
|
|
12
3
|
* @typedef {{
|
|
@@ -18,12 +9,14 @@ export type Entry<T> = readonly [string, T];
|
|
|
18
9
|
* @typedef {readonly[string, T]} Entry
|
|
19
10
|
*/
|
|
20
11
|
/** @type {(name: string) => <T>(object: Map<T>) => T|null} */
|
|
21
|
-
|
|
22
|
-
/** @type {<T>(e:
|
|
23
|
-
|
|
24
|
-
/** @type {<T>(e:
|
|
25
|
-
|
|
26
|
-
/** @type {<T>(m:
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
12
|
+
export const at: (name: string) => <T>(object: Map<T>) => T | null;
|
|
13
|
+
/** @type {<T>(e: list.List<Entry<T>>) => list.List<Entry<T>>} */
|
|
14
|
+
export const sort: <T>(e: list.List<Entry<T>>) => list.List<Entry<T>>;
|
|
15
|
+
/** @type {<T>(e: list.List<Entry<T>>) => Map<T>} */
|
|
16
|
+
export const fromEntries: <T>(e: list.List<Entry<T>>) => Map<T>;
|
|
17
|
+
/** @type {<T>(m: btMap.Map<T>) => Map<T>} */
|
|
18
|
+
export const fromMap: <T>(m: btMap.Map<T>) => Map<T>;
|
|
19
|
+
export type Map<T> = { readonly [k in string]: T; };
|
|
20
|
+
export type Entry<T> = readonly [string, T];
|
|
21
|
+
import * as list from '../list/module.f.mjs';
|
|
22
|
+
import * as btMap from '../map/module.f.mjs';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
|
-
import
|
|
2
|
+
import * as list from '../list/module.f.mjs'
|
|
3
3
|
const { iterable } = list
|
|
4
|
-
import
|
|
4
|
+
import * as btMap from '../map/module.f.mjs'
|
|
5
5
|
const { entries: mapEntries, fromEntries: mapFromEntries } = btMap
|
|
6
6
|
const { getOwnPropertyDescriptor, fromEntries: objectFromEntries } = Object
|
|
7
7
|
|
|
@@ -18,27 +18,16 @@ const { getOwnPropertyDescriptor, fromEntries: objectFromEntries } = Object
|
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
20
|
/** @type {(name: string) => <T>(object: Map<T>) => T|null} */
|
|
21
|
-
const at = name => object => {
|
|
21
|
+
export const at = name => object => {
|
|
22
22
|
const r = getOwnPropertyDescriptor(object, name)
|
|
23
23
|
return r === void 0 ? null : r.value
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
/** @type {<T>(e:
|
|
27
|
-
const sort = e => mapEntries(mapFromEntries(e))
|
|
26
|
+
/** @type {<T>(e: list.List<Entry<T>>) => list.List<Entry<T>>} */
|
|
27
|
+
export const sort = e => mapEntries(mapFromEntries(e))
|
|
28
28
|
|
|
29
|
-
/** @type {<T>(e:
|
|
30
|
-
const fromEntries = e => objectFromEntries(iterable(e))
|
|
29
|
+
/** @type {<T>(e: list.List<Entry<T>>) => Map<T>} */
|
|
30
|
+
export const fromEntries = e => objectFromEntries(iterable(e))
|
|
31
31
|
|
|
32
|
-
/** @type {<T>(m:
|
|
33
|
-
const fromMap = m => fromEntries(mapEntries(m))
|
|
34
|
-
|
|
35
|
-
export default {
|
|
36
|
-
/** @readonly */
|
|
37
|
-
at,
|
|
38
|
-
/** @readonly */
|
|
39
|
-
sort,
|
|
40
|
-
/** @readonly */
|
|
41
|
-
fromEntries,
|
|
42
|
-
/** @readonly */
|
|
43
|
-
fromMap,
|
|
44
|
-
}
|
|
32
|
+
/** @type {<T>(m: btMap.Map<T>) => Map<T>} */
|
|
33
|
+
export const fromMap = m => fromEntries(mapEntries(m))
|
package/types/object/test.f.mjs
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
declare namespace _default {
|
|
2
|
-
export { contains };
|
|
3
|
-
export { one };
|
|
4
|
-
}
|
|
5
|
-
export default _default;
|
|
6
|
-
export type Range = readonly [number, number];
|
|
7
1
|
/** @typedef {readonly[number,number]} Range */
|
|
8
2
|
/** @type {(range: Range) => (i: number) => boolean} */
|
|
9
|
-
|
|
3
|
+
export const contains: (range: Range) => (i: number) => boolean;
|
|
10
4
|
/** @type {(i: number) => Range} */
|
|
11
|
-
|
|
5
|
+
export const one: (i: number) => Range;
|
|
6
|
+
export type Range = readonly [number, number];
|
package/types/range/module.f.mjs
CHANGED
|
@@ -2,14 +2,7 @@
|
|
|
2
2
|
/** @typedef {readonly[number,number]} Range */
|
|
3
3
|
|
|
4
4
|
/** @type {(range: Range) => (i: number) => boolean} */
|
|
5
|
-
const contains = ([b, e]) => i => b <= i && i <= e
|
|
5
|
+
export const contains = ([b, e]) => i => b <= i && i <= e
|
|
6
6
|
|
|
7
7
|
/** @type {(i: number) => Range} */
|
|
8
|
-
const one = a => [a, a]
|
|
9
|
-
|
|
10
|
-
export default {
|
|
11
|
-
/** @readonly */
|
|
12
|
-
contains,
|
|
13
|
-
/** @readonly */
|
|
14
|
-
one,
|
|
15
|
-
}
|
|
8
|
+
export const one = a => [a, a]
|
package/types/range/test.f.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
export
|
|
1
|
+
/** @type {<T>(op: Operators<T>) => RangeMerge<T>} */
|
|
2
|
+
export const merge: <T>(op: Operators<T>) => RangeMerge<T>;
|
|
3
|
+
/** @type {<T>(def: T) => (value: number) => (rm: RangeMapArray<T>) => T} */
|
|
4
|
+
export const get: <T>(def: T) => (value: number) => (rm: RangeMapArray<T>) => T;
|
|
5
|
+
/** @type {<T>(def: T) => (r: Range.Range) => (value: T) => RangeMapArray<T>} */
|
|
6
|
+
export const fromRange: <T>(def: T) => (r: Range.Range) => (value: T) => RangeMapArray<T>;
|
|
7
7
|
export type Entry<T> = [T, number];
|
|
8
|
-
export type RangeMap<T> =
|
|
8
|
+
export type RangeMap<T> = sortedList.SortedList<Entry<T>>;
|
|
9
9
|
export type RangeMapArray<T> = readonly Entry<T>[];
|
|
10
10
|
export type Operators<T> = {
|
|
11
11
|
readonly union: O.Reduce<T>;
|
|
@@ -13,13 +13,7 @@ export type Operators<T> = {
|
|
|
13
13
|
};
|
|
14
14
|
export type RangeState<T> = Option.Nullable<Entry<T>>;
|
|
15
15
|
export type RangeMerge<T> = O.Reduce<RangeMap<T>>;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
/** @type {<T>(def: T) => (value: number) => (rm: RangeMapArray<T>) => T} */
|
|
19
|
-
declare const get: <T>(def: T) => (value: number) => (rm: RangeMapArray<T>) => T;
|
|
20
|
-
/** @type {<T>(def: T) => (r: Range.Range) => (value: T) => RangeMapArray<T>} */
|
|
21
|
-
declare const fromRange: <T>(def: T) => (r: Range.Range) => (value: T) => RangeMapArray<T>;
|
|
22
|
-
import * as SortedList from '../sorted_list/module.f.mjs';
|
|
16
|
+
import * as Range from '../range/module.f.mjs';
|
|
17
|
+
import * as sortedList from '../sorted_list/module.f.mjs';
|
|
23
18
|
import * as O from '../function/operator/module.f.mjs';
|
|
24
19
|
import * as Option from '../nullable/module.f.mjs';
|
|
25
|
-
import * as Range from '../range/module.f.mjs';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
|
-
import
|
|
2
|
+
import * as sortedList from '../sorted_list/module.f.mjs'
|
|
3
3
|
const { genericMerge } = sortedList
|
|
4
|
-
import list from '../list/module.f.mjs'
|
|
4
|
+
import * as list from '../list/module.f.mjs'
|
|
5
5
|
const { next } = list
|
|
6
6
|
import * as Option from '../nullable/module.f.mjs'
|
|
7
|
-
import number from '../number/module.f.mjs'
|
|
7
|
+
import * as number from '../number/module.f.mjs'
|
|
8
8
|
const { cmp } = number
|
|
9
9
|
import * as O from '../function/operator/module.f.mjs'
|
|
10
10
|
import * as Range from '../range/module.f.mjs'
|
|
@@ -16,7 +16,7 @@ import * as Range from '../range/module.f.mjs'
|
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* @template T
|
|
19
|
-
* @typedef {
|
|
19
|
+
* @typedef {sortedList.SortedList<Entry<T>>} RangeMap
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
22
|
/**
|
|
@@ -42,7 +42,7 @@ import * as Range from '../range/module.f.mjs'
|
|
|
42
42
|
* @typedef {O.Reduce<RangeMap<T>>} RangeMerge
|
|
43
43
|
*/
|
|
44
44
|
|
|
45
|
-
/** @type {<T>(union: O.Reduce<T>) => (equal: O.Equal<T>) =>
|
|
45
|
+
/** @type {<T>(union: O.Reduce<T>) => (equal: O.Equal<T>) => sortedList.ReduceOp<Entry<T>, RangeState<T>>} */
|
|
46
46
|
const reduceOp = union => equal => state => ([aItem, aMax]) => ([bItem, bMax]) => {
|
|
47
47
|
const sign = cmp(aMax)(bMax)
|
|
48
48
|
const min = sign === 1 ? bMax : aMax
|
|
@@ -51,7 +51,7 @@ const reduceOp = union => equal => state => ([aItem, aMax]) => ([bItem, bMax]) =
|
|
|
51
51
|
return [newState, sign, [u, min]]
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
/** @type {<T>(equal: O.Equal<T>) =>
|
|
54
|
+
/** @type {<T>(equal: O.Equal<T>) => sortedList.TailReduce<Entry<T>, RangeState<T>>} */
|
|
55
55
|
const tailReduce = equal => state => tail => {
|
|
56
56
|
if (state === null) { return tail }
|
|
57
57
|
const tailResult = next(tail)
|
|
@@ -61,10 +61,10 @@ const tailReduce = equal => state => tail => {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
/** @type {<T>(op: Operators<T>) => RangeMerge<T>} */
|
|
64
|
-
const merge = ({ union, equal }) => genericMerge({ reduceOp: reduceOp(union)(equal), tailReduce: tailReduce(equal) })(null)
|
|
64
|
+
export const merge = ({ union, equal }) => genericMerge({ reduceOp: reduceOp(union)(equal), tailReduce: tailReduce(equal) })(null)
|
|
65
65
|
|
|
66
66
|
/** @type {<T>(def: T) => (value: number) => (rm: RangeMapArray<T>) => T} */
|
|
67
|
-
const get = def => value => rm => {
|
|
67
|
+
export const get = def => value => rm => {
|
|
68
68
|
const len = rm.length
|
|
69
69
|
let b = 0
|
|
70
70
|
let e = len - 1
|
|
@@ -81,13 +81,4 @@ const get = def => value => rm => {
|
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
/** @type {<T>(def: T) => (r: Range.Range) => (value: T) => RangeMapArray<T>} */
|
|
84
|
-
const fromRange = def => ([a, b]) => v => [[def, a - 1], [v, b]]
|
|
85
|
-
|
|
86
|
-
export default {
|
|
87
|
-
/** @readonly */
|
|
88
|
-
merge,
|
|
89
|
-
/** @readonly */
|
|
90
|
-
get,
|
|
91
|
-
/** @readonly */
|
|
92
|
-
fromRange,
|
|
93
|
-
}
|
|
84
|
+
export const fromRange = def => ([a, b]) => v => [[def, a - 1], [v, b]]
|