@bessemer/cornerstone 0.5.62 → 0.5.64
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/dist/array.d.ts +23 -30
- package/dist/array.d.ts.map +1 -1
- package/dist/array.js +108 -58
- package/dist/array.js.map +1 -1
- package/dist/assertion.d.ts +1 -7
- package/dist/assertion.d.ts.map +1 -1
- package/dist/assertion.js +9 -46
- package/dist/assertion.js.map +1 -1
- package/dist/async-value.js +2 -2
- package/dist/async-value.js.map +1 -1
- package/dist/async.d.ts.map +1 -1
- package/dist/async.js +2 -2
- package/dist/async.js.map +1 -1
- package/dist/cache.d.ts +5 -5
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +21 -17
- package/dist/cache.js.map +1 -1
- package/dist/combinable.d.ts.map +1 -1
- package/dist/combinable.js +5 -4
- package/dist/combinable.js.map +1 -1
- package/dist/comparator.d.ts.map +1 -1
- package/dist/comparator.js +9 -8
- package/dist/comparator.js.map +1 -1
- package/dist/content.d.ts +2 -2
- package/dist/date.d.ts +1 -1
- package/dist/date.d.ts.map +1 -1
- package/dist/date.js +5 -4
- package/dist/date.js.map +1 -1
- package/dist/either.d.ts +0 -1
- package/dist/either.d.ts.map +1 -1
- package/dist/either.js +2 -3
- package/dist/either.js.map +1 -1
- package/dist/entry.d.ts +9 -7
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +5 -1
- package/dist/entry.js.map +1 -1
- package/dist/equalitor.d.ts +2 -1
- package/dist/equalitor.d.ts.map +1 -1
- package/dist/equalitor.js +6 -2
- package/dist/equalitor.js.map +1 -1
- package/dist/error-event.d.ts +5 -0
- package/dist/error-event.d.ts.map +1 -1
- package/dist/error-event.js +45 -12
- package/dist/error-event.js.map +1 -1
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js +2 -2
- package/dist/error.js.map +1 -1
- package/dist/expression/array-expression.js +1 -1
- package/dist/expression/array-expression.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/json.d.ts.map +1 -1
- package/dist/json.js +3 -3
- package/dist/json.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +10 -9
- package/dist/logger.js.map +1 -1
- package/dist/map.d.ts +18 -0
- package/dist/map.d.ts.map +1 -0
- package/dist/map.js +110 -0
- package/dist/map.js.map +1 -0
- package/dist/math.d.ts +1 -1
- package/dist/math.d.ts.map +1 -1
- package/dist/math.js +4 -7
- package/dist/math.js.map +1 -1
- package/dist/misc.d.ts.map +1 -1
- package/dist/misc.js +4 -3
- package/dist/misc.js.map +1 -1
- package/dist/monetary-amount.d.ts +8 -2
- package/dist/monetary-amount.d.ts.map +1 -1
- package/dist/monetary-amount.js +23 -6
- package/dist/monetary-amount.js.map +1 -1
- package/dist/object.d.ts +5 -16
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +64 -19
- package/dist/object.js.map +1 -1
- package/dist/patch.d.ts.map +1 -1
- package/dist/patch.js +6 -5
- package/dist/patch.js.map +1 -1
- package/dist/property.d.ts.map +1 -1
- package/dist/property.js +5 -4
- package/dist/property.js.map +1 -1
- package/dist/range.d.ts +3 -1
- package/dist/range.d.ts.map +1 -1
- package/dist/range.js +2 -2
- package/dist/range.js.map +1 -1
- package/dist/reference.d.ts +1 -2
- package/dist/reference.d.ts.map +1 -1
- package/dist/reference.js +13 -10
- package/dist/reference.js.map +1 -1
- package/dist/resource.d.ts.map +1 -1
- package/dist/resource.js +2 -2
- package/dist/resource.js.map +1 -1
- package/dist/result.d.ts.map +1 -1
- package/dist/result.js +6 -5
- package/dist/result.js.map +1 -1
- package/dist/retry.d.ts.map +1 -1
- package/dist/retry.js +14 -9
- package/dist/retry.js.map +1 -1
- package/dist/rich-text.js +2 -2
- package/dist/rich-text.js.map +1 -1
- package/dist/signature.d.ts +3 -2
- package/dist/signature.d.ts.map +1 -1
- package/dist/signature.js +6 -4
- package/dist/signature.js.map +1 -1
- package/dist/sql/sql-expression-parser.d.ts.map +1 -1
- package/dist/sql/sql-expression-parser.js +24 -8
- package/dist/sql/sql-expression-parser.js.map +1 -1
- package/dist/store.d.ts +13 -13
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +9 -7
- package/dist/store.js.map +1 -1
- package/dist/string.d.ts.map +1 -1
- package/dist/string.js +3 -4
- package/dist/string.js.map +1 -1
- package/dist/tag.d.ts.map +1 -1
- package/dist/tag.js +12 -12
- package/dist/tag.js.map +1 -1
- package/dist/uri.d.ts.map +1 -1
- package/dist/uri.js +52 -50
- package/dist/uri.js.map +1 -1
- package/dist/url.d.ts.map +1 -1
- package/dist/url.js.map +1 -1
- package/dist/uuid.d.ts.map +1 -1
- package/dist/uuid.js +4 -3
- package/dist/uuid.js.map +1 -1
- package/package.json +1 -1
package/dist/array.d.ts
CHANGED
@@ -3,53 +3,46 @@ import { Signable } from '@bessemer/cornerstone/signature';
|
|
3
3
|
import { Either } from '@bessemer/cornerstone/either';
|
4
4
|
import { Comparator } from '@bessemer/cornerstone/comparator';
|
5
5
|
import { Arrayable } from 'type-fest';
|
6
|
+
import { FiniteNumericBounds } from '@bessemer/cornerstone/range';
|
6
7
|
export declare const equalWith: <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>) => boolean;
|
7
|
-
export declare
|
8
|
+
export declare function equalBy<T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): boolean;
|
9
|
+
export declare function equalBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): boolean;
|
8
10
|
export declare const equal: <T extends Signable>(first: Array<T>, second: Array<T>) => boolean;
|
9
11
|
export declare const differenceWith: <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>) => Array<T>;
|
10
|
-
export declare
|
12
|
+
export declare function differenceBy<T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): Array<T>;
|
13
|
+
export declare function differenceBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): Array<T>;
|
11
14
|
export declare const difference: <T extends Signable>(first: Array<T>, second: Array<T>) => Array<T>;
|
12
15
|
export declare const removeWith: <T>(array: Array<T>, element: T, equalitor: Equalitor<T>) => Array<T>;
|
13
|
-
export declare
|
16
|
+
export declare function removeBy<T>(array: Array<T>, element: T, mapper: (element: T) => Signable): Array<T>;
|
17
|
+
export declare function removeBy<T, N>(array: Array<T>, element: T, mapper: (element: T) => N, equalitor: Equalitor<N>): Array<T>;
|
14
18
|
export declare const remove: <T extends Signable>(array: Array<T>, element: T) => Array<T>;
|
15
19
|
export declare const containsWith: <T>(array: Array<T>, element: T, equalitor: Equalitor<T>) => boolean;
|
16
|
-
export declare
|
20
|
+
export declare function containsBy<T>(array: Array<T>, element: T, mapper: (element: T) => Signable): boolean;
|
21
|
+
export declare function containsBy<T, N>(array: Array<T>, element: T, mapper: (element: T) => N, equalitor: Equalitor<N>): boolean;
|
17
22
|
export declare const contains: <T extends Signable>(array: Array<T>, element: T) => boolean;
|
18
23
|
export declare const containsAllWith: <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>) => boolean;
|
19
|
-
export declare
|
24
|
+
export declare function containsAllBy<T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): boolean;
|
25
|
+
export declare function containsAllBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): boolean;
|
20
26
|
export declare const containsAll: <T extends Signable>(first: Array<T>, second: Array<T>) => boolean;
|
21
27
|
export declare const dedupeWith: <T>(array: Array<T>, equalitor: Equalitor<T>) => Array<T>;
|
22
|
-
export declare
|
28
|
+
export declare function dedupeBy<T>(array: Array<T>, mapper: (element: T) => Signable): Array<T>;
|
29
|
+
export declare function dedupeBy<T, N>(array: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): Array<T>;
|
23
30
|
export declare const dedupe: <T extends Signable>(array: Array<T>) => Array<T>;
|
24
31
|
export declare const sortWith: <T>(array: Array<T>, comparator: Comparator<T>) => Array<T>;
|
25
|
-
export declare
|
32
|
+
export declare function sortBy<T>(array: Array<T>, mapper: (element: T) => Signable): Array<T>;
|
33
|
+
export declare function sortBy<T, N>(array: Array<T>, mapper: (element: T) => N, comparator: Comparator<N>): Array<T>;
|
26
34
|
export declare const sort: <T extends Signable>(array: Array<T>) => Array<T>;
|
27
|
-
export declare const concatenate: <T>(array: Array<T
|
28
|
-
export declare const first: <T>(array: Array<T>
|
35
|
+
export declare const concatenate: <T>(array: Array<T>, ...values: Array<T | Array<T>>) => Array<T>;
|
36
|
+
export declare const first: <T>(array: Array<T>) => T | undefined;
|
29
37
|
export declare const only: <T>(array: Array<T>) => T;
|
30
|
-
export declare const last: <T>(array: Array<T>
|
31
|
-
export declare const isEmpty:
|
32
|
-
|
33
|
-
|
34
|
-
}>(value?: T): boolean;
|
35
|
-
(value: string): value is "";
|
36
|
-
(value: Map<any, any> | Set<any> | import("lodash").List<any> | null | undefined): boolean;
|
37
|
-
(value: object): boolean;
|
38
|
-
<T extends object>(value: T | null | undefined): value is import("lodash").EmptyObjectOf<T> | null | undefined;
|
39
|
-
(value?: any): boolean;
|
40
|
-
};
|
41
|
-
export declare const range: {
|
42
|
-
(start: number, end?: number, step?: number): number[];
|
43
|
-
(end: number, index: string | number, guard: object): number[];
|
44
|
-
};
|
45
|
-
export declare const groupBy: {
|
46
|
-
<T>(collection: import("lodash").List<T> | null | undefined, iteratee?: import("lodash").ValueIteratee<T>): import("lodash").Dictionary<T[]>;
|
47
|
-
<T extends object>(collection: T | null | undefined, iteratee?: import("lodash").ValueIteratee<T[keyof T]>): import("lodash").Dictionary<Array<T[keyof T]>>;
|
48
|
-
};
|
38
|
+
export declare const last: <T>(array: Array<T>) => T | undefined;
|
39
|
+
export declare const isEmpty: <T>(array: Array<T>) => boolean;
|
40
|
+
export declare const range: (bounds: FiniteNumericBounds) => Array<number>;
|
41
|
+
export declare function groupBy<T, N extends string | number | symbol>(array: Array<T>, iteratee: (it: T) => N): Record<N, Array<T>>;
|
49
42
|
export declare const rest: <T>(array: Array<T>, elementsToSkip?: number) => Array<T>;
|
50
|
-
export declare const filterInPlace: <T>(array: Array<T
|
43
|
+
export declare const filterInPlace: <T>(array: Array<T>, predicate: (value: T, index: number, array: Array<T>) => boolean) => void;
|
51
44
|
export declare const clear: (array: Array<unknown>) => void;
|
52
45
|
export declare const bisect: <T, L, R>(array: Array<T>, bisector: (element: T, index: number) => Either<L, R>) => [Array<L>, Array<R>];
|
53
46
|
export declare const toArray: <T>(array: Arrayable<T>) => Array<T>;
|
54
|
-
export declare const flatten: <T>(array:
|
47
|
+
export declare const flatten: <T>(array: Array<Array<T>>) => Array<T>;
|
55
48
|
//# sourceMappingURL=array.d.ts.map
|
package/dist/array.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../src/array.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../src/array.ts"],"names":[],"mappings":"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"}
|
package/dist/array.js
CHANGED
@@ -1,82 +1,112 @@
|
|
1
1
|
// src/array.ts
|
2
|
-
import {
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
range as _range,
|
9
|
-
uniqBy,
|
10
|
-
uniqWith
|
11
|
-
} from "lodash-es";
|
12
|
-
import { Assertions, Comparators, Eithers, Signatures } from "@bessemer/cornerstone";
|
2
|
+
import { equalBy as equalitorEqualBy, natural as naturalEquality } from "@bessemer/cornerstone/equalitor";
|
3
|
+
import { sign } from "@bessemer/cornerstone/signature";
|
4
|
+
import { split } from "@bessemer/cornerstone/either";
|
5
|
+
import { compareBy, natural as naturalComparison } from "@bessemer/cornerstone/comparator";
|
6
|
+
import { isNil } from "@bessemer/cornerstone/object";
|
7
|
+
import { assertTrue } from "@bessemer/cornerstone/assertion";
|
13
8
|
var equalWith = (first2, second, equalitor) => {
|
14
9
|
if (first2.length !== second.length) {
|
15
10
|
return false;
|
16
11
|
}
|
17
12
|
return first2.every((element, index) => equalitor(element, second[index]));
|
18
13
|
};
|
19
|
-
|
20
|
-
|
21
|
-
|
14
|
+
function equalBy(first2, second, mapper, equalitor) {
|
15
|
+
if (isNil(equalitor)) {
|
16
|
+
return equalWith(
|
17
|
+
first2,
|
18
|
+
second,
|
19
|
+
equalitorEqualBy((it) => sign(mapper(it)), naturalEquality())
|
20
|
+
);
|
21
|
+
} else {
|
22
|
+
return equalWith(first2, second, equalitorEqualBy(mapper, equalitor));
|
23
|
+
}
|
24
|
+
}
|
22
25
|
var equal = (first2, second) => {
|
23
|
-
return equalBy(first2, second,
|
26
|
+
return equalBy(first2, second, sign);
|
24
27
|
};
|
25
28
|
var differenceWith = (first2, second, equalitor) => {
|
26
|
-
return
|
27
|
-
};
|
28
|
-
|
29
|
-
|
30
|
-
|
29
|
+
return first2.filter((firstItem) => !second.some((it) => equalitor(firstItem, it)));
|
30
|
+
};
|
31
|
+
function differenceBy(first2, second, mapper, equalitor) {
|
32
|
+
if (isNil(equalitor)) {
|
33
|
+
return differenceWith(
|
34
|
+
first2,
|
35
|
+
second,
|
36
|
+
equalitorEqualBy((it) => sign(mapper(it)), naturalEquality())
|
37
|
+
);
|
38
|
+
} else {
|
39
|
+
return differenceWith(first2, second, equalitorEqualBy(mapper, equalitor));
|
40
|
+
}
|
41
|
+
}
|
31
42
|
var difference = (first2, second) => {
|
32
|
-
return differenceBy(first2, second,
|
43
|
+
return differenceBy(first2, second, sign);
|
33
44
|
};
|
34
45
|
var removeWith = (array, element, equalitor) => {
|
35
46
|
return differenceWith(array, [element], equalitor);
|
36
47
|
};
|
37
|
-
|
38
|
-
return differenceBy(array, [element], mapper);
|
39
|
-
}
|
48
|
+
function removeBy(array, element, mapper, equalitor) {
|
49
|
+
return differenceBy(array, [element], mapper, equalitor);
|
50
|
+
}
|
40
51
|
var remove = (array, element) => {
|
41
52
|
return difference(array, [element]);
|
42
53
|
};
|
43
54
|
var containsWith = (array, element, equalitor) => {
|
44
55
|
return array.some((it) => equalitor(it, element));
|
45
56
|
};
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
57
|
+
function containsBy(array, element, mapper, equalitor) {
|
58
|
+
if (isNil(equalitor)) {
|
59
|
+
return containsWith(
|
60
|
+
array,
|
61
|
+
element,
|
62
|
+
equalitorEqualBy((it) => sign(mapper(it)), naturalEquality())
|
63
|
+
);
|
64
|
+
} else {
|
65
|
+
return containsWith(array, element, equalitorEqualBy(mapper, equalitor));
|
66
|
+
}
|
67
|
+
}
|
68
|
+
var contains = (array, element) => containsBy(array, element, sign);
|
50
69
|
var containsAllWith = (first2, second, equalitor) => isEmpty(differenceWith(second, first2, equalitor));
|
51
|
-
|
70
|
+
function containsAllBy(first2, second, mapper, equalitor) {
|
71
|
+
return isEmpty(differenceBy(second, first2, mapper, equalitor));
|
72
|
+
}
|
52
73
|
var containsAll = (first2, second) => isEmpty(difference(second, first2));
|
53
74
|
var dedupeWith = (array, equalitor) => {
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
75
|
+
const result = [];
|
76
|
+
for (const element of array) {
|
77
|
+
const isDuplicate = result.some((existing) => equalitor(existing, element));
|
78
|
+
if (!isDuplicate) {
|
79
|
+
result.push(element);
|
80
|
+
}
|
81
|
+
}
|
82
|
+
return result;
|
58
83
|
};
|
84
|
+
function dedupeBy(array, mapper, equalitor) {
|
85
|
+
if (isNil(equalitor)) {
|
86
|
+
return dedupeWith(array, equalitorEqualBy(mapper, naturalEquality()));
|
87
|
+
} else {
|
88
|
+
return dedupeWith(array, equalitorEqualBy(mapper, equalitor));
|
89
|
+
}
|
90
|
+
}
|
59
91
|
var dedupe = (array) => {
|
60
|
-
return dedupeBy(array,
|
92
|
+
return dedupeBy(array, sign);
|
61
93
|
};
|
62
94
|
var sortWith = (array, comparator) => {
|
63
95
|
return [...array].sort(comparator);
|
64
96
|
};
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
if (array == null) {
|
74
|
-
return [];
|
97
|
+
function sortBy(array, mapper, comparator) {
|
98
|
+
if (isNil(comparator)) {
|
99
|
+
return sortWith(
|
100
|
+
array,
|
101
|
+
compareBy((it) => sign(mapper(it)), naturalComparison())
|
102
|
+
);
|
103
|
+
} else {
|
104
|
+
return sortWith(array, compareBy(mapper, comparator));
|
75
105
|
}
|
106
|
+
}
|
107
|
+
var sort = (array) => sortBy(array, sign);
|
108
|
+
var concatenate = (array, ...values) => {
|
76
109
|
const result = [...array];
|
77
|
-
if (values.length === 0) {
|
78
|
-
return result;
|
79
|
-
}
|
80
110
|
for (const value of values) {
|
81
111
|
if (Array.isArray(value)) {
|
82
112
|
result.push(...value);
|
@@ -87,25 +117,43 @@ var concatenate = (array, ...values) => {
|
|
87
117
|
return result;
|
88
118
|
};
|
89
119
|
var first = (array) => {
|
90
|
-
return array
|
120
|
+
return array.length > 0 ? array[0] : void 0;
|
91
121
|
};
|
92
122
|
var only = (array) => {
|
93
|
-
|
123
|
+
assertTrue(array.length === 1);
|
94
124
|
return first(array);
|
95
125
|
};
|
96
126
|
var last = (array) => {
|
97
|
-
return array
|
127
|
+
return array.length > 0 ? array[array.length - 1] : void 0;
|
128
|
+
};
|
129
|
+
var isEmpty = (array) => {
|
130
|
+
return array.length === 0;
|
131
|
+
};
|
132
|
+
var range = (bounds) => {
|
133
|
+
const [start, end] = bounds;
|
134
|
+
if (start > end) {
|
135
|
+
return [];
|
136
|
+
}
|
137
|
+
const result = [];
|
138
|
+
for (let i = start; i <= end; i++) {
|
139
|
+
result.push(i);
|
140
|
+
}
|
141
|
+
return result;
|
98
142
|
};
|
99
|
-
|
100
|
-
|
101
|
-
|
143
|
+
function groupBy(array, iteratee) {
|
144
|
+
return array.reduce((result, value) => {
|
145
|
+
const key = iteratee(value);
|
146
|
+
if (!result[key]) {
|
147
|
+
result[key] = [];
|
148
|
+
}
|
149
|
+
result[key].push(value);
|
150
|
+
return result;
|
151
|
+
}, {});
|
152
|
+
}
|
102
153
|
var rest = (array, elementsToSkip = 1) => {
|
103
154
|
return array.slice(elementsToSkip);
|
104
155
|
};
|
105
156
|
var filterInPlace = (array, predicate) => {
|
106
|
-
if (array == null || !array.length) {
|
107
|
-
return;
|
108
|
-
}
|
109
157
|
for (let i = array.length - 1; i >= 0; i--) {
|
110
158
|
const value = array[i];
|
111
159
|
if (value !== void 0 && !predicate(value, i, array)) {
|
@@ -117,7 +165,7 @@ var clear = (array) => {
|
|
117
165
|
filterInPlace(array, () => false);
|
118
166
|
};
|
119
167
|
var bisect = (array, bisector) => {
|
120
|
-
return
|
168
|
+
return split(array.map(bisector));
|
121
169
|
};
|
122
170
|
var toArray = (array) => {
|
123
171
|
if (Array.isArray(array)) {
|
@@ -125,7 +173,9 @@ var toArray = (array) => {
|
|
125
173
|
}
|
126
174
|
return [array];
|
127
175
|
};
|
128
|
-
var flatten =
|
176
|
+
var flatten = (array) => {
|
177
|
+
return array.flatMap((it) => it);
|
178
|
+
};
|
129
179
|
export {
|
130
180
|
bisect,
|
131
181
|
clear,
|
package/dist/array.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/array.ts"],"sourcesContent":["import {\n differenceBy as _differenceBy,\n differenceWith as _differenceWith,\n flatten as _flatten,\n groupBy as _groupBy,\n isEmpty as _isEmpty,\n range as _range,\n uniqBy,\n uniqWith,\n} from 'lodash-es'\nimport { Equalitor } from '@bessemer/cornerstone/equalitor'\nimport { Signable } from '@bessemer/cornerstone/signature'\nimport { Assertions, Comparators, Eithers, Signatures } from '@bessemer/cornerstone'\nimport { Either } from '@bessemer/cornerstone/either'\nimport { Comparator } from '@bessemer/cornerstone/comparator'\nimport { Arrayable } from 'type-fest'\n\nexport const equalWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): boolean => {\n if (first.length !== second.length) {\n return false\n }\n\n return first.every((element, index) => equalitor(element, second[index]!))\n}\n\nexport const equalBy = <T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): boolean => {\n return equalWith(first, second, (first, second) => Signatures.sign(mapper(first)) === Signatures.sign(mapper(second)))\n}\n\nexport const equal = <T extends Signable>(first: Array<T>, second: Array<T>): boolean => {\n return equalBy(first, second, Signatures.sign)\n}\n\nexport const differenceWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): Array<T> => {\n return _differenceWith(first, second, equalitor)\n}\n\nexport const differenceBy = <T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): Array<T> => {\n return _differenceBy(first, second, (it) => Signatures.sign(mapper(it)))\n}\n\nexport const difference = <T extends Signable>(first: Array<T>, second: Array<T>): Array<T> => {\n return differenceBy(first, second, Signatures.sign)\n}\n\nexport const removeWith = <T>(array: Array<T>, element: T, equalitor: Equalitor<T>): Array<T> => {\n return differenceWith(array, [element], equalitor)\n}\n\nexport const removeBy = <T>(array: Array<T>, element: T, mapper: (element: T) => Signable): Array<T> => {\n return differenceBy(array, [element], mapper)\n}\n\nexport const remove = <T extends Signable>(array: Array<T>, element: T): Array<T> => {\n return difference(array, [element])\n}\n\nexport const containsWith = <T>(array: Array<T>, element: T, equalitor: Equalitor<T>): boolean => {\n return array.some((it) => equalitor(it, element))\n}\n\nexport const containsBy = <T>(array: Array<T>, element: T, mapper: (element: T) => Signable): boolean => {\n return containsWith(array, element, (first, second) => Signatures.sign(mapper(first)) === Signatures.sign(mapper(second)))\n}\n\nexport const contains = <T extends Signable>(array: Array<T>, element: T): boolean => containsBy(array, element, Signatures.sign)\n\nexport const containsAllWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): boolean =>\n isEmpty(differenceWith(second, first, equalitor))\n\nexport const containsAllBy = <T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): boolean =>\n isEmpty(differenceBy(second, first, mapper))\n\nexport const containsAll = <T extends Signable>(first: Array<T>, second: Array<T>): boolean => isEmpty(difference(second, first))\n\nexport const dedupeWith = <T>(array: Array<T>, equalitor: Equalitor<T>): Array<T> => {\n return uniqWith(array, equalitor)\n}\n\nexport const dedupeBy = <T>(array: Array<T>, mapper: (element: T) => Signable): Array<T> => {\n return uniqBy(array, (it) => Signatures.sign(mapper(it)))\n}\n\nexport const dedupe = <T extends Signable>(array: Array<T>): Array<T> => {\n return dedupeBy(array, Signatures.sign)\n}\n\nexport const sortWith = <T>(array: Array<T>, comparator: Comparator<T>): Array<T> => {\n return [...array].sort(comparator)\n}\n\nexport const sortBy = <T>(array: Array<T>, mapper: (element: T) => Signable): Array<T> => {\n return sortWith(\n array,\n Comparators.compareBy((it) => Signatures.sign(mapper(it)), Comparators.natural())\n )\n}\n\nexport const sort = <T extends Signable>(array: Array<T>): Array<T> => sortBy(array, Signatures.sign)\n\nexport const concatenate = <T>(array: Array<T> | null | undefined, ...values: Array<T | T[]>): Array<T> => {\n if (array == null) {\n return []\n }\n\n const result = [...array]\n\n if (values.length === 0) {\n return result\n }\n\n for (const value of values) {\n if (Array.isArray(value)) {\n result.push(...value)\n } else {\n result.push(value as T)\n }\n }\n\n return result\n}\n\nexport const first = <T>(array: Array<T> | null | undefined): T | undefined => {\n return array != null && array.length ? array[0] : undefined\n}\n\nexport const only = <T>(array: Array<T>): T => {\n Assertions.assertTrue(array.length === 1)\n return first(array)!\n}\n\nexport const last = <T>(array: Array<T> | null | undefined): T | undefined => {\n return array != null && array.length ? array[array.length - 1] : undefined\n}\n\nexport const isEmpty = _isEmpty\n// TODO make a better range function\nexport const range = _range\n// TODO should this live in collections?\nexport const groupBy = _groupBy\n\nexport const rest = <T>(array: Array<T>, elementsToSkip: number = 1): Array<T> => {\n return array.slice(elementsToSkip)\n}\n\nexport const filterInPlace = <T>(array: Array<T> | null | undefined, predicate: (value: T, index: number, array: Array<T>) => boolean): void => {\n if (array == null || !array.length) {\n return\n }\n\n for (let i = array.length - 1; i >= 0; i--) {\n const value = array[i]\n if (value !== undefined && !predicate(value, i, array)) {\n array.splice(i, 1)\n }\n }\n}\n\nexport const clear = (array: Array<unknown>): void => {\n filterInPlace(array, () => false)\n}\n\nexport const bisect = <T, L, R>(array: Array<T>, bisector: (element: T, index: number) => Either<L, R>): [Array<L>, Array<R>] => {\n return Eithers.split(array.map(bisector))\n}\n\nexport const toArray = <T>(array: Arrayable<T>): Array<T> => {\n if (Array.isArray(array)) {\n return array\n }\n\n return [array]\n}\n\nexport const flatten = _flatten\n"],"mappings":"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","names":["first","second"]}
|
1
|
+
{"version":3,"sources":["../src/array.ts"],"sourcesContent":["import { equalBy as equalitorEqualBy, Equalitor, natural as naturalEquality } from '@bessemer/cornerstone/equalitor'\nimport { sign, Signable, Signature } from '@bessemer/cornerstone/signature'\nimport { Either, split } from '@bessemer/cornerstone/either'\nimport { Comparator, compareBy, natural as naturalComparison } from '@bessemer/cornerstone/comparator'\nimport { Arrayable } from 'type-fest'\nimport { isNil } from '@bessemer/cornerstone/object'\nimport { FiniteNumericBounds } from '@bessemer/cornerstone/range'\nimport { assertTrue } from '@bessemer/cornerstone/assertion'\n\nexport const equalWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): boolean => {\n if (first.length !== second.length) {\n return false\n }\n\n return first.every((element, index) => equalitor(element, second[index]!))\n}\n\nexport function equalBy<T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): boolean\nexport function equalBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): boolean\nexport function equalBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor?: Equalitor<N>): boolean {\n if (isNil(equalitor)) {\n return equalWith(\n first,\n second,\n equalitorEqualBy((it) => sign(mapper(it) as Signable), naturalEquality())\n )\n } else {\n return equalWith(first, second, equalitorEqualBy(mapper, equalitor))\n }\n}\n\nexport const equal = <T extends Signable>(first: Array<T>, second: Array<T>): boolean => {\n return equalBy(first, second, sign)\n}\n\nexport const differenceWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): Array<T> => {\n return first.filter((firstItem) => !second.some((it) => equalitor(firstItem, it)))\n}\n\nexport function differenceBy<T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): Array<T>\nexport function differenceBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): Array<T>\nexport function differenceBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor?: Equalitor<N>): Array<T> {\n if (isNil(equalitor)) {\n return differenceWith(\n first,\n second,\n equalitorEqualBy((it) => sign(mapper(it) as Signable), naturalEquality())\n )\n } else {\n return differenceWith(first, second, equalitorEqualBy(mapper, equalitor))\n }\n}\n\nexport const difference = <T extends Signable>(first: Array<T>, second: Array<T>): Array<T> => {\n return differenceBy(first, second, sign)\n}\n\nexport const removeWith = <T>(array: Array<T>, element: T, equalitor: Equalitor<T>): Array<T> => {\n return differenceWith(array, [element], equalitor)\n}\n\nexport function removeBy<T>(array: Array<T>, element: T, mapper: (element: T) => Signable): Array<T>\nexport function removeBy<T, N>(array: Array<T>, element: T, mapper: (element: T) => N, equalitor: Equalitor<N>): Array<T>\nexport function removeBy<T, N>(array: Array<T>, element: T, mapper: (element: T) => N, equalitor?: Equalitor<N>): Array<T> {\n return differenceBy(array, [element], mapper, equalitor as any)\n}\n\nexport const remove = <T extends Signable>(array: Array<T>, element: T): Array<T> => {\n return difference(array, [element])\n}\n\nexport const containsWith = <T>(array: Array<T>, element: T, equalitor: Equalitor<T>): boolean => {\n return array.some((it) => equalitor(it, element))\n}\n\nexport function containsBy<T>(array: Array<T>, element: T, mapper: (element: T) => Signable): boolean\nexport function containsBy<T, N>(array: Array<T>, element: T, mapper: (element: T) => N, equalitor: Equalitor<N>): boolean\nexport function containsBy<T, N>(array: Array<T>, element: T, mapper: (element: T) => N, equalitor?: Equalitor<N>): boolean {\n if (isNil(equalitor)) {\n return containsWith(\n array,\n element,\n equalitorEqualBy((it) => sign(mapper(it) as Signable), naturalEquality())\n )\n } else {\n return containsWith(array, element, equalitorEqualBy(mapper, equalitor))\n }\n}\n\nexport const contains = <T extends Signable>(array: Array<T>, element: T): boolean => containsBy(array, element, sign)\n\nexport const containsAllWith = <T>(first: Array<T>, second: Array<T>, equalitor: Equalitor<T>): boolean =>\n isEmpty(differenceWith(second, first, equalitor))\n\nexport function containsAllBy<T>(first: Array<T>, second: Array<T>, mapper: (element: T) => Signable): boolean\nexport function containsAllBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): boolean\nexport function containsAllBy<T, N>(first: Array<T>, second: Array<T>, mapper: (element: T) => N, equalitor?: Equalitor<N>): boolean {\n return isEmpty(differenceBy(second, first, mapper, equalitor as any))\n}\n\nexport const containsAll = <T extends Signable>(first: Array<T>, second: Array<T>): boolean => isEmpty(difference(second, first))\n\nexport const dedupeWith = <T>(array: Array<T>, equalitor: Equalitor<T>): Array<T> => {\n const result: Array<T> = []\n\n for (const element of array) {\n const isDuplicate = result.some((existing) => equalitor(existing, element))\n if (!isDuplicate) {\n result.push(element)\n }\n }\n\n return result\n}\n\nexport function dedupeBy<T>(array: Array<T>, mapper: (element: T) => Signable): Array<T>\nexport function dedupeBy<T, N>(array: Array<T>, mapper: (element: T) => N, equalitor: Equalitor<N>): Array<T>\nexport function dedupeBy<T, N>(array: Array<T>, mapper: (element: T) => N, equalitor?: Equalitor<N>): Array<T> {\n if (isNil(equalitor)) {\n return dedupeWith(array, equalitorEqualBy(mapper as any, naturalEquality()))\n } else {\n return dedupeWith(array, equalitorEqualBy(mapper, equalitor))\n }\n}\n\nexport const dedupe = <T extends Signable>(array: Array<T>): Array<T> => {\n return dedupeBy(array, sign)\n}\n\nexport const sortWith = <T>(array: Array<T>, comparator: Comparator<T>): Array<T> => {\n return [...array].sort(comparator)\n}\n\nexport function sortBy<T>(array: Array<T>, mapper: (element: T) => Signable): Array<T>\nexport function sortBy<T, N>(array: Array<T>, mapper: (element: T) => N, comparator: Comparator<N>): Array<T>\nexport function sortBy<T, N>(array: Array<T>, mapper: (element: T) => N, comparator?: Comparator<N>): Array<T> {\n if (isNil(comparator)) {\n return sortWith(\n array,\n compareBy((it) => sign(mapper(it as any) as Signature), naturalComparison())\n )\n } else {\n return sortWith(array, compareBy(mapper, comparator))\n }\n}\n\nexport const sort = <T extends Signable>(array: Array<T>): Array<T> => sortBy(array, sign)\n\nexport const concatenate = <T>(array: Array<T>, ...values: Array<T | Array<T>>): Array<T> => {\n const result = [...array]\n\n for (const value of values) {\n if (Array.isArray(value)) {\n result.push(...value)\n } else {\n result.push(value)\n }\n }\n\n return result\n}\n\nexport const first = <T>(array: Array<T>): T | undefined => {\n return array.length > 0 ? array[0] : undefined\n}\n\nexport const only = <T>(array: Array<T>): T => {\n assertTrue(array.length === 1)\n return first(array)!\n}\n\nexport const last = <T>(array: Array<T>): T | undefined => {\n return array.length > 0 ? array[array.length - 1] : undefined\n}\n\nexport const isEmpty = <T>(array: Array<T>): boolean => {\n return array.length === 0\n}\n\nexport const range = (bounds: FiniteNumericBounds): Array<number> => {\n const [start, end] = bounds\n // TODO maybe some other check?\n if (start > end) {\n return []\n }\n\n const result: number[] = []\n for (let i = start; i <= end; i++) {\n result.push(i)\n }\n return result\n}\n\n// JOHN i don't think this function should exist here... maybe examine the use cases more thoroughly\nexport function groupBy<T, N extends string | number | symbol>(array: Array<T>, iteratee: (it: T) => N): Record<N, Array<T>> {\n return array.reduce<Record<N, Array<T>>>((result, value) => {\n const key = iteratee(value)\n\n if (!result[key]) {\n result[key] = []\n }\n\n result[key].push(value)\n return result\n }, {} as any)\n}\n\nexport const rest = <T>(array: Array<T>, elementsToSkip: number = 1): Array<T> => {\n return array.slice(elementsToSkip)\n}\n\nexport const filterInPlace = <T>(array: Array<T>, predicate: (value: T, index: number, array: Array<T>) => boolean): void => {\n for (let i = array.length - 1; i >= 0; i--) {\n const value = array[i]\n if (value !== undefined && !predicate(value, i, array)) {\n array.splice(i, 1)\n }\n }\n}\n\nexport const clear = (array: Array<unknown>): void => {\n filterInPlace(array, () => false)\n}\n\nexport const bisect = <T, L, R>(array: Array<T>, bisector: (element: T, index: number) => Either<L, R>): [Array<L>, Array<R>] => {\n return split(array.map(bisector))\n}\n\nexport const toArray = <T>(array: Arrayable<T>): Array<T> => {\n if (Array.isArray(array)) {\n return array\n }\n\n return [array]\n}\n\nexport const flatten = <T>(array: Array<Array<T>>): Array<T> => {\n return array.flatMap((it) => it)\n}\n"],"mappings":";AAAA,SAAS,WAAW,kBAA6B,WAAW,uBAAuB;AACnF,SAAS,YAAiC;AAC1C,SAAiB,aAAa;AAC9B,SAAqB,WAAW,WAAW,yBAAyB;AAEpE,SAAS,aAAa;AAEtB,SAAS,kBAAkB;AAEpB,IAAM,YAAY,CAAIA,QAAiB,QAAkB,cAAqC;AACnG,MAAIA,OAAM,WAAW,OAAO,QAAQ;AAClC,WAAO;AAAA,EACT;AAEA,SAAOA,OAAM,MAAM,CAAC,SAAS,UAAU,UAAU,SAAS,OAAO,KAAK,CAAE,CAAC;AAC3E;AAIO,SAAS,QAAcA,QAAiB,QAAkB,QAA2B,WAAmC;AAC7H,MAAI,MAAM,SAAS,GAAG;AACpB,WAAO;AAAA,MACLA;AAAA,MACA;AAAA,MACA,iBAAiB,CAAC,OAAO,KAAK,OAAO,EAAE,CAAa,GAAG,gBAAgB,CAAC;AAAA,IAC1E;AAAA,EACF,OAAO;AACL,WAAO,UAAUA,QAAO,QAAQ,iBAAiB,QAAQ,SAAS,CAAC;AAAA,EACrE;AACF;AAEO,IAAM,QAAQ,CAAqBA,QAAiB,WAA8B;AACvF,SAAO,QAAQA,QAAO,QAAQ,IAAI;AACpC;AAEO,IAAM,iBAAiB,CAAIA,QAAiB,QAAkB,cAAsC;AACzG,SAAOA,OAAM,OAAO,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,OAAO,UAAU,WAAW,EAAE,CAAC,CAAC;AACnF;AAIO,SAAS,aAAmBA,QAAiB,QAAkB,QAA2B,WAAoC;AACnI,MAAI,MAAM,SAAS,GAAG;AACpB,WAAO;AAAA,MACLA;AAAA,MACA;AAAA,MACA,iBAAiB,CAAC,OAAO,KAAK,OAAO,EAAE,CAAa,GAAG,gBAAgB,CAAC;AAAA,IAC1E;AAAA,EACF,OAAO;AACL,WAAO,eAAeA,QAAO,QAAQ,iBAAiB,QAAQ,SAAS,CAAC;AAAA,EAC1E;AACF;AAEO,IAAM,aAAa,CAAqBA,QAAiB,WAA+B;AAC7F,SAAO,aAAaA,QAAO,QAAQ,IAAI;AACzC;AAEO,IAAM,aAAa,CAAI,OAAiB,SAAY,cAAsC;AAC/F,SAAO,eAAe,OAAO,CAAC,OAAO,GAAG,SAAS;AACnD;AAIO,SAAS,SAAe,OAAiB,SAAY,QAA2B,WAAoC;AACzH,SAAO,aAAa,OAAO,CAAC,OAAO,GAAG,QAAQ,SAAgB;AAChE;AAEO,IAAM,SAAS,CAAqB,OAAiB,YAAyB;AACnF,SAAO,WAAW,OAAO,CAAC,OAAO,CAAC;AACpC;AAEO,IAAM,eAAe,CAAI,OAAiB,SAAY,cAAqC;AAChG,SAAO,MAAM,KAAK,CAAC,OAAO,UAAU,IAAI,OAAO,CAAC;AAClD;AAIO,SAAS,WAAiB,OAAiB,SAAY,QAA2B,WAAmC;AAC1H,MAAI,MAAM,SAAS,GAAG;AACpB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,iBAAiB,CAAC,OAAO,KAAK,OAAO,EAAE,CAAa,GAAG,gBAAgB,CAAC;AAAA,IAC1E;AAAA,EACF,OAAO;AACL,WAAO,aAAa,OAAO,SAAS,iBAAiB,QAAQ,SAAS,CAAC;AAAA,EACzE;AACF;AAEO,IAAM,WAAW,CAAqB,OAAiB,YAAwB,WAAW,OAAO,SAAS,IAAI;AAE9G,IAAM,kBAAkB,CAAIA,QAAiB,QAAkB,cACpE,QAAQ,eAAe,QAAQA,QAAO,SAAS,CAAC;AAI3C,SAAS,cAAoBA,QAAiB,QAAkB,QAA2B,WAAmC;AACnI,SAAO,QAAQ,aAAa,QAAQA,QAAO,QAAQ,SAAgB,CAAC;AACtE;AAEO,IAAM,cAAc,CAAqBA,QAAiB,WAA8B,QAAQ,WAAW,QAAQA,MAAK,CAAC;AAEzH,IAAM,aAAa,CAAI,OAAiB,cAAsC;AACnF,QAAM,SAAmB,CAAC;AAE1B,aAAW,WAAW,OAAO;AAC3B,UAAM,cAAc,OAAO,KAAK,CAAC,aAAa,UAAU,UAAU,OAAO,CAAC;AAC1E,QAAI,CAAC,aAAa;AAChB,aAAO,KAAK,OAAO;AAAA,IACrB;AAAA,EACF;AAEA,SAAO;AACT;AAIO,SAAS,SAAe,OAAiB,QAA2B,WAAoC;AAC7G,MAAI,MAAM,SAAS,GAAG;AACpB,WAAO,WAAW,OAAO,iBAAiB,QAAe,gBAAgB,CAAC,CAAC;AAAA,EAC7E,OAAO;AACL,WAAO,WAAW,OAAO,iBAAiB,QAAQ,SAAS,CAAC;AAAA,EAC9D;AACF;AAEO,IAAM,SAAS,CAAqB,UAA8B;AACvE,SAAO,SAAS,OAAO,IAAI;AAC7B;AAEO,IAAM,WAAW,CAAI,OAAiB,eAAwC;AACnF,SAAO,CAAC,GAAG,KAAK,EAAE,KAAK,UAAU;AACnC;AAIO,SAAS,OAAa,OAAiB,QAA2B,YAAsC;AAC7G,MAAI,MAAM,UAAU,GAAG;AACrB,WAAO;AAAA,MACL;AAAA,MACA,UAAU,CAAC,OAAO,KAAK,OAAO,EAAS,CAAc,GAAG,kBAAkB,CAAC;AAAA,IAC7E;AAAA,EACF,OAAO;AACL,WAAO,SAAS,OAAO,UAAU,QAAQ,UAAU,CAAC;AAAA,EACtD;AACF;AAEO,IAAM,OAAO,CAAqB,UAA8B,OAAO,OAAO,IAAI;AAElF,IAAM,cAAc,CAAI,UAAoB,WAA0C;AAC3F,QAAM,SAAS,CAAC,GAAG,KAAK;AAExB,aAAW,SAAS,QAAQ;AAC1B,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,aAAO,KAAK,GAAG,KAAK;AAAA,IACtB,OAAO;AACL,aAAO,KAAK,KAAK;AAAA,IACnB;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,QAAQ,CAAI,UAAmC;AAC1D,SAAO,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI;AACvC;AAEO,IAAM,OAAO,CAAI,UAAuB;AAC7C,aAAW,MAAM,WAAW,CAAC;AAC7B,SAAO,MAAM,KAAK;AACpB;AAEO,IAAM,OAAO,CAAI,UAAmC;AACzD,SAAO,MAAM,SAAS,IAAI,MAAM,MAAM,SAAS,CAAC,IAAI;AACtD;AAEO,IAAM,UAAU,CAAI,UAA6B;AACtD,SAAO,MAAM,WAAW;AAC1B;AAEO,IAAM,QAAQ,CAAC,WAA+C;AACnE,QAAM,CAAC,OAAO,GAAG,IAAI;AAErB,MAAI,QAAQ,KAAK;AACf,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,SAAmB,CAAC;AAC1B,WAAS,IAAI,OAAO,KAAK,KAAK,KAAK;AACjC,WAAO,KAAK,CAAC;AAAA,EACf;AACA,SAAO;AACT;AAGO,SAAS,QAA+C,OAAiB,UAA6C;AAC3H,SAAO,MAAM,OAA4B,CAAC,QAAQ,UAAU;AAC1D,UAAM,MAAM,SAAS,KAAK;AAE1B,QAAI,CAAC,OAAO,GAAG,GAAG;AAChB,aAAO,GAAG,IAAI,CAAC;AAAA,IACjB;AAEA,WAAO,GAAG,EAAE,KAAK,KAAK;AACtB,WAAO;AAAA,EACT,GAAG,CAAC,CAAQ;AACd;AAEO,IAAM,OAAO,CAAI,OAAiB,iBAAyB,MAAgB;AAChF,SAAO,MAAM,MAAM,cAAc;AACnC;AAEO,IAAM,gBAAgB,CAAI,OAAiB,cAA2E;AAC3H,WAAS,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK;AAC1C,UAAM,QAAQ,MAAM,CAAC;AACrB,QAAI,UAAU,UAAa,CAAC,UAAU,OAAO,GAAG,KAAK,GAAG;AACtD,YAAM,OAAO,GAAG,CAAC;AAAA,IACnB;AAAA,EACF;AACF;AAEO,IAAM,QAAQ,CAAC,UAAgC;AACpD,gBAAc,OAAO,MAAM,KAAK;AAClC;AAEO,IAAM,SAAS,CAAU,OAAiB,aAAgF;AAC/H,SAAO,MAAM,MAAM,IAAI,QAAQ,CAAC;AAClC;AAEO,IAAM,UAAU,CAAI,UAAkC;AAC3D,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO;AAAA,EACT;AAEA,SAAO,CAAC,KAAK;AACf;AAEO,IAAM,UAAU,CAAI,UAAqC;AAC9D,SAAO,MAAM,QAAQ,CAAC,OAAO,EAAE;AACjC;","names":["first"]}
|
package/dist/assertion.d.ts
CHANGED
@@ -1,14 +1,8 @@
|
|
1
1
|
import { LazyValue } from '@bessemer/cornerstone/lazy';
|
2
2
|
import { Nil } from '@bessemer/cornerstone/types';
|
3
|
-
|
4
|
-
export declare function assertUnreachable(message?: LazyValue<string>): never;
|
3
|
+
export declare function assert(message?: LazyValue<string>): never;
|
5
4
|
export declare function assertTrue(value: boolean, message?: LazyValue<string>): asserts value is true;
|
6
5
|
export declare function assertFalse(value: boolean, message?: LazyValue<string>): asserts value is false;
|
7
6
|
export declare function assertNil(value: any, message?: LazyValue<string>): asserts value is Nil;
|
8
7
|
export declare function assertPresent<T>(value: T, message?: LazyValue<string>): asserts value is NonNullable<T>;
|
9
|
-
export declare function expectPresent<T>(value: T, builder?: LazyValue<ErrorEventAugment | undefined>): asserts value is NonNullable<T>;
|
10
|
-
export declare function expectAuthorized<T>(value: boolean, builder?: LazyValue<ErrorEventAugment | undefined>): asserts value is true;
|
11
|
-
export declare function expectPermitted<T>(value: boolean, builder?: LazyValue<ErrorEventAugment | undefined>): asserts value is true;
|
12
|
-
export declare function expectValid<T>(value: boolean, builder?: LazyValue<ErrorEventAugment | undefined>): asserts value is true;
|
13
|
-
export declare function expect<T>(value: boolean, builder: LazyValue<ErrorEventBuilder>): asserts value is true;
|
14
8
|
//# sourceMappingURL=assertion.d.ts.map
|
package/dist/assertion.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"assertion.d.ts","sourceRoot":"","sources":["../src/assertion.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"assertion.d.ts","sourceRoot":"","sources":["../src/assertion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAA;AAGjD,wBAAgB,MAAM,CAAC,OAAO,GAAE,SAAS,CAAC,MAAM,CAAoD,GAAG,KAAK,CAE3G;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,SAAS,CAAC,MAAM,CAAmD,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAI9I;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,SAAS,CAAC,MAAM,CAAoD,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAEjJ;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,GAAE,SAAS,CAAC,MAAM,CAAkD,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAEvI;AAED,wBAAgB,aAAa,CAAC,CAAC,EAC7B,KAAK,EAAE,CAAC,EACR,OAAO,GAAE,SAAS,CAAC,MAAM,CAAsD,GAC9E,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAEjC"}
|
package/dist/assertion.js
CHANGED
@@ -1,65 +1,28 @@
|
|
1
1
|
// src/assertion.ts
|
2
|
-
import {
|
3
|
-
import {
|
4
|
-
|
5
|
-
|
6
|
-
forbidden,
|
7
|
-
notFound,
|
8
|
-
of,
|
9
|
-
unauthorized
|
10
|
-
} from "@bessemer/cornerstone/error-event";
|
11
|
-
function assertUnreachable(message = () => "Assertions.assertUnreachable was reached") {
|
12
|
-
throw new Error(Lazy.evaluate(message));
|
2
|
+
import { evaluate } from "@bessemer/cornerstone/lazy";
|
3
|
+
import { isNil, isPresent } from "@bessemer/cornerstone/object";
|
4
|
+
function assert(message = () => "Assertions.assertUnreachable was reached") {
|
5
|
+
throw new Error(evaluate(message));
|
13
6
|
}
|
14
7
|
function assertTrue(value, message = () => "Assertions.assertTrue failed validation") {
|
15
8
|
if (!value) {
|
16
|
-
throw new Error(
|
9
|
+
throw new Error(evaluate(message));
|
17
10
|
}
|
18
11
|
}
|
19
12
|
function assertFalse(value, message = () => "Assertions.assertFalse failed validation") {
|
20
13
|
return assertTrue(!value, message);
|
21
14
|
}
|
22
15
|
function assertNil(value, message = () => "Assertions.assertNil failed validation") {
|
23
|
-
return assertTrue(
|
16
|
+
return assertTrue(isNil(value), message);
|
24
17
|
}
|
25
18
|
function assertPresent(value, message = () => "Assertions.assertPresent failed validation") {
|
26
|
-
return assertTrue(
|
27
|
-
}
|
28
|
-
function expectPresent(value, builder = () => void 0) {
|
29
|
-
if (Objects.isNil(value)) {
|
30
|
-
throw new ErrorEventException(notFound(Lazy.evaluate(builder)));
|
31
|
-
}
|
32
|
-
}
|
33
|
-
function expectAuthorized(value, builder = () => void 0) {
|
34
|
-
if (!value) {
|
35
|
-
throw new ErrorEventException(unauthorized(Lazy.evaluate(builder)));
|
36
|
-
}
|
37
|
-
}
|
38
|
-
function expectPermitted(value, builder = () => void 0) {
|
39
|
-
if (!value) {
|
40
|
-
throw new ErrorEventException(forbidden(Lazy.evaluate(builder)));
|
41
|
-
}
|
42
|
-
}
|
43
|
-
function expectValid(value, builder = () => void 0) {
|
44
|
-
if (!value) {
|
45
|
-
throw new ErrorEventException(badRequest(Lazy.evaluate(builder)));
|
46
|
-
}
|
47
|
-
}
|
48
|
-
function expect(value, builder) {
|
49
|
-
if (!value) {
|
50
|
-
throw new ErrorEventException(of(Lazy.evaluate(builder)));
|
51
|
-
}
|
19
|
+
return assertTrue(isPresent(value), message);
|
52
20
|
}
|
53
21
|
export {
|
22
|
+
assert,
|
54
23
|
assertFalse,
|
55
24
|
assertNil,
|
56
25
|
assertPresent,
|
57
|
-
assertTrue
|
58
|
-
assertUnreachable,
|
59
|
-
expect,
|
60
|
-
expectAuthorized,
|
61
|
-
expectPermitted,
|
62
|
-
expectPresent,
|
63
|
-
expectValid
|
26
|
+
assertTrue
|
64
27
|
};
|
65
28
|
//# sourceMappingURL=assertion.js.map
|
package/dist/assertion.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/assertion.ts"],"sourcesContent":["import {
|
1
|
+
{"version":3,"sources":["../src/assertion.ts"],"sourcesContent":["import { evaluate, LazyValue } from '@bessemer/cornerstone/lazy'\nimport { Nil } from '@bessemer/cornerstone/types'\nimport { isNil, isPresent } from '@bessemer/cornerstone/object'\n\nexport function assert(message: LazyValue<string> = () => 'Assertions.assertUnreachable was reached'): never {\n throw new Error(evaluate(message))\n}\n\nexport function assertTrue(value: boolean, message: LazyValue<string> = () => 'Assertions.assertTrue failed validation'): asserts value is true {\n if (!value) {\n throw new Error(evaluate(message))\n }\n}\n\nexport function assertFalse(value: boolean, message: LazyValue<string> = () => 'Assertions.assertFalse failed validation'): asserts value is false {\n return assertTrue(!value, message)\n}\n\nexport function assertNil(value: any, message: LazyValue<string> = () => 'Assertions.assertNil failed validation'): asserts value is Nil {\n return assertTrue(isNil(value), message)\n}\n\nexport function assertPresent<T>(\n value: T,\n message: LazyValue<string> = () => 'Assertions.assertPresent failed validation'\n): asserts value is NonNullable<T> {\n return assertTrue(isPresent(value), message)\n}\n"],"mappings":";AAAA,SAAS,gBAA2B;AAEpC,SAAS,OAAO,iBAAiB;AAE1B,SAAS,OAAO,UAA6B,MAAM,4CAAmD;AAC3G,QAAM,IAAI,MAAM,SAAS,OAAO,CAAC;AACnC;AAEO,SAAS,WAAW,OAAgB,UAA6B,MAAM,2CAAkE;AAC9I,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,SAAS,OAAO,CAAC;AAAA,EACnC;AACF;AAEO,SAAS,YAAY,OAAgB,UAA6B,MAAM,4CAAoE;AACjJ,SAAO,WAAW,CAAC,OAAO,OAAO;AACnC;AAEO,SAAS,UAAU,OAAY,UAA6B,MAAM,0CAAgE;AACvI,SAAO,WAAW,MAAM,KAAK,GAAG,OAAO;AACzC;AAEO,SAAS,cACd,OACA,UAA6B,MAAM,8CACF;AACjC,SAAO,WAAW,UAAU,KAAK,GAAG,OAAO;AAC7C;","names":[]}
|
package/dist/async-value.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
// src/async-value.ts
|
2
2
|
import Zod from "zod";
|
3
|
-
import {
|
3
|
+
import { isNil } from "@bessemer/cornerstone/object";
|
4
4
|
var schema = (_) => {
|
5
5
|
return Zod.object({
|
6
6
|
isSuccess: Zod.boolean(),
|
@@ -30,7 +30,7 @@ var handle = (value, handlers) => {
|
|
30
30
|
if (value.isError) {
|
31
31
|
return handlers.error(value.data);
|
32
32
|
}
|
33
|
-
if (
|
33
|
+
if (isNil(value.data)) {
|
34
34
|
return handlers.absent();
|
35
35
|
}
|
36
36
|
return handlers.success(value.data);
|
package/dist/async-value.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/async-value.ts"],"sourcesContent":["import Zod, { ZodType } from 'zod'\nimport {
|
1
|
+
{"version":3,"sources":["../src/async-value.ts"],"sourcesContent":["import Zod, { ZodType } from 'zod'\nimport { isNil } from '@bessemer/cornerstone/object'\n\nexport type PendingValue = {\n isSuccess: false\n isError: false\n isLoading: false\n isFetching: boolean\n data: undefined\n}\n\nexport type LoadingValue = {\n isSuccess: false\n isError: false\n isLoading: true\n isFetching: boolean\n data: undefined\n}\n\nexport type ErrorValue = {\n isSuccess: false\n isError: true\n isLoading: false\n isFetching: boolean\n data: unknown\n}\n\nexport type FetchingValueSuccess<T> = {\n isSuccess: true\n isError: false\n isLoading: false\n isFetching: true\n data: T\n}\n\nexport type FetchingValueError = {\n isSuccess: false\n isError: true\n isLoading: false\n isFetching: true\n data: unknown\n}\n\nexport type SettledValue<T> = {\n isSuccess: true\n isError: false\n isLoading: false\n isFetching: false\n data: T\n}\n\nexport type AsyncValue<T> = PendingValue | LoadingValue | ErrorValue | FetchingValueSuccess<T> | FetchingValueError | SettledValue<T>\n\nexport const schema = <T>(_: ZodType<T>): ZodType<AsyncValue<T>> => {\n return Zod.object({\n isSuccess: Zod.boolean(),\n isError: Zod.boolean(),\n isLoading: Zod.boolean(),\n isFetching: Zod.boolean(),\n data: Zod.unknown(),\n }) as any\n}\n\nexport const isSettled = <T>(value: AsyncValue<T>): value is SettledValue<T> => {\n return value.isSuccess && !value.isError && !value.isLoading && !value.isFetching\n}\n\nexport const loading = (): LoadingValue => ({ isSuccess: false, isError: false, isLoading: true, isFetching: true, data: undefined })\n\nexport const fetching = <T>(data: T): FetchingValueSuccess<T> => ({\n isSuccess: true,\n isError: false,\n isLoading: false,\n isFetching: true,\n data,\n})\n\nexport const settled = <T>(data: T): SettledValue<T> => ({ isSuccess: true, isError: false, isLoading: false, isFetching: false, data })\n\nexport const error = (error: unknown): ErrorValue => ({ isSuccess: false, isError: true, isLoading: false, isFetching: false, data: error })\n\nexport const handle = <T, N>(\n value: AsyncValue<T | null>,\n handlers: { loading: () => N; error: (error: unknown) => N; absent: () => N; success: (data: T) => N }\n): N => {\n if (value.isLoading || (value.isError && value.isFetching)) {\n return handlers.loading()\n }\n if (value.isError) {\n return handlers.error(value.data)\n }\n if (isNil(value.data)) {\n return handlers.absent()\n }\n\n return handlers.success(value.data)\n}\n\nexport const map = <T, N>(value: AsyncValue<T>, mapper: (value: T) => N): AsyncValue<N> => {\n if (!value.isSuccess) {\n return value\n }\n\n return { ...value, data: mapper(value.data) }\n}\n"],"mappings":";AAAA,OAAO,SAAsB;AAC7B,SAAS,aAAa;AAoDf,IAAM,SAAS,CAAI,MAA0C;AAClE,SAAO,IAAI,OAAO;AAAA,IAChB,WAAW,IAAI,QAAQ;AAAA,IACvB,SAAS,IAAI,QAAQ;AAAA,IACrB,WAAW,IAAI,QAAQ;AAAA,IACvB,YAAY,IAAI,QAAQ;AAAA,IACxB,MAAM,IAAI,QAAQ;AAAA,EACpB,CAAC;AACH;AAEO,IAAM,YAAY,CAAI,UAAmD;AAC9E,SAAO,MAAM,aAAa,CAAC,MAAM,WAAW,CAAC,MAAM,aAAa,CAAC,MAAM;AACzE;AAEO,IAAM,UAAU,OAAqB,EAAE,WAAW,OAAO,SAAS,OAAO,WAAW,MAAM,YAAY,MAAM,MAAM,OAAU;AAE5H,IAAM,WAAW,CAAI,UAAsC;AAAA,EAChE,WAAW;AAAA,EACX,SAAS;AAAA,EACT,WAAW;AAAA,EACX,YAAY;AAAA,EACZ;AACF;AAEO,IAAM,UAAU,CAAI,UAA8B,EAAE,WAAW,MAAM,SAAS,OAAO,WAAW,OAAO,YAAY,OAAO,KAAK;AAE/H,IAAM,QAAQ,CAACA,YAAgC,EAAE,WAAW,OAAO,SAAS,MAAM,WAAW,OAAO,YAAY,OAAO,MAAMA,OAAM;AAEnI,IAAM,SAAS,CACpB,OACA,aACM;AACN,MAAI,MAAM,aAAc,MAAM,WAAW,MAAM,YAAa;AAC1D,WAAO,SAAS,QAAQ;AAAA,EAC1B;AACA,MAAI,MAAM,SAAS;AACjB,WAAO,SAAS,MAAM,MAAM,IAAI;AAAA,EAClC;AACA,MAAI,MAAM,MAAM,IAAI,GAAG;AACrB,WAAO,SAAS,OAAO;AAAA,EACzB;AAEA,SAAO,SAAS,QAAQ,MAAM,IAAI;AACpC;AAEO,IAAM,MAAM,CAAO,OAAsB,WAA2C;AACzF,MAAI,CAAC,MAAM,WAAW;AACpB,WAAO;AAAA,EACT;AAEA,SAAO,EAAE,GAAG,OAAO,MAAM,OAAO,MAAM,IAAI,EAAE;AAC9C;","names":["error"]}
|
package/dist/async.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../src/async.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,
|
1
|
+
{"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../src/async.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,gCAAgC,CAAA;AAEzE,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,UAAU,MAAM,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAWhE,CAAA;AAED,eAAO,MAAM,KAAK,GAAI,UAAU,QAAQ,KAAG,OAAO,CAAC,IAAI,CAItD,CAAA"}
|
package/dist/async.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
// src/async.ts
|
2
|
-
import {
|
2
|
+
import { toMilliseconds } from "@bessemer/cornerstone/duration";
|
3
3
|
var execute = (runnable) => {
|
4
4
|
return new Promise(async (resolve, reject) => {
|
5
5
|
setTimeout(async () => {
|
@@ -14,7 +14,7 @@ var execute = (runnable) => {
|
|
14
14
|
};
|
15
15
|
var sleep = (duration) => {
|
16
16
|
return new Promise((resolve) => {
|
17
|
-
setTimeout(resolve,
|
17
|
+
setTimeout(resolve, toMilliseconds(duration));
|
18
18
|
});
|
19
19
|
};
|
20
20
|
export {
|
package/dist/async.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/async.ts"],"sourcesContent":["import { Duration } from '@bessemer/cornerstone/duration'\
|
1
|
+
{"version":3,"sources":["../src/async.ts"],"sourcesContent":["import { Duration, toMilliseconds } from '@bessemer/cornerstone/duration'\n\nexport const execute = <T>(runnable: () => Promise<T>): Promise<T> => {\n return new Promise(async (resolve, reject) => {\n setTimeout(async () => {\n try {\n const value = await runnable()\n resolve(value)\n } catch (e) {\n reject(e)\n }\n }, 0)\n })\n}\n\nexport const sleep = (duration: Duration): Promise<void> => {\n return new Promise((resolve) => {\n setTimeout(resolve, toMilliseconds(duration))\n })\n}\n"],"mappings":";AAAA,SAAmB,sBAAsB;AAElC,IAAM,UAAU,CAAI,aAA2C;AACpE,SAAO,IAAI,QAAQ,OAAO,SAAS,WAAW;AAC5C,eAAW,YAAY;AACrB,UAAI;AACF,cAAM,QAAQ,MAAM,SAAS;AAC7B,gBAAQ,KAAK;AAAA,MACf,SAAS,GAAG;AACV,eAAO,CAAC;AAAA,MACV;AAAA,IACF,GAAG,CAAC;AAAA,EACN,CAAC;AACH;AAEO,IAAM,QAAQ,CAAC,aAAsC;AAC1D,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,eAAW,SAAS,eAAe,QAAQ,CAAC;AAAA,EAC9C,CAAC;AACH;","names":[]}
|
package/dist/cache.d.ts
CHANGED
@@ -3,7 +3,7 @@ import { Duration } from '@bessemer/cornerstone/duration';
|
|
3
3
|
import { ResourceKey, ResourceNamespace } from '@bessemer/cornerstone/resource';
|
4
4
|
import { AbstractApplicationContext } from '@bessemer/cornerstone/context';
|
5
5
|
import { NominalType } from '@bessemer/cornerstone/types';
|
6
|
-
import {
|
6
|
+
import { RecordEntry } from '@bessemer/cornerstone/entry';
|
7
7
|
import { GlobPattern } from '@bessemer/cornerstone/glob';
|
8
8
|
import { Arrayable } from 'type-fest';
|
9
9
|
import { ZodType } from 'zod';
|
@@ -36,9 +36,9 @@ export interface AbstractCache<T> {
|
|
36
36
|
}
|
37
37
|
export interface Cache<T> extends AbstractCache<T> {
|
38
38
|
fetchValue(namespace: ResourceNamespace, key: ResourceKey, fetch: () => Promise<T>): Promise<T>;
|
39
|
-
fetchValues(namespace: ResourceNamespace, keys: Array<ResourceKey>, fetch: (keys: Array<ResourceKey>) => Promise<Array<
|
39
|
+
fetchValues(namespace: ResourceNamespace, keys: Array<ResourceKey>, fetch: (keys: Array<ResourceKey>) => Promise<Array<RecordEntry<T>>>): Promise<Array<RecordEntry<T>>>;
|
40
40
|
writeValue(namespace: ResourceNamespace, key: ResourceKey, value: T | undefined): Promise<void>;
|
41
|
-
writeValues(namespace: ResourceNamespace, entries: Array<
|
41
|
+
writeValues(namespace: ResourceNamespace, entries: Array<RecordEntry<T | undefined>>): Promise<void>;
|
42
42
|
evictAll(sector: CacheSector): Promise<void>;
|
43
43
|
}
|
44
44
|
export interface CacheProvider<T> extends RemoteKeyValueStore<CacheEntry<T>> {
|
@@ -51,9 +51,9 @@ export declare abstract class AbstractCacheProvider<T> extends AbstractRemoteKey
|
|
51
51
|
}
|
52
52
|
export interface LocalCache<T> extends AbstractCache<T> {
|
53
53
|
getValue(namespace: ResourceNamespace, key: ResourceKey, fetch: () => T): T;
|
54
|
-
getValues(namespace: ResourceNamespace, keys: Array<ResourceKey>, fetch: (keys: Array<ResourceKey>) => Array<
|
54
|
+
getValues(namespace: ResourceNamespace, keys: Array<ResourceKey>, fetch: (keys: Array<ResourceKey>) => Array<RecordEntry<T>>): Array<RecordEntry<T>>;
|
55
55
|
setValue(namespace: ResourceNamespace, key: ResourceKey, value: T | undefined): void;
|
56
|
-
setValues(namespace: ResourceNamespace, entries: Array<
|
56
|
+
setValues(namespace: ResourceNamespace, entries: Array<RecordEntry<T | undefined>>): void;
|
57
57
|
removeAll(sector: CacheSector): void;
|
58
58
|
}
|
59
59
|
export interface LocalCacheProvider<T> extends LocalKeyValueStore<CacheEntry<T>>, CacheProvider<T> {
|