@nlozgachev/pipelined 0.36.0 → 0.37.1

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/dist/core.js CHANGED
@@ -39,7 +39,7 @@ __export(Core_exports, {
39
39
  State: () => State,
40
40
  Task: () => Task,
41
41
  TaskMaybe: () => TaskMaybe,
42
- TaskResult: () => TaskResult,
42
+ TaskResult: () => TaskResult3,
43
43
  TaskValidation: () => TaskValidation,
44
44
  These: () => These,
45
45
  Tuple: () => Tuple,
@@ -47,84 +47,6 @@ __export(Core_exports, {
47
47
  });
48
48
  module.exports = __toCommonJS(Core_exports);
49
49
 
50
- // src/Core/Result.ts
51
- var Result;
52
- ((Result2) => {
53
- Result2.ok = (value) => ({ kind: "Ok", value });
54
- Result2.err = (e) => ({ kind: "Err", error: e });
55
- Result2.isOk = (data) => data.kind === "Ok";
56
- Result2.isErr = (data) => data.kind === "Err";
57
- Result2.tryCatch = (f, onError) => {
58
- try {
59
- return (0, Result2.ok)(f());
60
- } catch (error) {
61
- return (0, Result2.err)(onError(error));
62
- }
63
- };
64
- Result2.map = (f) => (data) => (0, Result2.isOk)(data) ? (0, Result2.ok)(f(data.value)) : data;
65
- Result2.mapError = (f) => (data) => (0, Result2.isErr)(data) ? (0, Result2.err)(f(data.error)) : data;
66
- Result2.chain = (f) => (data) => (0, Result2.isOk)(data) ? f(data.value) : data;
67
- Result2.fold = (onErr, onOk) => (data) => (0, Result2.isOk)(data) ? onOk(data.value) : onErr(data.error);
68
- Result2.match = (cases) => (data) => (0, Result2.isOk)(data) ? cases.ok(data.value) : cases.err(data.error);
69
- Result2.getOrElse = (defaultValue) => (data) => (0, Result2.isOk)(data) ? data.value : defaultValue();
70
- Result2.tap = (f) => (data) => {
71
- if ((0, Result2.isOk)(data)) {
72
- f(data.value);
73
- }
74
- return data;
75
- };
76
- Result2.tapError = (f) => (data) => {
77
- if ((0, Result2.isErr)(data)) {
78
- f(data.error);
79
- }
80
- return data;
81
- };
82
- Result2.fromPredicate = (pred, onFalse) => (a) => pred(a) ? (0, Result2.ok)(a) : (0, Result2.err)(onFalse(a));
83
- Result2.fromNullable = (onNull) => (value) => value === null || value === void 0 ? (0, Result2.err)(onNull()) : (0, Result2.ok)(value);
84
- Result2.fromMaybe = (onNone) => (maybe) => Maybe.isNone(maybe) ? (0, Result2.err)(onNone()) : (0, Result2.ok)(maybe.value);
85
- Result2.fromThrowable = (f, onError) => (...args) => {
86
- try {
87
- return (0, Result2.ok)(f(...args));
88
- } catch (error) {
89
- return (0, Result2.err)(onError(error));
90
- }
91
- };
92
- Result2.recover = (fallback) => (data) => (0, Result2.isOk)(data) ? data : fallback(data.error);
93
- Result2.recoverUnless = (isBlocked, fallback) => (data) => (0, Result2.isErr)(data) && !isBlocked(data.error) ? fallback() : data;
94
- Result2.toMaybe = (data) => (0, Result2.isOk)(data) ? Maybe.some(data.value) : Maybe.none();
95
- Result2.ap = (arg) => (data) => (0, Result2.isOk)(data) && (0, Result2.isOk)(arg) ? (0, Result2.ok)(data.value(arg.value)) : (0, Result2.isErr)(data) ? data : arg;
96
- })(Result || (Result = {}));
97
-
98
- // src/Core/Maybe.ts
99
- var _none = { kind: "None" };
100
- var Maybe;
101
- ((Maybe2) => {
102
- Maybe2.some = (value) => ({ kind: "Some", value });
103
- Maybe2.isSome = (data) => data.kind === "Some";
104
- Maybe2.none = () => _none;
105
- Maybe2.isNone = (data) => data.kind === "None";
106
- Maybe2.fromNullable = (value) => value === null || value === void 0 ? (0, Maybe2.none)() : (0, Maybe2.some)(value);
107
- Maybe2.toNullable = (data) => (0, Maybe2.isSome)(data) ? data.value : null;
108
- Maybe2.toUndefined = (data) => (0, Maybe2.isSome)(data) ? data.value : void 0;
109
- Maybe2.fromPredicate = (pred) => (a) => pred(a) ? (0, Maybe2.some)(a) : (0, Maybe2.none)();
110
- Maybe2.toResult = (onNone) => (data) => (0, Maybe2.isSome)(data) ? Result.ok(data.value) : Result.err(onNone());
111
- Maybe2.fromResult = (data) => Result.isOk(data) ? (0, Maybe2.some)(data.value) : (0, Maybe2.none)();
112
- Maybe2.map = (f) => (data) => (0, Maybe2.isSome)(data) ? (0, Maybe2.some)(f(data.value)) : data;
113
- Maybe2.chain = (f) => (data) => (0, Maybe2.isSome)(data) ? f(data.value) : data;
114
- Maybe2.fold = (onNone, onSome) => (data) => (0, Maybe2.isSome)(data) ? onSome(data.value) : onNone();
115
- Maybe2.match = (cases) => (data) => (0, Maybe2.isSome)(data) ? cases.some(data.value) : cases.none();
116
- Maybe2.getOrElse = (defaultValue) => (data) => (0, Maybe2.isSome)(data) ? data.value : defaultValue();
117
- Maybe2.tap = (f) => (data) => {
118
- if ((0, Maybe2.isSome)(data)) {
119
- f(data.value);
120
- }
121
- return data;
122
- };
123
- Maybe2.filter = (predicate) => (data) => (0, Maybe2.isSome)(data) ? predicate(data.value) ? data : (0, Maybe2.none)() : data;
124
- Maybe2.recover = (fallback) => (data) => (0, Maybe2.isSome)(data) ? data : fallback();
125
- Maybe2.ap = (arg) => (data) => (0, Maybe2.isSome)(data) && (0, Maybe2.isSome)(arg) ? (0, Maybe2.some)(data.value(arg.value)) : (0, Maybe2.none)();
126
- })(Maybe || (Maybe = {}));
127
-
128
50
  // src/Core/Combinable.ts
129
51
  var Combinable;
130
52
  ((Combinable2) => {
@@ -191,18 +113,18 @@ var Lazy;
191
113
 
192
114
  // src/Core/Lens.ts
193
115
  var Lens;
194
- ((Lens2) => {
195
- Lens2.make = (get2, set2) => ({ get: get2, set: set2 });
196
- Lens2.prop = () => (key) => (0, Lens2.make)((s) => s[key], (a) => (s) => ({ ...s, [key]: a }));
197
- Lens2.get = (lens) => (s) => lens.get(s);
198
- Lens2.set = (lens) => (a) => (s) => lens.set(a)(s);
199
- Lens2.modify = (lens) => (f) => (s) => lens.set(f(lens.get(s)))(s);
200
- Lens2.andThen = (inner) => (outer) => (0, Lens2.make)((s) => inner.get(outer.get(s)), (b) => (s) => outer.set(inner.set(b)(outer.get(s)))(s));
201
- Lens2.andThenOptional = (inner) => (outer) => ({
116
+ ((Lens3) => {
117
+ Lens3.make = (get2, set2) => ({ get: get2, set: set2 });
118
+ Lens3.prop = () => (key) => (0, Lens3.make)((s) => s[key], (a) => (s) => ({ ...s, [key]: a }));
119
+ Lens3.get = (lens) => (s) => lens.get(s);
120
+ Lens3.set = (lens) => (a) => (s) => lens.set(a)(s);
121
+ Lens3.modify = (lens) => (f) => (s) => lens.set(f(lens.get(s)))(s);
122
+ Lens3.andThen = (inner) => (outer) => (0, Lens3.make)((s) => inner.get(outer.get(s)), (b) => (s) => outer.set(inner.set(b)(outer.get(s)))(s));
123
+ Lens3.andThenOptional = (inner) => (outer) => ({
202
124
  get: (s) => inner.get(outer.get(s)),
203
125
  set: (b) => (s) => outer.set(inner.set(b)(outer.get(s)))(s)
204
126
  });
205
- Lens2.toOptional = (lens) => ({
127
+ Lens3.toOptional = (lens) => ({
206
128
  get: (s) => ({ kind: "Some", value: lens.get(s) }),
207
129
  set: lens.set
208
130
  });
@@ -230,8 +152,59 @@ var Logged;
230
152
  return data;
231
153
  };
232
154
  Logged2.run = (data) => [data.value, data.log];
155
+ Logged2.bindTo = (key) => (data) => (0, Logged2.map)((a) => ({ [key]: a }))(data);
156
+ Logged2.bind = (key, f) => (data) => (0, Logged2.chain)(
157
+ (a) => (0, Logged2.map)((b) => ({ ...a, [key]: b }))(f(a))
158
+ )(data);
233
159
  })(Logged || (Logged = {}));
234
160
 
161
+ // src/Core/Maybe.ts
162
+ var _none = { kind: "None" };
163
+ var Maybe;
164
+ ((Maybe2) => {
165
+ Maybe2.some = (value) => ({ kind: "Some", value });
166
+ Maybe2.isSome = (data) => data.kind === "Some";
167
+ Maybe2.none = () => _none;
168
+ Maybe2.isNone = (data) => data.kind === "None";
169
+ Maybe2.fromNullable = (value) => value === null || value === void 0 ? (0, Maybe2.none)() : (0, Maybe2.some)(value);
170
+ Maybe2.toNullable = (data) => (0, Maybe2.isSome)(data) ? data.value : null;
171
+ Maybe2.toUndefined = (data) => (0, Maybe2.isSome)(data) ? data.value : void 0;
172
+ Maybe2.fromPredicate = (pred) => (a) => pred(a) ? (0, Maybe2.some)(a) : (0, Maybe2.none)();
173
+ Maybe2.toResult = (onNone) => (data) => (0, Maybe2.isSome)(data) ? Result.ok(data.value) : Result.err(onNone());
174
+ Maybe2.fromResult = (data) => Result.isOk(data) ? (0, Maybe2.some)(data.value) : (0, Maybe2.none)();
175
+ Maybe2.map = (f) => (data) => (0, Maybe2.isSome)(data) ? (0, Maybe2.some)(f(data.value)) : data;
176
+ Maybe2.chain = (f) => (data) => (0, Maybe2.isSome)(data) ? f(data.value) : data;
177
+ Maybe2.fold = (onNone, onSome) => (data) => (0, Maybe2.isSome)(data) ? onSome(data.value) : onNone();
178
+ Maybe2.match = (cases) => (data) => (0, Maybe2.isSome)(data) ? cases.some(data.value) : cases.none();
179
+ Maybe2.getOrElse = (defaultValue) => (data) => (0, Maybe2.isSome)(data) ? data.value : defaultValue();
180
+ Maybe2.tap = (f) => (data) => {
181
+ if ((0, Maybe2.isSome)(data)) {
182
+ f(data.value);
183
+ }
184
+ return data;
185
+ };
186
+ Maybe2.filter = (predicate) => (data) => (0, Maybe2.isSome)(data) ? predicate(data.value) ? data : (0, Maybe2.none)() : data;
187
+ Maybe2.recover = (fallback) => (data) => (0, Maybe2.isSome)(data) ? data : fallback();
188
+ Maybe2.ap = (arg) => (data) => (0, Maybe2.isSome)(data) && (0, Maybe2.isSome)(arg) ? (0, Maybe2.some)(data.value(arg.value)) : (0, Maybe2.none)();
189
+ Maybe2.bindTo = (key) => (data) => (0, Maybe2.map)((a) => ({ [key]: a }))(data);
190
+ Maybe2.bind = (key, f) => (data) => (0, Maybe2.chain)(
191
+ (a) => (0, Maybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
192
+ )(data);
193
+ Maybe2.struct = (fields) => {
194
+ const result = {};
195
+ for (const key in fields) {
196
+ if (Object.hasOwn(fields, key)) {
197
+ const res = fields[key];
198
+ if ((0, Maybe2.isNone)(res)) {
199
+ return res;
200
+ }
201
+ result[key] = res.value;
202
+ }
203
+ }
204
+ return (0, Maybe2.some)(result);
205
+ };
206
+ })(Maybe || (Maybe = {}));
207
+
235
208
  // src/Types/Brand.ts
236
209
  var Brand;
237
210
  ((Brand2) => {
@@ -1429,6 +1402,10 @@ var Reader;
1429
1402
  };
1430
1403
  Reader2.local = (f) => (data) => (env) => data(f(env));
1431
1404
  Reader2.run = (env) => (data) => data(env);
1405
+ Reader2.bindTo = (key) => (data) => (0, Reader2.map)((a) => ({ [key]: a }))(data);
1406
+ Reader2.bind = (key, f) => (data) => (0, Reader2.chain)(
1407
+ (a) => (0, Reader2.map)((b) => ({ ...a, [key]: b }))(f(a))
1408
+ )(data);
1432
1409
  })(Reader || (Reader = {}));
1433
1410
 
1434
1411
  // src/Core/Refinement.ts
@@ -1526,6 +1503,152 @@ var RemoteData;
1526
1503
  RemoteData2.filter = (pred, onFalse) => (data) => (0, RemoteData2.isSuccess)(data) ? pred(data.value) ? data : (0, RemoteData2.failure)(onFalse(data.value)) : data;
1527
1504
  })(RemoteData || (RemoteData = {}));
1528
1505
 
1506
+ // src/Core/Resource.ts
1507
+ var Resource;
1508
+ ((Resource2) => {
1509
+ Resource2.make = (acquire, release) => ({
1510
+ acquire,
1511
+ release
1512
+ });
1513
+ Resource2.fromTask = (acquire, release) => ({
1514
+ acquire: Task.map((a) => Result.ok(a))(acquire),
1515
+ release
1516
+ });
1517
+ Resource2.use = (f) => (resource) => Task.from(
1518
+ (signal) => Deferred.toPromise(resource.acquire(signal)).then(async (acquired) => {
1519
+ if (Result.isErr(acquired)) {
1520
+ return acquired;
1521
+ }
1522
+ const a = acquired.value;
1523
+ try {
1524
+ const usageResult = await Deferred.toPromise(f(a)(signal));
1525
+ return usageResult;
1526
+ } finally {
1527
+ await Deferred.toPromise(resource.release(a)(signal));
1528
+ }
1529
+ })
1530
+ );
1531
+ Resource2.combine = (resourceA, resourceB) => ({
1532
+ acquire: Task.from(
1533
+ (signal) => Deferred.toPromise(resourceA.acquire(signal)).then(async (acquiredA) => {
1534
+ if (Result.isErr(acquiredA)) {
1535
+ return acquiredA;
1536
+ }
1537
+ const a = acquiredA.value;
1538
+ const acquiredB = await Deferred.toPromise(resourceB.acquire(signal));
1539
+ if (Result.isErr(acquiredB)) {
1540
+ await Deferred.toPromise(resourceA.release(a)(signal));
1541
+ return acquiredB;
1542
+ }
1543
+ return Result.ok([a, acquiredB.value]);
1544
+ })
1545
+ ),
1546
+ release: ([a, b]) => Task.from(
1547
+ (signal) => Deferred.toPromise(resourceB.release(b)(signal)).then(() => Deferred.toPromise(resourceA.release(a)(signal)))
1548
+ )
1549
+ });
1550
+ })(Resource || (Resource = {}));
1551
+
1552
+ // src/Core/Result.ts
1553
+ var Result;
1554
+ ((Result4) => {
1555
+ Result4.ok = (value) => ({ kind: "Ok", value });
1556
+ Result4.err = (e) => ({ kind: "Err", error: e });
1557
+ Result4.isOk = (data) => data.kind === "Ok";
1558
+ Result4.isErr = (data) => data.kind === "Err";
1559
+ Result4.tryCatch = (f, onError) => {
1560
+ try {
1561
+ return (0, Result4.ok)(f());
1562
+ } catch (error) {
1563
+ return (0, Result4.err)(onError(error));
1564
+ }
1565
+ };
1566
+ Result4.map = (f) => (data) => (0, Result4.isOk)(data) ? (0, Result4.ok)(f(data.value)) : data;
1567
+ Result4.mapError = (f) => (data) => (0, Result4.isErr)(data) ? (0, Result4.err)(f(data.error)) : data;
1568
+ Result4.chain = (f) => (data) => (0, Result4.isOk)(data) ? f(data.value) : data;
1569
+ Result4.fold = (onErr, onOk) => (data) => (0, Result4.isOk)(data) ? onOk(data.value) : onErr(data.error);
1570
+ Result4.match = (cases) => (data) => (0, Result4.isOk)(data) ? cases.ok(data.value) : cases.err(data.error);
1571
+ Result4.getOrElse = (defaultValue) => (data) => (0, Result4.isOk)(data) ? data.value : defaultValue();
1572
+ Result4.tap = (f) => (data) => {
1573
+ if ((0, Result4.isOk)(data)) {
1574
+ f(data.value);
1575
+ }
1576
+ return data;
1577
+ };
1578
+ Result4.tapError = (f) => (data) => {
1579
+ if ((0, Result4.isErr)(data)) {
1580
+ f(data.error);
1581
+ }
1582
+ return data;
1583
+ };
1584
+ Result4.fromPredicate = (pred, onFalse) => (a) => pred(a) ? (0, Result4.ok)(a) : (0, Result4.err)(onFalse(a));
1585
+ Result4.fromNullable = (onNull) => (value) => value === null || value === void 0 ? (0, Result4.err)(onNull()) : (0, Result4.ok)(value);
1586
+ Result4.fromMaybe = (onNone) => (maybe) => Maybe.isNone(maybe) ? (0, Result4.err)(onNone()) : (0, Result4.ok)(maybe.value);
1587
+ Result4.fromThrowable = (f, onError) => (...args) => {
1588
+ try {
1589
+ return (0, Result4.ok)(f(...args));
1590
+ } catch (error) {
1591
+ return (0, Result4.err)(onError(error));
1592
+ }
1593
+ };
1594
+ Result4.recover = (fallback) => (data) => (0, Result4.isOk)(data) ? data : fallback(data.error);
1595
+ Result4.recoverUnless = (isBlocked, fallback) => (data) => (0, Result4.isErr)(data) && !isBlocked(data.error) ? fallback() : data;
1596
+ Result4.toMaybe = (data) => (0, Result4.isOk)(data) ? Maybe.some(data.value) : Maybe.none();
1597
+ Result4.ap = (arg) => (data) => (0, Result4.isOk)(data) && (0, Result4.isOk)(arg) ? (0, Result4.ok)(data.value(arg.value)) : (0, Result4.isErr)(data) ? data : arg;
1598
+ Result4.bindTo = (key) => (data) => (0, Result4.map)((a) => ({ [key]: a }))(data);
1599
+ Result4.bind = (key, f) => (data) => (0, Result4.chain)(
1600
+ (a) => (0, Result4.map)((b) => ({ ...a, [key]: b }))(f(a))
1601
+ )(data);
1602
+ Result4.struct = (fields) => {
1603
+ const result = {};
1604
+ for (const key in fields) {
1605
+ if (Object.hasOwn(fields, key)) {
1606
+ const res = fields[key];
1607
+ if ((0, Result4.isErr)(res)) {
1608
+ return res;
1609
+ }
1610
+ result[key] = res.value;
1611
+ }
1612
+ }
1613
+ return (0, Result4.ok)(result);
1614
+ };
1615
+ })(Result || (Result = {}));
1616
+
1617
+ // src/Core/State.ts
1618
+ var State;
1619
+ ((State2) => {
1620
+ State2.resolve = (value) => (s) => [value, s];
1621
+ State2.get = () => (s) => [s, s];
1622
+ State2.gets = (f) => (s) => [f(s), s];
1623
+ State2.put = (newState) => (_s) => [void 0, newState];
1624
+ State2.modify = (f) => (s) => [void 0, f(s)];
1625
+ State2.map = (f) => (st) => (s) => {
1626
+ const [a, s1] = st(s);
1627
+ return [f(a), s1];
1628
+ };
1629
+ State2.chain = (f) => (st) => (s) => {
1630
+ const [a, s1] = st(s);
1631
+ return f(a)(s1);
1632
+ };
1633
+ State2.ap = (arg) => (fn) => (s) => {
1634
+ const [f, s1] = fn(s);
1635
+ const [a, s2] = arg(s1);
1636
+ return [f(a), s2];
1637
+ };
1638
+ State2.tap = (f) => (st) => (s) => {
1639
+ const [a, s1] = st(s);
1640
+ f(a);
1641
+ return [a, s1];
1642
+ };
1643
+ State2.run = (initialState) => (st) => st(initialState);
1644
+ State2.evaluate = (initialState) => (st) => st(initialState)[0];
1645
+ State2.execute = (initialState) => (st) => st(initialState)[1];
1646
+ State2.bindTo = (key) => (data) => (0, State2.map)((a) => ({ [key]: a }))(data);
1647
+ State2.bind = (key, f) => (data) => (0, State2.chain)(
1648
+ (a) => (0, State2.map)((b) => ({ ...a, [key]: b }))(f(a))
1649
+ )(data);
1650
+ })(State || (State = {}));
1651
+
1529
1652
  // src/Core/Task.ts
1530
1653
  var toPromise = (task, signal) => Deferred.toPromise(task(signal));
1531
1654
  var getMs2 = (duration) => Duration.toMilliseconds(duration);
@@ -1748,85 +1871,12 @@ var Task;
1748
1871
  return { task, abort };
1749
1872
  };
1750
1873
  Task2.run = (signal) => (task) => Deferred.toPromise(task(signal));
1874
+ Task2.bindTo = (key) => (data) => (0, Task2.map)((a) => ({ [key]: a }))(data);
1875
+ Task2.bind = (key, f) => (data) => (0, Task2.chain)(
1876
+ (a) => (0, Task2.map)((b) => ({ ...a, [key]: b }))(f(a))
1877
+ )(data);
1751
1878
  })(Task || (Task = {}));
1752
1879
 
1753
- // src/Core/Resource.ts
1754
- var Resource;
1755
- ((Resource2) => {
1756
- Resource2.make = (acquire, release) => ({
1757
- acquire,
1758
- release
1759
- });
1760
- Resource2.fromTask = (acquire, release) => ({
1761
- acquire: Task.map((a) => Result.ok(a))(acquire),
1762
- release
1763
- });
1764
- Resource2.use = (f) => (resource) => Task.from(
1765
- (signal) => Deferred.toPromise(resource.acquire(signal)).then(async (acquired) => {
1766
- if (Result.isErr(acquired)) {
1767
- return acquired;
1768
- }
1769
- const a = acquired.value;
1770
- try {
1771
- const usageResult = await Deferred.toPromise(f(a)(signal));
1772
- return usageResult;
1773
- } finally {
1774
- await Deferred.toPromise(resource.release(a)(signal));
1775
- }
1776
- })
1777
- );
1778
- Resource2.combine = (resourceA, resourceB) => ({
1779
- acquire: Task.from(
1780
- (signal) => Deferred.toPromise(resourceA.acquire(signal)).then(async (acquiredA) => {
1781
- if (Result.isErr(acquiredA)) {
1782
- return acquiredA;
1783
- }
1784
- const a = acquiredA.value;
1785
- const acquiredB = await Deferred.toPromise(resourceB.acquire(signal));
1786
- if (Result.isErr(acquiredB)) {
1787
- await Deferred.toPromise(resourceA.release(a)(signal));
1788
- return acquiredB;
1789
- }
1790
- return Result.ok([a, acquiredB.value]);
1791
- })
1792
- ),
1793
- release: ([a, b]) => Task.from(
1794
- (signal) => Deferred.toPromise(resourceB.release(b)(signal)).then(() => Deferred.toPromise(resourceA.release(a)(signal)))
1795
- )
1796
- });
1797
- })(Resource || (Resource = {}));
1798
-
1799
- // src/Core/State.ts
1800
- var State;
1801
- ((State2) => {
1802
- State2.resolve = (value) => (s) => [value, s];
1803
- State2.get = () => (s) => [s, s];
1804
- State2.gets = (f) => (s) => [f(s), s];
1805
- State2.put = (newState) => (_s) => [void 0, newState];
1806
- State2.modify = (f) => (s) => [void 0, f(s)];
1807
- State2.map = (f) => (st) => (s) => {
1808
- const [a, s1] = st(s);
1809
- return [f(a), s1];
1810
- };
1811
- State2.chain = (f) => (st) => (s) => {
1812
- const [a, s1] = st(s);
1813
- return f(a)(s1);
1814
- };
1815
- State2.ap = (arg) => (fn) => (s) => {
1816
- const [f, s1] = fn(s);
1817
- const [a, s2] = arg(s1);
1818
- return [f(a), s2];
1819
- };
1820
- State2.tap = (f) => (st) => (s) => {
1821
- const [a, s1] = st(s);
1822
- f(a);
1823
- return [a, s1];
1824
- };
1825
- State2.run = (initialState) => (st) => st(initialState);
1826
- State2.evaluate = (initialState) => (st) => st(initialState)[0];
1827
- State2.execute = (initialState) => (st) => st(initialState)[1];
1828
- })(State || (State = {}));
1829
-
1830
1880
  // src/Core/TaskMaybe.ts
1831
1881
  var TaskMaybe;
1832
1882
  ((TaskMaybe2) => {
@@ -1850,99 +1900,63 @@ var TaskMaybe;
1850
1900
  TaskMaybe2.tap = (f) => (data) => Task.map(Maybe.tap(f))(data);
1851
1901
  TaskMaybe2.filter = (predicate) => (data) => Task.map(Maybe.filter(predicate))(data);
1852
1902
  TaskMaybe2.toTaskResult = (onNone) => (data) => Task.map(Maybe.toResult(onNone))(data);
1903
+ TaskMaybe2.bindTo = (key) => (data) => (0, TaskMaybe2.map)((a) => ({ [key]: a }))(data);
1904
+ TaskMaybe2.bind = (key, f) => (data) => (0, TaskMaybe2.chain)(
1905
+ (a) => (0, TaskMaybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
1906
+ )(data);
1853
1907
  })(TaskMaybe || (TaskMaybe = {}));
1854
1908
 
1855
1909
  // src/Core/TaskResult.ts
1856
- var TaskResult;
1857
- ((TaskResult2) => {
1858
- TaskResult2.ok = (value) => Task.resolve(Result.ok(value));
1859
- TaskResult2.err = (error) => Task.resolve(Result.err(error));
1860
- TaskResult2.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Result.err(onNull()) : Result.ok(value));
1861
- TaskResult2.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Result.err(onNone()) : Result.ok(maybe.value));
1862
- TaskResult2.fromResult = (result) => Task.resolve(result);
1863
- TaskResult2.fromThrowable = (f, onError) => (...args) => Task.from(() => f(...args).then(Result.ok).catch((error) => Result.err(onError(error))));
1864
- TaskResult2.tryCatch = (f, onError) => Task.from((signal) => f(signal).then(Result.ok).catch((error) => Result.err(onError(error))));
1865
- TaskResult2.map = (f) => (data) => Task.map(Result.map(f))(data);
1866
- TaskResult2.mapError = (f) => (data) => Task.map(Result.mapError(f))(data);
1867
- TaskResult2.chain = (f) => (data) => Task.chain((result) => Result.isOk(result) ? f(result.value) : Task.resolve(Result.err(result.error)))(
1910
+ var TaskResult3;
1911
+ ((TaskResult4) => {
1912
+ TaskResult4.ok = (value) => Task.resolve(Result.ok(value));
1913
+ TaskResult4.err = (error) => Task.resolve(Result.err(error));
1914
+ TaskResult4.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Result.err(onNull()) : Result.ok(value));
1915
+ TaskResult4.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Result.err(onNone()) : Result.ok(maybe.value));
1916
+ TaskResult4.fromResult = (result) => Task.resolve(result);
1917
+ TaskResult4.fromThrowable = (f, onError) => (...args) => Task.from(() => f(...args).then(Result.ok).catch((error) => Result.err(onError(error))));
1918
+ TaskResult4.tryCatch = (f, onError) => Task.from((signal) => f(signal).then(Result.ok).catch((error) => Result.err(onError(error))));
1919
+ TaskResult4.map = (f) => (data) => Task.map(Result.map(f))(data);
1920
+ TaskResult4.mapError = (f) => (data) => Task.map(Result.mapError(f))(data);
1921
+ TaskResult4.chain = (f) => (data) => Task.chain((result) => Result.isOk(result) ? f(result.value) : Task.resolve(Result.err(result.error)))(
1868
1922
  data
1869
1923
  );
1870
- TaskResult2.fold = (onErr, onOk) => (data) => Task.map(Result.fold(onErr, onOk))(data);
1871
- TaskResult2.match = (cases) => (data) => Task.map(Result.match(cases))(data);
1872
- TaskResult2.recover = (fallback) => (data) => Task.chain(
1924
+ TaskResult4.fold = (onErr, onOk) => (data) => Task.map(Result.fold(onErr, onOk))(data);
1925
+ TaskResult4.match = (cases) => (data) => Task.map(Result.match(cases))(data);
1926
+ TaskResult4.recover = (fallback) => (data) => Task.chain(
1873
1927
  (result) => Result.isErr(result) ? fallback(result.error) : Task.resolve(result)
1874
1928
  )(data);
1875
- TaskResult2.getOrElse = (defaultValue) => (data) => Task.map(Result.getOrElse(defaultValue))(data);
1876
- TaskResult2.tap = (f) => (data) => Task.map(Result.tap(f))(data);
1877
- TaskResult2.tapError = (f) => (data) => Task.map(Result.tapError(f))(data);
1878
- TaskResult2.ap = (arg) => (data) => Task.from(
1929
+ TaskResult4.getOrElse = (defaultValue) => (data) => Task.map(Result.getOrElse(defaultValue))(data);
1930
+ TaskResult4.tap = (f) => (data) => Task.map(Result.tap(f))(data);
1931
+ TaskResult4.tapError = (f) => (data) => Task.map(Result.tapError(f))(data);
1932
+ TaskResult4.ap = (arg) => (data) => Task.from(
1879
1933
  (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
1880
1934
  ([of_, oa]) => Result.ap(oa)(of_)
1881
1935
  )
1882
1936
  );
1883
- TaskResult2.run = (signal) => (task) => Deferred.toPromise(task(signal));
1884
- })(TaskResult || (TaskResult = {}));
1885
-
1886
- // src/Core/Validation.ts
1887
- var Validation;
1888
- ((Validation2) => {
1889
- Validation2.passed = (value) => ({ kind: "Passed", value });
1890
- Validation2.failed = (error) => ({ kind: "Failed", errors: [error] });
1891
- Validation2.failedAll = (errors) => ({ kind: "Failed", errors });
1892
- Validation2.isPassed = (data) => data.kind === "Passed";
1893
- Validation2.isFailed = (data) => data.kind === "Failed";
1894
- Validation2.fromPredicate = (pred, onFalse) => (a) => pred(a) ? (0, Validation2.passed)(a) : (0, Validation2.failed)(onFalse(a));
1895
- Validation2.fromNullable = (onNull) => (value) => value === null || value === void 0 ? (0, Validation2.failed)(onNull()) : (0, Validation2.passed)(value);
1896
- Validation2.fromMaybe = (onNone) => (maybe) => Maybe.isNone(maybe) ? (0, Validation2.failed)(onNone()) : (0, Validation2.passed)(maybe.value);
1897
- Validation2.map = (f) => (data) => (0, Validation2.isPassed)(data) ? (0, Validation2.passed)(f(data.value)) : data;
1898
- Validation2.mapError = (f) => (data) => (0, Validation2.isFailed)(data) ? (0, Validation2.failedAll)(data.errors.map(f)) : data;
1899
- Validation2.ap = (arg) => (data) => {
1900
- if ((0, Validation2.isPassed)(data) && (0, Validation2.isPassed)(arg)) {
1901
- return (0, Validation2.passed)(data.value(arg.value));
1902
- }
1903
- const errors = [...(0, Validation2.isFailed)(data) ? data.errors : [], ...(0, Validation2.isFailed)(arg) ? arg.errors : []];
1904
- return (0, Validation2.failedAll)(errors);
1905
- };
1906
- Validation2.fold = (onFailed, onPassed) => (data) => (0, Validation2.isPassed)(data) ? onPassed(data.value) : onFailed(data.errors);
1907
- Validation2.match = (cases) => (data) => (0, Validation2.isPassed)(data) ? cases.passed(data.value) : cases.failed(data.errors);
1908
- Validation2.getOrElse = (defaultValue) => (data) => (0, Validation2.isPassed)(data) ? data.value : defaultValue();
1909
- Validation2.tap = (f) => (data) => {
1910
- if ((0, Validation2.isPassed)(data)) {
1911
- f(data.value);
1912
- }
1913
- return data;
1914
- };
1915
- Validation2.tapError = (f) => (data) => {
1916
- if ((0, Validation2.isFailed)(data)) {
1917
- f(data.errors);
1918
- }
1919
- return data;
1920
- };
1921
- Validation2.recover = (fallback) => (data) => (0, Validation2.isPassed)(data) ? data : fallback(data.errors);
1922
- Validation2.recoverUnless = (isBlocked, fallback) => (data) => (0, Validation2.isFailed)(data) && !data.errors.some(isBlocked) ? fallback() : data;
1923
- Validation2.toResult = (data) => (0, Validation2.isPassed)(data) ? Result.ok(data.value) : Result.err(data.errors);
1924
- Validation2.toMaybe = (data) => (0, Validation2.isPassed)(data) ? Maybe.some(data.value) : Maybe.none();
1925
- Validation2.fromResult = (data) => data.kind === "Ok" ? (0, Validation2.passed)(data.value) : (0, Validation2.failed)(data.error);
1926
- Validation2.product = (first, second) => {
1927
- if ((0, Validation2.isPassed)(first) && (0, Validation2.isPassed)(second)) {
1928
- return (0, Validation2.passed)([first.value, second.value]);
1929
- }
1930
- const errors = [...(0, Validation2.isFailed)(first) ? first.errors : [], ...(0, Validation2.isFailed)(second) ? second.errors : []];
1931
- return (0, Validation2.failedAll)(errors);
1932
- };
1933
- Validation2.productAll = (data) => {
1934
- const values = [];
1935
- const errors = [];
1936
- for (const v of data) {
1937
- if ((0, Validation2.isPassed)(v)) {
1938
- values.push(v.value);
1939
- } else {
1940
- errors.push(...v.errors);
1937
+ TaskResult4.run = (signal) => (task) => Deferred.toPromise(task(signal));
1938
+ TaskResult4.bindTo = (key) => (data) => (0, TaskResult4.map)((a) => ({ [key]: a }))(data);
1939
+ TaskResult4.bind = (key, f) => (data) => (0, TaskResult4.chain)(
1940
+ (a) => (0, TaskResult4.map)((b) => ({ ...a, [key]: b }))(f(a))
1941
+ )(data);
1942
+ TaskResult4.struct = (fields) => Task.from((signal) => {
1943
+ const keys = Object.keys(fields);
1944
+ const promises = keys.map((key) => Deferred.toPromise(fields[key](signal)).then((res) => ({ key, res })));
1945
+ return Promise.all(promises).then((results) => {
1946
+ const record = {};
1947
+ for (const key of keys) {
1948
+ const found = results.find((r) => r.key === key);
1949
+ if (found) {
1950
+ if (Result.isErr(found.res)) {
1951
+ return found.res;
1952
+ }
1953
+ record[key] = found.res.value;
1954
+ }
1941
1955
  }
1942
- }
1943
- return errors.length > 0 ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(values);
1944
- };
1945
- })(Validation || (Validation = {}));
1956
+ return Result.ok(record);
1957
+ });
1958
+ });
1959
+ })(TaskResult3 || (TaskResult3 = {}));
1946
1960
 
1947
1961
  // src/Core/TaskValidation.ts
1948
1962
  var TaskValidation;
@@ -2087,6 +2101,82 @@ var Tuple;
2087
2101
  return tuple;
2088
2102
  };
2089
2103
  })(Tuple || (Tuple = {}));
2104
+
2105
+ // src/Core/Validation.ts
2106
+ var Validation;
2107
+ ((Validation2) => {
2108
+ Validation2.passed = (value) => ({ kind: "Passed", value });
2109
+ Validation2.failed = (error) => ({ kind: "Failed", errors: [error] });
2110
+ Validation2.failedAll = (errors) => ({ kind: "Failed", errors });
2111
+ Validation2.isPassed = (data) => data.kind === "Passed";
2112
+ Validation2.isFailed = (data) => data.kind === "Failed";
2113
+ Validation2.fromPredicate = (pred, onFalse) => (a) => pred(a) ? (0, Validation2.passed)(a) : (0, Validation2.failed)(onFalse(a));
2114
+ Validation2.fromNullable = (onNull) => (value) => value === null || value === void 0 ? (0, Validation2.failed)(onNull()) : (0, Validation2.passed)(value);
2115
+ Validation2.fromMaybe = (onNone) => (maybe) => Maybe.isNone(maybe) ? (0, Validation2.failed)(onNone()) : (0, Validation2.passed)(maybe.value);
2116
+ Validation2.map = (f) => (data) => (0, Validation2.isPassed)(data) ? (0, Validation2.passed)(f(data.value)) : data;
2117
+ Validation2.mapError = (f) => (data) => (0, Validation2.isFailed)(data) ? (0, Validation2.failedAll)(data.errors.map(f)) : data;
2118
+ Validation2.ap = (arg) => (data) => {
2119
+ if ((0, Validation2.isPassed)(data) && (0, Validation2.isPassed)(arg)) {
2120
+ return (0, Validation2.passed)(data.value(arg.value));
2121
+ }
2122
+ const errors = [...(0, Validation2.isFailed)(data) ? data.errors : [], ...(0, Validation2.isFailed)(arg) ? arg.errors : []];
2123
+ return (0, Validation2.failedAll)(errors);
2124
+ };
2125
+ Validation2.fold = (onFailed, onPassed) => (data) => (0, Validation2.isPassed)(data) ? onPassed(data.value) : onFailed(data.errors);
2126
+ Validation2.match = (cases) => (data) => (0, Validation2.isPassed)(data) ? cases.passed(data.value) : cases.failed(data.errors);
2127
+ Validation2.getOrElse = (defaultValue) => (data) => (0, Validation2.isPassed)(data) ? data.value : defaultValue();
2128
+ Validation2.tap = (f) => (data) => {
2129
+ if ((0, Validation2.isPassed)(data)) {
2130
+ f(data.value);
2131
+ }
2132
+ return data;
2133
+ };
2134
+ Validation2.tapError = (f) => (data) => {
2135
+ if ((0, Validation2.isFailed)(data)) {
2136
+ f(data.errors);
2137
+ }
2138
+ return data;
2139
+ };
2140
+ Validation2.recover = (fallback) => (data) => (0, Validation2.isPassed)(data) ? data : fallback(data.errors);
2141
+ Validation2.recoverUnless = (isBlocked, fallback) => (data) => (0, Validation2.isFailed)(data) && !data.errors.some(isBlocked) ? fallback() : data;
2142
+ Validation2.toResult = (data) => (0, Validation2.isPassed)(data) ? Result.ok(data.value) : Result.err(data.errors);
2143
+ Validation2.toMaybe = (data) => (0, Validation2.isPassed)(data) ? Maybe.some(data.value) : Maybe.none();
2144
+ Validation2.fromResult = (data) => data.kind === "Ok" ? (0, Validation2.passed)(data.value) : (0, Validation2.failed)(data.error);
2145
+ Validation2.product = (first, second) => {
2146
+ if ((0, Validation2.isPassed)(first) && (0, Validation2.isPassed)(second)) {
2147
+ return (0, Validation2.passed)([first.value, second.value]);
2148
+ }
2149
+ const errors = [...(0, Validation2.isFailed)(first) ? first.errors : [], ...(0, Validation2.isFailed)(second) ? second.errors : []];
2150
+ return (0, Validation2.failedAll)(errors);
2151
+ };
2152
+ Validation2.productAll = (data) => {
2153
+ const values = [];
2154
+ const errors = [];
2155
+ for (const v of data) {
2156
+ if ((0, Validation2.isPassed)(v)) {
2157
+ values.push(v.value);
2158
+ } else {
2159
+ errors.push(...v.errors);
2160
+ }
2161
+ }
2162
+ return errors.length > 0 ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(values);
2163
+ };
2164
+ Validation2.struct = (fields) => {
2165
+ const record = {};
2166
+ const errors = [];
2167
+ for (const key in fields) {
2168
+ if (Object.hasOwn(fields, key)) {
2169
+ const val = fields[key];
2170
+ if ((0, Validation2.isPassed)(val)) {
2171
+ record[key] = val.value;
2172
+ } else {
2173
+ errors.push(...val.errors);
2174
+ }
2175
+ }
2176
+ }
2177
+ return errors.length > 0 ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(record);
2178
+ };
2179
+ })(Validation || (Validation = {}));
2090
2180
  // Annotate the CommonJS export names for ESM import in node:
2091
2181
  0 && (module.exports = {
2092
2182
  Combinable,