@fncts/io 0.0.24 → 0.0.26
Sign up to get free protection for your applications and to get access to all the features.
- package/FiberRef/api.d.ts +0 -63
- package/FiberRef/operations.d.ts +64 -0
- package/FiberRef.d.ts +1 -0
- package/FiberRefs/api.d.ts +6 -1
- package/FiberRefs.d.ts +0 -1
- package/IO/api/daemonChildren.d.ts +6 -0
- package/IO/api/disconnect.d.ts +17 -0
- package/IO/api/fork.d.ts +4 -0
- package/IO/api/forkDaemon.d.ts +10 -0
- package/IO/api/interrupt.d.ts +1 -20
- package/IO/api/race.d.ts +7 -1
- package/IO/api/raceWith.d.ts +17 -0
- package/IO/api/transplant.d.ts +13 -0
- package/IO/api/whenFiberRef.d.ts +10 -0
- package/IO/api/whenRef.d.ts +10 -0
- package/IO/api/zipConcurrent.d.ts +5 -4
- package/IO/api.d.ts +12 -1
- package/IO.d.ts +7 -1
- package/RefSubject/Atomic.d.ts +1 -1
- package/_cjs/Cached/api.cjs +1 -1
- package/_cjs/Channel/api/mergeAllWith.cjs +1 -1
- package/_cjs/Channel/api/mergeWith.cjs +17 -16
- package/_cjs/Channel/api/mergeWith.cjs.map +1 -1
- package/_cjs/Channel/api.cjs +1 -3
- package/_cjs/Channel/api.cjs.map +1 -1
- package/_cjs/Fiber/FiberRuntime.cjs +16 -17
- package/_cjs/Fiber/FiberRuntime.cjs.map +1 -1
- package/_cjs/FiberRef/api/locallyScoped.cjs +1 -1
- package/_cjs/FiberRef/api/locallyScopedWith.cjs +1 -1
- package/_cjs/FiberRef/api.cjs +0 -124
- package/_cjs/FiberRef/api.cjs.map +1 -1
- package/_cjs/FiberRef/constructors.cjs +1 -1
- package/_cjs/FiberRef/operations.cjs +130 -0
- package/_cjs/FiberRef/operations.cjs.map +1 -0
- package/_cjs/FiberRef.cjs +11 -0
- package/_cjs/FiberRef.cjs.map +1 -1
- package/_cjs/FiberRefs/api.cjs +90 -0
- package/_cjs/FiberRefs/api.cjs.map +1 -1
- package/_cjs/FiberRefs.cjs +0 -11
- package/_cjs/FiberRefs.cjs.map +1 -1
- package/_cjs/Future/api.cjs +1 -3
- package/_cjs/Future/api.cjs.map +1 -1
- package/_cjs/IO/api/asyncIO.cjs +1 -3
- package/_cjs/IO/api/asyncIO.cjs.map +1 -1
- package/_cjs/IO/api/bracketExit.cjs +1 -3
- package/_cjs/IO/api/bracketExit.cjs.map +1 -1
- package/_cjs/IO/api/clockWith.cjs +1 -1
- package/_cjs/IO/api/concurrency.cjs +1 -1
- package/_cjs/IO/api/consoleWith.cjs +1 -1
- package/_cjs/IO/api/daemonChildren.cjs +19 -0
- package/_cjs/IO/api/daemonChildren.cjs.map +1 -0
- package/_cjs/IO/api/disconnect.cjs +31 -0
- package/_cjs/IO/api/disconnect.cjs.map +1 -0
- package/_cjs/IO/api/environment.cjs +1 -1
- package/_cjs/IO/api/foreachConcurrent.cjs +19 -20
- package/_cjs/IO/api/foreachConcurrent.cjs.map +1 -1
- package/_cjs/IO/api/fork.cjs +8 -3
- package/_cjs/IO/api/fork.cjs.map +1 -1
- package/_cjs/IO/api/forkDaemon.cjs +21 -0
- package/_cjs/IO/api/forkDaemon.cjs.map +1 -0
- package/_cjs/IO/api/forkIn.cjs +2 -4
- package/_cjs/IO/api/forkIn.cjs.map +1 -1
- package/_cjs/IO/api/forkScoped.cjs +2 -4
- package/_cjs/IO/api/forkScoped.cjs.map +1 -1
- package/_cjs/IO/api/fulfill.cjs +1 -3
- package/_cjs/IO/api/fulfill.cjs.map +1 -1
- package/_cjs/IO/api/interrupt.cjs +8 -59
- package/_cjs/IO/api/interrupt.cjs.map +1 -1
- package/_cjs/IO/api/race.cjs +24 -12
- package/_cjs/IO/api/race.cjs.map +1 -1
- package/_cjs/IO/api/{core-scope.cjs → raceWith.cjs} +15 -56
- package/_cjs/IO/api/raceWith.cjs.map +1 -0
- package/_cjs/IO/api/randomWith.cjs +1 -1
- package/_cjs/IO/api/supervised.cjs +1 -1
- package/_cjs/IO/api/transplant.cjs +31 -0
- package/_cjs/IO/api/transplant.cjs.map +1 -0
- package/_cjs/IO/api/whenFiberRef.cjs +20 -0
- package/_cjs/IO/api/whenFiberRef.cjs.map +1 -0
- package/_cjs/IO/api/whenRef.cjs +21 -0
- package/_cjs/IO/api/whenRef.cjs.map +1 -0
- package/_cjs/IO/api/zipConcurrent.cjs +25 -19
- package/_cjs/IO/api/zipConcurrent.cjs.map +1 -1
- package/_cjs/IO/api.cjs +21 -5
- package/_cjs/IO/api.cjs.map +1 -1
- package/_cjs/IO.cjs +70 -4
- package/_cjs/IO.cjs.map +1 -1
- package/_cjs/Layer/MemoMap.cjs +1 -3
- package/_cjs/Layer/MemoMap.cjs.map +1 -1
- package/_cjs/RefSubject/Atomic.cjs +2 -2
- package/_cjs/RefSubject/Atomic.cjs.map +1 -1
- package/_cjs/Reloadable/constructors.cjs +1 -1
- package/_cjs/Reloadable/definition.cjs +1 -1
- package/_cjs/STM/api/atomically.cjs +2 -4
- package/_cjs/STM/api/atomically.cjs.map +1 -1
- package/_cjs/ScopedRef/api.cjs +2 -6
- package/_cjs/ScopedRef/api.cjs.map +1 -1
- package/_cjs/State/api.cjs +1 -1
- package/_cjs/Stream/api.cjs +137 -135
- package/_cjs/Stream/api.cjs.map +1 -1
- package/_cjs/TReentrantLock/api.cjs +2 -6
- package/_cjs/TReentrantLock/api.cjs.map +1 -1
- package/_cjs/TSemaphore/api.cjs +1 -3
- package/_cjs/TSemaphore/api.cjs.map +1 -1
- package/_mjs/Cached/api.mjs +1 -1
- package/_mjs/Channel/api/mergeAllWith.mjs +1 -1
- package/_mjs/Channel/api/mergeWith.mjs +17 -16
- package/_mjs/Channel/api/mergeWith.mjs.map +1 -1
- package/_mjs/Channel/api.mjs +1 -3
- package/_mjs/Channel/api.mjs.map +1 -1
- package/_mjs/Fiber/FiberRuntime.mjs +16 -17
- package/_mjs/Fiber/FiberRuntime.mjs.map +1 -1
- package/_mjs/FiberRef/api/locallyScoped.mjs +1 -1
- package/_mjs/FiberRef/api/locallyScopedWith.mjs +1 -1
- package/_mjs/FiberRef/api.mjs +0 -107
- package/_mjs/FiberRef/api.mjs.map +1 -1
- package/_mjs/FiberRef/constructors.mjs +1 -1
- package/_mjs/FiberRef/operations.mjs +109 -0
- package/_mjs/FiberRef/operations.mjs.map +1 -0
- package/_mjs/FiberRef.mjs +1 -0
- package/_mjs/FiberRef.mjs.map +1 -1
- package/_mjs/FiberRefs/api.mjs +89 -0
- package/_mjs/FiberRefs/api.mjs.map +1 -1
- package/_mjs/FiberRefs.mjs +0 -1
- package/_mjs/FiberRefs.mjs.map +1 -1
- package/_mjs/Future/api.mjs +1 -3
- package/_mjs/Future/api.mjs.map +1 -1
- package/_mjs/IO/api/asyncIO.mjs +1 -3
- package/_mjs/IO/api/asyncIO.mjs.map +1 -1
- package/_mjs/IO/api/bracketExit.mjs +1 -3
- package/_mjs/IO/api/bracketExit.mjs.map +1 -1
- package/_mjs/IO/api/clockWith.mjs +1 -1
- package/_mjs/IO/api/concurrency.mjs +1 -1
- package/_mjs/IO/api/consoleWith.mjs +1 -1
- package/_mjs/IO/api/daemonChildren.mjs +11 -0
- package/_mjs/IO/api/daemonChildren.mjs.map +1 -0
- package/_mjs/IO/api/disconnect.mjs +23 -0
- package/_mjs/IO/api/disconnect.mjs.map +1 -0
- package/_mjs/IO/api/environment.mjs +1 -1
- package/_mjs/IO/api/foreachConcurrent.mjs +19 -20
- package/_mjs/IO/api/foreachConcurrent.mjs.map +1 -1
- package/_mjs/IO/api/fork.mjs +6 -2
- package/_mjs/IO/api/fork.mjs.map +1 -1
- package/_mjs/IO/api/forkDaemon.mjs +13 -0
- package/_mjs/IO/api/forkDaemon.mjs.map +1 -0
- package/_mjs/IO/api/forkIn.mjs +2 -4
- package/_mjs/IO/api/forkIn.mjs.map +1 -1
- package/_mjs/IO/api/forkScoped.mjs +2 -4
- package/_mjs/IO/api/forkScoped.mjs.map +1 -1
- package/_mjs/IO/api/fulfill.mjs +1 -3
- package/_mjs/IO/api/fulfill.mjs.map +1 -1
- package/_mjs/IO/api/interrupt.mjs +6 -55
- package/_mjs/IO/api/interrupt.mjs.map +1 -1
- package/_mjs/IO/api/race.mjs +22 -12
- package/_mjs/IO/api/race.mjs.map +1 -1
- package/_mjs/IO/api/raceWith.mjs +59 -0
- package/_mjs/IO/api/raceWith.mjs.map +1 -0
- package/_mjs/IO/api/randomWith.mjs +1 -1
- package/_mjs/IO/api/supervised.mjs +1 -1
- package/_mjs/IO/api/transplant.mjs +23 -0
- package/_mjs/IO/api/transplant.mjs.map +1 -0
- package/_mjs/IO/api/whenFiberRef.mjs +12 -0
- package/_mjs/IO/api/whenFiberRef.mjs.map +1 -0
- package/_mjs/IO/api/whenRef.mjs +13 -0
- package/_mjs/IO/api/whenRef.mjs.map +1 -0
- package/_mjs/IO/api/zipConcurrent.mjs +23 -17
- package/_mjs/IO/api/zipConcurrent.mjs.map +1 -1
- package/_mjs/IO/api.mjs +16 -3
- package/_mjs/IO/api.mjs.map +1 -1
- package/_mjs/IO.mjs +7 -1
- package/_mjs/IO.mjs.map +1 -1
- package/_mjs/Layer/MemoMap.mjs +1 -3
- package/_mjs/Layer/MemoMap.mjs.map +1 -1
- package/_mjs/RefSubject/Atomic.mjs +1 -1
- package/_mjs/RefSubject/Atomic.mjs.map +1 -1
- package/_mjs/Reloadable/constructors.mjs +1 -1
- package/_mjs/Reloadable/definition.mjs +1 -1
- package/_mjs/STM/api/atomically.mjs +2 -4
- package/_mjs/STM/api/atomically.mjs.map +1 -1
- package/_mjs/ScopedRef/api.mjs +2 -6
- package/_mjs/ScopedRef/api.mjs.map +1 -1
- package/_mjs/State/api.mjs +1 -1
- package/_mjs/Stream/api.mjs +137 -135
- package/_mjs/Stream/api.mjs.map +1 -1
- package/_mjs/TReentrantLock/api.mjs +2 -6
- package/_mjs/TReentrantLock/api.mjs.map +1 -1
- package/_mjs/TSemaphore/api.mjs +1 -3
- package/_mjs/TSemaphore/api.mjs.map +1 -1
- package/_src/Channel/api.ts +1 -1
- package/_src/FiberRef/api.ts +0 -114
- package/_src/FiberRef/operations.ts +115 -0
- package/_src/FiberRef.ts +1 -0
- package/_src/FiberRefs/api.ts +72 -0
- package/_src/FiberRefs.ts +0 -1
- package/_src/Future/api.ts +1 -1
- package/_src/IO/api/asyncIO.ts +1 -1
- package/_src/IO/api/bracketExit.ts +1 -1
- package/_src/IO/api/daemonChildren.ts +6 -0
- package/_src/IO/api/disconnect.ts +25 -0
- package/_src/IO/api/foreachConcurrent.ts +1 -1
- package/_src/IO/api/fork.ts +3 -0
- package/_src/IO/api/forkDaemon.ts +12 -0
- package/_src/IO/api/forkIn.ts +1 -1
- package/_src/IO/api/forkScoped.ts +1 -3
- package/_src/IO/api/fulfill.ts +1 -1
- package/_src/IO/api/interrupt.ts +5 -56
- package/_src/IO/api/race.ts +18 -8
- package/_src/IO/api/{core-scope.ts → raceWith.ts} +2 -44
- package/_src/IO/api/transplant.ts +19 -0
- package/_src/IO/api/whenFiberRef.ts +9 -0
- package/_src/IO/api/whenRef.ts +9 -0
- package/_src/IO/api/zipConcurrent.ts +41 -43
- package/_src/IO/api.ts +18 -2
- package/_src/IO.ts +7 -1
- package/_src/Layer/MemoMap.ts +1 -1
- package/_src/RefSubject/Atomic.ts +1 -1
- package/_src/STM/api/atomically.ts +1 -1
- package/_src/ScopedRef/api.ts +2 -2
- package/_src/TReentrantLock/api.ts +2 -2
- package/_src/TSemaphore/api.ts +1 -1
- package/package.json +2 -2
- package/FiberRefs/join.d.ts +0 -9
- package/IO/api/core-scope.d.ts +0 -43
- package/_cjs/FiberRefs/join.cjs +0 -104
- package/_cjs/FiberRefs/join.cjs.map +0 -1
- package/_cjs/IO/api/core-scope.cjs.map +0 -1
- package/_mjs/FiberRefs/join.mjs +0 -96
- package/_mjs/FiberRefs/join.mjs.map +0 -1
- package/_mjs/IO/api/core-scope.mjs +0 -97
- package/_mjs/IO/api/core-scope.mjs.map +0 -1
- package/_src/FiberRefs/join.ts +0 -71
@@ -5,24 +5,14 @@ import * as tsplus_module_3 from "@fncts/io/RuntimeFlags/Patch";
|
|
5
5
|
import * as tsplus_module_4 from "@fncts/io/RuntimeFlags/RuntimeFlags";
|
6
6
|
import * as tsplus_module_5 from "@fncts/base/data/Exit/api";
|
7
7
|
import * as tsplus_module_6 from "@fncts/base/data/Exit/constructors";
|
8
|
-
import * as tsplus_module_7 from "@fncts/io/Fiber/api/join";
|
9
|
-
import * as tsplus_module_8 from "@fncts/io/IO/api/core-scope";
|
10
8
|
export const interruptAs = interruptAs_1;
|
11
9
|
export const interruptible = interruptible_1;
|
12
10
|
export const uninterruptible = uninterruptible_1;
|
13
11
|
export const uninterruptibleMask = uninterruptibleMask_1;
|
14
|
-
export const onInterrupt = onInterrupt_1;
|
15
12
|
export const onExit = onExit_1;
|
16
|
-
export const disconnect = disconnect_1;
|
17
13
|
import { Dynamic, Interruptible, Uninterruptible } from "@fncts/io/IO/definition";
|
18
|
-
const RestoreInterruptible =
|
19
|
-
|
20
|
-
force: (io, __tsplusTrace) => interruptible_1(io, fileName_1 + ":12:35")
|
21
|
-
};
|
22
|
-
const RestoreUninterruptible = {
|
23
|
-
restore: (io, __tsplusTrace) => uninterruptible_1(io, fileName_1 + ":16:37"),
|
24
|
-
force: (io, __tsplusTrace) => interruptible_1(disconnect_1(uninterruptible_1(io, fileName_1 + ":17:35"), fileName_1 + ":17:51"), fileName_1 + ":17:62")
|
25
|
-
};
|
14
|
+
const RestoreInterruptible = (io, __tsplusTrace) => interruptible_1(io, fileName_1 + ":7:81");
|
15
|
+
const RestoreUninterruptible = (io, __tsplusTrace) => uninterruptible_1(io, fileName_1 + ":9:83");
|
26
16
|
/**
|
27
17
|
* Returns an effect that is interrupted as if by the specified fiber.
|
28
18
|
*
|
@@ -37,22 +27,7 @@ function interruptAs_1(fiberId, __tsplusTrace) {
|
|
37
27
|
*
|
38
28
|
* @tsplus static fncts.io.IOOps interrupt
|
39
29
|
*/
|
40
|
-
export const interrupt = /*#__PURE__*/tsplus_module_2.flatMap(interruptAs_1, fileName_1 + ":
|
41
|
-
// /**
|
42
|
-
// * Switches the interrupt status for this effect. If `true` is used, then the
|
43
|
-
// * effect becomes interruptible (the default), while if `false` is used, then
|
44
|
-
// * the effect becomes uninterruptible. These changes are compositional, so
|
45
|
-
// * they only affect regions of the effect.
|
46
|
-
// *
|
47
|
-
// * @tsplus fluent fncts.io.IO setInterruptStatus
|
48
|
-
// */
|
49
|
-
// export function setInterruptStatus_<R, E, A>(
|
50
|
-
// self: IO<R, E, A>,
|
51
|
-
// flag: InterruptStatus,
|
52
|
-
// __tsplusTrace?: string,
|
53
|
-
// ): IO<R, E, A> {
|
54
|
-
// return new SetInterrupt(self, flag, __tsplusTrace);
|
55
|
-
// }
|
30
|
+
export const interrupt = /*#__PURE__*/tsplus_module_2.flatMap(interruptAs_1, fileName_1 + ":26:69")(tsplus_module_2.fiberId);
|
56
31
|
/**
|
57
32
|
* Returns a new effect that performs the same operations as this effect, but
|
58
33
|
* interruptibly, even if composed inside of an uninterruptible region.
|
@@ -99,9 +74,7 @@ function uninterruptibleMask_1(f) {
|
|
99
74
|
*/
|
100
75
|
export function ensuring(finalizer, __tsplusTrace) {
|
101
76
|
return self => {
|
102
|
-
return uninterruptibleMask_1((
|
103
|
-
restore
|
104
|
-
}) => tsplus_module_2.matchCauseIO(cause1 => tsplus_module_2.matchCauseIO(cause2 => tsplus_module_2.failCauseNow(tsplus_module_1.then(cause1, cause2), __tsplusTrace), () => tsplus_module_2.failCauseNow(cause1, __tsplusTrace), __tsplusTrace)(finalizer), a => tsplus_module_2.map(() => a, __tsplusTrace)(finalizer), __tsplusTrace)(restore(self, __tsplusTrace)));
|
77
|
+
return uninterruptibleMask_1(restore => tsplus_module_2.matchCauseIO(cause1 => tsplus_module_2.matchCauseIO(cause2 => tsplus_module_2.failCauseNow(tsplus_module_1.then(cause1, cause2), __tsplusTrace), () => tsplus_module_2.failCauseNow(cause1, __tsplusTrace), __tsplusTrace)(finalizer), a => tsplus_module_2.map(() => a, __tsplusTrace)(finalizer), __tsplusTrace)(restore(self, __tsplusTrace)));
|
105
78
|
};
|
106
79
|
}
|
107
80
|
/**
|
@@ -120,7 +93,7 @@ export function interruptibleMask(k, __tsplusTrace) {
|
|
120
93
|
*
|
121
94
|
* @tsplus pipeable fncts.io.IO onInterrupt
|
122
95
|
*/
|
123
|
-
function
|
96
|
+
export function onInterrupt(cleanup, __tsplusTrace) {
|
124
97
|
return ma => {
|
125
98
|
return onExit_1(exit => tsplus_module_5.match(cause => tsplus_module_1.isInterruptedOnly(cause) ? cleanup() : tsplus_module_2.unit, () => tsplus_module_2.unit)(exit), __tsplusTrace)(ma);
|
126
99
|
};
|
@@ -141,9 +114,7 @@ export function onInterruptWith(cleanup, __tsplusTrace) {
|
|
141
114
|
*/
|
142
115
|
function onExit_1(cleanup, __tsplusTrace) {
|
143
116
|
return self => {
|
144
|
-
return uninterruptibleMask_1(({
|
145
|
-
restore
|
146
|
-
}) => tsplus_module_2.matchCauseIO(failure1 => {
|
117
|
+
return uninterruptibleMask_1(restore => tsplus_module_2.matchCauseIO(failure1 => {
|
147
118
|
const result = tsplus_module_6.failCause(failure1);
|
148
119
|
return tsplus_module_2.matchCauseIO(failure2 => tsplus_module_2.failCauseNow(tsplus_module_1.then(failure1, failure2), __tsplusTrace), () => tsplus_module_2.fromExitNow(result, __tsplusTrace), __tsplusTrace)(cleanup(result));
|
149
120
|
}, success => {
|
@@ -152,24 +123,4 @@ function onExit_1(cleanup, __tsplusTrace) {
|
|
152
123
|
}, __tsplusTrace)(restore(self, __tsplusTrace)));
|
153
124
|
};
|
154
125
|
}
|
155
|
-
/**
|
156
|
-
* Returns an IO whose interruption will be disconnected from the
|
157
|
-
* fiber's own interruption, being performed in the background without
|
158
|
-
* slowing down the fiber's interruption.
|
159
|
-
*
|
160
|
-
* This method is useful to create "fast interrupting" effects. For
|
161
|
-
* example, if you call this on a bracketed effect, then even if the
|
162
|
-
* effect is "stuck" in acquire or release, its interruption will return
|
163
|
-
* immediately, while the acquire / release are performed in the
|
164
|
-
* background.
|
165
|
-
*
|
166
|
-
* See timeout and race for other applications.
|
167
|
-
*
|
168
|
-
* @tsplus getter fncts.io.IO disconnect
|
169
|
-
*/
|
170
|
-
function disconnect_1(self, __tsplusTrace) {
|
171
|
-
return uninterruptibleMask_1(({
|
172
|
-
restore
|
173
|
-
}) => tsplus_module_2.flatMap(fiberId => tsplus_module_2.flatMap(fiber => onInterrupt_1(() => fiber.interruptAsFork(fiberId), __tsplusTrace)(restore(tsplus_module_7.join(fiber, __tsplusTrace), __tsplusTrace)), __tsplusTrace)(tsplus_module_8.forkDaemon(restore(self, __tsplusTrace), __tsplusTrace)), __tsplusTrace)(tsplus_module_2.fiberId));
|
174
|
-
}
|
175
126
|
//# sourceMappingURL=interrupt.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"interrupt.mjs","mappings":"
|
1
|
+
{"version":3,"file":"interrupt.mjs","mappings":"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","names":["interruptAs","interruptible","uninterruptible","uninterruptibleMask","onExit","Dynamic","Interruptible","Uninterruptible","RestoreInterruptible","io","__tsplusTrace","interruptible_1","RestoreUninterruptible","uninterruptible_1","fiberId","tsplus_module_2","tsplus_module_1","interrupt","self","f","tsplus_module_3","oldFlags","tsplus_module_4","ensuring","finalizer","uninterruptibleMask_1","restore","cause1","cause2","a","interruptibleMask","k","flag","isInterruptible","onInterrupt","cleanup","ma","onExit_1","exit","tsplus_module_5","cause","onInterruptWith","failure1","result","tsplus_module_6","failure2","success"],"sourceRoot":"","sources":["../../../_src/IO/api/interrupt.ts"],"sourcesContent":[null]}
|
package/_mjs/IO/api/race.mjs
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
const fileName_1 = "(@fncts/io) src/IO/api/race.ts";
|
2
|
-
import * as tsplus_module_1 from "@fncts/io/IO/api
|
3
|
-
import * as tsplus_module_2 from "@fncts/
|
4
|
-
import * as tsplus_module_3 from "@fncts/io/
|
5
|
-
import * as tsplus_module_4 from "@fncts/
|
6
|
-
import * as tsplus_module_5 from "@fncts/io/Fiber/api/
|
7
|
-
import * as tsplus_module_6 from "@fncts/
|
8
|
-
import * as tsplus_module_7 from "@fncts/
|
9
|
-
|
10
|
-
|
11
|
-
}
|
2
|
+
import * as tsplus_module_1 from "@fncts/io/IO/api";
|
3
|
+
import * as tsplus_module_2 from "@fncts/io/IO/api/disconnect";
|
4
|
+
import * as tsplus_module_3 from "@fncts/io/IO/api/interrupt";
|
5
|
+
import * as tsplus_module_4 from "@fncts/base/data/Cause/api";
|
6
|
+
import * as tsplus_module_5 from "@fncts/io/Fiber/api/join";
|
7
|
+
import * as tsplus_module_6 from "@fncts/io/Fiber/api/interruptAs";
|
8
|
+
import * as tsplus_module_7 from "@fncts/base/data/Exit/api";
|
9
|
+
import * as tsplus_module_8 from "@fncts/io/IO/api/raceWith";
|
10
|
+
export const raceAwait = raceAwait_1;
|
12
11
|
/**
|
13
12
|
* Returns an IO that races this effect with the specified effect,
|
14
13
|
* returning the first successful `A` from the faster side. If one effect
|
@@ -21,8 +20,19 @@ function maybeDisconnect(io, __tsplusTrace) {
|
|
21
20
|
* @tsplus pipeable fncts.io.IO race
|
22
21
|
*/
|
23
22
|
export function race(that) {
|
24
|
-
return
|
25
|
-
return
|
23
|
+
return self => {
|
24
|
+
return tsplus_module_1.checkInterruptible(status => raceAwait_1(disconnect(that, status, fileName_1 + ":14:91"))(disconnect(self, status, fileName_1 + ":14:56")), fileName_1 + ":14:33");
|
25
|
+
};
|
26
|
+
}
|
27
|
+
function disconnect(io, interruptStatus, __tsplusTrace) {
|
28
|
+
if (interruptStatus.isInterruptible) return tsplus_module_2.disconnect(io, __tsplusTrace);else return tsplus_module_3.interruptible(tsplus_module_2.disconnect(tsplus_module_3.uninterruptible(io, __tsplusTrace), __tsplusTrace), __tsplusTrace);
|
29
|
+
}
|
30
|
+
/**
|
31
|
+
* @tsplus pipeable fncts.io.IO raceAwait
|
32
|
+
*/
|
33
|
+
function raceAwait_1(that) {
|
34
|
+
return self => {
|
35
|
+
return tsplus_module_1.fiberIdWith(id => tsplus_module_8.raceWith(() => that, (exit, right) => tsplus_module_7.match(cause => tsplus_module_1.mapErrorCause(c => tsplus_module_4.both(cause, c), fileName_1 + ":33:48")(tsplus_module_5.join(right, fileName_1 + ":33:29")), a => tsplus_module_1.as(() => a, fileName_1 + ":34:44")(tsplus_module_6.interruptAs(right, id)))(exit), (exit, left) => tsplus_module_7.match(cause => tsplus_module_1.mapErrorCause(c => tsplus_module_4.both(cause, c), fileName_1 + ":38:47")(tsplus_module_5.join(left, fileName_1 + ":38:28")), a1 => tsplus_module_1.as(() => a1, fileName_1 + ":39:44")(tsplus_module_6.interruptAs(left, id)))(exit), fileName_1 + ":29:20")(self));
|
26
36
|
};
|
27
37
|
}
|
28
38
|
//# sourceMappingURL=race.mjs.map
|
package/_mjs/IO/api/race.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"race.mjs","mappings":"
|
1
|
+
{"version":3,"file":"race.mjs","mappings":";;;;;;;;;aAyBgBA,SAAS;AAzBzB;;;;;;;;;;;AAWA,OAAM,SAAUC,IAAI,CAAaC,IAAoB;EACnD,OAAiBC,IAAiB,IAAgC;IAChE,OAAOC,mCAAuBC,MAAM,IAAKC,YAAmCC,UAAU,CAACL,IAAI,EAAEG,MAAM,wBAAC,EAA3DE,UAAU,CAACJ,IAAI,EAAEE,MAAM,wBAAC,CAAoC,wBAAC;EACxG,CAAC;AACH;AAEA,SAASE,UAAU,CAAUC,EAAe,EAAEC,eAAgC,EAAEC,aAAsB;EACpG,IAAID,eAAe,CAACE,eAAe,EAAE,kCAAOH,EAAE,EADgCE,eACpB,KACrD,gGAAOF,EAAE,EAFgEE;AAGhF;AAEA;;;AAGA,qBAAsCR,IAAoB;EACxD,OAAiBC,IAAiB,IAAgC;IAChE,OAAOC,4BAAgBQ,EAAE,IACvBC,+BACEX,IAAI,EACJ,CAACY,IAAI,EAAEC,KAAK,KACVC,sBACGC,KAAK,IAAKb,8BAA0Bc,CAAC,IAAKC,qBAAWF,KAAK,EAAEC,CAAC,CAAC,8CAApDH,KAAK,yBAAgD,EAC/DK,CAAC,IAAKhB,yBAAyBgB,CAAC,yBAA1BC,iCAAK,EAAaT,EAAE,CAAC,CAAM,EAFpCE,IAAI,CAGH,EACH,CAACA,IAAI,EAAEQ,IAAI,KACTN,sBACGC,KAAK,IAAKb,8BAAyBc,CAAC,IAAKC,qBAAWF,KAAK,EAAEC,CAAC,CAAC,8CAAnDI,IAAI,yBAAgD,EAC9DC,EAAE,IAAKnB,yBAAwBmB,EAAE,yBAA1BF,gCAAI,EAAaT,EAAE,CAAC,CAAO,EAFrCE,IAAI,CAGH,yBAXLX,IAAI,CAYH,CACF;EACH,CAAC;AACH","names":["raceAwait","race","that","self","tsplus_module_1","status","raceAwait_1","disconnect","io","interruptStatus","__tsplusTrace","isInterruptible","id","tsplus_module_8","exit","right","tsplus_module_7","cause","c","tsplus_module_4","a","tsplus_module_6","left","a1"],"sourceRoot":"","sources":["../../../_src/IO/api/race.ts"],"sourcesContent":[null]}
|
@@ -0,0 +1,59 @@
|
|
1
|
+
import * as tsplus_module_1 from "@fncts/io/IO/api/fork";
|
2
|
+
import * as tsplus_module_2 from "@fncts/io/FiberRef/unsafe";
|
3
|
+
import * as tsplus_module_3 from "@fncts/base/data/Maybe/constructors";
|
4
|
+
import * as tsplus_module_4 from "@fncts/io/IO/api";
|
5
|
+
export const raceFibersWith = raceFibersWith_1;
|
6
|
+
import { AtomicBoolean } from "@fncts/base/internal/AtomicBoolean";
|
7
|
+
/**
|
8
|
+
* @tsplus pipeable fncts.io.IO raceFibersWith
|
9
|
+
*/
|
10
|
+
function raceFibersWith_1(right, leftWins, rightWins, __tsplusTrace) {
|
11
|
+
return left => {
|
12
|
+
return tsplus_module_4.withFiberRuntime((parentState, parentStatus) => {
|
13
|
+
const right0 = right();
|
14
|
+
const parentRuntimeFlags = parentStatus.runtimeFlags;
|
15
|
+
function complete(winner, loser, cont, ab, cb) {
|
16
|
+
if (ab.compareAndSet(true, false)) {
|
17
|
+
cb(cont(winner, loser));
|
18
|
+
}
|
19
|
+
}
|
20
|
+
const raceIndicator = new AtomicBoolean(true);
|
21
|
+
const leftFiber = tsplus_module_1.unsafeMakeChildFiber(left, parentState, parentRuntimeFlags, null, __tsplusTrace);
|
22
|
+
const rightFiber = tsplus_module_1.unsafeMakeChildFiber(right0, parentState, parentRuntimeFlags, null, __tsplusTrace);
|
23
|
+
leftFiber.setFiberRef(tsplus_module_2.forkScopeOverride, tsplus_module_3.just(parentState.scope));
|
24
|
+
rightFiber.setFiberRef(tsplus_module_2.forkScopeOverride, tsplus_module_3.just(parentState.scope));
|
25
|
+
return tsplus_module_4.async(cb => {
|
26
|
+
leftFiber.addObserver(() => complete(leftFiber, rightFiber, leftWins, raceIndicator, cb));
|
27
|
+
rightFiber.addObserver(() => complete(rightFiber, leftFiber, rightWins, raceIndicator, cb));
|
28
|
+
leftFiber.startFork(left);
|
29
|
+
rightFiber.startFork(right0);
|
30
|
+
});
|
31
|
+
}, __tsplusTrace);
|
32
|
+
};
|
33
|
+
}
|
34
|
+
/**
|
35
|
+
* Returns an effect that races this effect with the specified effect, calling
|
36
|
+
* the specified finisher as soon as one result or the other has been computed.
|
37
|
+
*
|
38
|
+
* @tsplus pipeable fncts.io.IO raceWith
|
39
|
+
*/
|
40
|
+
export function raceWith(right, leftWins, rightWins, __tsplusTrace) {
|
41
|
+
return left => {
|
42
|
+
return raceFibersWith_1(right, (winner, loser) => tsplus_module_4.flatMap(exit => {
|
43
|
+
switch (exit._tag) {
|
44
|
+
case "Success" /* ExitTag.Success */:
|
45
|
+
return tsplus_module_4.flatMap(() => leftWins(exit, loser), __tsplusTrace)(winner.inheritAll);
|
46
|
+
case "Failure" /* ExitTag.Failure */:
|
47
|
+
return leftWins(exit, loser);
|
48
|
+
}
|
49
|
+
}, __tsplusTrace)(winner.await), (winner, loser) => tsplus_module_4.flatMap(exit => {
|
50
|
+
switch (exit._tag) {
|
51
|
+
case "Success" /* ExitTag.Success */:
|
52
|
+
return tsplus_module_4.flatMap(() => rightWins(exit, loser), __tsplusTrace)(winner.inheritAll);
|
53
|
+
case "Failure" /* ExitTag.Failure */:
|
54
|
+
return rightWins(exit, loser);
|
55
|
+
}
|
56
|
+
}, __tsplusTrace)(winner.await), __tsplusTrace)(left);
|
57
|
+
};
|
58
|
+
}
|
59
|
+
//# sourceMappingURL=raceWith.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"raceWith.mjs","mappings":";;;;aAQgBA,cAAc;AAL9B,SAASC,aAAa,QAAQ,oCAAoC;AAElE;;;AAGA,0BACEC,KAA0B,EAC1BC,QAAmF,EACnFC,SAAoF,EACpFC,aAAsB;EAEtB,OAAQC,IAAiB,IAA0C;IACjE,OAAOC,iCAAoB,CAACC,WAAW,EAAEC,YAAY,KAAI;MACvD,MAAMC,MAAM,GAAeR,KAAK,EAAE;MAClC,MAAMS,kBAAkB,GAAGF,YAAY,CAACG,YAAY;MACpD,SAASC,QAAQ,CACfC,MAA2B,EAC3BC,KAA0B,EAC1BC,IAAgF,EAChFC,EAAiB,EACjBC,EAA6B;QAE7B,IAAID,EAAE,CAACE,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;UACjCD,EAAE,CAACF,IAAI,CAACF,MAAM,EAAEC,KAAK,CAAC,CAAC;;MAE3B;MAEA,MAAMK,aAAa,GAAG,IAAInB,aAAa,CAAC,IAAI,CAAC;MAC7C,MAAMoB,SAAS,GAAOC,qCAAwBhB,IAAI,EAAEE,WAAW,EAAEG,kBAAkB,EAAE,IAAI,EAAEN,aAAa,CAAC;MACzG,MAAMkB,UAAU,GAAMD,qCAAwBZ,MAAM,EAAEF,WAAW,EAAEG,kBAAkB,EAAE,IAAI,EAAEN,aAAa,CAAC;MAC3GgB,SAAS,CAACG,WAAW,oCAA6BC,qBAAKjB,WAAW,CAACkB,KAAK,CAAC,CAAC;MAC1EH,UAAU,CAACC,WAAW,oCAA6BC,qBAAKjB,WAAW,CAACkB,KAAK,CAAC,CAAC;MAE3E,OAAOnB,sBAAUW,EAAE,IAAI;QACrBG,SAAS,CAACM,WAAW,CAAC,MAAMd,QAAQ,CAACQ,SAAS,EAAEE,UAAU,EAAEpB,QAAQ,EAAEiB,aAAa,EAAEF,EAAE,CAAC,CAAC;QACzFK,UAAU,CAACI,WAAW,CAAC,MAAMd,QAAQ,CAACU,UAAU,EAAEF,SAAS,EAAEjB,SAAS,EAAEgB,aAAa,EAAEF,EAAE,CAAC,CAAC;QAC3FG,SAAS,CAACO,SAAS,CAACtB,IAAI,CAAC;QACzBiB,UAAU,CAACK,SAAS,CAAClB,MAAM,CAAC;MAC9B,CAAC,CAAC;IACJ,CAAC,EA9BHL,cA8BI;EACJ,CAAC;AACH;AAEA;;;;;;AAMA,OAAM,SAAUwB,QAAQ,CACtB3B,KAA2B,EAC3BC,QAAoE,EACpEC,SAAqE,EACrEC,aAAsB;EAEtB,OAAQC,IAAiB,IAA4C;IACnE,OAAOwB,iBACL5B,KAAK,EACL,CAACY,MAAM,EAAEC,KAAK,KACZR,wBAAsBwB,IAAI,IAAI;MAC5B,QAAQA,IAAI,CAACC,IAAI;QACf;UACE,OAAOzB,wBAA0B,MAAMJ,QAAQ,CAAC4B,IAAI,EAAEhB,KAAK,CAAC,EATxEV,eASmBS,MAAM,CAACmB,UAAU,CAAqC;QAC/D;UACE,OAAO9B,QAAQ,CAAC4B,IAAI,EAAEhB,KAAK,CAAC;MAAC;IAEnC,CAAC,EAbPV,eAMMS,MAAM,CAACoB,KAAK,CAOV,EACJ,CAACpB,MAAM,EAAEC,KAAK,KACZR,wBAAsBwB,IAAI,IAAI;MAC5B,QAAQA,IAAI,CAACC,IAAI;QACf;UACE,OAAOzB,wBAA0B,MAAMH,SAAS,CAAC2B,IAAI,EAAEhB,KAAK,CAAC,EAlBzEV,eAkBmBS,MAAM,CAACmB,UAAU,CAAsC;QAChE;UACE,OAAO7B,SAAS,CAAC2B,IAAI,EAAEhB,KAAK,CAAC;MAAC;IAEpC,CAAC,EAtBPV,eAeMS,MAAM,CAACoB,KAAK,CAOV,EAtBR7B,eAGSC,IAAI,CAoBV;EACH,CAAC;AACH","names":["raceFibersWith","AtomicBoolean","right","leftWins","rightWins","__tsplusTrace","left","tsplus_module_4","parentState","parentStatus","right0","parentRuntimeFlags","runtimeFlags","complete","winner","loser","cont","ab","cb","compareAndSet","raceIndicator","leftFiber","tsplus_module_1","rightFiber","setFiberRef","tsplus_module_3","scope","addObserver","startFork","raceWith","raceFibersWith_1","exit","_tag","inheritAll","await"],"sourceRoot":"","sources":["../../../_src/IO/api/raceWith.ts"],"sourcesContent":[null]}
|
@@ -2,7 +2,7 @@ const fileName_1 = "(@fncts/io) src/IO/api/randomWith.ts";
|
|
2
2
|
import * as tsplus_module_1 from "@fncts/io/Random/definition";
|
3
3
|
import * as tsplus_module_2 from "@fncts/base/data/Environment/api";
|
4
4
|
import * as tsplus_module_3 from "@fncts/io/IOEnv/services";
|
5
|
-
import * as tsplus_module_4 from "@fncts/io/FiberRef/
|
5
|
+
import * as tsplus_module_4 from "@fncts/io/FiberRef/operations";
|
6
6
|
import * as tsplus_module_5 from "@fncts/io/IO/api";
|
7
7
|
export const randomWith = randomWith_1;
|
8
8
|
/**
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import * as tsplus_module_1 from "@fncts/io/Supervisor/api";
|
2
2
|
import * as tsplus_module_2 from "@fncts/io/FiberRef/unsafe";
|
3
|
-
import * as tsplus_module_3 from "@fncts/io/FiberRef/
|
3
|
+
import * as tsplus_module_3 from "@fncts/io/FiberRef/operations";
|
4
4
|
/**
|
5
5
|
* @tsplus fluent fncts.io.IO supervised
|
6
6
|
*/
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import * as tsplus_module_1 from "@fncts/io/FiberRef/unsafe";
|
2
|
+
import * as tsplus_module_2 from "@fncts/base/data/Maybe/api";
|
3
|
+
import * as tsplus_module_3 from "@fncts/base/data/Maybe/constructors";
|
4
|
+
import * as tsplus_module_4 from "@fncts/io/FiberRef/operations";
|
5
|
+
import * as tsplus_module_5 from "@fncts/io/IO/api";
|
6
|
+
/**
|
7
|
+
* Transplants specified effects so that when those effects fork other
|
8
|
+
* effects, the forked effects will be governed by the scope of the
|
9
|
+
* fiber that executes this effect.
|
10
|
+
*
|
11
|
+
* This can be used to "graft" deep grandchildren onto a higher-level
|
12
|
+
* scope, effectively extending their lifespans into the parent scope.
|
13
|
+
*
|
14
|
+
* @tsplus static fncts.io.IOOps transplant
|
15
|
+
*/
|
16
|
+
export function transplant(f, __tsplusTrace) {
|
17
|
+
return tsplus_module_5.withFiberRuntime(fiberState => {
|
18
|
+
const scopeOverride = fiberState.getFiberRef(tsplus_module_1.forkScopeOverride);
|
19
|
+
const scope = tsplus_module_2.getOrElse(() => fiberState.scope)(scopeOverride);
|
20
|
+
return f(tsplus_module_4.locally(tsplus_module_1.forkScopeOverride, tsplus_module_3.just(scope), __tsplusTrace));
|
21
|
+
}, __tsplusTrace);
|
22
|
+
}
|
23
|
+
//# sourceMappingURL=transplant.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"transplant.mjs","mappings":";;;;;AAEA;;;;;;;;;;AAUA,OAAM,SAAUA,UAAU,CAAUC,CAA8B,EAAEC,aAAsB;EACxF,OAAOC,iCAAqBC,UAAU,IAAI;IACxC,MAAMC,aAAa,GAAGD,UAAU,CAACE,WAAW,mCAA4B;IACxE,MAAMC,KAAK,GAAWC,gCAAwBJ,UAAU,CAACG,KAAK,EAAxCF,aAAa,CAA4B;IAC/D,OAAOJ,CAAC,CAACQ,2DAAmCC,qBAAKH,KAAK,CAAC,EAJSL,cAIR,CAAC;EAC3D,CAAC,EALiEA,cAKhE;AACJ","names":["transplant","f","__tsplusTrace","tsplus_module_5","fiberState","scopeOverride","getFiberRef","scope","tsplus_module_2","tsplus_module_4","tsplus_module_3"],"sourceRoot":"","sources":["../../../_src/IO/api/transplant.ts"],"sourcesContent":[null]}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import * as tsplus_module_1 from "@fncts/io/FiberRef/operations";
|
2
|
+
import * as tsplus_module_2 from "@fncts/io/IO/api";
|
3
|
+
/**
|
4
|
+
* @tsplus pipeable fncts.io.IO whenFiberRef
|
5
|
+
* @tsplus static fncts.io.IOOps whenFiberRef
|
6
|
+
*/
|
7
|
+
export function whenFiberRef(ref, f, __tsplusTrace) {
|
8
|
+
return self => {
|
9
|
+
return tsplus_module_2.whenIO(tsplus_module_2.map(f, __tsplusTrace)(tsplus_module_1.get(ref, __tsplusTrace)), __tsplusTrace)(self);
|
10
|
+
};
|
11
|
+
}
|
12
|
+
//# sourceMappingURL=whenFiberRef.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"whenFiberRef.mjs","mappings":";;AAAA;;;;AAIA,OAAM,SAAUA,YAAY,CAAIC,GAAgB,EAAEC,CAAe,EAAEC,aAAsB;EACvF,OAAiBC,IAAiB,IAAwB;IACxD,OAAOC,uBAAYA,oBAAYH,CAAC,EAF+BC,mCAE5CF,GAAG,EAFyCE,eAE9B,EAF8BA,eAExDC,IAAI,CAAuB;EACpC,CAAC;AACH","names":["whenFiberRef","ref","f","__tsplusTrace","self","tsplus_module_2"],"sourceRoot":"","sources":["../../../_src/IO/api/whenFiberRef.ts"],"sourcesContent":[null]}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
const fileName_1 = "(@fncts/io) src/IO/api/whenRef.ts";
|
2
|
+
import * as tsplus_module_1 from "@fncts/io/Ref/api/get";
|
3
|
+
import * as tsplus_module_2 from "@fncts/io/IO/api";
|
4
|
+
/**
|
5
|
+
* @tsplus pipeable fncts.io.IO whenRef
|
6
|
+
* @tsplus static fncts.io.IOOps whenRef
|
7
|
+
*/
|
8
|
+
export function whenRef(ref, f) {
|
9
|
+
return self => {
|
10
|
+
return tsplus_module_2.whenIO(tsplus_module_2.map(f, fileName_1 + ":7:35")(tsplus_module_1.get(ref, fileName_1 + ":7:27")), fileName_1 + ":7:23")(self);
|
11
|
+
};
|
12
|
+
}
|
13
|
+
//# sourceMappingURL=whenRef.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"whenRef.mjs","mappings":";;;AAAA;;;;AAIA,OAAM,SAAUA,OAAO,CAAIC,GAAW,EAAEC,CAAe;EACrD,OAAiBC,IAAiB,IAAwB;IACxD,OAAOC,uBAAYA,oBAAYF,CAAC,4CAAbD,GAAG,wBAAW,wBAA1BE,IAAI,CAAuB;EACpC,CAAC;AACH","names":["whenRef","ref","f","self","tsplus_module_2"],"sourceRoot":"","sources":["../../../_src/IO/api/whenRef.ts"],"sourcesContent":[null]}
|
@@ -1,25 +1,23 @@
|
|
1
|
+
const fileName_1 = "(@fncts/io) src/IO/api/zipConcurrent.ts";
|
1
2
|
import * as tsplus_module_1 from "@fncts/base/data/FiberId/constructors";
|
2
3
|
import * as tsplus_module_2 from "@fncts/io/Future/constructors";
|
3
|
-
import * as tsplus_module_3 from "@fncts/
|
4
|
+
import * as tsplus_module_3 from "@fncts/io/Fiber/api/interruptFork";
|
4
5
|
import * as tsplus_module_4 from "@fncts/io/IO/api";
|
5
6
|
import * as tsplus_module_5 from "@fncts/base/data/Cause/api";
|
6
7
|
import * as tsplus_module_6 from "@fncts/base/data/Exit/api";
|
7
|
-
import * as tsplus_module_7 from "@fncts/io/Fiber/api/
|
8
|
-
import * as tsplus_module_8 from "@fncts/io/Fiber/api/
|
8
|
+
import * as tsplus_module_7 from "@fncts/io/Fiber/api/await";
|
9
|
+
import * as tsplus_module_8 from "@fncts/io/Fiber/api/join";
|
9
10
|
import * as tsplus_module_9 from "@fncts/io/Future/api";
|
10
|
-
import * as tsplus_module_10 from "@fncts/
|
11
|
-
import * as tsplus_module_11 from "@fncts/
|
12
|
-
import * as tsplus_module_12 from "@fncts/
|
13
|
-
import * as tsplus_module_13 from "@fncts/io/IO/api/core-scope";
|
14
|
-
import * as tsplus_module_14 from "@fncts/io/IO/api/interrupt";
|
15
|
-
export const zipConcurrent = zipConcurrent_1;
|
11
|
+
import * as tsplus_module_10 from "@fncts/io/IO/api/transplant";
|
12
|
+
import * as tsplus_module_11 from "@fncts/io/IO/api/interrupt";
|
13
|
+
import * as tsplus_module_12 from "@fncts/io/IO/api/forkDaemon";
|
16
14
|
export const zipWithConcurrent = zipWithConcurrent_1;
|
17
15
|
import { tuple } from "@fncts/base/data/function";
|
18
|
-
import {
|
16
|
+
import { AtomicBoolean } from "@fncts/base/internal/AtomicBoolean";
|
19
17
|
/**
|
20
18
|
* @tsplus pipeable fncts.io.IO zipConcurrent
|
21
19
|
*/
|
22
|
-
function
|
20
|
+
export function zipConcurrent(that, __tsplusTrace) {
|
23
21
|
return self => {
|
24
22
|
return zipWithConcurrent_1(that, tuple, __tsplusTrace)(self);
|
25
23
|
};
|
@@ -29,13 +27,21 @@ function zipConcurrent_1(that, __tsplusTrace) {
|
|
29
27
|
*/
|
30
28
|
function zipWithConcurrent_1(that, f, __tsplusTrace) {
|
31
29
|
return self => {
|
32
|
-
return tsplus_module_4.flatMap(fiberId =>
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
30
|
+
return tsplus_module_4.flatMap(fiberId => tsplus_module_11.uninterruptibleMask(restore => {
|
31
|
+
return tsplus_module_10.transplant(graft => {
|
32
|
+
const future = tsplus_module_2.unsafeMake(tsplus_module_1.none);
|
33
|
+
const ref = new AtomicBoolean(false);
|
34
|
+
return tsplus_module_4.flatMap(([left, right]) => tsplus_module_4.matchCauseIO(cause => tsplus_module_4.zipRight(tsplus_module_4.flatMap(([left, right]) => tsplus_module_6.match(causes => tsplus_module_4.refailCause(tsplus_module_5.both(tsplus_module_5.stripFailures(cause), causes), __tsplusTrace), () => tsplus_module_4.refailCause(tsplus_module_5.stripFailures(cause), __tsplusTrace))(tsplus_module_6.zipWithCause(right, f, (a, b) => tsplus_module_5.both(a, b))(left)), __tsplusTrace)(tsplus_module_4.zip(tsplus_module_7.wait(right, __tsplusTrace), __tsplusTrace)(tsplus_module_7.wait(left, __tsplusTrace))), __tsplusTrace)(tsplus_module_4.zipRight(tsplus_module_3.interruptFork(right, __tsplusTrace), __tsplusTrace)(tsplus_module_3.interruptFork(left, __tsplusTrace))), () => tsplus_module_4.zipWith(tsplus_module_8.join(right, __tsplusTrace), f, __tsplusTrace)(tsplus_module_8.join(left, __tsplusTrace)), __tsplusTrace)(restore(tsplus_module_9.wait(future, __tsplusTrace), __tsplusTrace)), __tsplusTrace)(tsplus_module_4.zip(fork(() => that, restore, graft, future, ref), __tsplusTrace)(fork(() => self, restore, graft, future, ref)));
|
35
|
+
}, __tsplusTrace);
|
38
36
|
}), __tsplusTrace)(tsplus_module_4.fiberId);
|
39
37
|
};
|
40
38
|
}
|
39
|
+
function fork(io, restore, graft, future, ref) {
|
40
|
+
return tsplus_module_12.forkDaemon(tsplus_module_4.matchCauseIO(cause => tsplus_module_4.zipRight(tsplus_module_4.refailCause(cause, fileName_1 + ":59:55"), fileName_1 + ":59:40")(tsplus_module_9.fail(undefined, fileName_1 + ":59:27")(future)), a => {
|
41
|
+
if (ref.getAndSet(true)) {
|
42
|
+
tsplus_module_9.unsafeDone(tsplus_module_4.unit, fileName_1 + ":62:26")(future);
|
43
|
+
}
|
44
|
+
return tsplus_module_4.succeedNow(a, fileName_1 + ":64:27");
|
45
|
+
}, fileName_1 + ":58:43")(graft(restore(io(), fileName_1 + ":58:23"))), fileName_1 + ":66:4");
|
46
|
+
}
|
41
47
|
//# sourceMappingURL=zipConcurrent.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"zipConcurrent.mjs","mappings":"
|
1
|
+
{"version":3,"file":"zipConcurrent.mjs","mappings":";;;;;;;;;;;;;aAmBgBA,iBAAiB;AAhBjC,SAASC,KAAK,QAAQ,2BAA2B;AACjD,SAASC,aAAa,QAAQ,oCAAoC;AAGlE;;;AAGA,OAAM,SAAUC,aAAa,CAAYC,IAAmB,EAAEC,aAAsB;EAClF,OAAiBC,IAAiB,IAAyC;IACzE,OAAOC,oBAAuBH,IAAI,EAAEH,KAAK,EAFiBI,eAEnDC,IAAI,CAA+B;EAC5C,CAAC;AACH;AAEA;;;AAGA,6BAAmDF,IAAmB,EAAEI,CAAoB,EAAEH,aAAsB;EAClH,OAAcC,IAAiB,IAA2B;IACxD,OAAOG,wBAAoBC,OAAO,IAChCC,qCAAwBC,OAAO,IAAI;MACjC,OAAOC,4BAAeC,KAAK,IAAI;QAC7B,MAAMC,MAAM,GAAGC,gDAA2C;QAC1D,MAAMC,GAAG,GAAM,IAAIf,aAAa,CAAC,KAAK,CAAC;QACvC,OAAOO,wBAEI,CAAC,CAACS,IAAI,EAAEC,KAAK,CAAC,KACrBV,6BACGW,KAAK,IAAIX,yBAGRA,wBAAoC,CAAC,CAACS,IAAI,EAAEC,KAAK,CAAC,KAChDE,sBAGKC,MAAM,IAAKb,4BAAec,mDAAWH,KAAK,GAAgBE,MAAM,CAAC,EAlBIjB,cAkBH,EACnE,MAAMI,0DAAeW,KAAK,GAnB4Cf,cAmB7B,EAJ7CgB,6BACgBF,KAAK,EAAEX,CAAC,EAAE,CAACgB,CAAC,EAAEC,CAAC,KAAKF,qBAAWC,CAAC,EAAEC,CAAC,CAAC,EADpDP,IAAI,CACiD,CAIlD,EApBuEb,eAc5EI,yCAAeU,KAAK,EAdwDd,oDAc5Ea,IAAI,EAdwEb,eAcjD,CAO1B,EArB2EA,sEAa5Ec,KAAK,EAbuEd,6DAY5Ea,IAAI,EAZwEb,gBAqB3E,EACH,MAAMI,6CAAkBU,KAAK,EAtBiDd,gBAsB1CG,CAAC,EAtByCH,oCAsBxEa,IAAI,EAtBoEb,eAsBxC,EAtBwCA,eAUhFO,OAAO,sBAACG,MAAM,EAVkEV,8BAU3D,CAapB,EAvB+EA,eAO7EI,oBACAiB,IAAI,OAACtB,IAAI,EAAEQ,OAAO,EAAEE,KAAK,EAAEC,MAAM,EAAEE,GAAG,CAAC,EARsCZ,eAO7EqB,IAAI,OAACpB,IAAI,EAAEM,OAAO,EAAEE,KAAK,EAAEC,MAAM,EAAEE,GAAG,CAAC,CACC,CAgB5C;MACL,CAAC,EAzBqFZ,cAyBpF;IACJ,CAAC,CAAC,EA1BsFA,uCA2BzF;EACH,CAAC;AACH;AAEA,SAASqB,IAAI,CACXC,EAAqB,EACrBf,OAAiC,EACjCE,KAAc,EACdC,MAA0B,EAC1BE,GAAkB;EAElB,mCAAOR,6BACJW,KAAK,IAAIX,yBAA0BA,4BAAeW,KAAK,wBAAC,yBAA9CQ,qBAAYC,SAAS,yBAArBd,MAAM,CAAgB,CAAwB,EACxDS,CAAC,IAAI;IACJ,IAAIP,GAAG,CAACa,SAAS,CAAC,IAAI,CAAC,EAAE;MACvBF,8EAAM,CAAoB;;IAE5B,OAAOnB,2BAAce,CAAC,wBAAC;EACzB,CAAC,yBAPIV,KAAK,CAACF,OAAO,CAACe,EAAE,EAAE,wBAAC,CAAC,CAQ1B;AACH","names":["zipWithConcurrent","tuple","AtomicBoolean","zipConcurrent","that","__tsplusTrace","self","zipWithConcurrent_1","f","tsplus_module_4","fiberId","tsplus_module_11","restore","tsplus_module_10","graft","future","tsplus_module_2","ref","left","right","cause","tsplus_module_6","causes","tsplus_module_5","a","b","fork","io","tsplus_module_9","undefined","getAndSet"],"sourceRoot":"","sources":["../../../_src/IO/api/zipConcurrent.ts"],"sourcesContent":[null]}
|
package/_mjs/IO/api.mjs
CHANGED
@@ -24,6 +24,7 @@ import * as tsplus_module_22 from "@fncts/base/data/Exit/constructors";
|
|
24
24
|
export const async = async_1;
|
25
25
|
export const zipRight = zipRight_1;
|
26
26
|
export const as = as_1;
|
27
|
+
export const asJust = asJust_1;
|
27
28
|
export const asUnit = asUnit_1;
|
28
29
|
export const catchTagWith = catchTagWith_1;
|
29
30
|
export const catchAll = catchAll_1;
|
@@ -137,7 +138,7 @@ function as_1(b, __tsplusTrace) {
|
|
137
138
|
*
|
138
139
|
* @tsplus getter fncts.io.IO asJust
|
139
140
|
*/
|
140
|
-
|
141
|
+
function asJust_1(ma, __tsplusTrace) {
|
141
142
|
return map_1(tsplus_module_3.just, __tsplusTrace)(ma);
|
142
143
|
}
|
143
144
|
/**
|
@@ -816,6 +817,12 @@ function iterate_1(initial, cont, body, __tsplusTrace) {
|
|
816
817
|
export function left(a, __tsplusTrace) {
|
817
818
|
return flatMap_1(a => succeedNow_1(tsplus_module_9.left(a), __tsplusTrace), __tsplusTrace)(succeed_1(a, __tsplusTrace));
|
818
819
|
}
|
820
|
+
/**
|
821
|
+
* @tsplus getter fncts.io.IO just
|
822
|
+
*/
|
823
|
+
export function just(self) {
|
824
|
+
return matchIO_1(e => fail_1(() => tsplus_module_3.just(e), fileName_1 + ":1069:19"), a => tsplus_module_16.match(() => fail_1(() => tsplus_module_3.nothing(), fileName_1 + ":1070:33"), succeedNow_1)(a), fileName_1 + ":1068:22")(self);
|
825
|
+
}
|
819
826
|
/**
|
820
827
|
* @tsplus static fncts.io.IOOps log
|
821
828
|
*/
|
@@ -984,6 +991,11 @@ export function merge(io, __tsplusTrace) {
|
|
984
991
|
export function mergeAll(fas, b, f, __tsplusTrace) {
|
985
992
|
return tsplus_module_11.foldLeft(succeed_1(() => b, __tsplusTrace), (b, a) => zipWith_1(a, f, __tsplusTrace)(b))(fas);
|
986
993
|
}
|
994
|
+
/**
|
995
|
+
* @tsplus static fncts.io.IOOps nothing
|
996
|
+
*/
|
997
|
+
const nothing_1 = /*#__PURE__*/succeedNow_1( /*#__PURE__*/tsplus_module_3.nothing(), fileName_1 + ":1307:37");
|
998
|
+
export const nothing = nothing_1;
|
987
999
|
/**
|
988
1000
|
* Converts an option on errors into an option on values.
|
989
1001
|
*
|
@@ -1419,7 +1431,7 @@ function tryOrElse_1(that, onSuccess, __tsplusTrace) {
|
|
1419
1431
|
/**
|
1420
1432
|
* @tsplus static fncts.io.IOOps unit
|
1421
1433
|
*/
|
1422
|
-
const unit_1 = /*#__PURE__*/succeedNow_1(undefined, fileName_1 + ":
|
1434
|
+
const unit_1 = /*#__PURE__*/succeedNow_1(undefined, fileName_1 + ":1818:45");
|
1423
1435
|
export const unit = unit_1;
|
1424
1436
|
/**
|
1425
1437
|
* Converts an option on errors into an option on values.
|
@@ -1476,10 +1488,11 @@ export function when(b, __tsplusTrace) {
|
|
1476
1488
|
* The moral equivalent of `if (p) exp` when `p` has side-effects
|
1477
1489
|
*
|
1478
1490
|
* @tsplus pipeable fncts.io.IO whenIO
|
1491
|
+
* @tsplus static fncts.io.IOOps whenIO
|
1479
1492
|
*/
|
1480
1493
|
function whenIO_1(mb, __tsplusTrace) {
|
1481
1494
|
return ma => {
|
1482
|
-
return flatMap_1(b => b ?
|
1495
|
+
return flatMap_1(b => b ? asJust_1(ma, __tsplusTrace) : nothing_1, __tsplusTrace)(mb);
|
1483
1496
|
};
|
1484
1497
|
}
|
1485
1498
|
/**
|