@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/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;
|
|
@@ -2930,10 +3064,29 @@ var Arr;
|
|
|
2930
3064
|
return result;
|
|
2931
3065
|
};
|
|
2932
3066
|
Arr2.reduce = (initial, f) => (data) => data.reduce(f, initial);
|
|
2933
|
-
|
|
2934
|
-
|
|
2935
|
-
|
|
2936
|
-
|
|
3067
|
+
const _traverseTask = Object.assign((f) => ArrTask.traverse(f), {
|
|
3068
|
+
Result: ArrTaskResult.traverse
|
|
3069
|
+
});
|
|
3070
|
+
const _sequenceTask = Object.assign((data) => ArrTask.sequence(data), {
|
|
3071
|
+
Result: ArrTaskResult.sequence
|
|
3072
|
+
});
|
|
3073
|
+
let traverse;
|
|
3074
|
+
((traverse2) => {
|
|
3075
|
+
traverse2.Maybe = ArrMaybe.traverse;
|
|
3076
|
+
traverse2.Result = ArrResult.traverse;
|
|
3077
|
+
traverse2.Task = _traverseTask;
|
|
3078
|
+
})(traverse = Arr2.traverse || (Arr2.traverse = {}));
|
|
3079
|
+
let sequence;
|
|
3080
|
+
((sequence2) => {
|
|
3081
|
+
sequence2.Maybe = ArrMaybe.sequence;
|
|
3082
|
+
sequence2.Result = ArrResult.sequence;
|
|
3083
|
+
sequence2.Task = _sequenceTask;
|
|
3084
|
+
})(sequence = Arr2.sequence || (Arr2.sequence = {}));
|
|
3085
|
+
let is;
|
|
3086
|
+
((is2) => {
|
|
3087
|
+
is2.empty = (data) => data.length === 0;
|
|
3088
|
+
is2.nonEmpty = (data) => isNonEmptyArr(data);
|
|
3089
|
+
})(is = Arr2.is || (Arr2.is = {}));
|
|
2937
3090
|
Arr2.prepend = (value) => (data) => [value, ...data];
|
|
2938
3091
|
Arr2.append = (value) => (data) => [...data, value];
|
|
2939
3092
|
Arr2.size = (data) => data.length;
|
|
@@ -3015,12 +3168,34 @@ var Arr;
|
|
|
3015
3168
|
})(Arr || (Arr = {}));
|
|
3016
3169
|
|
|
3017
3170
|
// src/Data/Dict.ts
|
|
3171
|
+
var DictNonEmpty;
|
|
3172
|
+
((DictNonEmpty2) => {
|
|
3173
|
+
DictNonEmpty2.singleton = (key, value) => new globalThis.Map([[key, value]]);
|
|
3174
|
+
let from;
|
|
3175
|
+
((from2) => {
|
|
3176
|
+
from2.Map = (m) => m.size > 0 ? Maybe.make.some(m) : Maybe.make.none();
|
|
3177
|
+
})(from = DictNonEmpty2.from || (DictNonEmpty2.from = {}));
|
|
3178
|
+
DictNonEmpty2.keys = (m) => Dict.keys(m);
|
|
3179
|
+
DictNonEmpty2.values = (m) => Dict.values(m);
|
|
3180
|
+
DictNonEmpty2.entries = (m) => Dict.entries(m);
|
|
3181
|
+
DictNonEmpty2.reduce = (f) => (m) => (0, DictNonEmpty2.values)(m).reduce(f);
|
|
3182
|
+
DictNonEmpty2.map = (f) => (m) => Dict.map(f)(m);
|
|
3183
|
+
DictNonEmpty2.mapWithKey = (f) => (m) => Dict.mapWithKey(f)(m);
|
|
3184
|
+
})(DictNonEmpty || (DictNonEmpty = {}));
|
|
3018
3185
|
var Dict;
|
|
3019
3186
|
((Dict2) => {
|
|
3187
|
+
let is;
|
|
3188
|
+
((is2) => {
|
|
3189
|
+
is2.empty = (m) => m.size === 0;
|
|
3190
|
+
is2.nonEmpty = (m) => m.size > 0;
|
|
3191
|
+
})(is = Dict2.is || (Dict2.is = {}));
|
|
3020
3192
|
Dict2.empty = () => new globalThis.Map();
|
|
3021
3193
|
Dict2.singleton = (key, value) => new globalThis.Map([[key, value]]);
|
|
3022
|
-
|
|
3023
|
-
|
|
3194
|
+
let from;
|
|
3195
|
+
((from2) => {
|
|
3196
|
+
from2.entries = (entries3) => new globalThis.Map(entries3);
|
|
3197
|
+
from2.Record = (rec) => new globalThis.Map(Object.entries(rec));
|
|
3198
|
+
})(from = Dict2.from || (Dict2.from = {}));
|
|
3024
3199
|
Dict2.groupBy = (keyFn) => (items) => {
|
|
3025
3200
|
const result = new globalThis.Map();
|
|
3026
3201
|
for (const item of items) {
|
|
@@ -3035,9 +3210,8 @@ var Dict;
|
|
|
3035
3210
|
return result;
|
|
3036
3211
|
};
|
|
3037
3212
|
Dict2.has = (key) => (m) => m.has(key);
|
|
3038
|
-
Dict2.lookup = (key) => (m) => m.has(key) ? Maybe.some(m.get(key)) : Maybe.none();
|
|
3213
|
+
Dict2.lookup = (key) => (m) => m.has(key) ? Maybe.make.some(m.get(key)) : Maybe.make.none();
|
|
3039
3214
|
Dict2.size = (m) => m.size;
|
|
3040
|
-
Dict2.isEmpty = (m) => m.size === 0;
|
|
3041
3215
|
Dict2.keys = (m) => [...m.keys()];
|
|
3042
3216
|
Dict2.values = (m) => [...m.values()];
|
|
3043
3217
|
Dict2.entries = (m) => [...m.entries()];
|
|
@@ -3149,7 +3323,11 @@ var Dict;
|
|
|
3149
3323
|
}
|
|
3150
3324
|
return acc;
|
|
3151
3325
|
};
|
|
3152
|
-
|
|
3326
|
+
let to;
|
|
3327
|
+
((to2) => {
|
|
3328
|
+
to2.Record = (m) => Object.fromEntries(m);
|
|
3329
|
+
})(to = Dict2.to || (Dict2.to = {}));
|
|
3330
|
+
Dict2.NonEmpty = DictNonEmpty;
|
|
3153
3331
|
})(Dict || (Dict = {}));
|
|
3154
3332
|
|
|
3155
3333
|
// src/Data/Num.ts
|
|
@@ -3171,21 +3349,21 @@ var Num;
|
|
|
3171
3349
|
Num2.inRange = (start, end) => (n) => n >= start && n < end;
|
|
3172
3350
|
Num2.parse = (s) => {
|
|
3173
3351
|
if (s.trim() === "") {
|
|
3174
|
-
return Maybe.none();
|
|
3352
|
+
return Maybe.make.none();
|
|
3175
3353
|
}
|
|
3176
3354
|
const n = Number(s);
|
|
3177
|
-
return isNaN(n) ? Maybe.none() : Maybe.some(n);
|
|
3355
|
+
return isNaN(n) ? Maybe.make.none() : Maybe.make.some(n);
|
|
3178
3356
|
};
|
|
3179
3357
|
Num2.add = (b) => (a) => a + b;
|
|
3180
3358
|
Num2.subtract = (b) => (a) => a - b;
|
|
3181
3359
|
Num2.multiply = (b) => (a) => a * b;
|
|
3182
|
-
Num2.divide = (b) => (a) => b === 0 ? Maybe.none() : Maybe.some(a / b);
|
|
3360
|
+
Num2.divide = (b) => (a) => b === 0 ? Maybe.make.none() : Maybe.make.some(a / b);
|
|
3183
3361
|
Num2.abs = (n) => Math.abs(n);
|
|
3184
3362
|
Num2.negate = (n) => -n;
|
|
3185
3363
|
Num2.round = (n) => Math.round(n);
|
|
3186
3364
|
Num2.floor = (n) => Math.floor(n);
|
|
3187
3365
|
Num2.ceil = (n) => Math.ceil(n);
|
|
3188
|
-
Num2.remainder = (divisor) => (n) => divisor === 0 ? Maybe.none() : Maybe.some(n % divisor);
|
|
3366
|
+
Num2.remainder = (divisor) => (n) => divisor === 0 ? Maybe.make.none() : Maybe.make.some(n % divisor);
|
|
3189
3367
|
Num2.sum = (ns) => {
|
|
3190
3368
|
let result = 0;
|
|
3191
3369
|
for (let i = 0; i < ns.length; i++) {
|
|
@@ -3193,10 +3371,10 @@ var Num;
|
|
|
3193
3371
|
}
|
|
3194
3372
|
return result;
|
|
3195
3373
|
};
|
|
3196
|
-
Num2.mean = (ns) => ns.length === 0 ? Maybe.none() : Maybe.some((0, Num2.sum)(ns) / ns.length);
|
|
3374
|
+
Num2.mean = (ns) => ns.length === 0 ? Maybe.make.none() : Maybe.make.some((0, Num2.sum)(ns) / ns.length);
|
|
3197
3375
|
Num2.min = (ns) => {
|
|
3198
3376
|
if (ns.length === 0) {
|
|
3199
|
-
return Maybe.none();
|
|
3377
|
+
return Maybe.make.none();
|
|
3200
3378
|
}
|
|
3201
3379
|
let [result] = ns;
|
|
3202
3380
|
for (let i = 1; i < ns.length; i++) {
|
|
@@ -3204,11 +3382,11 @@ var Num;
|
|
|
3204
3382
|
result = ns[i];
|
|
3205
3383
|
}
|
|
3206
3384
|
}
|
|
3207
|
-
return Maybe.some(result);
|
|
3385
|
+
return Maybe.make.some(result);
|
|
3208
3386
|
};
|
|
3209
3387
|
Num2.max = (ns) => {
|
|
3210
3388
|
if (ns.length === 0) {
|
|
3211
|
-
return Maybe.none();
|
|
3389
|
+
return Maybe.make.none();
|
|
3212
3390
|
}
|
|
3213
3391
|
let [result] = ns;
|
|
3214
3392
|
for (let i = 1; i < ns.length; i++) {
|
|
@@ -3216,7 +3394,7 @@ var Num;
|
|
|
3216
3394
|
result = ns[i];
|
|
3217
3395
|
}
|
|
3218
3396
|
}
|
|
3219
|
-
return Maybe.some(result);
|
|
3397
|
+
return Maybe.make.some(result);
|
|
3220
3398
|
};
|
|
3221
3399
|
})(Num || (Num = {}));
|
|
3222
3400
|
|
|
@@ -3259,32 +3437,43 @@ var RecResult;
|
|
|
3259
3437
|
var RecNonEmpty;
|
|
3260
3438
|
((RecNonEmpty2) => {
|
|
3261
3439
|
RecNonEmpty2.singleton = (key, value) => ({ [key]: value });
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
RecNonEmpty2.
|
|
3266
|
-
RecNonEmpty2.
|
|
3267
|
-
|
|
3268
|
-
|
|
3269
|
-
|
|
3440
|
+
let from;
|
|
3441
|
+
((from2) => {
|
|
3442
|
+
from2.Record = (data) => _isNonEmpty(data) ? Maybe.make.some(data) : Maybe.make.none();
|
|
3443
|
+
})(from = RecNonEmpty2.from || (RecNonEmpty2.from = {}));
|
|
3444
|
+
RecNonEmpty2.keys = (data) => Rec.keys(data);
|
|
3445
|
+
RecNonEmpty2.values = (data) => Rec.values(data);
|
|
3446
|
+
RecNonEmpty2.entries = (data) => Rec.entries(data);
|
|
3447
|
+
RecNonEmpty2.reduce = (f) => (data) => (0, RecNonEmpty2.values)(data).reduce(f);
|
|
3448
|
+
RecNonEmpty2.map = (f) => (data) => Rec.map(f)(data);
|
|
3449
|
+
RecNonEmpty2.mapWithKey = (f) => (data) => Rec.mapWithKey(f)(data);
|
|
3270
3450
|
})(RecNonEmpty || (RecNonEmpty = {}));
|
|
3271
3451
|
var Rec;
|
|
3272
3452
|
((Rec2) => {
|
|
3273
|
-
|
|
3274
|
-
|
|
3453
|
+
let is;
|
|
3454
|
+
((is2) => {
|
|
3455
|
+
is2.empty = (data) => Object.keys(data).length === 0;
|
|
3456
|
+
is2.nonEmpty = _isNonEmpty;
|
|
3457
|
+
})(is = Rec2.is || (Rec2.is = {}));
|
|
3458
|
+
Rec2.map = (f) => (data) => {
|
|
3275
3459
|
const recordKeys = Object.keys(data);
|
|
3276
3460
|
const recordValues = Object.values(data);
|
|
3277
3461
|
const result = Object.create(Object.getPrototypeOf(data));
|
|
3278
3462
|
for (let i = 0; i < recordKeys.length; i++) {
|
|
3279
|
-
|
|
3280
|
-
|
|
3281
|
-
|
|
3282
|
-
|
|
3283
|
-
|
|
3284
|
-
|
|
3463
|
+
const key = recordKeys[i];
|
|
3464
|
+
if (key === "__proto__") {
|
|
3465
|
+
Object.defineProperty(result, "__proto__", {
|
|
3466
|
+
value: f(recordValues[i]),
|
|
3467
|
+
writable: true,
|
|
3468
|
+
enumerable: true,
|
|
3469
|
+
configurable: true
|
|
3470
|
+
});
|
|
3471
|
+
} else {
|
|
3472
|
+
result[key] = f(recordValues[i]);
|
|
3473
|
+
}
|
|
3285
3474
|
}
|
|
3286
3475
|
return result;
|
|
3287
|
-
}
|
|
3476
|
+
};
|
|
3288
3477
|
Rec2.filterMap = (f) => (data) => {
|
|
3289
3478
|
const recordKeys = Object.keys(data);
|
|
3290
3479
|
const recordValues = Object.values(data);
|
|
@@ -3302,20 +3491,25 @@ var Rec;
|
|
|
3302
3491
|
}
|
|
3303
3492
|
return result;
|
|
3304
3493
|
};
|
|
3305
|
-
Rec2.mapWithKey = (f) => (
|
|
3494
|
+
Rec2.mapWithKey = (f) => (data) => {
|
|
3306
3495
|
const recordKeys = Object.keys(data);
|
|
3307
3496
|
const recordValues = Object.values(data);
|
|
3308
3497
|
const result = Object.create(Object.getPrototypeOf(data));
|
|
3309
3498
|
for (let i = 0; i < recordKeys.length; i++) {
|
|
3310
|
-
|
|
3311
|
-
|
|
3312
|
-
|
|
3313
|
-
|
|
3314
|
-
|
|
3315
|
-
|
|
3499
|
+
const key = recordKeys[i];
|
|
3500
|
+
if (key === "__proto__") {
|
|
3501
|
+
Object.defineProperty(result, "__proto__", {
|
|
3502
|
+
value: f(key, recordValues[i]),
|
|
3503
|
+
writable: true,
|
|
3504
|
+
enumerable: true,
|
|
3505
|
+
configurable: true
|
|
3506
|
+
});
|
|
3507
|
+
} else {
|
|
3508
|
+
result[key] = f(key, recordValues[i]);
|
|
3509
|
+
}
|
|
3316
3510
|
}
|
|
3317
3511
|
return result;
|
|
3318
|
-
}
|
|
3512
|
+
};
|
|
3319
3513
|
Rec2.filter = (predicate) => (data) => {
|
|
3320
3514
|
const recordKeys = Object.keys(data);
|
|
3321
3515
|
const recordValues = Object.values(data);
|
|
@@ -3345,7 +3539,10 @@ var Rec;
|
|
|
3345
3539
|
Rec2.keys = (data) => Object.keys(data);
|
|
3346
3540
|
Rec2.values = (data) => Object.values(data);
|
|
3347
3541
|
Rec2.entries = (data) => Object.entries(data);
|
|
3348
|
-
|
|
3542
|
+
let from;
|
|
3543
|
+
((from2) => {
|
|
3544
|
+
from2.entries = (data) => Object.fromEntries(data);
|
|
3545
|
+
})(from = Rec2.from || (Rec2.from = {}));
|
|
3349
3546
|
Rec2.groupBy = (keyFn) => (items) => {
|
|
3350
3547
|
const result = {};
|
|
3351
3548
|
for (const item of items) {
|
|
@@ -3386,7 +3583,6 @@ var Rec;
|
|
|
3386
3583
|
...data,
|
|
3387
3584
|
...other
|
|
3388
3585
|
});
|
|
3389
|
-
Rec2.isEmpty = (data) => Object.keys(data).length === 0;
|
|
3390
3586
|
Rec2.size = (data) => Object.keys(data).length;
|
|
3391
3587
|
Rec2.mapKeys = (f) => (data) => {
|
|
3392
3588
|
const result = {};
|
|
@@ -3404,14 +3600,34 @@ var Rec;
|
|
|
3404
3600
|
}
|
|
3405
3601
|
return result;
|
|
3406
3602
|
};
|
|
3407
|
-
|
|
3408
|
-
|
|
3603
|
+
let traverse;
|
|
3604
|
+
((traverse2) => {
|
|
3605
|
+
traverse2.Maybe = RecMaybe.traverse;
|
|
3606
|
+
traverse2.Result = RecResult.traverse;
|
|
3607
|
+
})(traverse = Rec2.traverse || (Rec2.traverse = {}));
|
|
3608
|
+
let sequence;
|
|
3609
|
+
((sequence2) => {
|
|
3610
|
+
sequence2.Maybe = RecMaybe.sequence;
|
|
3611
|
+
sequence2.Result = RecResult.sequence;
|
|
3612
|
+
})(sequence = Rec2.sequence || (Rec2.sequence = {}));
|
|
3409
3613
|
Rec2.NonEmpty = RecNonEmpty;
|
|
3410
3614
|
})(Rec || (Rec = {}));
|
|
3411
3615
|
|
|
3412
3616
|
// src/Data/Str.ts
|
|
3617
|
+
var StrNonEmpty;
|
|
3618
|
+
((StrNonEmpty2) => {
|
|
3619
|
+
let from;
|
|
3620
|
+
((from2) => {
|
|
3621
|
+
from2.String = (s) => s.length > 0 ? Maybe.make.some(s) : Maybe.make.none();
|
|
3622
|
+
})(from = StrNonEmpty2.from || (StrNonEmpty2.from = {}));
|
|
3623
|
+
})(StrNonEmpty || (StrNonEmpty = {}));
|
|
3413
3624
|
var Str;
|
|
3414
3625
|
((Str2) => {
|
|
3626
|
+
let is;
|
|
3627
|
+
((is2) => {
|
|
3628
|
+
is2.empty = (s) => s.length === 0;
|
|
3629
|
+
is2.nonEmpty = (s) => s.length > 0;
|
|
3630
|
+
})(is = Str2.is || (Str2.is = {}));
|
|
3415
3631
|
Str2.split = (separator) => (s) => s.split(separator);
|
|
3416
3632
|
Str2.trim = (s) => s.trim();
|
|
3417
3633
|
Str2.includes = (substring) => (s) => s.includes(substring);
|
|
@@ -3424,7 +3640,6 @@ var Str;
|
|
|
3424
3640
|
Str2.capitalize = (s) => s.length === 0 ? "" : s.charAt(0).toUpperCase() + s.slice(1);
|
|
3425
3641
|
Str2.lines = (s) => s.split(/\r?\n|\r/);
|
|
3426
3642
|
Str2.words = (s) => s.trim().split(/\s+/).filter(Boolean);
|
|
3427
|
-
Str2.isEmpty = (s) => s.length === 0;
|
|
3428
3643
|
Str2.isBlank = (s) => s.trim().length === 0;
|
|
3429
3644
|
Str2.length = (s) => s.length;
|
|
3430
3645
|
Str2.slice = (start, end) => (s) => s.slice(start, end);
|
|
@@ -3443,7 +3658,7 @@ var Str;
|
|
|
3443
3658
|
*/
|
|
3444
3659
|
int: (s) => {
|
|
3445
3660
|
const n = parseInt(s, 10);
|
|
3446
|
-
return isNaN(n) ? Maybe.none() : Maybe.some(n);
|
|
3661
|
+
return isNaN(n) ? Maybe.make.none() : Maybe.make.some(n);
|
|
3447
3662
|
},
|
|
3448
3663
|
/**
|
|
3449
3664
|
* Parses a string as a floating-point number. Returns `None` if the result is `NaN`.
|
|
@@ -3457,27 +3672,49 @@ var Str;
|
|
|
3457
3672
|
*/
|
|
3458
3673
|
float: (s) => {
|
|
3459
3674
|
const n = parseFloat(s);
|
|
3460
|
-
return isNaN(n) ? Maybe.none() : Maybe.some(n);
|
|
3675
|
+
return isNaN(n) ? Maybe.make.none() : Maybe.make.some(n);
|
|
3461
3676
|
}
|
|
3462
3677
|
};
|
|
3463
3678
|
Str2.parseJson = (s) => {
|
|
3464
3679
|
try {
|
|
3465
|
-
return Result.ok(JSON.parse(s));
|
|
3680
|
+
return Result.make.ok(JSON.parse(s));
|
|
3466
3681
|
} catch (error) {
|
|
3467
|
-
return Result.err(error);
|
|
3682
|
+
return Result.make.err(error);
|
|
3468
3683
|
}
|
|
3469
3684
|
};
|
|
3685
|
+
Str2.NonEmpty = StrNonEmpty;
|
|
3470
3686
|
})(Str || (Str = {}));
|
|
3471
3687
|
|
|
3472
3688
|
// src/Data/Uniq.ts
|
|
3689
|
+
var UniqNonEmpty;
|
|
3690
|
+
((UniqNonEmpty2) => {
|
|
3691
|
+
UniqNonEmpty2.singleton = (item) => new globalThis.Set([item]);
|
|
3692
|
+
let from;
|
|
3693
|
+
((from2) => {
|
|
3694
|
+
from2.Set = (s) => s.size > 0 ? Maybe.make.some(s) : Maybe.make.none();
|
|
3695
|
+
})(from = UniqNonEmpty2.from || (UniqNonEmpty2.from = {}));
|
|
3696
|
+
UniqNonEmpty2.reduce = (f) => (s) => to.Array(s).reduce(f);
|
|
3697
|
+
UniqNonEmpty2.map = (f) => (s) => Uniq.map(f)(s);
|
|
3698
|
+
let to;
|
|
3699
|
+
((to2) => {
|
|
3700
|
+
to2.Array = (s) => Uniq.to.Array(s);
|
|
3701
|
+
})(to = UniqNonEmpty2.to || (UniqNonEmpty2.to = {}));
|
|
3702
|
+
})(UniqNonEmpty || (UniqNonEmpty = {}));
|
|
3473
3703
|
var Uniq;
|
|
3474
3704
|
((Uniq2) => {
|
|
3705
|
+
let is;
|
|
3706
|
+
((is2) => {
|
|
3707
|
+
is2.empty = (s) => s.size === 0;
|
|
3708
|
+
is2.nonEmpty = (s) => s.size > 0;
|
|
3709
|
+
})(is = Uniq2.is || (Uniq2.is = {}));
|
|
3475
3710
|
Uniq2.empty = () => new globalThis.Set();
|
|
3476
3711
|
Uniq2.singleton = (item) => new globalThis.Set([item]);
|
|
3477
|
-
|
|
3712
|
+
let from;
|
|
3713
|
+
((from2) => {
|
|
3714
|
+
from2.Array = (arr) => new globalThis.Set(arr);
|
|
3715
|
+
})(from = Uniq2.from || (Uniq2.from = {}));
|
|
3478
3716
|
Uniq2.has = (item) => (s) => s.has(item);
|
|
3479
3717
|
Uniq2.size = (s) => s.size;
|
|
3480
|
-
Uniq2.isEmpty = (s) => s.size === 0;
|
|
3481
3718
|
Uniq2.isSubsetOf = (other) => (s) => {
|
|
3482
3719
|
const set = s;
|
|
3483
3720
|
if (typeof set.isSubsetOf === "function") {
|
|
@@ -3566,7 +3803,11 @@ var Uniq;
|
|
|
3566
3803
|
}
|
|
3567
3804
|
return acc;
|
|
3568
3805
|
};
|
|
3569
|
-
|
|
3806
|
+
let to;
|
|
3807
|
+
((to2) => {
|
|
3808
|
+
to2.Array = (s) => [...s];
|
|
3809
|
+
})(to = Uniq2.to || (Uniq2.to = {}));
|
|
3810
|
+
Uniq2.NonEmpty = UniqNonEmpty;
|
|
3570
3811
|
})(Uniq || (Uniq = {}));
|
|
3571
3812
|
// Annotate the CommonJS export names for ESM import in node:
|
|
3572
3813
|
0 && (module.exports = {
|