@nlozgachev/pipelined 0.37.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.
@@ -1,334 +0,0 @@
1
- import {
2
- Duration
3
- } from "./chunk-VWVPHDZO.mjs";
4
-
5
- // src/Core/Maybe.ts
6
- var _none = { kind: "None" };
7
- var Maybe;
8
- ((Maybe2) => {
9
- Maybe2.some = (value) => ({ kind: "Some", value });
10
- Maybe2.isSome = (data) => data.kind === "Some";
11
- Maybe2.none = () => _none;
12
- Maybe2.isNone = (data) => data.kind === "None";
13
- Maybe2.fromNullable = (value) => value === null || value === void 0 ? (0, Maybe2.none)() : (0, Maybe2.some)(value);
14
- Maybe2.toNullable = (data) => (0, Maybe2.isSome)(data) ? data.value : null;
15
- Maybe2.toUndefined = (data) => (0, Maybe2.isSome)(data) ? data.value : void 0;
16
- Maybe2.fromPredicate = (pred) => (a) => pred(a) ? (0, Maybe2.some)(a) : (0, Maybe2.none)();
17
- Maybe2.toResult = (onNone) => (data) => (0, Maybe2.isSome)(data) ? Result.ok(data.value) : Result.err(onNone());
18
- Maybe2.fromResult = (data) => Result.isOk(data) ? (0, Maybe2.some)(data.value) : (0, Maybe2.none)();
19
- Maybe2.map = (f) => (data) => (0, Maybe2.isSome)(data) ? (0, Maybe2.some)(f(data.value)) : data;
20
- Maybe2.chain = (f) => (data) => (0, Maybe2.isSome)(data) ? f(data.value) : data;
21
- Maybe2.fold = (onNone, onSome) => (data) => (0, Maybe2.isSome)(data) ? onSome(data.value) : onNone();
22
- Maybe2.match = (cases) => (data) => (0, Maybe2.isSome)(data) ? cases.some(data.value) : cases.none();
23
- Maybe2.getOrElse = (defaultValue) => (data) => (0, Maybe2.isSome)(data) ? data.value : defaultValue();
24
- Maybe2.tap = (f) => (data) => {
25
- if ((0, Maybe2.isSome)(data)) {
26
- f(data.value);
27
- }
28
- return data;
29
- };
30
- Maybe2.filter = (predicate) => (data) => (0, Maybe2.isSome)(data) ? predicate(data.value) ? data : (0, Maybe2.none)() : data;
31
- Maybe2.recover = (fallback) => (data) => (0, Maybe2.isSome)(data) ? data : fallback();
32
- Maybe2.ap = (arg) => (data) => (0, Maybe2.isSome)(data) && (0, Maybe2.isSome)(arg) ? (0, Maybe2.some)(data.value(arg.value)) : (0, Maybe2.none)();
33
- Maybe2.bindTo = (key) => (data) => (0, Maybe2.map)((a) => ({ [key]: a }))(data);
34
- Maybe2.bind = (key, f) => (data) => (0, Maybe2.chain)(
35
- (a) => (0, Maybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
36
- )(data);
37
- })(Maybe || (Maybe = {}));
38
-
39
- // src/Core/Result.ts
40
- var Result;
41
- ((Result2) => {
42
- Result2.ok = (value) => ({ kind: "Ok", value });
43
- Result2.err = (e) => ({ kind: "Err", error: e });
44
- Result2.isOk = (data) => data.kind === "Ok";
45
- Result2.isErr = (data) => data.kind === "Err";
46
- Result2.tryCatch = (f, onError) => {
47
- try {
48
- return (0, Result2.ok)(f());
49
- } catch (error) {
50
- return (0, Result2.err)(onError(error));
51
- }
52
- };
53
- Result2.map = (f) => (data) => (0, Result2.isOk)(data) ? (0, Result2.ok)(f(data.value)) : data;
54
- Result2.mapError = (f) => (data) => (0, Result2.isErr)(data) ? (0, Result2.err)(f(data.error)) : data;
55
- Result2.chain = (f) => (data) => (0, Result2.isOk)(data) ? f(data.value) : data;
56
- Result2.fold = (onErr, onOk) => (data) => (0, Result2.isOk)(data) ? onOk(data.value) : onErr(data.error);
57
- Result2.match = (cases) => (data) => (0, Result2.isOk)(data) ? cases.ok(data.value) : cases.err(data.error);
58
- Result2.getOrElse = (defaultValue) => (data) => (0, Result2.isOk)(data) ? data.value : defaultValue();
59
- Result2.tap = (f) => (data) => {
60
- if ((0, Result2.isOk)(data)) {
61
- f(data.value);
62
- }
63
- return data;
64
- };
65
- Result2.tapError = (f) => (data) => {
66
- if ((0, Result2.isErr)(data)) {
67
- f(data.error);
68
- }
69
- return data;
70
- };
71
- Result2.fromPredicate = (pred, onFalse) => (a) => pred(a) ? (0, Result2.ok)(a) : (0, Result2.err)(onFalse(a));
72
- Result2.fromNullable = (onNull) => (value) => value === null || value === void 0 ? (0, Result2.err)(onNull()) : (0, Result2.ok)(value);
73
- Result2.fromMaybe = (onNone) => (maybe) => Maybe.isNone(maybe) ? (0, Result2.err)(onNone()) : (0, Result2.ok)(maybe.value);
74
- Result2.fromThrowable = (f, onError) => (...args) => {
75
- try {
76
- return (0, Result2.ok)(f(...args));
77
- } catch (error) {
78
- return (0, Result2.err)(onError(error));
79
- }
80
- };
81
- Result2.recover = (fallback) => (data) => (0, Result2.isOk)(data) ? data : fallback(data.error);
82
- Result2.recoverUnless = (isBlocked, fallback) => (data) => (0, Result2.isErr)(data) && !isBlocked(data.error) ? fallback() : data;
83
- Result2.toMaybe = (data) => (0, Result2.isOk)(data) ? Maybe.some(data.value) : Maybe.none();
84
- 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;
85
- Result2.bindTo = (key) => (data) => (0, Result2.map)((a) => ({ [key]: a }))(data);
86
- Result2.bind = (key, f) => (data) => (0, Result2.chain)(
87
- (a) => (0, Result2.map)((b) => ({ ...a, [key]: b }))(f(a))
88
- )(data);
89
- })(Result || (Result = {}));
90
-
91
- // src/Core/Deferred.ts
92
- var Deferred;
93
- ((Deferred2) => {
94
- Deferred2.fromPromise = (p) => (
95
- // eslint-disable-next-line unicorn/no-thenable -- Deferred is intentionally thenable; it is the mechanism that makes Task awaitable
96
- { then: ((f) => p.then(f)) }
97
- );
98
- Deferred2.toPromise = (d) => new Promise((resolve) => d.then(resolve));
99
- })(Deferred || (Deferred = {}));
100
-
101
- // src/Core/Task.ts
102
- var toPromise = (task, signal) => Deferred.toPromise(task(signal));
103
- var getMs = (duration) => Duration.toMilliseconds(duration);
104
- var Task;
105
- ((Task2) => {
106
- Task2.resolve = (value) => () => Deferred.fromPromise(Promise.resolve(value));
107
- Task2.from = (f) => (signal) => Deferred.fromPromise(f(signal));
108
- Task2.fromSync = (f) => () => Deferred.fromPromise(Promise.resolve(f()));
109
- Task2.map = (f) => (data) => (0, Task2.from)((signal) => toPromise(data, signal).then(f));
110
- Task2.chain = (f) => (data) => (0, Task2.from)((signal) => toPromise(data, signal).then((a) => toPromise(f(a), signal)));
111
- Task2.ap = (arg) => (data) => (0, Task2.from)((signal) => Promise.all([toPromise(data, signal), toPromise(arg, signal)]).then(([f, a]) => f(a)));
112
- Task2.tap = (f) => (data) => (0, Task2.from)(
113
- (signal) => toPromise(data, signal).then((a) => {
114
- f(a);
115
- return a;
116
- })
117
- );
118
- Task2.all = (tasks) => (0, Task2.from)(
119
- (signal) => Promise.all(tasks.map((t) => toPromise(t, signal)))
120
- );
121
- Task2.delay = (duration) => (data) => (0, Task2.from)(
122
- (signal) => new Promise((res) => {
123
- let timerId;
124
- const onAbort = () => {
125
- if (timerId !== void 0) {
126
- clearTimeout(timerId);
127
- }
128
- res(toPromise(data, signal));
129
- };
130
- if (signal) {
131
- if (signal.aborted) {
132
- return res(toPromise(data, signal));
133
- }
134
- signal.addEventListener("abort", onAbort, { once: true });
135
- }
136
- timerId = setTimeout(() => {
137
- signal?.removeEventListener("abort", onAbort);
138
- res(toPromise(data, signal));
139
- }, getMs(duration));
140
- })
141
- );
142
- Task2.repeat = (options) => (task) => (0, Task2.from)((signal) => {
143
- const { times, delay: delayDuration } = options;
144
- if (times <= 0) {
145
- return Promise.resolve([]);
146
- }
147
- const results = [];
148
- const wait = () => {
149
- if (signal?.aborted) {
150
- return Promise.resolve();
151
- }
152
- return new Promise((r) => {
153
- let timerId;
154
- const onAbort = () => {
155
- if (timerId !== void 0) {
156
- clearTimeout(timerId);
157
- }
158
- r();
159
- };
160
- if (signal) {
161
- signal.addEventListener("abort", onAbort, { once: true });
162
- }
163
- timerId = setTimeout(() => {
164
- signal?.removeEventListener("abort", onAbort);
165
- r();
166
- }, delayDuration ? getMs(delayDuration) : 0);
167
- });
168
- };
169
- const run2 = (left) => {
170
- if (signal?.aborted) {
171
- return Promise.resolve(results);
172
- }
173
- return toPromise(task, signal).then((a) => {
174
- results.push(a);
175
- if (left <= 1 || signal?.aborted) {
176
- return results;
177
- }
178
- return wait().then(() => run2(left - 1));
179
- });
180
- };
181
- return run2(times);
182
- });
183
- Task2.repeatUntil = (options) => (task) => (0, Task2.from)((signal) => {
184
- const { when: predicate, delay: delayDuration, maxAttempts } = options;
185
- const wait = () => {
186
- if (signal?.aborted) {
187
- return Promise.resolve();
188
- }
189
- return new Promise((r) => {
190
- let timerId;
191
- const onAbort = () => {
192
- if (timerId !== void 0) {
193
- clearTimeout(timerId);
194
- }
195
- r();
196
- };
197
- if (signal) {
198
- signal.addEventListener("abort", onAbort, { once: true });
199
- }
200
- timerId = setTimeout(() => {
201
- signal?.removeEventListener("abort", onAbort);
202
- r();
203
- }, delayDuration ? getMs(delayDuration) : 0);
204
- });
205
- };
206
- const run2 = (attempt, lastValue) => {
207
- if (signal?.aborted && lastValue !== void 0) {
208
- return Promise.resolve(lastValue);
209
- }
210
- return toPromise(task, signal).then((a) => {
211
- if (predicate(a)) {
212
- return a;
213
- }
214
- if (maxAttempts !== void 0 && attempt >= maxAttempts) {
215
- return a;
216
- }
217
- if (signal?.aborted) {
218
- return a;
219
- }
220
- return wait().then(() => run2(attempt + 1, a));
221
- });
222
- };
223
- return run2(1);
224
- });
225
- Task2.race = (tasks) => {
226
- if (tasks.length === 0) {
227
- return () => Deferred.fromPromise(new Promise(() => {
228
- }));
229
- }
230
- return (0, Task2.from)((outerSignal) => {
231
- const controllers = tasks.map(() => new AbortController());
232
- const onOuterAbort = () => {
233
- for (const ctrl of controllers) {
234
- ctrl.abort();
235
- }
236
- };
237
- if (outerSignal) {
238
- if (outerSignal.aborted) {
239
- onOuterAbort();
240
- } else {
241
- outerSignal.addEventListener("abort", onOuterAbort, { once: true });
242
- }
243
- }
244
- const promises = tasks.map((task, idx) => {
245
- const ctrl = controllers[idx];
246
- return toPromise(task, ctrl.signal).then((result) => {
247
- for (let i = 0; i < controllers.length; i++) {
248
- if (i !== idx) {
249
- controllers[i].abort();
250
- }
251
- }
252
- outerSignal?.removeEventListener("abort", onOuterAbort);
253
- return result;
254
- });
255
- });
256
- return Promise.race(promises);
257
- });
258
- };
259
- Task2.sequence = (tasks) => (0, Task2.from)((signal) => Promise.all(tasks.map((t) => toPromise(t, signal))));
260
- Task2.sequential = (tasks) => (0, Task2.from)(async (signal) => {
261
- const results = [];
262
- for (const task of tasks) {
263
- if (signal?.aborted) {
264
- break;
265
- }
266
- results.push(await toPromise(task, signal));
267
- }
268
- return results;
269
- });
270
- Task2.timeout = (duration, onTimeout) => (task) => (0, Task2.from)((outerSignal) => {
271
- const controller = new AbortController();
272
- let timerId;
273
- function cleanUp() {
274
- if (timerId !== void 0) {
275
- clearTimeout(timerId);
276
- }
277
- outerSignal?.removeEventListener("abort", onOuterAbort);
278
- }
279
- function onOuterAbort() {
280
- cleanUp();
281
- controller.abort();
282
- }
283
- if (outerSignal) {
284
- if (outerSignal.aborted) {
285
- controller.abort();
286
- } else {
287
- outerSignal.addEventListener("abort", onOuterAbort, { once: true });
288
- }
289
- }
290
- return Promise.race([
291
- toPromise(task, controller.signal).then((a) => {
292
- cleanUp();
293
- return Result.ok(a);
294
- }),
295
- new Promise((res) => {
296
- timerId = setTimeout(() => {
297
- controller.abort();
298
- cleanUp();
299
- res(Result.err(onTimeout()));
300
- }, getMs(duration));
301
- })
302
- ]);
303
- });
304
- Task2.abortable = (factory) => {
305
- let currentController = null;
306
- const abort = () => currentController?.abort();
307
- const task = (outerSignal) => {
308
- currentController?.abort();
309
- currentController = new AbortController();
310
- const controller = currentController;
311
- if (outerSignal) {
312
- if (outerSignal.aborted) {
313
- controller.abort(outerSignal.reason);
314
- } else {
315
- outerSignal.addEventListener("abort", () => controller.abort(outerSignal.reason), { once: true });
316
- }
317
- }
318
- return Deferred.fromPromise(factory(controller.signal));
319
- };
320
- return { task, abort };
321
- };
322
- Task2.run = (signal) => (task) => Deferred.toPromise(task(signal));
323
- Task2.bindTo = (key) => (data) => (0, Task2.map)((a) => ({ [key]: a }))(data);
324
- Task2.bind = (key, f) => (data) => (0, Task2.chain)(
325
- (a) => (0, Task2.map)((b) => ({ ...a, [key]: b }))(f(a))
326
- )(data);
327
- })(Task || (Task = {}));
328
-
329
- export {
330
- Result,
331
- Maybe,
332
- Deferred,
333
- Task
334
- };