@nlozgachev/pipelined 0.37.0 → 0.38.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 +18 -7
- package/dist/{Task-fn1n--6H.d.mts → Task-DcXhCZYg.d.mts} +429 -403
- package/dist/{Task-DIgwvoIb.d.ts → Task-uupX7xd9.d.ts} +429 -403
- package/dist/{chunk-VWVPHDZO.mjs → chunk-5AFEEFE4.mjs} +5 -1
- package/dist/{chunk-72BGUEQM.mjs → chunk-E7YI5PVW.mjs} +2 -2
- package/dist/{chunk-SHO53CQC.mjs → chunk-M2X7TFKN.mjs} +483 -103
- package/dist/core.d.mts +683 -651
- package/dist/core.d.ts +683 -651
- package/dist/core.js +319 -261
- package/dist/core.mjs +6 -8
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +336 -278
- package/dist/index.mjs +16 -21
- package/dist/types.d.mts +29 -29
- package/dist/types.d.ts +29 -29
- package/dist/types.mjs +3 -6
- package/dist/utils.d.mts +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +81 -55
- package/dist/utils.mjs +3 -4
- package/package.json +10 -3
- package/dist/chunk-DBIC62UV.mjs +0 -6
- package/dist/chunk-IPP4XFYH.mjs +0 -0
- package/dist/chunk-PUMSVZB4.mjs +0 -334
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: () =>
|
|
42
|
+
TaskResult: () => TaskResult3,
|
|
43
43
|
TaskValidation: () => TaskValidation,
|
|
44
44
|
These: () => These,
|
|
45
45
|
Tuple: () => Tuple,
|
|
@@ -47,92 +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
|
-
Result2.bindTo = (key) => (data) => (0, Result2.map)((a) => ({ [key]: a }))(data);
|
|
97
|
-
Result2.bind = (key, f) => (data) => (0, Result2.chain)(
|
|
98
|
-
(a) => (0, Result2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
99
|
-
)(data);
|
|
100
|
-
})(Result || (Result = {}));
|
|
101
|
-
|
|
102
|
-
// src/Core/Maybe.ts
|
|
103
|
-
var _none = { kind: "None" };
|
|
104
|
-
var Maybe;
|
|
105
|
-
((Maybe2) => {
|
|
106
|
-
Maybe2.some = (value) => ({ kind: "Some", value });
|
|
107
|
-
Maybe2.isSome = (data) => data.kind === "Some";
|
|
108
|
-
Maybe2.none = () => _none;
|
|
109
|
-
Maybe2.isNone = (data) => data.kind === "None";
|
|
110
|
-
Maybe2.fromNullable = (value) => value === null || value === void 0 ? (0, Maybe2.none)() : (0, Maybe2.some)(value);
|
|
111
|
-
Maybe2.toNullable = (data) => (0, Maybe2.isSome)(data) ? data.value : null;
|
|
112
|
-
Maybe2.toUndefined = (data) => (0, Maybe2.isSome)(data) ? data.value : void 0;
|
|
113
|
-
Maybe2.fromPredicate = (pred) => (a) => pred(a) ? (0, Maybe2.some)(a) : (0, Maybe2.none)();
|
|
114
|
-
Maybe2.toResult = (onNone) => (data) => (0, Maybe2.isSome)(data) ? Result.ok(data.value) : Result.err(onNone());
|
|
115
|
-
Maybe2.fromResult = (data) => Result.isOk(data) ? (0, Maybe2.some)(data.value) : (0, Maybe2.none)();
|
|
116
|
-
Maybe2.map = (f) => (data) => (0, Maybe2.isSome)(data) ? (0, Maybe2.some)(f(data.value)) : data;
|
|
117
|
-
Maybe2.chain = (f) => (data) => (0, Maybe2.isSome)(data) ? f(data.value) : data;
|
|
118
|
-
Maybe2.fold = (onNone, onSome) => (data) => (0, Maybe2.isSome)(data) ? onSome(data.value) : onNone();
|
|
119
|
-
Maybe2.match = (cases) => (data) => (0, Maybe2.isSome)(data) ? cases.some(data.value) : cases.none();
|
|
120
|
-
Maybe2.getOrElse = (defaultValue) => (data) => (0, Maybe2.isSome)(data) ? data.value : defaultValue();
|
|
121
|
-
Maybe2.tap = (f) => (data) => {
|
|
122
|
-
if ((0, Maybe2.isSome)(data)) {
|
|
123
|
-
f(data.value);
|
|
124
|
-
}
|
|
125
|
-
return data;
|
|
126
|
-
};
|
|
127
|
-
Maybe2.filter = (predicate) => (data) => (0, Maybe2.isSome)(data) ? predicate(data.value) ? data : (0, Maybe2.none)() : data;
|
|
128
|
-
Maybe2.recover = (fallback) => (data) => (0, Maybe2.isSome)(data) ? data : fallback();
|
|
129
|
-
Maybe2.ap = (arg) => (data) => (0, Maybe2.isSome)(data) && (0, Maybe2.isSome)(arg) ? (0, Maybe2.some)(data.value(arg.value)) : (0, Maybe2.none)();
|
|
130
|
-
Maybe2.bindTo = (key) => (data) => (0, Maybe2.map)((a) => ({ [key]: a }))(data);
|
|
131
|
-
Maybe2.bind = (key, f) => (data) => (0, Maybe2.chain)(
|
|
132
|
-
(a) => (0, Maybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
133
|
-
)(data);
|
|
134
|
-
})(Maybe || (Maybe = {}));
|
|
135
|
-
|
|
136
50
|
// src/Core/Combinable.ts
|
|
137
51
|
var Combinable;
|
|
138
52
|
((Combinable2) => {
|
|
@@ -199,18 +113,18 @@ var Lazy;
|
|
|
199
113
|
|
|
200
114
|
// src/Core/Lens.ts
|
|
201
115
|
var Lens;
|
|
202
|
-
((
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
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) => ({
|
|
210
124
|
get: (s) => inner.get(outer.get(s)),
|
|
211
125
|
set: (b) => (s) => outer.set(inner.set(b)(outer.get(s)))(s)
|
|
212
126
|
});
|
|
213
|
-
|
|
127
|
+
Lens3.toOptional = (lens) => ({
|
|
214
128
|
get: (s) => ({ kind: "Some", value: lens.get(s) }),
|
|
215
129
|
set: lens.set
|
|
216
130
|
});
|
|
@@ -244,6 +158,53 @@ var Logged;
|
|
|
244
158
|
)(data);
|
|
245
159
|
})(Logged || (Logged = {}));
|
|
246
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
|
+
|
|
247
208
|
// src/Types/Brand.ts
|
|
248
209
|
var Brand;
|
|
249
210
|
((Brand2) => {
|
|
@@ -1542,6 +1503,152 @@ var RemoteData;
|
|
|
1542
1503
|
RemoteData2.filter = (pred, onFalse) => (data) => (0, RemoteData2.isSuccess)(data) ? pred(data.value) ? data : (0, RemoteData2.failure)(onFalse(data.value)) : data;
|
|
1543
1504
|
})(RemoteData || (RemoteData = {}));
|
|
1544
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
|
+
|
|
1545
1652
|
// src/Core/Task.ts
|
|
1546
1653
|
var toPromise = (task, signal) => Deferred.toPromise(task(signal));
|
|
1547
1654
|
var getMs2 = (duration) => Duration.toMilliseconds(duration);
|
|
@@ -1770,87 +1877,6 @@ var Task;
|
|
|
1770
1877
|
)(data);
|
|
1771
1878
|
})(Task || (Task = {}));
|
|
1772
1879
|
|
|
1773
|
-
// src/Core/Resource.ts
|
|
1774
|
-
var Resource;
|
|
1775
|
-
((Resource2) => {
|
|
1776
|
-
Resource2.make = (acquire, release) => ({
|
|
1777
|
-
acquire,
|
|
1778
|
-
release
|
|
1779
|
-
});
|
|
1780
|
-
Resource2.fromTask = (acquire, release) => ({
|
|
1781
|
-
acquire: Task.map((a) => Result.ok(a))(acquire),
|
|
1782
|
-
release
|
|
1783
|
-
});
|
|
1784
|
-
Resource2.use = (f) => (resource) => Task.from(
|
|
1785
|
-
(signal) => Deferred.toPromise(resource.acquire(signal)).then(async (acquired) => {
|
|
1786
|
-
if (Result.isErr(acquired)) {
|
|
1787
|
-
return acquired;
|
|
1788
|
-
}
|
|
1789
|
-
const a = acquired.value;
|
|
1790
|
-
try {
|
|
1791
|
-
const usageResult = await Deferred.toPromise(f(a)(signal));
|
|
1792
|
-
return usageResult;
|
|
1793
|
-
} finally {
|
|
1794
|
-
await Deferred.toPromise(resource.release(a)(signal));
|
|
1795
|
-
}
|
|
1796
|
-
})
|
|
1797
|
-
);
|
|
1798
|
-
Resource2.combine = (resourceA, resourceB) => ({
|
|
1799
|
-
acquire: Task.from(
|
|
1800
|
-
(signal) => Deferred.toPromise(resourceA.acquire(signal)).then(async (acquiredA) => {
|
|
1801
|
-
if (Result.isErr(acquiredA)) {
|
|
1802
|
-
return acquiredA;
|
|
1803
|
-
}
|
|
1804
|
-
const a = acquiredA.value;
|
|
1805
|
-
const acquiredB = await Deferred.toPromise(resourceB.acquire(signal));
|
|
1806
|
-
if (Result.isErr(acquiredB)) {
|
|
1807
|
-
await Deferred.toPromise(resourceA.release(a)(signal));
|
|
1808
|
-
return acquiredB;
|
|
1809
|
-
}
|
|
1810
|
-
return Result.ok([a, acquiredB.value]);
|
|
1811
|
-
})
|
|
1812
|
-
),
|
|
1813
|
-
release: ([a, b]) => Task.from(
|
|
1814
|
-
(signal) => Deferred.toPromise(resourceB.release(b)(signal)).then(() => Deferred.toPromise(resourceA.release(a)(signal)))
|
|
1815
|
-
)
|
|
1816
|
-
});
|
|
1817
|
-
})(Resource || (Resource = {}));
|
|
1818
|
-
|
|
1819
|
-
// src/Core/State.ts
|
|
1820
|
-
var State;
|
|
1821
|
-
((State2) => {
|
|
1822
|
-
State2.resolve = (value) => (s) => [value, s];
|
|
1823
|
-
State2.get = () => (s) => [s, s];
|
|
1824
|
-
State2.gets = (f) => (s) => [f(s), s];
|
|
1825
|
-
State2.put = (newState) => (_s) => [void 0, newState];
|
|
1826
|
-
State2.modify = (f) => (s) => [void 0, f(s)];
|
|
1827
|
-
State2.map = (f) => (st) => (s) => {
|
|
1828
|
-
const [a, s1] = st(s);
|
|
1829
|
-
return [f(a), s1];
|
|
1830
|
-
};
|
|
1831
|
-
State2.chain = (f) => (st) => (s) => {
|
|
1832
|
-
const [a, s1] = st(s);
|
|
1833
|
-
return f(a)(s1);
|
|
1834
|
-
};
|
|
1835
|
-
State2.ap = (arg) => (fn) => (s) => {
|
|
1836
|
-
const [f, s1] = fn(s);
|
|
1837
|
-
const [a, s2] = arg(s1);
|
|
1838
|
-
return [f(a), s2];
|
|
1839
|
-
};
|
|
1840
|
-
State2.tap = (f) => (st) => (s) => {
|
|
1841
|
-
const [a, s1] = st(s);
|
|
1842
|
-
f(a);
|
|
1843
|
-
return [a, s1];
|
|
1844
|
-
};
|
|
1845
|
-
State2.run = (initialState) => (st) => st(initialState);
|
|
1846
|
-
State2.evaluate = (initialState) => (st) => st(initialState)[0];
|
|
1847
|
-
State2.execute = (initialState) => (st) => st(initialState)[1];
|
|
1848
|
-
State2.bindTo = (key) => (data) => (0, State2.map)((a) => ({ [key]: a }))(data);
|
|
1849
|
-
State2.bind = (key, f) => (data) => (0, State2.chain)(
|
|
1850
|
-
(a) => (0, State2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
1851
|
-
)(data);
|
|
1852
|
-
})(State || (State = {}));
|
|
1853
|
-
|
|
1854
1880
|
// src/Core/TaskMaybe.ts
|
|
1855
1881
|
var TaskMaybe;
|
|
1856
1882
|
((TaskMaybe2) => {
|
|
@@ -1881,100 +1907,56 @@ var TaskMaybe;
|
|
|
1881
1907
|
})(TaskMaybe || (TaskMaybe = {}));
|
|
1882
1908
|
|
|
1883
1909
|
// src/Core/TaskResult.ts
|
|
1884
|
-
var
|
|
1885
|
-
((
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
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)))(
|
|
1896
1922
|
data
|
|
1897
1923
|
);
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
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(
|
|
1901
1927
|
(result) => Result.isErr(result) ? fallback(result.error) : Task.resolve(result)
|
|
1902
1928
|
)(data);
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
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(
|
|
1907
1933
|
(signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
|
|
1908
1934
|
([of_, oa]) => Result.ap(oa)(of_)
|
|
1909
1935
|
)
|
|
1910
1936
|
);
|
|
1911
|
-
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
(a) => (0,
|
|
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))
|
|
1915
1941
|
)(data);
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
Validation2.map = (f) => (data) => (0, Validation2.isPassed)(data) ? (0, Validation2.passed)(f(data.value)) : data;
|
|
1930
|
-
Validation2.mapError = (f) => (data) => (0, Validation2.isFailed)(data) ? (0, Validation2.failedAll)(data.errors.map(f)) : data;
|
|
1931
|
-
Validation2.ap = (arg) => (data) => {
|
|
1932
|
-
if ((0, Validation2.isPassed)(data) && (0, Validation2.isPassed)(arg)) {
|
|
1933
|
-
return (0, Validation2.passed)(data.value(arg.value));
|
|
1934
|
-
}
|
|
1935
|
-
const errors = [...(0, Validation2.isFailed)(data) ? data.errors : [], ...(0, Validation2.isFailed)(arg) ? arg.errors : []];
|
|
1936
|
-
return (0, Validation2.failedAll)(errors);
|
|
1937
|
-
};
|
|
1938
|
-
Validation2.fold = (onFailed, onPassed) => (data) => (0, Validation2.isPassed)(data) ? onPassed(data.value) : onFailed(data.errors);
|
|
1939
|
-
Validation2.match = (cases) => (data) => (0, Validation2.isPassed)(data) ? cases.passed(data.value) : cases.failed(data.errors);
|
|
1940
|
-
Validation2.getOrElse = (defaultValue) => (data) => (0, Validation2.isPassed)(data) ? data.value : defaultValue();
|
|
1941
|
-
Validation2.tap = (f) => (data) => {
|
|
1942
|
-
if ((0, Validation2.isPassed)(data)) {
|
|
1943
|
-
f(data.value);
|
|
1944
|
-
}
|
|
1945
|
-
return data;
|
|
1946
|
-
};
|
|
1947
|
-
Validation2.tapError = (f) => (data) => {
|
|
1948
|
-
if ((0, Validation2.isFailed)(data)) {
|
|
1949
|
-
f(data.errors);
|
|
1950
|
-
}
|
|
1951
|
-
return data;
|
|
1952
|
-
};
|
|
1953
|
-
Validation2.recover = (fallback) => (data) => (0, Validation2.isPassed)(data) ? data : fallback(data.errors);
|
|
1954
|
-
Validation2.recoverUnless = (isBlocked, fallback) => (data) => (0, Validation2.isFailed)(data) && !data.errors.some(isBlocked) ? fallback() : data;
|
|
1955
|
-
Validation2.toResult = (data) => (0, Validation2.isPassed)(data) ? Result.ok(data.value) : Result.err(data.errors);
|
|
1956
|
-
Validation2.toMaybe = (data) => (0, Validation2.isPassed)(data) ? Maybe.some(data.value) : Maybe.none();
|
|
1957
|
-
Validation2.fromResult = (data) => data.kind === "Ok" ? (0, Validation2.passed)(data.value) : (0, Validation2.failed)(data.error);
|
|
1958
|
-
Validation2.product = (first, second) => {
|
|
1959
|
-
if ((0, Validation2.isPassed)(first) && (0, Validation2.isPassed)(second)) {
|
|
1960
|
-
return (0, Validation2.passed)([first.value, second.value]);
|
|
1961
|
-
}
|
|
1962
|
-
const errors = [...(0, Validation2.isFailed)(first) ? first.errors : [], ...(0, Validation2.isFailed)(second) ? second.errors : []];
|
|
1963
|
-
return (0, Validation2.failedAll)(errors);
|
|
1964
|
-
};
|
|
1965
|
-
Validation2.productAll = (data) => {
|
|
1966
|
-
const values = [];
|
|
1967
|
-
const errors = [];
|
|
1968
|
-
for (const v of data) {
|
|
1969
|
-
if ((0, Validation2.isPassed)(v)) {
|
|
1970
|
-
values.push(v.value);
|
|
1971
|
-
} else {
|
|
1972
|
-
errors.push(...v.errors);
|
|
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
|
+
}
|
|
1973
1955
|
}
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
};
|
|
1977
|
-
})(
|
|
1956
|
+
return Result.ok(record);
|
|
1957
|
+
});
|
|
1958
|
+
});
|
|
1959
|
+
})(TaskResult3 || (TaskResult3 = {}));
|
|
1978
1960
|
|
|
1979
1961
|
// src/Core/TaskValidation.ts
|
|
1980
1962
|
var TaskValidation;
|
|
@@ -2119,6 +2101,82 @@ var Tuple;
|
|
|
2119
2101
|
return tuple;
|
|
2120
2102
|
};
|
|
2121
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 = {}));
|
|
2122
2180
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2123
2181
|
0 && (module.exports = {
|
|
2124
2182
|
Combinable,
|