@nlozgachev/pipelined 0.31.0 → 0.32.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/dist/{Task-BDcKwFAj.d.mts → Task-CJZfcOkO.d.mts} +218 -53
- package/dist/{Task-CnF22Q2o.d.ts → Task-CjYKLeTY.d.ts} +218 -53
- package/dist/{chunk-FWYOEWJ2.mjs → chunk-EHQFUWZW.mjs} +57 -4
- package/dist/{chunk-VIC54JR4.mjs → chunk-L3NC44SN.mjs} +122 -21
- package/dist/{chunk-SDGDJ7CU.mjs → chunk-TK5ZCGP2.mjs} +111 -34
- package/dist/core.d.mts +179 -8
- package/dist/core.d.ts +179 -8
- package/dist/core.js +284 -102
- package/dist/core.mjs +10 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +340 -105
- package/dist/index.mjs +11 -3
- package/dist/utils.d.mts +81 -1
- package/dist/utils.d.ts +81 -1
- package/dist/utils.js +156 -26
- package/dist/utils.mjs +2 -2
- package/package.json +1 -1
package/dist/core.js
CHANGED
|
@@ -20,12 +20,16 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/Core/index.ts
|
|
21
21
|
var Core_exports = {};
|
|
22
22
|
__export(Core_exports, {
|
|
23
|
+
Combinable: () => Combinable,
|
|
23
24
|
Deferred: () => Deferred,
|
|
25
|
+
Equality: () => Equality,
|
|
26
|
+
Lazy: () => Lazy,
|
|
24
27
|
Lens: () => Lens,
|
|
25
28
|
Logged: () => Logged,
|
|
26
29
|
Maybe: () => Maybe,
|
|
27
30
|
Op: () => Op,
|
|
28
31
|
Optional: () => Optional,
|
|
32
|
+
Ordering: () => Ordering,
|
|
29
33
|
Predicate: () => Predicate,
|
|
30
34
|
Reader: () => Reader,
|
|
31
35
|
Refinement: () => Refinement,
|
|
@@ -43,65 +47,6 @@ __export(Core_exports, {
|
|
|
43
47
|
});
|
|
44
48
|
module.exports = __toCommonJS(Core_exports);
|
|
45
49
|
|
|
46
|
-
// src/Core/Deferred.ts
|
|
47
|
-
var Deferred;
|
|
48
|
-
((Deferred2) => {
|
|
49
|
-
Deferred2.fromPromise = (p) => (
|
|
50
|
-
// eslint-disable-next-line unicorn/no-thenable -- Deferred is intentionally thenable; it is the mechanism that makes Task awaitable
|
|
51
|
-
{ then: ((f) => p.then(f)) }
|
|
52
|
-
);
|
|
53
|
-
Deferred2.toPromise = (d) => new Promise((resolve) => d.then(resolve));
|
|
54
|
-
})(Deferred || (Deferred = {}));
|
|
55
|
-
|
|
56
|
-
// src/Core/Lens.ts
|
|
57
|
-
var Lens;
|
|
58
|
-
((Lens2) => {
|
|
59
|
-
Lens2.make = (get2, set2) => ({ get: get2, set: set2 });
|
|
60
|
-
Lens2.prop = () => (key) => (0, Lens2.make)(
|
|
61
|
-
(s) => s[key],
|
|
62
|
-
(a) => (s) => ({ ...s, [key]: a })
|
|
63
|
-
);
|
|
64
|
-
Lens2.get = (lens) => (s) => lens.get(s);
|
|
65
|
-
Lens2.set = (lens) => (a) => (s) => lens.set(a)(s);
|
|
66
|
-
Lens2.modify = (lens) => (f) => (s) => lens.set(f(lens.get(s)))(s);
|
|
67
|
-
Lens2.andThen = (inner) => (outer) => (0, Lens2.make)(
|
|
68
|
-
(s) => inner.get(outer.get(s)),
|
|
69
|
-
(b) => (s) => outer.set(inner.set(b)(outer.get(s)))(s)
|
|
70
|
-
);
|
|
71
|
-
Lens2.andThenOptional = (inner) => (outer) => ({
|
|
72
|
-
get: (s) => inner.get(outer.get(s)),
|
|
73
|
-
set: (b) => (s) => outer.set(inner.set(b)(outer.get(s)))(s)
|
|
74
|
-
});
|
|
75
|
-
Lens2.toOptional = (lens) => ({
|
|
76
|
-
get: (s) => ({ kind: "Some", value: lens.get(s) }),
|
|
77
|
-
set: lens.set
|
|
78
|
-
});
|
|
79
|
-
})(Lens || (Lens = {}));
|
|
80
|
-
|
|
81
|
-
// src/Core/Logged.ts
|
|
82
|
-
var Logged;
|
|
83
|
-
((Logged2) => {
|
|
84
|
-
Logged2.make = (value) => ({ value, log: [] });
|
|
85
|
-
Logged2.tell = (entry) => ({ value: void 0, log: [entry] });
|
|
86
|
-
Logged2.map = (f) => (data) => ({
|
|
87
|
-
value: f(data.value),
|
|
88
|
-
log: data.log
|
|
89
|
-
});
|
|
90
|
-
Logged2.chain = (f) => (data) => {
|
|
91
|
-
const next = f(data.value);
|
|
92
|
-
return { value: next.value, log: [...data.log, ...next.log] };
|
|
93
|
-
};
|
|
94
|
-
Logged2.ap = (arg) => (data) => ({
|
|
95
|
-
value: data.value(arg.value),
|
|
96
|
-
log: [...data.log, ...arg.log]
|
|
97
|
-
});
|
|
98
|
-
Logged2.tap = (f) => (data) => {
|
|
99
|
-
f(data.value);
|
|
100
|
-
return data;
|
|
101
|
-
};
|
|
102
|
-
Logged2.run = (data) => [data.value, data.log];
|
|
103
|
-
})(Logged || (Logged = {}));
|
|
104
|
-
|
|
105
50
|
// src/Core/Result.ts
|
|
106
51
|
var Result;
|
|
107
52
|
((Result2) => {
|
|
@@ -165,6 +110,137 @@ var Maybe;
|
|
|
165
110
|
Maybe2.ap = (arg) => (data) => (0, Maybe2.isSome)(data) && (0, Maybe2.isSome)(arg) ? (0, Maybe2.some)(data.value(arg.value)) : (0, Maybe2.none)();
|
|
166
111
|
})(Maybe || (Maybe = {}));
|
|
167
112
|
|
|
113
|
+
// src/Core/Combinable.ts
|
|
114
|
+
var Combinable;
|
|
115
|
+
((Combinable2) => {
|
|
116
|
+
Combinable2.string = {
|
|
117
|
+
empty: "",
|
|
118
|
+
combine: (b) => (a) => a + b
|
|
119
|
+
};
|
|
120
|
+
Combinable2.sum = {
|
|
121
|
+
empty: 0,
|
|
122
|
+
combine: (b) => (a) => a + b
|
|
123
|
+
};
|
|
124
|
+
Combinable2.product = {
|
|
125
|
+
empty: 1,
|
|
126
|
+
combine: (b) => (a) => a * b
|
|
127
|
+
};
|
|
128
|
+
Combinable2.all = {
|
|
129
|
+
empty: true,
|
|
130
|
+
combine: (b) => (a) => a && b
|
|
131
|
+
};
|
|
132
|
+
Combinable2.any = {
|
|
133
|
+
empty: false,
|
|
134
|
+
combine: (b) => (a) => a || b
|
|
135
|
+
};
|
|
136
|
+
Combinable2.array = () => ({
|
|
137
|
+
empty: [],
|
|
138
|
+
combine: (b) => (a) => [...a, ...b]
|
|
139
|
+
});
|
|
140
|
+
Combinable2.maybe = (inner) => ({
|
|
141
|
+
empty: Maybe.none(),
|
|
142
|
+
combine: (b) => (a) => Maybe.isNone(a) ? b : Maybe.isNone(b) ? a : Maybe.some(inner.combine(b.value)(a.value))
|
|
143
|
+
});
|
|
144
|
+
Combinable2.fold = (c) => (data) => data.reduce((acc, x) => c.combine(x)(acc), c.empty);
|
|
145
|
+
})(Combinable || (Combinable = {}));
|
|
146
|
+
|
|
147
|
+
// src/Core/Deferred.ts
|
|
148
|
+
var Deferred;
|
|
149
|
+
((Deferred2) => {
|
|
150
|
+
Deferred2.fromPromise = (p) => (
|
|
151
|
+
// eslint-disable-next-line unicorn/no-thenable -- Deferred is intentionally thenable; it is the mechanism that makes Task awaitable
|
|
152
|
+
{ then: ((f) => p.then(f)) }
|
|
153
|
+
);
|
|
154
|
+
Deferred2.toPromise = (d) => new Promise((resolve) => d.then(resolve));
|
|
155
|
+
})(Deferred || (Deferred = {}));
|
|
156
|
+
|
|
157
|
+
// src/Core/Equality.ts
|
|
158
|
+
var Equality;
|
|
159
|
+
((Equality2) => {
|
|
160
|
+
Equality2.string = (a, b) => a === b;
|
|
161
|
+
Equality2.number = (a, b) => a === b;
|
|
162
|
+
Equality2.boolean = (a, b) => a === b;
|
|
163
|
+
Equality2.date = (a, b) => a.getTime() === b.getTime();
|
|
164
|
+
Equality2.array = (eq) => (a, b) => a.length === b.length && a.every((x, i) => eq(x, b[i]));
|
|
165
|
+
Equality2.by = (f) => (eq) => (a, b) => eq(f(a), f(b));
|
|
166
|
+
Equality2.and = (eq2) => (eq1) => (a, b) => eq1(a, b) && eq2(a, b);
|
|
167
|
+
})(Equality || (Equality = {}));
|
|
168
|
+
|
|
169
|
+
// src/Core/Lazy.ts
|
|
170
|
+
var Lazy;
|
|
171
|
+
((Lazy2) => {
|
|
172
|
+
Lazy2.from = (f) => {
|
|
173
|
+
let done = false;
|
|
174
|
+
let cache;
|
|
175
|
+
return {
|
|
176
|
+
get: () => {
|
|
177
|
+
if (!done) {
|
|
178
|
+
cache = f();
|
|
179
|
+
done = true;
|
|
180
|
+
}
|
|
181
|
+
return cache;
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
};
|
|
185
|
+
Lazy2.evaluate = (lazy) => lazy.get();
|
|
186
|
+
Lazy2.map = (f) => (lazy) => Lazy2.from(() => f(lazy.get()));
|
|
187
|
+
Lazy2.chain = (f) => (lazy) => Lazy2.from(() => f(lazy.get()).get());
|
|
188
|
+
Lazy2.tap = (f) => (lazy) => Lazy2.from(() => {
|
|
189
|
+
const v = lazy.get();
|
|
190
|
+
f(v);
|
|
191
|
+
return v;
|
|
192
|
+
});
|
|
193
|
+
})(Lazy || (Lazy = {}));
|
|
194
|
+
|
|
195
|
+
// src/Core/Lens.ts
|
|
196
|
+
var Lens;
|
|
197
|
+
((Lens2) => {
|
|
198
|
+
Lens2.make = (get2, set2) => ({ get: get2, set: set2 });
|
|
199
|
+
Lens2.prop = () => (key) => (0, Lens2.make)(
|
|
200
|
+
(s) => s[key],
|
|
201
|
+
(a) => (s) => ({ ...s, [key]: a })
|
|
202
|
+
);
|
|
203
|
+
Lens2.get = (lens) => (s) => lens.get(s);
|
|
204
|
+
Lens2.set = (lens) => (a) => (s) => lens.set(a)(s);
|
|
205
|
+
Lens2.modify = (lens) => (f) => (s) => lens.set(f(lens.get(s)))(s);
|
|
206
|
+
Lens2.andThen = (inner) => (outer) => (0, Lens2.make)(
|
|
207
|
+
(s) => inner.get(outer.get(s)),
|
|
208
|
+
(b) => (s) => outer.set(inner.set(b)(outer.get(s)))(s)
|
|
209
|
+
);
|
|
210
|
+
Lens2.andThenOptional = (inner) => (outer) => ({
|
|
211
|
+
get: (s) => inner.get(outer.get(s)),
|
|
212
|
+
set: (b) => (s) => outer.set(inner.set(b)(outer.get(s)))(s)
|
|
213
|
+
});
|
|
214
|
+
Lens2.toOptional = (lens) => ({
|
|
215
|
+
get: (s) => ({ kind: "Some", value: lens.get(s) }),
|
|
216
|
+
set: lens.set
|
|
217
|
+
});
|
|
218
|
+
})(Lens || (Lens = {}));
|
|
219
|
+
|
|
220
|
+
// src/Core/Logged.ts
|
|
221
|
+
var Logged;
|
|
222
|
+
((Logged2) => {
|
|
223
|
+
Logged2.make = (value) => ({ value, log: [] });
|
|
224
|
+
Logged2.tell = (entry) => ({ value: void 0, log: [entry] });
|
|
225
|
+
Logged2.map = (f) => (data) => ({
|
|
226
|
+
value: f(data.value),
|
|
227
|
+
log: data.log
|
|
228
|
+
});
|
|
229
|
+
Logged2.chain = (f) => (data) => {
|
|
230
|
+
const next = f(data.value);
|
|
231
|
+
return { value: next.value, log: [...data.log, ...next.log] };
|
|
232
|
+
};
|
|
233
|
+
Logged2.ap = (arg) => (data) => ({
|
|
234
|
+
value: data.value(arg.value),
|
|
235
|
+
log: [...data.log, ...arg.log]
|
|
236
|
+
});
|
|
237
|
+
Logged2.tap = (f) => (data) => {
|
|
238
|
+
f(data.value);
|
|
239
|
+
return data;
|
|
240
|
+
};
|
|
241
|
+
Logged2.run = (data) => [data.value, data.log];
|
|
242
|
+
})(Logged || (Logged = {}));
|
|
243
|
+
|
|
168
244
|
// src/internal/Op.util.ts
|
|
169
245
|
var _abortedNil = { kind: "OpNil", reason: "aborted" };
|
|
170
246
|
var _droppedNil = { kind: "OpNil", reason: "dropped" };
|
|
@@ -1167,6 +1243,20 @@ var Optional;
|
|
|
1167
1243
|
);
|
|
1168
1244
|
})(Optional || (Optional = {}));
|
|
1169
1245
|
|
|
1246
|
+
// src/Core/Ordering.ts
|
|
1247
|
+
var Ordering;
|
|
1248
|
+
((Ordering2) => {
|
|
1249
|
+
Ordering2.string = (a, b) => a < b ? -1 : a > b ? 1 : 0;
|
|
1250
|
+
Ordering2.number = (a, b) => a - b;
|
|
1251
|
+
Ordering2.date = (a, b) => a.getTime() - b.getTime();
|
|
1252
|
+
Ordering2.reverse = (ord) => (a, b) => ord(b, a);
|
|
1253
|
+
Ordering2.thenBy = (ord2) => (ord1) => (a, b) => {
|
|
1254
|
+
const r = ord1(a, b);
|
|
1255
|
+
return r !== 0 ? r : ord2(a, b);
|
|
1256
|
+
};
|
|
1257
|
+
Ordering2.by = (f) => (ord) => (a, b) => ord(f(a), f(b));
|
|
1258
|
+
})(Ordering || (Ordering = {}));
|
|
1259
|
+
|
|
1170
1260
|
// src/Core/Predicate.ts
|
|
1171
1261
|
var Predicate;
|
|
1172
1262
|
((Predicate2) => {
|
|
@@ -1305,58 +1395,135 @@ var Task;
|
|
|
1305
1395
|
(signal) => Promise.all(tasks.map((t) => toPromise(t, signal)))
|
|
1306
1396
|
);
|
|
1307
1397
|
Task2.delay = (ms) => (data) => (0, Task2.from)(
|
|
1308
|
-
(signal) => new Promise(
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1398
|
+
(signal) => new Promise((resolve2) => {
|
|
1399
|
+
let timerId = void 0;
|
|
1400
|
+
const onAbort = () => {
|
|
1401
|
+
if (timerId !== void 0) {
|
|
1402
|
+
clearTimeout(timerId);
|
|
1403
|
+
}
|
|
1404
|
+
resolve2(toPromise(data, signal));
|
|
1405
|
+
};
|
|
1406
|
+
if (signal) {
|
|
1407
|
+
if (signal.aborted) {
|
|
1408
|
+
return resolve2(toPromise(data, signal));
|
|
1409
|
+
}
|
|
1410
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
1411
|
+
}
|
|
1412
|
+
timerId = setTimeout(() => {
|
|
1413
|
+
signal?.removeEventListener("abort", onAbort);
|
|
1414
|
+
resolve2(toPromise(data, signal));
|
|
1415
|
+
}, ms);
|
|
1416
|
+
})
|
|
1314
1417
|
);
|
|
1315
1418
|
Task2.repeat = (options) => (task) => (0, Task2.from)((signal) => {
|
|
1316
1419
|
const { times, delay: ms } = options;
|
|
1317
1420
|
if (times <= 0) return Promise.resolve([]);
|
|
1318
1421
|
const results = [];
|
|
1319
|
-
const wait = () =>
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1422
|
+
const wait = () => {
|
|
1423
|
+
if (signal?.aborted) return Promise.resolve();
|
|
1424
|
+
return new Promise((r) => {
|
|
1425
|
+
let timerId = void 0;
|
|
1426
|
+
const onAbort = () => {
|
|
1427
|
+
if (timerId !== void 0) {
|
|
1428
|
+
clearTimeout(timerId);
|
|
1429
|
+
}
|
|
1430
|
+
r();
|
|
1431
|
+
};
|
|
1432
|
+
if (signal) {
|
|
1433
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
1434
|
+
}
|
|
1435
|
+
timerId = setTimeout(() => {
|
|
1436
|
+
signal?.removeEventListener("abort", onAbort);
|
|
1437
|
+
r();
|
|
1438
|
+
}, ms || 0);
|
|
1439
|
+
});
|
|
1440
|
+
};
|
|
1441
|
+
const run2 = (left) => {
|
|
1442
|
+
if (signal?.aborted) {
|
|
1443
|
+
return Promise.resolve(results);
|
|
1444
|
+
}
|
|
1445
|
+
return toPromise(task, signal).then((a) => {
|
|
1446
|
+
results.push(a);
|
|
1447
|
+
if (left <= 1 || signal?.aborted) return results;
|
|
1448
|
+
return wait().then(() => run2(left - 1));
|
|
1449
|
+
});
|
|
1450
|
+
};
|
|
1325
1451
|
return run2(times);
|
|
1326
1452
|
});
|
|
1327
1453
|
Task2.repeatUntil = (options) => (task) => (0, Task2.from)((signal) => {
|
|
1328
1454
|
const { when: predicate, delay: ms, maxAttempts } = options;
|
|
1329
|
-
const wait = () =>
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1455
|
+
const wait = () => {
|
|
1456
|
+
if (signal?.aborted) return Promise.resolve();
|
|
1457
|
+
return new Promise((r) => {
|
|
1458
|
+
let timerId = void 0;
|
|
1459
|
+
const onAbort = () => {
|
|
1460
|
+
if (timerId !== void 0) {
|
|
1461
|
+
clearTimeout(timerId);
|
|
1462
|
+
}
|
|
1463
|
+
r();
|
|
1464
|
+
};
|
|
1465
|
+
if (signal) {
|
|
1466
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
1467
|
+
}
|
|
1468
|
+
timerId = setTimeout(() => {
|
|
1469
|
+
signal?.removeEventListener("abort", onAbort);
|
|
1470
|
+
r();
|
|
1471
|
+
}, ms || 0);
|
|
1472
|
+
});
|
|
1473
|
+
};
|
|
1474
|
+
const run2 = (attempt, lastValue) => {
|
|
1475
|
+
if (signal?.aborted && lastValue !== void 0) {
|
|
1476
|
+
return Promise.resolve(lastValue);
|
|
1477
|
+
}
|
|
1478
|
+
return toPromise(task, signal).then((a) => {
|
|
1479
|
+
if (predicate(a)) return a;
|
|
1480
|
+
if (maxAttempts !== void 0 && attempt >= maxAttempts) return a;
|
|
1481
|
+
if (signal?.aborted) return a;
|
|
1482
|
+
return wait().then(() => run2(attempt + 1, a));
|
|
1483
|
+
});
|
|
1484
|
+
};
|
|
1335
1485
|
return run2(1);
|
|
1336
1486
|
});
|
|
1337
1487
|
Task2.race = (tasks) => (0, Task2.from)((signal) => Promise.race(tasks.map((t) => toPromise(t, signal))));
|
|
1338
1488
|
Task2.sequential = (tasks) => (0, Task2.from)(async (signal) => {
|
|
1339
1489
|
const results = [];
|
|
1340
1490
|
for (const task of tasks) {
|
|
1491
|
+
if (signal?.aborted) {
|
|
1492
|
+
break;
|
|
1493
|
+
}
|
|
1341
1494
|
results.push(await toPromise(task, signal));
|
|
1342
1495
|
}
|
|
1343
1496
|
return results;
|
|
1344
1497
|
});
|
|
1345
1498
|
Task2.timeout = (ms, onTimeout) => (task) => (0, Task2.from)((outerSignal) => {
|
|
1346
1499
|
const controller = new AbortController();
|
|
1347
|
-
const onOuterAbort = () => controller.abort();
|
|
1348
|
-
outerSignal?.addEventListener("abort", onOuterAbort, { once: true });
|
|
1349
1500
|
let timerId;
|
|
1501
|
+
const cleanUp = () => {
|
|
1502
|
+
if (timerId !== void 0) {
|
|
1503
|
+
clearTimeout(timerId);
|
|
1504
|
+
}
|
|
1505
|
+
outerSignal?.removeEventListener("abort", onOuterAbort);
|
|
1506
|
+
};
|
|
1507
|
+
const onOuterAbort = () => {
|
|
1508
|
+
cleanUp();
|
|
1509
|
+
controller.abort();
|
|
1510
|
+
};
|
|
1511
|
+
if (outerSignal) {
|
|
1512
|
+
if (outerSignal.aborted) {
|
|
1513
|
+
controller.abort();
|
|
1514
|
+
} else {
|
|
1515
|
+
outerSignal.addEventListener("abort", onOuterAbort, { once: true });
|
|
1516
|
+
}
|
|
1517
|
+
}
|
|
1350
1518
|
return Promise.race([
|
|
1351
1519
|
toPromise(task, controller.signal).then((a) => {
|
|
1352
|
-
|
|
1353
|
-
outerSignal?.removeEventListener("abort", onOuterAbort);
|
|
1520
|
+
cleanUp();
|
|
1354
1521
|
return Result.ok(a);
|
|
1355
1522
|
}),
|
|
1356
1523
|
new Promise((resolve2) => {
|
|
1357
1524
|
timerId = setTimeout(() => {
|
|
1358
1525
|
controller.abort();
|
|
1359
|
-
|
|
1526
|
+
cleanUp();
|
|
1360
1527
|
resolve2(Result.error(onTimeout()));
|
|
1361
1528
|
}, ms);
|
|
1362
1529
|
})
|
|
@@ -1392,28 +1559,33 @@ var Resource;
|
|
|
1392
1559
|
release
|
|
1393
1560
|
});
|
|
1394
1561
|
Resource2.use = (f) => (resource) => Task.from(
|
|
1395
|
-
() => Deferred.toPromise(resource.acquire()).then(async (acquired) => {
|
|
1562
|
+
(signal) => Deferred.toPromise(resource.acquire(signal)).then(async (acquired) => {
|
|
1396
1563
|
if (Result.isError(acquired)) return acquired;
|
|
1397
1564
|
const a = acquired.value;
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1565
|
+
try {
|
|
1566
|
+
const usageResult = await Deferred.toPromise(f(a)(signal));
|
|
1567
|
+
return usageResult;
|
|
1568
|
+
} finally {
|
|
1569
|
+
await Deferred.toPromise(resource.release(a)(signal));
|
|
1570
|
+
}
|
|
1401
1571
|
})
|
|
1402
1572
|
);
|
|
1403
1573
|
Resource2.combine = (resourceA, resourceB) => ({
|
|
1404
1574
|
acquire: Task.from(
|
|
1405
|
-
() => Deferred.toPromise(resourceA.acquire()).then(async (acquiredA) => {
|
|
1575
|
+
(signal) => Deferred.toPromise(resourceA.acquire(signal)).then(async (acquiredA) => {
|
|
1406
1576
|
if (Result.isError(acquiredA)) return acquiredA;
|
|
1407
1577
|
const a = acquiredA.value;
|
|
1408
|
-
const acquiredB = await Deferred.toPromise(resourceB.acquire());
|
|
1578
|
+
const acquiredB = await Deferred.toPromise(resourceB.acquire(signal));
|
|
1409
1579
|
if (Result.isError(acquiredB)) {
|
|
1410
|
-
await Deferred.toPromise(resourceA.release(a)());
|
|
1580
|
+
await Deferred.toPromise(resourceA.release(a)(signal));
|
|
1411
1581
|
return acquiredB;
|
|
1412
1582
|
}
|
|
1413
1583
|
return Result.ok([a, acquiredB.value]);
|
|
1414
1584
|
})
|
|
1415
1585
|
),
|
|
1416
|
-
release: ([a, b]) => Task.from(
|
|
1586
|
+
release: ([a, b]) => Task.from(
|
|
1587
|
+
(signal) => Deferred.toPromise(resourceB.release(b)(signal)).then(() => Deferred.toPromise(resourceA.release(a)(signal)))
|
|
1588
|
+
)
|
|
1417
1589
|
});
|
|
1418
1590
|
})(Resource || (Resource = {}));
|
|
1419
1591
|
|
|
@@ -1456,14 +1628,14 @@ var TaskMaybe;
|
|
|
1456
1628
|
TaskMaybe2.fromMaybe = (option) => Task.resolve(option);
|
|
1457
1629
|
TaskMaybe2.fromTask = (task) => Task.map(Maybe.some)(task);
|
|
1458
1630
|
TaskMaybe2.tryCatch = (f) => Task.from(
|
|
1459
|
-
() => f().then(Maybe.some).catch(() => Maybe.none())
|
|
1631
|
+
(signal) => f(signal).then(Maybe.some).catch(() => Maybe.none())
|
|
1460
1632
|
);
|
|
1461
1633
|
TaskMaybe2.map = (f) => (data) => Task.map(Maybe.map(f))(data);
|
|
1462
1634
|
TaskMaybe2.chain = (f) => (data) => Task.chain((option) => Maybe.isSome(option) ? f(option.value) : Task.resolve(Maybe.none()))(data);
|
|
1463
1635
|
TaskMaybe2.ap = (arg) => (data) => Task.from(
|
|
1464
|
-
() => Promise.all([
|
|
1465
|
-
Deferred.toPromise(data()),
|
|
1466
|
-
Deferred.toPromise(arg())
|
|
1636
|
+
(signal) => Promise.all([
|
|
1637
|
+
Deferred.toPromise(data(signal)),
|
|
1638
|
+
Deferred.toPromise(arg(signal))
|
|
1467
1639
|
]).then(([of_, oa]) => Maybe.ap(oa)(of_))
|
|
1468
1640
|
);
|
|
1469
1641
|
TaskMaybe2.fold = (onNone, onSome) => (data) => Task.map(Maybe.fold(onNone, onSome))(data);
|
|
@@ -1497,6 +1669,12 @@ var TaskResult;
|
|
|
1497
1669
|
TaskResult2.getOrElse = (defaultValue) => (data) => Task.map(Result.getOrElse(defaultValue))(data);
|
|
1498
1670
|
TaskResult2.tap = (f) => (data) => Task.map(Result.tap(f))(data);
|
|
1499
1671
|
TaskResult2.tapError = (f) => (data) => Task.map(Result.tapError(f))(data);
|
|
1672
|
+
TaskResult2.ap = (arg) => (data) => Task.from(
|
|
1673
|
+
(signal) => Promise.all([
|
|
1674
|
+
Deferred.toPromise(data(signal)),
|
|
1675
|
+
Deferred.toPromise(arg(signal))
|
|
1676
|
+
]).then(([of_, oa]) => Result.ap(oa)(of_))
|
|
1677
|
+
);
|
|
1500
1678
|
TaskResult2.run = (signal) => (task) => Deferred.toPromise(task(signal));
|
|
1501
1679
|
})(TaskResult || (TaskResult = {}));
|
|
1502
1680
|
|
|
@@ -1570,13 +1748,13 @@ var TaskValidation;
|
|
|
1570
1748
|
TaskValidation2.invalidAll = (errors) => Task.resolve(Validation.invalidAll(errors));
|
|
1571
1749
|
TaskValidation2.fromValidation = (validation) => Task.resolve(validation);
|
|
1572
1750
|
TaskValidation2.tryCatch = (f, onError) => Task.from(
|
|
1573
|
-
() => f().then(Validation.valid).catch((e) => Validation.invalid(onError(e)))
|
|
1751
|
+
(signal) => f(signal).then(Validation.valid).catch((e) => Validation.invalid(onError(e)))
|
|
1574
1752
|
);
|
|
1575
1753
|
TaskValidation2.map = (f) => (data) => Task.map(Validation.map(f))(data);
|
|
1576
1754
|
TaskValidation2.ap = (arg) => (data) => Task.from(
|
|
1577
|
-
() => Promise.all([
|
|
1578
|
-
Deferred.toPromise(data()),
|
|
1579
|
-
Deferred.toPromise(arg())
|
|
1755
|
+
(signal) => Promise.all([
|
|
1756
|
+
Deferred.toPromise(data(signal)),
|
|
1757
|
+
Deferred.toPromise(arg(signal))
|
|
1580
1758
|
]).then(([vf, va]) => Validation.ap(va)(vf))
|
|
1581
1759
|
);
|
|
1582
1760
|
TaskValidation2.fold = (onInvalid, onValid) => (data) => Task.map(Validation.fold(onInvalid, onValid))(data);
|
|
@@ -1587,13 +1765,13 @@ var TaskValidation;
|
|
|
1587
1765
|
(validation) => Validation.isValid(validation) ? Task.resolve(validation) : fallback(validation.errors)
|
|
1588
1766
|
)(data);
|
|
1589
1767
|
TaskValidation2.product = (first, second) => Task.from(
|
|
1590
|
-
() => Promise.all([
|
|
1591
|
-
Deferred.toPromise(first()),
|
|
1592
|
-
Deferred.toPromise(second())
|
|
1768
|
+
(signal) => Promise.all([
|
|
1769
|
+
Deferred.toPromise(first(signal)),
|
|
1770
|
+
Deferred.toPromise(second(signal))
|
|
1593
1771
|
]).then(([va, vb]) => Validation.product(va, vb))
|
|
1594
1772
|
);
|
|
1595
1773
|
TaskValidation2.productAll = (data) => Task.from(
|
|
1596
|
-
() => Promise.all(data.map((t) => Deferred.toPromise(t()))).then((results) => Validation.productAll(results))
|
|
1774
|
+
(signal) => Promise.all(data.map((t) => Deferred.toPromise(t(signal)))).then((results) => Validation.productAll(results))
|
|
1597
1775
|
);
|
|
1598
1776
|
})(TaskValidation || (TaskValidation = {}));
|
|
1599
1777
|
|
|
@@ -1680,12 +1858,16 @@ var Tuple;
|
|
|
1680
1858
|
})(Tuple || (Tuple = {}));
|
|
1681
1859
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1682
1860
|
0 && (module.exports = {
|
|
1861
|
+
Combinable,
|
|
1683
1862
|
Deferred,
|
|
1863
|
+
Equality,
|
|
1864
|
+
Lazy,
|
|
1684
1865
|
Lens,
|
|
1685
1866
|
Logged,
|
|
1686
1867
|
Maybe,
|
|
1687
1868
|
Op,
|
|
1688
1869
|
Optional,
|
|
1870
|
+
Ordering,
|
|
1689
1871
|
Predicate,
|
|
1690
1872
|
Reader,
|
|
1691
1873
|
Refinement,
|
package/dist/core.mjs
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
|
+
Combinable,
|
|
3
|
+
Equality,
|
|
4
|
+
Lazy,
|
|
2
5
|
Lens,
|
|
3
6
|
Logged,
|
|
4
7
|
Op,
|
|
5
8
|
Optional,
|
|
9
|
+
Ordering,
|
|
6
10
|
Predicate,
|
|
7
11
|
Reader,
|
|
8
12
|
Refinement,
|
|
@@ -15,20 +19,24 @@ import {
|
|
|
15
19
|
These,
|
|
16
20
|
Tuple,
|
|
17
21
|
Validation
|
|
18
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-L3NC44SN.mjs";
|
|
19
23
|
import {
|
|
20
24
|
Deferred,
|
|
21
25
|
Maybe,
|
|
22
26
|
Result,
|
|
23
27
|
Task
|
|
24
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-TK5ZCGP2.mjs";
|
|
25
29
|
export {
|
|
30
|
+
Combinable,
|
|
26
31
|
Deferred,
|
|
32
|
+
Equality,
|
|
33
|
+
Lazy,
|
|
27
34
|
Lens,
|
|
28
35
|
Logged,
|
|
29
36
|
Maybe,
|
|
30
37
|
Op,
|
|
31
38
|
Optional,
|
|
39
|
+
Ordering,
|
|
32
40
|
Predicate,
|
|
33
41
|
Reader,
|
|
34
42
|
Refinement,
|
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { and, compose, constFalse, constNull, constTrue, constUndefined, constVoid, constant, converge, curry, curry3, curry4, flip, flow, identity, juxt, memoize, memoizeWeak, not, on, once, or, pipe, tap, uncurry, uncurry3, uncurry4 } from './composition.mjs';
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
2
|
+
export { Combinable, Failure, Invalid, Lazy, Lens, Loading, Logged, NotAsked, Op, Optional, Predicate, Reader, Refinement, RemoteData, Resource, State, Success, TaskMaybe, TaskResult, TaskValidation, These, TheseBoth, TheseFirst, TheseSecond, Tuple, Valid, Validation } from './core.mjs';
|
|
3
|
+
export { D as Deferred, E as Equality, a as Error, M as Maybe, N as None, O as Ok, b as Ordering, R as Result, S as Some, T as Task } from './Task-CJZfcOkO.mjs';
|
|
4
4
|
export { Brand } from './types.mjs';
|
|
5
5
|
export { N as NonEmptyList, i as isNonEmptyList } from './NonEmptyList-BlGFjor5.mjs';
|
|
6
6
|
export { Arr, Dict, Num, Rec, Str, Uniq } from './utils.mjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { and, compose, constFalse, constNull, constTrue, constUndefined, constVoid, constant, converge, curry, curry3, curry4, flip, flow, identity, juxt, memoize, memoizeWeak, not, on, once, or, pipe, tap, uncurry, uncurry3, uncurry4 } from './composition.js';
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
2
|
+
export { Combinable, Failure, Invalid, Lazy, Lens, Loading, Logged, NotAsked, Op, Optional, Predicate, Reader, Refinement, RemoteData, Resource, State, Success, TaskMaybe, TaskResult, TaskValidation, These, TheseBoth, TheseFirst, TheseSecond, Tuple, Valid, Validation } from './core.js';
|
|
3
|
+
export { D as Deferred, E as Equality, a as Error, M as Maybe, N as None, O as Ok, b as Ordering, R as Result, S as Some, T as Task } from './Task-CjYKLeTY.js';
|
|
4
4
|
export { Brand } from './types.js';
|
|
5
5
|
export { N as NonEmptyList, i as isNonEmptyList } from './NonEmptyList-BlGFjor5.js';
|
|
6
6
|
export { Arr, Dict, Num, Rec, Str, Uniq } from './utils.js';
|