@nlozgachev/pipelined 0.18.0 → 0.20.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 +80 -48
- package/dist/{Task-DUdIQm-Q.d.ts → Task-BAT6Z6b9.d.ts} +32 -3
- package/dist/{Task-DBW4nOZR.d.mts → Task-JOnNAaPq.d.mts} +32 -3
- package/dist/{chunk-UWGFO7BH.mjs → chunk-7COGDULU.mjs} +54 -11
- package/dist/{chunk-B3YNH6GZ.mjs → chunk-AC7RQXWC.mjs} +1 -1
- package/dist/{chunk-5HMYR4XB.mjs → chunk-NRF2FVPZ.mjs} +1 -2
- package/dist/{chunk-EAR4TIGH.mjs → chunk-RUDOUVQR.mjs} +43 -21
- package/dist/composition.js +1 -2
- package/dist/composition.mjs +1 -1
- package/dist/core.d.mts +43 -9
- package/dist/core.d.ts +43 -9
- package/dist/core.js +96 -31
- package/dist/core.mjs +2 -2
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +97 -33
- package/dist/index.mjs +4 -4
- package/dist/utils.d.mts +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +43 -21
- package/dist/utils.mjs +2 -2
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -245,8 +245,7 @@ var on = (f, g) => (a, b) => f(g(a), g(b));
|
|
|
245
245
|
|
|
246
246
|
// src/Composition/pipe.ts
|
|
247
247
|
function pipe(a, ab, bc, cd, de, ef, fg, gh, hi, ij, jk) {
|
|
248
|
-
|
|
249
|
-
switch (len) {
|
|
248
|
+
switch (arguments.length) {
|
|
250
249
|
case 1:
|
|
251
250
|
return a;
|
|
252
251
|
case 2:
|
|
@@ -574,77 +573,99 @@ var RemoteData;
|
|
|
574
573
|
})(RemoteData || (RemoteData = {}));
|
|
575
574
|
|
|
576
575
|
// src/Core/Task.ts
|
|
577
|
-
var toPromise = (task) => Deferred.toPromise(task());
|
|
576
|
+
var toPromise = (task, signal) => Deferred.toPromise(task(signal));
|
|
578
577
|
var Task;
|
|
579
578
|
((Task2) => {
|
|
580
579
|
Task2.resolve = (value) => () => Deferred.fromPromise(Promise.resolve(value));
|
|
581
|
-
Task2.from = (f) => () => Deferred.fromPromise(f());
|
|
582
|
-
Task2.map = (f) => (data) => (0, Task2.from)(() => toPromise(data).then(f));
|
|
583
|
-
Task2.chain = (f) => (data) => (0, Task2.from)(() => toPromise(data).then((a) => toPromise(f(a))));
|
|
580
|
+
Task2.from = (f) => (signal) => Deferred.fromPromise(f(signal));
|
|
581
|
+
Task2.map = (f) => (data) => (0, Task2.from)((signal) => toPromise(data, signal).then(f));
|
|
582
|
+
Task2.chain = (f) => (data) => (0, Task2.from)((signal) => toPromise(data, signal).then((a) => toPromise(f(a), signal)));
|
|
584
583
|
Task2.ap = (arg) => (data) => (0, Task2.from)(
|
|
585
|
-
() => Promise.all([
|
|
586
|
-
toPromise(data),
|
|
587
|
-
toPromise(arg)
|
|
584
|
+
(signal) => Promise.all([
|
|
585
|
+
toPromise(data, signal),
|
|
586
|
+
toPromise(arg, signal)
|
|
588
587
|
]).then(([f, a]) => f(a))
|
|
589
588
|
);
|
|
590
589
|
Task2.tap = (f) => (data) => (0, Task2.from)(
|
|
591
|
-
() => toPromise(data).then((a) => {
|
|
590
|
+
(signal) => toPromise(data, signal).then((a) => {
|
|
592
591
|
f(a);
|
|
593
592
|
return a;
|
|
594
593
|
})
|
|
595
594
|
);
|
|
596
595
|
Task2.all = (tasks) => (0, Task2.from)(
|
|
597
|
-
() => Promise.all(tasks.map((t) => toPromise(t)))
|
|
596
|
+
(signal) => Promise.all(tasks.map((t) => toPromise(t, signal)))
|
|
598
597
|
);
|
|
599
598
|
Task2.delay = (ms) => (data) => (0, Task2.from)(
|
|
600
|
-
() => new Promise(
|
|
599
|
+
(signal) => new Promise(
|
|
601
600
|
(resolve2) => setTimeout(
|
|
602
|
-
() => toPromise(data).then(resolve2),
|
|
601
|
+
() => toPromise(data, signal).then(resolve2),
|
|
603
602
|
ms
|
|
604
603
|
)
|
|
605
604
|
)
|
|
606
605
|
);
|
|
607
|
-
Task2.repeat = (options) => (task) => (0, Task2.from)(() => {
|
|
606
|
+
Task2.repeat = (options) => (task) => (0, Task2.from)((signal) => {
|
|
608
607
|
const { times, delay: ms } = options;
|
|
609
608
|
if (times <= 0) return Promise.resolve([]);
|
|
610
609
|
const results = [];
|
|
611
610
|
const wait = () => ms !== void 0 && ms > 0 ? new Promise((r) => setTimeout(r, ms)) : Promise.resolve();
|
|
612
|
-
const run = (left) => toPromise(task).then((a) => {
|
|
611
|
+
const run = (left) => toPromise(task, signal).then((a) => {
|
|
613
612
|
results.push(a);
|
|
614
613
|
if (left <= 1) return results;
|
|
615
614
|
return wait().then(() => run(left - 1));
|
|
616
615
|
});
|
|
617
616
|
return run(times);
|
|
618
617
|
});
|
|
619
|
-
Task2.repeatUntil = (options) => (task) => (0, Task2.from)(() => {
|
|
618
|
+
Task2.repeatUntil = (options) => (task) => (0, Task2.from)((signal) => {
|
|
620
619
|
const { when: predicate, delay: ms } = options;
|
|
621
620
|
const wait = () => ms !== void 0 && ms > 0 ? new Promise((r) => setTimeout(r, ms)) : Promise.resolve();
|
|
622
|
-
const run = () => toPromise(task).then((a) => {
|
|
621
|
+
const run = () => toPromise(task, signal).then((a) => {
|
|
623
622
|
if (predicate(a)) return a;
|
|
624
623
|
return wait().then(run);
|
|
625
624
|
});
|
|
626
625
|
return run();
|
|
627
626
|
});
|
|
628
|
-
Task2.race = (tasks) => (0, Task2.from)(() => Promise.race(tasks.map(toPromise)));
|
|
629
|
-
Task2.sequential = (tasks) => (0, Task2.from)(async () => {
|
|
627
|
+
Task2.race = (tasks) => (0, Task2.from)((signal) => Promise.race(tasks.map((t) => toPromise(t, signal))));
|
|
628
|
+
Task2.sequential = (tasks) => (0, Task2.from)(async (signal) => {
|
|
630
629
|
const results = [];
|
|
631
630
|
for (const task of tasks) {
|
|
632
|
-
results.push(await toPromise(task));
|
|
631
|
+
results.push(await toPromise(task, signal));
|
|
633
632
|
}
|
|
634
633
|
return results;
|
|
635
634
|
});
|
|
636
|
-
Task2.timeout = (ms, onTimeout) => (task) => (0, Task2.from)(() => {
|
|
635
|
+
Task2.timeout = (ms, onTimeout) => (task) => (0, Task2.from)((outerSignal) => {
|
|
636
|
+
const controller = new AbortController();
|
|
637
|
+
const onOuterAbort = () => controller.abort();
|
|
638
|
+
outerSignal?.addEventListener("abort", onOuterAbort, { once: true });
|
|
637
639
|
let timerId;
|
|
638
640
|
return Promise.race([
|
|
639
|
-
toPromise(task).then((a) => {
|
|
641
|
+
toPromise(task, controller.signal).then((a) => {
|
|
640
642
|
clearTimeout(timerId);
|
|
643
|
+
outerSignal?.removeEventListener("abort", onOuterAbort);
|
|
641
644
|
return Result.ok(a);
|
|
642
645
|
}),
|
|
643
646
|
new Promise((resolve2) => {
|
|
644
|
-
timerId = setTimeout(() =>
|
|
647
|
+
timerId = setTimeout(() => {
|
|
648
|
+
controller.abort();
|
|
649
|
+
outerSignal?.removeEventListener("abort", onOuterAbort);
|
|
650
|
+
resolve2(Result.err(onTimeout()));
|
|
651
|
+
}, ms);
|
|
645
652
|
})
|
|
646
653
|
]);
|
|
647
654
|
});
|
|
655
|
+
Task2.abortable = (factory) => {
|
|
656
|
+
const controller = new AbortController();
|
|
657
|
+
const task = (outerSignal) => {
|
|
658
|
+
if (outerSignal) {
|
|
659
|
+
if (outerSignal.aborted) {
|
|
660
|
+
controller.abort(outerSignal.reason);
|
|
661
|
+
} else {
|
|
662
|
+
outerSignal.addEventListener("abort", () => controller.abort(outerSignal.reason), { once: true });
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
return Deferred.fromPromise(factory(controller.signal));
|
|
666
|
+
};
|
|
667
|
+
return { task, abort: () => controller.abort() };
|
|
668
|
+
};
|
|
648
669
|
})(Task || (Task = {}));
|
|
649
670
|
|
|
650
671
|
// src/Core/Resource.ts
|
|
@@ -739,12 +760,23 @@ var TaskMaybe;
|
|
|
739
760
|
})(TaskMaybe || (TaskMaybe = {}));
|
|
740
761
|
|
|
741
762
|
// src/Core/TaskResult.ts
|
|
763
|
+
var cancellableWait = (ms, signal) => {
|
|
764
|
+
if (ms <= 0) return Promise.resolve();
|
|
765
|
+
if (!signal) return new Promise((r) => setTimeout(r, ms));
|
|
766
|
+
return new Promise((resolve) => {
|
|
767
|
+
const id = setTimeout(resolve, ms);
|
|
768
|
+
signal.addEventListener("abort", () => {
|
|
769
|
+
clearTimeout(id);
|
|
770
|
+
resolve();
|
|
771
|
+
}, { once: true });
|
|
772
|
+
});
|
|
773
|
+
};
|
|
742
774
|
var TaskResult;
|
|
743
775
|
((TaskResult2) => {
|
|
744
776
|
TaskResult2.ok = (value) => Task.resolve(Result.ok(value));
|
|
745
777
|
TaskResult2.err = (error) => Task.resolve(Result.err(error));
|
|
746
778
|
TaskResult2.tryCatch = (f, onError) => Task.from(
|
|
747
|
-
() => f().then(Result.ok).catch((e) => Result.err(onError(e)))
|
|
779
|
+
(signal) => f(signal).then(Result.ok).catch((e) => Result.err(onError(e)))
|
|
748
780
|
);
|
|
749
781
|
TaskResult2.map = (f) => (data) => Task.map(Result.map(f))(data);
|
|
750
782
|
TaskResult2.mapError = (f) => (data) => Task.map(Result.mapError(f))(data);
|
|
@@ -758,43 +790,75 @@ var TaskResult;
|
|
|
758
790
|
)(data);
|
|
759
791
|
TaskResult2.getOrElse = (defaultValue) => (data) => Task.map(Result.getOrElse(defaultValue))(data);
|
|
760
792
|
TaskResult2.tap = (f) => (data) => Task.map(Result.tap(f))(data);
|
|
761
|
-
TaskResult2.retry = (options) => (data) => Task.from(() => {
|
|
793
|
+
TaskResult2.retry = (options) => (data) => Task.from((signal) => {
|
|
762
794
|
const { attempts, backoff, when: shouldRetry } = options;
|
|
763
795
|
const getDelay = (n) => backoff === void 0 ? 0 : typeof backoff === "function" ? backoff(n) : backoff;
|
|
764
|
-
const run = (left) => Deferred.toPromise(data()).then((result) => {
|
|
796
|
+
const run = (left) => Deferred.toPromise(data(signal)).then((result) => {
|
|
765
797
|
if (Result.isOk(result)) return result;
|
|
766
798
|
if (left <= 1) return result;
|
|
767
799
|
if (shouldRetry !== void 0 && !shouldRetry(result.error)) {
|
|
768
800
|
return result;
|
|
769
801
|
}
|
|
802
|
+
if (signal?.aborted) return result;
|
|
770
803
|
const ms = getDelay(attempts - left + 1);
|
|
771
|
-
return (ms
|
|
804
|
+
return cancellableWait(ms, signal).then(() => {
|
|
805
|
+
if (signal?.aborted) return result;
|
|
806
|
+
return run(left - 1);
|
|
807
|
+
});
|
|
772
808
|
});
|
|
773
809
|
return run(attempts);
|
|
774
810
|
});
|
|
775
|
-
TaskResult2.pollUntil = (options) => (task) => Task.from(() => {
|
|
811
|
+
TaskResult2.pollUntil = (options) => (task) => Task.from((signal) => {
|
|
776
812
|
const { when: predicate, delay } = options;
|
|
777
813
|
const getDelay = (attempt) => delay === void 0 ? 0 : typeof delay === "function" ? delay(attempt) : delay;
|
|
778
|
-
const run = (attempt) => Deferred.toPromise(task()).then((result) => {
|
|
814
|
+
const run = (attempt) => Deferred.toPromise(task(signal)).then((result) => {
|
|
779
815
|
if (Result.isErr(result)) return result;
|
|
780
816
|
if (predicate(result.value)) return result;
|
|
817
|
+
if (signal?.aborted) return result;
|
|
781
818
|
const ms = getDelay(attempt);
|
|
782
|
-
return (ms
|
|
819
|
+
return cancellableWait(ms, signal).then(() => {
|
|
820
|
+
if (signal?.aborted) return result;
|
|
821
|
+
return run(attempt + 1);
|
|
822
|
+
});
|
|
783
823
|
});
|
|
784
824
|
return run(1);
|
|
785
825
|
});
|
|
786
|
-
TaskResult2.timeout = (ms, onTimeout) => (data) => Task.from(() => {
|
|
826
|
+
TaskResult2.timeout = (ms, onTimeout) => (data) => Task.from((outerSignal) => {
|
|
827
|
+
const controller = new AbortController();
|
|
828
|
+
const onOuterAbort = () => controller.abort();
|
|
829
|
+
outerSignal?.addEventListener("abort", onOuterAbort, { once: true });
|
|
787
830
|
let timerId;
|
|
788
831
|
return Promise.race([
|
|
789
|
-
Deferred.toPromise(data()).then((result) => {
|
|
832
|
+
Deferred.toPromise(data(controller.signal)).then((result) => {
|
|
790
833
|
clearTimeout(timerId);
|
|
834
|
+
outerSignal?.removeEventListener("abort", onOuterAbort);
|
|
791
835
|
return result;
|
|
792
836
|
}),
|
|
793
837
|
new Promise((resolve) => {
|
|
794
|
-
timerId = setTimeout(() =>
|
|
838
|
+
timerId = setTimeout(() => {
|
|
839
|
+
controller.abort();
|
|
840
|
+
outerSignal?.removeEventListener("abort", onOuterAbort);
|
|
841
|
+
resolve(Result.err(onTimeout()));
|
|
842
|
+
}, ms);
|
|
795
843
|
})
|
|
796
844
|
]);
|
|
797
845
|
});
|
|
846
|
+
TaskResult2.abortable = (factory, onError) => {
|
|
847
|
+
const controller = new AbortController();
|
|
848
|
+
const task = (outerSignal) => {
|
|
849
|
+
if (outerSignal) {
|
|
850
|
+
if (outerSignal.aborted) {
|
|
851
|
+
controller.abort(outerSignal.reason);
|
|
852
|
+
} else {
|
|
853
|
+
outerSignal.addEventListener("abort", () => controller.abort(outerSignal.reason), { once: true });
|
|
854
|
+
}
|
|
855
|
+
}
|
|
856
|
+
return Deferred.fromPromise(
|
|
857
|
+
factory(controller.signal).then(Result.ok).catch((e) => Result.err(onError(e)))
|
|
858
|
+
);
|
|
859
|
+
};
|
|
860
|
+
return { task, abort: () => controller.abort() };
|
|
861
|
+
};
|
|
798
862
|
})(TaskResult || (TaskResult = {}));
|
|
799
863
|
|
|
800
864
|
// src/Core/Validation.ts
|
package/dist/index.mjs
CHANGED
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
uncurry,
|
|
27
27
|
uncurry3,
|
|
28
28
|
uncurry4
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-NRF2FVPZ.mjs";
|
|
30
30
|
import {
|
|
31
31
|
Lens,
|
|
32
32
|
Logged,
|
|
@@ -43,7 +43,7 @@ import {
|
|
|
43
43
|
These,
|
|
44
44
|
Tuple,
|
|
45
45
|
Validation
|
|
46
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-7COGDULU.mjs";
|
|
47
47
|
import {
|
|
48
48
|
Arr,
|
|
49
49
|
Dict,
|
|
@@ -51,13 +51,13 @@ import {
|
|
|
51
51
|
Rec,
|
|
52
52
|
Str,
|
|
53
53
|
Uniq
|
|
54
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-AC7RQXWC.mjs";
|
|
55
55
|
import {
|
|
56
56
|
Deferred,
|
|
57
57
|
Maybe,
|
|
58
58
|
Result,
|
|
59
59
|
Task
|
|
60
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-RUDOUVQR.mjs";
|
|
61
61
|
import {
|
|
62
62
|
Brand
|
|
63
63
|
} from "./chunk-BYWKZLHM.mjs";
|
package/dist/utils.d.mts
CHANGED
package/dist/utils.d.ts
CHANGED
package/dist/utils.js
CHANGED
|
@@ -100,77 +100,99 @@ var Maybe;
|
|
|
100
100
|
})(Maybe || (Maybe = {}));
|
|
101
101
|
|
|
102
102
|
// src/Core/Task.ts
|
|
103
|
-
var toPromise = (task) => Deferred.toPromise(task());
|
|
103
|
+
var toPromise = (task, signal) => Deferred.toPromise(task(signal));
|
|
104
104
|
var Task;
|
|
105
105
|
((Task2) => {
|
|
106
106
|
Task2.resolve = (value) => () => Deferred.fromPromise(Promise.resolve(value));
|
|
107
|
-
Task2.from = (f) => () => Deferred.fromPromise(f());
|
|
108
|
-
Task2.map = (f) => (data) => (0, Task2.from)(() => toPromise(data).then(f));
|
|
109
|
-
Task2.chain = (f) => (data) => (0, Task2.from)(() => toPromise(data).then((a) => toPromise(f(a))));
|
|
107
|
+
Task2.from = (f) => (signal) => Deferred.fromPromise(f(signal));
|
|
108
|
+
Task2.map = (f) => (data) => (0, Task2.from)((signal) => toPromise(data, signal).then(f));
|
|
109
|
+
Task2.chain = (f) => (data) => (0, Task2.from)((signal) => toPromise(data, signal).then((a) => toPromise(f(a), signal)));
|
|
110
110
|
Task2.ap = (arg) => (data) => (0, Task2.from)(
|
|
111
|
-
() => Promise.all([
|
|
112
|
-
toPromise(data),
|
|
113
|
-
toPromise(arg)
|
|
111
|
+
(signal) => Promise.all([
|
|
112
|
+
toPromise(data, signal),
|
|
113
|
+
toPromise(arg, signal)
|
|
114
114
|
]).then(([f, a]) => f(a))
|
|
115
115
|
);
|
|
116
116
|
Task2.tap = (f) => (data) => (0, Task2.from)(
|
|
117
|
-
() => toPromise(data).then((a) => {
|
|
117
|
+
(signal) => toPromise(data, signal).then((a) => {
|
|
118
118
|
f(a);
|
|
119
119
|
return a;
|
|
120
120
|
})
|
|
121
121
|
);
|
|
122
122
|
Task2.all = (tasks) => (0, Task2.from)(
|
|
123
|
-
() => Promise.all(tasks.map((t) => toPromise(t)))
|
|
123
|
+
(signal) => Promise.all(tasks.map((t) => toPromise(t, signal)))
|
|
124
124
|
);
|
|
125
125
|
Task2.delay = (ms) => (data) => (0, Task2.from)(
|
|
126
|
-
() => new Promise(
|
|
126
|
+
(signal) => new Promise(
|
|
127
127
|
(resolve2) => setTimeout(
|
|
128
|
-
() => toPromise(data).then(resolve2),
|
|
128
|
+
() => toPromise(data, signal).then(resolve2),
|
|
129
129
|
ms
|
|
130
130
|
)
|
|
131
131
|
)
|
|
132
132
|
);
|
|
133
|
-
Task2.repeat = (options) => (task) => (0, Task2.from)(() => {
|
|
133
|
+
Task2.repeat = (options) => (task) => (0, Task2.from)((signal) => {
|
|
134
134
|
const { times, delay: ms } = options;
|
|
135
135
|
if (times <= 0) return Promise.resolve([]);
|
|
136
136
|
const results = [];
|
|
137
137
|
const wait = () => ms !== void 0 && ms > 0 ? new Promise((r) => setTimeout(r, ms)) : Promise.resolve();
|
|
138
|
-
const run = (left) => toPromise(task).then((a) => {
|
|
138
|
+
const run = (left) => toPromise(task, signal).then((a) => {
|
|
139
139
|
results.push(a);
|
|
140
140
|
if (left <= 1) return results;
|
|
141
141
|
return wait().then(() => run(left - 1));
|
|
142
142
|
});
|
|
143
143
|
return run(times);
|
|
144
144
|
});
|
|
145
|
-
Task2.repeatUntil = (options) => (task) => (0, Task2.from)(() => {
|
|
145
|
+
Task2.repeatUntil = (options) => (task) => (0, Task2.from)((signal) => {
|
|
146
146
|
const { when: predicate, delay: ms } = options;
|
|
147
147
|
const wait = () => ms !== void 0 && ms > 0 ? new Promise((r) => setTimeout(r, ms)) : Promise.resolve();
|
|
148
|
-
const run = () => toPromise(task).then((a) => {
|
|
148
|
+
const run = () => toPromise(task, signal).then((a) => {
|
|
149
149
|
if (predicate(a)) return a;
|
|
150
150
|
return wait().then(run);
|
|
151
151
|
});
|
|
152
152
|
return run();
|
|
153
153
|
});
|
|
154
|
-
Task2.race = (tasks) => (0, Task2.from)(() => Promise.race(tasks.map(toPromise)));
|
|
155
|
-
Task2.sequential = (tasks) => (0, Task2.from)(async () => {
|
|
154
|
+
Task2.race = (tasks) => (0, Task2.from)((signal) => Promise.race(tasks.map((t) => toPromise(t, signal))));
|
|
155
|
+
Task2.sequential = (tasks) => (0, Task2.from)(async (signal) => {
|
|
156
156
|
const results = [];
|
|
157
157
|
for (const task of tasks) {
|
|
158
|
-
results.push(await toPromise(task));
|
|
158
|
+
results.push(await toPromise(task, signal));
|
|
159
159
|
}
|
|
160
160
|
return results;
|
|
161
161
|
});
|
|
162
|
-
Task2.timeout = (ms, onTimeout) => (task) => (0, Task2.from)(() => {
|
|
162
|
+
Task2.timeout = (ms, onTimeout) => (task) => (0, Task2.from)((outerSignal) => {
|
|
163
|
+
const controller = new AbortController();
|
|
164
|
+
const onOuterAbort = () => controller.abort();
|
|
165
|
+
outerSignal?.addEventListener("abort", onOuterAbort, { once: true });
|
|
163
166
|
let timerId;
|
|
164
167
|
return Promise.race([
|
|
165
|
-
toPromise(task).then((a) => {
|
|
168
|
+
toPromise(task, controller.signal).then((a) => {
|
|
166
169
|
clearTimeout(timerId);
|
|
170
|
+
outerSignal?.removeEventListener("abort", onOuterAbort);
|
|
167
171
|
return Result.ok(a);
|
|
168
172
|
}),
|
|
169
173
|
new Promise((resolve2) => {
|
|
170
|
-
timerId = setTimeout(() =>
|
|
174
|
+
timerId = setTimeout(() => {
|
|
175
|
+
controller.abort();
|
|
176
|
+
outerSignal?.removeEventListener("abort", onOuterAbort);
|
|
177
|
+
resolve2(Result.err(onTimeout()));
|
|
178
|
+
}, ms);
|
|
171
179
|
})
|
|
172
180
|
]);
|
|
173
181
|
});
|
|
182
|
+
Task2.abortable = (factory) => {
|
|
183
|
+
const controller = new AbortController();
|
|
184
|
+
const task = (outerSignal) => {
|
|
185
|
+
if (outerSignal) {
|
|
186
|
+
if (outerSignal.aborted) {
|
|
187
|
+
controller.abort(outerSignal.reason);
|
|
188
|
+
} else {
|
|
189
|
+
outerSignal.addEventListener("abort", () => controller.abort(outerSignal.reason), { once: true });
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return Deferred.fromPromise(factory(controller.signal));
|
|
193
|
+
};
|
|
194
|
+
return { task, abort: () => controller.abort() };
|
|
195
|
+
};
|
|
174
196
|
})(Task || (Task = {}));
|
|
175
197
|
|
|
176
198
|
// src/Types/NonEmptyList.ts
|
package/dist/utils.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nlozgachev/pipelined",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.20.0",
|
|
4
|
+
"description": "Opinionated functional abstractions for TypeScript",
|
|
5
5
|
"license": "BSD-3-Clause",
|
|
6
6
|
"homepage": "https://pipelined.lozgachev.dev",
|
|
7
7
|
"repository": {
|