functionalscript 0.1.594 → 0.1.597
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/npm-publish.yml +2 -1
- package/com/cpp/module.f.d.mts +8 -0
- package/com/cpp/module.f.mjs +18 -18
- package/com/cpp/test.f.d.mts +2 -0
- package/com/cpp/testlib.f.d.mts +2 -0
- package/com/cs/module.f.d.mts +8 -0
- package/com/cs/module.f.mjs +1 -1
- package/com/cs/test.f.d.mts +2 -0
- package/com/cs/testlib.f.d.mts +2 -0
- package/com/rust/module.f.d.mts +28 -0
- package/com/rust/module.f.mjs +30 -30
- package/com/rust/test.f.d.mts +2 -0
- package/com/rust/testlib.f.d.mts +2 -0
- package/com/test/build.d.mts +1 -0
- package/com/test/build.f.d.mts +26 -0
- package/com/test/build.mjs +2 -2
- package/com/types/module.f.d.mts +28 -0
- package/com/types/module.f.mjs +1 -1
- package/com/types/testlib.f.d.mts +44 -0
- package/commonjs/build/module.f.d.mts +24 -0
- package/commonjs/build/test.f.d.mts +3 -0
- package/commonjs/module/function/module.f.d.mts +7 -0
- package/commonjs/module/module.f.d.mts +57 -0
- package/commonjs/module/module.f.mjs +1 -1
- package/commonjs/module.d.mts +7 -0
- package/commonjs/module.f.d.mts +4 -0
- package/commonjs/package/dependencies/module.f.d.mts +10 -0
- package/commonjs/package/dependencies/module.f.mjs +3 -3
- package/commonjs/package/dependencies/test.f.d.mts +2 -0
- package/commonjs/package/module.f.d.mts +27 -0
- package/commonjs/package/module.f.mjs +4 -4
- package/commonjs/package/test.f.d.mts +2 -0
- package/commonjs/path/module.f.d.mts +67 -0
- package/commonjs/path/module.f.mjs +5 -5
- package/commonjs/path/test.f.d.mts +25 -0
- package/commonjs/path/test.f.mjs +7 -7
- package/commonjs/test.d.mts +8 -0
- package/commonjs/test.mjs +2 -2
- package/dev/index.d.mts +1 -0
- package/dev/module.d.mts +26 -0
- package/dev/module.f.d.mts +4 -0
- package/dev/test/module.f.d.mts +26 -0
- package/dev/test.d.mts +3 -0
- package/dev/test.f.d.mts +9 -0
- package/djs/module.f.d.mts +25 -0
- package/djs/module.f.mjs +1 -1
- package/djs/parser/module.f.d.mts +40 -0
- package/djs/parser/test.f.d.mts +8 -0
- package/djs/test.f.d.mts +12 -0
- package/djs/tokenizer/module.f.d.mts +17 -0
- package/djs/tokenizer/module.f.mjs +1 -1
- package/djs/tokenizer/test.f.d.mts +6 -0
- package/djs/tokenizer/test.f.mjs +1 -1
- package/fsc/module.f.d.mts +12 -0
- package/fsc/test.f.d.mts +4 -0
- package/fsm/module.f.d.mts +21 -0
- package/fsm/test.f.d.mts +5 -0
- package/html/module.f.d.mts +20 -0
- package/html/module.f.mjs +1 -1
- package/html/test.f.d.mts +10 -0
- package/index.f.d.mts +83 -0
- package/js/tokenizer/module.f.d.mts +150 -0
- package/js/tokenizer/test.f.d.mts +8 -0
- package/js/tokenizer/test.f.mjs +3 -3
- package/json/module.f.d.mts +41 -0
- package/json/parser/module.f.d.mts +36 -0
- package/json/parser/module.f.mjs +12 -12
- package/json/parser/test.f.d.mts +5 -0
- package/json/parser/test.f.mjs +2 -2
- package/json/serializer/module.f.d.mts +45 -0
- package/json/serializer/module.f.mjs +2 -2
- package/json/serializer/test.f.d.mts +8 -0
- package/json/test.f.d.mts +8 -0
- package/json/tokenizer/module.f.d.mts +17 -0
- package/json/tokenizer/module.f.mjs +7 -7
- package/json/tokenizer/test.f.d.mts +6 -0
- package/json/tokenizer/test.f.mjs +3 -3
- package/jsr.json +1 -1
- package/nodejs/version/main.d.mts +1 -0
- package/nodejs/version/module.f.d.mts +18 -0
- package/nodejs/version/test.f.d.mts +2 -0
- package/package.json +2 -1
- package/prime_field/module.f.d.mts +44 -0
- package/prime_field/test.f.d.mts +12 -0
- package/secp/module.f.d.mts +49 -0
- package/secp/module.f.mjs +6 -6
- package/secp/test.f.d.mts +4 -0
- package/secp/test.f.mjs +5 -5
- package/sha2/module.f.d.mts +23 -0
- package/sha2/module.f.mjs +1 -1
- package/sha2/test.f.d.mts +10 -0
- package/sha2/test.f.mjs +0 -1
- package/text/ascii/module.f.d.mts +73 -0
- package/text/ascii/test.f.d.mts +4 -0
- package/text/module.f.d.mts +18 -0
- package/text/sgr/module.f.d.mts +14 -0
- package/text/test.f.d.mts +2 -0
- package/text/utf16/module.f.d.mts +19 -0
- package/text/utf16/test.f.d.mts +6 -0
- package/text/utf16/test.f.mjs +2 -2
- package/text/utf8/module.f.d.mts +15 -0
- package/text/utf8/module.f.mjs +2 -2
- package/text/utf8/test.f.d.mts +6 -0
- package/types/array/module.f.d.mts +41 -0
- package/types/array/test.f.d.mts +10 -0
- package/types/bigfloat/module.f.d.mts +11 -0
- package/types/bigfloat/test.f.d.mts +6 -0
- package/types/bigint/module.f.d.mts +77 -0
- package/types/bigint/module.f.mjs +5 -5
- package/types/bigint/test.f.d.mts +16 -0
- package/types/btree/find/module.f.d.mts +42 -0
- package/types/btree/find/module.f.mjs +4 -4
- package/types/btree/find/test.f.d.mts +2 -0
- package/types/btree/find/test.f.mjs +2 -2
- package/types/btree/module.f.d.mts +9 -0
- package/types/btree/remove/module.f.d.mts +19 -0
- package/types/btree/remove/module.f.mjs +12 -12
- package/types/btree/remove/test.f.d.mts +7 -0
- package/types/btree/remove/test.f.mjs +5 -5
- package/types/btree/set/module.f.d.mts +9 -0
- package/types/btree/set/module.f.mjs +6 -6
- package/types/btree/set/test.f.d.mts +2 -0
- package/types/btree/set/test.f.mjs +32 -32
- package/types/btree/test.f.d.mts +13 -0
- package/types/btree/test.f.mjs +7 -11
- package/types/btree/types/module.f.d.mts +16 -0
- package/types/byte_set/module.f.d.mts +38 -0
- package/types/byte_set/module.f.mjs +2 -2
- package/types/byte_set/test.f.d.mts +13 -0
- package/types/byte_set/test.f.mjs +3 -3
- package/types/function/compare/module.f.d.mts +29 -0
- package/types/function/compare/module.f.mjs +4 -4
- package/types/function/compare/test.f.d.mts +2 -0
- package/types/function/module.f.d.mts +36 -0
- package/types/function/operator/module.f.d.mts +75 -0
- package/types/function/test.f.d.mts +2 -0
- package/types/list/module.f.d.mts +117 -0
- package/types/list/test.f.d.mts +38 -0
- package/types/map/module.f.d.mts +30 -0
- package/types/map/module.f.mjs +4 -4
- package/types/map/test.f.d.mts +5 -0
- package/types/nibble_set/module.f.d.mts +26 -0
- package/types/nibble_set/test.f.d.mts +13 -0
- package/types/nullable/module.f.d.mts +14 -0
- package/types/nullable/test.f.d.mts +2 -0
- package/types/number/module.f.d.mts +13 -0
- package/types/number/test.f.d.mts +11 -0
- package/types/object/module.f.d.mts +29 -0
- package/types/object/test.f.d.mts +5 -0
- package/types/range/module.f.d.mts +11 -0
- package/types/range/test.f.d.mts +2 -0
- package/types/range_map/module.f.d.mts +25 -0
- package/types/range_map/module.f.mjs +5 -5
- package/types/range_map/test.f.d.mts +6 -0
- package/types/range_map/test.f.mjs +2 -2
- package/types/result/module.d.mts +7 -0
- package/types/result/module.f.d.mts +28 -0
- package/types/sorted_list/module.f.d.mts +59 -0
- package/types/sorted_list/test.f.d.mts +5 -0
- package/types/sorted_list/test.f.mjs +2 -2
- package/types/sorted_set/module.f.d.mts +25 -0
- package/types/sorted_set/test.f.d.mts +6 -0
- package/types/sorted_set/test.f.mjs +1 -1
- package/types/string/module.f.d.mts +15 -0
- package/types/string/test.f.d.mts +15 -0
- package/types/string_set/module.f.d.mts +21 -0
- package/types/string_set/test.f.d.mts +5 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
declare namespace _default {
|
|
2
|
+
export { find };
|
|
3
|
+
export { value };
|
|
4
|
+
export { isFound };
|
|
5
|
+
}
|
|
6
|
+
export default _default;
|
|
7
|
+
export type FirstLeaf1<T> = readonly [cmpT.Index3, _.Leaf1<T>];
|
|
8
|
+
export type FirstBranch3<T> = readonly [1, _.Branch3<T>];
|
|
9
|
+
export type FirstLeaf2<T> = readonly [cmpT.Index5, _.Leaf2<T>];
|
|
10
|
+
export type FirstBranch5<T> = readonly [1 | 3, _.Branch5<T>];
|
|
11
|
+
export type First<T> = FirstLeaf1<T> | FirstBranch3<T> | FirstLeaf2<T> | FirstBranch5<T>;
|
|
12
|
+
export type PathItem3<T> = readonly [0 | 2, _.Branch3<T>];
|
|
13
|
+
export type PathItem5<T> = readonly [0 | 2 | 4, _.Branch5<T>];
|
|
14
|
+
export type PathItem<T> = PathItem3<T> | PathItem5<T>;
|
|
15
|
+
export type Path<T> = List.List<PathItem<T>>;
|
|
16
|
+
/**
|
|
17
|
+
* <T>
|
|
18
|
+
*/
|
|
19
|
+
export type Result<T> = {
|
|
20
|
+
readonly first: First<T>;
|
|
21
|
+
readonly tail: Path<T>;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* @template T
|
|
25
|
+
* @typedef {List.List<PathItem<T>>} Path
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* @template T
|
|
29
|
+
* @typedef {{
|
|
30
|
+
* readonly first: First<T>,
|
|
31
|
+
* readonly tail: Path<T>
|
|
32
|
+
* }} Result<T>
|
|
33
|
+
*/
|
|
34
|
+
/** @type {<T>(c: cmpT.Compare<T>) => (node: _.Node<T>) => Result<T>} */
|
|
35
|
+
declare const find: <T>(c: cmpT.Compare<T>) => (node: _.Node<T>) => Result<T>;
|
|
36
|
+
/** @type {<T>(first: First<T>) => T | null} */
|
|
37
|
+
declare const value: <T>(first: First<T>) => T | null;
|
|
38
|
+
/** @type {<T>(first: First<T>) => boolean} */
|
|
39
|
+
declare const isFound: <T>(first: First<T>) => boolean;
|
|
40
|
+
import * as cmpT from '../../function/compare/module.f.mjs';
|
|
41
|
+
import * as _ from '../types/module.f.mjs';
|
|
42
|
+
import * as List from '../../list/module.f.mjs';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as _ from '../types/module.f.mjs'
|
|
2
|
-
import
|
|
2
|
+
import * as List from '../../list/module.f.mjs'
|
|
3
3
|
import cmp, * as cmpT from '../../function/compare/module.f.mjs'
|
|
4
4
|
const { index3, index5 } = cmp
|
|
5
|
-
import
|
|
5
|
+
import * as Array from '../../array/module.f.mjs'
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* @template T
|
|
@@ -68,12 +68,12 @@ const find = c => {
|
|
|
68
68
|
/** @typedef {typeof c extends cmpT.Compare<infer T> ? T : never} T */
|
|
69
69
|
/** @type {(prior: Path<T>) => (node: _.Node<T>) => Result<T>} */
|
|
70
70
|
const f = tail => node => {
|
|
71
|
-
/** @type {(index:
|
|
71
|
+
/** @type {(index: Array.KeyOf<typeof node>) => Result<T>} */
|
|
72
72
|
const append = index => {
|
|
73
73
|
const first = /** @type {PathItem<T>} */([index, node])
|
|
74
74
|
return f({ first, tail })(child(first))
|
|
75
75
|
}
|
|
76
|
-
/** @type {(index:
|
|
76
|
+
/** @type {(index: Array.KeyOf<typeof node>) => Result<T>} */
|
|
77
77
|
const done = index => ({ first: /** @type {First<T>} */([index, node]), tail })
|
|
78
78
|
switch (node.length) {
|
|
79
79
|
case 1: { return done(i3(node[0])) }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _, * as T from './module.f.mjs'
|
|
2
2
|
import list from '../../list/module.f.mjs'
|
|
3
|
-
import json, * as
|
|
3
|
+
import json, * as Json from '../../../json/module.f.mjs'
|
|
4
4
|
import o from '../../object/module.f.mjs'
|
|
5
5
|
const { sort } = o
|
|
6
6
|
import * as btree from '../types/module.f.mjs'
|
|
@@ -13,7 +13,7 @@ const jsonStr = json.stringify(sort)
|
|
|
13
13
|
/** @type {(node: btree.Node<string>) => (value: string) => btree.Node<string>} */
|
|
14
14
|
const set = node => value => s.set(cmp(value))(() => value)(node)
|
|
15
15
|
|
|
16
|
-
/** @type {(r: T.Result<
|
|
16
|
+
/** @type {(r: T.Result<Json.Unknown>) => string} */
|
|
17
17
|
const str = r => jsonStr(list.toArray(list.map(x => x[0])(r)))
|
|
18
18
|
|
|
19
19
|
/** @type {(i: string) => (m: btree.Node<string>) => string} */
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare namespace _default {
|
|
2
|
+
export let empty: null;
|
|
3
|
+
export { values };
|
|
4
|
+
}
|
|
5
|
+
export default _default;
|
|
6
|
+
/** @type {<T>(tree: _.Tree<T>) => List.List<T>} */
|
|
7
|
+
declare const values: <T>(tree: _.Tree<T>) => List.List<T>;
|
|
8
|
+
import * as _ from './types/module.f.mjs';
|
|
9
|
+
import * as List from '../list/module.f.mjs';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
declare namespace _default {
|
|
2
|
+
export { nodeRemove };
|
|
3
|
+
export { remove };
|
|
4
|
+
}
|
|
5
|
+
export default _default;
|
|
6
|
+
export type Leaf01<T> = null | _.Leaf1<T>;
|
|
7
|
+
export type RemovePath<T> = {
|
|
8
|
+
readonly first: Leaf01<T>;
|
|
9
|
+
readonly tail: Find.Path<T>;
|
|
10
|
+
};
|
|
11
|
+
export type Branch<T> = _.Branch1<T> | _.Branch3<T> | _.Branch5<T>;
|
|
12
|
+
export type Merge<A, T> = (a: A) => (n: _.Branch3<T>) => _.Branch1<T> | _.Branch3<T>;
|
|
13
|
+
/** @type {<T>(c: Cmp.Compare<T>) => (node: _.Node<T>) => _.Tree<T>} */
|
|
14
|
+
declare const nodeRemove: <T>(c: Cmp.Compare<T>) => (node: _.Node<T>) => _.Tree<T>;
|
|
15
|
+
/** @type {<T>(c: Cmp.Compare<T>) => (tree: _.Tree<T>) => _.Tree<T>} */
|
|
16
|
+
declare const remove: <T>(c: Cmp.Compare<T>) => (tree: _.Tree<T>) => _.Tree<T>;
|
|
17
|
+
import * as _ from '../types/module.f.mjs';
|
|
18
|
+
import * as Find from '../find/module.f.mjs';
|
|
19
|
+
import * as Cmp from '../../function/compare/module.f.mjs';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as _ from '../types/module.f.mjs'
|
|
2
|
-
import
|
|
3
|
-
import find, * as
|
|
2
|
+
import * as Cmp from '../../function/compare/module.f.mjs'
|
|
3
|
+
import find, * as Find from '../find/module.f.mjs'
|
|
4
4
|
import list from '../../list/module.f.mjs'
|
|
5
5
|
const { fold, concat, next } = list
|
|
6
|
-
import
|
|
6
|
+
import * as Array from '../../array/module.f.mjs'
|
|
7
7
|
import n from '../../nullable/module.f.mjs'
|
|
8
8
|
const { map } = n
|
|
9
9
|
|
|
@@ -16,11 +16,11 @@ const { map } = n
|
|
|
16
16
|
* @template T
|
|
17
17
|
* @typedef {{
|
|
18
18
|
* readonly first: Leaf01<T>,
|
|
19
|
-
* readonly tail:
|
|
19
|
+
* readonly tail: Find.Path<T>
|
|
20
20
|
* }} RemovePath
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
|
-
/** @type {<T>(tail:
|
|
23
|
+
/** @type {<T>(tail: Find.Path<T>) => (n: _.Node<T>) => readonly[T, RemovePath<T>]} */
|
|
24
24
|
const path = tail => n => {
|
|
25
25
|
switch (n.length) {
|
|
26
26
|
case 1: { return [n[0], { first: null, tail }] }
|
|
@@ -94,10 +94,10 @@ const initValue1 = a => n => {
|
|
|
94
94
|
* @typedef {(a: A) => (n: _.Branch3<T>) => _.Branch1<T> | _.Branch3<T>} Merge
|
|
95
95
|
*/
|
|
96
96
|
|
|
97
|
-
/** @type {<A, T>(ms:
|
|
97
|
+
/** @type {<A, T>(ms: Array.Array2<Merge<A, T>>) => (i: Find.PathItem<T>) => (a: A) => Branch<T>} */
|
|
98
98
|
const reduceX = ms => ([i, n]) => a => {
|
|
99
99
|
const [m0, m2] = ms
|
|
100
|
-
/** @typedef {typeof ms extends
|
|
100
|
+
/** @typedef {typeof ms extends Array.Array2<Merge<infer A, infer T>> ? [A,T] : never} AT */
|
|
101
101
|
/** @typedef {AT[0]} A */
|
|
102
102
|
/** @typedef {AT[1]} T */
|
|
103
103
|
/** @type {(m: Merge<A, T>) => Branch<T>} */
|
|
@@ -116,15 +116,15 @@ const reduce = fold(reduceX([reduceValue0, reduceValue2]))
|
|
|
116
116
|
|
|
117
117
|
const initReduce = reduceX([initValue0, initValue1])
|
|
118
118
|
|
|
119
|
-
/** @type {<T>(c:
|
|
119
|
+
/** @type {<T>(c: Cmp.Compare<T>) => (node: _.Node<T>) => _.Tree<T>} */
|
|
120
120
|
const nodeRemove = c => node => {
|
|
121
|
-
/** @typedef {typeof c extends
|
|
121
|
+
/** @typedef {typeof c extends Cmp.Compare<infer T> ? T : never} T */
|
|
122
122
|
/** @type {() => null | RemovePath<T>} */
|
|
123
123
|
const f = () => {
|
|
124
124
|
const { first, tail } = find.find(c)(node)
|
|
125
|
-
/** @type {(n: _.Node<T>) => (f: (v: T) =>
|
|
125
|
+
/** @type {(n: _.Node<T>) => (f: (v: T) => Find.PathItem<T>) => RemovePath<T>} */
|
|
126
126
|
const branch = n => f => {
|
|
127
|
-
const [v, p] = path(/** @type {
|
|
127
|
+
const [v, p] = path(/** @type {Find.Path<T>} */(null))(n)
|
|
128
128
|
return { first: p.first, tail: concat(p.tail)({ first: f(v), tail }) }
|
|
129
129
|
}
|
|
130
130
|
const [i, n] = first
|
|
@@ -156,7 +156,7 @@ const nodeRemove = c => node => {
|
|
|
156
156
|
return result.length === 1 ? result[0] : result
|
|
157
157
|
}
|
|
158
158
|
|
|
159
|
-
/** @type {<T>(c:
|
|
159
|
+
/** @type {<T>(c: Cmp.Compare<T>) => (tree: _.Tree<T>) => _.Tree<T>} */
|
|
160
160
|
const remove = c => map(nodeRemove(c))
|
|
161
161
|
|
|
162
162
|
export default {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _ from './module.f.mjs'
|
|
2
|
-
import * as
|
|
2
|
+
import * as BTree from '../types/module.f.mjs'
|
|
3
3
|
import s from '../set/module.f.mjs'
|
|
4
4
|
import str from '../../string/module.f.mjs'
|
|
5
5
|
const { cmp } = str
|
|
@@ -7,16 +7,16 @@ import json from '../../../json/module.f.mjs'
|
|
|
7
7
|
import o from '../../object/module.f.mjs'
|
|
8
8
|
const { sort } = o
|
|
9
9
|
|
|
10
|
-
/** @type {(node:
|
|
10
|
+
/** @type {(node: BTree.Node<string>) => (value: string) => BTree.Node<string>} */
|
|
11
11
|
const set = node => value => s.set(cmp(value))(() => value)(node)
|
|
12
12
|
|
|
13
|
-
/** @type {(node:
|
|
13
|
+
/** @type {(node: BTree.Node<string>) => (value: string) => BTree.Node<string> | null} */
|
|
14
14
|
const remove = node => value => _.nodeRemove(cmp(value))(node)
|
|
15
15
|
|
|
16
16
|
const jsonStr = json.stringify(sort)
|
|
17
17
|
|
|
18
18
|
const test = () => {
|
|
19
|
-
/** @type {
|
|
19
|
+
/** @type {BTree.Node<string> | null} */
|
|
20
20
|
let _map = ['1']
|
|
21
21
|
for (let i = 2; i <= 38; i++)
|
|
22
22
|
_map = set(_map)((i * i).toString())
|
|
@@ -411,7 +411,7 @@ const test = () => {
|
|
|
411
411
|
}
|
|
412
412
|
|
|
413
413
|
const test2 = () => {
|
|
414
|
-
/** @type {
|
|
414
|
+
/** @type {BTree.Node<string>|null} */
|
|
415
415
|
let _map = ['1']
|
|
416
416
|
for (let i = 2; i <= 10; i++)
|
|
417
417
|
_map = set(_map)((i * i).toString())
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare namespace _default {
|
|
2
|
+
export { set };
|
|
3
|
+
}
|
|
4
|
+
export default _default;
|
|
5
|
+
export type Branch1To3<T> = _.Branch1<T> | _.Branch3<T>;
|
|
6
|
+
/** @type {<T>(c: Cmp.Compare<T>) => (f: (value: T|null) => T) => (tree: _.Tree<T>) => _.Node<T>} */
|
|
7
|
+
declare const set: <T>(c: Cmp.Compare<T>) => (f: (value: T | null) => T) => (tree: _.Tree<T>) => _.Node<T>;
|
|
8
|
+
import * as _ from '../types/module.f.mjs';
|
|
9
|
+
import * as Cmp from '../../function/compare/module.f.mjs';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as _ from '../types/module.f.mjs'
|
|
2
|
-
import btreeFind, * as
|
|
2
|
+
import btreeFind, * as BtreeFind from '../find/module.f.mjs'
|
|
3
3
|
const { find } = btreeFind
|
|
4
|
-
import
|
|
4
|
+
import * as Cmp from '../../function/compare/module.f.mjs'
|
|
5
5
|
import list from '../../list/module.f.mjs'
|
|
6
6
|
const { fold } = list
|
|
7
7
|
|
|
@@ -13,7 +13,7 @@ const { fold } = list
|
|
|
13
13
|
/** @type {<T>(b: _.Branch5<T> | _.Branch7<T>) => Branch1To3<T>} */
|
|
14
14
|
const b57 = b => b.length === 5 ? [b] : [[b[0], b[1], b[2]], b[3], [b[4], b[5], b[6]]]
|
|
15
15
|
|
|
16
|
-
/** @type {<T>(i:
|
|
16
|
+
/** @type {<T>(i: BtreeFind.PathItem<T>) => (a: Branch1To3<T>) => Branch1To3<T>} */
|
|
17
17
|
const reduceOp = ([i, x]) => a => {
|
|
18
18
|
switch (i) {
|
|
19
19
|
case 0: {
|
|
@@ -36,11 +36,11 @@ const reduceOp = ([i, x]) => a => {
|
|
|
36
36
|
|
|
37
37
|
const reduceBranch = fold(reduceOp)
|
|
38
38
|
|
|
39
|
-
/** @type {<T>(c:
|
|
39
|
+
/** @type {<T>(c: Cmp.Compare<T>) => (g: (value: T | null) => T) => (node: _.Node<T>) => _.Node<T>} */
|
|
40
40
|
const nodeSet = c => g => node => {
|
|
41
41
|
const { first, tail } = find(c)(node)
|
|
42
42
|
const [i, x] = first;
|
|
43
|
-
/** @typedef {typeof c extends
|
|
43
|
+
/** @typedef {typeof c extends Cmp.Compare<infer T> ? T : never} T */
|
|
44
44
|
/** @type {() => Branch1To3<T>} */
|
|
45
45
|
const f = () => {
|
|
46
46
|
switch (i) {
|
|
@@ -87,7 +87,7 @@ const nodeSet = c => g => node => {
|
|
|
87
87
|
return r.length === 1 ? r[0] : r
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
/** @type {<T>(c:
|
|
90
|
+
/** @type {<T>(c: Cmp.Compare<T>) => (f: (value: T|null) => T) => (tree: _.Tree<T>) => _.Node<T>} */
|
|
91
91
|
const set = c => f => tree => tree === null ? [f(null)] : nodeSet(c)(f)(tree)
|
|
92
92
|
|
|
93
93
|
export default {
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import _ from './module.f.mjs'
|
|
2
|
-
import * as
|
|
2
|
+
import * as BTree from '../types/module.f.mjs'
|
|
3
3
|
import s from '../../string/module.f.mjs'
|
|
4
4
|
const { cmp } = s
|
|
5
|
-
import json
|
|
5
|
+
import json from '../../../json/module.f.mjs'
|
|
6
6
|
import o from '../../object/module.f.mjs'
|
|
7
7
|
const { sort } = o
|
|
8
8
|
|
|
9
|
-
/** @type {(node:
|
|
9
|
+
/** @type {(node: BTree.Node<string>) => (value: string) => BTree.Node<string>} */
|
|
10
10
|
const set = node => value => _.set(cmp(value))(() => value)(node)
|
|
11
11
|
|
|
12
12
|
const jsonStr = json.stringify(sort)
|
|
13
13
|
|
|
14
14
|
const test = [
|
|
15
15
|
() => {
|
|
16
|
-
/** @type {
|
|
16
|
+
/** @type {BTree.Node<string>} */
|
|
17
17
|
let _map = ['1']
|
|
18
18
|
for (let i = 2; i <= 10; i++)
|
|
19
19
|
_map = set(_map)((i * i).toString())
|
|
@@ -22,7 +22,7 @@ const test = [
|
|
|
22
22
|
},
|
|
23
23
|
|
|
24
24
|
() => {
|
|
25
|
-
/** @type {
|
|
25
|
+
/** @type {BTree.Node<string>} */
|
|
26
26
|
let _map = ['1']
|
|
27
27
|
for (let i = 2; i <= 11; i++)
|
|
28
28
|
_map = set(_map)((i * i).toString())
|
|
@@ -31,7 +31,7 @@ const test = [
|
|
|
31
31
|
},
|
|
32
32
|
|
|
33
33
|
() => {
|
|
34
|
-
/** @type {
|
|
34
|
+
/** @type {BTree.Node<string>} */
|
|
35
35
|
let _map = ['1']
|
|
36
36
|
for (let i = 2; i <= 12; i++)
|
|
37
37
|
_map = set(_map)((i * i).toString())
|
|
@@ -40,7 +40,7 @@ const test = [
|
|
|
40
40
|
},
|
|
41
41
|
|
|
42
42
|
() => {
|
|
43
|
-
/** @type {
|
|
43
|
+
/** @type {BTree.Node<string>} */
|
|
44
44
|
let _map = ['1']
|
|
45
45
|
for (let i = 2; i <= 13; i++)
|
|
46
46
|
_map = set(_map)((i * i).toString())
|
|
@@ -49,7 +49,7 @@ const test = [
|
|
|
49
49
|
},
|
|
50
50
|
|
|
51
51
|
() => {
|
|
52
|
-
/** @type {
|
|
52
|
+
/** @type {BTree.Node<string>} */
|
|
53
53
|
let _map = ['1']
|
|
54
54
|
for (let i = 2; i <= 14; i++)
|
|
55
55
|
_map = set(_map)((i * i).toString())
|
|
@@ -58,7 +58,7 @@ const test = [
|
|
|
58
58
|
},
|
|
59
59
|
|
|
60
60
|
() => {
|
|
61
|
-
/** @type {
|
|
61
|
+
/** @type {BTree.Node<string>} */
|
|
62
62
|
let _map = ['1']
|
|
63
63
|
for (let i = 2; i <= 15; i++)
|
|
64
64
|
_map = set(_map)((i * i).toString())
|
|
@@ -67,7 +67,7 @@ const test = [
|
|
|
67
67
|
},
|
|
68
68
|
|
|
69
69
|
() => {
|
|
70
|
-
/** @type {
|
|
70
|
+
/** @type {BTree.Node<string>} */
|
|
71
71
|
let _map = ['1']
|
|
72
72
|
for (let i = 2; i <= 16; i++)
|
|
73
73
|
_map = set(_map)((i * i).toString())
|
|
@@ -76,7 +76,7 @@ const test = [
|
|
|
76
76
|
},
|
|
77
77
|
|
|
78
78
|
() => {
|
|
79
|
-
/** @type {
|
|
79
|
+
/** @type {BTree.Node<string>} */
|
|
80
80
|
let _map = ['1']
|
|
81
81
|
for (let i = 2; i <= 17; i++)
|
|
82
82
|
_map = set(_map)((i * i).toString())
|
|
@@ -85,7 +85,7 @@ const test = [
|
|
|
85
85
|
},
|
|
86
86
|
|
|
87
87
|
() => {
|
|
88
|
-
/** @type {
|
|
88
|
+
/** @type {BTree.Node<string>} */
|
|
89
89
|
let _map = ['1']
|
|
90
90
|
for (let i = 2; i <= 18; i++)
|
|
91
91
|
_map = set(_map)((i * i).toString())
|
|
@@ -96,7 +96,7 @@ const test = [
|
|
|
96
96
|
},
|
|
97
97
|
|
|
98
98
|
() => {
|
|
99
|
-
/** @type {
|
|
99
|
+
/** @type {BTree.Node<string>} */
|
|
100
100
|
let _map = ['1']
|
|
101
101
|
for (let i = 2; i <= 19; i++)
|
|
102
102
|
_map = set(_map)((i * i).toString())
|
|
@@ -107,7 +107,7 @@ const test = [
|
|
|
107
107
|
},
|
|
108
108
|
|
|
109
109
|
() => {
|
|
110
|
-
/** @type {
|
|
110
|
+
/** @type {BTree.Node<string>} */
|
|
111
111
|
let _map = ['1']
|
|
112
112
|
for (let i = 2; i <= 20; i++)
|
|
113
113
|
_map = set(_map)((i * i).toString())
|
|
@@ -120,7 +120,7 @@ const test = [
|
|
|
120
120
|
},
|
|
121
121
|
|
|
122
122
|
() => {
|
|
123
|
-
/** @type {
|
|
123
|
+
/** @type {BTree.Node<string>} */
|
|
124
124
|
let _map = ['1']
|
|
125
125
|
for (let i = 2; i <= 21; i++)
|
|
126
126
|
_map = set(_map)((i * i).toString())
|
|
@@ -133,7 +133,7 @@ const test = [
|
|
|
133
133
|
},
|
|
134
134
|
|
|
135
135
|
() => {
|
|
136
|
-
/** @type {
|
|
136
|
+
/** @type {BTree.Node<string>} */
|
|
137
137
|
let _map = ['1']
|
|
138
138
|
for (let i = 2; i <= 22; i++)
|
|
139
139
|
_map = set(_map)((i * i).toString())
|
|
@@ -146,7 +146,7 @@ const test = [
|
|
|
146
146
|
},
|
|
147
147
|
|
|
148
148
|
() => {
|
|
149
|
-
/** @type {
|
|
149
|
+
/** @type {BTree.Node<string>} */
|
|
150
150
|
let _map = ['1']
|
|
151
151
|
for (let i = 2; i <= 23; i++)
|
|
152
152
|
_map = set(_map)((i * i).toString())
|
|
@@ -159,7 +159,7 @@ const test = [
|
|
|
159
159
|
},
|
|
160
160
|
|
|
161
161
|
() => {
|
|
162
|
-
/** @type {
|
|
162
|
+
/** @type {BTree.Node<string>} */
|
|
163
163
|
let _map = ['1']
|
|
164
164
|
for (let i = 2; i <= 24; i++)
|
|
165
165
|
_map = set(_map)((i * i).toString())
|
|
@@ -172,7 +172,7 @@ const test = [
|
|
|
172
172
|
},
|
|
173
173
|
|
|
174
174
|
() => {
|
|
175
|
-
/** @type {
|
|
175
|
+
/** @type {BTree.Node<string>} */
|
|
176
176
|
let _map = ['1']
|
|
177
177
|
for (let i = 2; i <= 25; i++)
|
|
178
178
|
_map = set(_map)((i * i).toString())
|
|
@@ -185,7 +185,7 @@ const test = [
|
|
|
185
185
|
},
|
|
186
186
|
|
|
187
187
|
() => {
|
|
188
|
-
/** @type {
|
|
188
|
+
/** @type {BTree.Node<string>} */
|
|
189
189
|
let _map = ['1']
|
|
190
190
|
for (let i = 2; i <= 26; i++)
|
|
191
191
|
_map = set(_map)((i * i).toString())
|
|
@@ -200,7 +200,7 @@ const test = [
|
|
|
200
200
|
},
|
|
201
201
|
|
|
202
202
|
() => {
|
|
203
|
-
/** @type {
|
|
203
|
+
/** @type {BTree.Node<string>} */
|
|
204
204
|
let _map = ['1']
|
|
205
205
|
for (let i = 2; i <= 27; i++)
|
|
206
206
|
_map = set(_map)((i * i).toString())
|
|
@@ -215,7 +215,7 @@ const test = [
|
|
|
215
215
|
},
|
|
216
216
|
|
|
217
217
|
() => {
|
|
218
|
-
/** @type {
|
|
218
|
+
/** @type {BTree.Node<string>} */
|
|
219
219
|
let _map = ['1']
|
|
220
220
|
for (let i = 2; i <= 28; i++)
|
|
221
221
|
_map = set(_map)((i * i).toString())
|
|
@@ -230,7 +230,7 @@ const test = [
|
|
|
230
230
|
},
|
|
231
231
|
|
|
232
232
|
() => {
|
|
233
|
-
/** @type {
|
|
233
|
+
/** @type {BTree.Node<string>} */
|
|
234
234
|
let _map = ['1']
|
|
235
235
|
for (let i = 2; i <= 29; i++)
|
|
236
236
|
_map = set(_map)((i * i).toString())
|
|
@@ -245,7 +245,7 @@ const test = [
|
|
|
245
245
|
},
|
|
246
246
|
|
|
247
247
|
() => {
|
|
248
|
-
/** @type {
|
|
248
|
+
/** @type {BTree.Node<string>} */
|
|
249
249
|
let _map = ['1']
|
|
250
250
|
for (let i = 2; i <= 30; i++)
|
|
251
251
|
_map = set(_map)((i * i).toString())
|
|
@@ -260,7 +260,7 @@ const test = [
|
|
|
260
260
|
},
|
|
261
261
|
|
|
262
262
|
() => {
|
|
263
|
-
/** @type {
|
|
263
|
+
/** @type {BTree.Node<string>} */
|
|
264
264
|
let _map = ['1']
|
|
265
265
|
for (let i = 2; i <= 31; i++)
|
|
266
266
|
_map = set(_map)((i * i).toString())
|
|
@@ -275,7 +275,7 @@ const test = [
|
|
|
275
275
|
},
|
|
276
276
|
|
|
277
277
|
() => {
|
|
278
|
-
/** @type {
|
|
278
|
+
/** @type {BTree.Node<string>} */
|
|
279
279
|
let _map = ['1']
|
|
280
280
|
for (let i = 2; i <= 32; i++)
|
|
281
281
|
_map = set(_map)((i * i).toString())
|
|
@@ -290,7 +290,7 @@ const test = [
|
|
|
290
290
|
},
|
|
291
291
|
|
|
292
292
|
() => {
|
|
293
|
-
/** @type {
|
|
293
|
+
/** @type {BTree.Node<string>} */
|
|
294
294
|
let _map = ['1']
|
|
295
295
|
for (let i = 2; i <= 33; i++)
|
|
296
296
|
_map = set(_map)((i * i).toString())
|
|
@@ -305,7 +305,7 @@ const test = [
|
|
|
305
305
|
},
|
|
306
306
|
|
|
307
307
|
() => {
|
|
308
|
-
/** @type {
|
|
308
|
+
/** @type {BTree.Node<string>} */
|
|
309
309
|
let _map = ['1']
|
|
310
310
|
for (let i = 2; i <= 34; i++)
|
|
311
311
|
_map = set(_map)((i * i).toString())
|
|
@@ -320,7 +320,7 @@ const test = [
|
|
|
320
320
|
},
|
|
321
321
|
|
|
322
322
|
() => {
|
|
323
|
-
/** @type {
|
|
323
|
+
/** @type {BTree.Node<string>} */
|
|
324
324
|
let _map = ['1']
|
|
325
325
|
for (let i = 2; i <= 35; i++)
|
|
326
326
|
_map = set(_map)((i * i).toString())
|
|
@@ -335,7 +335,7 @@ const test = [
|
|
|
335
335
|
},
|
|
336
336
|
|
|
337
337
|
() => {
|
|
338
|
-
/** @type {
|
|
338
|
+
/** @type {BTree.Node<string>} */
|
|
339
339
|
let _map = ['1']
|
|
340
340
|
for (let i = 2; i <= 36; i++)
|
|
341
341
|
_map = set(_map)((i * i).toString())
|
|
@@ -350,7 +350,7 @@ const test = [
|
|
|
350
350
|
},
|
|
351
351
|
|
|
352
352
|
() => {
|
|
353
|
-
/** @type {
|
|
353
|
+
/** @type {BTree.Node<string>} */
|
|
354
354
|
let _map = ['1']
|
|
355
355
|
for (let i = 2; i <= 37; i++)
|
|
356
356
|
_map = set(_map)((i * i).toString())
|
|
@@ -365,7 +365,7 @@ const test = [
|
|
|
365
365
|
},
|
|
366
366
|
|
|
367
367
|
() => {
|
|
368
|
-
/** @type {
|
|
368
|
+
/** @type {BTree.Node<string>} */
|
|
369
369
|
let _map = ['1']
|
|
370
370
|
for (let i = 2; i <= 38; i++)
|
|
371
371
|
_map = set(_map)((i * i).toString())
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
declare namespace _default {
|
|
2
|
+
export { valueTest1 };
|
|
3
|
+
export { valuesTest2 };
|
|
4
|
+
export { findTrue };
|
|
5
|
+
export { find };
|
|
6
|
+
export { test };
|
|
7
|
+
}
|
|
8
|
+
export default _default;
|
|
9
|
+
declare function valueTest1(): void;
|
|
10
|
+
declare function valuesTest2(): void;
|
|
11
|
+
declare function findTrue(): void;
|
|
12
|
+
declare function find(): void;
|
|
13
|
+
declare function test(): void;
|
package/types/btree/test.f.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as BTree from './types/module.f.mjs'
|
|
2
2
|
import _ from './module.f.mjs'
|
|
3
3
|
const { values } = _
|
|
4
4
|
import json, * as jsonT from '../../json/module.f.mjs'
|
|
@@ -10,20 +10,16 @@ import list, * as List from '../list/module.f.mjs'
|
|
|
10
10
|
import s from './set/module.f.mjs'
|
|
11
11
|
import f from './find/module.f.mjs'
|
|
12
12
|
|
|
13
|
-
// require('./find/test.f.mjs')
|
|
14
|
-
// require('./set/test.f.mjs')
|
|
15
|
-
// require('./remove/test.f.mjs')
|
|
16
|
-
|
|
17
13
|
const jsonStr = json.stringify(sort)
|
|
18
14
|
|
|
19
15
|
/** @type {(sequence: List.List<jsonT.Unknown>) => string} */
|
|
20
16
|
const stringify = sequence => jsonStr(list.toArray(sequence))
|
|
21
17
|
|
|
22
|
-
/** @type {(node:
|
|
18
|
+
/** @type {(node: BTree.Node<string>) => (value: string) => BTree.Node<string>} */
|
|
23
19
|
const set = node => value => s.set(cmp(value))(() => value)(node)
|
|
24
20
|
|
|
25
21
|
const valueTest1 = () => {
|
|
26
|
-
/** @type {
|
|
22
|
+
/** @type {BTree.Node<string>} */
|
|
27
23
|
let _map = ['a']
|
|
28
24
|
_map = set(_map)('b')
|
|
29
25
|
_map = set(_map)('c')
|
|
@@ -35,7 +31,7 @@ const valueTest1 = () => {
|
|
|
35
31
|
}
|
|
36
32
|
|
|
37
33
|
const valuesTest2 = () => {
|
|
38
|
-
/** @type {
|
|
34
|
+
/** @type {BTree.Node<string>} */
|
|
39
35
|
let _map = ['1']
|
|
40
36
|
for(let i = 2; i <= 10; i++)
|
|
41
37
|
_map = set(_map)((i*i).toString())
|
|
@@ -44,7 +40,7 @@ const valuesTest2 = () => {
|
|
|
44
40
|
}
|
|
45
41
|
|
|
46
42
|
const findTrue = () => {
|
|
47
|
-
/** @type {
|
|
43
|
+
/** @type {BTree.Node<string>} */
|
|
48
44
|
let _map = ['a']
|
|
49
45
|
_map = set(_map)('b')
|
|
50
46
|
_map = set(_map)('c')
|
|
@@ -53,7 +49,7 @@ const findTrue = () => {
|
|
|
53
49
|
}
|
|
54
50
|
|
|
55
51
|
const find = () => {
|
|
56
|
-
/** @type {
|
|
52
|
+
/** @type {BTree.Node<string>} */
|
|
57
53
|
let _map = ['a']
|
|
58
54
|
_map = set(_map)('b')
|
|
59
55
|
_map = set(_map)('c')
|
|
@@ -62,7 +58,7 @@ const find = () => {
|
|
|
62
58
|
}
|
|
63
59
|
|
|
64
60
|
const test = () => {
|
|
65
|
-
/** @type {
|
|
61
|
+
/** @type {BTree.Node<string>} */
|
|
66
62
|
let _map = ['a']
|
|
67
63
|
_map = set(_map)('b')
|
|
68
64
|
_map = set(_map)('c')
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
declare const _default: {};
|
|
2
|
+
export default _default;
|
|
3
|
+
export type Array1<T> = readonly [T];
|
|
4
|
+
export type Array2<T> = readonly [T, T];
|
|
5
|
+
export type Array3<T> = readonly [T, T, T];
|
|
6
|
+
export type Index2 = 0 | 1;
|
|
7
|
+
export type Index3 = 0 | 1 | 2;
|
|
8
|
+
export type Index5 = 0 | 1 | 2 | 3 | 4;
|
|
9
|
+
export type Leaf1<T> = Array1<T>;
|
|
10
|
+
export type Leaf2<T> = Array2<T>;
|
|
11
|
+
export type Branch3<T> = readonly [Node<T>, T, Node<T>];
|
|
12
|
+
export type Branch5<T> = readonly [Node<T>, T, Node<T>, T, Node<T>];
|
|
13
|
+
export type Node<T> = Leaf1<T> | Leaf2<T> | Branch3<T> | Branch5<T>;
|
|
14
|
+
export type Tree<T> = Node<T> | null;
|
|
15
|
+
export type Branch1<T> = readonly [Node<T>];
|
|
16
|
+
export type Branch7<T> = readonly [...Branch5<T>, T, Node<T>];
|