@nlozgachev/pipelined 0.44.0 → 0.46.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 +12 -6
- package/dist/{InternalTypes-BL23H8Qr.d.mts → InternalTypes-CLE7qlOc.d.mts} +33 -28
- package/dist/{InternalTypes-7o9-yrHq.d.ts → InternalTypes-Mssktd7z.d.ts} +33 -28
- package/dist/{Validation-DM2eh6wj.d.ts → Validation-BMsvixWH.d.ts} +475 -443
- package/dist/{Validation-Dz70wtcG.d.mts → Validation-v38R0qH-.d.mts} +475 -443
- package/dist/{chunk-X6XQX3OZ.mjs → chunk-KOYYDQH4.mjs} +2 -2
- package/dist/{chunk-ND476266.mjs → chunk-VSU36S2K.mjs} +432 -309
- package/dist/{chunk-LKTOK5IT.mjs → chunk-W2L244AS.mjs} +188 -73
- package/dist/{chunk-74JKKJ4R.mjs → chunk-XTVF5R6R.mjs} +8 -5
- package/dist/composition.d.mts +10 -10
- package/dist/composition.d.ts +10 -10
- package/dist/composition.js +9 -6
- package/dist/composition.mjs +2 -2
- package/dist/core.d.mts +453 -402
- package/dist/core.d.ts +453 -402
- package/dist/core.js +439 -313
- package/dist/core.mjs +2 -2
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +627 -386
- package/dist/index.mjs +4 -4
- package/dist/types.d.mts +23 -21
- package/dist/types.d.ts +23 -21
- package/dist/types.js +8 -5
- package/dist/types.mjs +1 -1
- package/dist/utils.d.mts +522 -370
- package/dist/utils.d.ts +522 -370
- package/dist/utils.js +434 -243
- package/dist/utils.mjs +3 -3
- package/package.json +15 -5
package/dist/core.js
CHANGED
|
@@ -57,8 +57,8 @@ var Combinable;
|
|
|
57
57
|
Combinable2.any = { empty: false, combine: (b) => (a) => a || b };
|
|
58
58
|
Combinable2.array = () => ({ empty: [], combine: (b) => (a) => [...a, ...b] });
|
|
59
59
|
Combinable2.maybe = (inner) => ({
|
|
60
|
-
empty: Maybe.none(),
|
|
61
|
-
combine: (b) => (a) => Maybe.
|
|
60
|
+
empty: Maybe.make.none(),
|
|
61
|
+
combine: (b) => (a) => Maybe.is.none(a) ? b : Maybe.is.none(b) ? a : Maybe.make.some(inner.combine(b.value)(a.value))
|
|
62
62
|
});
|
|
63
63
|
Combinable2.fold = (c) => (data) => data.reduce((acc, x) => c.combine(x)(acc), c.empty);
|
|
64
64
|
})(Combinable || (Combinable = {}));
|
|
@@ -66,11 +66,17 @@ var Combinable;
|
|
|
66
66
|
// src/Core/Deferred.ts
|
|
67
67
|
var Deferred;
|
|
68
68
|
((Deferred2) => {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
69
|
+
let from;
|
|
70
|
+
((from2) => {
|
|
71
|
+
from2.Promise = (p) => (
|
|
72
|
+
// eslint-disable-next-line unicorn/no-thenable -- Deferred is intentionally thenable; it is the mechanism that makes Task awaitable
|
|
73
|
+
{ then: ((f) => p.then(f)) }
|
|
74
|
+
);
|
|
75
|
+
})(from = Deferred2.from || (Deferred2.from = {}));
|
|
76
|
+
let to;
|
|
77
|
+
((to2) => {
|
|
78
|
+
to2.Promise = (d) => new globalThis.Promise((resolve) => d.then(resolve));
|
|
79
|
+
})(to = Deferred2.to || (Deferred2.to = {}));
|
|
74
80
|
})(Deferred || (Deferred = {}));
|
|
75
81
|
|
|
76
82
|
// src/Core/Equality.ts
|
|
@@ -114,12 +120,15 @@ var Lazy;
|
|
|
114
120
|
// src/Core/Lens.ts
|
|
115
121
|
var Lens;
|
|
116
122
|
((Lens3) => {
|
|
117
|
-
|
|
118
|
-
|
|
123
|
+
let from;
|
|
124
|
+
((from2) => {
|
|
125
|
+
from2.accessors = (get2, set2) => ({ get: get2, set: set2 });
|
|
126
|
+
from2.property = () => (key) => (0, from2.accessors)((s) => s[key], (a) => (s) => ({ ...s, [key]: a }));
|
|
127
|
+
})(from = Lens3.from || (Lens3.from = {}));
|
|
119
128
|
Lens3.get = (lens) => (s) => lens.get(s);
|
|
120
129
|
Lens3.set = (lens) => (a) => (s) => lens.set(a)(s);
|
|
121
130
|
Lens3.modify = (lens) => (f) => (s) => lens.set(f(lens.get(s)))(s);
|
|
122
|
-
Lens3.andThen = (inner) => (outer) =>
|
|
131
|
+
Lens3.andThen = (inner) => (outer) => from.accessors((s) => inner.get(outer.get(s)), (b) => (s) => outer.set(inner.set(b)(outer.get(s)))(s));
|
|
123
132
|
Lens3.andThenOptional = (inner) => (outer) => ({
|
|
124
133
|
get: (s) => inner.get(outer.get(s)),
|
|
125
134
|
set: (b) => (s) => outer.set(inner.set(b)(outer.get(s)))(s)
|
|
@@ -133,8 +142,11 @@ var Lens;
|
|
|
133
142
|
// src/Core/Logged.ts
|
|
134
143
|
var Logged;
|
|
135
144
|
((Logged2) => {
|
|
136
|
-
|
|
137
|
-
|
|
145
|
+
let from;
|
|
146
|
+
((from2) => {
|
|
147
|
+
from2.value = (val) => ({ value: val, log: [] });
|
|
148
|
+
from2.entry = (logEntry) => ({ value: void 0, log: [logEntry] });
|
|
149
|
+
})(from = Logged2.from || (Logged2.from = {}));
|
|
138
150
|
Logged2.map = (f) => (data) => ({
|
|
139
151
|
value: f(data.value),
|
|
140
152
|
log: data.log
|
|
@@ -161,47 +173,59 @@ var Logged;
|
|
|
161
173
|
// src/Core/Maybe.ts
|
|
162
174
|
var _none = { kind: "None" };
|
|
163
175
|
var Maybe;
|
|
164
|
-
((
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
176
|
+
((Maybe3) => {
|
|
177
|
+
let make;
|
|
178
|
+
((make2) => {
|
|
179
|
+
make2.some = (value) => ({ kind: "Some", value });
|
|
180
|
+
make2.none = () => _none;
|
|
181
|
+
})(make = Maybe3.make || (Maybe3.make = {}));
|
|
182
|
+
let is;
|
|
183
|
+
((is2) => {
|
|
184
|
+
is2.some = (data) => data.kind === "Some";
|
|
185
|
+
is2.none = (data) => data.kind === "None";
|
|
186
|
+
})(is = Maybe3.is || (Maybe3.is = {}));
|
|
187
|
+
let to;
|
|
188
|
+
((to2) => {
|
|
189
|
+
to2.nullable = (data) => is.some(data) ? data.value : null;
|
|
190
|
+
to2.undefined = (data) => is.some(data) ? data.value : globalThis.undefined;
|
|
191
|
+
to2.Result = (onNone) => (data) => is.some(data) ? Result.make.ok(data.value) : Result.make.err(onNone());
|
|
192
|
+
})(to = Maybe3.to || (Maybe3.to = {}));
|
|
193
|
+
let from;
|
|
194
|
+
((from2) => {
|
|
195
|
+
from2.nullable = (value) => value === null || value === void 0 ? make.none() : make.some(value);
|
|
196
|
+
from2.Predicate = (pred) => (a) => pred(a) ? make.some(a) : make.none();
|
|
197
|
+
from2.Result = (data) => Result.is.ok(data) ? make.some(data.value) : make.none();
|
|
198
|
+
})(from = Maybe3.from || (Maybe3.from = {}));
|
|
199
|
+
Maybe3.map = (f) => (data) => is.some(data) ? make.some(f(data.value)) : data;
|
|
200
|
+
Maybe3.chain = (f) => (data) => is.some(data) ? f(data.value) : data;
|
|
201
|
+
Maybe3.fold = (onNone, onSome) => (data) => is.some(data) ? onSome(data.value) : onNone();
|
|
202
|
+
Maybe3.match = (cases) => (data) => is.some(data) ? cases.some(data.value) : cases.none();
|
|
203
|
+
Maybe3.getOrElse = (defaultValue) => (data) => is.some(data) ? data.value : defaultValue();
|
|
204
|
+
Maybe3.tap = (f) => (data) => {
|
|
205
|
+
if (is.some(data)) {
|
|
182
206
|
f(data.value);
|
|
183
207
|
}
|
|
184
208
|
return data;
|
|
185
209
|
};
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
(a) => (0,
|
|
210
|
+
Maybe3.filter = (predicate) => (data) => is.some(data) ? predicate(data.value) ? data : make.none() : data;
|
|
211
|
+
Maybe3.recover = (fallback) => (data) => is.some(data) ? data : fallback();
|
|
212
|
+
Maybe3.ap = (arg) => (data) => is.some(data) && is.some(arg) ? make.some(data.value(arg.value)) : make.none();
|
|
213
|
+
Maybe3.bindTo = (key) => (data) => (0, Maybe3.map)((a) => ({ [key]: a }))(data);
|
|
214
|
+
Maybe3.bind = (key, f) => (data) => (0, Maybe3.chain)(
|
|
215
|
+
(a) => (0, Maybe3.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
192
216
|
)(data);
|
|
193
|
-
|
|
217
|
+
Maybe3.struct = (fields) => {
|
|
194
218
|
const result = {};
|
|
195
219
|
for (const key in fields) {
|
|
196
220
|
if (Object.hasOwn(fields, key)) {
|
|
197
221
|
const res = fields[key];
|
|
198
|
-
if (
|
|
222
|
+
if (is.none(res)) {
|
|
199
223
|
return res;
|
|
200
224
|
}
|
|
201
225
|
result[key] = res.value;
|
|
202
226
|
}
|
|
203
227
|
}
|
|
204
|
-
return
|
|
228
|
+
return make.some(result);
|
|
205
229
|
};
|
|
206
230
|
})(Maybe || (Maybe = {}));
|
|
207
231
|
|
|
@@ -221,11 +245,14 @@ var Duration;
|
|
|
221
245
|
Duration2.minutes = (m) => wrap(m * 60 * 1e3);
|
|
222
246
|
Duration2.hours = (h) => wrap(h * 60 * 60 * 1e3);
|
|
223
247
|
Duration2.days = (d) => wrap(d * 24 * 60 * 60 * 1e3);
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
248
|
+
let to;
|
|
249
|
+
((to2) => {
|
|
250
|
+
to2.milliseconds = (d) => Brand.unwrap(d);
|
|
251
|
+
to2.seconds = (d) => Brand.unwrap(d) / 1e3;
|
|
252
|
+
to2.minutes = (d) => Brand.unwrap(d) / (60 * 1e3);
|
|
253
|
+
to2.hours = (d) => Brand.unwrap(d) / (60 * 60 * 1e3);
|
|
254
|
+
to2.days = (d) => Brand.unwrap(d) / (24 * 60 * 60 * 1e3);
|
|
255
|
+
})(to = Duration2.to || (Duration2.to = {}));
|
|
229
256
|
Duration2.add = (other) => (self) => wrap(Brand.unwrap(self) + Brand.unwrap(other));
|
|
230
257
|
Duration2.subtract = (other) => (self) => wrap(Brand.unwrap(self) - Brand.unwrap(other));
|
|
231
258
|
})(Duration || (Duration = {}));
|
|
@@ -239,7 +266,7 @@ var _idle = { kind: "Idle" };
|
|
|
239
266
|
var _pending = { kind: "Pending" };
|
|
240
267
|
var ok = (value) => ({ kind: "OpOk", value });
|
|
241
268
|
var err = (error) => ({ kind: "OpErr", error });
|
|
242
|
-
var getMs = (duration) => Duration.
|
|
269
|
+
var getMs = (duration) => Duration.to.milliseconds(duration);
|
|
243
270
|
var cancellableWait = (duration, signal) => {
|
|
244
271
|
const rawMs = getMs(duration);
|
|
245
272
|
if (rawMs <= 0) {
|
|
@@ -262,7 +289,7 @@ var runWithRetry = (op, input, signal, options, onRetrying) => {
|
|
|
262
289
|
return typeof backoff === "function" ? backoff(n) : backoff;
|
|
263
290
|
};
|
|
264
291
|
const attempt = async (left) => {
|
|
265
|
-
const result = await Deferred.
|
|
292
|
+
const result = await Deferred.to.Promise(op._factory(input, signal));
|
|
266
293
|
if (result === null || signal.aborted) {
|
|
267
294
|
return null;
|
|
268
295
|
}
|
|
@@ -297,12 +324,12 @@ var runWithRetry = (op, input, signal, options, onRetrying) => {
|
|
|
297
324
|
var execute = (op, input, controller, retryOptions, timeoutOptions, onRetrying) => {
|
|
298
325
|
const { signal } = controller;
|
|
299
326
|
const toOutcome = (r) => r === null ? _abortedNil : r.kind === "Ok" ? ok(r.value) : err(r.error);
|
|
300
|
-
const runPromise = retryOptions !== void 0 && onRetrying !== void 0 ? runWithRetry(op, input, signal, retryOptions, onRetrying).then(toOutcome) : Deferred.
|
|
327
|
+
const runPromise = retryOptions !== void 0 && onRetrying !== void 0 ? runWithRetry(op, input, signal, retryOptions, onRetrying).then(toOutcome) : Deferred.to.Promise(op._factory(input, signal)).then(toOutcome);
|
|
301
328
|
if (timeoutOptions === void 0) {
|
|
302
|
-
return Deferred.
|
|
329
|
+
return Deferred.from.Promise(runPromise);
|
|
303
330
|
}
|
|
304
331
|
let timerId;
|
|
305
|
-
return Deferred.
|
|
332
|
+
return Deferred.from.Promise(Promise.race([
|
|
306
333
|
runPromise.then((outcome) => {
|
|
307
334
|
clearTimeout(timerId);
|
|
308
335
|
return outcome;
|
|
@@ -326,7 +353,7 @@ var makeRestartable = (op, minInterval, retryOptions, timeoutOptions) => {
|
|
|
326
353
|
currentState = state;
|
|
327
354
|
subscribers.forEach((cb) => cb(state));
|
|
328
355
|
};
|
|
329
|
-
const run = (input) => Deferred.
|
|
356
|
+
const run = (input) => Deferred.from.Promise(
|
|
330
357
|
new Promise((resolve) => {
|
|
331
358
|
waitController?.abort();
|
|
332
359
|
waitController = void 0;
|
|
@@ -418,9 +445,9 @@ var makeExclusive = (op, cooldown, retryOptions, timeoutOptions) => {
|
|
|
418
445
|
};
|
|
419
446
|
const run = (input) => {
|
|
420
447
|
if (currentController !== void 0 || cooldownTimer !== void 0) {
|
|
421
|
-
return Deferred.
|
|
448
|
+
return Deferred.from.Promise(Promise.resolve(_droppedNil));
|
|
422
449
|
}
|
|
423
|
-
return Deferred.
|
|
450
|
+
return Deferred.from.Promise(
|
|
424
451
|
new Promise((resolve) => {
|
|
425
452
|
currentResolve = resolve;
|
|
426
453
|
currentController = new AbortController();
|
|
@@ -540,14 +567,14 @@ var makeQueue = (op, maxSize, overflow, concurrency, dedupe, retryOptions, timeo
|
|
|
540
567
|
}
|
|
541
568
|
}
|
|
542
569
|
if (inFlight < maxConcurrency) {
|
|
543
|
-
return Deferred.
|
|
570
|
+
return Deferred.from.Promise(
|
|
544
571
|
new Promise((resolve) => {
|
|
545
572
|
startOne(input, resolve, myGeneration);
|
|
546
573
|
})
|
|
547
574
|
);
|
|
548
575
|
}
|
|
549
576
|
if (maxSize === void 0 || queue.length < maxSize) {
|
|
550
|
-
return Deferred.
|
|
577
|
+
return Deferred.from.Promise(
|
|
551
578
|
new Promise((resolve) => {
|
|
552
579
|
queue.push({ input, resolve });
|
|
553
580
|
emit({ kind: "Queued", position: queue.length - 1 });
|
|
@@ -555,7 +582,7 @@ var makeQueue = (op, maxSize, overflow, concurrency, dedupe, retryOptions, timeo
|
|
|
555
582
|
);
|
|
556
583
|
}
|
|
557
584
|
if (overflow === "replace-last") {
|
|
558
|
-
return Deferred.
|
|
585
|
+
return Deferred.from.Promise(
|
|
559
586
|
new Promise((resolve) => {
|
|
560
587
|
const tail = queue.pop();
|
|
561
588
|
tail.resolve(_evictedNil);
|
|
@@ -564,7 +591,7 @@ var makeQueue = (op, maxSize, overflow, concurrency, dedupe, retryOptions, timeo
|
|
|
564
591
|
})
|
|
565
592
|
);
|
|
566
593
|
}
|
|
567
|
-
return Deferred.
|
|
594
|
+
return Deferred.from.Promise(Promise.resolve(_droppedNil));
|
|
568
595
|
};
|
|
569
596
|
const abort = () => {
|
|
570
597
|
generation++;
|
|
@@ -636,7 +663,7 @@ var makeBuffered = (op, size, retryOptions, timeoutOptions) => {
|
|
|
636
663
|
}
|
|
637
664
|
});
|
|
638
665
|
};
|
|
639
|
-
const run = (input) => Deferred.
|
|
666
|
+
const run = (input) => Deferred.from.Promise(
|
|
640
667
|
new Promise((resolve) => {
|
|
641
668
|
if (currentController === void 0) {
|
|
642
669
|
startRun(input, resolve);
|
|
@@ -762,7 +789,7 @@ var makeDebounced = (op, duration, leading, maxWait, retryOptions, timeoutOption
|
|
|
762
789
|
timerId = setTimeout(fireTrailing, delay);
|
|
763
790
|
};
|
|
764
791
|
const inDebounceWindow = () => timerId !== void 0 || leadingController !== void 0 || currentController !== void 0;
|
|
765
|
-
const run = (input) => Deferred.
|
|
792
|
+
const run = (input) => Deferred.from.Promise(
|
|
766
793
|
new Promise((resolve) => {
|
|
767
794
|
if (!inDebounceWindow()) {
|
|
768
795
|
firstCallAt = Date.now();
|
|
@@ -877,9 +904,9 @@ var makeThrottled = (op, duration, trailing, retryOptions, timeoutOptions) => {
|
|
|
877
904
|
const run = (input) => {
|
|
878
905
|
if (cooldownTimer !== void 0) {
|
|
879
906
|
if (!trailing) {
|
|
880
|
-
return Deferred.
|
|
907
|
+
return Deferred.from.Promise(Promise.resolve(_droppedNil));
|
|
881
908
|
}
|
|
882
|
-
return Deferred.
|
|
909
|
+
return Deferred.from.Promise(
|
|
883
910
|
new Promise((resolve) => {
|
|
884
911
|
const prev = pendingResolve;
|
|
885
912
|
pendingInput = input;
|
|
@@ -888,7 +915,7 @@ var makeThrottled = (op, duration, trailing, retryOptions, timeoutOptions) => {
|
|
|
888
915
|
})
|
|
889
916
|
);
|
|
890
917
|
}
|
|
891
|
-
return Deferred.
|
|
918
|
+
return Deferred.from.Promise(
|
|
892
919
|
new Promise((resolve) => {
|
|
893
920
|
fireOp(input, resolve);
|
|
894
921
|
startCooldown();
|
|
@@ -979,16 +1006,16 @@ var makeConcurrent = (op, n, overflow, retryOptions, timeoutOptions) => {
|
|
|
979
1006
|
const run = (input) => {
|
|
980
1007
|
const myGeneration = generation;
|
|
981
1008
|
if (inflight < n) {
|
|
982
|
-
return Deferred.
|
|
1009
|
+
return Deferred.from.Promise(
|
|
983
1010
|
new Promise((resolve) => {
|
|
984
1011
|
startOne(input, resolve, myGeneration);
|
|
985
1012
|
})
|
|
986
1013
|
);
|
|
987
1014
|
}
|
|
988
1015
|
if (overflow === "drop") {
|
|
989
|
-
return Deferred.
|
|
1016
|
+
return Deferred.from.Promise(Promise.resolve(_droppedNil));
|
|
990
1017
|
}
|
|
991
|
-
return Deferred.
|
|
1018
|
+
return Deferred.from.Promise(
|
|
992
1019
|
new Promise((resolve) => {
|
|
993
1020
|
overflowQueue.push({ input, resolve });
|
|
994
1021
|
emit({ kind: "Queued", position: overflowQueue.length - 1 });
|
|
@@ -1041,7 +1068,7 @@ var makeKeyed = (op, keyFn, perKey, timeoutOptions) => {
|
|
|
1041
1068
|
const k = keyFn(input);
|
|
1042
1069
|
if (slots.has(k)) {
|
|
1043
1070
|
if (perKey === "exclusive") {
|
|
1044
|
-
return Deferred.
|
|
1071
|
+
return Deferred.from.Promise(Promise.resolve(_droppedNil));
|
|
1045
1072
|
}
|
|
1046
1073
|
const existing = slots.get(k);
|
|
1047
1074
|
existing.controller.abort();
|
|
@@ -1049,7 +1076,7 @@ var makeKeyed = (op, keyFn, perKey, timeoutOptions) => {
|
|
|
1049
1076
|
slots.delete(k);
|
|
1050
1077
|
prev(_replacedNil);
|
|
1051
1078
|
}
|
|
1052
|
-
return Deferred.
|
|
1079
|
+
return Deferred.from.Promise(
|
|
1053
1080
|
new Promise((resolve) => {
|
|
1054
1081
|
const controller = new AbortController();
|
|
1055
1082
|
slots.set(k, { controller, resolve });
|
|
@@ -1129,9 +1156,9 @@ var makeOnce = (op, retryOptions, timeoutOptions) => {
|
|
|
1129
1156
|
};
|
|
1130
1157
|
const run = (input) => {
|
|
1131
1158
|
if (currentState.kind !== "Idle") {
|
|
1132
|
-
return Deferred.
|
|
1159
|
+
return Deferred.from.Promise(Promise.resolve(_droppedNil));
|
|
1133
1160
|
}
|
|
1134
|
-
return Deferred.
|
|
1161
|
+
return Deferred.from.Promise(
|
|
1135
1162
|
new Promise((resolve) => {
|
|
1136
1163
|
currentResolve = resolve;
|
|
1137
1164
|
currentController = new AbortController();
|
|
@@ -1192,10 +1219,8 @@ var Op;
|
|
|
1192
1219
|
((Op2) => {
|
|
1193
1220
|
Op2.nil = (reason) => ({ kind: "OpNil", reason });
|
|
1194
1221
|
Op2.create = (factory, onError) => ({
|
|
1195
|
-
_factory: (input, signal) => Deferred.
|
|
1196
|
-
factory(signal)(input).then((value) => Result.ok(value)).catch(
|
|
1197
|
-
(error) => signal.aborted ? null : Result.err(onError(error))
|
|
1198
|
-
)
|
|
1222
|
+
_factory: (input, signal) => Deferred.from.Promise(
|
|
1223
|
+
factory(signal)(input).then((value) => Result.make.ok(value)).catch((error) => signal.aborted ? null : Result.make.err(onError(error)))
|
|
1199
1224
|
)
|
|
1200
1225
|
});
|
|
1201
1226
|
Op2.lift = (f) => (0, Op2.create)((signal) => (input) => f(input, signal), (e) => e);
|
|
@@ -1237,18 +1262,21 @@ var Op;
|
|
|
1237
1262
|
return outcome;
|
|
1238
1263
|
};
|
|
1239
1264
|
Op2.recover = (f) => (outcome) => outcome.kind === "OpErr" ? f(outcome.error) : outcome;
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1265
|
+
let to;
|
|
1266
|
+
((to2) => {
|
|
1267
|
+
to2.Result = (onNil) => (outcome) => {
|
|
1268
|
+
if (outcome.kind === "OpOk") {
|
|
1269
|
+
return Result.make.ok(outcome.value);
|
|
1270
|
+
}
|
|
1271
|
+
if (outcome.kind === "OpErr") {
|
|
1272
|
+
return Result.make.err(outcome.error);
|
|
1273
|
+
}
|
|
1274
|
+
return Result.make.err(onNil());
|
|
1275
|
+
};
|
|
1276
|
+
to2.Maybe = (outcome) => outcome.kind === "OpOk" ? Maybe.make.some(outcome.value) : Maybe.make.none();
|
|
1277
|
+
})(to = Op2.to || (Op2.to = {}));
|
|
1278
|
+
Op2.all = (invocations) => Deferred.from.Promise(Promise.all(invocations.map(Deferred.to.Promise)));
|
|
1279
|
+
Op2.race = (invocations) => Deferred.from.Promise(Promise.race(invocations.map(Deferred.to.Promise)));
|
|
1252
1280
|
Op2.wire = (source, f) => source.subscribe((state) => {
|
|
1253
1281
|
if ((0, Op2.isOk)(state)) {
|
|
1254
1282
|
f(state.value);
|
|
@@ -1313,12 +1341,18 @@ var Op;
|
|
|
1313
1341
|
// src/Core/Optional.ts
|
|
1314
1342
|
var Optional;
|
|
1315
1343
|
((Optional2) => {
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1344
|
+
let from;
|
|
1345
|
+
((from2) => {
|
|
1346
|
+
from2.accessors = (get2, set2) => ({
|
|
1347
|
+
get: get2,
|
|
1348
|
+
set: set2
|
|
1349
|
+
});
|
|
1350
|
+
from2.property = () => (key) => (0, from2.accessors)((s) => {
|
|
1351
|
+
const val = s[key];
|
|
1352
|
+
return val !== null && val !== void 0 ? Maybe.make.some(val) : Maybe.make.none();
|
|
1353
|
+
}, (a) => (s) => ({ ...s, [key]: a }));
|
|
1354
|
+
})(from = Optional2.from || (Optional2.from = {}));
|
|
1355
|
+
Optional2.index = (i) => from.accessors((arr) => i >= 0 && i < arr.length ? Maybe.make.some(arr[i]) : Maybe.make.none(), (a) => (arr) => {
|
|
1322
1356
|
if (i < 0 || i >= arr.length) {
|
|
1323
1357
|
return arr;
|
|
1324
1358
|
}
|
|
@@ -1344,16 +1378,16 @@ var Optional;
|
|
|
1344
1378
|
const val = opt.get(s);
|
|
1345
1379
|
return val.kind === "Some" ? cases.some(val.value) : cases.none();
|
|
1346
1380
|
};
|
|
1347
|
-
Optional2.andThen = (inner) => (outer) =>
|
|
1381
|
+
Optional2.andThen = (inner) => (outer) => from.accessors((s) => {
|
|
1348
1382
|
const mid = outer.get(s);
|
|
1349
|
-
return mid.kind === "None" ? Maybe.none() : inner.get(mid.value);
|
|
1383
|
+
return mid.kind === "None" ? Maybe.make.none() : inner.get(mid.value);
|
|
1350
1384
|
}, (b) => (s) => {
|
|
1351
1385
|
const mid = outer.get(s);
|
|
1352
1386
|
return mid.kind === "None" ? s : outer.set(inner.set(b)(mid.value))(s);
|
|
1353
1387
|
});
|
|
1354
|
-
Optional2.andThenLens = (inner) => (outer) =>
|
|
1388
|
+
Optional2.andThenLens = (inner) => (outer) => from.accessors((s) => {
|
|
1355
1389
|
const mid = outer.get(s);
|
|
1356
|
-
return mid.kind === "None" ? Maybe.none() : Maybe.some(inner.get(mid.value));
|
|
1390
|
+
return mid.kind === "None" ? Maybe.make.none() : Maybe.make.some(inner.get(mid.value));
|
|
1357
1391
|
}, (b) => (s) => {
|
|
1358
1392
|
const mid = outer.get(s);
|
|
1359
1393
|
return mid.kind === "None" ? s : outer.set(inner.set(b)(mid.value))(s);
|
|
@@ -1383,7 +1417,10 @@ var Predicate;
|
|
|
1383
1417
|
Predicate2.using = (f) => (p) => (b) => p(f(b));
|
|
1384
1418
|
Predicate2.all = (predicates) => (a) => predicates.every((p) => p(a));
|
|
1385
1419
|
Predicate2.any = (predicates) => (a) => predicates.some((p) => p(a));
|
|
1386
|
-
|
|
1420
|
+
let from;
|
|
1421
|
+
((from2) => {
|
|
1422
|
+
from2.Refinement = (r) => r;
|
|
1423
|
+
})(from = Predicate2.from || (Predicate2.from = {}));
|
|
1387
1424
|
})(Predicate || (Predicate = {}));
|
|
1388
1425
|
|
|
1389
1426
|
// src/Core/Reader.ts
|
|
@@ -1411,12 +1448,18 @@ var Reader;
|
|
|
1411
1448
|
// src/Core/Refinement.ts
|
|
1412
1449
|
var Refinement;
|
|
1413
1450
|
((Refinement2) => {
|
|
1414
|
-
|
|
1451
|
+
let from;
|
|
1452
|
+
((from2) => {
|
|
1453
|
+
from2.predicate = (f) => f;
|
|
1454
|
+
})(from = Refinement2.from || (Refinement2.from = {}));
|
|
1415
1455
|
Refinement2.compose = (bc) => (ab) => (a) => ab(a) && bc(a);
|
|
1416
1456
|
Refinement2.and = (second) => (first) => (a) => first(a) && second(a);
|
|
1417
1457
|
Refinement2.or = (second) => (first) => (a) => first(a) || second(a);
|
|
1418
|
-
|
|
1419
|
-
|
|
1458
|
+
let to;
|
|
1459
|
+
((to2) => {
|
|
1460
|
+
to2.Maybe = (r) => (a) => r(a) ? Maybe.make.some(a) : Maybe.make.none();
|
|
1461
|
+
to2.Result = (r, onFail) => (a) => r(a) ? Result.make.ok(a) : Result.make.err(onFail(a));
|
|
1462
|
+
})(to = Refinement2.to || (Refinement2.to = {}));
|
|
1420
1463
|
})(Refinement || (Refinement = {}));
|
|
1421
1464
|
|
|
1422
1465
|
// src/Core/RemoteData.ts
|
|
@@ -1424,31 +1467,37 @@ var _notAsked = { kind: "NotAsked" };
|
|
|
1424
1467
|
var _loading = { kind: "Loading" };
|
|
1425
1468
|
var RemoteData;
|
|
1426
1469
|
((RemoteData2) => {
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
RemoteData2.
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1470
|
+
let make;
|
|
1471
|
+
((make2) => {
|
|
1472
|
+
make2.notAsked = () => _notAsked;
|
|
1473
|
+
make2.loading = () => _loading;
|
|
1474
|
+
make2.failure = (error) => ({ kind: "Failure", error });
|
|
1475
|
+
make2.success = (value) => ({ kind: "Success", value });
|
|
1476
|
+
})(make = RemoteData2.make || (RemoteData2.make = {}));
|
|
1477
|
+
let is;
|
|
1478
|
+
((is2) => {
|
|
1479
|
+
is2.notAsked = (data) => data.kind === "NotAsked";
|
|
1480
|
+
is2.loading = (data) => data.kind === "Loading";
|
|
1481
|
+
is2.failure = (data) => data.kind === "Failure";
|
|
1482
|
+
is2.success = (data) => data.kind === "Success";
|
|
1483
|
+
})(is = RemoteData2.is || (RemoteData2.is = {}));
|
|
1484
|
+
RemoteData2.map = (f) => (data) => is.success(data) ? make.success(f(data.value)) : data;
|
|
1485
|
+
RemoteData2.mapError = (f) => (data) => is.failure(data) ? make.failure(f(data.error)) : data;
|
|
1486
|
+
RemoteData2.chain = (f) => (data) => is.success(data) ? f(data.value) : data;
|
|
1438
1487
|
RemoteData2.ap = (arg) => (data) => {
|
|
1439
|
-
if (
|
|
1440
|
-
return
|
|
1488
|
+
if (is.success(data) && is.success(arg)) {
|
|
1489
|
+
return make.success(data.value(arg.value));
|
|
1441
1490
|
}
|
|
1442
|
-
if (
|
|
1491
|
+
if (is.failure(data)) {
|
|
1443
1492
|
return data;
|
|
1444
1493
|
}
|
|
1445
|
-
if (
|
|
1494
|
+
if (is.failure(arg)) {
|
|
1446
1495
|
return arg;
|
|
1447
1496
|
}
|
|
1448
|
-
if (
|
|
1449
|
-
return
|
|
1497
|
+
if (is.loading(data) || is.loading(arg)) {
|
|
1498
|
+
return make.loading();
|
|
1450
1499
|
}
|
|
1451
|
-
return
|
|
1500
|
+
return make.notAsked();
|
|
1452
1501
|
};
|
|
1453
1502
|
RemoteData2.fold = (onFailure, onNotAsked, onLoading, onSuccess) => (data) => {
|
|
1454
1503
|
switch (data.kind) {
|
|
@@ -1482,69 +1531,78 @@ var RemoteData;
|
|
|
1482
1531
|
}
|
|
1483
1532
|
}
|
|
1484
1533
|
};
|
|
1485
|
-
RemoteData2.getOrElse = (defaultValue) => (data) =>
|
|
1534
|
+
RemoteData2.getOrElse = (defaultValue) => (data) => is.success(data) ? data.value : defaultValue();
|
|
1486
1535
|
RemoteData2.tap = (f) => (data) => {
|
|
1487
|
-
if (
|
|
1536
|
+
if (is.success(data)) {
|
|
1488
1537
|
f(data.value);
|
|
1489
1538
|
}
|
|
1490
1539
|
return data;
|
|
1491
1540
|
};
|
|
1492
1541
|
RemoteData2.tapError = (f) => (data) => {
|
|
1493
|
-
if (
|
|
1542
|
+
if (is.failure(data)) {
|
|
1494
1543
|
f(data.error);
|
|
1495
1544
|
}
|
|
1496
1545
|
return data;
|
|
1497
1546
|
};
|
|
1498
|
-
RemoteData2.recover = (fallback) => (data) =>
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1547
|
+
RemoteData2.recover = (fallback) => (data) => is.failure(data) ? fallback(data.error) : data;
|
|
1548
|
+
let to;
|
|
1549
|
+
((to2) => {
|
|
1550
|
+
to2.Maybe = (data) => is.success(data) ? Maybe.make.some(data.value) : Maybe.make.none();
|
|
1551
|
+
to2.Result = (onNotReady) => (data) => is.success(data) ? Result.make.ok(data.value) : Result.make.err(is.failure(data) ? data.error : onNotReady());
|
|
1552
|
+
})(to = RemoteData2.to || (RemoteData2.to = {}));
|
|
1553
|
+
let from;
|
|
1554
|
+
((from2) => {
|
|
1555
|
+
from2.Result = (data) => Result.is.ok(data) ? make.success(data.value) : make.failure(data.error);
|
|
1556
|
+
from2.Maybe = (onNone) => (data) => Maybe.is.some(data) ? make.success(data.value) : make.failure(onNone());
|
|
1557
|
+
})(from = RemoteData2.from || (RemoteData2.from = {}));
|
|
1558
|
+
RemoteData2.filter = (pred, onFalse) => (data) => is.success(data) ? pred(data.value) ? data : make.failure(onFalse(data.value)) : data;
|
|
1504
1559
|
})(RemoteData || (RemoteData = {}));
|
|
1505
1560
|
|
|
1506
1561
|
// src/Core/Resource.ts
|
|
1507
1562
|
var Resource;
|
|
1508
1563
|
((Resource2) => {
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
release
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
release
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1564
|
+
let from;
|
|
1565
|
+
((from2) => {
|
|
1566
|
+
from2.handlers = (acquire, release) => ({
|
|
1567
|
+
acquire,
|
|
1568
|
+
release
|
|
1569
|
+
});
|
|
1570
|
+
from2.Task = (acquire, release) => ({
|
|
1571
|
+
acquire: Task.map((a) => Result.make.ok(a))(acquire),
|
|
1572
|
+
release
|
|
1573
|
+
});
|
|
1574
|
+
})(from = Resource2.from || (Resource2.from = {}));
|
|
1575
|
+
Resource2.use = (f) => (resource) => Task.from.Promise(
|
|
1576
|
+
(signal) => Deferred.to.Promise(resource.acquire(signal)).then(async (acquired) => {
|
|
1577
|
+
if (Result.is.err(acquired)) {
|
|
1520
1578
|
return acquired;
|
|
1521
1579
|
}
|
|
1522
1580
|
const a = acquired.value;
|
|
1523
1581
|
try {
|
|
1524
|
-
const usageResult = await Deferred.
|
|
1582
|
+
const usageResult = await Deferred.to.Promise(f(a)(signal));
|
|
1525
1583
|
return usageResult;
|
|
1526
1584
|
} finally {
|
|
1527
|
-
await Deferred.
|
|
1585
|
+
await Deferred.to.Promise(resource.release(a)(signal));
|
|
1528
1586
|
}
|
|
1529
1587
|
})
|
|
1530
1588
|
);
|
|
1531
1589
|
Resource2.combine = (resourceA, resourceB) => ({
|
|
1532
|
-
acquire: Task.from(
|
|
1533
|
-
(signal) => Deferred.
|
|
1534
|
-
if (Result.
|
|
1590
|
+
acquire: Task.from.Promise(
|
|
1591
|
+
(signal) => Deferred.to.Promise(resourceA.acquire(signal)).then(async (acquiredA) => {
|
|
1592
|
+
if (Result.is.err(acquiredA)) {
|
|
1535
1593
|
return acquiredA;
|
|
1536
1594
|
}
|
|
1537
1595
|
const a = acquiredA.value;
|
|
1538
|
-
const acquiredB = await Deferred.
|
|
1539
|
-
if (Result.
|
|
1540
|
-
await Deferred.
|
|
1596
|
+
const acquiredB = await Deferred.to.Promise(resourceB.acquire(signal));
|
|
1597
|
+
if (Result.is.err(acquiredB)) {
|
|
1598
|
+
await Deferred.to.Promise(resourceA.release(a)(signal));
|
|
1541
1599
|
return acquiredB;
|
|
1542
1600
|
}
|
|
1543
|
-
return Result.ok([a, acquiredB.value]);
|
|
1601
|
+
return Result.make.ok([a, acquiredB.value]);
|
|
1544
1602
|
})
|
|
1545
1603
|
),
|
|
1546
|
-
release: ([a, b]) => Task.from(
|
|
1547
|
-
(signal) => Deferred.
|
|
1604
|
+
release: ([a, b]) => Task.from.Promise(
|
|
1605
|
+
(signal) => Deferred.to.Promise(resourceB.release(b)(signal)).then(() => Deferred.to.Promise(resourceA.release(a)(signal)))
|
|
1548
1606
|
)
|
|
1549
1607
|
});
|
|
1550
1608
|
})(Resource || (Resource = {}));
|
|
@@ -1552,49 +1610,61 @@ var Resource;
|
|
|
1552
1610
|
// src/Core/Result.ts
|
|
1553
1611
|
var Result;
|
|
1554
1612
|
((Result4) => {
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1613
|
+
let make;
|
|
1614
|
+
((make2) => {
|
|
1615
|
+
make2.ok = (value) => ({ kind: "Ok", value });
|
|
1616
|
+
make2.err = (e) => ({ kind: "Err", error: e });
|
|
1617
|
+
})(make = Result4.make || (Result4.make = {}));
|
|
1618
|
+
let is;
|
|
1619
|
+
((is2) => {
|
|
1620
|
+
is2.ok = (data) => data.kind === "Ok";
|
|
1621
|
+
is2.err = (data) => data.kind === "Err";
|
|
1622
|
+
})(is = Result4.is || (Result4.is = {}));
|
|
1559
1623
|
Result4.tryCatch = (f, onError) => {
|
|
1560
1624
|
try {
|
|
1561
|
-
return
|
|
1625
|
+
return make.ok(f());
|
|
1562
1626
|
} catch (error) {
|
|
1563
|
-
return
|
|
1627
|
+
return make.err(onError(error));
|
|
1564
1628
|
}
|
|
1565
1629
|
};
|
|
1566
|
-
Result4.map = (f) => (data) =>
|
|
1567
|
-
Result4.mapError = (f) => (data) =>
|
|
1568
|
-
Result4.chain = (f) => (data) =>
|
|
1569
|
-
Result4.fold = (onErr, onOk) => (data) =>
|
|
1570
|
-
Result4.match = (cases) => (data) =>
|
|
1571
|
-
Result4.getOrElse = (defaultValue) => (data) =>
|
|
1630
|
+
Result4.map = (f) => (data) => is.ok(data) ? make.ok(f(data.value)) : data;
|
|
1631
|
+
Result4.mapError = (f) => (data) => is.err(data) ? make.err(f(data.error)) : data;
|
|
1632
|
+
Result4.chain = (f) => (data) => is.ok(data) ? f(data.value) : data;
|
|
1633
|
+
Result4.fold = (onErr, onOk) => (data) => is.ok(data) ? onOk(data.value) : onErr(data.error);
|
|
1634
|
+
Result4.match = (cases) => (data) => is.ok(data) ? cases.ok(data.value) : cases.err(data.error);
|
|
1635
|
+
Result4.getOrElse = (defaultValue) => (data) => is.ok(data) ? data.value : defaultValue();
|
|
1572
1636
|
Result4.tap = (f) => (data) => {
|
|
1573
|
-
if (
|
|
1637
|
+
if (is.ok(data)) {
|
|
1574
1638
|
f(data.value);
|
|
1575
1639
|
}
|
|
1576
1640
|
return data;
|
|
1577
1641
|
};
|
|
1578
1642
|
Result4.tapError = (f) => (data) => {
|
|
1579
|
-
if (
|
|
1643
|
+
if (is.err(data)) {
|
|
1580
1644
|
f(data.error);
|
|
1581
1645
|
}
|
|
1582
1646
|
return data;
|
|
1583
1647
|
};
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
Result4.
|
|
1648
|
+
let from;
|
|
1649
|
+
((from2) => {
|
|
1650
|
+
from2.Predicate = (pred, onFalse) => (a) => pred(a) ? make.ok(a) : make.err(onFalse(a));
|
|
1651
|
+
from2.nullable = (onNull) => (value) => value === null || value === void 0 ? make.err(onNull()) : make.ok(value);
|
|
1652
|
+
from2.Maybe = (onNone) => (maybe) => Maybe.is.none(maybe) ? make.err(onNone()) : make.ok(maybe.value);
|
|
1653
|
+
from2.throwable = (f, onError) => (...args) => {
|
|
1654
|
+
try {
|
|
1655
|
+
return make.ok(f(...args));
|
|
1656
|
+
} catch (error) {
|
|
1657
|
+
return make.err(onError(error));
|
|
1658
|
+
}
|
|
1659
|
+
};
|
|
1660
|
+
})(from = Result4.from || (Result4.from = {}));
|
|
1661
|
+
Result4.recover = (fallback) => (data) => is.ok(data) ? data : fallback(data.error);
|
|
1662
|
+
Result4.recoverUnless = (isBlocked, fallback) => (data) => is.err(data) && !isBlocked(data.error) ? fallback() : data;
|
|
1663
|
+
let to;
|
|
1664
|
+
((to2) => {
|
|
1665
|
+
to2.Maybe = (data) => is.ok(data) ? Maybe.make.some(data.value) : Maybe.make.none();
|
|
1666
|
+
})(to = Result4.to || (Result4.to = {}));
|
|
1667
|
+
Result4.ap = (arg) => (data) => is.ok(data) && is.ok(arg) ? make.ok(data.value(arg.value)) : is.err(data) ? data : arg;
|
|
1598
1668
|
Result4.bindTo = (key) => (data) => (0, Result4.map)((a) => ({ [key]: a }))(data);
|
|
1599
1669
|
Result4.bind = (key, f) => (data) => (0, Result4.chain)(
|
|
1600
1670
|
(a) => (0, Result4.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
@@ -1604,13 +1674,13 @@ var Result;
|
|
|
1604
1674
|
for (const key in fields) {
|
|
1605
1675
|
if (Object.hasOwn(fields, key)) {
|
|
1606
1676
|
const res = fields[key];
|
|
1607
|
-
if (
|
|
1677
|
+
if (is.err(res)) {
|
|
1608
1678
|
return res;
|
|
1609
1679
|
}
|
|
1610
1680
|
result[key] = res.value;
|
|
1611
1681
|
}
|
|
1612
1682
|
}
|
|
1613
|
-
return
|
|
1683
|
+
return make.ok(result);
|
|
1614
1684
|
};
|
|
1615
1685
|
})(Result || (Result = {}));
|
|
1616
1686
|
|
|
@@ -1652,17 +1722,24 @@ var State;
|
|
|
1652
1722
|
// src/Core/TaskMaybe.ts
|
|
1653
1723
|
var TaskMaybe;
|
|
1654
1724
|
((TaskMaybe2) => {
|
|
1655
|
-
TaskMaybe2.some = (value) => Task.resolve(Maybe.some(value));
|
|
1656
|
-
TaskMaybe2.none = () => Task.resolve(Maybe.none());
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1725
|
+
TaskMaybe2.some = (value) => Task.resolve(Maybe.make.some(value));
|
|
1726
|
+
TaskMaybe2.none = () => Task.resolve(Maybe.make.none());
|
|
1727
|
+
let from;
|
|
1728
|
+
((from2) => {
|
|
1729
|
+
from2.Maybe = (option) => Task.resolve(option);
|
|
1730
|
+
from2.nullable = (value) => Task.resolve(Maybe.from.nullable(value));
|
|
1731
|
+
from2.Result = (result) => Task.resolve(Result.to.Maybe(result));
|
|
1732
|
+
from2.Task = (task) => Task.map(Maybe.make.some)(task);
|
|
1733
|
+
})(from = TaskMaybe2.from || (TaskMaybe2.from = {}));
|
|
1734
|
+
TaskMaybe2.tryCatch = (f) => Task.from.Promise(
|
|
1735
|
+
(signal) => Promise.resolve(f(signal)).then(Maybe.make.some).catch(() => Maybe.make.none())
|
|
1736
|
+
);
|
|
1662
1737
|
TaskMaybe2.map = (f) => (data) => Task.map(Maybe.map(f))(data);
|
|
1663
|
-
TaskMaybe2.chain = (f) => (data) => Task.chain(
|
|
1664
|
-
|
|
1665
|
-
|
|
1738
|
+
TaskMaybe2.chain = (f) => (data) => Task.chain(
|
|
1739
|
+
(option) => Maybe.is.some(option) ? f(option.value) : Task.resolve(Maybe.make.none())
|
|
1740
|
+
)(data);
|
|
1741
|
+
TaskMaybe2.ap = (arg) => (data) => Task.from.Promise(
|
|
1742
|
+
(signal) => Promise.all([Deferred.to.Promise(data(signal)), Deferred.to.Promise(arg(signal))]).then(
|
|
1666
1743
|
([of_, oa]) => Maybe.ap(oa)(of_)
|
|
1667
1744
|
)
|
|
1668
1745
|
);
|
|
@@ -1671,25 +1748,30 @@ var TaskMaybe;
|
|
|
1671
1748
|
TaskMaybe2.getOrElse = (defaultValue) => (data) => Task.map(Maybe.getOrElse(defaultValue))(data);
|
|
1672
1749
|
TaskMaybe2.tap = (f) => (data) => Task.map(Maybe.tap(f))(data);
|
|
1673
1750
|
TaskMaybe2.filter = (predicate) => (data) => Task.map(Maybe.filter(predicate))(data);
|
|
1674
|
-
|
|
1751
|
+
let to;
|
|
1752
|
+
((to2) => {
|
|
1753
|
+
to2.Result = (onNone) => (data) => Task.map(Maybe.to.Result(onNone))(data);
|
|
1754
|
+
})(to = TaskMaybe2.to || (TaskMaybe2.to = {}));
|
|
1675
1755
|
TaskMaybe2.bindTo = (key) => (data) => (0, TaskMaybe2.map)((a) => ({ [key]: a }))(data);
|
|
1676
1756
|
TaskMaybe2.bind = (key, f) => (data) => (0, TaskMaybe2.chain)(
|
|
1677
1757
|
(a) => (0, TaskMaybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
1678
1758
|
)(data);
|
|
1679
|
-
TaskMaybe2.recover = (fallback) => (data) => Task.chain((maybe) => Maybe.
|
|
1680
|
-
|
|
1759
|
+
TaskMaybe2.recover = (fallback) => (data) => Task.chain((maybe) => Maybe.is.none(maybe) ? fallback() : Task.resolve(maybe))(
|
|
1760
|
+
data
|
|
1761
|
+
);
|
|
1762
|
+
TaskMaybe2.struct = (fields) => Task.from.Promise((signal) => {
|
|
1681
1763
|
const keys = Object.keys(fields);
|
|
1682
|
-
const promises = keys.map((key) => Deferred.
|
|
1764
|
+
const promises = keys.map((key) => Deferred.to.Promise(fields[key](signal)));
|
|
1683
1765
|
return Promise.all(promises).then((results) => {
|
|
1684
1766
|
const record = {};
|
|
1685
1767
|
for (let i = 0; i < keys.length; i++) {
|
|
1686
1768
|
const res = results[i];
|
|
1687
|
-
if (Maybe.
|
|
1769
|
+
if (Maybe.is.none(res)) {
|
|
1688
1770
|
return res;
|
|
1689
1771
|
}
|
|
1690
1772
|
record[keys[i]] = res.value;
|
|
1691
1773
|
}
|
|
1692
|
-
return Maybe.some(record);
|
|
1774
|
+
return Maybe.make.some(record);
|
|
1693
1775
|
});
|
|
1694
1776
|
});
|
|
1695
1777
|
})(TaskMaybe || (TaskMaybe = {}));
|
|
@@ -1697,28 +1779,35 @@ var TaskMaybe;
|
|
|
1697
1779
|
// src/Core/TaskResult.ts
|
|
1698
1780
|
var TaskResult;
|
|
1699
1781
|
((TaskResult2) => {
|
|
1700
|
-
TaskResult2.ok = (value) => Task.resolve(Result.ok(value));
|
|
1701
|
-
TaskResult2.err = (error) => Task.resolve(Result.err(error));
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1782
|
+
TaskResult2.ok = (value) => Task.resolve(Result.make.ok(value));
|
|
1783
|
+
TaskResult2.err = (error) => Task.resolve(Result.make.err(error));
|
|
1784
|
+
let from;
|
|
1785
|
+
((from2) => {
|
|
1786
|
+
from2.nullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Result.make.err(onNull()) : Result.make.ok(value));
|
|
1787
|
+
from2.Maybe = (onNone) => (maybe) => Task.resolve(Maybe.is.none(maybe) ? Result.make.err(onNone()) : Result.make.ok(maybe.value));
|
|
1788
|
+
from2.Result = (result) => Task.resolve(result);
|
|
1789
|
+
from2.throwable = (f, onError) => (...args) => Task.from.Promise(
|
|
1790
|
+
() => f(...args).then(Result.make.ok).catch((error) => Result.make.err(onError(error)))
|
|
1791
|
+
);
|
|
1792
|
+
})(from = TaskResult2.from || (TaskResult2.from = {}));
|
|
1793
|
+
TaskResult2.tryCatch = (f, onError) => Task.from.Promise(
|
|
1794
|
+
(signal) => Promise.resolve(f(signal)).then(Result.make.ok).catch((error) => Result.make.err(onError(error)))
|
|
1795
|
+
);
|
|
1707
1796
|
TaskResult2.map = (f) => (data) => Task.map(Result.map(f))(data);
|
|
1708
1797
|
TaskResult2.mapError = (f) => (data) => Task.map(Result.mapError(f))(data);
|
|
1709
|
-
TaskResult2.chain = (f) => (data) => Task.chain(
|
|
1710
|
-
|
|
1711
|
-
);
|
|
1798
|
+
TaskResult2.chain = (f) => (data) => Task.chain(
|
|
1799
|
+
(result) => Result.is.ok(result) ? f(result.value) : Task.resolve(Result.make.err(result.error))
|
|
1800
|
+
)(data);
|
|
1712
1801
|
TaskResult2.fold = (onErr, onOk) => (data) => Task.map(Result.fold(onErr, onOk))(data);
|
|
1713
1802
|
TaskResult2.match = (cases) => (data) => Task.map(Result.match(cases))(data);
|
|
1714
1803
|
TaskResult2.recover = (fallback) => (data) => Task.chain(
|
|
1715
|
-
(result) => Result.
|
|
1804
|
+
(result) => Result.is.err(result) ? fallback(result.error) : Task.resolve(result)
|
|
1716
1805
|
)(data);
|
|
1717
1806
|
TaskResult2.getOrElse = (defaultValue) => (data) => Task.map(Result.getOrElse(defaultValue))(data);
|
|
1718
1807
|
TaskResult2.tap = (f) => (data) => Task.map(Result.tap(f))(data);
|
|
1719
1808
|
TaskResult2.tapError = (f) => (data) => Task.map(Result.tapError(f))(data);
|
|
1720
|
-
TaskResult2.ap = (arg) => (data) => Task.from(
|
|
1721
|
-
(signal) => Promise.all([Deferred.
|
|
1809
|
+
TaskResult2.ap = (arg) => (data) => Task.from.Promise(
|
|
1810
|
+
(signal) => Promise.all([Deferred.to.Promise(data(signal)), Deferred.to.Promise(arg(signal))]).then(
|
|
1722
1811
|
([of_, oa]) => Result.ap(oa)(of_)
|
|
1723
1812
|
)
|
|
1724
1813
|
);
|
|
@@ -1727,19 +1816,19 @@ var TaskResult;
|
|
|
1727
1816
|
TaskResult2.bind = (key, f) => (data) => (0, TaskResult2.chain)(
|
|
1728
1817
|
(a) => (0, TaskResult2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
1729
1818
|
)(data);
|
|
1730
|
-
TaskResult2.struct = (fields) => Task.from((signal) => {
|
|
1819
|
+
TaskResult2.struct = (fields) => Task.from.Promise((signal) => {
|
|
1731
1820
|
const keys = Object.keys(fields);
|
|
1732
|
-
const promises = keys.map((key) => Deferred.
|
|
1821
|
+
const promises = keys.map((key) => Deferred.to.Promise(fields[key](signal)));
|
|
1733
1822
|
return Promise.all(promises).then((results) => {
|
|
1734
1823
|
const record = {};
|
|
1735
1824
|
for (let i = 0; i < keys.length; i++) {
|
|
1736
1825
|
const res = results[i];
|
|
1737
|
-
if (Result.
|
|
1826
|
+
if (Result.is.err(res)) {
|
|
1738
1827
|
return res;
|
|
1739
1828
|
}
|
|
1740
1829
|
record[keys[i]] = res.value;
|
|
1741
1830
|
}
|
|
1742
|
-
return Result.ok(record);
|
|
1831
|
+
return Result.make.ok(record);
|
|
1743
1832
|
});
|
|
1744
1833
|
});
|
|
1745
1834
|
})(TaskResult || (TaskResult = {}));
|
|
@@ -1750,19 +1839,28 @@ var isNonEmptyArr = (list) => list.length > 0;
|
|
|
1750
1839
|
// src/Core/TaskValidation.ts
|
|
1751
1840
|
var TaskValidation;
|
|
1752
1841
|
((TaskValidation2) => {
|
|
1753
|
-
TaskValidation2.passed = (value) => Task.resolve(Validation.passed(value));
|
|
1754
|
-
TaskValidation2.failed = (error) => Task.resolve(Validation.failed(error));
|
|
1755
|
-
TaskValidation2.failedAll = (errors) => Task.resolve(Validation.failedAll(errors));
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1842
|
+
TaskValidation2.passed = (value) => Task.resolve(Validation.make.passed(value));
|
|
1843
|
+
TaskValidation2.failed = (error) => Task.resolve(Validation.make.failed(error));
|
|
1844
|
+
TaskValidation2.failedAll = (errors) => Task.resolve(Validation.make.failedAll(errors));
|
|
1845
|
+
let from;
|
|
1846
|
+
((from2) => {
|
|
1847
|
+
from2.Validation = (validation) => Task.resolve(validation);
|
|
1848
|
+
from2.nullable = (onNull) => (value) => Task.resolve(
|
|
1849
|
+
value === null || value === void 0 ? Validation.make.failed(onNull()) : Validation.make.passed(value)
|
|
1850
|
+
);
|
|
1851
|
+
from2.Maybe = (onNone) => (maybe) => Task.resolve(
|
|
1852
|
+
Maybe.is.none(maybe) ? Validation.make.failed(onNone()) : Validation.make.passed(maybe.value)
|
|
1853
|
+
);
|
|
1854
|
+
from2.Result = (result) => Task.resolve(Validation.from.Result(result));
|
|
1855
|
+
})(from = TaskValidation2.from || (TaskValidation2.from = {}));
|
|
1856
|
+
TaskValidation2.tryCatch = (f, onError) => Task.from.Promise(
|
|
1857
|
+
(signal) => Promise.resolve(f(signal)).then(Validation.make.passed).catch(
|
|
1858
|
+
(error) => Validation.make.failed(onError(error))
|
|
1859
|
+
)
|
|
1762
1860
|
);
|
|
1763
1861
|
TaskValidation2.map = (f) => (data) => Task.map(Validation.map(f))(data);
|
|
1764
|
-
TaskValidation2.ap = (arg) => (data) => Task.from(
|
|
1765
|
-
(signal) => Promise.all([Deferred.
|
|
1862
|
+
TaskValidation2.ap = (arg) => (data) => Task.from.Promise(
|
|
1863
|
+
(signal) => Promise.all([Deferred.to.Promise(data(signal)), Deferred.to.Promise(arg(signal))]).then(
|
|
1766
1864
|
([vf, va]) => Validation.ap(va)(vf)
|
|
1767
1865
|
)
|
|
1768
1866
|
);
|
|
@@ -1771,61 +1869,64 @@ var TaskValidation;
|
|
|
1771
1869
|
TaskValidation2.getOrElse = (defaultValue) => (data) => Task.map(Validation.getOrElse(defaultValue))(data);
|
|
1772
1870
|
TaskValidation2.tap = (f) => (data) => Task.map(Validation.tap(f))(data);
|
|
1773
1871
|
TaskValidation2.recover = (fallback) => (data) => Task.chain(
|
|
1774
|
-
(validation) => Validation.
|
|
1872
|
+
(validation) => Validation.is.passed(validation) ? Task.resolve(validation) : fallback(validation.errors)
|
|
1775
1873
|
)(data);
|
|
1776
|
-
TaskValidation2.product = (first, second) => Task.from(
|
|
1777
|
-
(signal) => Promise.all([Deferred.
|
|
1874
|
+
TaskValidation2.product = (first, second) => Task.from.Promise(
|
|
1875
|
+
(signal) => Promise.all([Deferred.to.Promise(first(signal)), Deferred.to.Promise(second(signal))]).then(
|
|
1778
1876
|
([va, vb]) => Validation.product(va, vb)
|
|
1779
1877
|
)
|
|
1780
1878
|
);
|
|
1781
|
-
TaskValidation2.productAll = (data) => Task.from(
|
|
1782
|
-
(signal) => Promise.all(data.map((t) => Deferred.
|
|
1879
|
+
TaskValidation2.productAll = (data) => Task.from.Promise(
|
|
1880
|
+
(signal) => Promise.all(data.map((t) => Deferred.to.Promise(t(signal)))).then((results) => {
|
|
1783
1881
|
const [first, ...rest] = results;
|
|
1784
1882
|
return Validation.productAll([first, ...rest]);
|
|
1785
1883
|
})
|
|
1786
1884
|
);
|
|
1787
1885
|
TaskValidation2.mapError = (f) => (data) => Task.map(Validation.mapError(f))(data);
|
|
1788
1886
|
TaskValidation2.tapError = (f) => (data) => Task.map(Validation.tapError(f))(data);
|
|
1789
|
-
TaskValidation2.struct = (fields) => Task.from((signal) => {
|
|
1887
|
+
TaskValidation2.struct = (fields) => Task.from.Promise((signal) => {
|
|
1790
1888
|
const keys = Object.keys(fields);
|
|
1791
|
-
const promises = keys.map((key) => Deferred.
|
|
1889
|
+
const promises = keys.map((key) => Deferred.to.Promise(fields[key](signal)));
|
|
1792
1890
|
return Promise.all(promises).then((results) => {
|
|
1793
1891
|
const record = {};
|
|
1794
1892
|
const errors = [];
|
|
1795
1893
|
for (let i = 0; i < keys.length; i++) {
|
|
1796
1894
|
const res = results[i];
|
|
1797
|
-
if (Validation.
|
|
1895
|
+
if (Validation.is.passed(res)) {
|
|
1798
1896
|
record[keys[i]] = res.value;
|
|
1799
1897
|
} else {
|
|
1800
1898
|
errors.push(...res.errors);
|
|
1801
1899
|
}
|
|
1802
1900
|
}
|
|
1803
|
-
return isNonEmptyArr(errors) ? Validation.failedAll(errors) : Validation.passed(record);
|
|
1901
|
+
return isNonEmptyArr(errors) ? Validation.make.failedAll(errors) : Validation.make.passed(record);
|
|
1804
1902
|
});
|
|
1805
1903
|
});
|
|
1806
1904
|
})(TaskValidation || (TaskValidation = {}));
|
|
1807
1905
|
|
|
1808
1906
|
// src/Core/Task.ts
|
|
1809
|
-
var toPromise = (task, signal) => Deferred.
|
|
1810
|
-
var getMs2 = (duration) => Duration.
|
|
1907
|
+
var toPromise = (task, signal) => Deferred.to.Promise(task(signal));
|
|
1908
|
+
var getMs2 = (duration) => Duration.to.milliseconds(duration);
|
|
1811
1909
|
var Task;
|
|
1812
1910
|
((Task2) => {
|
|
1813
|
-
Task2.resolve = (value) => () => Deferred.
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
Task2.
|
|
1911
|
+
Task2.resolve = (value) => () => Deferred.from.Promise(globalThis.Promise.resolve(value));
|
|
1912
|
+
let from;
|
|
1913
|
+
((from2) => {
|
|
1914
|
+
from2.Promise = (f) => (signal) => Deferred.from.Promise(f(signal));
|
|
1915
|
+
from2.sync = (f) => () => Deferred.from.Promise(globalThis.Promise.resolve(f()));
|
|
1916
|
+
})(from = Task2.from || (Task2.from = {}));
|
|
1917
|
+
Task2.map = (f) => (data) => from.Promise((signal) => toPromise(data, signal).then(f));
|
|
1918
|
+
Task2.chain = (f) => (data) => from.Promise((signal) => toPromise(data, signal).then((a) => toPromise(f(a), signal)));
|
|
1919
|
+
Task2.ap = (arg) => (data) => from.Promise((signal) => Promise.all([toPromise(data, signal), toPromise(arg, signal)]).then(([f, a]) => f(a)));
|
|
1920
|
+
Task2.tap = (f) => (data) => from.Promise(
|
|
1820
1921
|
(signal) => toPromise(data, signal).then((a) => {
|
|
1821
1922
|
f(a);
|
|
1822
1923
|
return a;
|
|
1823
1924
|
})
|
|
1824
1925
|
);
|
|
1825
|
-
Task2.all = (tasks) =>
|
|
1926
|
+
Task2.all = (tasks) => from.Promise(
|
|
1826
1927
|
(signal) => Promise.all(tasks.map((t) => toPromise(t, signal)))
|
|
1827
1928
|
);
|
|
1828
|
-
Task2.delay = (duration) => (data) =>
|
|
1929
|
+
Task2.delay = (duration) => (data) => from.Promise(
|
|
1829
1930
|
(signal) => new Promise((res) => {
|
|
1830
1931
|
let timerId;
|
|
1831
1932
|
const onAbort = () => {
|
|
@@ -1844,7 +1945,7 @@ var Task;
|
|
|
1844
1945
|
}, getMs2(duration));
|
|
1845
1946
|
})
|
|
1846
1947
|
);
|
|
1847
|
-
Task2.repeat = (options) => (task) =>
|
|
1948
|
+
Task2.repeat = (options) => (task) => from.Promise((signal) => {
|
|
1848
1949
|
const { times, delay: delayDuration } = options;
|
|
1849
1950
|
if (times <= 0) {
|
|
1850
1951
|
return Promise.resolve([]);
|
|
@@ -1878,7 +1979,7 @@ var Task;
|
|
|
1878
1979
|
};
|
|
1879
1980
|
return run2(times);
|
|
1880
1981
|
});
|
|
1881
|
-
Task2.repeatUntil = (options) => (task) =>
|
|
1982
|
+
Task2.repeatUntil = (options) => (task) => from.Promise((signal) => {
|
|
1882
1983
|
const { when: predicate, delay: delayDuration, maxAttempts } = options;
|
|
1883
1984
|
const wait = () => new Promise((r) => {
|
|
1884
1985
|
let timerId;
|
|
@@ -1915,10 +2016,10 @@ var Task;
|
|
|
1915
2016
|
});
|
|
1916
2017
|
Task2.race = (tasks) => {
|
|
1917
2018
|
if (tasks.length === 0) {
|
|
1918
|
-
return () => Deferred.
|
|
2019
|
+
return () => Deferred.from.Promise(new Promise(() => {
|
|
1919
2020
|
}));
|
|
1920
2021
|
}
|
|
1921
|
-
return
|
|
2022
|
+
return from.Promise((outerSignal) => {
|
|
1922
2023
|
const controllers = tasks.map(() => new AbortController());
|
|
1923
2024
|
const onOuterAbort = () => {
|
|
1924
2025
|
for (const ctrl of controllers) {
|
|
@@ -1947,8 +2048,8 @@ var Task;
|
|
|
1947
2048
|
return Promise.race(promises);
|
|
1948
2049
|
});
|
|
1949
2050
|
};
|
|
1950
|
-
Task2.sequence = (tasks) =>
|
|
1951
|
-
Task2.sequential = (tasks) =>
|
|
2051
|
+
Task2.sequence = (tasks) => from.Promise((signal) => Promise.all(tasks.map((t) => toPromise(t, signal))));
|
|
2052
|
+
Task2.sequential = (tasks) => from.Promise(async (signal) => {
|
|
1952
2053
|
const results = [];
|
|
1953
2054
|
for (const task of tasks) {
|
|
1954
2055
|
if (signal?.aborted) {
|
|
@@ -1958,7 +2059,7 @@ var Task;
|
|
|
1958
2059
|
}
|
|
1959
2060
|
return results;
|
|
1960
2061
|
});
|
|
1961
|
-
Task2.timeout = (duration, onTimeout) => (task) =>
|
|
2062
|
+
Task2.timeout = (duration, onTimeout) => (task) => from.Promise((outerSignal) => {
|
|
1962
2063
|
const controller = new AbortController();
|
|
1963
2064
|
let timerId;
|
|
1964
2065
|
let cleanUp = () => {
|
|
@@ -1981,13 +2082,13 @@ var Task;
|
|
|
1981
2082
|
return Promise.race([
|
|
1982
2083
|
toPromise(task, controller.signal).then((a) => {
|
|
1983
2084
|
cleanUp();
|
|
1984
|
-
return Result.ok(a);
|
|
2085
|
+
return Result.make.ok(a);
|
|
1985
2086
|
}),
|
|
1986
2087
|
new Promise((res) => {
|
|
1987
2088
|
timerId = setTimeout(() => {
|
|
1988
2089
|
controller.abort();
|
|
1989
2090
|
cleanUp();
|
|
1990
|
-
res(Result.err(onTimeout()));
|
|
2091
|
+
res(Result.make.err(onTimeout()));
|
|
1991
2092
|
}, getMs2(duration));
|
|
1992
2093
|
})
|
|
1993
2094
|
]);
|
|
@@ -2006,7 +2107,7 @@ var Task;
|
|
|
2006
2107
|
outerSignal.addEventListener("abort", () => controller.abort(outerSignal.reason), { once: true });
|
|
2007
2108
|
}
|
|
2008
2109
|
}
|
|
2009
|
-
return Deferred.
|
|
2110
|
+
return Deferred.from.Promise(factory(controller.signal));
|
|
2010
2111
|
};
|
|
2011
2112
|
return { task, abort };
|
|
2012
2113
|
};
|
|
@@ -2023,67 +2124,73 @@ var Task;
|
|
|
2023
2124
|
// src/Core/These.ts
|
|
2024
2125
|
var These;
|
|
2025
2126
|
((These2) => {
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
These2.
|
|
2127
|
+
let make;
|
|
2128
|
+
((make2) => {
|
|
2129
|
+
make2.first = (value) => ({ kind: "First", first: value });
|
|
2130
|
+
make2.second = (value) => ({ kind: "Second", second: value });
|
|
2131
|
+
make2.both = (f, s) => ({ kind: "Both", first: f, second: s });
|
|
2132
|
+
})(make = These2.make || (These2.make = {}));
|
|
2133
|
+
let is;
|
|
2134
|
+
((is2) => {
|
|
2135
|
+
is2.first = (data) => data.kind === "First";
|
|
2136
|
+
is2.second = (data) => data.kind === "Second";
|
|
2137
|
+
is2.both = (data) => data.kind === "Both";
|
|
2138
|
+
})(is = These2.is || (These2.is = {}));
|
|
2032
2139
|
These2.hasFirst = (data) => data.kind === "First" || data.kind === "Both";
|
|
2033
2140
|
These2.hasSecond = (data) => data.kind === "Second" || data.kind === "Both";
|
|
2034
2141
|
These2.mapFirst = (f) => (data) => {
|
|
2035
|
-
if (
|
|
2142
|
+
if (is.second(data)) {
|
|
2036
2143
|
return data;
|
|
2037
2144
|
}
|
|
2038
|
-
if (
|
|
2039
|
-
return
|
|
2145
|
+
if (is.first(data)) {
|
|
2146
|
+
return make.first(f(data.first));
|
|
2040
2147
|
}
|
|
2041
|
-
return
|
|
2148
|
+
return make.both(f(data.first), data.second);
|
|
2042
2149
|
};
|
|
2043
2150
|
These2.mapSecond = (f) => (data) => {
|
|
2044
|
-
if (
|
|
2151
|
+
if (is.first(data)) {
|
|
2045
2152
|
return data;
|
|
2046
2153
|
}
|
|
2047
|
-
if (
|
|
2048
|
-
return
|
|
2154
|
+
if (is.second(data)) {
|
|
2155
|
+
return make.second(f(data.second));
|
|
2049
2156
|
}
|
|
2050
|
-
return
|
|
2157
|
+
return make.both(data.first, f(data.second));
|
|
2051
2158
|
};
|
|
2052
2159
|
These2.mapBoth = (onFirst, onSecond) => (data) => {
|
|
2053
|
-
if (
|
|
2054
|
-
return
|
|
2160
|
+
if (is.second(data)) {
|
|
2161
|
+
return make.second(onSecond(data.second));
|
|
2055
2162
|
}
|
|
2056
|
-
if (
|
|
2057
|
-
return
|
|
2163
|
+
if (is.first(data)) {
|
|
2164
|
+
return make.first(onFirst(data.first));
|
|
2058
2165
|
}
|
|
2059
|
-
return
|
|
2166
|
+
return make.both(onFirst(data.first), onSecond(data.second));
|
|
2060
2167
|
};
|
|
2061
2168
|
These2.chainFirst = (f) => (data) => {
|
|
2062
|
-
if (
|
|
2169
|
+
if (is.second(data)) {
|
|
2063
2170
|
return data;
|
|
2064
2171
|
}
|
|
2065
2172
|
return f(data.first);
|
|
2066
2173
|
};
|
|
2067
2174
|
These2.chainSecond = (f) => (data) => {
|
|
2068
|
-
if (
|
|
2175
|
+
if (is.first(data)) {
|
|
2069
2176
|
return data;
|
|
2070
2177
|
}
|
|
2071
2178
|
return f(data.second);
|
|
2072
2179
|
};
|
|
2073
2180
|
These2.fold = (onFirst, onSecond, onBoth) => (data) => {
|
|
2074
|
-
if (
|
|
2181
|
+
if (is.second(data)) {
|
|
2075
2182
|
return onSecond(data.second);
|
|
2076
2183
|
}
|
|
2077
|
-
if (
|
|
2184
|
+
if (is.first(data)) {
|
|
2078
2185
|
return onFirst(data.first);
|
|
2079
2186
|
}
|
|
2080
2187
|
return onBoth(data.first, data.second);
|
|
2081
2188
|
};
|
|
2082
2189
|
These2.match = (cases) => (data) => {
|
|
2083
|
-
if (
|
|
2190
|
+
if (is.second(data)) {
|
|
2084
2191
|
return cases.second(data.second);
|
|
2085
2192
|
}
|
|
2086
|
-
if (
|
|
2193
|
+
if (is.first(data)) {
|
|
2087
2194
|
return cases.first(data.first);
|
|
2088
2195
|
}
|
|
2089
2196
|
return cases.both(data.first, data.second);
|
|
@@ -2097,20 +2204,24 @@ var These;
|
|
|
2097
2204
|
return data;
|
|
2098
2205
|
};
|
|
2099
2206
|
These2.swap = (data) => {
|
|
2100
|
-
if (
|
|
2101
|
-
return
|
|
2207
|
+
if (is.second(data)) {
|
|
2208
|
+
return make.first(data.second);
|
|
2102
2209
|
}
|
|
2103
|
-
if (
|
|
2104
|
-
return
|
|
2210
|
+
if (is.first(data)) {
|
|
2211
|
+
return make.second(data.first);
|
|
2105
2212
|
}
|
|
2106
|
-
return
|
|
2213
|
+
return make.both(data.second, data.first);
|
|
2107
2214
|
};
|
|
2108
2215
|
})(These || (These = {}));
|
|
2109
2216
|
|
|
2110
2217
|
// src/Core/Tuple.ts
|
|
2111
2218
|
var Tuple;
|
|
2112
2219
|
((Tuple2) => {
|
|
2113
|
-
|
|
2220
|
+
let from;
|
|
2221
|
+
((from2) => {
|
|
2222
|
+
from2.pair = (first2, second2) => [first2, second2];
|
|
2223
|
+
from2.array = (arr) => arr;
|
|
2224
|
+
})(from = Tuple2.from || (Tuple2.from = {}));
|
|
2114
2225
|
Tuple2.first = (tuple) => tuple[0];
|
|
2115
2226
|
Tuple2.second = (tuple) => tuple[1];
|
|
2116
2227
|
Tuple2.mapFirst = (f) => (tuple) => [f(tuple[0]), tuple[1]];
|
|
@@ -2121,7 +2232,10 @@ var Tuple;
|
|
|
2121
2232
|
];
|
|
2122
2233
|
Tuple2.fold = (f) => (tuple) => f(tuple[0], tuple[1]);
|
|
2123
2234
|
Tuple2.swap = (tuple) => [tuple[1], tuple[0]];
|
|
2124
|
-
|
|
2235
|
+
let to;
|
|
2236
|
+
((to2) => {
|
|
2237
|
+
to2.Array = (tuple) => [...tuple];
|
|
2238
|
+
})(to = Tuple2.to || (Tuple2.to = {}));
|
|
2125
2239
|
Tuple2.tap = (f) => (tuple) => {
|
|
2126
2240
|
f(tuple[0], tuple[1]);
|
|
2127
2241
|
return tuple;
|
|
@@ -2131,59 +2245,71 @@ var Tuple;
|
|
|
2131
2245
|
// src/Core/Validation.ts
|
|
2132
2246
|
var Validation;
|
|
2133
2247
|
((Validation2) => {
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2248
|
+
let make;
|
|
2249
|
+
((make2) => {
|
|
2250
|
+
make2.passed = (value) => ({ kind: "Passed", value });
|
|
2251
|
+
make2.failed = (error) => ({ kind: "Failed", errors: [error] });
|
|
2252
|
+
make2.failedAll = (errors) => ({ kind: "Failed", errors });
|
|
2253
|
+
})(make = Validation2.make || (Validation2.make = {}));
|
|
2254
|
+
let is;
|
|
2255
|
+
((is2) => {
|
|
2256
|
+
is2.passed = (data) => data.kind === "Passed";
|
|
2257
|
+
is2.failed = (data) => data.kind === "Failed";
|
|
2258
|
+
})(is = Validation2.is || (Validation2.is = {}));
|
|
2259
|
+
let from;
|
|
2260
|
+
((from2) => {
|
|
2261
|
+
from2.Predicate = (pred, onFalse) => (a) => pred(a) ? make.passed(a) : make.failed(onFalse(a));
|
|
2262
|
+
from2.nullable = (onNull) => (value) => value === null || value === void 0 ? make.failed(onNull()) : make.passed(value);
|
|
2263
|
+
from2.Maybe = (onNone) => (maybe) => Maybe.is.none(maybe) ? make.failed(onNone()) : make.passed(maybe.value);
|
|
2264
|
+
from2.Result = (data) => data.kind === "Ok" ? make.passed(data.value) : make.failed(data.error);
|
|
2265
|
+
})(from = Validation2.from || (Validation2.from = {}));
|
|
2266
|
+
Validation2.map = (f) => (data) => is.passed(data) ? make.passed(f(data.value)) : data;
|
|
2267
|
+
Validation2.mapError = (f) => (data) => is.failed(data) ? make.failedAll(data.errors.map(f)) : data;
|
|
2144
2268
|
Validation2.ap = (arg) => (data) => {
|
|
2145
|
-
if (
|
|
2146
|
-
return
|
|
2269
|
+
if (is.passed(data)) {
|
|
2270
|
+
return is.passed(arg) ? make.passed(data.value(arg.value)) : make.failedAll(arg.errors);
|
|
2147
2271
|
}
|
|
2148
|
-
return
|
|
2272
|
+
return is.passed(arg) ? make.failedAll(data.errors) : make.failedAll([...data.errors, ...arg.errors]);
|
|
2149
2273
|
};
|
|
2150
|
-
Validation2.fold = (onFailed, onPassed) => (data) =>
|
|
2151
|
-
Validation2.match = (cases) => (data) =>
|
|
2152
|
-
Validation2.getOrElse = (defaultValue) => (data) =>
|
|
2274
|
+
Validation2.fold = (onFailed, onPassed) => (data) => is.passed(data) ? onPassed(data.value) : onFailed(data.errors);
|
|
2275
|
+
Validation2.match = (cases) => (data) => is.passed(data) ? cases.passed(data.value) : cases.failed(data.errors);
|
|
2276
|
+
Validation2.getOrElse = (defaultValue) => (data) => is.passed(data) ? data.value : defaultValue();
|
|
2153
2277
|
Validation2.tap = (f) => (data) => {
|
|
2154
|
-
if (
|
|
2278
|
+
if (is.passed(data)) {
|
|
2155
2279
|
f(data.value);
|
|
2156
2280
|
}
|
|
2157
2281
|
return data;
|
|
2158
2282
|
};
|
|
2159
2283
|
Validation2.tapError = (f) => (data) => {
|
|
2160
|
-
if (
|
|
2284
|
+
if (is.failed(data)) {
|
|
2161
2285
|
f(data.errors);
|
|
2162
2286
|
}
|
|
2163
2287
|
return data;
|
|
2164
2288
|
};
|
|
2165
|
-
Validation2.recover = (fallback) => (data) =>
|
|
2166
|
-
Validation2.recoverUnless = (isBlocked, fallback) => (data) =>
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
2289
|
+
Validation2.recover = (fallback) => (data) => is.passed(data) ? data : fallback(data.errors);
|
|
2290
|
+
Validation2.recoverUnless = (isBlocked, fallback) => (data) => is.failed(data) && !data.errors.some(isBlocked) ? fallback() : data;
|
|
2291
|
+
let to;
|
|
2292
|
+
((to2) => {
|
|
2293
|
+
to2.Result = (data) => is.passed(data) ? Result.make.ok(data.value) : Result.make.err(data.errors);
|
|
2294
|
+
to2.Maybe = (data) => is.passed(data) ? Maybe.make.some(data.value) : Maybe.make.none();
|
|
2295
|
+
})(to = Validation2.to || (Validation2.to = {}));
|
|
2170
2296
|
Validation2.product = (first, second) => {
|
|
2171
|
-
if (
|
|
2172
|
-
return
|
|
2297
|
+
if (is.passed(first)) {
|
|
2298
|
+
return is.passed(second) ? make.passed([first.value, second.value]) : make.failedAll(second.errors);
|
|
2173
2299
|
}
|
|
2174
|
-
return
|
|
2300
|
+
return is.passed(second) ? make.failedAll(first.errors) : make.failedAll([...first.errors, ...second.errors]);
|
|
2175
2301
|
};
|
|
2176
2302
|
Validation2.productAll = (data) => {
|
|
2177
2303
|
const values = [];
|
|
2178
2304
|
const errors = [];
|
|
2179
2305
|
for (const v of data) {
|
|
2180
|
-
if (
|
|
2306
|
+
if (is.passed(v)) {
|
|
2181
2307
|
values.push(v.value);
|
|
2182
2308
|
} else {
|
|
2183
2309
|
errors.push(...v.errors);
|
|
2184
2310
|
}
|
|
2185
2311
|
}
|
|
2186
|
-
return isNonEmptyArr(errors) ?
|
|
2312
|
+
return isNonEmptyArr(errors) ? make.failedAll(errors) : make.passed(values);
|
|
2187
2313
|
};
|
|
2188
2314
|
Validation2.struct = (fields) => {
|
|
2189
2315
|
const record = {};
|
|
@@ -2191,14 +2317,14 @@ var Validation;
|
|
|
2191
2317
|
for (const key in fields) {
|
|
2192
2318
|
if (Object.hasOwn(fields, key)) {
|
|
2193
2319
|
const val = fields[key];
|
|
2194
|
-
if (
|
|
2320
|
+
if (is.passed(val)) {
|
|
2195
2321
|
record[key] = val.value;
|
|
2196
2322
|
} else {
|
|
2197
2323
|
errors.push(...val.errors);
|
|
2198
2324
|
}
|
|
2199
2325
|
}
|
|
2200
2326
|
}
|
|
2201
|
-
return isNonEmptyArr(errors) ?
|
|
2327
|
+
return isNonEmptyArr(errors) ? make.failedAll(errors) : make.passed(record);
|
|
2202
2328
|
};
|
|
2203
2329
|
})(Validation || (Validation = {}));
|
|
2204
2330
|
// Annotate the CommonJS export names for ESM import in node:
|