@nlozgachev/pipelined 0.31.0 → 0.33.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-CnF22Q2o.d.ts → Task-5na0QzS4.d.mts} +281 -66
- package/dist/{Task-BDcKwFAj.d.mts → Task-DeiWgoeJ.d.ts} +281 -66
- package/dist/{chunk-VIC54JR4.mjs → chunk-FZX4MTRI.mjs} +135 -21
- package/dist/{chunk-SDGDJ7CU.mjs → chunk-GSTKY7MF.mjs} +158 -35
- package/dist/chunk-IPP4XFYH.mjs +0 -0
- package/dist/chunk-VWVPHDZO.mjs +29 -0
- package/dist/{chunk-FWYOEWJ2.mjs → chunk-W53ZYTLX.mjs} +98 -4
- package/dist/core.d.mts +249 -9
- package/dist/core.d.ts +249 -9
- package/dist/core.js +366 -104
- package/dist/core.mjs +11 -2
- package/dist/index.d.mts +3 -4
- package/dist/index.d.ts +3 -4
- package/dist/index.js +465 -114
- package/dist/index.mjs +17 -6
- package/dist/types.d.mts +104 -2
- package/dist/types.d.ts +104 -2
- package/dist/types.js +20 -0
- package/dist/types.mjs +6 -3
- package/dist/utils.d.mts +124 -2
- package/dist/utils.d.ts +124 -2
- package/dist/utils.js +266 -28
- package/dist/utils.mjs +3 -2
- package/package.json +1 -1
- package/dist/NonEmptyList-BlGFjor5.d.mts +0 -30
- package/dist/NonEmptyList-BlGFjor5.d.ts +0 -30
- package/dist/chunk-BYWKZLHM.mjs +0 -10
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) => {
|
|
@@ -131,6 +76,15 @@ var Result;
|
|
|
131
76
|
return data;
|
|
132
77
|
};
|
|
133
78
|
Result2.fromPredicate = (pred, onFalse) => (a) => pred(a) ? (0, Result2.ok)(a) : (0, Result2.error)(onFalse(a));
|
|
79
|
+
Result2.fromNullable = (onNull) => (value) => value === null || value === void 0 ? (0, Result2.error)(onNull()) : (0, Result2.ok)(value);
|
|
80
|
+
Result2.fromMaybe = (onNone) => (maybe) => Maybe.isNone(maybe) ? (0, Result2.error)(onNone()) : (0, Result2.ok)(maybe.value);
|
|
81
|
+
Result2.fromThrowable = (f, onError) => (...args) => {
|
|
82
|
+
try {
|
|
83
|
+
return (0, Result2.ok)(f(...args));
|
|
84
|
+
} catch (e) {
|
|
85
|
+
return (0, Result2.error)(onError(e));
|
|
86
|
+
}
|
|
87
|
+
};
|
|
134
88
|
Result2.recover = (fallback) => (data) => (0, Result2.isOk)(data) ? data : fallback(data.error);
|
|
135
89
|
Result2.recoverUnless = (isBlocked, fallback) => (data) => (0, Result2.isError)(data) && !isBlocked(data.error) ? fallback() : data;
|
|
136
90
|
Result2.toMaybe = (data) => (0, Result2.isOk)(data) ? Maybe.some(data.value) : Maybe.none();
|
|
@@ -165,6 +119,137 @@ var Maybe;
|
|
|
165
119
|
Maybe2.ap = (arg) => (data) => (0, Maybe2.isSome)(data) && (0, Maybe2.isSome)(arg) ? (0, Maybe2.some)(data.value(arg.value)) : (0, Maybe2.none)();
|
|
166
120
|
})(Maybe || (Maybe = {}));
|
|
167
121
|
|
|
122
|
+
// src/Core/Combinable.ts
|
|
123
|
+
var Combinable;
|
|
124
|
+
((Combinable2) => {
|
|
125
|
+
Combinable2.string = {
|
|
126
|
+
empty: "",
|
|
127
|
+
combine: (b) => (a) => a + b
|
|
128
|
+
};
|
|
129
|
+
Combinable2.sum = {
|
|
130
|
+
empty: 0,
|
|
131
|
+
combine: (b) => (a) => a + b
|
|
132
|
+
};
|
|
133
|
+
Combinable2.product = {
|
|
134
|
+
empty: 1,
|
|
135
|
+
combine: (b) => (a) => a * b
|
|
136
|
+
};
|
|
137
|
+
Combinable2.all = {
|
|
138
|
+
empty: true,
|
|
139
|
+
combine: (b) => (a) => a && b
|
|
140
|
+
};
|
|
141
|
+
Combinable2.any = {
|
|
142
|
+
empty: false,
|
|
143
|
+
combine: (b) => (a) => a || b
|
|
144
|
+
};
|
|
145
|
+
Combinable2.array = () => ({
|
|
146
|
+
empty: [],
|
|
147
|
+
combine: (b) => (a) => [...a, ...b]
|
|
148
|
+
});
|
|
149
|
+
Combinable2.maybe = (inner) => ({
|
|
150
|
+
empty: Maybe.none(),
|
|
151
|
+
combine: (b) => (a) => Maybe.isNone(a) ? b : Maybe.isNone(b) ? a : Maybe.some(inner.combine(b.value)(a.value))
|
|
152
|
+
});
|
|
153
|
+
Combinable2.fold = (c) => (data) => data.reduce((acc, x) => c.combine(x)(acc), c.empty);
|
|
154
|
+
})(Combinable || (Combinable = {}));
|
|
155
|
+
|
|
156
|
+
// src/Core/Deferred.ts
|
|
157
|
+
var Deferred;
|
|
158
|
+
((Deferred2) => {
|
|
159
|
+
Deferred2.fromPromise = (p) => (
|
|
160
|
+
// eslint-disable-next-line unicorn/no-thenable -- Deferred is intentionally thenable; it is the mechanism that makes Task awaitable
|
|
161
|
+
{ then: ((f) => p.then(f)) }
|
|
162
|
+
);
|
|
163
|
+
Deferred2.toPromise = (d) => new Promise((resolve) => d.then(resolve));
|
|
164
|
+
})(Deferred || (Deferred = {}));
|
|
165
|
+
|
|
166
|
+
// src/Core/Equality.ts
|
|
167
|
+
var Equality;
|
|
168
|
+
((Equality2) => {
|
|
169
|
+
Equality2.string = (a, b) => a === b;
|
|
170
|
+
Equality2.number = (a, b) => a === b;
|
|
171
|
+
Equality2.boolean = (a, b) => a === b;
|
|
172
|
+
Equality2.date = (a, b) => a.getTime() === b.getTime();
|
|
173
|
+
Equality2.array = (eq) => (a, b) => a.length === b.length && a.every((x, i) => eq(x, b[i]));
|
|
174
|
+
Equality2.by = (f) => (eq) => (a, b) => eq(f(a), f(b));
|
|
175
|
+
Equality2.and = (eq2) => (eq1) => (a, b) => eq1(a, b) && eq2(a, b);
|
|
176
|
+
})(Equality || (Equality = {}));
|
|
177
|
+
|
|
178
|
+
// src/Core/Lazy.ts
|
|
179
|
+
var Lazy;
|
|
180
|
+
((Lazy2) => {
|
|
181
|
+
Lazy2.from = (f) => {
|
|
182
|
+
let done = false;
|
|
183
|
+
let cache;
|
|
184
|
+
return {
|
|
185
|
+
get: () => {
|
|
186
|
+
if (!done) {
|
|
187
|
+
cache = f();
|
|
188
|
+
done = true;
|
|
189
|
+
}
|
|
190
|
+
return cache;
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
};
|
|
194
|
+
Lazy2.evaluate = (lazy) => lazy.get();
|
|
195
|
+
Lazy2.map = (f) => (lazy) => Lazy2.from(() => f(lazy.get()));
|
|
196
|
+
Lazy2.chain = (f) => (lazy) => Lazy2.from(() => f(lazy.get()).get());
|
|
197
|
+
Lazy2.tap = (f) => (lazy) => Lazy2.from(() => {
|
|
198
|
+
const v = lazy.get();
|
|
199
|
+
f(v);
|
|
200
|
+
return v;
|
|
201
|
+
});
|
|
202
|
+
})(Lazy || (Lazy = {}));
|
|
203
|
+
|
|
204
|
+
// src/Core/Lens.ts
|
|
205
|
+
var Lens;
|
|
206
|
+
((Lens2) => {
|
|
207
|
+
Lens2.make = (get2, set2) => ({ get: get2, set: set2 });
|
|
208
|
+
Lens2.prop = () => (key) => (0, Lens2.make)(
|
|
209
|
+
(s) => s[key],
|
|
210
|
+
(a) => (s) => ({ ...s, [key]: a })
|
|
211
|
+
);
|
|
212
|
+
Lens2.get = (lens) => (s) => lens.get(s);
|
|
213
|
+
Lens2.set = (lens) => (a) => (s) => lens.set(a)(s);
|
|
214
|
+
Lens2.modify = (lens) => (f) => (s) => lens.set(f(lens.get(s)))(s);
|
|
215
|
+
Lens2.andThen = (inner) => (outer) => (0, Lens2.make)(
|
|
216
|
+
(s) => inner.get(outer.get(s)),
|
|
217
|
+
(b) => (s) => outer.set(inner.set(b)(outer.get(s)))(s)
|
|
218
|
+
);
|
|
219
|
+
Lens2.andThenOptional = (inner) => (outer) => ({
|
|
220
|
+
get: (s) => inner.get(outer.get(s)),
|
|
221
|
+
set: (b) => (s) => outer.set(inner.set(b)(outer.get(s)))(s)
|
|
222
|
+
});
|
|
223
|
+
Lens2.toOptional = (lens) => ({
|
|
224
|
+
get: (s) => ({ kind: "Some", value: lens.get(s) }),
|
|
225
|
+
set: lens.set
|
|
226
|
+
});
|
|
227
|
+
})(Lens || (Lens = {}));
|
|
228
|
+
|
|
229
|
+
// src/Core/Logged.ts
|
|
230
|
+
var Logged;
|
|
231
|
+
((Logged2) => {
|
|
232
|
+
Logged2.make = (value) => ({ value, log: [] });
|
|
233
|
+
Logged2.tell = (entry) => ({ value: void 0, log: [entry] });
|
|
234
|
+
Logged2.map = (f) => (data) => ({
|
|
235
|
+
value: f(data.value),
|
|
236
|
+
log: data.log
|
|
237
|
+
});
|
|
238
|
+
Logged2.chain = (f) => (data) => {
|
|
239
|
+
const next = f(data.value);
|
|
240
|
+
return { value: next.value, log: [...data.log, ...next.log] };
|
|
241
|
+
};
|
|
242
|
+
Logged2.ap = (arg) => (data) => ({
|
|
243
|
+
value: data.value(arg.value),
|
|
244
|
+
log: [...data.log, ...arg.log]
|
|
245
|
+
});
|
|
246
|
+
Logged2.tap = (f) => (data) => {
|
|
247
|
+
f(data.value);
|
|
248
|
+
return data;
|
|
249
|
+
};
|
|
250
|
+
Logged2.run = (data) => [data.value, data.log];
|
|
251
|
+
})(Logged || (Logged = {}));
|
|
252
|
+
|
|
168
253
|
// src/internal/Op.util.ts
|
|
169
254
|
var _abortedNil = { kind: "OpNil", reason: "aborted" };
|
|
170
255
|
var _droppedNil = { kind: "OpNil", reason: "dropped" };
|
|
@@ -1167,6 +1252,20 @@ var Optional;
|
|
|
1167
1252
|
);
|
|
1168
1253
|
})(Optional || (Optional = {}));
|
|
1169
1254
|
|
|
1255
|
+
// src/Core/Ordering.ts
|
|
1256
|
+
var Ordering;
|
|
1257
|
+
((Ordering2) => {
|
|
1258
|
+
Ordering2.string = (a, b) => a < b ? -1 : a > b ? 1 : 0;
|
|
1259
|
+
Ordering2.number = (a, b) => a - b;
|
|
1260
|
+
Ordering2.date = (a, b) => a.getTime() - b.getTime();
|
|
1261
|
+
Ordering2.reverse = (ord) => (a, b) => ord(b, a);
|
|
1262
|
+
Ordering2.thenBy = (ord2) => (ord1) => (a, b) => {
|
|
1263
|
+
const r = ord1(a, b);
|
|
1264
|
+
return r !== 0 ? r : ord2(a, b);
|
|
1265
|
+
};
|
|
1266
|
+
Ordering2.by = (f) => (ord) => (a, b) => ord(f(a), f(b));
|
|
1267
|
+
})(Ordering || (Ordering = {}));
|
|
1268
|
+
|
|
1170
1269
|
// src/Core/Predicate.ts
|
|
1171
1270
|
var Predicate;
|
|
1172
1271
|
((Predicate2) => {
|
|
@@ -1280,8 +1379,34 @@ var RemoteData;
|
|
|
1280
1379
|
RemoteData2.filter = (pred, onFalse) => (data) => (0, RemoteData2.isSuccess)(data) ? pred(data.value) ? data : (0, RemoteData2.failure)(onFalse(data.value)) : data;
|
|
1281
1380
|
})(RemoteData || (RemoteData = {}));
|
|
1282
1381
|
|
|
1382
|
+
// src/Types/Brand.ts
|
|
1383
|
+
var Brand;
|
|
1384
|
+
((Brand2) => {
|
|
1385
|
+
Brand2.wrap = () => (value) => value;
|
|
1386
|
+
Brand2.unwrap = (branded) => branded;
|
|
1387
|
+
})(Brand || (Brand = {}));
|
|
1388
|
+
|
|
1389
|
+
// src/Types/Duration.ts
|
|
1390
|
+
var Duration;
|
|
1391
|
+
((Duration2) => {
|
|
1392
|
+
const wrap = Brand.wrap();
|
|
1393
|
+
Duration2.milliseconds = (ms) => wrap(ms);
|
|
1394
|
+
Duration2.seconds = (s) => wrap(s * 1e3);
|
|
1395
|
+
Duration2.minutes = (m) => wrap(m * 60 * 1e3);
|
|
1396
|
+
Duration2.hours = (h) => wrap(h * 60 * 60 * 1e3);
|
|
1397
|
+
Duration2.days = (d) => wrap(d * 24 * 60 * 60 * 1e3);
|
|
1398
|
+
Duration2.toMilliseconds = (d) => Brand.unwrap(d);
|
|
1399
|
+
Duration2.toSeconds = (d) => Brand.unwrap(d) / 1e3;
|
|
1400
|
+
Duration2.toMinutes = (d) => Brand.unwrap(d) / (60 * 1e3);
|
|
1401
|
+
Duration2.toHours = (d) => Brand.unwrap(d) / (60 * 60 * 1e3);
|
|
1402
|
+
Duration2.toDays = (d) => Brand.unwrap(d) / (24 * 60 * 60 * 1e3);
|
|
1403
|
+
Duration2.add = (other) => (self) => wrap(Brand.unwrap(self) + Brand.unwrap(other));
|
|
1404
|
+
Duration2.subtract = (other) => (self) => wrap(Brand.unwrap(self) - Brand.unwrap(other));
|
|
1405
|
+
})(Duration || (Duration = {}));
|
|
1406
|
+
|
|
1283
1407
|
// src/Core/Task.ts
|
|
1284
1408
|
var toPromise = (task, signal) => Deferred.toPromise(task(signal));
|
|
1409
|
+
var getMs = (ms) => typeof ms === "number" ? ms : Duration.toMilliseconds(ms);
|
|
1285
1410
|
var Task;
|
|
1286
1411
|
((Task2) => {
|
|
1287
1412
|
Task2.resolve = (value) => () => Deferred.fromPromise(Promise.resolve(value));
|
|
@@ -1305,60 +1430,169 @@ var Task;
|
|
|
1305
1430
|
(signal) => Promise.all(tasks.map((t) => toPromise(t, signal)))
|
|
1306
1431
|
);
|
|
1307
1432
|
Task2.delay = (ms) => (data) => (0, Task2.from)(
|
|
1308
|
-
(signal) => new Promise(
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1433
|
+
(signal) => new Promise((resolve2) => {
|
|
1434
|
+
let timerId = void 0;
|
|
1435
|
+
const onAbort = () => {
|
|
1436
|
+
if (timerId !== void 0) {
|
|
1437
|
+
clearTimeout(timerId);
|
|
1438
|
+
}
|
|
1439
|
+
resolve2(toPromise(data, signal));
|
|
1440
|
+
};
|
|
1441
|
+
if (signal) {
|
|
1442
|
+
if (signal.aborted) {
|
|
1443
|
+
return resolve2(toPromise(data, signal));
|
|
1444
|
+
}
|
|
1445
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
1446
|
+
}
|
|
1447
|
+
timerId = setTimeout(() => {
|
|
1448
|
+
signal?.removeEventListener("abort", onAbort);
|
|
1449
|
+
resolve2(toPromise(data, signal));
|
|
1450
|
+
}, getMs(ms));
|
|
1451
|
+
})
|
|
1314
1452
|
);
|
|
1315
1453
|
Task2.repeat = (options) => (task) => (0, Task2.from)((signal) => {
|
|
1316
1454
|
const { times, delay: ms } = options;
|
|
1317
1455
|
if (times <= 0) return Promise.resolve([]);
|
|
1318
1456
|
const results = [];
|
|
1319
|
-
const wait = () =>
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1457
|
+
const wait = () => {
|
|
1458
|
+
if (signal?.aborted) return Promise.resolve();
|
|
1459
|
+
return new Promise((r) => {
|
|
1460
|
+
let timerId = void 0;
|
|
1461
|
+
const onAbort = () => {
|
|
1462
|
+
if (timerId !== void 0) {
|
|
1463
|
+
clearTimeout(timerId);
|
|
1464
|
+
}
|
|
1465
|
+
r();
|
|
1466
|
+
};
|
|
1467
|
+
if (signal) {
|
|
1468
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
1469
|
+
}
|
|
1470
|
+
timerId = setTimeout(() => {
|
|
1471
|
+
signal?.removeEventListener("abort", onAbort);
|
|
1472
|
+
r();
|
|
1473
|
+
}, getMs(ms || 0));
|
|
1474
|
+
});
|
|
1475
|
+
};
|
|
1476
|
+
const run2 = (left) => {
|
|
1477
|
+
if (signal?.aborted) {
|
|
1478
|
+
return Promise.resolve(results);
|
|
1479
|
+
}
|
|
1480
|
+
return toPromise(task, signal).then((a) => {
|
|
1481
|
+
results.push(a);
|
|
1482
|
+
if (left <= 1 || signal?.aborted) return results;
|
|
1483
|
+
return wait().then(() => run2(left - 1));
|
|
1484
|
+
});
|
|
1485
|
+
};
|
|
1325
1486
|
return run2(times);
|
|
1326
1487
|
});
|
|
1327
1488
|
Task2.repeatUntil = (options) => (task) => (0, Task2.from)((signal) => {
|
|
1328
1489
|
const { when: predicate, delay: ms, maxAttempts } = options;
|
|
1329
|
-
const wait = () =>
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1490
|
+
const wait = () => {
|
|
1491
|
+
if (signal?.aborted) return Promise.resolve();
|
|
1492
|
+
return new Promise((r) => {
|
|
1493
|
+
let timerId = void 0;
|
|
1494
|
+
const onAbort = () => {
|
|
1495
|
+
if (timerId !== void 0) {
|
|
1496
|
+
clearTimeout(timerId);
|
|
1497
|
+
}
|
|
1498
|
+
r();
|
|
1499
|
+
};
|
|
1500
|
+
if (signal) {
|
|
1501
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
1502
|
+
}
|
|
1503
|
+
timerId = setTimeout(() => {
|
|
1504
|
+
signal?.removeEventListener("abort", onAbort);
|
|
1505
|
+
r();
|
|
1506
|
+
}, getMs(ms || 0));
|
|
1507
|
+
});
|
|
1508
|
+
};
|
|
1509
|
+
const run2 = (attempt, lastValue) => {
|
|
1510
|
+
if (signal?.aborted && lastValue !== void 0) {
|
|
1511
|
+
return Promise.resolve(lastValue);
|
|
1512
|
+
}
|
|
1513
|
+
return toPromise(task, signal).then((a) => {
|
|
1514
|
+
if (predicate(a)) return a;
|
|
1515
|
+
if (maxAttempts !== void 0 && attempt >= maxAttempts) return a;
|
|
1516
|
+
if (signal?.aborted) return a;
|
|
1517
|
+
return wait().then(() => run2(attempt + 1, a));
|
|
1518
|
+
});
|
|
1519
|
+
};
|
|
1335
1520
|
return run2(1);
|
|
1336
1521
|
});
|
|
1337
|
-
Task2.race = (tasks) =>
|
|
1522
|
+
Task2.race = (tasks) => {
|
|
1523
|
+
if (tasks.length === 0) {
|
|
1524
|
+
return () => Deferred.fromPromise(new Promise(() => {
|
|
1525
|
+
}));
|
|
1526
|
+
}
|
|
1527
|
+
return (0, Task2.from)((outerSignal) => {
|
|
1528
|
+
const controllers = tasks.map(() => new AbortController());
|
|
1529
|
+
const onOuterAbort = () => {
|
|
1530
|
+
for (const ctrl of controllers) ctrl.abort();
|
|
1531
|
+
};
|
|
1532
|
+
if (outerSignal) {
|
|
1533
|
+
if (outerSignal.aborted) {
|
|
1534
|
+
onOuterAbort();
|
|
1535
|
+
} else {
|
|
1536
|
+
outerSignal.addEventListener("abort", onOuterAbort, { once: true });
|
|
1537
|
+
}
|
|
1538
|
+
}
|
|
1539
|
+
const promises = tasks.map((task, idx) => {
|
|
1540
|
+
const ctrl = controllers[idx];
|
|
1541
|
+
return toPromise(task, ctrl.signal).then((result) => {
|
|
1542
|
+
for (let i = 0; i < controllers.length; i++) {
|
|
1543
|
+
if (i !== idx) {
|
|
1544
|
+
controllers[i].abort();
|
|
1545
|
+
}
|
|
1546
|
+
}
|
|
1547
|
+
outerSignal?.removeEventListener("abort", onOuterAbort);
|
|
1548
|
+
return result;
|
|
1549
|
+
});
|
|
1550
|
+
});
|
|
1551
|
+
return Promise.race(promises);
|
|
1552
|
+
});
|
|
1553
|
+
};
|
|
1554
|
+
Task2.sequence = (tasks) => (0, Task2.from)((signal) => Promise.all(tasks.map((t) => toPromise(t, signal))));
|
|
1338
1555
|
Task2.sequential = (tasks) => (0, Task2.from)(async (signal) => {
|
|
1339
1556
|
const results = [];
|
|
1340
1557
|
for (const task of tasks) {
|
|
1558
|
+
if (signal?.aborted) {
|
|
1559
|
+
break;
|
|
1560
|
+
}
|
|
1341
1561
|
results.push(await toPromise(task, signal));
|
|
1342
1562
|
}
|
|
1343
1563
|
return results;
|
|
1344
1564
|
});
|
|
1345
1565
|
Task2.timeout = (ms, onTimeout) => (task) => (0, Task2.from)((outerSignal) => {
|
|
1346
1566
|
const controller = new AbortController();
|
|
1347
|
-
const onOuterAbort = () => controller.abort();
|
|
1348
|
-
outerSignal?.addEventListener("abort", onOuterAbort, { once: true });
|
|
1349
1567
|
let timerId;
|
|
1568
|
+
const cleanUp = () => {
|
|
1569
|
+
if (timerId !== void 0) {
|
|
1570
|
+
clearTimeout(timerId);
|
|
1571
|
+
}
|
|
1572
|
+
outerSignal?.removeEventListener("abort", onOuterAbort);
|
|
1573
|
+
};
|
|
1574
|
+
const onOuterAbort = () => {
|
|
1575
|
+
cleanUp();
|
|
1576
|
+
controller.abort();
|
|
1577
|
+
};
|
|
1578
|
+
if (outerSignal) {
|
|
1579
|
+
if (outerSignal.aborted) {
|
|
1580
|
+
controller.abort();
|
|
1581
|
+
} else {
|
|
1582
|
+
outerSignal.addEventListener("abort", onOuterAbort, { once: true });
|
|
1583
|
+
}
|
|
1584
|
+
}
|
|
1350
1585
|
return Promise.race([
|
|
1351
1586
|
toPromise(task, controller.signal).then((a) => {
|
|
1352
|
-
|
|
1353
|
-
outerSignal?.removeEventListener("abort", onOuterAbort);
|
|
1587
|
+
cleanUp();
|
|
1354
1588
|
return Result.ok(a);
|
|
1355
1589
|
}),
|
|
1356
1590
|
new Promise((resolve2) => {
|
|
1357
1591
|
timerId = setTimeout(() => {
|
|
1358
1592
|
controller.abort();
|
|
1359
|
-
|
|
1593
|
+
cleanUp();
|
|
1360
1594
|
resolve2(Result.error(onTimeout()));
|
|
1361
|
-
}, ms);
|
|
1595
|
+
}, getMs(ms));
|
|
1362
1596
|
})
|
|
1363
1597
|
]);
|
|
1364
1598
|
});
|
|
@@ -1392,28 +1626,33 @@ var Resource;
|
|
|
1392
1626
|
release
|
|
1393
1627
|
});
|
|
1394
1628
|
Resource2.use = (f) => (resource) => Task.from(
|
|
1395
|
-
() => Deferred.toPromise(resource.acquire()).then(async (acquired) => {
|
|
1629
|
+
(signal) => Deferred.toPromise(resource.acquire(signal)).then(async (acquired) => {
|
|
1396
1630
|
if (Result.isError(acquired)) return acquired;
|
|
1397
1631
|
const a = acquired.value;
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1632
|
+
try {
|
|
1633
|
+
const usageResult = await Deferred.toPromise(f(a)(signal));
|
|
1634
|
+
return usageResult;
|
|
1635
|
+
} finally {
|
|
1636
|
+
await Deferred.toPromise(resource.release(a)(signal));
|
|
1637
|
+
}
|
|
1401
1638
|
})
|
|
1402
1639
|
);
|
|
1403
1640
|
Resource2.combine = (resourceA, resourceB) => ({
|
|
1404
1641
|
acquire: Task.from(
|
|
1405
|
-
() => Deferred.toPromise(resourceA.acquire()).then(async (acquiredA) => {
|
|
1642
|
+
(signal) => Deferred.toPromise(resourceA.acquire(signal)).then(async (acquiredA) => {
|
|
1406
1643
|
if (Result.isError(acquiredA)) return acquiredA;
|
|
1407
1644
|
const a = acquiredA.value;
|
|
1408
|
-
const acquiredB = await Deferred.toPromise(resourceB.acquire());
|
|
1645
|
+
const acquiredB = await Deferred.toPromise(resourceB.acquire(signal));
|
|
1409
1646
|
if (Result.isError(acquiredB)) {
|
|
1410
|
-
await Deferred.toPromise(resourceA.release(a)());
|
|
1647
|
+
await Deferred.toPromise(resourceA.release(a)(signal));
|
|
1411
1648
|
return acquiredB;
|
|
1412
1649
|
}
|
|
1413
1650
|
return Result.ok([a, acquiredB.value]);
|
|
1414
1651
|
})
|
|
1415
1652
|
),
|
|
1416
|
-
release: ([a, b]) => Task.from(
|
|
1653
|
+
release: ([a, b]) => Task.from(
|
|
1654
|
+
(signal) => Deferred.toPromise(resourceB.release(b)(signal)).then(() => Deferred.toPromise(resourceA.release(a)(signal)))
|
|
1655
|
+
)
|
|
1417
1656
|
});
|
|
1418
1657
|
})(Resource || (Resource = {}));
|
|
1419
1658
|
|
|
@@ -1454,16 +1693,18 @@ var TaskMaybe;
|
|
|
1454
1693
|
TaskMaybe2.some = (value) => Task.resolve(Maybe.some(value));
|
|
1455
1694
|
TaskMaybe2.none = () => Task.resolve(Maybe.none());
|
|
1456
1695
|
TaskMaybe2.fromMaybe = (option) => Task.resolve(option);
|
|
1696
|
+
TaskMaybe2.fromNullable = (value) => Task.resolve(Maybe.fromNullable(value));
|
|
1697
|
+
TaskMaybe2.fromResult = (result) => Task.resolve(Result.toMaybe(result));
|
|
1457
1698
|
TaskMaybe2.fromTask = (task) => Task.map(Maybe.some)(task);
|
|
1458
1699
|
TaskMaybe2.tryCatch = (f) => Task.from(
|
|
1459
|
-
() => f().then(Maybe.some).catch(() => Maybe.none())
|
|
1700
|
+
(signal) => f(signal).then(Maybe.some).catch(() => Maybe.none())
|
|
1460
1701
|
);
|
|
1461
1702
|
TaskMaybe2.map = (f) => (data) => Task.map(Maybe.map(f))(data);
|
|
1462
1703
|
TaskMaybe2.chain = (f) => (data) => Task.chain((option) => Maybe.isSome(option) ? f(option.value) : Task.resolve(Maybe.none()))(data);
|
|
1463
1704
|
TaskMaybe2.ap = (arg) => (data) => Task.from(
|
|
1464
|
-
() => Promise.all([
|
|
1465
|
-
Deferred.toPromise(data()),
|
|
1466
|
-
Deferred.toPromise(arg())
|
|
1705
|
+
(signal) => Promise.all([
|
|
1706
|
+
Deferred.toPromise(data(signal)),
|
|
1707
|
+
Deferred.toPromise(arg(signal))
|
|
1467
1708
|
]).then(([of_, oa]) => Maybe.ap(oa)(of_))
|
|
1468
1709
|
);
|
|
1469
1710
|
TaskMaybe2.fold = (onNone, onSome) => (data) => Task.map(Maybe.fold(onNone, onSome))(data);
|
|
@@ -1479,6 +1720,12 @@ var TaskResult;
|
|
|
1479
1720
|
((TaskResult2) => {
|
|
1480
1721
|
TaskResult2.ok = (value) => Task.resolve(Result.ok(value));
|
|
1481
1722
|
TaskResult2.err = (error) => Task.resolve(Result.error(error));
|
|
1723
|
+
TaskResult2.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Result.error(onNull()) : Result.ok(value));
|
|
1724
|
+
TaskResult2.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Result.error(onNone()) : Result.ok(maybe.value));
|
|
1725
|
+
TaskResult2.fromResult = (result) => Task.resolve(result);
|
|
1726
|
+
TaskResult2.fromThrowable = (f, onError) => (...args) => Task.from(
|
|
1727
|
+
() => f(...args).then(Result.ok).catch((e) => Result.error(onError(e)))
|
|
1728
|
+
);
|
|
1482
1729
|
TaskResult2.tryCatch = (f, onError) => Task.from(
|
|
1483
1730
|
(signal) => f(signal).then(Result.ok).catch((e) => Result.error(onError(e)))
|
|
1484
1731
|
);
|
|
@@ -1497,6 +1744,12 @@ var TaskResult;
|
|
|
1497
1744
|
TaskResult2.getOrElse = (defaultValue) => (data) => Task.map(Result.getOrElse(defaultValue))(data);
|
|
1498
1745
|
TaskResult2.tap = (f) => (data) => Task.map(Result.tap(f))(data);
|
|
1499
1746
|
TaskResult2.tapError = (f) => (data) => Task.map(Result.tapError(f))(data);
|
|
1747
|
+
TaskResult2.ap = (arg) => (data) => Task.from(
|
|
1748
|
+
(signal) => Promise.all([
|
|
1749
|
+
Deferred.toPromise(data(signal)),
|
|
1750
|
+
Deferred.toPromise(arg(signal))
|
|
1751
|
+
]).then(([of_, oa]) => Result.ap(oa)(of_))
|
|
1752
|
+
);
|
|
1500
1753
|
TaskResult2.run = (signal) => (task) => Deferred.toPromise(task(signal));
|
|
1501
1754
|
})(TaskResult || (TaskResult = {}));
|
|
1502
1755
|
|
|
@@ -1518,6 +1771,8 @@ var Validation;
|
|
|
1518
1771
|
Validation2.isValid = (data) => data.kind === "Valid";
|
|
1519
1772
|
Validation2.isInvalid = (data) => data.kind === "Invalid";
|
|
1520
1773
|
Validation2.fromPredicate = (pred, onFalse) => (a) => pred(a) ? (0, Validation2.valid)(a) : (0, Validation2.invalid)(onFalse(a));
|
|
1774
|
+
Validation2.fromNullable = (onNull) => (value) => value === null || value === void 0 ? (0, Validation2.invalid)(onNull()) : (0, Validation2.valid)(value);
|
|
1775
|
+
Validation2.fromMaybe = (onNone) => (maybe) => Maybe.isNone(maybe) ? (0, Validation2.invalid)(onNone()) : (0, Validation2.valid)(maybe.value);
|
|
1521
1776
|
Validation2.map = (f) => (data) => (0, Validation2.isValid)(data) ? (0, Validation2.valid)(f(data.value)) : data;
|
|
1522
1777
|
Validation2.ap = (arg) => (data) => {
|
|
1523
1778
|
if ((0, Validation2.isValid)(data) && (0, Validation2.isValid)(arg)) return (0, Validation2.valid)(data.value(arg.value));
|
|
@@ -1569,14 +1824,17 @@ var TaskValidation;
|
|
|
1569
1824
|
TaskValidation2.invalid = (error) => Task.resolve(Validation.invalid(error));
|
|
1570
1825
|
TaskValidation2.invalidAll = (errors) => Task.resolve(Validation.invalidAll(errors));
|
|
1571
1826
|
TaskValidation2.fromValidation = (validation) => Task.resolve(validation);
|
|
1827
|
+
TaskValidation2.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Validation.invalid(onNull()) : Validation.valid(value));
|
|
1828
|
+
TaskValidation2.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Validation.invalid(onNone()) : Validation.valid(maybe.value));
|
|
1829
|
+
TaskValidation2.fromResult = (result) => Task.resolve(Validation.fromResult(result));
|
|
1572
1830
|
TaskValidation2.tryCatch = (f, onError) => Task.from(
|
|
1573
|
-
() => f().then(Validation.valid).catch((e) => Validation.invalid(onError(e)))
|
|
1831
|
+
(signal) => f(signal).then(Validation.valid).catch((e) => Validation.invalid(onError(e)))
|
|
1574
1832
|
);
|
|
1575
1833
|
TaskValidation2.map = (f) => (data) => Task.map(Validation.map(f))(data);
|
|
1576
1834
|
TaskValidation2.ap = (arg) => (data) => Task.from(
|
|
1577
|
-
() => Promise.all([
|
|
1578
|
-
Deferred.toPromise(data()),
|
|
1579
|
-
Deferred.toPromise(arg())
|
|
1835
|
+
(signal) => Promise.all([
|
|
1836
|
+
Deferred.toPromise(data(signal)),
|
|
1837
|
+
Deferred.toPromise(arg(signal))
|
|
1580
1838
|
]).then(([vf, va]) => Validation.ap(va)(vf))
|
|
1581
1839
|
);
|
|
1582
1840
|
TaskValidation2.fold = (onInvalid, onValid) => (data) => Task.map(Validation.fold(onInvalid, onValid))(data);
|
|
@@ -1587,13 +1845,13 @@ var TaskValidation;
|
|
|
1587
1845
|
(validation) => Validation.isValid(validation) ? Task.resolve(validation) : fallback(validation.errors)
|
|
1588
1846
|
)(data);
|
|
1589
1847
|
TaskValidation2.product = (first, second) => Task.from(
|
|
1590
|
-
() => Promise.all([
|
|
1591
|
-
Deferred.toPromise(first()),
|
|
1592
|
-
Deferred.toPromise(second())
|
|
1848
|
+
(signal) => Promise.all([
|
|
1849
|
+
Deferred.toPromise(first(signal)),
|
|
1850
|
+
Deferred.toPromise(second(signal))
|
|
1593
1851
|
]).then(([va, vb]) => Validation.product(va, vb))
|
|
1594
1852
|
);
|
|
1595
1853
|
TaskValidation2.productAll = (data) => Task.from(
|
|
1596
|
-
() => Promise.all(data.map((t) => Deferred.toPromise(t()))).then((results) => Validation.productAll(results))
|
|
1854
|
+
(signal) => Promise.all(data.map((t) => Deferred.toPromise(t(signal)))).then((results) => Validation.productAll(results))
|
|
1597
1855
|
);
|
|
1598
1856
|
})(TaskValidation || (TaskValidation = {}));
|
|
1599
1857
|
|
|
@@ -1680,12 +1938,16 @@ var Tuple;
|
|
|
1680
1938
|
})(Tuple || (Tuple = {}));
|
|
1681
1939
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1682
1940
|
0 && (module.exports = {
|
|
1941
|
+
Combinable,
|
|
1683
1942
|
Deferred,
|
|
1943
|
+
Equality,
|
|
1944
|
+
Lazy,
|
|
1684
1945
|
Lens,
|
|
1685
1946
|
Logged,
|
|
1686
1947
|
Maybe,
|
|
1687
1948
|
Op,
|
|
1688
1949
|
Optional,
|
|
1950
|
+
Ordering,
|
|
1689
1951
|
Predicate,
|
|
1690
1952
|
Reader,
|
|
1691
1953
|
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,25 @@ import {
|
|
|
15
19
|
These,
|
|
16
20
|
Tuple,
|
|
17
21
|
Validation
|
|
18
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-FZX4MTRI.mjs";
|
|
19
23
|
import {
|
|
20
24
|
Deferred,
|
|
21
25
|
Maybe,
|
|
22
26
|
Result,
|
|
23
27
|
Task
|
|
24
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-GSTKY7MF.mjs";
|
|
29
|
+
import "./chunk-VWVPHDZO.mjs";
|
|
25
30
|
export {
|
|
31
|
+
Combinable,
|
|
26
32
|
Deferred,
|
|
33
|
+
Equality,
|
|
34
|
+
Lazy,
|
|
27
35
|
Lens,
|
|
28
36
|
Logged,
|
|
29
37
|
Maybe,
|
|
30
38
|
Op,
|
|
31
39
|
Optional,
|
|
40
|
+
Ordering,
|
|
32
41
|
Predicate,
|
|
33
42
|
Reader,
|
|
34
43
|
Refinement,
|