@zambit/elevate-ts 0.1.2
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/CLA-CORPORATE.md +72 -0
- package/CLA-INDIVIDUAL.md +71 -0
- package/DUAL-PUBLISHING-STRATEGY.md +571 -0
- package/LICENSE +610 -0
- package/README.md +77 -0
- package/dist/cjs/Either.d.ts +67 -0
- package/dist/cjs/Either.d.ts.map +1 -0
- package/dist/cjs/Either.js +147 -0
- package/dist/cjs/Either.js.map +1 -0
- package/dist/cjs/EitherAsync.d.ts +139 -0
- package/dist/cjs/EitherAsync.d.ts.map +1 -0
- package/dist/cjs/EitherAsync.js +171 -0
- package/dist/cjs/EitherAsync.js.map +1 -0
- package/dist/cjs/Function.d.ts +153 -0
- package/dist/cjs/Function.d.ts.map +1 -0
- package/dist/cjs/Function.js +110 -0
- package/dist/cjs/Function.js.map +1 -0
- package/dist/cjs/List.d.ts +134 -0
- package/dist/cjs/List.d.ts.map +1 -0
- package/dist/cjs/List.js +243 -0
- package/dist/cjs/List.js.map +1 -0
- package/dist/cjs/Maybe.d.ts +64 -0
- package/dist/cjs/Maybe.d.ts.map +1 -0
- package/dist/cjs/Maybe.js +122 -0
- package/dist/cjs/Maybe.js.map +1 -0
- package/dist/cjs/MaybeAsync.d.ts +115 -0
- package/dist/cjs/MaybeAsync.d.ts.map +1 -0
- package/dist/cjs/MaybeAsync.js +151 -0
- package/dist/cjs/MaybeAsync.js.map +1 -0
- package/dist/cjs/NonEmptyList.d.ts +86 -0
- package/dist/cjs/NonEmptyList.d.ts.map +1 -0
- package/dist/cjs/NonEmptyList.js +128 -0
- package/dist/cjs/NonEmptyList.js.map +1 -0
- package/dist/cjs/Reader.d.ts +53 -0
- package/dist/cjs/Reader.d.ts.map +1 -0
- package/dist/cjs/Reader.js +60 -0
- package/dist/cjs/Reader.js.map +1 -0
- package/dist/cjs/State.d.ts +71 -0
- package/dist/cjs/State.d.ts.map +1 -0
- package/dist/cjs/State.js +94 -0
- package/dist/cjs/State.js.map +1 -0
- package/dist/cjs/Tuple.d.ts +69 -0
- package/dist/cjs/Tuple.d.ts.map +1 -0
- package/dist/cjs/Tuple.js +73 -0
- package/dist/cjs/Tuple.js.map +1 -0
- package/dist/cjs/Validation.d.ts +53 -0
- package/dist/cjs/Validation.d.ts.map +1 -0
- package/dist/cjs/Validation.js +77 -0
- package/dist/cjs/Validation.js.map +1 -0
- package/dist/cjs/index.d.ts +12 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +25 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/tokens/config.d.ts +43 -0
- package/dist/cjs/tokens/config.d.ts.map +1 -0
- package/dist/cjs/tokens/config.js +162 -0
- package/dist/cjs/tokens/config.js.map +1 -0
- package/dist/cjs/tokens/cssGen.d.ts +18 -0
- package/dist/cjs/tokens/cssGen.d.ts.map +1 -0
- package/dist/cjs/tokens/cssGen.js +144 -0
- package/dist/cjs/tokens/cssGen.js.map +1 -0
- package/dist/cjs/tokens/generateCSS.d.ts +18 -0
- package/dist/cjs/tokens/generateCSS.d.ts.map +1 -0
- package/dist/cjs/tokens/generateCSS.js +83 -0
- package/dist/cjs/tokens/generateCSS.js.map +1 -0
- package/dist/cjs/tokens/index.d.ts +13 -0
- package/dist/cjs/tokens/index.d.ts.map +1 -0
- package/dist/cjs/tokens/index.js +12 -0
- package/dist/cjs/tokens/index.js.map +1 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/Either.d.ts +67 -0
- package/dist/esm/Either.d.ts.map +1 -0
- package/dist/esm/Either.js +136 -0
- package/dist/esm/Either.js.map +1 -0
- package/dist/esm/EitherAsync.d.ts +139 -0
- package/dist/esm/EitherAsync.d.ts.map +1 -0
- package/dist/esm/EitherAsync.js +173 -0
- package/dist/esm/EitherAsync.js.map +1 -0
- package/dist/esm/Function.d.ts +153 -0
- package/dist/esm/Function.d.ts.map +1 -0
- package/dist/esm/Function.js +109 -0
- package/dist/esm/Function.js.map +1 -0
- package/dist/esm/List.d.ts +134 -0
- package/dist/esm/List.d.ts.map +1 -0
- package/dist/esm/List.js +243 -0
- package/dist/esm/List.js.map +1 -0
- package/dist/esm/Maybe.d.ts +64 -0
- package/dist/esm/Maybe.d.ts.map +1 -0
- package/dist/esm/Maybe.js +113 -0
- package/dist/esm/Maybe.js.map +1 -0
- package/dist/esm/MaybeAsync.d.ts +115 -0
- package/dist/esm/MaybeAsync.d.ts.map +1 -0
- package/dist/esm/MaybeAsync.js +150 -0
- package/dist/esm/MaybeAsync.js.map +1 -0
- package/dist/esm/NonEmptyList.d.ts +86 -0
- package/dist/esm/NonEmptyList.d.ts.map +1 -0
- package/dist/esm/NonEmptyList.js +128 -0
- package/dist/esm/NonEmptyList.js.map +1 -0
- package/dist/esm/Reader.d.ts +53 -0
- package/dist/esm/Reader.d.ts.map +1 -0
- package/dist/esm/Reader.js +60 -0
- package/dist/esm/Reader.js.map +1 -0
- package/dist/esm/State.d.ts +71 -0
- package/dist/esm/State.d.ts.map +1 -0
- package/dist/esm/State.js +94 -0
- package/dist/esm/State.js.map +1 -0
- package/dist/esm/Tuple.d.ts +69 -0
- package/dist/esm/Tuple.d.ts.map +1 -0
- package/dist/esm/Tuple.js +73 -0
- package/dist/esm/Tuple.js.map +1 -0
- package/dist/esm/Validation.d.ts +53 -0
- package/dist/esm/Validation.d.ts.map +1 -0
- package/dist/esm/Validation.js +79 -0
- package/dist/esm/Validation.js.map +1 -0
- package/dist/esm/index.d.ts +12 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +22 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/src/Either.d.ts +67 -0
- package/dist/esm/src/Either.d.ts.map +1 -0
- package/dist/esm/src/Either.js +147 -0
- package/dist/esm/src/Either.js.map +1 -0
- package/dist/esm/src/EitherAsync.d.ts +139 -0
- package/dist/esm/src/EitherAsync.d.ts.map +1 -0
- package/dist/esm/src/EitherAsync.js +171 -0
- package/dist/esm/src/EitherAsync.js.map +1 -0
- package/dist/esm/src/Function.d.ts +153 -0
- package/dist/esm/src/Function.d.ts.map +1 -0
- package/dist/esm/src/Function.js +110 -0
- package/dist/esm/src/Function.js.map +1 -0
- package/dist/esm/src/List.d.ts +134 -0
- package/dist/esm/src/List.d.ts.map +1 -0
- package/dist/esm/src/List.js +243 -0
- package/dist/esm/src/List.js.map +1 -0
- package/dist/esm/src/Maybe.d.ts +64 -0
- package/dist/esm/src/Maybe.d.ts.map +1 -0
- package/dist/esm/src/Maybe.js +122 -0
- package/dist/esm/src/Maybe.js.map +1 -0
- package/dist/esm/src/MaybeAsync.d.ts +115 -0
- package/dist/esm/src/MaybeAsync.d.ts.map +1 -0
- package/dist/esm/src/MaybeAsync.js +151 -0
- package/dist/esm/src/MaybeAsync.js.map +1 -0
- package/dist/esm/src/NonEmptyList.d.ts +86 -0
- package/dist/esm/src/NonEmptyList.d.ts.map +1 -0
- package/dist/esm/src/NonEmptyList.js +128 -0
- package/dist/esm/src/NonEmptyList.js.map +1 -0
- package/dist/esm/src/Reader.d.ts +53 -0
- package/dist/esm/src/Reader.d.ts.map +1 -0
- package/dist/esm/src/Reader.js +60 -0
- package/dist/esm/src/Reader.js.map +1 -0
- package/dist/esm/src/State.d.ts +71 -0
- package/dist/esm/src/State.d.ts.map +1 -0
- package/dist/esm/src/State.js +94 -0
- package/dist/esm/src/State.js.map +1 -0
- package/dist/esm/src/Tuple.d.ts +69 -0
- package/dist/esm/src/Tuple.d.ts.map +1 -0
- package/dist/esm/src/Tuple.js +73 -0
- package/dist/esm/src/Tuple.js.map +1 -0
- package/dist/esm/src/Validation.d.ts +53 -0
- package/dist/esm/src/Validation.d.ts.map +1 -0
- package/dist/esm/src/Validation.js +77 -0
- package/dist/esm/src/Validation.js.map +1 -0
- package/dist/esm/src/index.d.ts +12 -0
- package/dist/esm/src/index.d.ts.map +1 -0
- package/dist/esm/src/index.js +25 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
- package/elevate-ts-vs-effect-critique.md +806 -0
- package/eslint.config.js +104 -0
- package/package.json +139 -0
package/dist/esm/List.js
ADDED
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
// List — Array Utilities
|
|
2
|
+
import * as Maybe from './Maybe.js';
|
|
3
|
+
/**
|
|
4
|
+
* Get the first element of an array.
|
|
5
|
+
* @param arr - The array.
|
|
6
|
+
* @returns The first element or undefined if empty.
|
|
7
|
+
*/
|
|
8
|
+
export const head = (arr) => arr[0];
|
|
9
|
+
/**
|
|
10
|
+
* Get all but the first element.
|
|
11
|
+
* @param arr - The array.
|
|
12
|
+
* @returns An array of remaining elements.
|
|
13
|
+
*/
|
|
14
|
+
export const tail = (arr) => arr.slice(1);
|
|
15
|
+
/**
|
|
16
|
+
* Get the last element of an array.
|
|
17
|
+
* @param arr - The array.
|
|
18
|
+
* @returns The last element or undefined if empty.
|
|
19
|
+
*/
|
|
20
|
+
export const last = (arr) => arr.length > 0 ? arr[arr.length - 1] : undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Get all but the last element.
|
|
23
|
+
* @param arr - The array.
|
|
24
|
+
* @returns An array of all but the last element.
|
|
25
|
+
*/
|
|
26
|
+
export const init = (arr) => arr.length > 0 ? arr.slice(0, -1) : [];
|
|
27
|
+
/**
|
|
28
|
+
* Deconstruct an array into head and tail.
|
|
29
|
+
* @param arr - The array.
|
|
30
|
+
* @returns Just [head, tail] if nonempty, Nothing if empty.
|
|
31
|
+
*/
|
|
32
|
+
export const uncons = (arr) => arr.length > 0 ? Maybe.Just([arr[0], arr.slice(1)]) : Maybe.Nothing;
|
|
33
|
+
/**
|
|
34
|
+
* Prepend an element to an array.
|
|
35
|
+
* @param a - The element to prepend.
|
|
36
|
+
* @returns A function that takes an array and returns the new array.
|
|
37
|
+
*/
|
|
38
|
+
export const cons = (a) => (arr) => [a, ...arr];
|
|
39
|
+
/**
|
|
40
|
+
* Append an element to an array.
|
|
41
|
+
* @param a - The element to append.
|
|
42
|
+
* @returns A function that takes an array and returns the new array.
|
|
43
|
+
*/
|
|
44
|
+
export const snoc = (a) => (arr) => [...arr, a];
|
|
45
|
+
/**
|
|
46
|
+
* Take the first n elements.
|
|
47
|
+
* @param n - The number of elements to take.
|
|
48
|
+
* @returns A function that takes an array and returns the first n elements.
|
|
49
|
+
*/
|
|
50
|
+
export const take = (n) => (arr) => arr.slice(0, n);
|
|
51
|
+
/**
|
|
52
|
+
* Drop the first n elements.
|
|
53
|
+
* @param n - The number of elements to drop.
|
|
54
|
+
* @returns A function that takes an array and returns the remaining elements.
|
|
55
|
+
*/
|
|
56
|
+
export const drop = (n) => (arr) => arr.slice(n);
|
|
57
|
+
/**
|
|
58
|
+
* Take elements while predicate holds.
|
|
59
|
+
* @param predicate - The predicate to test.
|
|
60
|
+
* @returns A function that takes an array and returns elements taken while predicate holds.
|
|
61
|
+
*/
|
|
62
|
+
export const takeWhile = (predicate) => (arr) => {
|
|
63
|
+
let i = 0;
|
|
64
|
+
while (i < arr.length && predicate(arr[i]))
|
|
65
|
+
i++;
|
|
66
|
+
return arr.slice(0, i);
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Drop elements while predicate holds.
|
|
70
|
+
* @param predicate - The predicate to test.
|
|
71
|
+
* @returns A function that takes an array and returns remaining elements.
|
|
72
|
+
*/
|
|
73
|
+
export const dropWhile = (predicate) => (arr) => {
|
|
74
|
+
let i = 0;
|
|
75
|
+
while (i < arr.length && predicate(arr[i]))
|
|
76
|
+
i++;
|
|
77
|
+
return arr.slice(i);
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Partition an array into two based on a predicate.
|
|
81
|
+
* @param predicate - The predicate to split on.
|
|
82
|
+
* @returns A function that takes an array and returns [matching, nonmatching].
|
|
83
|
+
*/
|
|
84
|
+
export const partition = (predicate) => (arr) => {
|
|
85
|
+
const left = [];
|
|
86
|
+
const right = [];
|
|
87
|
+
for (const a of arr) {
|
|
88
|
+
if (predicate(a)) {
|
|
89
|
+
left.push(a);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
right.push(a);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return [left, right];
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Split an array at the first element that fails the predicate.
|
|
99
|
+
* @param predicate - The predicate to test.
|
|
100
|
+
* @returns A function that takes an array and returns [taken, dropped].
|
|
101
|
+
*/
|
|
102
|
+
export const span = (predicate) => (arr) => {
|
|
103
|
+
let i = 0;
|
|
104
|
+
while (i < arr.length && predicate(arr[i]))
|
|
105
|
+
i++;
|
|
106
|
+
return [arr.slice(0, i), arr.slice(i)];
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Group consecutive equal elements.
|
|
110
|
+
* @param eq - Equality comparator.
|
|
111
|
+
* @returns A function that takes an array and returns grouped elements.
|
|
112
|
+
*/
|
|
113
|
+
export const groupBy = (eq) => (arr) => {
|
|
114
|
+
if (arr.length === 0)
|
|
115
|
+
return [];
|
|
116
|
+
const groups = [];
|
|
117
|
+
let current = [arr[0]];
|
|
118
|
+
for (let i = 1; i < arr.length; i++) {
|
|
119
|
+
if (eq(arr[i], arr[i - 1])) {
|
|
120
|
+
current.push(arr[i]);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
groups.push(current);
|
|
124
|
+
current = [arr[i]];
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
groups.push(current);
|
|
128
|
+
return groups;
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* Remove consecutive duplicates.
|
|
132
|
+
* @param eq - Equality comparator.
|
|
133
|
+
* @returns A function that takes an array and returns array without consecutive duplicates.
|
|
134
|
+
*/
|
|
135
|
+
export const nubBy = (eq) => (arr) => {
|
|
136
|
+
if (arr.length === 0)
|
|
137
|
+
return [];
|
|
138
|
+
const result = [arr[0]];
|
|
139
|
+
for (let i = 1; i < arr.length; i++) {
|
|
140
|
+
if (!eq(arr[i], arr[i - 1])) {
|
|
141
|
+
result.push(arr[i]);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return result;
|
|
145
|
+
};
|
|
146
|
+
/**
|
|
147
|
+
* Sort an array with a comparator function.
|
|
148
|
+
* @param ord - Comparator function (negative if a < b, positive if a > b).
|
|
149
|
+
* @returns A function that takes an array and returns a sorted array.
|
|
150
|
+
*/
|
|
151
|
+
export const sortBy = (ord) => (arr) => [...arr].sort(ord);
|
|
152
|
+
/**
|
|
153
|
+
* Zip two arrays into pairs.
|
|
154
|
+
* @param arr2 - The second array.
|
|
155
|
+
* @returns A function taking first array, returning [pairs, remainders].
|
|
156
|
+
*/
|
|
157
|
+
export const zip = (arr2) => (arr1) => {
|
|
158
|
+
const len = Math.min(arr1.length, arr2.length);
|
|
159
|
+
const pairs = [];
|
|
160
|
+
for (let i = 0; i < len; i++) {
|
|
161
|
+
pairs.push([arr1[i], arr2[i]]);
|
|
162
|
+
}
|
|
163
|
+
const remainder = arr1.length > arr2.length ? arr1.slice(len) : arr2.slice(len);
|
|
164
|
+
return [pairs, remainder];
|
|
165
|
+
};
|
|
166
|
+
/**
|
|
167
|
+
* Zip two arrays with a function.
|
|
168
|
+
* @param f - Function to apply to pairs.
|
|
169
|
+
* @returns A function taking the second array, then first array, returning results.
|
|
170
|
+
*/
|
|
171
|
+
export const zipWith = (f) => (arr2) => (arr1) => {
|
|
172
|
+
const len = Math.min(arr1.length, arr2.length);
|
|
173
|
+
const result = [];
|
|
174
|
+
for (let i = 0; i < len; i++) {
|
|
175
|
+
result.push(f(arr1[i], arr2[i]));
|
|
176
|
+
}
|
|
177
|
+
return result;
|
|
178
|
+
};
|
|
179
|
+
/**
|
|
180
|
+
* Unzip an array of pairs into two arrays.
|
|
181
|
+
* @param pairs - Array of pairs.
|
|
182
|
+
* @returns A tuple of two arrays.
|
|
183
|
+
*/
|
|
184
|
+
export const unzip = (pairs) => {
|
|
185
|
+
const as = [];
|
|
186
|
+
const bs = [];
|
|
187
|
+
for (const [a, b] of pairs) {
|
|
188
|
+
as.push(a);
|
|
189
|
+
bs.push(b);
|
|
190
|
+
}
|
|
191
|
+
return [as, bs];
|
|
192
|
+
};
|
|
193
|
+
/**
|
|
194
|
+
* Flatten one level of nesting.
|
|
195
|
+
* @param arr - Array of arrays.
|
|
196
|
+
* @returns A flattened array.
|
|
197
|
+
*/
|
|
198
|
+
export const flatten = (arr) => {
|
|
199
|
+
const result = [];
|
|
200
|
+
for (const sub of arr) {
|
|
201
|
+
for (const a of sub) {
|
|
202
|
+
result.push(a);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return result;
|
|
206
|
+
};
|
|
207
|
+
/**
|
|
208
|
+
* Insert a separator between elements.
|
|
209
|
+
* @param sep - The separator element.
|
|
210
|
+
* @returns A function that takes an array and returns interspersed array.
|
|
211
|
+
*/
|
|
212
|
+
export const intersperse = (sep) => (arr) => {
|
|
213
|
+
if (arr.length === 0)
|
|
214
|
+
return [];
|
|
215
|
+
const result = [arr[0]];
|
|
216
|
+
for (let i = 1; i < arr.length; i++) {
|
|
217
|
+
result.push(sep);
|
|
218
|
+
result.push(arr[i]);
|
|
219
|
+
}
|
|
220
|
+
return result;
|
|
221
|
+
};
|
|
222
|
+
/**
|
|
223
|
+
* Transpose a matrix (2D array).
|
|
224
|
+
* @param matrix - A matrix as array of arrays.
|
|
225
|
+
* @returns The transposed matrix.
|
|
226
|
+
*/
|
|
227
|
+
export const transpose = (matrix) => {
|
|
228
|
+
if (matrix.length === 0)
|
|
229
|
+
return [];
|
|
230
|
+
const maxLen = Math.max(...matrix.map((row) => row.length));
|
|
231
|
+
const result = [];
|
|
232
|
+
for (let col = 0; col < maxLen; col++) {
|
|
233
|
+
const row = [];
|
|
234
|
+
for (let rowIdx = 0; rowIdx < matrix.length; rowIdx++) {
|
|
235
|
+
if (col < matrix[rowIdx].length) {
|
|
236
|
+
row.push(matrix[rowIdx][col]);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
result.push(row);
|
|
240
|
+
}
|
|
241
|
+
return result;
|
|
242
|
+
};
|
|
243
|
+
//# sourceMappingURL=List.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"List.js","sourceRoot":"","sources":["../../src/List.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/** Represents a Just value. */
|
|
2
|
+
export type Just<A> = {
|
|
3
|
+
readonly tag: 'Just';
|
|
4
|
+
readonly value: A;
|
|
5
|
+
};
|
|
6
|
+
/** Represents the absence of a value. */
|
|
7
|
+
export type Nothing = {
|
|
8
|
+
readonly tag: 'Nothing';
|
|
9
|
+
};
|
|
10
|
+
/** Optional value: Just<A> (present) or Nothing (absent). */
|
|
11
|
+
export type Maybe<A> = Just<A> | Nothing;
|
|
12
|
+
/** Create a Just value. */
|
|
13
|
+
export declare const Just: <A>(value: A) => Just<A>;
|
|
14
|
+
/** The Nothing singleton. */
|
|
15
|
+
export declare const Nothing: Nothing;
|
|
16
|
+
/** Test if a Maybe is Just. */
|
|
17
|
+
export declare const isJust: <A>(ma: Maybe<A>) => ma is Just<A>;
|
|
18
|
+
/** Test if a Maybe is Nothing. */
|
|
19
|
+
export declare const isNothing: <A>(ma: Maybe<A>) => ma is Nothing;
|
|
20
|
+
/** Lift a possibly-null value into Maybe. */
|
|
21
|
+
export declare const fromNullable: <A>(a: A | null | undefined) => Maybe<A>;
|
|
22
|
+
/** Construct Just if predicate holds, Nothing otherwise. */
|
|
23
|
+
export declare const fromPredicate: <A>(predicate: (a: A) => boolean) => ((a: A) => Maybe<A>);
|
|
24
|
+
/** Extract value or null. */
|
|
25
|
+
export declare const toNullable: <A>(ma: Maybe<A>) => A | null;
|
|
26
|
+
/** Lift to 0 or 1 element array. */
|
|
27
|
+
export declare const toArray: <A>(ma: Maybe<A>) => readonly A[];
|
|
28
|
+
/** Functor map. */
|
|
29
|
+
export declare const map: <A, B>(f: (a: A) => B) => ((ma: Maybe<A>) => Maybe<B>);
|
|
30
|
+
/** Applicative ap. */
|
|
31
|
+
export declare const ap: <A, B>(mf: Maybe<(a: A) => B>) => ((ma: Maybe<A>) => Maybe<B>);
|
|
32
|
+
/** Monadic bind (flatMap). */
|
|
33
|
+
export declare const chain: <A, B>(f: (a: A) => Maybe<B>) => ((ma: Maybe<A>) => Maybe<B>);
|
|
34
|
+
/** Chain with nullable result. */
|
|
35
|
+
export declare const chainNullable: <A, B>(f: (a: A) => B | null | undefined) => ((ma: Maybe<A>) => Maybe<B>);
|
|
36
|
+
/** Extract value or provide a default. */
|
|
37
|
+
export declare const getOrElse: <A>(a: A) => ((ma: Maybe<A>) => A);
|
|
38
|
+
/** Extract value or compute a default lazily. */
|
|
39
|
+
export declare const getOrElseL: <A>(f: () => A) => ((ma: Maybe<A>) => A);
|
|
40
|
+
/** Alt: use alternative if first is Nothing. */
|
|
41
|
+
export declare const alt: <A>(malt: Maybe<A>) => ((ma: Maybe<A>) => Maybe<A>);
|
|
42
|
+
/** Alt with lazy alternative. */
|
|
43
|
+
export declare const altL: <A>(f: () => Maybe<A>) => ((ma: Maybe<A>) => Maybe<A>);
|
|
44
|
+
/** Keep if predicate holds, otherwise Nothing. */
|
|
45
|
+
export declare const filter: <A>(predicate: (a: A) => boolean) => ((ma: Maybe<A>) => Maybe<A>);
|
|
46
|
+
/** Case analysis. */
|
|
47
|
+
export declare const fold: <A, B>(onNothing: B, onJust: (a: A) => B) => ((ma: Maybe<A>) => B);
|
|
48
|
+
/** Filter out Nothing; collect Just values. */
|
|
49
|
+
export declare const catMaybes: <A>(maybes: readonly Maybe<A>[]) => readonly A[];
|
|
50
|
+
/** Map then catMaybes. */
|
|
51
|
+
export declare const mapMaybe: <A, B>(f: (a: A) => Maybe<B>) => ((as: readonly A[]) => readonly B[]);
|
|
52
|
+
/** Sequence all-or-Nothing. */
|
|
53
|
+
export declare const sequence: <A>(maybes: readonly Maybe<A>[]) => Maybe<readonly A[]>;
|
|
54
|
+
/** Traverse a sequence. */
|
|
55
|
+
export declare const traverse: <A, B>(f: (a: A) => Maybe<B>) => ((as: readonly A[]) => Maybe<readonly B[]>);
|
|
56
|
+
/** Convert a Maybe to an Either. */
|
|
57
|
+
export declare const toEither: <E, A>(onNothing: E) => ((ma: Maybe<A>) => {
|
|
58
|
+
readonly tag: "Right";
|
|
59
|
+
readonly right: A;
|
|
60
|
+
} | {
|
|
61
|
+
readonly tag: "Left";
|
|
62
|
+
readonly left: E;
|
|
63
|
+
});
|
|
64
|
+
//# sourceMappingURL=Maybe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Maybe.d.ts","sourceRoot":"","sources":["../../src/Maybe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
// Maybe — Optional values
|
|
2
|
+
/** Create a Just value. */
|
|
3
|
+
export const Just = (value) => ({ tag: 'Just', value });
|
|
4
|
+
/** The Nothing singleton. */
|
|
5
|
+
export const Nothing = { tag: 'Nothing' };
|
|
6
|
+
/** Test if a Maybe is Just. */
|
|
7
|
+
export const isJust = (ma) => ma.tag === 'Just';
|
|
8
|
+
/** Test if a Maybe is Nothing. */
|
|
9
|
+
export const isNothing = (ma) => ma.tag === 'Nothing';
|
|
10
|
+
/** Lift a possibly-null value into Maybe. */
|
|
11
|
+
export const fromNullable = (a) => a == null ? Nothing : Just(a);
|
|
12
|
+
/** Construct Just if predicate holds, Nothing otherwise. */
|
|
13
|
+
export const fromPredicate = (predicate) => (a) => predicate(a) ? Just(a) : Nothing;
|
|
14
|
+
/** Extract value or null. */
|
|
15
|
+
export const toNullable = (ma) => ma.tag === 'Just' ? ma.value : null;
|
|
16
|
+
/** Lift to 0 or 1 element array. */
|
|
17
|
+
export const toArray = (ma) => ma.tag === 'Just' ? [ma.value] : [];
|
|
18
|
+
/** Functor map. */
|
|
19
|
+
export const map = (f) => (ma) => ma.tag === 'Just' ? Just(f(ma.value)) : Nothing;
|
|
20
|
+
/** Applicative ap. */
|
|
21
|
+
export const ap = (mf) => (ma) => mf.tag === 'Just' && ma.tag === 'Just' ? Just(mf.value(ma.value)) : Nothing;
|
|
22
|
+
/** Monadic bind (flatMap). */
|
|
23
|
+
export const chain = (f) => (ma) => ma.tag === 'Just' ? f(ma.value) : Nothing;
|
|
24
|
+
/** Chain with nullable result. */
|
|
25
|
+
export const chainNullable = (f) => (ma) => ma.tag === 'Just' ? fromNullable(f(ma.value)) : Nothing;
|
|
26
|
+
/** Extract value or provide a default. */
|
|
27
|
+
export const getOrElse = (a) => (ma) => ma.tag === 'Just' ? ma.value : a;
|
|
28
|
+
/** Extract value or compute a default lazily. */
|
|
29
|
+
export const getOrElseL = (f) => (ma) => ma.tag === 'Just' ? ma.value : f();
|
|
30
|
+
/** Alt: use alternative if first is Nothing. */
|
|
31
|
+
export const alt = (malt) => (ma) => ma.tag === 'Just' ? ma : malt;
|
|
32
|
+
/** Alt with lazy alternative. */
|
|
33
|
+
export const altL = (f) => (ma) => ma.tag === 'Just' ? ma : f();
|
|
34
|
+
/** Keep if predicate holds, otherwise Nothing. */
|
|
35
|
+
export const filter = (predicate) => (ma) => ma.tag === 'Just' && predicate(ma.value) ? ma : Nothing;
|
|
36
|
+
/** Case analysis. */
|
|
37
|
+
export const fold = (onNothing, onJust) => (ma) => ma.tag === 'Just' ? onJust(ma.value) : onNothing;
|
|
38
|
+
/** Filter out Nothing; collect Just values. */
|
|
39
|
+
export const catMaybes = (maybes) => maybes.flatMap((ma) => (ma.tag === 'Just' ? [ma.value] : []));
|
|
40
|
+
/** Map then catMaybes. */
|
|
41
|
+
export const mapMaybe = (f) => (as) => catMaybes(as.map(f));
|
|
42
|
+
/** Sequence all-or-Nothing. */
|
|
43
|
+
export const sequence = (maybes) => {
|
|
44
|
+
const result = [];
|
|
45
|
+
for (const ma of maybes) {
|
|
46
|
+
if (ma.tag === 'Nothing')
|
|
47
|
+
return Nothing;
|
|
48
|
+
result.push(ma.value);
|
|
49
|
+
}
|
|
50
|
+
return Just(result);
|
|
51
|
+
};
|
|
52
|
+
/** Traverse a sequence. */
|
|
53
|
+
export const traverse = (f) => (as) => sequence(as.map(f));
|
|
54
|
+
// Fantasy Land symbols
|
|
55
|
+
const flMap = (f) => map(f);
|
|
56
|
+
const flAp = (mf) => ap(mf);
|
|
57
|
+
const flChain = (f) => chain(f);
|
|
58
|
+
const flFilter = (predicate) => filter(predicate);
|
|
59
|
+
const flReduce = (f, b) => (ma) => ma.tag === 'Just' ? f(b, ma.value) : b;
|
|
60
|
+
const flEquals = (a) => (ma) => ma.tag === 'Just' && ma.value === a;
|
|
61
|
+
Object.defineProperty(Just, 'fantasy-land/of', { value: Just });
|
|
62
|
+
Object.defineProperty(Nothing, 'fantasy-land/zero', { value: Nothing });
|
|
63
|
+
const justProto = Object.getPrototypeOf(Just(0));
|
|
64
|
+
justProto['fantasy-land/map'] = function (f) {
|
|
65
|
+
return Just(f(this.value));
|
|
66
|
+
};
|
|
67
|
+
justProto['fantasy-land/ap'] = function (ma) {
|
|
68
|
+
return ap(this)(ma);
|
|
69
|
+
};
|
|
70
|
+
justProto['fantasy-land/chain'] = function (f) {
|
|
71
|
+
return f(this.value);
|
|
72
|
+
};
|
|
73
|
+
justProto['fantasy-land/alt'] = function (malt) {
|
|
74
|
+
return this;
|
|
75
|
+
};
|
|
76
|
+
justProto['fantasy-land/filter'] = function (predicate) {
|
|
77
|
+
return predicate(this.value) ? this : Nothing;
|
|
78
|
+
};
|
|
79
|
+
justProto['fantasy-land/reduce'] = function (f, b) {
|
|
80
|
+
return f(b, this.value);
|
|
81
|
+
};
|
|
82
|
+
justProto['fantasy-land/equals'] = function (other) {
|
|
83
|
+
return other.tag === 'Just' && this.value === other.value;
|
|
84
|
+
};
|
|
85
|
+
const nothingProto = Object.getPrototypeOf(Nothing);
|
|
86
|
+
nothingProto['fantasy-land/map'] = function (f) {
|
|
87
|
+
return Nothing;
|
|
88
|
+
};
|
|
89
|
+
nothingProto['fantasy-land/ap'] = function (ma) {
|
|
90
|
+
return Nothing;
|
|
91
|
+
};
|
|
92
|
+
nothingProto['fantasy-land/chain'] = function (f) {
|
|
93
|
+
return Nothing;
|
|
94
|
+
};
|
|
95
|
+
nothingProto['fantasy-land/alt'] = function (malt) {
|
|
96
|
+
return malt;
|
|
97
|
+
};
|
|
98
|
+
nothingProto['fantasy-land/filter'] = function (predicate) {
|
|
99
|
+
return Nothing;
|
|
100
|
+
};
|
|
101
|
+
nothingProto['fantasy-land/reduce'] = function (f, b) {
|
|
102
|
+
return b;
|
|
103
|
+
};
|
|
104
|
+
nothingProto['fantasy-land/equals'] = function (other) {
|
|
105
|
+
return other.tag === 'Nothing';
|
|
106
|
+
};
|
|
107
|
+
/** Convert a Maybe to an Either. */
|
|
108
|
+
export const toEither = (onNothing) => (ma) => {
|
|
109
|
+
const Right = (right) => ({ tag: 'Right', right });
|
|
110
|
+
const Left = (left) => ({ tag: 'Left', left });
|
|
111
|
+
return ma.tag === 'Just' ? Right(ma.value) : Left(onNothing);
|
|
112
|
+
};
|
|
113
|
+
//# sourceMappingURL=Maybe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Maybe.js","sourceRoot":"","sources":["../../src/Maybe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import * as Maybe from './Maybe.js';
|
|
2
|
+
import type * as EitherAsyncModule from './EitherAsync.js';
|
|
3
|
+
/**
|
|
4
|
+
* Lazy async Maybe: wraps Promise<Maybe<A>>.
|
|
5
|
+
* Critical: Any rejected Promise or thrown error becomes Nothing; never rejects.
|
|
6
|
+
*/
|
|
7
|
+
export type MaybeAsync<A> = {
|
|
8
|
+
readonly tag: 'MaybeAsync';
|
|
9
|
+
readonly run: () => Promise<Maybe.Maybe<A>>;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Construct a MaybeAsync from a lazy computation.
|
|
13
|
+
* @param run - A function returning Promise<Maybe<A>>.
|
|
14
|
+
* @returns A MaybeAsync that encapsulates the computation.
|
|
15
|
+
*/
|
|
16
|
+
export declare const MaybeAsync: <A>(run: () => Promise<Maybe.Maybe<A>>) => MaybeAsync<A>;
|
|
17
|
+
/**
|
|
18
|
+
* Lift a synchronous Maybe into MaybeAsync.
|
|
19
|
+
* @param ma - The synchronous Maybe.
|
|
20
|
+
* @returns A MaybeAsync that immediately resolves to the Maybe.
|
|
21
|
+
*/
|
|
22
|
+
export declare const liftMaybe: <A>(ma: Maybe.Maybe<A>) => MaybeAsync<A>;
|
|
23
|
+
/**
|
|
24
|
+
* Lift a Promise into MaybeAsync.
|
|
25
|
+
* Any rejected Promise or thrown error becomes Nothing; never rejects.
|
|
26
|
+
* @param p - The Promise to lift.
|
|
27
|
+
* @returns A MaybeAsync that resolves to Just the value or Nothing on error.
|
|
28
|
+
*/
|
|
29
|
+
export declare const fromPromise: <A>(p: Promise<A>) => MaybeAsync<A>;
|
|
30
|
+
/**
|
|
31
|
+
* Wrap an async function with error handling.
|
|
32
|
+
* Any rejected Promise or thrown error becomes Nothing; never rejects.
|
|
33
|
+
* @param f - An async function.
|
|
34
|
+
* @returns A MaybeAsync that captures the result or Nothing on error.
|
|
35
|
+
*/
|
|
36
|
+
export declare const tryCatch: <A>(f: () => Promise<A>) => MaybeAsync<A>;
|
|
37
|
+
/**
|
|
38
|
+
* Functor map over the value.
|
|
39
|
+
* Any rejected Promise or thrown error becomes Nothing; never rejects.
|
|
40
|
+
* @param f - Function to transform the value.
|
|
41
|
+
* @returns A function taking MaybeAsync and returning a new MaybeAsync.
|
|
42
|
+
*/
|
|
43
|
+
export declare const map: <A, B>(f: (a: A) => B) => ((ma: MaybeAsync<A>) => MaybeAsync<B>);
|
|
44
|
+
/**
|
|
45
|
+
* Monadic bind: sequentially compose MaybeAsync computations.
|
|
46
|
+
* Any rejected Promise or thrown error becomes Nothing; never rejects.
|
|
47
|
+
* @param f - Function that returns a MaybeAsync.
|
|
48
|
+
* @returns A function taking MaybeAsync and returning a flattened MaybeAsync.
|
|
49
|
+
*/
|
|
50
|
+
export declare const chain: <A, B>(f: (a: A) => MaybeAsync<B>) => ((ma: MaybeAsync<A>) => MaybeAsync<B>);
|
|
51
|
+
/**
|
|
52
|
+
* Applicative ap: apply a MaybeAsync function to a MaybeAsync value.
|
|
53
|
+
* Any rejected Promise or thrown error becomes Nothing; never rejects.
|
|
54
|
+
* @param mf - A MaybeAsync of a function.
|
|
55
|
+
* @returns A function taking MaybeAsync and returning a new MaybeAsync.
|
|
56
|
+
*/
|
|
57
|
+
export declare const ap: <A, B>(mf: MaybeAsync<(a: A) => B>) => ((ma: MaybeAsync<A>) => MaybeAsync<B>);
|
|
58
|
+
/**
|
|
59
|
+
* Alt: use alternative MaybeAsync if first is Nothing.
|
|
60
|
+
* Any rejected Promise or thrown error becomes Nothing; never rejects.
|
|
61
|
+
* @param alt_ma - The alternative MaybeAsync.
|
|
62
|
+
* @returns A function taking the primary MaybeAsync.
|
|
63
|
+
*/
|
|
64
|
+
export declare const alt: <A>(alt_ma: MaybeAsync<A>) => ((ma: MaybeAsync<A>) => MaybeAsync<A>);
|
|
65
|
+
/**
|
|
66
|
+
* Keep the value if predicate holds, otherwise Nothing.
|
|
67
|
+
* Any rejected Promise or thrown error becomes Nothing; never rejects.
|
|
68
|
+
* @param predicate - The predicate to test.
|
|
69
|
+
* @returns A function taking MaybeAsync and returning filtered MaybeAsync.
|
|
70
|
+
*/
|
|
71
|
+
export declare const filter: <A>(predicate: (a: A) => boolean) => ((ma: MaybeAsync<A>) => MaybeAsync<A>);
|
|
72
|
+
/**
|
|
73
|
+
* Extract the value or provide a default.
|
|
74
|
+
* Any rejected Promise or thrown error becomes Nothing; never rejects.
|
|
75
|
+
* @param a - The default value.
|
|
76
|
+
* @returns A function taking MaybeAsync and returning a Promise of the value.
|
|
77
|
+
*/
|
|
78
|
+
export declare const getOrElse: <A>(a: A) => ((ma: MaybeAsync<A>) => Promise<A>);
|
|
79
|
+
/**
|
|
80
|
+
* Extract the value or compute a default lazily.
|
|
81
|
+
* Any rejected Promise or thrown error becomes Nothing; never rejects.
|
|
82
|
+
* @param f - A function computing the default.
|
|
83
|
+
* @returns A function taking MaybeAsync and returning a Promise of the value.
|
|
84
|
+
*/
|
|
85
|
+
export declare const getOrElseL: <A>(f: () => Promise<A>) => ((ma: MaybeAsync<A>) => Promise<A>);
|
|
86
|
+
/**
|
|
87
|
+
* Convert MaybeAsync to EitherAsync.
|
|
88
|
+
* Any rejected Promise or thrown error becomes Nothing which becomes Left; never rejects.
|
|
89
|
+
* @param onNothing - The Left value if Nothing.
|
|
90
|
+
* @returns A function taking MaybeAsync and returning EitherAsync.
|
|
91
|
+
*/
|
|
92
|
+
export declare const toEitherAsync: <E, A>(onNothing: E) => ((ma: MaybeAsync<A>) => EitherAsyncModule.EitherAsync<E, A>);
|
|
93
|
+
/**
|
|
94
|
+
* Case analysis on MaybeAsync.
|
|
95
|
+
* Any rejected Promise or thrown error becomes Nothing; never rejects.
|
|
96
|
+
* @param onNothing - Value for Nothing.
|
|
97
|
+
* @param onJust - Function for Just value.
|
|
98
|
+
* @returns A function taking MaybeAsync and returning Promise of result.
|
|
99
|
+
*/
|
|
100
|
+
export declare const fold: <A, B>(onNothing: B, onJust: (a: A) => Promise<B>) => ((ma: MaybeAsync<A>) => Promise<B>);
|
|
101
|
+
/**
|
|
102
|
+
* Collect Just values from an array of MaybeAsync.
|
|
103
|
+
* Rejected Promises and errors are filtered out.
|
|
104
|
+
* @param maybes - Array of MaybeAsync.
|
|
105
|
+
* @returns Promise of collected values.
|
|
106
|
+
*/
|
|
107
|
+
export declare const catMaybes: <A>(maybes: readonly MaybeAsync<A>[]) => Promise<readonly A[]>;
|
|
108
|
+
/**
|
|
109
|
+
* All-or-Nothing: if any MaybeAsync is Nothing, result is Nothing.
|
|
110
|
+
* Any rejected Promise or thrown error becomes Nothing; never rejects.
|
|
111
|
+
* @param maybes - Array of MaybeAsync.
|
|
112
|
+
* @returns A MaybeAsync that is Just of array if all are Just, else Nothing.
|
|
113
|
+
*/
|
|
114
|
+
export declare const all: <A>(maybes: readonly MaybeAsync<A>[]) => MaybeAsync<A[]>;
|
|
115
|
+
//# sourceMappingURL=MaybeAsync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MaybeAsync.d.ts","sourceRoot":"","sources":["../../src/MaybeAsync.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,KAAK,iBAAiB,MAAM,kBAAkB,CAAA;AAE1D;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAA;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;CAC5C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,EAC1B,KAAK,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KACjC,UAAU,CAAC,CAAC,CAAiC,CAAA;AAEhD;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAG,UAAU,CAAC,CAAC,CACvB,CAAA;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,KAAG,UAAU,CAAC,CAAC,CAGxD,CAAA;AAEH;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,KAAG,UAAU,CAAC,CAAC,CAG3D,CAAA;AAEH;;;;;GAKG;AACH,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,CAAC,EACtB,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KACb,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAInC,CAAA;AAEL;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,CAAC,EACxB,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,KACzB,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAQlC,CAAA;AAEN;;;;;GAKG;AACH,eAAO,MAAM,EAAE,GAAI,CAAC,EAAE,CAAC,EACrB,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAC1B,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAKlC,CAAA;AAEN;;;;;GAKG;AACH,eAAO,MAAM,GAAG,GAAI,CAAC,EACnB,QAAQ,UAAU,CAAC,CAAC,CAAC,KACpB,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAMlC,CAAA;AAEN;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GAAI,CAAC,EACtB,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,KAC3B,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAInC,CAAA;AAEL;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,GAAG,CAAC,KAAG,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAEf,CAAA;AAEvD;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,EAC1B,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,KAClB,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAK/B,CAAA;AAEN;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,CAAC,EAChC,WAAW,CAAC,KACX,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAa3D,CAAA;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,CAAC,EACvB,WAAW,CAAC,EACZ,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,KAC3B,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAK/B,CAAA;AAEN;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EACzB,QAAQ,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,KAC/B,OAAO,CAAC,SAAS,CAAC,EAAE,CAGpB,CAAA;AAEH;;;;;GAKG;AACH,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,QAAQ,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,KAAG,UAAU,CAAC,CAAC,EAAE,CASpE,CAAA"}
|