@fncts/io 0.0.23 → 0.0.25
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/descriptor.d.ts +12 -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.d.ts +1 -12
- package/IO.d.ts +6 -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/descriptor.cjs +30 -0
- package/_cjs/IO/api/descriptor.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/zipConcurrent.cjs +5 -6
- package/_cjs/IO/api/zipConcurrent.cjs.map +1 -1
- package/_cjs/IO/api.cjs +52 -70
- package/_cjs/IO/api.cjs.map +1 -1
- package/_cjs/IO.cjs +59 -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/descriptor.mjs +20 -0
- package/_mjs/IO/api/descriptor.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/zipConcurrent.mjs +5 -6
- package/_mjs/IO/api/zipConcurrent.mjs.map +1 -1
- package/_mjs/IO/api.mjs +51 -67
- package/_mjs/IO/api.mjs.map +1 -1
- package/_mjs/IO.mjs +6 -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/descriptor.ts +14 -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/zipConcurrent.ts +1 -1
- package/_src/IO/api.ts +0 -15
- package/_src/IO.ts +6 -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 +1 -1
- 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]}
|
|
@@ -10,8 +10,9 @@ import * as tsplus_module_9 from "@fncts/io/Future/api";
|
|
|
10
10
|
import * as tsplus_module_10 from "@fncts/base/data/Either/destructors";
|
|
11
11
|
import * as tsplus_module_11 from "@fncts/base/data/Either/constructors";
|
|
12
12
|
import * as tsplus_module_12 from "@fncts/base/data/Maybe/destructors";
|
|
13
|
-
import * as tsplus_module_13 from "@fncts/io/IO/api/
|
|
14
|
-
import * as tsplus_module_14 from "@fncts/io/IO/api/
|
|
13
|
+
import * as tsplus_module_13 from "@fncts/io/IO/api/forkDaemon";
|
|
14
|
+
import * as tsplus_module_14 from "@fncts/io/IO/api/transplant";
|
|
15
|
+
import * as tsplus_module_15 from "@fncts/io/IO/api/interrupt";
|
|
15
16
|
export const zipConcurrent = zipConcurrent_1;
|
|
16
17
|
export const zipWithConcurrent = zipWithConcurrent_1;
|
|
17
18
|
import { tuple } from "@fncts/base/data/function";
|
|
@@ -29,12 +30,10 @@ function zipConcurrent_1(that, __tsplusTrace) {
|
|
|
29
30
|
*/
|
|
30
31
|
function zipWithConcurrent_1(that, f, __tsplusTrace) {
|
|
31
32
|
return self => {
|
|
32
|
-
return tsplus_module_4.flatMap(fiberId =>
|
|
33
|
-
restore
|
|
34
|
-
}) => {
|
|
33
|
+
return tsplus_module_4.flatMap(fiberId => tsplus_module_15.uninterruptibleMask(restore => {
|
|
35
34
|
const future = tsplus_module_2.unsafeMake(tsplus_module_1.none);
|
|
36
35
|
const ref = new AtomicReference(tsplus_module_3.nothing());
|
|
37
|
-
return
|
|
36
|
+
return tsplus_module_14.transplant(graft => tsplus_module_4.flatMap(([left, right]) => tsplus_module_4.matchCauseIO(cause => tsplus_module_4.flatMap(([left, right]) => tsplus_module_6.match(tsplus_module_4.failCauseNow, () => tsplus_module_4.failCauseNow(tsplus_module_5.stripFailures(cause), __tsplusTrace))(tsplus_module_6.zipConcurrent(right)(left)), __tsplusTrace)(zipConcurrent_1(tsplus_module_7.interruptAs(right, fiberId), __tsplusTrace)(tsplus_module_7.interruptAs(left, fiberId))), c => tsplus_module_4.as(() => c, __tsplusTrace)(tsplus_module_4.zip(tsplus_module_8.inheritRefs(right, __tsplusTrace), __tsplusTrace)(tsplus_module_8.inheritRefs(left, __tsplusTrace))), __tsplusTrace)(restore(tsplus_module_9.wait(future, __tsplusTrace), __tsplusTrace)), __tsplusTrace)(tsplus_module_4.zip(tsplus_module_13.forkDaemon(graft(tsplus_module_4.matchCauseIO(cause => tsplus_module_4.zipRight(tsplus_module_4.failCauseNow(cause, __tsplusTrace), __tsplusTrace)(tsplus_module_9.fail(undefined, __tsplusTrace)(future)), b => tsplus_module_12.match(() => tsplus_module_4.unit, value => tsplus_module_10.match(a => tsplus_module_4.asUnit(tsplus_module_9.succeed_(f(a, b), __tsplusTrace)(future), __tsplusTrace), () => tsplus_module_4.unit)(value))(ref.getAndSet(tsplus_module_3.just(tsplus_module_11.right(b)))), __tsplusTrace)(restore(that, __tsplusTrace))), __tsplusTrace), __tsplusTrace)(tsplus_module_13.forkDaemon(graft(tsplus_module_4.matchCauseIO(cause => tsplus_module_4.zipRight(tsplus_module_4.failCauseNow(cause, __tsplusTrace), __tsplusTrace)(tsplus_module_9.fail(undefined, __tsplusTrace)(future)), a => tsplus_module_12.match(() => tsplus_module_4.unit, value => tsplus_module_10.match(() => tsplus_module_4.unit, b => tsplus_module_4.asUnit(tsplus_module_9.succeed_(f(a, b), __tsplusTrace)(future), __tsplusTrace))(value))(ref.getAndSet(tsplus_module_3.just(tsplus_module_11.left(a)))), __tsplusTrace)(restore(self, __tsplusTrace))), __tsplusTrace))), __tsplusTrace);
|
|
38
37
|
}), __tsplusTrace)(tsplus_module_4.fiberId);
|
|
39
38
|
};
|
|
40
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zipConcurrent.mjs","mappings":"
|
|
1
|
+
{"version":3,"file":"zipConcurrent.mjs","mappings":";;;;;;;;;;;;;;;aAMgBA,aAAa;aASbC,iBAAiB;AAfjC,SAASC,KAAK,QAAQ,2BAA2B;AACjD,SAASC,eAAe,QAAQ,sCAAsC;AAEtE;;;AAGA,yBAAyCC,IAAmB,EAAEC,aAAsB;EAClF,OAAiBC,IAAiB,IAAyC;IACzE,OAAOC,oBAAuBH,IAAI,EAAEF,KAAK,EAFiBG,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,MAAMC,MAAM,GAAGC,gDAAwC;MACvD,MAAMC,GAAG,GAAM,IAAIZ,eAAe,CAAsBa,yBAAS,CAAC;MAClE,OAAOC,4BAAeC,KAAK,IACzBT,wBA8BW,CAAC,CAACU,IAAI,EAAEC,KAAK,CAAC,KACrBX,6BACGY,KAAK,IACJZ,wBAGW,CAAC,CAACU,IAAI,EAAEC,KAAK,CAAC,KACrBE,oDAAiD,MAAMb,2DAAgBY,KAAK,GA5CJhB,cA4CmB,EAA3FiB,8BAAmBF,KAAK,EAAxBD,IAAI,CAAqB,CAAmE,EA5CpBd,eAwC5EkB,gBAEiBC,iCAAK,EAAad,OAAO,CAAC,EA1CiCL,eAwC5EmB,gCAAI,EACWd,OAAO,CAAC,CACqB,CAGzC,EACJe,CAAC,IAAKhB,yBAA2CgB,CAAC,EA9C2BpB,eA8CvEI,gDAAqBW,KAAK,EA9C6Cf,2DA8CvEc,IAAI,EA9CmEd,eA8ChC,CAAM,EA9C0BA,eAsChFO,OAAO,sBAACC,MAAM,EAtCkER,8BAsC3D,CASpB,EA/C+EA,eAOpFI,gDAeIS,KAAK,CACHT,6BACGY,KAAK,IAAIZ,yBAA0BA,6BAAgBY,KAAK,EAxBmBhB,cAwBlB,EAxBkBA,eAwBjEqB,qBAAYC,SAAS,EAxB4CtB,eAwBjEQ,MAAM,CAAgB,CAAyB,EACzDe,CAAC,IACAC,uBACE,MAAKpB,oBAAQ,EACZqB,KAAK,IACJC,uBACGC,CAAC,IAAIvB,uBAACiB,yBAAelB,CAAC,CAACwB,CAAC,EAAEJ,CAAC,CAAC,EA9BuCvB,eA8B7DQ,MAAM,CAAiB,EA9BsCR,cA8B/B,EACrC,MAAKI,oBAAQ,EAFfqB,KAAK,CAGJ,EANLf,GAAG,CAACkB,SAAS,CAACjB,qBAAKkB,uBAAaN,CAAC,CAAC,CAAC,CAAC,CAOnC,EAjCyEvB,eAuB9EO,OAAO,CAACR,IAAI,EAvBkEC,cAuBjE,CAWZ,CACF,EAnC+EA,2DAOpFa,KAAK,CACHT,6BACGY,KAAK,IAAIZ,yBAA0BA,6BAAgBY,KAAK,EATuBhB,cAStB,EATsBA,eASrEqB,qBAAYC,SAAS,EATgDtB,eASrEQ,MAAM,CAAgB,CAAyB,EACzDmB,CAAC,IACAH,uBACE,MAAKpB,oBAAQ,EACZqB,KAAK,IACJC,uBACE,MAAKtB,oBAAQ,EACZmB,CAAC,IAAInB,uBAACiB,yBAAelB,CAAC,CAACwB,CAAC,EAAEJ,CAAC,CAAC,EAhB2CvB,eAgBjEQ,MAAM,CAAiB,EAhB0CR,cAgBnC,EAFvCyB,KAAK,CAGJ,EANLf,GAAG,CAACkB,SAAS,CAACjB,qBAAKkB,sBAAYF,CAAC,CAAC,CAAC,CAAC,CAOlC,EAlB6E3B,eAQlFO,OAAO,CAACN,IAAI,EARsED,cAQrE,CAWZ,CACF,EApBmFA,eAoCjF,CAYA,EAhDiFA,cAiDrF;IACH,CAAC,CAAC,EAlDsFA,uCAmDzF;EACH,CAAC;AACH","names":["zipConcurrent","zipWithConcurrent","tuple","AtomicReference","that","__tsplusTrace","self","zipWithConcurrent_1","f","tsplus_module_4","fiberId","tsplus_module_15","restore","future","tsplus_module_2","ref","tsplus_module_3","tsplus_module_14","graft","left","right","cause","tsplus_module_6","zipConcurrent_1","tsplus_module_7","c","tsplus_module_9","undefined","b","tsplus_module_12","value","tsplus_module_10","a","getAndSet","tsplus_module_11"],"sourceRoot":"","sources":["../../../_src/IO/api/zipConcurrent.ts"],"sourcesContent":[null]}
|