@fncts/io 0.0.24 → 0.0.26
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/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":";;;;;;;aAegBA,WAAW;aA0BXC,aAAa;aAebC,eAAe;aAWfC,mBAAmB;aAgFnBC,MAAM;AAnJtB,SAASC,OAAO,EAAEC,aAAa,EAAEC,eAAe,QAAQ,yBAAyB;AAMjF,MAAMC,oBAAoB,GAA6B,CAACC,EAAE,EAAEC,aAAa,KAAIC,gBAACF,EAAE,uBAAc;AAE9F,MAAMG,sBAAsB,GAA6B,CAACH,EAAE,EAAEC,aAAa,KAAIG,kBAACJ,EAAE,uBAAgB;AAElG;;;;;AAKA,uBAA4BK,OAAgB,EAAEJ,aAAsB;EAClE,OAAOK,6BAAgBC,0BAAgBF,OAAO,CAAC,EADHJ,cACI;AAClD;AAEA;;;;;;AAMA,OAAO,MAAMO,SAAS,gBAA4BF,sFAAkC;AAEpF;;;;;;;;;;;;;;AAcA,yBAAuCG,IAAiB,EAAER,aAAsB;EAC9E,OAAO,IAAIJ,aAAa,CAACY,IAAI,EAAER,aAAa,CAAC;AAC/C;AAEA;;;;;;;;;;;AAWA,2BAAyCQ,IAAiB,EAAER,aAAsB;EAChF,OAAO,IAAIH,eAAe,CAACW,IAAI,EAAER,aAAa,CAAC;AACjD;AAEA;;;;;;;AAOA,+BAA6CS,CAAqD;EAChG,OAAO,IAAId,OAAO,CAACe,2DAA8C,EAAGC,QAAQ,IAC1EF,CAAC,CAACG,qCAAQ,IAAgBd,oBAAoB,GAAGI,sBAAsB,CAAC,CACzE;AACH;AAEA;;;AAGA,OAAM,SAAUW,QAAQ,CAAKC,SAA6B,EAAEd,aAAsB;EAChF,OAAiBQ,IAAiB,IAAsB;IACtD,OAAOO,sBAAwBC,OAAO,IACpCX,6BACGY,MAAM,IACLZ,6BACGa,MAAM,IAAKb,6BAAgBC,qBAAWW,MAAM,EAAEC,MAAM,CAAC,EANNlB,cAMO,EACvD,MAAMK,6BAAgBY,MAAM,EAPoBjB,cAOnB,EAPmBA,eAKlDc,SAAS,CAGR,EACFK,CAAC,IAAKd,oBAAc,MAAMc,CAAC,EATwBnB,eAS7Cc,SAAS,CAAa,EATuBd,eAGtDgB,OAAO,CAACR,IAAI,EAH0CR,cAGzC,CAOZ,CACF;EACH,CAAC;AACH;AAEA;;;;;;;AAOA,OAAM,SAAUoB,iBAAiB,CAC/BC,CAAqD,EACrDrB,aAAsB;EAEtB,OAAOK,mCACJiB,IAAI,IAAIrB,gBAACoB,CAAC,CAACC,IAAI,CAACC,eAAe,GAAGzB,oBAAoB,GAAGI,sBAAsB,CAAC,EAHnFF,cAGiG,EAHjGA,cAIC;AACH;AAEA;;;;;;AAMA,OAAM,SAAUwB,WAAW,CAASC,OAA8B,EAAEzB,aAAsB;EACxF,OAAiB0B,EAAe,IAA2B;IACzD,OAAOC,SAAWC,IAAI,IACpBC,sBACGC,KAAK,IAAMxB,uCAAK,IAAqBmB,OAAO,EAAE,GAAEpB,oBAAS,EAC1D,MAAKA,oBAAQ,EAFfuB,IAAI,CAGH,EAN6D5B,eAEzD0B,EAAE,CAKR;EACH,CAAC;AACH;AAEA;;;;;;AAMA,OAAM,SAAUK,eAAe,CAC7BN,OAA4D,EAC5DzB,aAAsB;EAEtB,OAAiB0B,EAAe,IAA2B;IACzD,OAAOC,SAAWC,IAAI,IACpBC,sBACGC,KAAK,IAAMxB,uCAAK,IAAqBmB,OAAO,8BAACK,KAAK,EAAc,GAAEzB,oBAAS,EAC5E,MAAKA,oBAAQ,EAFfuB,IAAI,CAGH,EAPL5B,eAGS0B,EAAE,CAKR;EACH,CAAC;AACH;AAEA;;;AAGA,kBAAqCD,OAA8C,EAAEzB,aAAsB;EACzG,OAAWQ,IAAiB,IAA2B;IACrD,OAAOO,sBAAwBC,OAAO,IACpCX,6BACG2B,QAAQ,IAAI;MACX,MAAMC,MAAM,GAAGC,0BAAeF,QAAQ,CAAC;MACvC,OAAO3B,6BACJ8B,QAAQ,IAAK9B,6BAAgBC,qBAAW0B,QAAQ,EAAEG,QAAQ,CAAC,EAPanC,cAOZ,EAC7D,MAAMK,4BAAe4B,MAAM,EAR8CjC,cAQ7C,EAR6CA,eAMpEyB,OAAO,CAACQ,MAAM,CAAC,CAGrB;IACH,CAAC,EACAG,OAAO,IAAI;MACV,MAAMH,MAAM,GAAGC,wBAAaE,OAAO,CAAC;MACpC,gCAAyB/B,4BAAe4B,MAAM,EAb6BjC,cAa5B,EAb4BA,eAapEyB,OAAO,CAACQ,MAAM,CAAC;IACxB,CAAC,EAd4EjC,eAG/EgB,OAAO,CAACR,IAAI,EAHmER,cAGlE,CAYZ,CACF;EACH,CAAC;AACH","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
|
/**
|