@nlozgachev/pipelined 0.44.0 → 0.45.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 +7 -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-LKTOK5IT.mjs → chunk-2LKJF45J.mjs} +160 -68
- package/dist/{chunk-X6XQX3OZ.mjs → chunk-KOYYDQH4.mjs} +2 -2
- package/dist/{chunk-ND476266.mjs → chunk-VSU36S2K.mjs} +432 -309
- 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 +599 -381
- 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 +466 -216
- package/dist/utils.d.ts +466 -216
- package/dist/utils.js +406 -238
- package/dist/utils.mjs +3 -3
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -419,11 +419,14 @@ var Duration;
|
|
|
419
419
|
Duration2.minutes = (m) => wrap(m * 60 * 1e3);
|
|
420
420
|
Duration2.hours = (h) => wrap(h * 60 * 60 * 1e3);
|
|
421
421
|
Duration2.days = (d) => wrap(d * 24 * 60 * 60 * 1e3);
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
422
|
+
let to;
|
|
423
|
+
((to2) => {
|
|
424
|
+
to2.milliseconds = (d) => Brand.unwrap(d);
|
|
425
|
+
to2.seconds = (d) => Brand.unwrap(d) / 1e3;
|
|
426
|
+
to2.minutes = (d) => Brand.unwrap(d) / (60 * 1e3);
|
|
427
|
+
to2.hours = (d) => Brand.unwrap(d) / (60 * 60 * 1e3);
|
|
428
|
+
to2.days = (d) => Brand.unwrap(d) / (24 * 60 * 60 * 1e3);
|
|
429
|
+
})(to = Duration2.to || (Duration2.to = {}));
|
|
427
430
|
Duration2.add = (other) => (self) => wrap(Brand.unwrap(self) + Brand.unwrap(other));
|
|
428
431
|
Duration2.subtract = (other) => (self) => wrap(Brand.unwrap(self) - Brand.unwrap(other));
|
|
429
432
|
})(Duration || (Duration = {}));
|
|
@@ -485,7 +488,7 @@ function tap(f) {
|
|
|
485
488
|
const start = performance.now();
|
|
486
489
|
const triggerFinish = (duration) => {
|
|
487
490
|
if (config.label !== void 0) {
|
|
488
|
-
console.log(`[${config.label}]: ${Duration.
|
|
491
|
+
console.log(`[${config.label}]: ${Duration.to.milliseconds(duration)}ms`);
|
|
489
492
|
} else {
|
|
490
493
|
config.onFinish(duration);
|
|
491
494
|
}
|
|
@@ -533,8 +536,8 @@ var Combinable;
|
|
|
533
536
|
Combinable2.any = { empty: false, combine: (b) => (a) => a || b };
|
|
534
537
|
Combinable2.array = () => ({ empty: [], combine: (b) => (a) => [...a, ...b] });
|
|
535
538
|
Combinable2.maybe = (inner) => ({
|
|
536
|
-
empty: Maybe.none(),
|
|
537
|
-
combine: (b) => (a) => Maybe.
|
|
539
|
+
empty: Maybe.make.none(),
|
|
540
|
+
combine: (b) => (a) => Maybe.is.none(a) ? b : Maybe.is.none(b) ? a : Maybe.make.some(inner.combine(b.value)(a.value))
|
|
538
541
|
});
|
|
539
542
|
Combinable2.fold = (c) => (data) => data.reduce((acc, x) => c.combine(x)(acc), c.empty);
|
|
540
543
|
})(Combinable || (Combinable = {}));
|
|
@@ -542,11 +545,17 @@ var Combinable;
|
|
|
542
545
|
// src/Core/Deferred.ts
|
|
543
546
|
var Deferred;
|
|
544
547
|
((Deferred2) => {
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
548
|
+
let from;
|
|
549
|
+
((from2) => {
|
|
550
|
+
from2.Promise = (p) => (
|
|
551
|
+
// eslint-disable-next-line unicorn/no-thenable -- Deferred is intentionally thenable; it is the mechanism that makes Task awaitable
|
|
552
|
+
{ then: ((f) => p.then(f)) }
|
|
553
|
+
);
|
|
554
|
+
})(from = Deferred2.from || (Deferred2.from = {}));
|
|
555
|
+
let to;
|
|
556
|
+
((to2) => {
|
|
557
|
+
to2.Promise = (d) => new globalThis.Promise((resolve) => d.then(resolve));
|
|
558
|
+
})(to = Deferred2.to || (Deferred2.to = {}));
|
|
550
559
|
})(Deferred || (Deferred = {}));
|
|
551
560
|
|
|
552
561
|
// src/Core/Equality.ts
|
|
@@ -590,12 +599,15 @@ var Lazy;
|
|
|
590
599
|
// src/Core/Lens.ts
|
|
591
600
|
var Lens;
|
|
592
601
|
((Lens3) => {
|
|
593
|
-
|
|
594
|
-
|
|
602
|
+
let from;
|
|
603
|
+
((from2) => {
|
|
604
|
+
from2.accessors = (get2, set2) => ({ get: get2, set: set2 });
|
|
605
|
+
from2.property = () => (key) => (0, from2.accessors)((s) => s[key], (a) => (s) => ({ ...s, [key]: a }));
|
|
606
|
+
})(from = Lens3.from || (Lens3.from = {}));
|
|
595
607
|
Lens3.get = (lens) => (s) => lens.get(s);
|
|
596
608
|
Lens3.set = (lens) => (a) => (s) => lens.set(a)(s);
|
|
597
609
|
Lens3.modify = (lens) => (f) => (s) => lens.set(f(lens.get(s)))(s);
|
|
598
|
-
Lens3.andThen = (inner) => (outer) =>
|
|
610
|
+
Lens3.andThen = (inner) => (outer) => from.accessors((s) => inner.get(outer.get(s)), (b) => (s) => outer.set(inner.set(b)(outer.get(s)))(s));
|
|
599
611
|
Lens3.andThenOptional = (inner) => (outer) => ({
|
|
600
612
|
get: (s) => inner.get(outer.get(s)),
|
|
601
613
|
set: (b) => (s) => outer.set(inner.set(b)(outer.get(s)))(s)
|
|
@@ -609,8 +621,11 @@ var Lens;
|
|
|
609
621
|
// src/Core/Logged.ts
|
|
610
622
|
var Logged;
|
|
611
623
|
((Logged2) => {
|
|
612
|
-
|
|
613
|
-
|
|
624
|
+
let from;
|
|
625
|
+
((from2) => {
|
|
626
|
+
from2.value = (val) => ({ value: val, log: [] });
|
|
627
|
+
from2.entry = (logEntry) => ({ value: void 0, log: [logEntry] });
|
|
628
|
+
})(from = Logged2.from || (Logged2.from = {}));
|
|
614
629
|
Logged2.map = (f) => (data) => ({
|
|
615
630
|
value: f(data.value),
|
|
616
631
|
log: data.log
|
|
@@ -637,47 +652,59 @@ var Logged;
|
|
|
637
652
|
// src/Core/Maybe.ts
|
|
638
653
|
var _none = { kind: "None" };
|
|
639
654
|
var Maybe;
|
|
640
|
-
((
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
655
|
+
((Maybe3) => {
|
|
656
|
+
let make;
|
|
657
|
+
((make2) => {
|
|
658
|
+
make2.some = (value) => ({ kind: "Some", value });
|
|
659
|
+
make2.none = () => _none;
|
|
660
|
+
})(make = Maybe3.make || (Maybe3.make = {}));
|
|
661
|
+
let is;
|
|
662
|
+
((is2) => {
|
|
663
|
+
is2.some = (data) => data.kind === "Some";
|
|
664
|
+
is2.none = (data) => data.kind === "None";
|
|
665
|
+
})(is = Maybe3.is || (Maybe3.is = {}));
|
|
666
|
+
let to;
|
|
667
|
+
((to2) => {
|
|
668
|
+
to2.nullable = (data) => is.some(data) ? data.value : null;
|
|
669
|
+
to2.undefined = (data) => is.some(data) ? data.value : globalThis.undefined;
|
|
670
|
+
to2.Result = (onNone) => (data) => is.some(data) ? Result.make.ok(data.value) : Result.make.err(onNone());
|
|
671
|
+
})(to = Maybe3.to || (Maybe3.to = {}));
|
|
672
|
+
let from;
|
|
673
|
+
((from2) => {
|
|
674
|
+
from2.nullable = (value) => value === null || value === void 0 ? make.none() : make.some(value);
|
|
675
|
+
from2.Predicate = (pred) => (a) => pred(a) ? make.some(a) : make.none();
|
|
676
|
+
from2.Result = (data) => Result.is.ok(data) ? make.some(data.value) : make.none();
|
|
677
|
+
})(from = Maybe3.from || (Maybe3.from = {}));
|
|
678
|
+
Maybe3.map = (f) => (data) => is.some(data) ? make.some(f(data.value)) : data;
|
|
679
|
+
Maybe3.chain = (f) => (data) => is.some(data) ? f(data.value) : data;
|
|
680
|
+
Maybe3.fold = (onNone, onSome) => (data) => is.some(data) ? onSome(data.value) : onNone();
|
|
681
|
+
Maybe3.match = (cases) => (data) => is.some(data) ? cases.some(data.value) : cases.none();
|
|
682
|
+
Maybe3.getOrElse = (defaultValue) => (data) => is.some(data) ? data.value : defaultValue();
|
|
683
|
+
Maybe3.tap = (f) => (data) => {
|
|
684
|
+
if (is.some(data)) {
|
|
658
685
|
f(data.value);
|
|
659
686
|
}
|
|
660
687
|
return data;
|
|
661
688
|
};
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
(a) => (0,
|
|
689
|
+
Maybe3.filter = (predicate) => (data) => is.some(data) ? predicate(data.value) ? data : make.none() : data;
|
|
690
|
+
Maybe3.recover = (fallback) => (data) => is.some(data) ? data : fallback();
|
|
691
|
+
Maybe3.ap = (arg) => (data) => is.some(data) && is.some(arg) ? make.some(data.value(arg.value)) : make.none();
|
|
692
|
+
Maybe3.bindTo = (key) => (data) => (0, Maybe3.map)((a) => ({ [key]: a }))(data);
|
|
693
|
+
Maybe3.bind = (key, f) => (data) => (0, Maybe3.chain)(
|
|
694
|
+
(a) => (0, Maybe3.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
668
695
|
)(data);
|
|
669
|
-
|
|
696
|
+
Maybe3.struct = (fields) => {
|
|
670
697
|
const result = {};
|
|
671
698
|
for (const key in fields) {
|
|
672
699
|
if (Object.hasOwn(fields, key)) {
|
|
673
700
|
const res = fields[key];
|
|
674
|
-
if (
|
|
701
|
+
if (is.none(res)) {
|
|
675
702
|
return res;
|
|
676
703
|
}
|
|
677
704
|
result[key] = res.value;
|
|
678
705
|
}
|
|
679
706
|
}
|
|
680
|
-
return
|
|
707
|
+
return make.some(result);
|
|
681
708
|
};
|
|
682
709
|
})(Maybe || (Maybe = {}));
|
|
683
710
|
|
|
@@ -690,7 +717,7 @@ var _idle = { kind: "Idle" };
|
|
|
690
717
|
var _pending = { kind: "Pending" };
|
|
691
718
|
var ok = (value) => ({ kind: "OpOk", value });
|
|
692
719
|
var err = (error) => ({ kind: "OpErr", error });
|
|
693
|
-
var getMs = (duration) => Duration.
|
|
720
|
+
var getMs = (duration) => Duration.to.milliseconds(duration);
|
|
694
721
|
var cancellableWait = (duration, signal) => {
|
|
695
722
|
const rawMs = getMs(duration);
|
|
696
723
|
if (rawMs <= 0) {
|
|
@@ -713,7 +740,7 @@ var runWithRetry = (op, input, signal, options, onRetrying) => {
|
|
|
713
740
|
return typeof backoff === "function" ? backoff(n) : backoff;
|
|
714
741
|
};
|
|
715
742
|
const attempt = async (left) => {
|
|
716
|
-
const result = await Deferred.
|
|
743
|
+
const result = await Deferred.to.Promise(op._factory(input, signal));
|
|
717
744
|
if (result === null || signal.aborted) {
|
|
718
745
|
return null;
|
|
719
746
|
}
|
|
@@ -748,12 +775,12 @@ var runWithRetry = (op, input, signal, options, onRetrying) => {
|
|
|
748
775
|
var execute = (op, input, controller, retryOptions, timeoutOptions, onRetrying) => {
|
|
749
776
|
const { signal } = controller;
|
|
750
777
|
const toOutcome = (r) => r === null ? _abortedNil : r.kind === "Ok" ? ok(r.value) : err(r.error);
|
|
751
|
-
const runPromise = retryOptions !== void 0 && onRetrying !== void 0 ? runWithRetry(op, input, signal, retryOptions, onRetrying).then(toOutcome) : Deferred.
|
|
778
|
+
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);
|
|
752
779
|
if (timeoutOptions === void 0) {
|
|
753
|
-
return Deferred.
|
|
780
|
+
return Deferred.from.Promise(runPromise);
|
|
754
781
|
}
|
|
755
782
|
let timerId;
|
|
756
|
-
return Deferred.
|
|
783
|
+
return Deferred.from.Promise(Promise.race([
|
|
757
784
|
runPromise.then((outcome) => {
|
|
758
785
|
clearTimeout(timerId);
|
|
759
786
|
return outcome;
|
|
@@ -777,7 +804,7 @@ var makeRestartable = (op, minInterval, retryOptions, timeoutOptions) => {
|
|
|
777
804
|
currentState = state;
|
|
778
805
|
subscribers.forEach((cb) => cb(state));
|
|
779
806
|
};
|
|
780
|
-
const run = (input) => Deferred.
|
|
807
|
+
const run = (input) => Deferred.from.Promise(
|
|
781
808
|
new Promise((resolve) => {
|
|
782
809
|
waitController?.abort();
|
|
783
810
|
waitController = void 0;
|
|
@@ -869,9 +896,9 @@ var makeExclusive = (op, cooldown, retryOptions, timeoutOptions) => {
|
|
|
869
896
|
};
|
|
870
897
|
const run = (input) => {
|
|
871
898
|
if (currentController !== void 0 || cooldownTimer !== void 0) {
|
|
872
|
-
return Deferred.
|
|
899
|
+
return Deferred.from.Promise(Promise.resolve(_droppedNil));
|
|
873
900
|
}
|
|
874
|
-
return Deferred.
|
|
901
|
+
return Deferred.from.Promise(
|
|
875
902
|
new Promise((resolve) => {
|
|
876
903
|
currentResolve = resolve;
|
|
877
904
|
currentController = new AbortController();
|
|
@@ -991,14 +1018,14 @@ var makeQueue = (op, maxSize, overflow, concurrency, dedupe, retryOptions, timeo
|
|
|
991
1018
|
}
|
|
992
1019
|
}
|
|
993
1020
|
if (inFlight < maxConcurrency) {
|
|
994
|
-
return Deferred.
|
|
1021
|
+
return Deferred.from.Promise(
|
|
995
1022
|
new Promise((resolve) => {
|
|
996
1023
|
startOne(input, resolve, myGeneration);
|
|
997
1024
|
})
|
|
998
1025
|
);
|
|
999
1026
|
}
|
|
1000
1027
|
if (maxSize === void 0 || queue.length < maxSize) {
|
|
1001
|
-
return Deferred.
|
|
1028
|
+
return Deferred.from.Promise(
|
|
1002
1029
|
new Promise((resolve) => {
|
|
1003
1030
|
queue.push({ input, resolve });
|
|
1004
1031
|
emit({ kind: "Queued", position: queue.length - 1 });
|
|
@@ -1006,7 +1033,7 @@ var makeQueue = (op, maxSize, overflow, concurrency, dedupe, retryOptions, timeo
|
|
|
1006
1033
|
);
|
|
1007
1034
|
}
|
|
1008
1035
|
if (overflow === "replace-last") {
|
|
1009
|
-
return Deferred.
|
|
1036
|
+
return Deferred.from.Promise(
|
|
1010
1037
|
new Promise((resolve) => {
|
|
1011
1038
|
const tail = queue.pop();
|
|
1012
1039
|
tail.resolve(_evictedNil);
|
|
@@ -1015,7 +1042,7 @@ var makeQueue = (op, maxSize, overflow, concurrency, dedupe, retryOptions, timeo
|
|
|
1015
1042
|
})
|
|
1016
1043
|
);
|
|
1017
1044
|
}
|
|
1018
|
-
return Deferred.
|
|
1045
|
+
return Deferred.from.Promise(Promise.resolve(_droppedNil));
|
|
1019
1046
|
};
|
|
1020
1047
|
const abort = () => {
|
|
1021
1048
|
generation++;
|
|
@@ -1087,7 +1114,7 @@ var makeBuffered = (op, size, retryOptions, timeoutOptions) => {
|
|
|
1087
1114
|
}
|
|
1088
1115
|
});
|
|
1089
1116
|
};
|
|
1090
|
-
const run = (input) => Deferred.
|
|
1117
|
+
const run = (input) => Deferred.from.Promise(
|
|
1091
1118
|
new Promise((resolve) => {
|
|
1092
1119
|
if (currentController === void 0) {
|
|
1093
1120
|
startRun(input, resolve);
|
|
@@ -1213,7 +1240,7 @@ var makeDebounced = (op, duration, leading, maxWait, retryOptions, timeoutOption
|
|
|
1213
1240
|
timerId = setTimeout(fireTrailing, delay);
|
|
1214
1241
|
};
|
|
1215
1242
|
const inDebounceWindow = () => timerId !== void 0 || leadingController !== void 0 || currentController !== void 0;
|
|
1216
|
-
const run = (input) => Deferred.
|
|
1243
|
+
const run = (input) => Deferred.from.Promise(
|
|
1217
1244
|
new Promise((resolve) => {
|
|
1218
1245
|
if (!inDebounceWindow()) {
|
|
1219
1246
|
firstCallAt = Date.now();
|
|
@@ -1328,9 +1355,9 @@ var makeThrottled = (op, duration, trailing, retryOptions, timeoutOptions) => {
|
|
|
1328
1355
|
const run = (input) => {
|
|
1329
1356
|
if (cooldownTimer !== void 0) {
|
|
1330
1357
|
if (!trailing) {
|
|
1331
|
-
return Deferred.
|
|
1358
|
+
return Deferred.from.Promise(Promise.resolve(_droppedNil));
|
|
1332
1359
|
}
|
|
1333
|
-
return Deferred.
|
|
1360
|
+
return Deferred.from.Promise(
|
|
1334
1361
|
new Promise((resolve) => {
|
|
1335
1362
|
const prev = pendingResolve;
|
|
1336
1363
|
pendingInput = input;
|
|
@@ -1339,7 +1366,7 @@ var makeThrottled = (op, duration, trailing, retryOptions, timeoutOptions) => {
|
|
|
1339
1366
|
})
|
|
1340
1367
|
);
|
|
1341
1368
|
}
|
|
1342
|
-
return Deferred.
|
|
1369
|
+
return Deferred.from.Promise(
|
|
1343
1370
|
new Promise((resolve) => {
|
|
1344
1371
|
fireOp(input, resolve);
|
|
1345
1372
|
startCooldown();
|
|
@@ -1430,16 +1457,16 @@ var makeConcurrent = (op, n, overflow, retryOptions, timeoutOptions) => {
|
|
|
1430
1457
|
const run = (input) => {
|
|
1431
1458
|
const myGeneration = generation;
|
|
1432
1459
|
if (inflight < n) {
|
|
1433
|
-
return Deferred.
|
|
1460
|
+
return Deferred.from.Promise(
|
|
1434
1461
|
new Promise((resolve) => {
|
|
1435
1462
|
startOne(input, resolve, myGeneration);
|
|
1436
1463
|
})
|
|
1437
1464
|
);
|
|
1438
1465
|
}
|
|
1439
1466
|
if (overflow === "drop") {
|
|
1440
|
-
return Deferred.
|
|
1467
|
+
return Deferred.from.Promise(Promise.resolve(_droppedNil));
|
|
1441
1468
|
}
|
|
1442
|
-
return Deferred.
|
|
1469
|
+
return Deferred.from.Promise(
|
|
1443
1470
|
new Promise((resolve) => {
|
|
1444
1471
|
overflowQueue.push({ input, resolve });
|
|
1445
1472
|
emit({ kind: "Queued", position: overflowQueue.length - 1 });
|
|
@@ -1492,7 +1519,7 @@ var makeKeyed = (op, keyFn, perKey, timeoutOptions) => {
|
|
|
1492
1519
|
const k = keyFn(input);
|
|
1493
1520
|
if (slots.has(k)) {
|
|
1494
1521
|
if (perKey === "exclusive") {
|
|
1495
|
-
return Deferred.
|
|
1522
|
+
return Deferred.from.Promise(Promise.resolve(_droppedNil));
|
|
1496
1523
|
}
|
|
1497
1524
|
const existing = slots.get(k);
|
|
1498
1525
|
existing.controller.abort();
|
|
@@ -1500,7 +1527,7 @@ var makeKeyed = (op, keyFn, perKey, timeoutOptions) => {
|
|
|
1500
1527
|
slots.delete(k);
|
|
1501
1528
|
prev(_replacedNil);
|
|
1502
1529
|
}
|
|
1503
|
-
return Deferred.
|
|
1530
|
+
return Deferred.from.Promise(
|
|
1504
1531
|
new Promise((resolve) => {
|
|
1505
1532
|
const controller = new AbortController();
|
|
1506
1533
|
slots.set(k, { controller, resolve });
|
|
@@ -1580,9 +1607,9 @@ var makeOnce = (op, retryOptions, timeoutOptions) => {
|
|
|
1580
1607
|
};
|
|
1581
1608
|
const run = (input) => {
|
|
1582
1609
|
if (currentState.kind !== "Idle") {
|
|
1583
|
-
return Deferred.
|
|
1610
|
+
return Deferred.from.Promise(Promise.resolve(_droppedNil));
|
|
1584
1611
|
}
|
|
1585
|
-
return Deferred.
|
|
1612
|
+
return Deferred.from.Promise(
|
|
1586
1613
|
new Promise((resolve) => {
|
|
1587
1614
|
currentResolve = resolve;
|
|
1588
1615
|
currentController = new AbortController();
|
|
@@ -1643,10 +1670,8 @@ var Op;
|
|
|
1643
1670
|
((Op2) => {
|
|
1644
1671
|
Op2.nil = (reason) => ({ kind: "OpNil", reason });
|
|
1645
1672
|
Op2.create = (factory, onError) => ({
|
|
1646
|
-
_factory: (input, signal) => Deferred.
|
|
1647
|
-
factory(signal)(input).then((value) => Result.ok(value)).catch(
|
|
1648
|
-
(error) => signal.aborted ? null : Result.err(onError(error))
|
|
1649
|
-
)
|
|
1673
|
+
_factory: (input, signal) => Deferred.from.Promise(
|
|
1674
|
+
factory(signal)(input).then((value) => Result.make.ok(value)).catch((error) => signal.aborted ? null : Result.make.err(onError(error)))
|
|
1650
1675
|
)
|
|
1651
1676
|
});
|
|
1652
1677
|
Op2.lift = (f) => (0, Op2.create)((signal) => (input) => f(input, signal), (e) => e);
|
|
@@ -1688,18 +1713,21 @@ var Op;
|
|
|
1688
1713
|
return outcome;
|
|
1689
1714
|
};
|
|
1690
1715
|
Op2.recover = (f) => (outcome) => outcome.kind === "OpErr" ? f(outcome.error) : outcome;
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1716
|
+
let to;
|
|
1717
|
+
((to2) => {
|
|
1718
|
+
to2.Result = (onNil) => (outcome) => {
|
|
1719
|
+
if (outcome.kind === "OpOk") {
|
|
1720
|
+
return Result.make.ok(outcome.value);
|
|
1721
|
+
}
|
|
1722
|
+
if (outcome.kind === "OpErr") {
|
|
1723
|
+
return Result.make.err(outcome.error);
|
|
1724
|
+
}
|
|
1725
|
+
return Result.make.err(onNil());
|
|
1726
|
+
};
|
|
1727
|
+
to2.Maybe = (outcome) => outcome.kind === "OpOk" ? Maybe.make.some(outcome.value) : Maybe.make.none();
|
|
1728
|
+
})(to = Op2.to || (Op2.to = {}));
|
|
1729
|
+
Op2.all = (invocations) => Deferred.from.Promise(Promise.all(invocations.map(Deferred.to.Promise)));
|
|
1730
|
+
Op2.race = (invocations) => Deferred.from.Promise(Promise.race(invocations.map(Deferred.to.Promise)));
|
|
1703
1731
|
Op2.wire = (source, f) => source.subscribe((state) => {
|
|
1704
1732
|
if ((0, Op2.isOk)(state)) {
|
|
1705
1733
|
f(state.value);
|
|
@@ -1764,12 +1792,18 @@ var Op;
|
|
|
1764
1792
|
// src/Core/Optional.ts
|
|
1765
1793
|
var Optional;
|
|
1766
1794
|
((Optional2) => {
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1795
|
+
let from;
|
|
1796
|
+
((from2) => {
|
|
1797
|
+
from2.accessors = (get2, set2) => ({
|
|
1798
|
+
get: get2,
|
|
1799
|
+
set: set2
|
|
1800
|
+
});
|
|
1801
|
+
from2.property = () => (key) => (0, from2.accessors)((s) => {
|
|
1802
|
+
const val = s[key];
|
|
1803
|
+
return val !== null && val !== void 0 ? Maybe.make.some(val) : Maybe.make.none();
|
|
1804
|
+
}, (a) => (s) => ({ ...s, [key]: a }));
|
|
1805
|
+
})(from = Optional2.from || (Optional2.from = {}));
|
|
1806
|
+
Optional2.index = (i) => from.accessors((arr) => i >= 0 && i < arr.length ? Maybe.make.some(arr[i]) : Maybe.make.none(), (a) => (arr) => {
|
|
1773
1807
|
if (i < 0 || i >= arr.length) {
|
|
1774
1808
|
return arr;
|
|
1775
1809
|
}
|
|
@@ -1795,16 +1829,16 @@ var Optional;
|
|
|
1795
1829
|
const val = opt.get(s);
|
|
1796
1830
|
return val.kind === "Some" ? cases.some(val.value) : cases.none();
|
|
1797
1831
|
};
|
|
1798
|
-
Optional2.andThen = (inner) => (outer) =>
|
|
1832
|
+
Optional2.andThen = (inner) => (outer) => from.accessors((s) => {
|
|
1799
1833
|
const mid = outer.get(s);
|
|
1800
|
-
return mid.kind === "None" ? Maybe.none() : inner.get(mid.value);
|
|
1834
|
+
return mid.kind === "None" ? Maybe.make.none() : inner.get(mid.value);
|
|
1801
1835
|
}, (b) => (s) => {
|
|
1802
1836
|
const mid = outer.get(s);
|
|
1803
1837
|
return mid.kind === "None" ? s : outer.set(inner.set(b)(mid.value))(s);
|
|
1804
1838
|
});
|
|
1805
|
-
Optional2.andThenLens = (inner) => (outer) =>
|
|
1839
|
+
Optional2.andThenLens = (inner) => (outer) => from.accessors((s) => {
|
|
1806
1840
|
const mid = outer.get(s);
|
|
1807
|
-
return mid.kind === "None" ? Maybe.none() : Maybe.some(inner.get(mid.value));
|
|
1841
|
+
return mid.kind === "None" ? Maybe.make.none() : Maybe.make.some(inner.get(mid.value));
|
|
1808
1842
|
}, (b) => (s) => {
|
|
1809
1843
|
const mid = outer.get(s);
|
|
1810
1844
|
return mid.kind === "None" ? s : outer.set(inner.set(b)(mid.value))(s);
|
|
@@ -1834,7 +1868,10 @@ var Predicate;
|
|
|
1834
1868
|
Predicate2.using = (f) => (p) => (b) => p(f(b));
|
|
1835
1869
|
Predicate2.all = (predicates) => (a) => predicates.every((p) => p(a));
|
|
1836
1870
|
Predicate2.any = (predicates) => (a) => predicates.some((p) => p(a));
|
|
1837
|
-
|
|
1871
|
+
let from;
|
|
1872
|
+
((from2) => {
|
|
1873
|
+
from2.Refinement = (r) => r;
|
|
1874
|
+
})(from = Predicate2.from || (Predicate2.from = {}));
|
|
1838
1875
|
})(Predicate || (Predicate = {}));
|
|
1839
1876
|
|
|
1840
1877
|
// src/Core/Reader.ts
|
|
@@ -1862,12 +1899,18 @@ var Reader;
|
|
|
1862
1899
|
// src/Core/Refinement.ts
|
|
1863
1900
|
var Refinement;
|
|
1864
1901
|
((Refinement2) => {
|
|
1865
|
-
|
|
1902
|
+
let from;
|
|
1903
|
+
((from2) => {
|
|
1904
|
+
from2.predicate = (f) => f;
|
|
1905
|
+
})(from = Refinement2.from || (Refinement2.from = {}));
|
|
1866
1906
|
Refinement2.compose = (bc) => (ab) => (a) => ab(a) && bc(a);
|
|
1867
1907
|
Refinement2.and = (second) => (first) => (a) => first(a) && second(a);
|
|
1868
1908
|
Refinement2.or = (second) => (first) => (a) => first(a) || second(a);
|
|
1869
|
-
|
|
1870
|
-
|
|
1909
|
+
let to;
|
|
1910
|
+
((to2) => {
|
|
1911
|
+
to2.Maybe = (r) => (a) => r(a) ? Maybe.make.some(a) : Maybe.make.none();
|
|
1912
|
+
to2.Result = (r, onFail) => (a) => r(a) ? Result.make.ok(a) : Result.make.err(onFail(a));
|
|
1913
|
+
})(to = Refinement2.to || (Refinement2.to = {}));
|
|
1871
1914
|
})(Refinement || (Refinement = {}));
|
|
1872
1915
|
|
|
1873
1916
|
// src/Core/RemoteData.ts
|
|
@@ -1875,31 +1918,37 @@ var _notAsked = { kind: "NotAsked" };
|
|
|
1875
1918
|
var _loading = { kind: "Loading" };
|
|
1876
1919
|
var RemoteData;
|
|
1877
1920
|
((RemoteData2) => {
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
RemoteData2.
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1921
|
+
let make;
|
|
1922
|
+
((make2) => {
|
|
1923
|
+
make2.notAsked = () => _notAsked;
|
|
1924
|
+
make2.loading = () => _loading;
|
|
1925
|
+
make2.failure = (error) => ({ kind: "Failure", error });
|
|
1926
|
+
make2.success = (value) => ({ kind: "Success", value });
|
|
1927
|
+
})(make = RemoteData2.make || (RemoteData2.make = {}));
|
|
1928
|
+
let is;
|
|
1929
|
+
((is2) => {
|
|
1930
|
+
is2.notAsked = (data) => data.kind === "NotAsked";
|
|
1931
|
+
is2.loading = (data) => data.kind === "Loading";
|
|
1932
|
+
is2.failure = (data) => data.kind === "Failure";
|
|
1933
|
+
is2.success = (data) => data.kind === "Success";
|
|
1934
|
+
})(is = RemoteData2.is || (RemoteData2.is = {}));
|
|
1935
|
+
RemoteData2.map = (f) => (data) => is.success(data) ? make.success(f(data.value)) : data;
|
|
1936
|
+
RemoteData2.mapError = (f) => (data) => is.failure(data) ? make.failure(f(data.error)) : data;
|
|
1937
|
+
RemoteData2.chain = (f) => (data) => is.success(data) ? f(data.value) : data;
|
|
1889
1938
|
RemoteData2.ap = (arg) => (data) => {
|
|
1890
|
-
if (
|
|
1891
|
-
return
|
|
1939
|
+
if (is.success(data) && is.success(arg)) {
|
|
1940
|
+
return make.success(data.value(arg.value));
|
|
1892
1941
|
}
|
|
1893
|
-
if (
|
|
1942
|
+
if (is.failure(data)) {
|
|
1894
1943
|
return data;
|
|
1895
1944
|
}
|
|
1896
|
-
if (
|
|
1945
|
+
if (is.failure(arg)) {
|
|
1897
1946
|
return arg;
|
|
1898
1947
|
}
|
|
1899
|
-
if (
|
|
1900
|
-
return
|
|
1948
|
+
if (is.loading(data) || is.loading(arg)) {
|
|
1949
|
+
return make.loading();
|
|
1901
1950
|
}
|
|
1902
|
-
return
|
|
1951
|
+
return make.notAsked();
|
|
1903
1952
|
};
|
|
1904
1953
|
RemoteData2.fold = (onFailure, onNotAsked, onLoading, onSuccess) => (data) => {
|
|
1905
1954
|
switch (data.kind) {
|
|
@@ -1933,69 +1982,78 @@ var RemoteData;
|
|
|
1933
1982
|
}
|
|
1934
1983
|
}
|
|
1935
1984
|
};
|
|
1936
|
-
RemoteData2.getOrElse = (defaultValue) => (data) =>
|
|
1985
|
+
RemoteData2.getOrElse = (defaultValue) => (data) => is.success(data) ? data.value : defaultValue();
|
|
1937
1986
|
RemoteData2.tap = (f) => (data) => {
|
|
1938
|
-
if (
|
|
1987
|
+
if (is.success(data)) {
|
|
1939
1988
|
f(data.value);
|
|
1940
1989
|
}
|
|
1941
1990
|
return data;
|
|
1942
1991
|
};
|
|
1943
1992
|
RemoteData2.tapError = (f) => (data) => {
|
|
1944
|
-
if (
|
|
1993
|
+
if (is.failure(data)) {
|
|
1945
1994
|
f(data.error);
|
|
1946
1995
|
}
|
|
1947
1996
|
return data;
|
|
1948
1997
|
};
|
|
1949
|
-
RemoteData2.recover = (fallback) => (data) =>
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1998
|
+
RemoteData2.recover = (fallback) => (data) => is.failure(data) ? fallback(data.error) : data;
|
|
1999
|
+
let to;
|
|
2000
|
+
((to2) => {
|
|
2001
|
+
to2.Maybe = (data) => is.success(data) ? Maybe.make.some(data.value) : Maybe.make.none();
|
|
2002
|
+
to2.Result = (onNotReady) => (data) => is.success(data) ? Result.make.ok(data.value) : Result.make.err(is.failure(data) ? data.error : onNotReady());
|
|
2003
|
+
})(to = RemoteData2.to || (RemoteData2.to = {}));
|
|
2004
|
+
let from;
|
|
2005
|
+
((from2) => {
|
|
2006
|
+
from2.Result = (data) => Result.is.ok(data) ? make.success(data.value) : make.failure(data.error);
|
|
2007
|
+
from2.Maybe = (onNone) => (data) => Maybe.is.some(data) ? make.success(data.value) : make.failure(onNone());
|
|
2008
|
+
})(from = RemoteData2.from || (RemoteData2.from = {}));
|
|
2009
|
+
RemoteData2.filter = (pred, onFalse) => (data) => is.success(data) ? pred(data.value) ? data : make.failure(onFalse(data.value)) : data;
|
|
1955
2010
|
})(RemoteData || (RemoteData = {}));
|
|
1956
2011
|
|
|
1957
2012
|
// src/Core/Resource.ts
|
|
1958
2013
|
var Resource;
|
|
1959
2014
|
((Resource2) => {
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
release
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
release
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
2015
|
+
let from;
|
|
2016
|
+
((from2) => {
|
|
2017
|
+
from2.handlers = (acquire, release) => ({
|
|
2018
|
+
acquire,
|
|
2019
|
+
release
|
|
2020
|
+
});
|
|
2021
|
+
from2.Task = (acquire, release) => ({
|
|
2022
|
+
acquire: Task.map((a) => Result.make.ok(a))(acquire),
|
|
2023
|
+
release
|
|
2024
|
+
});
|
|
2025
|
+
})(from = Resource2.from || (Resource2.from = {}));
|
|
2026
|
+
Resource2.use = (f) => (resource) => Task.from.Promise(
|
|
2027
|
+
(signal) => Deferred.to.Promise(resource.acquire(signal)).then(async (acquired) => {
|
|
2028
|
+
if (Result.is.err(acquired)) {
|
|
1971
2029
|
return acquired;
|
|
1972
2030
|
}
|
|
1973
2031
|
const a = acquired.value;
|
|
1974
2032
|
try {
|
|
1975
|
-
const usageResult = await Deferred.
|
|
2033
|
+
const usageResult = await Deferred.to.Promise(f(a)(signal));
|
|
1976
2034
|
return usageResult;
|
|
1977
2035
|
} finally {
|
|
1978
|
-
await Deferred.
|
|
2036
|
+
await Deferred.to.Promise(resource.release(a)(signal));
|
|
1979
2037
|
}
|
|
1980
2038
|
})
|
|
1981
2039
|
);
|
|
1982
2040
|
Resource2.combine = (resourceA, resourceB) => ({
|
|
1983
|
-
acquire: Task.from(
|
|
1984
|
-
(signal) => Deferred.
|
|
1985
|
-
if (Result.
|
|
2041
|
+
acquire: Task.from.Promise(
|
|
2042
|
+
(signal) => Deferred.to.Promise(resourceA.acquire(signal)).then(async (acquiredA) => {
|
|
2043
|
+
if (Result.is.err(acquiredA)) {
|
|
1986
2044
|
return acquiredA;
|
|
1987
2045
|
}
|
|
1988
2046
|
const a = acquiredA.value;
|
|
1989
|
-
const acquiredB = await Deferred.
|
|
1990
|
-
if (Result.
|
|
1991
|
-
await Deferred.
|
|
2047
|
+
const acquiredB = await Deferred.to.Promise(resourceB.acquire(signal));
|
|
2048
|
+
if (Result.is.err(acquiredB)) {
|
|
2049
|
+
await Deferred.to.Promise(resourceA.release(a)(signal));
|
|
1992
2050
|
return acquiredB;
|
|
1993
2051
|
}
|
|
1994
|
-
return Result.ok([a, acquiredB.value]);
|
|
2052
|
+
return Result.make.ok([a, acquiredB.value]);
|
|
1995
2053
|
})
|
|
1996
2054
|
),
|
|
1997
|
-
release: ([a, b]) => Task.from(
|
|
1998
|
-
(signal) => Deferred.
|
|
2055
|
+
release: ([a, b]) => Task.from.Promise(
|
|
2056
|
+
(signal) => Deferred.to.Promise(resourceB.release(b)(signal)).then(() => Deferred.to.Promise(resourceA.release(a)(signal)))
|
|
1999
2057
|
)
|
|
2000
2058
|
});
|
|
2001
2059
|
})(Resource || (Resource = {}));
|
|
@@ -2003,49 +2061,61 @@ var Resource;
|
|
|
2003
2061
|
// src/Core/Result.ts
|
|
2004
2062
|
var Result;
|
|
2005
2063
|
((Result4) => {
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2064
|
+
let make;
|
|
2065
|
+
((make2) => {
|
|
2066
|
+
make2.ok = (value) => ({ kind: "Ok", value });
|
|
2067
|
+
make2.err = (e) => ({ kind: "Err", error: e });
|
|
2068
|
+
})(make = Result4.make || (Result4.make = {}));
|
|
2069
|
+
let is;
|
|
2070
|
+
((is2) => {
|
|
2071
|
+
is2.ok = (data) => data.kind === "Ok";
|
|
2072
|
+
is2.err = (data) => data.kind === "Err";
|
|
2073
|
+
})(is = Result4.is || (Result4.is = {}));
|
|
2010
2074
|
Result4.tryCatch = (f, onError) => {
|
|
2011
2075
|
try {
|
|
2012
|
-
return
|
|
2076
|
+
return make.ok(f());
|
|
2013
2077
|
} catch (error) {
|
|
2014
|
-
return
|
|
2078
|
+
return make.err(onError(error));
|
|
2015
2079
|
}
|
|
2016
2080
|
};
|
|
2017
|
-
Result4.map = (f) => (data) =>
|
|
2018
|
-
Result4.mapError = (f) => (data) =>
|
|
2019
|
-
Result4.chain = (f) => (data) =>
|
|
2020
|
-
Result4.fold = (onErr, onOk) => (data) =>
|
|
2021
|
-
Result4.match = (cases) => (data) =>
|
|
2022
|
-
Result4.getOrElse = (defaultValue) => (data) =>
|
|
2081
|
+
Result4.map = (f) => (data) => is.ok(data) ? make.ok(f(data.value)) : data;
|
|
2082
|
+
Result4.mapError = (f) => (data) => is.err(data) ? make.err(f(data.error)) : data;
|
|
2083
|
+
Result4.chain = (f) => (data) => is.ok(data) ? f(data.value) : data;
|
|
2084
|
+
Result4.fold = (onErr, onOk) => (data) => is.ok(data) ? onOk(data.value) : onErr(data.error);
|
|
2085
|
+
Result4.match = (cases) => (data) => is.ok(data) ? cases.ok(data.value) : cases.err(data.error);
|
|
2086
|
+
Result4.getOrElse = (defaultValue) => (data) => is.ok(data) ? data.value : defaultValue();
|
|
2023
2087
|
Result4.tap = (f) => (data) => {
|
|
2024
|
-
if (
|
|
2088
|
+
if (is.ok(data)) {
|
|
2025
2089
|
f(data.value);
|
|
2026
2090
|
}
|
|
2027
2091
|
return data;
|
|
2028
2092
|
};
|
|
2029
2093
|
Result4.tapError = (f) => (data) => {
|
|
2030
|
-
if (
|
|
2094
|
+
if (is.err(data)) {
|
|
2031
2095
|
f(data.error);
|
|
2032
2096
|
}
|
|
2033
2097
|
return data;
|
|
2034
2098
|
};
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
|
|
2044
|
-
|
|
2045
|
-
|
|
2046
|
-
|
|
2047
|
-
|
|
2048
|
-
Result4.
|
|
2099
|
+
let from;
|
|
2100
|
+
((from2) => {
|
|
2101
|
+
from2.Predicate = (pred, onFalse) => (a) => pred(a) ? make.ok(a) : make.err(onFalse(a));
|
|
2102
|
+
from2.nullable = (onNull) => (value) => value === null || value === void 0 ? make.err(onNull()) : make.ok(value);
|
|
2103
|
+
from2.Maybe = (onNone) => (maybe) => Maybe.is.none(maybe) ? make.err(onNone()) : make.ok(maybe.value);
|
|
2104
|
+
from2.throwable = (f, onError) => (...args) => {
|
|
2105
|
+
try {
|
|
2106
|
+
return make.ok(f(...args));
|
|
2107
|
+
} catch (error) {
|
|
2108
|
+
return make.err(onError(error));
|
|
2109
|
+
}
|
|
2110
|
+
};
|
|
2111
|
+
})(from = Result4.from || (Result4.from = {}));
|
|
2112
|
+
Result4.recover = (fallback) => (data) => is.ok(data) ? data : fallback(data.error);
|
|
2113
|
+
Result4.recoverUnless = (isBlocked, fallback) => (data) => is.err(data) && !isBlocked(data.error) ? fallback() : data;
|
|
2114
|
+
let to;
|
|
2115
|
+
((to2) => {
|
|
2116
|
+
to2.Maybe = (data) => is.ok(data) ? Maybe.make.some(data.value) : Maybe.make.none();
|
|
2117
|
+
})(to = Result4.to || (Result4.to = {}));
|
|
2118
|
+
Result4.ap = (arg) => (data) => is.ok(data) && is.ok(arg) ? make.ok(data.value(arg.value)) : is.err(data) ? data : arg;
|
|
2049
2119
|
Result4.bindTo = (key) => (data) => (0, Result4.map)((a) => ({ [key]: a }))(data);
|
|
2050
2120
|
Result4.bind = (key, f) => (data) => (0, Result4.chain)(
|
|
2051
2121
|
(a) => (0, Result4.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
@@ -2055,13 +2125,13 @@ var Result;
|
|
|
2055
2125
|
for (const key in fields) {
|
|
2056
2126
|
if (Object.hasOwn(fields, key)) {
|
|
2057
2127
|
const res = fields[key];
|
|
2058
|
-
if (
|
|
2128
|
+
if (is.err(res)) {
|
|
2059
2129
|
return res;
|
|
2060
2130
|
}
|
|
2061
2131
|
result[key] = res.value;
|
|
2062
2132
|
}
|
|
2063
2133
|
}
|
|
2064
|
-
return
|
|
2134
|
+
return make.ok(result);
|
|
2065
2135
|
};
|
|
2066
2136
|
})(Result || (Result = {}));
|
|
2067
2137
|
|
|
@@ -2103,17 +2173,24 @@ var State;
|
|
|
2103
2173
|
// src/Core/TaskMaybe.ts
|
|
2104
2174
|
var TaskMaybe;
|
|
2105
2175
|
((TaskMaybe2) => {
|
|
2106
|
-
TaskMaybe2.some = (value) => Task.resolve(Maybe.some(value));
|
|
2107
|
-
TaskMaybe2.none = () => Task.resolve(Maybe.none());
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2176
|
+
TaskMaybe2.some = (value) => Task.resolve(Maybe.make.some(value));
|
|
2177
|
+
TaskMaybe2.none = () => Task.resolve(Maybe.make.none());
|
|
2178
|
+
let from;
|
|
2179
|
+
((from2) => {
|
|
2180
|
+
from2.Maybe = (option) => Task.resolve(option);
|
|
2181
|
+
from2.nullable = (value) => Task.resolve(Maybe.from.nullable(value));
|
|
2182
|
+
from2.Result = (result) => Task.resolve(Result.to.Maybe(result));
|
|
2183
|
+
from2.Task = (task) => Task.map(Maybe.make.some)(task);
|
|
2184
|
+
})(from = TaskMaybe2.from || (TaskMaybe2.from = {}));
|
|
2185
|
+
TaskMaybe2.tryCatch = (f) => Task.from.Promise(
|
|
2186
|
+
(signal) => Promise.resolve(f(signal)).then(Maybe.make.some).catch(() => Maybe.make.none())
|
|
2187
|
+
);
|
|
2113
2188
|
TaskMaybe2.map = (f) => (data) => Task.map(Maybe.map(f))(data);
|
|
2114
|
-
TaskMaybe2.chain = (f) => (data) => Task.chain(
|
|
2115
|
-
|
|
2116
|
-
|
|
2189
|
+
TaskMaybe2.chain = (f) => (data) => Task.chain(
|
|
2190
|
+
(option) => Maybe.is.some(option) ? f(option.value) : Task.resolve(Maybe.make.none())
|
|
2191
|
+
)(data);
|
|
2192
|
+
TaskMaybe2.ap = (arg) => (data) => Task.from.Promise(
|
|
2193
|
+
(signal) => Promise.all([Deferred.to.Promise(data(signal)), Deferred.to.Promise(arg(signal))]).then(
|
|
2117
2194
|
([of_, oa]) => Maybe.ap(oa)(of_)
|
|
2118
2195
|
)
|
|
2119
2196
|
);
|
|
@@ -2122,25 +2199,30 @@ var TaskMaybe;
|
|
|
2122
2199
|
TaskMaybe2.getOrElse = (defaultValue) => (data) => Task.map(Maybe.getOrElse(defaultValue))(data);
|
|
2123
2200
|
TaskMaybe2.tap = (f) => (data) => Task.map(Maybe.tap(f))(data);
|
|
2124
2201
|
TaskMaybe2.filter = (predicate) => (data) => Task.map(Maybe.filter(predicate))(data);
|
|
2125
|
-
|
|
2202
|
+
let to;
|
|
2203
|
+
((to2) => {
|
|
2204
|
+
to2.Result = (onNone) => (data) => Task.map(Maybe.to.Result(onNone))(data);
|
|
2205
|
+
})(to = TaskMaybe2.to || (TaskMaybe2.to = {}));
|
|
2126
2206
|
TaskMaybe2.bindTo = (key) => (data) => (0, TaskMaybe2.map)((a) => ({ [key]: a }))(data);
|
|
2127
2207
|
TaskMaybe2.bind = (key, f) => (data) => (0, TaskMaybe2.chain)(
|
|
2128
2208
|
(a) => (0, TaskMaybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
2129
2209
|
)(data);
|
|
2130
|
-
TaskMaybe2.recover = (fallback) => (data) => Task.chain((maybe) => Maybe.
|
|
2131
|
-
|
|
2210
|
+
TaskMaybe2.recover = (fallback) => (data) => Task.chain((maybe) => Maybe.is.none(maybe) ? fallback() : Task.resolve(maybe))(
|
|
2211
|
+
data
|
|
2212
|
+
);
|
|
2213
|
+
TaskMaybe2.struct = (fields) => Task.from.Promise((signal) => {
|
|
2132
2214
|
const keys = Object.keys(fields);
|
|
2133
|
-
const promises = keys.map((key) => Deferred.
|
|
2215
|
+
const promises = keys.map((key) => Deferred.to.Promise(fields[key](signal)));
|
|
2134
2216
|
return Promise.all(promises).then((results) => {
|
|
2135
2217
|
const record = {};
|
|
2136
2218
|
for (let i = 0; i < keys.length; i++) {
|
|
2137
2219
|
const res = results[i];
|
|
2138
|
-
if (Maybe.
|
|
2220
|
+
if (Maybe.is.none(res)) {
|
|
2139
2221
|
return res;
|
|
2140
2222
|
}
|
|
2141
2223
|
record[keys[i]] = res.value;
|
|
2142
2224
|
}
|
|
2143
|
-
return Maybe.some(record);
|
|
2225
|
+
return Maybe.make.some(record);
|
|
2144
2226
|
});
|
|
2145
2227
|
});
|
|
2146
2228
|
})(TaskMaybe || (TaskMaybe = {}));
|
|
@@ -2148,28 +2230,35 @@ var TaskMaybe;
|
|
|
2148
2230
|
// src/Core/TaskResult.ts
|
|
2149
2231
|
var TaskResult;
|
|
2150
2232
|
((TaskResult2) => {
|
|
2151
|
-
TaskResult2.ok = (value) => Task.resolve(Result.ok(value));
|
|
2152
|
-
TaskResult2.err = (error) => Task.resolve(Result.err(error));
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2233
|
+
TaskResult2.ok = (value) => Task.resolve(Result.make.ok(value));
|
|
2234
|
+
TaskResult2.err = (error) => Task.resolve(Result.make.err(error));
|
|
2235
|
+
let from;
|
|
2236
|
+
((from2) => {
|
|
2237
|
+
from2.nullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Result.make.err(onNull()) : Result.make.ok(value));
|
|
2238
|
+
from2.Maybe = (onNone) => (maybe) => Task.resolve(Maybe.is.none(maybe) ? Result.make.err(onNone()) : Result.make.ok(maybe.value));
|
|
2239
|
+
from2.Result = (result) => Task.resolve(result);
|
|
2240
|
+
from2.throwable = (f, onError) => (...args) => Task.from.Promise(
|
|
2241
|
+
() => f(...args).then(Result.make.ok).catch((error) => Result.make.err(onError(error)))
|
|
2242
|
+
);
|
|
2243
|
+
})(from = TaskResult2.from || (TaskResult2.from = {}));
|
|
2244
|
+
TaskResult2.tryCatch = (f, onError) => Task.from.Promise(
|
|
2245
|
+
(signal) => Promise.resolve(f(signal)).then(Result.make.ok).catch((error) => Result.make.err(onError(error)))
|
|
2246
|
+
);
|
|
2158
2247
|
TaskResult2.map = (f) => (data) => Task.map(Result.map(f))(data);
|
|
2159
2248
|
TaskResult2.mapError = (f) => (data) => Task.map(Result.mapError(f))(data);
|
|
2160
|
-
TaskResult2.chain = (f) => (data) => Task.chain(
|
|
2161
|
-
|
|
2162
|
-
);
|
|
2249
|
+
TaskResult2.chain = (f) => (data) => Task.chain(
|
|
2250
|
+
(result) => Result.is.ok(result) ? f(result.value) : Task.resolve(Result.make.err(result.error))
|
|
2251
|
+
)(data);
|
|
2163
2252
|
TaskResult2.fold = (onErr, onOk) => (data) => Task.map(Result.fold(onErr, onOk))(data);
|
|
2164
2253
|
TaskResult2.match = (cases) => (data) => Task.map(Result.match(cases))(data);
|
|
2165
2254
|
TaskResult2.recover = (fallback) => (data) => Task.chain(
|
|
2166
|
-
(result) => Result.
|
|
2255
|
+
(result) => Result.is.err(result) ? fallback(result.error) : Task.resolve(result)
|
|
2167
2256
|
)(data);
|
|
2168
2257
|
TaskResult2.getOrElse = (defaultValue) => (data) => Task.map(Result.getOrElse(defaultValue))(data);
|
|
2169
2258
|
TaskResult2.tap = (f) => (data) => Task.map(Result.tap(f))(data);
|
|
2170
2259
|
TaskResult2.tapError = (f) => (data) => Task.map(Result.tapError(f))(data);
|
|
2171
|
-
TaskResult2.ap = (arg) => (data) => Task.from(
|
|
2172
|
-
(signal) => Promise.all([Deferred.
|
|
2260
|
+
TaskResult2.ap = (arg) => (data) => Task.from.Promise(
|
|
2261
|
+
(signal) => Promise.all([Deferred.to.Promise(data(signal)), Deferred.to.Promise(arg(signal))]).then(
|
|
2173
2262
|
([of_, oa]) => Result.ap(oa)(of_)
|
|
2174
2263
|
)
|
|
2175
2264
|
);
|
|
@@ -2178,19 +2267,19 @@ var TaskResult;
|
|
|
2178
2267
|
TaskResult2.bind = (key, f) => (data) => (0, TaskResult2.chain)(
|
|
2179
2268
|
(a) => (0, TaskResult2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
2180
2269
|
)(data);
|
|
2181
|
-
TaskResult2.struct = (fields) => Task.from((signal) => {
|
|
2270
|
+
TaskResult2.struct = (fields) => Task.from.Promise((signal) => {
|
|
2182
2271
|
const keys = Object.keys(fields);
|
|
2183
|
-
const promises = keys.map((key) => Deferred.
|
|
2272
|
+
const promises = keys.map((key) => Deferred.to.Promise(fields[key](signal)));
|
|
2184
2273
|
return Promise.all(promises).then((results) => {
|
|
2185
2274
|
const record = {};
|
|
2186
2275
|
for (let i = 0; i < keys.length; i++) {
|
|
2187
2276
|
const res = results[i];
|
|
2188
|
-
if (Result.
|
|
2277
|
+
if (Result.is.err(res)) {
|
|
2189
2278
|
return res;
|
|
2190
2279
|
}
|
|
2191
2280
|
record[keys[i]] = res.value;
|
|
2192
2281
|
}
|
|
2193
|
-
return Result.ok(record);
|
|
2282
|
+
return Result.make.ok(record);
|
|
2194
2283
|
});
|
|
2195
2284
|
});
|
|
2196
2285
|
})(TaskResult || (TaskResult = {}));
|
|
@@ -2201,19 +2290,28 @@ var isNonEmptyArr = (list) => list.length > 0;
|
|
|
2201
2290
|
// src/Core/TaskValidation.ts
|
|
2202
2291
|
var TaskValidation;
|
|
2203
2292
|
((TaskValidation2) => {
|
|
2204
|
-
TaskValidation2.passed = (value) => Task.resolve(Validation.passed(value));
|
|
2205
|
-
TaskValidation2.failed = (error) => Task.resolve(Validation.failed(error));
|
|
2206
|
-
TaskValidation2.failedAll = (errors) => Task.resolve(Validation.failedAll(errors));
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2293
|
+
TaskValidation2.passed = (value) => Task.resolve(Validation.make.passed(value));
|
|
2294
|
+
TaskValidation2.failed = (error) => Task.resolve(Validation.make.failed(error));
|
|
2295
|
+
TaskValidation2.failedAll = (errors) => Task.resolve(Validation.make.failedAll(errors));
|
|
2296
|
+
let from;
|
|
2297
|
+
((from2) => {
|
|
2298
|
+
from2.Validation = (validation) => Task.resolve(validation);
|
|
2299
|
+
from2.nullable = (onNull) => (value) => Task.resolve(
|
|
2300
|
+
value === null || value === void 0 ? Validation.make.failed(onNull()) : Validation.make.passed(value)
|
|
2301
|
+
);
|
|
2302
|
+
from2.Maybe = (onNone) => (maybe) => Task.resolve(
|
|
2303
|
+
Maybe.is.none(maybe) ? Validation.make.failed(onNone()) : Validation.make.passed(maybe.value)
|
|
2304
|
+
);
|
|
2305
|
+
from2.Result = (result) => Task.resolve(Validation.from.Result(result));
|
|
2306
|
+
})(from = TaskValidation2.from || (TaskValidation2.from = {}));
|
|
2307
|
+
TaskValidation2.tryCatch = (f, onError) => Task.from.Promise(
|
|
2308
|
+
(signal) => Promise.resolve(f(signal)).then(Validation.make.passed).catch(
|
|
2309
|
+
(error) => Validation.make.failed(onError(error))
|
|
2310
|
+
)
|
|
2213
2311
|
);
|
|
2214
2312
|
TaskValidation2.map = (f) => (data) => Task.map(Validation.map(f))(data);
|
|
2215
|
-
TaskValidation2.ap = (arg) => (data) => Task.from(
|
|
2216
|
-
(signal) => Promise.all([Deferred.
|
|
2313
|
+
TaskValidation2.ap = (arg) => (data) => Task.from.Promise(
|
|
2314
|
+
(signal) => Promise.all([Deferred.to.Promise(data(signal)), Deferred.to.Promise(arg(signal))]).then(
|
|
2217
2315
|
([vf, va]) => Validation.ap(va)(vf)
|
|
2218
2316
|
)
|
|
2219
2317
|
);
|
|
@@ -2222,61 +2320,64 @@ var TaskValidation;
|
|
|
2222
2320
|
TaskValidation2.getOrElse = (defaultValue) => (data) => Task.map(Validation.getOrElse(defaultValue))(data);
|
|
2223
2321
|
TaskValidation2.tap = (f) => (data) => Task.map(Validation.tap(f))(data);
|
|
2224
2322
|
TaskValidation2.recover = (fallback) => (data) => Task.chain(
|
|
2225
|
-
(validation) => Validation.
|
|
2323
|
+
(validation) => Validation.is.passed(validation) ? Task.resolve(validation) : fallback(validation.errors)
|
|
2226
2324
|
)(data);
|
|
2227
|
-
TaskValidation2.product = (first, second) => Task.from(
|
|
2228
|
-
(signal) => Promise.all([Deferred.
|
|
2325
|
+
TaskValidation2.product = (first, second) => Task.from.Promise(
|
|
2326
|
+
(signal) => Promise.all([Deferred.to.Promise(first(signal)), Deferred.to.Promise(second(signal))]).then(
|
|
2229
2327
|
([va, vb]) => Validation.product(va, vb)
|
|
2230
2328
|
)
|
|
2231
2329
|
);
|
|
2232
|
-
TaskValidation2.productAll = (data) => Task.from(
|
|
2233
|
-
(signal) => Promise.all(data.map((t) => Deferred.
|
|
2330
|
+
TaskValidation2.productAll = (data) => Task.from.Promise(
|
|
2331
|
+
(signal) => Promise.all(data.map((t) => Deferred.to.Promise(t(signal)))).then((results) => {
|
|
2234
2332
|
const [first, ...rest] = results;
|
|
2235
2333
|
return Validation.productAll([first, ...rest]);
|
|
2236
2334
|
})
|
|
2237
2335
|
);
|
|
2238
2336
|
TaskValidation2.mapError = (f) => (data) => Task.map(Validation.mapError(f))(data);
|
|
2239
2337
|
TaskValidation2.tapError = (f) => (data) => Task.map(Validation.tapError(f))(data);
|
|
2240
|
-
TaskValidation2.struct = (fields) => Task.from((signal) => {
|
|
2338
|
+
TaskValidation2.struct = (fields) => Task.from.Promise((signal) => {
|
|
2241
2339
|
const keys = Object.keys(fields);
|
|
2242
|
-
const promises = keys.map((key) => Deferred.
|
|
2340
|
+
const promises = keys.map((key) => Deferred.to.Promise(fields[key](signal)));
|
|
2243
2341
|
return Promise.all(promises).then((results) => {
|
|
2244
2342
|
const record = {};
|
|
2245
2343
|
const errors = [];
|
|
2246
2344
|
for (let i = 0; i < keys.length; i++) {
|
|
2247
2345
|
const res = results[i];
|
|
2248
|
-
if (Validation.
|
|
2346
|
+
if (Validation.is.passed(res)) {
|
|
2249
2347
|
record[keys[i]] = res.value;
|
|
2250
2348
|
} else {
|
|
2251
2349
|
errors.push(...res.errors);
|
|
2252
2350
|
}
|
|
2253
2351
|
}
|
|
2254
|
-
return isNonEmptyArr(errors) ? Validation.failedAll(errors) : Validation.passed(record);
|
|
2352
|
+
return isNonEmptyArr(errors) ? Validation.make.failedAll(errors) : Validation.make.passed(record);
|
|
2255
2353
|
});
|
|
2256
2354
|
});
|
|
2257
2355
|
})(TaskValidation || (TaskValidation = {}));
|
|
2258
2356
|
|
|
2259
2357
|
// src/Core/Task.ts
|
|
2260
|
-
var toPromise = (task, signal) => Deferred.
|
|
2261
|
-
var getMs2 = (duration) => Duration.
|
|
2358
|
+
var toPromise = (task, signal) => Deferred.to.Promise(task(signal));
|
|
2359
|
+
var getMs2 = (duration) => Duration.to.milliseconds(duration);
|
|
2262
2360
|
var Task;
|
|
2263
2361
|
((Task2) => {
|
|
2264
|
-
Task2.resolve = (value) => () => Deferred.
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
Task2.
|
|
2362
|
+
Task2.resolve = (value) => () => Deferred.from.Promise(globalThis.Promise.resolve(value));
|
|
2363
|
+
let from;
|
|
2364
|
+
((from2) => {
|
|
2365
|
+
from2.Promise = (f) => (signal) => Deferred.from.Promise(f(signal));
|
|
2366
|
+
from2.sync = (f) => () => Deferred.from.Promise(globalThis.Promise.resolve(f()));
|
|
2367
|
+
})(from = Task2.from || (Task2.from = {}));
|
|
2368
|
+
Task2.map = (f) => (data) => from.Promise((signal) => toPromise(data, signal).then(f));
|
|
2369
|
+
Task2.chain = (f) => (data) => from.Promise((signal) => toPromise(data, signal).then((a) => toPromise(f(a), signal)));
|
|
2370
|
+
Task2.ap = (arg) => (data) => from.Promise((signal) => Promise.all([toPromise(data, signal), toPromise(arg, signal)]).then(([f, a]) => f(a)));
|
|
2371
|
+
Task2.tap = (f) => (data) => from.Promise(
|
|
2271
2372
|
(signal) => toPromise(data, signal).then((a) => {
|
|
2272
2373
|
f(a);
|
|
2273
2374
|
return a;
|
|
2274
2375
|
})
|
|
2275
2376
|
);
|
|
2276
|
-
Task2.all = (tasks) =>
|
|
2377
|
+
Task2.all = (tasks) => from.Promise(
|
|
2277
2378
|
(signal) => Promise.all(tasks.map((t) => toPromise(t, signal)))
|
|
2278
2379
|
);
|
|
2279
|
-
Task2.delay = (duration) => (data) =>
|
|
2380
|
+
Task2.delay = (duration) => (data) => from.Promise(
|
|
2280
2381
|
(signal) => new Promise((res) => {
|
|
2281
2382
|
let timerId;
|
|
2282
2383
|
const onAbort = () => {
|
|
@@ -2295,7 +2396,7 @@ var Task;
|
|
|
2295
2396
|
}, getMs2(duration));
|
|
2296
2397
|
})
|
|
2297
2398
|
);
|
|
2298
|
-
Task2.repeat = (options) => (task) =>
|
|
2399
|
+
Task2.repeat = (options) => (task) => from.Promise((signal) => {
|
|
2299
2400
|
const { times, delay: delayDuration } = options;
|
|
2300
2401
|
if (times <= 0) {
|
|
2301
2402
|
return Promise.resolve([]);
|
|
@@ -2329,7 +2430,7 @@ var Task;
|
|
|
2329
2430
|
};
|
|
2330
2431
|
return run2(times);
|
|
2331
2432
|
});
|
|
2332
|
-
Task2.repeatUntil = (options) => (task) =>
|
|
2433
|
+
Task2.repeatUntil = (options) => (task) => from.Promise((signal) => {
|
|
2333
2434
|
const { when: predicate, delay: delayDuration, maxAttempts } = options;
|
|
2334
2435
|
const wait = () => new Promise((r) => {
|
|
2335
2436
|
let timerId;
|
|
@@ -2366,10 +2467,10 @@ var Task;
|
|
|
2366
2467
|
});
|
|
2367
2468
|
Task2.race = (tasks) => {
|
|
2368
2469
|
if (tasks.length === 0) {
|
|
2369
|
-
return () => Deferred.
|
|
2470
|
+
return () => Deferred.from.Promise(new Promise(() => {
|
|
2370
2471
|
}));
|
|
2371
2472
|
}
|
|
2372
|
-
return
|
|
2473
|
+
return from.Promise((outerSignal) => {
|
|
2373
2474
|
const controllers = tasks.map(() => new AbortController());
|
|
2374
2475
|
const onOuterAbort = () => {
|
|
2375
2476
|
for (const ctrl of controllers) {
|
|
@@ -2398,8 +2499,8 @@ var Task;
|
|
|
2398
2499
|
return Promise.race(promises);
|
|
2399
2500
|
});
|
|
2400
2501
|
};
|
|
2401
|
-
Task2.sequence = (tasks) =>
|
|
2402
|
-
Task2.sequential = (tasks) =>
|
|
2502
|
+
Task2.sequence = (tasks) => from.Promise((signal) => Promise.all(tasks.map((t) => toPromise(t, signal))));
|
|
2503
|
+
Task2.sequential = (tasks) => from.Promise(async (signal) => {
|
|
2403
2504
|
const results = [];
|
|
2404
2505
|
for (const task of tasks) {
|
|
2405
2506
|
if (signal?.aborted) {
|
|
@@ -2409,7 +2510,7 @@ var Task;
|
|
|
2409
2510
|
}
|
|
2410
2511
|
return results;
|
|
2411
2512
|
});
|
|
2412
|
-
Task2.timeout = (duration, onTimeout) => (task) =>
|
|
2513
|
+
Task2.timeout = (duration, onTimeout) => (task) => from.Promise((outerSignal) => {
|
|
2413
2514
|
const controller = new AbortController();
|
|
2414
2515
|
let timerId;
|
|
2415
2516
|
let cleanUp = () => {
|
|
@@ -2432,13 +2533,13 @@ var Task;
|
|
|
2432
2533
|
return Promise.race([
|
|
2433
2534
|
toPromise(task, controller.signal).then((a) => {
|
|
2434
2535
|
cleanUp();
|
|
2435
|
-
return Result.ok(a);
|
|
2536
|
+
return Result.make.ok(a);
|
|
2436
2537
|
}),
|
|
2437
2538
|
new Promise((res) => {
|
|
2438
2539
|
timerId = setTimeout(() => {
|
|
2439
2540
|
controller.abort();
|
|
2440
2541
|
cleanUp();
|
|
2441
|
-
res(Result.err(onTimeout()));
|
|
2542
|
+
res(Result.make.err(onTimeout()));
|
|
2442
2543
|
}, getMs2(duration));
|
|
2443
2544
|
})
|
|
2444
2545
|
]);
|
|
@@ -2457,7 +2558,7 @@ var Task;
|
|
|
2457
2558
|
outerSignal.addEventListener("abort", () => controller.abort(outerSignal.reason), { once: true });
|
|
2458
2559
|
}
|
|
2459
2560
|
}
|
|
2460
|
-
return Deferred.
|
|
2561
|
+
return Deferred.from.Promise(factory(controller.signal));
|
|
2461
2562
|
};
|
|
2462
2563
|
return { task, abort };
|
|
2463
2564
|
};
|
|
@@ -2474,67 +2575,73 @@ var Task;
|
|
|
2474
2575
|
// src/Core/These.ts
|
|
2475
2576
|
var These;
|
|
2476
2577
|
((These2) => {
|
|
2477
|
-
|
|
2478
|
-
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
|
|
2482
|
-
These2.
|
|
2578
|
+
let make;
|
|
2579
|
+
((make2) => {
|
|
2580
|
+
make2.first = (value) => ({ kind: "First", first: value });
|
|
2581
|
+
make2.second = (value) => ({ kind: "Second", second: value });
|
|
2582
|
+
make2.both = (f, s) => ({ kind: "Both", first: f, second: s });
|
|
2583
|
+
})(make = These2.make || (These2.make = {}));
|
|
2584
|
+
let is;
|
|
2585
|
+
((is2) => {
|
|
2586
|
+
is2.first = (data) => data.kind === "First";
|
|
2587
|
+
is2.second = (data) => data.kind === "Second";
|
|
2588
|
+
is2.both = (data) => data.kind === "Both";
|
|
2589
|
+
})(is = These2.is || (These2.is = {}));
|
|
2483
2590
|
These2.hasFirst = (data) => data.kind === "First" || data.kind === "Both";
|
|
2484
2591
|
These2.hasSecond = (data) => data.kind === "Second" || data.kind === "Both";
|
|
2485
2592
|
These2.mapFirst = (f) => (data) => {
|
|
2486
|
-
if (
|
|
2593
|
+
if (is.second(data)) {
|
|
2487
2594
|
return data;
|
|
2488
2595
|
}
|
|
2489
|
-
if (
|
|
2490
|
-
return
|
|
2596
|
+
if (is.first(data)) {
|
|
2597
|
+
return make.first(f(data.first));
|
|
2491
2598
|
}
|
|
2492
|
-
return
|
|
2599
|
+
return make.both(f(data.first), data.second);
|
|
2493
2600
|
};
|
|
2494
2601
|
These2.mapSecond = (f) => (data) => {
|
|
2495
|
-
if (
|
|
2602
|
+
if (is.first(data)) {
|
|
2496
2603
|
return data;
|
|
2497
2604
|
}
|
|
2498
|
-
if (
|
|
2499
|
-
return
|
|
2605
|
+
if (is.second(data)) {
|
|
2606
|
+
return make.second(f(data.second));
|
|
2500
2607
|
}
|
|
2501
|
-
return
|
|
2608
|
+
return make.both(data.first, f(data.second));
|
|
2502
2609
|
};
|
|
2503
2610
|
These2.mapBoth = (onFirst, onSecond) => (data) => {
|
|
2504
|
-
if (
|
|
2505
|
-
return
|
|
2611
|
+
if (is.second(data)) {
|
|
2612
|
+
return make.second(onSecond(data.second));
|
|
2506
2613
|
}
|
|
2507
|
-
if (
|
|
2508
|
-
return
|
|
2614
|
+
if (is.first(data)) {
|
|
2615
|
+
return make.first(onFirst(data.first));
|
|
2509
2616
|
}
|
|
2510
|
-
return
|
|
2617
|
+
return make.both(onFirst(data.first), onSecond(data.second));
|
|
2511
2618
|
};
|
|
2512
2619
|
These2.chainFirst = (f) => (data) => {
|
|
2513
|
-
if (
|
|
2620
|
+
if (is.second(data)) {
|
|
2514
2621
|
return data;
|
|
2515
2622
|
}
|
|
2516
2623
|
return f(data.first);
|
|
2517
2624
|
};
|
|
2518
2625
|
These2.chainSecond = (f) => (data) => {
|
|
2519
|
-
if (
|
|
2626
|
+
if (is.first(data)) {
|
|
2520
2627
|
return data;
|
|
2521
2628
|
}
|
|
2522
2629
|
return f(data.second);
|
|
2523
2630
|
};
|
|
2524
2631
|
These2.fold = (onFirst, onSecond, onBoth) => (data) => {
|
|
2525
|
-
if (
|
|
2632
|
+
if (is.second(data)) {
|
|
2526
2633
|
return onSecond(data.second);
|
|
2527
2634
|
}
|
|
2528
|
-
if (
|
|
2635
|
+
if (is.first(data)) {
|
|
2529
2636
|
return onFirst(data.first);
|
|
2530
2637
|
}
|
|
2531
2638
|
return onBoth(data.first, data.second);
|
|
2532
2639
|
};
|
|
2533
2640
|
These2.match = (cases) => (data) => {
|
|
2534
|
-
if (
|
|
2641
|
+
if (is.second(data)) {
|
|
2535
2642
|
return cases.second(data.second);
|
|
2536
2643
|
}
|
|
2537
|
-
if (
|
|
2644
|
+
if (is.first(data)) {
|
|
2538
2645
|
return cases.first(data.first);
|
|
2539
2646
|
}
|
|
2540
2647
|
return cases.both(data.first, data.second);
|
|
@@ -2548,20 +2655,24 @@ var These;
|
|
|
2548
2655
|
return data;
|
|
2549
2656
|
};
|
|
2550
2657
|
These2.swap = (data) => {
|
|
2551
|
-
if (
|
|
2552
|
-
return
|
|
2658
|
+
if (is.second(data)) {
|
|
2659
|
+
return make.first(data.second);
|
|
2553
2660
|
}
|
|
2554
|
-
if (
|
|
2555
|
-
return
|
|
2661
|
+
if (is.first(data)) {
|
|
2662
|
+
return make.second(data.first);
|
|
2556
2663
|
}
|
|
2557
|
-
return
|
|
2664
|
+
return make.both(data.second, data.first);
|
|
2558
2665
|
};
|
|
2559
2666
|
})(These || (These = {}));
|
|
2560
2667
|
|
|
2561
2668
|
// src/Core/Tuple.ts
|
|
2562
2669
|
var Tuple;
|
|
2563
2670
|
((Tuple2) => {
|
|
2564
|
-
|
|
2671
|
+
let from;
|
|
2672
|
+
((from2) => {
|
|
2673
|
+
from2.pair = (first2, second2) => [first2, second2];
|
|
2674
|
+
from2.array = (arr) => arr;
|
|
2675
|
+
})(from = Tuple2.from || (Tuple2.from = {}));
|
|
2565
2676
|
Tuple2.first = (tuple) => tuple[0];
|
|
2566
2677
|
Tuple2.second = (tuple) => tuple[1];
|
|
2567
2678
|
Tuple2.mapFirst = (f) => (tuple) => [f(tuple[0]), tuple[1]];
|
|
@@ -2572,7 +2683,10 @@ var Tuple;
|
|
|
2572
2683
|
];
|
|
2573
2684
|
Tuple2.fold = (f) => (tuple) => f(tuple[0], tuple[1]);
|
|
2574
2685
|
Tuple2.swap = (tuple) => [tuple[1], tuple[0]];
|
|
2575
|
-
|
|
2686
|
+
let to;
|
|
2687
|
+
((to2) => {
|
|
2688
|
+
to2.Array = (tuple) => [...tuple];
|
|
2689
|
+
})(to = Tuple2.to || (Tuple2.to = {}));
|
|
2576
2690
|
Tuple2.tap = (f) => (tuple) => {
|
|
2577
2691
|
f(tuple[0], tuple[1]);
|
|
2578
2692
|
return tuple;
|
|
@@ -2582,59 +2696,71 @@ var Tuple;
|
|
|
2582
2696
|
// src/Core/Validation.ts
|
|
2583
2697
|
var Validation;
|
|
2584
2698
|
((Validation2) => {
|
|
2585
|
-
|
|
2586
|
-
|
|
2587
|
-
|
|
2588
|
-
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2593
|
-
|
|
2594
|
-
|
|
2699
|
+
let make;
|
|
2700
|
+
((make2) => {
|
|
2701
|
+
make2.passed = (value) => ({ kind: "Passed", value });
|
|
2702
|
+
make2.failed = (error) => ({ kind: "Failed", errors: [error] });
|
|
2703
|
+
make2.failedAll = (errors) => ({ kind: "Failed", errors });
|
|
2704
|
+
})(make = Validation2.make || (Validation2.make = {}));
|
|
2705
|
+
let is;
|
|
2706
|
+
((is2) => {
|
|
2707
|
+
is2.passed = (data) => data.kind === "Passed";
|
|
2708
|
+
is2.failed = (data) => data.kind === "Failed";
|
|
2709
|
+
})(is = Validation2.is || (Validation2.is = {}));
|
|
2710
|
+
let from;
|
|
2711
|
+
((from2) => {
|
|
2712
|
+
from2.Predicate = (pred, onFalse) => (a) => pred(a) ? make.passed(a) : make.failed(onFalse(a));
|
|
2713
|
+
from2.nullable = (onNull) => (value) => value === null || value === void 0 ? make.failed(onNull()) : make.passed(value);
|
|
2714
|
+
from2.Maybe = (onNone) => (maybe) => Maybe.is.none(maybe) ? make.failed(onNone()) : make.passed(maybe.value);
|
|
2715
|
+
from2.Result = (data) => data.kind === "Ok" ? make.passed(data.value) : make.failed(data.error);
|
|
2716
|
+
})(from = Validation2.from || (Validation2.from = {}));
|
|
2717
|
+
Validation2.map = (f) => (data) => is.passed(data) ? make.passed(f(data.value)) : data;
|
|
2718
|
+
Validation2.mapError = (f) => (data) => is.failed(data) ? make.failedAll(data.errors.map(f)) : data;
|
|
2595
2719
|
Validation2.ap = (arg) => (data) => {
|
|
2596
|
-
if (
|
|
2597
|
-
return
|
|
2720
|
+
if (is.passed(data)) {
|
|
2721
|
+
return is.passed(arg) ? make.passed(data.value(arg.value)) : make.failedAll(arg.errors);
|
|
2598
2722
|
}
|
|
2599
|
-
return
|
|
2723
|
+
return is.passed(arg) ? make.failedAll(data.errors) : make.failedAll([...data.errors, ...arg.errors]);
|
|
2600
2724
|
};
|
|
2601
|
-
Validation2.fold = (onFailed, onPassed) => (data) =>
|
|
2602
|
-
Validation2.match = (cases) => (data) =>
|
|
2603
|
-
Validation2.getOrElse = (defaultValue) => (data) =>
|
|
2725
|
+
Validation2.fold = (onFailed, onPassed) => (data) => is.passed(data) ? onPassed(data.value) : onFailed(data.errors);
|
|
2726
|
+
Validation2.match = (cases) => (data) => is.passed(data) ? cases.passed(data.value) : cases.failed(data.errors);
|
|
2727
|
+
Validation2.getOrElse = (defaultValue) => (data) => is.passed(data) ? data.value : defaultValue();
|
|
2604
2728
|
Validation2.tap = (f) => (data) => {
|
|
2605
|
-
if (
|
|
2729
|
+
if (is.passed(data)) {
|
|
2606
2730
|
f(data.value);
|
|
2607
2731
|
}
|
|
2608
2732
|
return data;
|
|
2609
2733
|
};
|
|
2610
2734
|
Validation2.tapError = (f) => (data) => {
|
|
2611
|
-
if (
|
|
2735
|
+
if (is.failed(data)) {
|
|
2612
2736
|
f(data.errors);
|
|
2613
2737
|
}
|
|
2614
2738
|
return data;
|
|
2615
2739
|
};
|
|
2616
|
-
Validation2.recover = (fallback) => (data) =>
|
|
2617
|
-
Validation2.recoverUnless = (isBlocked, fallback) => (data) =>
|
|
2618
|
-
|
|
2619
|
-
|
|
2620
|
-
|
|
2740
|
+
Validation2.recover = (fallback) => (data) => is.passed(data) ? data : fallback(data.errors);
|
|
2741
|
+
Validation2.recoverUnless = (isBlocked, fallback) => (data) => is.failed(data) && !data.errors.some(isBlocked) ? fallback() : data;
|
|
2742
|
+
let to;
|
|
2743
|
+
((to2) => {
|
|
2744
|
+
to2.Result = (data) => is.passed(data) ? Result.make.ok(data.value) : Result.make.err(data.errors);
|
|
2745
|
+
to2.Maybe = (data) => is.passed(data) ? Maybe.make.some(data.value) : Maybe.make.none();
|
|
2746
|
+
})(to = Validation2.to || (Validation2.to = {}));
|
|
2621
2747
|
Validation2.product = (first, second) => {
|
|
2622
|
-
if (
|
|
2623
|
-
return
|
|
2748
|
+
if (is.passed(first)) {
|
|
2749
|
+
return is.passed(second) ? make.passed([first.value, second.value]) : make.failedAll(second.errors);
|
|
2624
2750
|
}
|
|
2625
|
-
return
|
|
2751
|
+
return is.passed(second) ? make.failedAll(first.errors) : make.failedAll([...first.errors, ...second.errors]);
|
|
2626
2752
|
};
|
|
2627
2753
|
Validation2.productAll = (data) => {
|
|
2628
2754
|
const values = [];
|
|
2629
2755
|
const errors = [];
|
|
2630
2756
|
for (const v of data) {
|
|
2631
|
-
if (
|
|
2757
|
+
if (is.passed(v)) {
|
|
2632
2758
|
values.push(v.value);
|
|
2633
2759
|
} else {
|
|
2634
2760
|
errors.push(...v.errors);
|
|
2635
2761
|
}
|
|
2636
2762
|
}
|
|
2637
|
-
return isNonEmptyArr(errors) ?
|
|
2763
|
+
return isNonEmptyArr(errors) ? make.failedAll(errors) : make.passed(values);
|
|
2638
2764
|
};
|
|
2639
2765
|
Validation2.struct = (fields) => {
|
|
2640
2766
|
const record = {};
|
|
@@ -2642,14 +2768,14 @@ var Validation;
|
|
|
2642
2768
|
for (const key in fields) {
|
|
2643
2769
|
if (Object.hasOwn(fields, key)) {
|
|
2644
2770
|
const val = fields[key];
|
|
2645
|
-
if (
|
|
2771
|
+
if (is.passed(val)) {
|
|
2646
2772
|
record[key] = val.value;
|
|
2647
2773
|
} else {
|
|
2648
2774
|
errors.push(...val.errors);
|
|
2649
2775
|
}
|
|
2650
2776
|
}
|
|
2651
2777
|
}
|
|
2652
|
-
return isNonEmptyArr(errors) ?
|
|
2778
|
+
return isNonEmptyArr(errors) ? make.failedAll(errors) : make.passed(record);
|
|
2653
2779
|
};
|
|
2654
2780
|
})(Validation || (Validation = {}));
|
|
2655
2781
|
|
|
@@ -2662,11 +2788,11 @@ var ArrMaybe;
|
|
|
2662
2788
|
for (let i = 0; i < n; i++) {
|
|
2663
2789
|
const mapped = f(data[i]);
|
|
2664
2790
|
if (mapped.kind === "None") {
|
|
2665
|
-
return Maybe.none();
|
|
2791
|
+
return Maybe.make.none();
|
|
2666
2792
|
}
|
|
2667
2793
|
result[i] = mapped.value;
|
|
2668
2794
|
}
|
|
2669
|
-
return Maybe.some(result);
|
|
2795
|
+
return Maybe.make.some(result);
|
|
2670
2796
|
};
|
|
2671
2797
|
ArrMaybe2.sequence = (data) => (0, ArrMaybe2.traverse)((a) => a)(data);
|
|
2672
2798
|
})(ArrMaybe || (ArrMaybe = {}));
|
|
@@ -2682,61 +2808,69 @@ var ArrResult;
|
|
|
2682
2808
|
}
|
|
2683
2809
|
result[i] = mapped.value;
|
|
2684
2810
|
}
|
|
2685
|
-
return Result.ok(result);
|
|
2811
|
+
return Result.make.ok(result);
|
|
2686
2812
|
};
|
|
2687
2813
|
ArrResult2.sequence = (data) => (0, ArrResult2.traverse)((a) => a)(data);
|
|
2688
2814
|
})(ArrResult || (ArrResult = {}));
|
|
2689
2815
|
var ArrTaskResult;
|
|
2690
2816
|
((ArrTaskResult2) => {
|
|
2691
|
-
ArrTaskResult2.traverse = (f) => (data) => Task.from(async () => {
|
|
2817
|
+
ArrTaskResult2.traverse = (f) => (data) => Task.from.Promise(async () => {
|
|
2692
2818
|
const result = [];
|
|
2693
2819
|
for (const a of data) {
|
|
2694
|
-
const r = await Deferred.
|
|
2695
|
-
if (Result.
|
|
2820
|
+
const r = await Deferred.to.Promise(f(a)());
|
|
2821
|
+
if (Result.is.err(r)) {
|
|
2696
2822
|
return r;
|
|
2697
2823
|
}
|
|
2698
2824
|
result.push(r.value);
|
|
2699
2825
|
}
|
|
2700
|
-
return Result.ok(result);
|
|
2826
|
+
return Result.make.ok(result);
|
|
2701
2827
|
});
|
|
2702
2828
|
ArrTaskResult2.sequence = (data) => (0, ArrTaskResult2.traverse)((a) => a)(data);
|
|
2703
2829
|
})(ArrTaskResult || (ArrTaskResult = {}));
|
|
2704
2830
|
var ArrTask;
|
|
2705
2831
|
((ArrTask2) => {
|
|
2706
|
-
ArrTask2.traverse = (f) => (data) => Task.from(() => Promise.all(data.map((a) => Deferred.
|
|
2832
|
+
ArrTask2.traverse = (f) => (data) => Task.from.Promise(() => Promise.all(data.map((a) => Deferred.to.Promise(f(a)()))));
|
|
2707
2833
|
ArrTask2.sequence = (data) => (0, ArrTask2.traverse)((a) => a)(data);
|
|
2708
2834
|
ArrTask2.Result = ArrTaskResult;
|
|
2709
2835
|
})(ArrTask || (ArrTask = {}));
|
|
2710
2836
|
var ArrNonEmpty;
|
|
2711
2837
|
((ArrNonEmpty2) => {
|
|
2712
2838
|
ArrNonEmpty2.singleton = (value) => [value];
|
|
2713
|
-
|
|
2839
|
+
let from;
|
|
2840
|
+
((from2) => {
|
|
2841
|
+
from2.Array = (data) => isNonEmptyArr(data) ? Maybe.make.some(data) : Maybe.make.none();
|
|
2842
|
+
})(from = ArrNonEmpty2.from || (ArrNonEmpty2.from = {}));
|
|
2714
2843
|
ArrNonEmpty2.head = (data) => data[0];
|
|
2715
2844
|
ArrNonEmpty2.last = (data) => data[data.length - 1];
|
|
2716
2845
|
ArrNonEmpty2.tail = (data) => data.slice(1);
|
|
2717
2846
|
ArrNonEmpty2.reduce = (f) => (data) => data.reduce(f);
|
|
2847
|
+
ArrNonEmpty2.map = (f) => (data) => Arr.map(f)(data);
|
|
2848
|
+
ArrNonEmpty2.mapWithIndex = (f) => (data) => Arr.mapWithIndex(f)(data);
|
|
2849
|
+
ArrNonEmpty2.intersperse = (sep) => (data) => Arr.intersperse(sep)(data);
|
|
2850
|
+
ArrNonEmpty2.concat = (other) => (data) => Arr.concat(other)(data);
|
|
2851
|
+
ArrNonEmpty2.reverse = (data) => Arr.reverse(data);
|
|
2718
2852
|
})(ArrNonEmpty || (ArrNonEmpty = {}));
|
|
2719
2853
|
var Arr;
|
|
2720
2854
|
((Arr2) => {
|
|
2721
|
-
Arr2.head = (data) => data.length > 0 ? Maybe.some(data[0]) : Maybe.none();
|
|
2722
|
-
Arr2.last = (data) => data.length > 0 ? Maybe.some(data[data.length - 1]) : Maybe.none();
|
|
2723
|
-
Arr2.tail = (data) => data.length > 0 ? Maybe.some(data.slice(1)) : Maybe.none();
|
|
2724
|
-
Arr2.init = (data) => data.length > 0 ? Maybe.some(data.slice(0, -1)) : Maybe.none();
|
|
2855
|
+
Arr2.head = (data) => data.length > 0 ? Maybe.make.some(data[0]) : Maybe.make.none();
|
|
2856
|
+
Arr2.last = (data) => data.length > 0 ? Maybe.make.some(data[data.length - 1]) : Maybe.make.none();
|
|
2857
|
+
Arr2.tail = (data) => data.length > 0 ? Maybe.make.some(data.slice(1)) : Maybe.make.none();
|
|
2858
|
+
Arr2.init = (data) => data.length > 0 ? Maybe.make.some(data.slice(0, -1)) : Maybe.make.none();
|
|
2725
2859
|
Arr2.findFirst = (predicate) => (data) => {
|
|
2726
2860
|
const idx = data.findIndex(predicate);
|
|
2727
|
-
return idx !== -1 ? Maybe.some(data[idx]) : Maybe.none();
|
|
2861
|
+
return idx !== -1 ? Maybe.make.some(data[idx]) : Maybe.make.none();
|
|
2728
2862
|
};
|
|
2729
2863
|
Arr2.findLast = (predicate) => (data) => {
|
|
2730
2864
|
for (let i = data.length - 1; i >= 0; i--) {
|
|
2731
2865
|
if (predicate(data[i])) {
|
|
2732
|
-
return Maybe.some(data[i]);
|
|
2866
|
+
return Maybe.make.some(data[i]);
|
|
2733
2867
|
}
|
|
2734
2868
|
}
|
|
2735
|
-
return Maybe.none();
|
|
2869
|
+
return Maybe.make.none();
|
|
2736
2870
|
};
|
|
2737
2871
|
Arr2.findIndex = (predicate) => (data) => {
|
|
2738
2872
|
const idx = data.findIndex(predicate);
|
|
2739
|
-
return idx !== -1 ? Maybe.some(idx) : Maybe.none();
|
|
2873
|
+
return idx !== -1 ? Maybe.make.some(idx) : Maybe.make.none();
|
|
2740
2874
|
};
|
|
2741
2875
|
Arr2.map = (f) => (data) => {
|
|
2742
2876
|
const n = data.length;
|
|
@@ -2933,7 +3067,11 @@ var Arr;
|
|
|
2933
3067
|
Arr2.Maybe = ArrMaybe;
|
|
2934
3068
|
Arr2.Result = ArrResult;
|
|
2935
3069
|
Arr2.Task = ArrTask;
|
|
2936
|
-
|
|
3070
|
+
let is;
|
|
3071
|
+
((is2) => {
|
|
3072
|
+
is2.empty = (data) => data.length === 0;
|
|
3073
|
+
is2.nonEmpty = (data) => isNonEmptyArr(data);
|
|
3074
|
+
})(is = Arr2.is || (Arr2.is = {}));
|
|
2937
3075
|
Arr2.prepend = (value) => (data) => [value, ...data];
|
|
2938
3076
|
Arr2.append = (value) => (data) => [...data, value];
|
|
2939
3077
|
Arr2.size = (data) => data.length;
|
|
@@ -3015,12 +3153,34 @@ var Arr;
|
|
|
3015
3153
|
})(Arr || (Arr = {}));
|
|
3016
3154
|
|
|
3017
3155
|
// src/Data/Dict.ts
|
|
3156
|
+
var DictNonEmpty;
|
|
3157
|
+
((DictNonEmpty2) => {
|
|
3158
|
+
DictNonEmpty2.singleton = (key, value) => new globalThis.Map([[key, value]]);
|
|
3159
|
+
let from;
|
|
3160
|
+
((from2) => {
|
|
3161
|
+
from2.Map = (m) => m.size > 0 ? Maybe.make.some(m) : Maybe.make.none();
|
|
3162
|
+
})(from = DictNonEmpty2.from || (DictNonEmpty2.from = {}));
|
|
3163
|
+
DictNonEmpty2.keys = (m) => Dict.keys(m);
|
|
3164
|
+
DictNonEmpty2.values = (m) => Dict.values(m);
|
|
3165
|
+
DictNonEmpty2.entries = (m) => Dict.entries(m);
|
|
3166
|
+
DictNonEmpty2.reduce = (f) => (m) => (0, DictNonEmpty2.values)(m).reduce(f);
|
|
3167
|
+
DictNonEmpty2.map = (f) => (m) => Dict.map(f)(m);
|
|
3168
|
+
DictNonEmpty2.mapWithKey = (f) => (m) => Dict.mapWithKey(f)(m);
|
|
3169
|
+
})(DictNonEmpty || (DictNonEmpty = {}));
|
|
3018
3170
|
var Dict;
|
|
3019
3171
|
((Dict2) => {
|
|
3172
|
+
let is;
|
|
3173
|
+
((is2) => {
|
|
3174
|
+
is2.empty = (m) => m.size === 0;
|
|
3175
|
+
is2.nonEmpty = (m) => m.size > 0;
|
|
3176
|
+
})(is = Dict2.is || (Dict2.is = {}));
|
|
3020
3177
|
Dict2.empty = () => new globalThis.Map();
|
|
3021
3178
|
Dict2.singleton = (key, value) => new globalThis.Map([[key, value]]);
|
|
3022
|
-
|
|
3023
|
-
|
|
3179
|
+
let from;
|
|
3180
|
+
((from2) => {
|
|
3181
|
+
from2.entries = (entries3) => new globalThis.Map(entries3);
|
|
3182
|
+
from2.Record = (rec) => new globalThis.Map(Object.entries(rec));
|
|
3183
|
+
})(from = Dict2.from || (Dict2.from = {}));
|
|
3024
3184
|
Dict2.groupBy = (keyFn) => (items) => {
|
|
3025
3185
|
const result = new globalThis.Map();
|
|
3026
3186
|
for (const item of items) {
|
|
@@ -3035,9 +3195,8 @@ var Dict;
|
|
|
3035
3195
|
return result;
|
|
3036
3196
|
};
|
|
3037
3197
|
Dict2.has = (key) => (m) => m.has(key);
|
|
3038
|
-
Dict2.lookup = (key) => (m) => m.has(key) ? Maybe.some(m.get(key)) : Maybe.none();
|
|
3198
|
+
Dict2.lookup = (key) => (m) => m.has(key) ? Maybe.make.some(m.get(key)) : Maybe.make.none();
|
|
3039
3199
|
Dict2.size = (m) => m.size;
|
|
3040
|
-
Dict2.isEmpty = (m) => m.size === 0;
|
|
3041
3200
|
Dict2.keys = (m) => [...m.keys()];
|
|
3042
3201
|
Dict2.values = (m) => [...m.values()];
|
|
3043
3202
|
Dict2.entries = (m) => [...m.entries()];
|
|
@@ -3149,7 +3308,11 @@ var Dict;
|
|
|
3149
3308
|
}
|
|
3150
3309
|
return acc;
|
|
3151
3310
|
};
|
|
3152
|
-
|
|
3311
|
+
let to;
|
|
3312
|
+
((to2) => {
|
|
3313
|
+
to2.Record = (m) => Object.fromEntries(m);
|
|
3314
|
+
})(to = Dict2.to || (Dict2.to = {}));
|
|
3315
|
+
Dict2.NonEmpty = DictNonEmpty;
|
|
3153
3316
|
})(Dict || (Dict = {}));
|
|
3154
3317
|
|
|
3155
3318
|
// src/Data/Num.ts
|
|
@@ -3171,21 +3334,21 @@ var Num;
|
|
|
3171
3334
|
Num2.inRange = (start, end) => (n) => n >= start && n < end;
|
|
3172
3335
|
Num2.parse = (s) => {
|
|
3173
3336
|
if (s.trim() === "") {
|
|
3174
|
-
return Maybe.none();
|
|
3337
|
+
return Maybe.make.none();
|
|
3175
3338
|
}
|
|
3176
3339
|
const n = Number(s);
|
|
3177
|
-
return isNaN(n) ? Maybe.none() : Maybe.some(n);
|
|
3340
|
+
return isNaN(n) ? Maybe.make.none() : Maybe.make.some(n);
|
|
3178
3341
|
};
|
|
3179
3342
|
Num2.add = (b) => (a) => a + b;
|
|
3180
3343
|
Num2.subtract = (b) => (a) => a - b;
|
|
3181
3344
|
Num2.multiply = (b) => (a) => a * b;
|
|
3182
|
-
Num2.divide = (b) => (a) => b === 0 ? Maybe.none() : Maybe.some(a / b);
|
|
3345
|
+
Num2.divide = (b) => (a) => b === 0 ? Maybe.make.none() : Maybe.make.some(a / b);
|
|
3183
3346
|
Num2.abs = (n) => Math.abs(n);
|
|
3184
3347
|
Num2.negate = (n) => -n;
|
|
3185
3348
|
Num2.round = (n) => Math.round(n);
|
|
3186
3349
|
Num2.floor = (n) => Math.floor(n);
|
|
3187
3350
|
Num2.ceil = (n) => Math.ceil(n);
|
|
3188
|
-
Num2.remainder = (divisor) => (n) => divisor === 0 ? Maybe.none() : Maybe.some(n % divisor);
|
|
3351
|
+
Num2.remainder = (divisor) => (n) => divisor === 0 ? Maybe.make.none() : Maybe.make.some(n % divisor);
|
|
3189
3352
|
Num2.sum = (ns) => {
|
|
3190
3353
|
let result = 0;
|
|
3191
3354
|
for (let i = 0; i < ns.length; i++) {
|
|
@@ -3193,10 +3356,10 @@ var Num;
|
|
|
3193
3356
|
}
|
|
3194
3357
|
return result;
|
|
3195
3358
|
};
|
|
3196
|
-
Num2.mean = (ns) => ns.length === 0 ? Maybe.none() : Maybe.some((0, Num2.sum)(ns) / ns.length);
|
|
3359
|
+
Num2.mean = (ns) => ns.length === 0 ? Maybe.make.none() : Maybe.make.some((0, Num2.sum)(ns) / ns.length);
|
|
3197
3360
|
Num2.min = (ns) => {
|
|
3198
3361
|
if (ns.length === 0) {
|
|
3199
|
-
return Maybe.none();
|
|
3362
|
+
return Maybe.make.none();
|
|
3200
3363
|
}
|
|
3201
3364
|
let [result] = ns;
|
|
3202
3365
|
for (let i = 1; i < ns.length; i++) {
|
|
@@ -3204,11 +3367,11 @@ var Num;
|
|
|
3204
3367
|
result = ns[i];
|
|
3205
3368
|
}
|
|
3206
3369
|
}
|
|
3207
|
-
return Maybe.some(result);
|
|
3370
|
+
return Maybe.make.some(result);
|
|
3208
3371
|
};
|
|
3209
3372
|
Num2.max = (ns) => {
|
|
3210
3373
|
if (ns.length === 0) {
|
|
3211
|
-
return Maybe.none();
|
|
3374
|
+
return Maybe.make.none();
|
|
3212
3375
|
}
|
|
3213
3376
|
let [result] = ns;
|
|
3214
3377
|
for (let i = 1; i < ns.length; i++) {
|
|
@@ -3216,7 +3379,7 @@ var Num;
|
|
|
3216
3379
|
result = ns[i];
|
|
3217
3380
|
}
|
|
3218
3381
|
}
|
|
3219
|
-
return Maybe.some(result);
|
|
3382
|
+
return Maybe.make.some(result);
|
|
3220
3383
|
};
|
|
3221
3384
|
})(Num || (Num = {}));
|
|
3222
3385
|
|
|
@@ -3259,32 +3422,43 @@ var RecResult;
|
|
|
3259
3422
|
var RecNonEmpty;
|
|
3260
3423
|
((RecNonEmpty2) => {
|
|
3261
3424
|
RecNonEmpty2.singleton = (key, value) => ({ [key]: value });
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
RecNonEmpty2.
|
|
3266
|
-
RecNonEmpty2.
|
|
3267
|
-
|
|
3268
|
-
|
|
3269
|
-
|
|
3425
|
+
let from;
|
|
3426
|
+
((from2) => {
|
|
3427
|
+
from2.Record = (data) => _isNonEmpty(data) ? Maybe.make.some(data) : Maybe.make.none();
|
|
3428
|
+
})(from = RecNonEmpty2.from || (RecNonEmpty2.from = {}));
|
|
3429
|
+
RecNonEmpty2.keys = (data) => Rec.keys(data);
|
|
3430
|
+
RecNonEmpty2.values = (data) => Rec.values(data);
|
|
3431
|
+
RecNonEmpty2.entries = (data) => Rec.entries(data);
|
|
3432
|
+
RecNonEmpty2.reduce = (f) => (data) => (0, RecNonEmpty2.values)(data).reduce(f);
|
|
3433
|
+
RecNonEmpty2.map = (f) => (data) => Rec.map(f)(data);
|
|
3434
|
+
RecNonEmpty2.mapWithKey = (f) => (data) => Rec.mapWithKey(f)(data);
|
|
3270
3435
|
})(RecNonEmpty || (RecNonEmpty = {}));
|
|
3271
3436
|
var Rec;
|
|
3272
3437
|
((Rec2) => {
|
|
3273
|
-
|
|
3274
|
-
|
|
3438
|
+
let is;
|
|
3439
|
+
((is2) => {
|
|
3440
|
+
is2.empty = (data) => Object.keys(data).length === 0;
|
|
3441
|
+
is2.nonEmpty = _isNonEmpty;
|
|
3442
|
+
})(is = Rec2.is || (Rec2.is = {}));
|
|
3443
|
+
Rec2.map = (f) => (data) => {
|
|
3275
3444
|
const recordKeys = Object.keys(data);
|
|
3276
3445
|
const recordValues = Object.values(data);
|
|
3277
3446
|
const result = Object.create(Object.getPrototypeOf(data));
|
|
3278
3447
|
for (let i = 0; i < recordKeys.length; i++) {
|
|
3279
|
-
|
|
3280
|
-
|
|
3281
|
-
|
|
3282
|
-
|
|
3283
|
-
|
|
3284
|
-
|
|
3448
|
+
const key = recordKeys[i];
|
|
3449
|
+
if (key === "__proto__") {
|
|
3450
|
+
Object.defineProperty(result, "__proto__", {
|
|
3451
|
+
value: f(recordValues[i]),
|
|
3452
|
+
writable: true,
|
|
3453
|
+
enumerable: true,
|
|
3454
|
+
configurable: true
|
|
3455
|
+
});
|
|
3456
|
+
} else {
|
|
3457
|
+
result[key] = f(recordValues[i]);
|
|
3458
|
+
}
|
|
3285
3459
|
}
|
|
3286
3460
|
return result;
|
|
3287
|
-
}
|
|
3461
|
+
};
|
|
3288
3462
|
Rec2.filterMap = (f) => (data) => {
|
|
3289
3463
|
const recordKeys = Object.keys(data);
|
|
3290
3464
|
const recordValues = Object.values(data);
|
|
@@ -3302,20 +3476,25 @@ var Rec;
|
|
|
3302
3476
|
}
|
|
3303
3477
|
return result;
|
|
3304
3478
|
};
|
|
3305
|
-
Rec2.mapWithKey = (f) => (
|
|
3479
|
+
Rec2.mapWithKey = (f) => (data) => {
|
|
3306
3480
|
const recordKeys = Object.keys(data);
|
|
3307
3481
|
const recordValues = Object.values(data);
|
|
3308
3482
|
const result = Object.create(Object.getPrototypeOf(data));
|
|
3309
3483
|
for (let i = 0; i < recordKeys.length; i++) {
|
|
3310
|
-
|
|
3311
|
-
|
|
3312
|
-
|
|
3313
|
-
|
|
3314
|
-
|
|
3315
|
-
|
|
3484
|
+
const key = recordKeys[i];
|
|
3485
|
+
if (key === "__proto__") {
|
|
3486
|
+
Object.defineProperty(result, "__proto__", {
|
|
3487
|
+
value: f(key, recordValues[i]),
|
|
3488
|
+
writable: true,
|
|
3489
|
+
enumerable: true,
|
|
3490
|
+
configurable: true
|
|
3491
|
+
});
|
|
3492
|
+
} else {
|
|
3493
|
+
result[key] = f(key, recordValues[i]);
|
|
3494
|
+
}
|
|
3316
3495
|
}
|
|
3317
3496
|
return result;
|
|
3318
|
-
}
|
|
3497
|
+
};
|
|
3319
3498
|
Rec2.filter = (predicate) => (data) => {
|
|
3320
3499
|
const recordKeys = Object.keys(data);
|
|
3321
3500
|
const recordValues = Object.values(data);
|
|
@@ -3345,7 +3524,10 @@ var Rec;
|
|
|
3345
3524
|
Rec2.keys = (data) => Object.keys(data);
|
|
3346
3525
|
Rec2.values = (data) => Object.values(data);
|
|
3347
3526
|
Rec2.entries = (data) => Object.entries(data);
|
|
3348
|
-
|
|
3527
|
+
let from;
|
|
3528
|
+
((from2) => {
|
|
3529
|
+
from2.entries = (data) => Object.fromEntries(data);
|
|
3530
|
+
})(from = Rec2.from || (Rec2.from = {}));
|
|
3349
3531
|
Rec2.groupBy = (keyFn) => (items) => {
|
|
3350
3532
|
const result = {};
|
|
3351
3533
|
for (const item of items) {
|
|
@@ -3386,7 +3568,6 @@ var Rec;
|
|
|
3386
3568
|
...data,
|
|
3387
3569
|
...other
|
|
3388
3570
|
});
|
|
3389
|
-
Rec2.isEmpty = (data) => Object.keys(data).length === 0;
|
|
3390
3571
|
Rec2.size = (data) => Object.keys(data).length;
|
|
3391
3572
|
Rec2.mapKeys = (f) => (data) => {
|
|
3392
3573
|
const result = {};
|
|
@@ -3410,8 +3591,20 @@ var Rec;
|
|
|
3410
3591
|
})(Rec || (Rec = {}));
|
|
3411
3592
|
|
|
3412
3593
|
// src/Data/Str.ts
|
|
3594
|
+
var StrNonEmpty;
|
|
3595
|
+
((StrNonEmpty2) => {
|
|
3596
|
+
let from;
|
|
3597
|
+
((from2) => {
|
|
3598
|
+
from2.String = (s) => s.length > 0 ? Maybe.make.some(s) : Maybe.make.none();
|
|
3599
|
+
})(from = StrNonEmpty2.from || (StrNonEmpty2.from = {}));
|
|
3600
|
+
})(StrNonEmpty || (StrNonEmpty = {}));
|
|
3413
3601
|
var Str;
|
|
3414
3602
|
((Str2) => {
|
|
3603
|
+
let is;
|
|
3604
|
+
((is2) => {
|
|
3605
|
+
is2.empty = (s) => s.length === 0;
|
|
3606
|
+
is2.nonEmpty = (s) => s.length > 0;
|
|
3607
|
+
})(is = Str2.is || (Str2.is = {}));
|
|
3415
3608
|
Str2.split = (separator) => (s) => s.split(separator);
|
|
3416
3609
|
Str2.trim = (s) => s.trim();
|
|
3417
3610
|
Str2.includes = (substring) => (s) => s.includes(substring);
|
|
@@ -3424,7 +3617,6 @@ var Str;
|
|
|
3424
3617
|
Str2.capitalize = (s) => s.length === 0 ? "" : s.charAt(0).toUpperCase() + s.slice(1);
|
|
3425
3618
|
Str2.lines = (s) => s.split(/\r?\n|\r/);
|
|
3426
3619
|
Str2.words = (s) => s.trim().split(/\s+/).filter(Boolean);
|
|
3427
|
-
Str2.isEmpty = (s) => s.length === 0;
|
|
3428
3620
|
Str2.isBlank = (s) => s.trim().length === 0;
|
|
3429
3621
|
Str2.length = (s) => s.length;
|
|
3430
3622
|
Str2.slice = (start, end) => (s) => s.slice(start, end);
|
|
@@ -3443,7 +3635,7 @@ var Str;
|
|
|
3443
3635
|
*/
|
|
3444
3636
|
int: (s) => {
|
|
3445
3637
|
const n = parseInt(s, 10);
|
|
3446
|
-
return isNaN(n) ? Maybe.none() : Maybe.some(n);
|
|
3638
|
+
return isNaN(n) ? Maybe.make.none() : Maybe.make.some(n);
|
|
3447
3639
|
},
|
|
3448
3640
|
/**
|
|
3449
3641
|
* Parses a string as a floating-point number. Returns `None` if the result is `NaN`.
|
|
@@ -3457,27 +3649,49 @@ var Str;
|
|
|
3457
3649
|
*/
|
|
3458
3650
|
float: (s) => {
|
|
3459
3651
|
const n = parseFloat(s);
|
|
3460
|
-
return isNaN(n) ? Maybe.none() : Maybe.some(n);
|
|
3652
|
+
return isNaN(n) ? Maybe.make.none() : Maybe.make.some(n);
|
|
3461
3653
|
}
|
|
3462
3654
|
};
|
|
3463
3655
|
Str2.parseJson = (s) => {
|
|
3464
3656
|
try {
|
|
3465
|
-
return Result.ok(JSON.parse(s));
|
|
3657
|
+
return Result.make.ok(JSON.parse(s));
|
|
3466
3658
|
} catch (error) {
|
|
3467
|
-
return Result.err(error);
|
|
3659
|
+
return Result.make.err(error);
|
|
3468
3660
|
}
|
|
3469
3661
|
};
|
|
3662
|
+
Str2.NonEmpty = StrNonEmpty;
|
|
3470
3663
|
})(Str || (Str = {}));
|
|
3471
3664
|
|
|
3472
3665
|
// src/Data/Uniq.ts
|
|
3666
|
+
var UniqNonEmpty;
|
|
3667
|
+
((UniqNonEmpty2) => {
|
|
3668
|
+
UniqNonEmpty2.singleton = (item) => new globalThis.Set([item]);
|
|
3669
|
+
let from;
|
|
3670
|
+
((from2) => {
|
|
3671
|
+
from2.Set = (s) => s.size > 0 ? Maybe.make.some(s) : Maybe.make.none();
|
|
3672
|
+
})(from = UniqNonEmpty2.from || (UniqNonEmpty2.from = {}));
|
|
3673
|
+
UniqNonEmpty2.reduce = (f) => (s) => to.Array(s).reduce(f);
|
|
3674
|
+
UniqNonEmpty2.map = (f) => (s) => Uniq.map(f)(s);
|
|
3675
|
+
let to;
|
|
3676
|
+
((to2) => {
|
|
3677
|
+
to2.Array = (s) => Uniq.to.Array(s);
|
|
3678
|
+
})(to = UniqNonEmpty2.to || (UniqNonEmpty2.to = {}));
|
|
3679
|
+
})(UniqNonEmpty || (UniqNonEmpty = {}));
|
|
3473
3680
|
var Uniq;
|
|
3474
3681
|
((Uniq2) => {
|
|
3682
|
+
let is;
|
|
3683
|
+
((is2) => {
|
|
3684
|
+
is2.empty = (s) => s.size === 0;
|
|
3685
|
+
is2.nonEmpty = (s) => s.size > 0;
|
|
3686
|
+
})(is = Uniq2.is || (Uniq2.is = {}));
|
|
3475
3687
|
Uniq2.empty = () => new globalThis.Set();
|
|
3476
3688
|
Uniq2.singleton = (item) => new globalThis.Set([item]);
|
|
3477
|
-
|
|
3689
|
+
let from;
|
|
3690
|
+
((from2) => {
|
|
3691
|
+
from2.Array = (arr) => new globalThis.Set(arr);
|
|
3692
|
+
})(from = Uniq2.from || (Uniq2.from = {}));
|
|
3478
3693
|
Uniq2.has = (item) => (s) => s.has(item);
|
|
3479
3694
|
Uniq2.size = (s) => s.size;
|
|
3480
|
-
Uniq2.isEmpty = (s) => s.size === 0;
|
|
3481
3695
|
Uniq2.isSubsetOf = (other) => (s) => {
|
|
3482
3696
|
const set = s;
|
|
3483
3697
|
if (typeof set.isSubsetOf === "function") {
|
|
@@ -3566,7 +3780,11 @@ var Uniq;
|
|
|
3566
3780
|
}
|
|
3567
3781
|
return acc;
|
|
3568
3782
|
};
|
|
3569
|
-
|
|
3783
|
+
let to;
|
|
3784
|
+
((to2) => {
|
|
3785
|
+
to2.Array = (s) => [...s];
|
|
3786
|
+
})(to = Uniq2.to || (Uniq2.to = {}));
|
|
3787
|
+
Uniq2.NonEmpty = UniqNonEmpty;
|
|
3570
3788
|
})(Uniq || (Uniq = {}));
|
|
3571
3789
|
// Annotate the CommonJS export names for ESM import in node:
|
|
3572
3790
|
0 && (module.exports = {
|