@nlozgachev/pipelined 0.47.0 → 0.49.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 +58 -5
- package/dist/Duration-B8joKzro.d.mts +181 -0
- package/dist/Duration-B8joKzro.d.ts +181 -0
- package/dist/{InternalTypes-Mssktd7z.d.ts → InternalTypes-CDiDBAY4.d.mts} +20 -1
- package/dist/{InternalTypes-CLE7qlOc.d.mts → InternalTypes-LdhLQx3N.d.ts} +20 -1
- package/dist/{Validation-BMsvixWH.d.ts → Validation-1OgJJdeA.d.ts} +507 -37
- package/dist/{Validation-v38R0qH-.d.mts → Validation-D-aARYlP.d.mts} +507 -37
- package/dist/{chunk-KOYYDQH4.mjs → chunk-5OFVS5UZ.mjs} +7 -2
- package/dist/{chunk-XTVF5R6R.mjs → chunk-DENXUTKL.mjs} +24 -0
- package/dist/{chunk-W2L244AS.mjs → chunk-EPT3GYGN.mjs} +279 -1
- package/dist/{chunk-VSU36S2K.mjs → chunk-IHLH2XYQ.mjs} +330 -18
- package/dist/composition.d.mts +226 -18
- package/dist/composition.d.ts +226 -18
- package/dist/composition.js +10 -3
- package/dist/composition.mjs +8 -4
- package/dist/core.d.mts +304 -9
- package/dist/core.d.ts +304 -9
- package/dist/core.js +330 -17
- package/dist/core.mjs +4 -2
- package/dist/data.d.mts +619 -41
- package/dist/data.d.ts +619 -41
- package/dist/data.js +424 -17
- package/dist/data.mjs +7 -3
- package/dist/index.d.mts +7 -6
- package/dist/index.d.ts +7 -6
- package/dist/index.js +658 -33
- package/dist/index.mjs +19 -7
- package/dist/types.d.mts +37 -108
- package/dist/types.d.ts +37 -108
- package/dist/types.js +27 -2
- package/dist/types.mjs +5 -3
- package/package.json +4 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Duration
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-DENXUTKL.mjs";
|
|
4
4
|
|
|
5
5
|
// src/Core/Combinable.ts
|
|
6
6
|
var Combinable;
|
|
@@ -16,6 +16,26 @@ var Combinable;
|
|
|
16
16
|
combine: (b) => (a) => Maybe.is.none(a) ? b : Maybe.is.none(b) ? a : Maybe.make.some(inner.combine(b.value)(a.value))
|
|
17
17
|
});
|
|
18
18
|
Combinable2.fold = (c) => (data) => data.reduce((acc, x) => c.combine(x)(acc), c.empty);
|
|
19
|
+
Combinable2.struct = (fields) => {
|
|
20
|
+
const empty = {};
|
|
21
|
+
for (const key in fields) {
|
|
22
|
+
if (Object.hasOwn(fields, key)) {
|
|
23
|
+
empty[key] = fields[key].empty;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
empty,
|
|
28
|
+
combine: (b) => (a) => {
|
|
29
|
+
const result = {};
|
|
30
|
+
for (const key in fields) {
|
|
31
|
+
if (Object.hasOwn(fields, key)) {
|
|
32
|
+
result[key] = fields[key].combine(b[key])(a[key]);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
};
|
|
19
39
|
})(Combinable || (Combinable = {}));
|
|
20
40
|
|
|
21
41
|
// src/Core/Deferred.ts
|
|
@@ -32,6 +52,8 @@ var Deferred;
|
|
|
32
52
|
((to2) => {
|
|
33
53
|
to2.Promise = (d) => new globalThis.Promise((resolve) => d.then(resolve));
|
|
34
54
|
})(to = Deferred2.to || (Deferred2.to = {}));
|
|
55
|
+
Deferred2.all = (deferreds) => from.Promise(globalThis.Promise.all(deferreds.map((d) => to.Promise(d))));
|
|
56
|
+
Deferred2.race = (deferreds) => from.Promise(globalThis.Promise.race(deferreds.map((d) => to.Promise(d))));
|
|
35
57
|
})(Deferred || (Deferred = {}));
|
|
36
58
|
|
|
37
59
|
// src/Core/Equality.ts
|
|
@@ -44,6 +66,27 @@ var Equality;
|
|
|
44
66
|
Equality2.array = (eq) => (a, b) => a.length === b.length && a.every((x, i) => eq(x, b[i]));
|
|
45
67
|
Equality2.by = (f) => (eq) => (a, b) => eq(f(a), f(b));
|
|
46
68
|
Equality2.and = (eq2) => (eq1) => (a, b) => eq1(a, b) && eq2(a, b);
|
|
69
|
+
Equality2.struct = (fields) => (a, b) => {
|
|
70
|
+
for (const key in fields) {
|
|
71
|
+
if (Object.hasOwn(fields, key)) {
|
|
72
|
+
if (!fields[key](a[key], b[key])) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return true;
|
|
78
|
+
};
|
|
79
|
+
Equality2.tuple = (...equalities) => (a, b) => {
|
|
80
|
+
if (a.length !== b.length) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
for (let i = 0; i < equalities.length; i++) {
|
|
84
|
+
if (!equalities[i](a[i], b[i])) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return true;
|
|
89
|
+
};
|
|
47
90
|
})(Equality || (Equality = {}));
|
|
48
91
|
|
|
49
92
|
// src/Core/Lazy.ts
|
|
@@ -123,6 +166,10 @@ var Logged;
|
|
|
123
166
|
Logged2.bind = (key, f) => (data) => (0, Logged2.chain)(
|
|
124
167
|
(a) => (0, Logged2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
125
168
|
)(data);
|
|
169
|
+
Logged2.focus = (lens) => (f) => (data) => ({
|
|
170
|
+
value: lens.set(f(lens.get(data.value)))(data.value),
|
|
171
|
+
log: data.log
|
|
172
|
+
});
|
|
126
173
|
})(Logged || (Logged = {}));
|
|
127
174
|
|
|
128
175
|
// src/Core/Maybe.ts
|
|
@@ -182,6 +229,7 @@ var Maybe;
|
|
|
182
229
|
}
|
|
183
230
|
return make.some(result);
|
|
184
231
|
};
|
|
232
|
+
Maybe3.transposeResult = (data) => is.none(data) ? Result.make.ok(make.none()) : Result.is.ok(data.value) ? Result.make.ok(make.some(data.value.value)) : Result.make.err(data.value.error);
|
|
185
233
|
})(Maybe || (Maybe = {}));
|
|
186
234
|
|
|
187
235
|
// src/internal/Op.util.ts
|
|
@@ -1333,6 +1381,25 @@ var Ordering;
|
|
|
1333
1381
|
return r !== 0 ? r : ord2(a, b);
|
|
1334
1382
|
};
|
|
1335
1383
|
Ordering2.by = (f) => (ord) => (a, b) => ord(f(a), f(b));
|
|
1384
|
+
Ordering2.byFields = (orderings) => (a, b) => {
|
|
1385
|
+
for (let i = 0; i < orderings.length; i++) {
|
|
1386
|
+
const res = orderings[i](a, b);
|
|
1387
|
+
if (res !== 0) {
|
|
1388
|
+
return res;
|
|
1389
|
+
}
|
|
1390
|
+
}
|
|
1391
|
+
return 0;
|
|
1392
|
+
};
|
|
1393
|
+
Ordering2.tuple = (...orderings) => (a, b) => {
|
|
1394
|
+
const len = Math.min(a.length, b.length);
|
|
1395
|
+
for (let i = 0; i < len; i++) {
|
|
1396
|
+
const res = orderings[i](a[i], b[i]);
|
|
1397
|
+
if (res !== 0) {
|
|
1398
|
+
return res;
|
|
1399
|
+
}
|
|
1400
|
+
}
|
|
1401
|
+
return a.length - b.length;
|
|
1402
|
+
};
|
|
1336
1403
|
})(Ordering || (Ordering = {}));
|
|
1337
1404
|
|
|
1338
1405
|
// src/Core/Predicate.ts
|
|
@@ -1348,6 +1415,15 @@ var Predicate;
|
|
|
1348
1415
|
((from2) => {
|
|
1349
1416
|
from2.Refinement = (r) => r;
|
|
1350
1417
|
})(from = Predicate2.from || (Predicate2.from = {}));
|
|
1418
|
+
Predicate2.match = (branches, fallback) => (a) => {
|
|
1419
|
+
for (let i = 0; i < branches.length; i++) {
|
|
1420
|
+
const [p, h] = branches[i];
|
|
1421
|
+
if (p(a)) {
|
|
1422
|
+
return h(a);
|
|
1423
|
+
}
|
|
1424
|
+
}
|
|
1425
|
+
return fallback(a);
|
|
1426
|
+
};
|
|
1351
1427
|
})(Predicate || (Predicate = {}));
|
|
1352
1428
|
|
|
1353
1429
|
// src/Core/Reader.ts
|
|
@@ -1547,11 +1623,11 @@ var Result;
|
|
|
1547
1623
|
is2.ok = (data) => data.kind === "Ok";
|
|
1548
1624
|
is2.err = (data) => data.kind === "Err";
|
|
1549
1625
|
})(is = Result4.is || (Result4.is = {}));
|
|
1550
|
-
Result4.tryCatch = (f,
|
|
1626
|
+
Result4.tryCatch = (f, options) => {
|
|
1551
1627
|
try {
|
|
1552
1628
|
return make.ok(f());
|
|
1553
1629
|
} catch (error) {
|
|
1554
|
-
return make.err(onError(error));
|
|
1630
|
+
return make.err(options.onError(error));
|
|
1555
1631
|
}
|
|
1556
1632
|
};
|
|
1557
1633
|
Result4.map = (f) => (data) => is.ok(data) ? make.ok(f(data.value)) : data;
|
|
@@ -1577,20 +1653,23 @@ var Result;
|
|
|
1577
1653
|
from2.Predicate = (pred, onFalse) => (a) => pred(a) ? make.ok(a) : make.err(onFalse(a));
|
|
1578
1654
|
from2.nullable = (onNull) => (value) => value === null || value === void 0 ? make.err(onNull()) : make.ok(value);
|
|
1579
1655
|
from2.Maybe = (onNone) => (maybe) => Maybe.is.none(maybe) ? make.err(onNone()) : make.ok(maybe.value);
|
|
1580
|
-
from2.throwable = (f,
|
|
1656
|
+
from2.throwable = (f, options) => (...args) => {
|
|
1581
1657
|
try {
|
|
1582
1658
|
return make.ok(f(...args));
|
|
1583
1659
|
} catch (error) {
|
|
1584
|
-
return make.err(onError(error));
|
|
1660
|
+
return make.err(options.onError(error));
|
|
1585
1661
|
}
|
|
1586
1662
|
};
|
|
1663
|
+
from2.Validation = (combineErrors) => (val) => Validation.is.passed(val) ? make.ok(val.value) : make.err(combineErrors(val.errors));
|
|
1587
1664
|
})(from = Result4.from || (Result4.from = {}));
|
|
1588
1665
|
Result4.recover = (fallback) => (data) => is.ok(data) ? data : fallback(data.error);
|
|
1589
1666
|
Result4.recoverUnless = (isBlocked, fallback) => (data) => is.err(data) && !isBlocked(data.error) ? fallback() : data;
|
|
1590
1667
|
let to;
|
|
1591
1668
|
((to2) => {
|
|
1592
1669
|
to2.Maybe = (data) => is.ok(data) ? Maybe.make.some(data.value) : Maybe.make.none();
|
|
1670
|
+
to2.Validation = (data) => Validation.from.Result(data);
|
|
1593
1671
|
})(to = Result4.to || (Result4.to = {}));
|
|
1672
|
+
Result4.transposeMaybe = (data) => is.err(data) ? Maybe.make.some(data) : Maybe.is.some(data.value) ? Maybe.make.some(make.ok(data.value.value)) : Maybe.make.none();
|
|
1594
1673
|
Result4.ap = (arg) => (data) => is.ok(data) && is.ok(arg) ? make.ok(data.value(arg.value)) : is.err(data) ? data : arg;
|
|
1595
1674
|
Result4.bindTo = (key) => (data) => (0, Result4.map)((a) => ({ [key]: a }))(data);
|
|
1596
1675
|
Result4.bind = (key, f) => (data) => (0, Result4.chain)(
|
|
@@ -1609,6 +1688,8 @@ var Result;
|
|
|
1609
1688
|
}
|
|
1610
1689
|
return make.ok(result);
|
|
1611
1690
|
};
|
|
1691
|
+
Result4.ensure = (predicate, onFail) => (data) => is.err(data) ? data : predicate(data.value) ? data : make.err(onFail(data.value));
|
|
1692
|
+
Result4.bimap = (onErr, onOk) => (data) => is.ok(data) ? make.ok(onOk(data.value)) : make.err(onErr(data.error));
|
|
1612
1693
|
})(Result || (Result = {}));
|
|
1613
1694
|
|
|
1614
1695
|
// src/Core/State.ts
|
|
@@ -1644,13 +1725,129 @@ var State;
|
|
|
1644
1725
|
State2.bind = (key, f) => (data) => (0, State2.chain)(
|
|
1645
1726
|
(a) => (0, State2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
1646
1727
|
)(data);
|
|
1728
|
+
State2.focus = (lens) => (stateOp) => (s) => {
|
|
1729
|
+
const subState = lens.get(s);
|
|
1730
|
+
const [b, newSubState] = stateOp(subState);
|
|
1731
|
+
return [b, lens.set(newSubState)(s)];
|
|
1732
|
+
};
|
|
1647
1733
|
})(State || (State = {}));
|
|
1648
1734
|
|
|
1735
|
+
// src/Core/Stream.ts
|
|
1736
|
+
var Stream;
|
|
1737
|
+
((Stream2) => {
|
|
1738
|
+
Stream2.make = (options) => ({
|
|
1739
|
+
options,
|
|
1740
|
+
_listeners: /* @__PURE__ */ new Set()
|
|
1741
|
+
});
|
|
1742
|
+
Stream2.emit = (target, message) => {
|
|
1743
|
+
const targets = Array.isArray(target) ? target : [target];
|
|
1744
|
+
const msg = message;
|
|
1745
|
+
for (const stream of targets) {
|
|
1746
|
+
const listeners = Array.from(stream._listeners);
|
|
1747
|
+
for (const listener of listeners) {
|
|
1748
|
+
try {
|
|
1749
|
+
listener(msg);
|
|
1750
|
+
} catch (err2) {
|
|
1751
|
+
if (stream.options?.onError) {
|
|
1752
|
+
stream.options.onError(err2);
|
|
1753
|
+
} else {
|
|
1754
|
+
throw err2;
|
|
1755
|
+
}
|
|
1756
|
+
}
|
|
1757
|
+
}
|
|
1758
|
+
}
|
|
1759
|
+
};
|
|
1760
|
+
Stream2.forward = (options) => {
|
|
1761
|
+
const targets = Array.isArray(options.to) ? options.to : [options.to];
|
|
1762
|
+
const filterSet = options.only ? new Set(options.only) : null;
|
|
1763
|
+
const handler = (msg) => {
|
|
1764
|
+
if (filterSet !== null && !filterSet.has(msg.kind)) {
|
|
1765
|
+
return;
|
|
1766
|
+
}
|
|
1767
|
+
for (const target of targets) {
|
|
1768
|
+
(0, Stream2.emit)(target, msg);
|
|
1769
|
+
}
|
|
1770
|
+
};
|
|
1771
|
+
options.from._listeners.add(handler);
|
|
1772
|
+
return () => {
|
|
1773
|
+
options.from._listeners.delete(handler);
|
|
1774
|
+
};
|
|
1775
|
+
};
|
|
1776
|
+
Stream2.listen = (stream, events, options) => {
|
|
1777
|
+
const eventList = Array.isArray(events) ? events : [events];
|
|
1778
|
+
const isOrdered = options?.ordered ?? false;
|
|
1779
|
+
const isStrict = options?.strict ?? false;
|
|
1780
|
+
const isOnce = options?.once ?? false;
|
|
1781
|
+
const resetKinds = options?.reset ? new Set(Array.isArray(options.reset) ? options.reset : [options.reset]) : null;
|
|
1782
|
+
const createMatcher = (onMatch) => {
|
|
1783
|
+
let sequenceIndex = 0;
|
|
1784
|
+
return (msg) => {
|
|
1785
|
+
if (resetKinds !== null && resetKinds.has(msg.kind)) {
|
|
1786
|
+
sequenceIndex = 0;
|
|
1787
|
+
return;
|
|
1788
|
+
}
|
|
1789
|
+
if (!isOrdered) {
|
|
1790
|
+
if (eventList.includes(msg.kind)) {
|
|
1791
|
+
onMatch(msg);
|
|
1792
|
+
}
|
|
1793
|
+
return;
|
|
1794
|
+
}
|
|
1795
|
+
const expectedKind = eventList[sequenceIndex];
|
|
1796
|
+
if (msg.kind === expectedKind) {
|
|
1797
|
+
sequenceIndex++;
|
|
1798
|
+
if (sequenceIndex === eventList.length) {
|
|
1799
|
+
sequenceIndex = 0;
|
|
1800
|
+
onMatch(msg);
|
|
1801
|
+
}
|
|
1802
|
+
} else if (isStrict) {
|
|
1803
|
+
sequenceIndex = msg.kind === eventList[0] ? 1 : 0;
|
|
1804
|
+
} else if (eventList.includes(msg.kind)) {
|
|
1805
|
+
sequenceIndex = msg.kind === eventList[0] ? 1 : 0;
|
|
1806
|
+
}
|
|
1807
|
+
};
|
|
1808
|
+
};
|
|
1809
|
+
return {
|
|
1810
|
+
reduce: (reducer, initialState) => {
|
|
1811
|
+
let currentState = initialState;
|
|
1812
|
+
const listenerFn = createMatcher((msg) => {
|
|
1813
|
+
currentState = reducer(msg, currentState);
|
|
1814
|
+
if (isOnce) {
|
|
1815
|
+
stream._listeners.delete(listenerFn);
|
|
1816
|
+
}
|
|
1817
|
+
});
|
|
1818
|
+
const unsubscribe = () => {
|
|
1819
|
+
stream._listeners.delete(listenerFn);
|
|
1820
|
+
};
|
|
1821
|
+
stream._listeners.add(listenerFn);
|
|
1822
|
+
return { unsubscribe, getState: () => currentState };
|
|
1823
|
+
},
|
|
1824
|
+
tap: (effect) => {
|
|
1825
|
+
const listenerFn = createMatcher((msg) => {
|
|
1826
|
+
effect(msg);
|
|
1827
|
+
if (isOnce) {
|
|
1828
|
+
stream._listeners.delete(listenerFn);
|
|
1829
|
+
}
|
|
1830
|
+
});
|
|
1831
|
+
const unsubscribe = () => {
|
|
1832
|
+
stream._listeners.delete(listenerFn);
|
|
1833
|
+
};
|
|
1834
|
+
stream._listeners.add(listenerFn);
|
|
1835
|
+
return unsubscribe;
|
|
1836
|
+
}
|
|
1837
|
+
};
|
|
1838
|
+
};
|
|
1839
|
+
})(Stream || (Stream = {}));
|
|
1840
|
+
|
|
1649
1841
|
// src/Core/TaskMaybe.ts
|
|
1650
1842
|
var TaskMaybe;
|
|
1651
1843
|
((TaskMaybe2) => {
|
|
1652
|
-
|
|
1653
|
-
|
|
1844
|
+
let make;
|
|
1845
|
+
((make2) => {
|
|
1846
|
+
make2.some = (value) => Task.resolve(Maybe.make.some(value));
|
|
1847
|
+
make2.none = () => Task.resolve(Maybe.make.none());
|
|
1848
|
+
})(make = TaskMaybe2.make || (TaskMaybe2.make = {}));
|
|
1849
|
+
({ some: TaskMaybe2.some } = make);
|
|
1850
|
+
({ none: TaskMaybe2.none } = make);
|
|
1654
1851
|
let from;
|
|
1655
1852
|
((from2) => {
|
|
1656
1853
|
from2.Maybe = (option) => Task.resolve(option);
|
|
@@ -1706,19 +1903,28 @@ var TaskMaybe;
|
|
|
1706
1903
|
// src/Core/TaskResult.ts
|
|
1707
1904
|
var TaskResult;
|
|
1708
1905
|
((TaskResult2) => {
|
|
1709
|
-
|
|
1710
|
-
|
|
1906
|
+
let make;
|
|
1907
|
+
((make2) => {
|
|
1908
|
+
make2.ok = (value) => Task.resolve(Result.make.ok(value));
|
|
1909
|
+
make2.err = (error) => Task.resolve(Result.make.err(error));
|
|
1910
|
+
})(make = TaskResult2.make || (TaskResult2.make = {}));
|
|
1911
|
+
({ ok: TaskResult2.ok } = make);
|
|
1912
|
+
({ err: TaskResult2.err } = make);
|
|
1711
1913
|
let from;
|
|
1712
1914
|
((from2) => {
|
|
1713
1915
|
from2.nullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Result.make.err(onNull()) : Result.make.ok(value));
|
|
1714
1916
|
from2.Maybe = (onNone) => (maybe) => Task.resolve(Maybe.is.none(maybe) ? Result.make.err(onNone()) : Result.make.ok(maybe.value));
|
|
1715
1917
|
from2.Result = (result) => Task.resolve(result);
|
|
1716
|
-
from2.throwable = (f,
|
|
1717
|
-
() => f(...args).then(Result.make.ok).catch((error) => Result.make.err(onError(error)))
|
|
1918
|
+
from2.throwable = (f, options) => (...args) => Task.from.Promise(
|
|
1919
|
+
() => f(...args).then(Result.make.ok).catch((error) => Result.make.err(options.onError(error)))
|
|
1718
1920
|
);
|
|
1719
1921
|
})(from = TaskResult2.from || (TaskResult2.from = {}));
|
|
1720
|
-
|
|
1721
|
-
|
|
1922
|
+
let to;
|
|
1923
|
+
((to2) => {
|
|
1924
|
+
to2.Maybe = (data) => Task.map(Result.to.Maybe)(data);
|
|
1925
|
+
})(to = TaskResult2.to || (TaskResult2.to = {}));
|
|
1926
|
+
TaskResult2.tryCatch = (f, options) => Task.from.Promise(
|
|
1927
|
+
(signal) => Promise.resolve(f(signal)).then(Result.make.ok).catch((error) => Result.make.err(options.onError(error)))
|
|
1722
1928
|
);
|
|
1723
1929
|
TaskResult2.map = (f) => (data) => Task.map(Result.map(f))(data);
|
|
1724
1930
|
TaskResult2.mapError = (f) => (data) => Task.map(Result.mapError(f))(data);
|
|
@@ -1758,6 +1964,60 @@ var TaskResult;
|
|
|
1758
1964
|
return Result.make.ok(record);
|
|
1759
1965
|
});
|
|
1760
1966
|
});
|
|
1967
|
+
TaskResult2.retry = (policy) => (task) => Task.from.Promise((signal) => {
|
|
1968
|
+
const { attempts } = policy;
|
|
1969
|
+
const wait = (duration) => new Promise((res) => {
|
|
1970
|
+
let timerId;
|
|
1971
|
+
const onAbort = () => {
|
|
1972
|
+
clearTimeout(timerId);
|
|
1973
|
+
res();
|
|
1974
|
+
};
|
|
1975
|
+
if (signal) {
|
|
1976
|
+
if (signal.aborted) {
|
|
1977
|
+
return res();
|
|
1978
|
+
}
|
|
1979
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
1980
|
+
}
|
|
1981
|
+
timerId = setTimeout(() => {
|
|
1982
|
+
signal?.removeEventListener("abort", onAbort);
|
|
1983
|
+
res();
|
|
1984
|
+
}, Duration.to.milliseconds(duration));
|
|
1985
|
+
});
|
|
1986
|
+
const executeAttempt = (attempt) => Deferred.to.Promise(task(signal)).then((res) => {
|
|
1987
|
+
if (Result.is.ok(res) || attempt >= attempts || signal?.aborted) {
|
|
1988
|
+
return res;
|
|
1989
|
+
}
|
|
1990
|
+
const delay = policy.getDelay(attempt);
|
|
1991
|
+
return wait(delay).then(() => executeAttempt(attempt + 1));
|
|
1992
|
+
});
|
|
1993
|
+
return executeAttempt(1);
|
|
1994
|
+
});
|
|
1995
|
+
TaskResult2.memoize = (task) => Task.memoize(task);
|
|
1996
|
+
TaskResult2.timeout = (options) => (task) => Task.from.Promise((signal) => {
|
|
1997
|
+
const ms = Duration.to.milliseconds(options.duration);
|
|
1998
|
+
return new Promise((resolve) => {
|
|
1999
|
+
let timerId;
|
|
2000
|
+
const onAbort = () => {
|
|
2001
|
+
clearTimeout(timerId);
|
|
2002
|
+
};
|
|
2003
|
+
if (signal) {
|
|
2004
|
+
if (signal.aborted) {
|
|
2005
|
+
return Deferred.to.Promise(task(signal)).then(resolve);
|
|
2006
|
+
}
|
|
2007
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
2008
|
+
}
|
|
2009
|
+
timerId = setTimeout(() => {
|
|
2010
|
+
signal?.removeEventListener("abort", onAbort);
|
|
2011
|
+
resolve(Result.make.err(options.onTimeout()));
|
|
2012
|
+
}, ms);
|
|
2013
|
+
Deferred.to.Promise(task(signal)).then((res) => {
|
|
2014
|
+
clearTimeout(timerId);
|
|
2015
|
+
signal?.removeEventListener("abort", onAbort);
|
|
2016
|
+
resolve(res);
|
|
2017
|
+
});
|
|
2018
|
+
});
|
|
2019
|
+
});
|
|
2020
|
+
TaskResult2.allSettled = (tasks) => Task.from.Promise((signal) => Promise.all(tasks.map((task) => Deferred.to.Promise(task(signal)))));
|
|
1761
2021
|
})(TaskResult || (TaskResult = {}));
|
|
1762
2022
|
|
|
1763
2023
|
// src/internal/InternalTypes.ts
|
|
@@ -1766,9 +2026,15 @@ var isNonEmptyArr = (list) => list.length > 0;
|
|
|
1766
2026
|
// src/Core/TaskValidation.ts
|
|
1767
2027
|
var TaskValidation;
|
|
1768
2028
|
((TaskValidation2) => {
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
2029
|
+
let make;
|
|
2030
|
+
((make2) => {
|
|
2031
|
+
make2.passed = (value) => Task.resolve(Validation.make.passed(value));
|
|
2032
|
+
make2.failed = (error) => Task.resolve(Validation.make.failed(error));
|
|
2033
|
+
make2.failedAll = (errors) => Task.resolve(Validation.make.failedAll(errors));
|
|
2034
|
+
})(make = TaskValidation2.make || (TaskValidation2.make = {}));
|
|
2035
|
+
({ passed: TaskValidation2.passed } = make);
|
|
2036
|
+
({ failed: TaskValidation2.failed } = make);
|
|
2037
|
+
({ failedAll: TaskValidation2.failedAll } = make);
|
|
1772
2038
|
let from;
|
|
1773
2039
|
((from2) => {
|
|
1774
2040
|
from2.Validation = (validation) => Task.resolve(validation);
|
|
@@ -1986,7 +2252,8 @@ var Task;
|
|
|
1986
2252
|
}
|
|
1987
2253
|
return results;
|
|
1988
2254
|
});
|
|
1989
|
-
Task2.timeout = (
|
|
2255
|
+
Task2.timeout = (options) => (task) => from.Promise((outerSignal) => {
|
|
2256
|
+
const { duration, onTimeout } = options;
|
|
1990
2257
|
const controller = new AbortController();
|
|
1991
2258
|
let timerId;
|
|
1992
2259
|
let cleanUp = () => {
|
|
@@ -2043,6 +2310,30 @@ var Task;
|
|
|
2043
2310
|
Task2.bind = (key, f) => (data) => (0, Task2.chain)(
|
|
2044
2311
|
(a) => (0, Task2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
2045
2312
|
)(data);
|
|
2313
|
+
Task2.memoize = (task) => {
|
|
2314
|
+
let cached = null;
|
|
2315
|
+
return (signal) => {
|
|
2316
|
+
if (cached === null) {
|
|
2317
|
+
cached = task(signal);
|
|
2318
|
+
}
|
|
2319
|
+
return cached;
|
|
2320
|
+
};
|
|
2321
|
+
};
|
|
2322
|
+
Task2.withProgress = (onProgress) => (task) => (signal) => {
|
|
2323
|
+
onProgress(0);
|
|
2324
|
+
const d = task(signal);
|
|
2325
|
+
return Deferred.from.Promise(
|
|
2326
|
+
Deferred.to.Promise(d).then((res) => {
|
|
2327
|
+
onProgress(1);
|
|
2328
|
+
return res;
|
|
2329
|
+
})
|
|
2330
|
+
);
|
|
2331
|
+
};
|
|
2332
|
+
Task2.withLabel = (label) => (task) => {
|
|
2333
|
+
const fn = ((signal) => task(signal));
|
|
2334
|
+
Object.defineProperty(fn, "label", { value: label, writable: false, enumerable: true, configurable: true });
|
|
2335
|
+
return fn;
|
|
2336
|
+
};
|
|
2046
2337
|
Task2.Maybe = TaskMaybe;
|
|
2047
2338
|
Task2.Result = TaskResult;
|
|
2048
2339
|
Task2.Validation = TaskValidation;
|
|
@@ -2183,6 +2474,13 @@ var Validation;
|
|
|
2183
2474
|
is2.passed = (data) => data.kind === "Passed";
|
|
2184
2475
|
is2.failed = (data) => data.kind === "Failed";
|
|
2185
2476
|
})(is = Validation2.is || (Validation2.is = {}));
|
|
2477
|
+
Validation2.tryCatch = (f, options) => {
|
|
2478
|
+
try {
|
|
2479
|
+
return make.passed(f());
|
|
2480
|
+
} catch (error) {
|
|
2481
|
+
return make.failed(options.onError(error));
|
|
2482
|
+
}
|
|
2483
|
+
};
|
|
2186
2484
|
let from;
|
|
2187
2485
|
((from2) => {
|
|
2188
2486
|
from2.Predicate = (pred, onFalse) => (a) => pred(a) ? make.passed(a) : make.failed(onFalse(a));
|
|
@@ -2198,6 +2496,12 @@ var Validation;
|
|
|
2198
2496
|
}
|
|
2199
2497
|
return is.passed(arg) ? make.failedAll(data.errors) : make.failedAll([...data.errors, ...arg.errors]);
|
|
2200
2498
|
};
|
|
2499
|
+
Validation2.apCustom = (concat) => (arg) => (data) => {
|
|
2500
|
+
if (is.passed(data)) {
|
|
2501
|
+
return is.passed(arg) ? make.passed(data.value(arg.value)) : make.failedAll(arg.errors);
|
|
2502
|
+
}
|
|
2503
|
+
return is.passed(arg) ? make.failedAll(data.errors) : make.failedAll(concat(data.errors, arg.errors));
|
|
2504
|
+
};
|
|
2201
2505
|
Validation2.fold = (onFailed, onPassed) => (data) => is.passed(data) ? onPassed(data.value) : onFailed(data.errors);
|
|
2202
2506
|
Validation2.match = (cases) => (data) => is.passed(data) ? cases.passed(data.value) : cases.failed(data.errors);
|
|
2203
2507
|
Validation2.getOrElse = (defaultValue) => (data) => is.passed(data) ? data.value : defaultValue();
|
|
@@ -2217,7 +2521,14 @@ var Validation;
|
|
|
2217
2521
|
Validation2.recoverUnless = (isBlocked, fallback) => (data) => is.failed(data) && !data.errors.some(isBlocked) ? fallback() : data;
|
|
2218
2522
|
let to;
|
|
2219
2523
|
((to2) => {
|
|
2220
|
-
|
|
2524
|
+
function Result4(arg) {
|
|
2525
|
+
if (typeof arg === "function") {
|
|
2526
|
+
const combine = arg;
|
|
2527
|
+
return (val) => is.passed(val) ? Result.make.ok(val.value) : Result.make.err(combine(val.errors));
|
|
2528
|
+
}
|
|
2529
|
+
return is.passed(arg) ? Result.make.ok(arg.value) : Result.make.err(arg.errors);
|
|
2530
|
+
}
|
|
2531
|
+
to2.Result = Result4;
|
|
2221
2532
|
to2.Maybe = (data) => is.passed(data) ? Maybe.make.some(data.value) : Maybe.make.none();
|
|
2222
2533
|
})(to = Validation2.to || (Validation2.to = {}));
|
|
2223
2534
|
Validation2.product = (first, second) => {
|
|
@@ -2273,6 +2584,7 @@ export {
|
|
|
2273
2584
|
Resource,
|
|
2274
2585
|
Result,
|
|
2275
2586
|
State,
|
|
2587
|
+
Stream,
|
|
2276
2588
|
TaskMaybe,
|
|
2277
2589
|
TaskResult,
|
|
2278
2590
|
isNonEmptyArr,
|