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