@nlozgachev/pipelined 0.33.0 → 0.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +67 -37
- package/dist/{Task-5na0QzS4.d.mts → Task-DXsuurnc.d.mts} +54 -55
- package/dist/{Task-DeiWgoeJ.d.ts → Task-zAY4kSVB.d.ts} +54 -55
- package/dist/{chunk-FZX4MTRI.mjs → chunk-5AWUAG7G.mjs} +445 -308
- package/dist/{chunk-NRF2FVPZ.mjs → chunk-AHEZFTMT.mjs} +64 -32
- package/dist/{chunk-GSTKY7MF.mjs → chunk-DLBHVYII.mjs} +69 -52
- package/dist/{chunk-W53ZYTLX.mjs → chunk-IJFFWBKW.mjs} +184 -64
- package/dist/composition.d.mts +8 -7
- package/dist/composition.d.ts +8 -7
- package/dist/composition.js +64 -32
- package/dist/composition.mjs +1 -1
- package/dist/core.d.mts +172 -163
- package/dist/core.d.ts +172 -163
- package/dist/core.js +535 -384
- package/dist/core.mjs +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +783 -480
- package/dist/index.mjs +4 -4
- package/dist/utils.d.mts +8 -7
- package/dist/utils.d.ts +8 -7
- package/dist/utils.js +252 -115
- package/dist/utils.mjs +2 -2
- package/package.json +9 -9
package/dist/utils.js
CHANGED
|
@@ -43,44 +43,48 @@ var Deferred;
|
|
|
43
43
|
var Result;
|
|
44
44
|
((Result2) => {
|
|
45
45
|
Result2.ok = (value) => ({ kind: "Ok", value });
|
|
46
|
-
Result2.
|
|
46
|
+
Result2.err = (e) => ({ kind: "Err", error: e });
|
|
47
47
|
Result2.isOk = (data) => data.kind === "Ok";
|
|
48
|
-
Result2.
|
|
48
|
+
Result2.isErr = (data) => data.kind === "Err";
|
|
49
49
|
Result2.tryCatch = (f, onError) => {
|
|
50
50
|
try {
|
|
51
51
|
return (0, Result2.ok)(f());
|
|
52
|
-
} catch (
|
|
53
|
-
return (0, Result2.
|
|
52
|
+
} catch (error) {
|
|
53
|
+
return (0, Result2.err)(onError(error));
|
|
54
54
|
}
|
|
55
55
|
};
|
|
56
56
|
Result2.map = (f) => (data) => (0, Result2.isOk)(data) ? (0, Result2.ok)(f(data.value)) : data;
|
|
57
|
-
Result2.mapError = (f) => (data) => (0, Result2.
|
|
57
|
+
Result2.mapError = (f) => (data) => (0, Result2.isErr)(data) ? (0, Result2.err)(f(data.error)) : data;
|
|
58
58
|
Result2.chain = (f) => (data) => (0, Result2.isOk)(data) ? f(data.value) : data;
|
|
59
59
|
Result2.fold = (onErr, onOk) => (data) => (0, Result2.isOk)(data) ? onOk(data.value) : onErr(data.error);
|
|
60
60
|
Result2.match = (cases) => (data) => (0, Result2.isOk)(data) ? cases.ok(data.value) : cases.err(data.error);
|
|
61
61
|
Result2.getOrElse = (defaultValue) => (data) => (0, Result2.isOk)(data) ? data.value : defaultValue();
|
|
62
62
|
Result2.tap = (f) => (data) => {
|
|
63
|
-
if ((0, Result2.isOk)(data))
|
|
63
|
+
if ((0, Result2.isOk)(data)) {
|
|
64
|
+
f(data.value);
|
|
65
|
+
}
|
|
64
66
|
return data;
|
|
65
67
|
};
|
|
66
68
|
Result2.tapError = (f) => (data) => {
|
|
67
|
-
if ((0, Result2.
|
|
69
|
+
if ((0, Result2.isErr)(data)) {
|
|
70
|
+
f(data.error);
|
|
71
|
+
}
|
|
68
72
|
return data;
|
|
69
73
|
};
|
|
70
|
-
Result2.fromPredicate = (pred, onFalse) => (a) => pred(a) ? (0, Result2.ok)(a) : (0, Result2.
|
|
71
|
-
Result2.fromNullable = (onNull) => (value) => value === null || value === void 0 ? (0, Result2.
|
|
72
|
-
Result2.fromMaybe = (onNone) => (maybe) => Maybe.isNone(maybe) ? (0, Result2.
|
|
74
|
+
Result2.fromPredicate = (pred, onFalse) => (a) => pred(a) ? (0, Result2.ok)(a) : (0, Result2.err)(onFalse(a));
|
|
75
|
+
Result2.fromNullable = (onNull) => (value) => value === null || value === void 0 ? (0, Result2.err)(onNull()) : (0, Result2.ok)(value);
|
|
76
|
+
Result2.fromMaybe = (onNone) => (maybe) => Maybe.isNone(maybe) ? (0, Result2.err)(onNone()) : (0, Result2.ok)(maybe.value);
|
|
73
77
|
Result2.fromThrowable = (f, onError) => (...args) => {
|
|
74
78
|
try {
|
|
75
79
|
return (0, Result2.ok)(f(...args));
|
|
76
|
-
} catch (
|
|
77
|
-
return (0, Result2.
|
|
80
|
+
} catch (error) {
|
|
81
|
+
return (0, Result2.err)(onError(error));
|
|
78
82
|
}
|
|
79
83
|
};
|
|
80
84
|
Result2.recover = (fallback) => (data) => (0, Result2.isOk)(data) ? data : fallback(data.error);
|
|
81
|
-
Result2.recoverUnless = (isBlocked, fallback) => (data) => (0, Result2.
|
|
85
|
+
Result2.recoverUnless = (isBlocked, fallback) => (data) => (0, Result2.isErr)(data) && !isBlocked(data.error) ? fallback() : data;
|
|
82
86
|
Result2.toMaybe = (data) => (0, Result2.isOk)(data) ? Maybe.some(data.value) : Maybe.none();
|
|
83
|
-
Result2.ap = (arg) => (data) => (0, Result2.isOk)(data) && (0, Result2.isOk)(arg) ? (0, Result2.ok)(data.value(arg.value)) : (0, Result2.
|
|
87
|
+
Result2.ap = (arg) => (data) => (0, Result2.isOk)(data) && (0, Result2.isOk)(arg) ? (0, Result2.ok)(data.value(arg.value)) : (0, Result2.isErr)(data) ? data : arg;
|
|
84
88
|
})(Result || (Result = {}));
|
|
85
89
|
|
|
86
90
|
// src/Core/Maybe.ts
|
|
@@ -95,7 +99,7 @@ var Maybe;
|
|
|
95
99
|
Maybe2.toNullable = (data) => (0, Maybe2.isSome)(data) ? data.value : null;
|
|
96
100
|
Maybe2.toUndefined = (data) => (0, Maybe2.isSome)(data) ? data.value : void 0;
|
|
97
101
|
Maybe2.fromPredicate = (pred) => (a) => pred(a) ? (0, Maybe2.some)(a) : (0, Maybe2.none)();
|
|
98
|
-
Maybe2.toResult = (onNone) => (data) => (0, Maybe2.isSome)(data) ? Result.ok(data.value) : Result.
|
|
102
|
+
Maybe2.toResult = (onNone) => (data) => (0, Maybe2.isSome)(data) ? Result.ok(data.value) : Result.err(onNone());
|
|
99
103
|
Maybe2.fromResult = (data) => Result.isOk(data) ? (0, Maybe2.some)(data.value) : (0, Maybe2.none)();
|
|
100
104
|
Maybe2.map = (f) => (data) => (0, Maybe2.isSome)(data) ? (0, Maybe2.some)(f(data.value)) : data;
|
|
101
105
|
Maybe2.chain = (f) => (data) => (0, Maybe2.isSome)(data) ? f(data.value) : data;
|
|
@@ -103,7 +107,9 @@ var Maybe;
|
|
|
103
107
|
Maybe2.match = (cases) => (data) => (0, Maybe2.isSome)(data) ? cases.some(data.value) : cases.none();
|
|
104
108
|
Maybe2.getOrElse = (defaultValue) => (data) => (0, Maybe2.isSome)(data) ? data.value : defaultValue();
|
|
105
109
|
Maybe2.tap = (f) => (data) => {
|
|
106
|
-
if ((0, Maybe2.isSome)(data))
|
|
110
|
+
if ((0, Maybe2.isSome)(data)) {
|
|
111
|
+
f(data.value);
|
|
112
|
+
}
|
|
107
113
|
return data;
|
|
108
114
|
};
|
|
109
115
|
Maybe2.filter = (predicate) => (data) => (0, Maybe2.isSome)(data) ? predicate(data.value) ? data : (0, Maybe2.none)() : data;
|
|
@@ -138,7 +144,7 @@ var Duration;
|
|
|
138
144
|
|
|
139
145
|
// src/Core/Task.ts
|
|
140
146
|
var toPromise = (task, signal) => Deferred.toPromise(task(signal));
|
|
141
|
-
var getMs = (
|
|
147
|
+
var getMs = (duration) => Duration.toMilliseconds(duration);
|
|
142
148
|
var Task;
|
|
143
149
|
((Task2) => {
|
|
144
150
|
Task2.resolve = (value) => () => Deferred.fromPromise(Promise.resolve(value));
|
|
@@ -146,12 +152,7 @@ var Task;
|
|
|
146
152
|
Task2.fromSync = (f) => () => Deferred.fromPromise(Promise.resolve(f()));
|
|
147
153
|
Task2.map = (f) => (data) => (0, Task2.from)((signal) => toPromise(data, signal).then(f));
|
|
148
154
|
Task2.chain = (f) => (data) => (0, Task2.from)((signal) => toPromise(data, signal).then((a) => toPromise(f(a), signal)));
|
|
149
|
-
Task2.ap = (arg) => (data) => (0, Task2.from)(
|
|
150
|
-
(signal) => Promise.all([
|
|
151
|
-
toPromise(data, signal),
|
|
152
|
-
toPromise(arg, signal)
|
|
153
|
-
]).then(([f, a]) => f(a))
|
|
154
|
-
);
|
|
155
|
+
Task2.ap = (arg) => (data) => (0, Task2.from)((signal) => Promise.all([toPromise(data, signal), toPromise(arg, signal)]).then(([f, a]) => f(a)));
|
|
155
156
|
Task2.tap = (f) => (data) => (0, Task2.from)(
|
|
156
157
|
(signal) => toPromise(data, signal).then((a) => {
|
|
157
158
|
f(a);
|
|
@@ -161,35 +162,39 @@ var Task;
|
|
|
161
162
|
Task2.all = (tasks) => (0, Task2.from)(
|
|
162
163
|
(signal) => Promise.all(tasks.map((t) => toPromise(t, signal)))
|
|
163
164
|
);
|
|
164
|
-
Task2.delay = (
|
|
165
|
-
(signal) => new Promise((
|
|
166
|
-
let timerId
|
|
165
|
+
Task2.delay = (duration) => (data) => (0, Task2.from)(
|
|
166
|
+
(signal) => new Promise((res) => {
|
|
167
|
+
let timerId;
|
|
167
168
|
const onAbort = () => {
|
|
168
169
|
if (timerId !== void 0) {
|
|
169
170
|
clearTimeout(timerId);
|
|
170
171
|
}
|
|
171
|
-
|
|
172
|
+
res(toPromise(data, signal));
|
|
172
173
|
};
|
|
173
174
|
if (signal) {
|
|
174
175
|
if (signal.aborted) {
|
|
175
|
-
return
|
|
176
|
+
return res(toPromise(data, signal));
|
|
176
177
|
}
|
|
177
178
|
signal.addEventListener("abort", onAbort, { once: true });
|
|
178
179
|
}
|
|
179
180
|
timerId = setTimeout(() => {
|
|
180
181
|
signal?.removeEventListener("abort", onAbort);
|
|
181
|
-
|
|
182
|
-
}, getMs(
|
|
182
|
+
res(toPromise(data, signal));
|
|
183
|
+
}, getMs(duration));
|
|
183
184
|
})
|
|
184
185
|
);
|
|
185
186
|
Task2.repeat = (options) => (task) => (0, Task2.from)((signal) => {
|
|
186
|
-
const { times, delay:
|
|
187
|
-
if (times <= 0)
|
|
187
|
+
const { times, delay: delayDuration } = options;
|
|
188
|
+
if (times <= 0) {
|
|
189
|
+
return Promise.resolve([]);
|
|
190
|
+
}
|
|
188
191
|
const results = [];
|
|
189
192
|
const wait = () => {
|
|
190
|
-
if (signal?.aborted)
|
|
193
|
+
if (signal?.aborted) {
|
|
194
|
+
return Promise.resolve();
|
|
195
|
+
}
|
|
191
196
|
return new Promise((r) => {
|
|
192
|
-
let timerId
|
|
197
|
+
let timerId;
|
|
193
198
|
const onAbort = () => {
|
|
194
199
|
if (timerId !== void 0) {
|
|
195
200
|
clearTimeout(timerId);
|
|
@@ -202,7 +207,7 @@ var Task;
|
|
|
202
207
|
timerId = setTimeout(() => {
|
|
203
208
|
signal?.removeEventListener("abort", onAbort);
|
|
204
209
|
r();
|
|
205
|
-
}, getMs(
|
|
210
|
+
}, delayDuration ? getMs(delayDuration) : 0);
|
|
206
211
|
});
|
|
207
212
|
};
|
|
208
213
|
const run2 = (left) => {
|
|
@@ -211,18 +216,22 @@ var Task;
|
|
|
211
216
|
}
|
|
212
217
|
return toPromise(task, signal).then((a) => {
|
|
213
218
|
results.push(a);
|
|
214
|
-
if (left <= 1 || signal?.aborted)
|
|
219
|
+
if (left <= 1 || signal?.aborted) {
|
|
220
|
+
return results;
|
|
221
|
+
}
|
|
215
222
|
return wait().then(() => run2(left - 1));
|
|
216
223
|
});
|
|
217
224
|
};
|
|
218
225
|
return run2(times);
|
|
219
226
|
});
|
|
220
227
|
Task2.repeatUntil = (options) => (task) => (0, Task2.from)((signal) => {
|
|
221
|
-
const { when: predicate, delay:
|
|
228
|
+
const { when: predicate, delay: delayDuration, maxAttempts } = options;
|
|
222
229
|
const wait = () => {
|
|
223
|
-
if (signal?.aborted)
|
|
230
|
+
if (signal?.aborted) {
|
|
231
|
+
return Promise.resolve();
|
|
232
|
+
}
|
|
224
233
|
return new Promise((r) => {
|
|
225
|
-
let timerId
|
|
234
|
+
let timerId;
|
|
226
235
|
const onAbort = () => {
|
|
227
236
|
if (timerId !== void 0) {
|
|
228
237
|
clearTimeout(timerId);
|
|
@@ -235,7 +244,7 @@ var Task;
|
|
|
235
244
|
timerId = setTimeout(() => {
|
|
236
245
|
signal?.removeEventListener("abort", onAbort);
|
|
237
246
|
r();
|
|
238
|
-
}, getMs(
|
|
247
|
+
}, delayDuration ? getMs(delayDuration) : 0);
|
|
239
248
|
});
|
|
240
249
|
};
|
|
241
250
|
const run2 = (attempt, lastValue) => {
|
|
@@ -243,9 +252,15 @@ var Task;
|
|
|
243
252
|
return Promise.resolve(lastValue);
|
|
244
253
|
}
|
|
245
254
|
return toPromise(task, signal).then((a) => {
|
|
246
|
-
if (predicate(a))
|
|
247
|
-
|
|
248
|
-
|
|
255
|
+
if (predicate(a)) {
|
|
256
|
+
return a;
|
|
257
|
+
}
|
|
258
|
+
if (maxAttempts !== void 0 && attempt >= maxAttempts) {
|
|
259
|
+
return a;
|
|
260
|
+
}
|
|
261
|
+
if (signal?.aborted) {
|
|
262
|
+
return a;
|
|
263
|
+
}
|
|
249
264
|
return wait().then(() => run2(attempt + 1, a));
|
|
250
265
|
});
|
|
251
266
|
};
|
|
@@ -259,7 +274,9 @@ var Task;
|
|
|
259
274
|
return (0, Task2.from)((outerSignal) => {
|
|
260
275
|
const controllers = tasks.map(() => new AbortController());
|
|
261
276
|
const onOuterAbort = () => {
|
|
262
|
-
for (const ctrl of controllers)
|
|
277
|
+
for (const ctrl of controllers) {
|
|
278
|
+
ctrl.abort();
|
|
279
|
+
}
|
|
263
280
|
};
|
|
264
281
|
if (outerSignal) {
|
|
265
282
|
if (outerSignal.aborted) {
|
|
@@ -294,19 +311,19 @@ var Task;
|
|
|
294
311
|
}
|
|
295
312
|
return results;
|
|
296
313
|
});
|
|
297
|
-
Task2.timeout = (
|
|
314
|
+
Task2.timeout = (duration, onTimeout) => (task) => (0, Task2.from)((outerSignal) => {
|
|
298
315
|
const controller = new AbortController();
|
|
299
316
|
let timerId;
|
|
300
|
-
|
|
317
|
+
function cleanUp() {
|
|
301
318
|
if (timerId !== void 0) {
|
|
302
319
|
clearTimeout(timerId);
|
|
303
320
|
}
|
|
304
321
|
outerSignal?.removeEventListener("abort", onOuterAbort);
|
|
305
|
-
}
|
|
306
|
-
|
|
322
|
+
}
|
|
323
|
+
function onOuterAbort() {
|
|
307
324
|
cleanUp();
|
|
308
325
|
controller.abort();
|
|
309
|
-
}
|
|
326
|
+
}
|
|
310
327
|
if (outerSignal) {
|
|
311
328
|
if (outerSignal.aborted) {
|
|
312
329
|
controller.abort();
|
|
@@ -319,12 +336,12 @@ var Task;
|
|
|
319
336
|
cleanUp();
|
|
320
337
|
return Result.ok(a);
|
|
321
338
|
}),
|
|
322
|
-
new Promise((
|
|
339
|
+
new Promise((res) => {
|
|
323
340
|
timerId = setTimeout(() => {
|
|
324
341
|
controller.abort();
|
|
325
342
|
cleanUp();
|
|
326
|
-
|
|
327
|
-
}, getMs(
|
|
343
|
+
res(Result.err(onTimeout()));
|
|
344
|
+
}, getMs(duration));
|
|
328
345
|
})
|
|
329
346
|
]);
|
|
330
347
|
});
|
|
@@ -361,35 +378,43 @@ var Arr;
|
|
|
361
378
|
Arr2.init = (data) => data.length > 0 ? Maybe.some(data.slice(0, -1)) : Maybe.none();
|
|
362
379
|
Arr2.findFirst = (predicate) => (data) => {
|
|
363
380
|
const idx = data.findIndex(predicate);
|
|
364
|
-
return idx
|
|
381
|
+
return idx !== -1 ? Maybe.some(data[idx]) : Maybe.none();
|
|
365
382
|
};
|
|
366
383
|
Arr2.findLast = (predicate) => (data) => {
|
|
367
384
|
for (let i = data.length - 1; i >= 0; i--) {
|
|
368
|
-
if (predicate(data[i]))
|
|
385
|
+
if (predicate(data[i])) {
|
|
386
|
+
return Maybe.some(data[i]);
|
|
387
|
+
}
|
|
369
388
|
}
|
|
370
389
|
return Maybe.none();
|
|
371
390
|
};
|
|
372
391
|
Arr2.findIndex = (predicate) => (data) => {
|
|
373
392
|
const idx = data.findIndex(predicate);
|
|
374
|
-
return idx
|
|
393
|
+
return idx !== -1 ? Maybe.some(idx) : Maybe.none();
|
|
375
394
|
};
|
|
376
395
|
Arr2.map = (f) => (data) => {
|
|
377
396
|
const n = data.length;
|
|
378
397
|
const result = new Array(n);
|
|
379
|
-
for (let i = 0; i < n; i++)
|
|
398
|
+
for (let i = 0; i < n; i++) {
|
|
399
|
+
result[i] = f(data[i]);
|
|
400
|
+
}
|
|
380
401
|
return result;
|
|
381
402
|
};
|
|
382
403
|
Arr2.mapWithIndex = (f) => (data) => {
|
|
383
404
|
const n = data.length;
|
|
384
405
|
const result = new Array(n);
|
|
385
|
-
for (let i = 0; i < n; i++)
|
|
406
|
+
for (let i = 0; i < n; i++) {
|
|
407
|
+
result[i] = f(i, data[i]);
|
|
408
|
+
}
|
|
386
409
|
return result;
|
|
387
410
|
};
|
|
388
411
|
Arr2.filter = (predicate) => (data) => {
|
|
389
412
|
const n = data.length;
|
|
390
413
|
const result = [];
|
|
391
414
|
for (let i = 0; i < n; i++) {
|
|
392
|
-
if (predicate(data[i]))
|
|
415
|
+
if (predicate(data[i])) {
|
|
416
|
+
result.push(data[i]);
|
|
417
|
+
}
|
|
393
418
|
}
|
|
394
419
|
return result;
|
|
395
420
|
};
|
|
@@ -397,7 +422,9 @@ var Arr;
|
|
|
397
422
|
const result = [];
|
|
398
423
|
for (let i = 0; i < data.length; i++) {
|
|
399
424
|
const mapped = f(data[i]);
|
|
400
|
-
if (mapped.kind === "Some")
|
|
425
|
+
if (mapped.kind === "Some") {
|
|
426
|
+
result.push(mapped.value);
|
|
427
|
+
}
|
|
401
428
|
}
|
|
402
429
|
return result;
|
|
403
430
|
};
|
|
@@ -447,14 +474,14 @@ var Arr;
|
|
|
447
474
|
const result = {};
|
|
448
475
|
for (const a of data) {
|
|
449
476
|
const key = f(a);
|
|
450
|
-
if (!result[key])
|
|
477
|
+
if (!result[key]) {
|
|
478
|
+
result[key] = [];
|
|
479
|
+
}
|
|
451
480
|
result[key].push(a);
|
|
452
481
|
}
|
|
453
482
|
return result;
|
|
454
483
|
};
|
|
455
|
-
Arr2.uniq = (data) => [
|
|
456
|
-
...new Set(data)
|
|
457
|
-
];
|
|
484
|
+
Arr2.uniq = (data) => [...new Set(data)];
|
|
458
485
|
Arr2.uniqBy = (f) => (data) => {
|
|
459
486
|
const seen = /* @__PURE__ */ new Set();
|
|
460
487
|
const result = [];
|
|
@@ -478,12 +505,16 @@ var Arr;
|
|
|
478
505
|
};
|
|
479
506
|
Arr2.sortBy = (compare) => (data) => {
|
|
480
507
|
const arr = data;
|
|
481
|
-
if (typeof arr.toSorted === "function")
|
|
482
|
-
|
|
508
|
+
if (typeof arr.toSorted === "function") {
|
|
509
|
+
return arr.toSorted(compare);
|
|
510
|
+
}
|
|
511
|
+
return [...data].toSorted(compare);
|
|
483
512
|
};
|
|
484
513
|
Arr2.sortWith = (ord) => (data) => {
|
|
485
514
|
const arr = data;
|
|
486
|
-
if (typeof arr.toSorted === "function")
|
|
515
|
+
if (typeof arr.toSorted === "function") {
|
|
516
|
+
return arr.toSorted(ord);
|
|
517
|
+
}
|
|
487
518
|
return [...data].sort(ord);
|
|
488
519
|
};
|
|
489
520
|
Arr2.zip = (other) => (data) => {
|
|
@@ -503,7 +534,9 @@ var Arr;
|
|
|
503
534
|
return result;
|
|
504
535
|
};
|
|
505
536
|
Arr2.intersperse = (sep) => (data) => {
|
|
506
|
-
if (data.length <= 1)
|
|
537
|
+
if (data.length <= 1) {
|
|
538
|
+
return data;
|
|
539
|
+
}
|
|
507
540
|
const result = [data[0]];
|
|
508
541
|
for (let i = 1; i < data.length; i++) {
|
|
509
542
|
result.push(sep, data[i]);
|
|
@@ -511,7 +544,9 @@ var Arr;
|
|
|
511
544
|
return result;
|
|
512
545
|
};
|
|
513
546
|
Arr2.chunksOf = (n) => (data) => {
|
|
514
|
-
if (n <= 0)
|
|
547
|
+
if (n <= 0) {
|
|
548
|
+
return [];
|
|
549
|
+
}
|
|
515
550
|
const result = [];
|
|
516
551
|
for (let i = 0; i < data.length; i += n) {
|
|
517
552
|
result.push(data.slice(i, i + n));
|
|
@@ -541,7 +576,9 @@ var Arr;
|
|
|
541
576
|
for (let i = 0; i < n; i++) {
|
|
542
577
|
const chunk = f(data[i]);
|
|
543
578
|
const m = chunk.length;
|
|
544
|
-
for (let j = 0; j < m; j++)
|
|
579
|
+
for (let j = 0; j < m; j++) {
|
|
580
|
+
result.push(chunk[j]);
|
|
581
|
+
}
|
|
545
582
|
}
|
|
546
583
|
return result;
|
|
547
584
|
};
|
|
@@ -551,7 +588,9 @@ var Arr;
|
|
|
551
588
|
const result = new Array(n);
|
|
552
589
|
for (let i = 0; i < n; i++) {
|
|
553
590
|
const mapped = f(data[i]);
|
|
554
|
-
if (mapped.kind === "None")
|
|
591
|
+
if (mapped.kind === "None") {
|
|
592
|
+
return Maybe.none();
|
|
593
|
+
}
|
|
555
594
|
result[i] = mapped.value;
|
|
556
595
|
}
|
|
557
596
|
return Maybe.some(result);
|
|
@@ -561,7 +600,9 @@ var Arr;
|
|
|
561
600
|
const result = new Array(n);
|
|
562
601
|
for (let i = 0; i < n; i++) {
|
|
563
602
|
const mapped = f(data[i]);
|
|
564
|
-
if (mapped.kind === "
|
|
603
|
+
if (mapped.kind === "Err") {
|
|
604
|
+
return mapped;
|
|
605
|
+
}
|
|
565
606
|
result[i] = mapped.value;
|
|
566
607
|
}
|
|
567
608
|
return Result.ok(result);
|
|
@@ -574,7 +615,9 @@ var Arr;
|
|
|
574
615
|
const result = [];
|
|
575
616
|
for (const a of data) {
|
|
576
617
|
const r = await Deferred.toPromise(f(a)());
|
|
577
|
-
if (Result.
|
|
618
|
+
if (Result.isErr(r)) {
|
|
619
|
+
return r;
|
|
620
|
+
}
|
|
578
621
|
result.push(r.value);
|
|
579
622
|
}
|
|
580
623
|
return Result.ok(result);
|
|
@@ -584,27 +627,41 @@ var Arr;
|
|
|
584
627
|
Arr2.size = (data) => data.length;
|
|
585
628
|
Arr2.some = (predicate) => (data) => {
|
|
586
629
|
const n = data.length;
|
|
587
|
-
for (let i = 0; i < n; i++)
|
|
630
|
+
for (let i = 0; i < n; i++) {
|
|
631
|
+
if (predicate(data[i])) {
|
|
632
|
+
return true;
|
|
633
|
+
}
|
|
634
|
+
}
|
|
588
635
|
return false;
|
|
589
636
|
};
|
|
590
637
|
Arr2.every = (predicate) => (data) => {
|
|
591
638
|
const n = data.length;
|
|
592
|
-
for (let i = 0; i < n; i++)
|
|
639
|
+
for (let i = 0; i < n; i++) {
|
|
640
|
+
if (!predicate(data[i])) {
|
|
641
|
+
return false;
|
|
642
|
+
}
|
|
643
|
+
}
|
|
593
644
|
return true;
|
|
594
645
|
};
|
|
595
|
-
Arr2.reverse = (data) => [...data].
|
|
646
|
+
Arr2.reverse = (data) => [...data].toReversed();
|
|
596
647
|
Arr2.insertAt = (index, item) => (data) => {
|
|
597
648
|
const i = Math.max(0, Math.min(index, data.length));
|
|
598
649
|
const arr = data;
|
|
599
|
-
if (typeof arr.toSpliced === "function")
|
|
650
|
+
if (typeof arr.toSpliced === "function") {
|
|
651
|
+
return arr.toSpliced(i, 0, item);
|
|
652
|
+
}
|
|
600
653
|
const result = [...data];
|
|
601
654
|
result.splice(i, 0, item);
|
|
602
655
|
return result;
|
|
603
656
|
};
|
|
604
657
|
Arr2.removeAt = (index) => (data) => {
|
|
605
|
-
if (index < 0 || index >= data.length)
|
|
658
|
+
if (index < 0 || index >= data.length) {
|
|
659
|
+
return data;
|
|
660
|
+
}
|
|
606
661
|
const arr = data;
|
|
607
|
-
if (typeof arr.toSpliced === "function")
|
|
662
|
+
if (typeof arr.toSpliced === "function") {
|
|
663
|
+
return arr.toSpliced(index, 1);
|
|
664
|
+
}
|
|
608
665
|
const result = [...data];
|
|
609
666
|
result.splice(index, 1);
|
|
610
667
|
return result;
|
|
@@ -614,14 +671,18 @@ var Arr;
|
|
|
614
671
|
Arr2.takeWhile = (predicate) => (data) => {
|
|
615
672
|
const result = [];
|
|
616
673
|
for (const a of data) {
|
|
617
|
-
if (!predicate(a))
|
|
674
|
+
if (!predicate(a)) {
|
|
675
|
+
break;
|
|
676
|
+
}
|
|
618
677
|
result.push(a);
|
|
619
678
|
}
|
|
620
679
|
return result;
|
|
621
680
|
};
|
|
622
681
|
Arr2.dropWhile = (predicate) => (data) => {
|
|
623
682
|
let i = 0;
|
|
624
|
-
while (i < data.length && predicate(data[i]))
|
|
683
|
+
while (i < data.length && predicate(data[i])) {
|
|
684
|
+
i++;
|
|
685
|
+
}
|
|
625
686
|
return data.slice(i);
|
|
626
687
|
};
|
|
627
688
|
Arr2.scan = (initial, f) => (data) => {
|
|
@@ -652,8 +713,11 @@ var Dict;
|
|
|
652
713
|
for (const item of items) {
|
|
653
714
|
const key = keyFn(item);
|
|
654
715
|
const arr = result.get(key);
|
|
655
|
-
if (arr !== void 0)
|
|
656
|
-
|
|
716
|
+
if (arr !== void 0) {
|
|
717
|
+
arr.push(item);
|
|
718
|
+
} else {
|
|
719
|
+
result.set(key, [item]);
|
|
720
|
+
}
|
|
657
721
|
}
|
|
658
722
|
return result;
|
|
659
723
|
};
|
|
@@ -670,7 +734,9 @@ var Dict;
|
|
|
670
734
|
return result;
|
|
671
735
|
};
|
|
672
736
|
Dict2.remove = (key) => (m) => {
|
|
673
|
-
if (!m.has(key))
|
|
737
|
+
if (!m.has(key)) {
|
|
738
|
+
return m;
|
|
739
|
+
}
|
|
674
740
|
const result = new globalThis.Map(m);
|
|
675
741
|
result.delete(key);
|
|
676
742
|
return result;
|
|
@@ -697,21 +763,27 @@ var Dict;
|
|
|
697
763
|
Dict2.filter = (predicate) => (m) => {
|
|
698
764
|
const result = new globalThis.Map();
|
|
699
765
|
for (const [k, v] of m) {
|
|
700
|
-
if (predicate(v))
|
|
766
|
+
if (predicate(v)) {
|
|
767
|
+
result.set(k, v);
|
|
768
|
+
}
|
|
701
769
|
}
|
|
702
770
|
return result;
|
|
703
771
|
};
|
|
704
772
|
Dict2.filterWithKey = (predicate) => (m) => {
|
|
705
773
|
const result = new globalThis.Map();
|
|
706
774
|
for (const [k, v] of m) {
|
|
707
|
-
if (predicate(k, v))
|
|
775
|
+
if (predicate(k, v)) {
|
|
776
|
+
result.set(k, v);
|
|
777
|
+
}
|
|
708
778
|
}
|
|
709
779
|
return result;
|
|
710
780
|
};
|
|
711
781
|
Dict2.compact = (m) => {
|
|
712
782
|
const result = new globalThis.Map();
|
|
713
783
|
for (const [k, v] of m) {
|
|
714
|
-
if (v.kind === "Some")
|
|
784
|
+
if (v.kind === "Some") {
|
|
785
|
+
result.set(k, v.value);
|
|
786
|
+
}
|
|
715
787
|
}
|
|
716
788
|
return result;
|
|
717
789
|
};
|
|
@@ -719,7 +791,9 @@ var Dict;
|
|
|
719
791
|
const result = new globalThis.Map();
|
|
720
792
|
for (const [key, value] of m) {
|
|
721
793
|
const mapped = f(value);
|
|
722
|
-
if (mapped.kind === "Some")
|
|
794
|
+
if (mapped.kind === "Some") {
|
|
795
|
+
result.set(key, mapped.value);
|
|
796
|
+
}
|
|
723
797
|
}
|
|
724
798
|
return result;
|
|
725
799
|
};
|
|
@@ -733,14 +807,18 @@ var Dict;
|
|
|
733
807
|
Dict2.intersection = (other) => (m) => {
|
|
734
808
|
const result = new globalThis.Map();
|
|
735
809
|
for (const [k, v] of m) {
|
|
736
|
-
if (other.has(k))
|
|
810
|
+
if (other.has(k)) {
|
|
811
|
+
result.set(k, v);
|
|
812
|
+
}
|
|
737
813
|
}
|
|
738
814
|
return result;
|
|
739
815
|
};
|
|
740
816
|
Dict2.difference = (other) => (m) => {
|
|
741
817
|
const result = new globalThis.Map();
|
|
742
818
|
for (const [k, v] of m) {
|
|
743
|
-
if (!other.has(k))
|
|
819
|
+
if (!other.has(k)) {
|
|
820
|
+
result.set(k, v);
|
|
821
|
+
}
|
|
744
822
|
}
|
|
745
823
|
return result;
|
|
746
824
|
};
|
|
@@ -765,7 +843,9 @@ var Dict;
|
|
|
765
843
|
var Num;
|
|
766
844
|
((Num2) => {
|
|
767
845
|
Num2.range = (from, to, step = 1) => {
|
|
768
|
-
if (step <= 0 || from > to)
|
|
846
|
+
if (step <= 0 || from > to) {
|
|
847
|
+
return [];
|
|
848
|
+
}
|
|
769
849
|
const count = Math.floor((to - from) / step) + 1;
|
|
770
850
|
const result = new Array(count);
|
|
771
851
|
for (let i = 0; i < count; i++) {
|
|
@@ -776,7 +856,9 @@ var Num;
|
|
|
776
856
|
Num2.clamp = (min2, max2) => (n) => Math.min(Math.max(n, min2), max2);
|
|
777
857
|
Num2.between = (min2, max2) => (n) => n >= min2 && n <= max2;
|
|
778
858
|
Num2.parse = (s) => {
|
|
779
|
-
if (s.trim() === "")
|
|
859
|
+
if (s.trim() === "") {
|
|
860
|
+
return Maybe.none();
|
|
861
|
+
}
|
|
780
862
|
const n = Number(s);
|
|
781
863
|
return isNaN(n) ? Maybe.none() : Maybe.some(n);
|
|
782
864
|
};
|
|
@@ -792,23 +874,33 @@ var Num;
|
|
|
792
874
|
Num2.remainder = (divisor) => (n) => divisor === 0 ? Maybe.none() : Maybe.some(n % divisor);
|
|
793
875
|
Num2.sum = (ns) => {
|
|
794
876
|
let result = 0;
|
|
795
|
-
for (let i = 0; i < ns.length; i++)
|
|
877
|
+
for (let i = 0; i < ns.length; i++) {
|
|
878
|
+
result += ns[i];
|
|
879
|
+
}
|
|
796
880
|
return result;
|
|
797
881
|
};
|
|
798
882
|
Num2.mean = (ns) => ns.length === 0 ? Maybe.none() : Maybe.some((0, Num2.sum)(ns) / ns.length);
|
|
799
883
|
Num2.min = (ns) => {
|
|
800
|
-
if (ns.length === 0)
|
|
884
|
+
if (ns.length === 0) {
|
|
885
|
+
return Maybe.none();
|
|
886
|
+
}
|
|
801
887
|
let [result] = ns;
|
|
802
888
|
for (let i = 1; i < ns.length; i++) {
|
|
803
|
-
if (ns[i] < result)
|
|
889
|
+
if (ns[i] < result) {
|
|
890
|
+
result = ns[i];
|
|
891
|
+
}
|
|
804
892
|
}
|
|
805
893
|
return Maybe.some(result);
|
|
806
894
|
};
|
|
807
895
|
Num2.max = (ns) => {
|
|
808
|
-
if (ns.length === 0)
|
|
896
|
+
if (ns.length === 0) {
|
|
897
|
+
return Maybe.none();
|
|
898
|
+
}
|
|
809
899
|
let [result] = ns;
|
|
810
900
|
for (let i = 1; i < ns.length; i++) {
|
|
811
|
-
if (ns[i] > result)
|
|
901
|
+
if (ns[i] > result) {
|
|
902
|
+
result = ns[i];
|
|
903
|
+
}
|
|
812
904
|
}
|
|
813
905
|
return Maybe.some(result);
|
|
814
906
|
};
|
|
@@ -820,16 +912,33 @@ var Rec;
|
|
|
820
912
|
Rec2.map = (f) => (data) => {
|
|
821
913
|
const keys2 = Object.keys(data);
|
|
822
914
|
const vals = Object.values(data);
|
|
823
|
-
const result =
|
|
915
|
+
const result = Object.create(Object.getPrototypeOf(data));
|
|
824
916
|
for (let i = 0; i < keys2.length; i++) {
|
|
825
917
|
Object.defineProperty(result, keys2[i], { value: f(vals[i]), writable: true, enumerable: true, configurable: true });
|
|
826
918
|
}
|
|
827
919
|
return result;
|
|
828
920
|
};
|
|
921
|
+
Rec2.filterMap = (f) => (data) => {
|
|
922
|
+
const keys2 = Object.keys(data);
|
|
923
|
+
const vals = Object.values(data);
|
|
924
|
+
const result = Object.create(Object.getPrototypeOf(data));
|
|
925
|
+
for (let i = 0; i < keys2.length; i++) {
|
|
926
|
+
const maybeVal = f(vals[i]);
|
|
927
|
+
if (maybeVal.kind === "Some") {
|
|
928
|
+
Object.defineProperty(result, keys2[i], {
|
|
929
|
+
value: maybeVal.value,
|
|
930
|
+
writable: true,
|
|
931
|
+
enumerable: true,
|
|
932
|
+
configurable: true
|
|
933
|
+
});
|
|
934
|
+
}
|
|
935
|
+
}
|
|
936
|
+
return result;
|
|
937
|
+
};
|
|
829
938
|
Rec2.mapWithKey = (f) => (data) => {
|
|
830
939
|
const keys2 = Object.keys(data);
|
|
831
940
|
const vals = Object.values(data);
|
|
832
|
-
const result =
|
|
941
|
+
const result = Object.create(Object.getPrototypeOf(data));
|
|
833
942
|
for (let i = 0; i < keys2.length; i++) {
|
|
834
943
|
Object.defineProperty(result, keys2[i], {
|
|
835
944
|
value: f(keys2[i], vals[i]),
|
|
@@ -841,10 +950,12 @@ var Rec;
|
|
|
841
950
|
return result;
|
|
842
951
|
};
|
|
843
952
|
Rec2.filter = (predicate) => (data) => {
|
|
844
|
-
const
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
953
|
+
const keys2 = Object.keys(data);
|
|
954
|
+
const vals = Object.values(data);
|
|
955
|
+
const result = Object.create(Object.getPrototypeOf(data));
|
|
956
|
+
for (let i = 0; i < keys2.length; i++) {
|
|
957
|
+
if (predicate(vals[i])) {
|
|
958
|
+
Object.defineProperty(result, keys2[i], { value: vals[i], writable: true, enumerable: true, configurable: true });
|
|
848
959
|
}
|
|
849
960
|
}
|
|
850
961
|
return result;
|
|
@@ -977,8 +1088,8 @@ var Str;
|
|
|
977
1088
|
Str2.parseJson = (s) => {
|
|
978
1089
|
try {
|
|
979
1090
|
return Result.ok(JSON.parse(s));
|
|
980
|
-
} catch (
|
|
981
|
-
return Result.error
|
|
1091
|
+
} catch (error) {
|
|
1092
|
+
return Result.err(error);
|
|
982
1093
|
}
|
|
983
1094
|
};
|
|
984
1095
|
})(Str || (Str = {}));
|
|
@@ -994,20 +1105,28 @@ var Uniq;
|
|
|
994
1105
|
Uniq2.isEmpty = (s) => s.size === 0;
|
|
995
1106
|
Uniq2.isSubsetOf = (other) => (s) => {
|
|
996
1107
|
const set = s;
|
|
997
|
-
if (typeof set.isSubsetOf === "function")
|
|
1108
|
+
if (typeof set.isSubsetOf === "function") {
|
|
1109
|
+
return set.isSubsetOf(other);
|
|
1110
|
+
}
|
|
998
1111
|
for (const item of s) {
|
|
999
|
-
if (!other.has(item))
|
|
1112
|
+
if (!other.has(item)) {
|
|
1113
|
+
return false;
|
|
1114
|
+
}
|
|
1000
1115
|
}
|
|
1001
1116
|
return true;
|
|
1002
1117
|
};
|
|
1003
1118
|
Uniq2.insert = (item) => (s) => {
|
|
1004
|
-
if (s.has(item))
|
|
1119
|
+
if (s.has(item)) {
|
|
1120
|
+
return s;
|
|
1121
|
+
}
|
|
1005
1122
|
const result = new globalThis.Set(s);
|
|
1006
1123
|
result.add(item);
|
|
1007
1124
|
return result;
|
|
1008
1125
|
};
|
|
1009
1126
|
Uniq2.remove = (item) => (s) => {
|
|
1010
|
-
if (!s.has(item))
|
|
1127
|
+
if (!s.has(item)) {
|
|
1128
|
+
return s;
|
|
1129
|
+
}
|
|
1011
1130
|
const result = new globalThis.Set(s);
|
|
1012
1131
|
result.delete(item);
|
|
1013
1132
|
return result;
|
|
@@ -1022,29 +1141,47 @@ var Uniq;
|
|
|
1022
1141
|
Uniq2.filter = (predicate) => (s) => {
|
|
1023
1142
|
const result = new globalThis.Set();
|
|
1024
1143
|
for (const item of s) {
|
|
1025
|
-
if (predicate(item))
|
|
1144
|
+
if (predicate(item)) {
|
|
1145
|
+
result.add(item);
|
|
1146
|
+
}
|
|
1026
1147
|
}
|
|
1027
1148
|
return result;
|
|
1028
1149
|
};
|
|
1029
1150
|
Uniq2.union = (other) => (s) => {
|
|
1030
1151
|
const set = s;
|
|
1031
|
-
if (typeof set.union === "function")
|
|
1152
|
+
if (typeof set.union === "function") {
|
|
1153
|
+
return set.union(other);
|
|
1154
|
+
}
|
|
1032
1155
|
const result = new globalThis.Set(s);
|
|
1033
|
-
for (const item of other)
|
|
1156
|
+
for (const item of other) {
|
|
1157
|
+
result.add(item);
|
|
1158
|
+
}
|
|
1034
1159
|
return result;
|
|
1035
1160
|
};
|
|
1036
1161
|
Uniq2.intersection = (other) => (s) => {
|
|
1037
1162
|
const set = s;
|
|
1038
|
-
if (typeof set.intersection === "function")
|
|
1163
|
+
if (typeof set.intersection === "function") {
|
|
1164
|
+
return set.intersection(other);
|
|
1165
|
+
}
|
|
1039
1166
|
const result = new globalThis.Set();
|
|
1040
|
-
for (const item of s)
|
|
1167
|
+
for (const item of s) {
|
|
1168
|
+
if (other.has(item)) {
|
|
1169
|
+
result.add(item);
|
|
1170
|
+
}
|
|
1171
|
+
}
|
|
1041
1172
|
return result;
|
|
1042
1173
|
};
|
|
1043
1174
|
Uniq2.difference = (other) => (s) => {
|
|
1044
1175
|
const set = s;
|
|
1045
|
-
if (typeof set.difference === "function")
|
|
1176
|
+
if (typeof set.difference === "function") {
|
|
1177
|
+
return set.difference(other);
|
|
1178
|
+
}
|
|
1046
1179
|
const result = new globalThis.Set();
|
|
1047
|
-
for (const item of s)
|
|
1180
|
+
for (const item of s) {
|
|
1181
|
+
if (!other.has(item)) {
|
|
1182
|
+
result.add(item);
|
|
1183
|
+
}
|
|
1184
|
+
}
|
|
1048
1185
|
return result;
|
|
1049
1186
|
};
|
|
1050
1187
|
Uniq2.reduce = (init, f) => (s) => {
|