@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
|
@@ -1,4 +1,8 @@
|
|
|
1
|
+
import type { InterruptibilityRestorer } from "./interrupt.js";
|
|
2
|
+
import type { Grafter } from "./transplant.js";
|
|
3
|
+
|
|
1
4
|
import { tuple } from "@fncts/base/data/function";
|
|
5
|
+
import { AtomicBoolean } from "@fncts/base/internal/AtomicBoolean";
|
|
2
6
|
import { AtomicReference } from "@fncts/base/internal/AtomicReference";
|
|
3
7
|
|
|
4
8
|
/**
|
|
@@ -16,54 +20,48 @@ export function zipConcurrent<R1, E1, B>(that: IO<R1, E1, B>, __tsplusTrace?: st
|
|
|
16
20
|
export function zipWithConcurrent<A, R1, E1, B, C>(that: IO<R1, E1, B>, f: (a: A, b: B) => C, __tsplusTrace?: string) {
|
|
17
21
|
return <R, E>(self: IO<R, E, A>): IO<R | R1, E | E1, C> => {
|
|
18
22
|
return IO.fiberId.flatMap((fiberId) =>
|
|
19
|
-
IO.uninterruptibleMask((
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
graft
|
|
24
|
-
restore
|
|
25
|
-
(cause) => future.fail(undefined) > IO.failCauseNow(cause),
|
|
26
|
-
(a) =>
|
|
27
|
-
ref.getAndSet(Just(Either.left(a))).match(
|
|
28
|
-
() => IO.unit,
|
|
29
|
-
(value) =>
|
|
30
|
-
value.match(
|
|
31
|
-
() => IO.unit,
|
|
32
|
-
(b) => future.succeed(f(a, b)).asUnit,
|
|
33
|
-
),
|
|
34
|
-
),
|
|
35
|
-
),
|
|
36
|
-
)
|
|
37
|
-
.forkDaemon.zip(
|
|
38
|
-
graft(
|
|
39
|
-
restore(that).matchCauseIO(
|
|
40
|
-
(cause) => future.fail(undefined) > IO.failCauseNow(cause),
|
|
41
|
-
(b) =>
|
|
42
|
-
ref.getAndSet(Just(Either.right(b))).match(
|
|
43
|
-
() => IO.unit,
|
|
44
|
-
(value) =>
|
|
45
|
-
value.match(
|
|
46
|
-
(a) => future.succeed(f(a, b)).asUnit,
|
|
47
|
-
() => IO.unit,
|
|
48
|
-
),
|
|
49
|
-
),
|
|
50
|
-
),
|
|
51
|
-
).forkDaemon,
|
|
52
|
-
)
|
|
23
|
+
IO.uninterruptibleMask((restore) => {
|
|
24
|
+
return IO.transplant((graft) => {
|
|
25
|
+
const future = Future.unsafeMake<void, void>(FiberId.none);
|
|
26
|
+
const ref = new AtomicBoolean(false);
|
|
27
|
+
return fork(self, restore, graft, future, ref)
|
|
28
|
+
.zip(fork(that, restore, graft, future, ref))
|
|
53
29
|
.flatMap(([left, right]) =>
|
|
54
30
|
restore(future.await).matchCauseIO(
|
|
55
31
|
(cause) =>
|
|
56
|
-
left
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
32
|
+
left.interruptFork >
|
|
33
|
+
right.interruptFork >
|
|
34
|
+
left.await.zip(right.await).flatMap(([left, right]) =>
|
|
35
|
+
left
|
|
36
|
+
.zipWithCause(right, f, (a, b) => Cause.both(a, b))
|
|
37
|
+
.match(
|
|
38
|
+
(causes) => IO.refailCause(Cause.both(cause.stripFailures, causes)),
|
|
39
|
+
() => IO.refailCause(cause.stripFailures),
|
|
40
|
+
),
|
|
41
|
+
),
|
|
42
|
+
() => left.join.zipWith(right.join, f),
|
|
63
43
|
),
|
|
64
|
-
)
|
|
65
|
-
);
|
|
44
|
+
);
|
|
45
|
+
});
|
|
66
46
|
}),
|
|
67
47
|
);
|
|
68
48
|
};
|
|
69
49
|
}
|
|
50
|
+
|
|
51
|
+
function fork<R, E, A, C>(
|
|
52
|
+
io: Lazy<IO<R, E, A>>,
|
|
53
|
+
restore: InterruptibilityRestorer,
|
|
54
|
+
graft: Grafter,
|
|
55
|
+
future: Future<void, void>,
|
|
56
|
+
ref: AtomicBoolean,
|
|
57
|
+
): IO<R, never, Fiber<E, A>> {
|
|
58
|
+
return graft(restore(io())).matchCauseIO(
|
|
59
|
+
(cause) => future.fail(undefined) > IO.refailCause(cause),
|
|
60
|
+
(a) => {
|
|
61
|
+
if (ref.getAndSet(true)) {
|
|
62
|
+
future.unsafeDone(IO.unit);
|
|
63
|
+
}
|
|
64
|
+
return IO.succeedNow(a);
|
|
65
|
+
},
|
|
66
|
+
).forkDaemon;
|
|
67
|
+
}
|
package/_src/IO/api.ts
CHANGED
|
@@ -1061,6 +1061,16 @@ export function left<A>(a: Lazy<A>, __tsplusTrace?: string): UIO<Either<A, never
|
|
|
1061
1061
|
return IO.succeed(a).flatMap((a) => IO.succeedNow(Either.left(a)));
|
|
1062
1062
|
}
|
|
1063
1063
|
|
|
1064
|
+
/**
|
|
1065
|
+
* @tsplus getter fncts.io.IO just
|
|
1066
|
+
*/
|
|
1067
|
+
export function just<R, E, A>(self: IO<R, E, Maybe<A>>): IO<R, Maybe<E>, A> {
|
|
1068
|
+
return self.matchIO(
|
|
1069
|
+
(e) => IO.fail(Just(e)),
|
|
1070
|
+
(a) => a.match(() => IO.fail(Nothing()), IO.succeedNow),
|
|
1071
|
+
);
|
|
1072
|
+
}
|
|
1073
|
+
|
|
1064
1074
|
/**
|
|
1065
1075
|
* @tsplus static fncts.io.IOOps log
|
|
1066
1076
|
*/
|
|
@@ -1291,6 +1301,11 @@ export function mergeAll<R, E, A, B>(
|
|
|
1291
1301
|
return fas.foldLeft(IO.succeed(b) as IO<R, E, B>, (b, a) => b.zipWith(a, f));
|
|
1292
1302
|
}
|
|
1293
1303
|
|
|
1304
|
+
/**
|
|
1305
|
+
* @tsplus static fncts.io.IOOps nothing
|
|
1306
|
+
*/
|
|
1307
|
+
export const nothing = IO.succeedNow(Nothing());
|
|
1308
|
+
|
|
1294
1309
|
/**
|
|
1295
1310
|
* Converts an option on errors into an option on values.
|
|
1296
1311
|
*
|
|
@@ -1871,10 +1886,11 @@ export function when(b: Lazy<boolean>, __tsplusTrace?: string) {
|
|
|
1871
1886
|
* The moral equivalent of `if (p) exp` when `p` has side-effects
|
|
1872
1887
|
*
|
|
1873
1888
|
* @tsplus pipeable fncts.io.IO whenIO
|
|
1889
|
+
* @tsplus static fncts.io.IOOps whenIO
|
|
1874
1890
|
*/
|
|
1875
1891
|
export function whenIO<R1, E1>(mb: IO<R1, E1, boolean>, __tsplusTrace?: string) {
|
|
1876
|
-
return <R, E, A>(ma: IO<R, E, A>): IO<R1 | R, E | E1,
|
|
1877
|
-
return mb.flatMap((b) => (b ? ma.
|
|
1892
|
+
return <R, E, A>(ma: IO<R, E, A>): IO<R1 | R, E | E1, Maybe<A>> => {
|
|
1893
|
+
return mb.flatMap((b) => (b ? ma.asJust : IO.nothing));
|
|
1878
1894
|
};
|
|
1879
1895
|
}
|
|
1880
1896
|
|
package/_src/IO.ts
CHANGED
|
@@ -19,15 +19,17 @@ export * from "./IO/api/clockWith.js";
|
|
|
19
19
|
export * from "./IO/api/concurrency.js";
|
|
20
20
|
export * from "./IO/api/concurrentFinalizers.js";
|
|
21
21
|
export * from "./IO/api/consoleWith.js";
|
|
22
|
-
export * from "./IO/api/
|
|
22
|
+
export * from "./IO/api/daemonChildren.js";
|
|
23
23
|
export * from "./IO/api/delay.js";
|
|
24
24
|
export * from "./IO/api/descriptor.js";
|
|
25
|
+
export * from "./IO/api/disconnect.js";
|
|
25
26
|
export * from "./IO/api/ensuringChildren.js";
|
|
26
27
|
export * from "./IO/api/environment.js";
|
|
27
28
|
export * from "./IO/api/foreachConcurrent.js";
|
|
28
29
|
export * from "./IO/api/foreachExec.js";
|
|
29
30
|
export * from "./IO/api/fork.js";
|
|
30
31
|
export * from "./IO/api/forkAll.js";
|
|
32
|
+
export * from "./IO/api/forkDaemon.js";
|
|
31
33
|
export * from "./IO/api/forkIn.js";
|
|
32
34
|
export * from "./IO/api/forkScoped.js";
|
|
33
35
|
export * from "./IO/api/fulfill.js";
|
|
@@ -39,6 +41,7 @@ export * from "./IO/api/provideLayer.js";
|
|
|
39
41
|
export * from "./IO/api/provideSomeLayer.js";
|
|
40
42
|
export * from "./IO/api/race.js";
|
|
41
43
|
export * from "./IO/api/raceFirst.js";
|
|
44
|
+
export * from "./IO/api/raceWith.js";
|
|
42
45
|
export * from "./IO/api/randomWith.js";
|
|
43
46
|
export * from "./IO/api/repeat.js";
|
|
44
47
|
export * from "./IO/api/retry.js";
|
|
@@ -51,6 +54,9 @@ export * from "./IO/api/sleep.js";
|
|
|
51
54
|
export * from "./IO/api/stateful.js";
|
|
52
55
|
export * from "./IO/api/supervised.js";
|
|
53
56
|
export * from "./IO/api/timeout.js";
|
|
57
|
+
export * from "./IO/api/transplant.js";
|
|
58
|
+
export * from "./IO/api/whenFiberRef.js";
|
|
59
|
+
export * from "./IO/api/whenRef.js";
|
|
54
60
|
export * from "./IO/api/withChildren.js";
|
|
55
61
|
export * from "./IO/api/withEarlyRelease.js";
|
|
56
62
|
export * from "./IO/api/withFinalizer.js";
|
package/_src/Layer/MemoMap.ts
CHANGED
|
@@ -35,7 +35,7 @@ export class MemoMap {
|
|
|
35
35
|
const observers = _(Ref.make(0));
|
|
36
36
|
const future = _(Future.make<E, Environment<A>>());
|
|
37
37
|
const finalizerRef = _(Ref.make<Finalizer>(Finalizer.noop));
|
|
38
|
-
const resource = IO.uninterruptibleMask((
|
|
38
|
+
const resource = IO.uninterruptibleMask((restore) =>
|
|
39
39
|
Do((_) => {
|
|
40
40
|
const outerScope = scope;
|
|
41
41
|
const innerScope = _(Scope.make);
|
|
@@ -3,7 +3,7 @@ import type { Emitter } from "@fncts/io/Push";
|
|
|
3
3
|
import { AtomicReference } from "@fncts/base/internal/AtomicReference";
|
|
4
4
|
import { Hold, Push } from "@fncts/io/Push";
|
|
5
5
|
import { Atomic } from "@fncts/io/Ref";
|
|
6
|
-
import { RefSubjectInternal } from "@fncts/io/RefSubject";
|
|
6
|
+
import { RefSubjectInternal } from "@fncts/io/RefSubject/definition";
|
|
7
7
|
|
|
8
8
|
export class AtomicRefSubject<E, A> extends RefSubjectInternal<never, E, A, A> {
|
|
9
9
|
readonly stream = new Hold<never, E, A>(Push.never);
|
|
@@ -21,7 +21,7 @@ export function atomically<R, E, A>(stm: STM<R, E, A>, __tsplusTrace?: string):
|
|
|
21
21
|
const id = TxnId.make();
|
|
22
22
|
const state = new AtomicReference<CommitState<E, A>>(CommitState.Running);
|
|
23
23
|
const async = IO.async(tryCommitAsync(result.journal, fiberId, stm, id, state, r, scheduler));
|
|
24
|
-
return IO.uninterruptibleMask((
|
|
24
|
+
return IO.uninterruptibleMask((restore) =>
|
|
25
25
|
restore(async).catchAllCause((cause) => {
|
|
26
26
|
state.compareAndSet(CommitState.Running, CommitState.Interrupted);
|
|
27
27
|
const newState = state.get;
|
package/_src/ScopedRef/api.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @tsplus static fncts.io.ScopedRefOps fromAcquire
|
|
3
3
|
*/
|
|
4
4
|
export function fromAcquire<R, E, A>(acquire: IO<R, E, A>, __tsplusTrace?: string): IO<R | Scope, E, ScopedRef<A>> {
|
|
5
|
-
return IO.uninterruptibleMask((
|
|
5
|
+
return IO.uninterruptibleMask((restore) =>
|
|
6
6
|
Do((_) => {
|
|
7
7
|
const newScope = _(Scope.make);
|
|
8
8
|
const a = _(
|
|
@@ -23,7 +23,7 @@ class Synch<A> extends ScopedRef<A> {
|
|
|
23
23
|
close: UIO<void> = this.ref.get.flatMap(([scope, _]) => scope.close(Exit.unit));
|
|
24
24
|
set<R, E>(acquire: IO<R, E, A>, __tsplusTrace?: string): IO<Exclude<R, Scope>, E, void> {
|
|
25
25
|
return this.ref.modifyIO(([oldScope, a]) =>
|
|
26
|
-
IO.uninterruptibleMask((
|
|
26
|
+
IO.uninterruptibleMask((restore) =>
|
|
27
27
|
Do((_) => {
|
|
28
28
|
const newScope = _(Scope.make);
|
|
29
29
|
const exit = _(restore(acquire.provideSomeService(newScope, Scope.Tag)).result);
|
|
@@ -92,7 +92,7 @@ export function releaseWrite(self: TReentrantLock, __tsplusTrace?: string): USTM
|
|
|
92
92
|
export function withReadLock<R, E, A>(io: IO<R, E, A>, __tsplusTrace?: string) {
|
|
93
93
|
return (self: TReentrantLock): IO<R, E, A> => {
|
|
94
94
|
return IO.uninterruptibleMask(
|
|
95
|
-
(
|
|
95
|
+
(restore) => restore(self.acquireRead.commit) > restore(io).ensuring(self.releaseRead.commit),
|
|
96
96
|
);
|
|
97
97
|
};
|
|
98
98
|
}
|
|
@@ -103,7 +103,7 @@ export function withReadLock<R, E, A>(io: IO<R, E, A>, __tsplusTrace?: string) {
|
|
|
103
103
|
export function withWriteLock<R, E, A>(io: IO<R, E, A>, __tsplusTrace?: string) {
|
|
104
104
|
return (self: TReentrantLock): IO<R, E, A> => {
|
|
105
105
|
return IO.uninterruptibleMask(
|
|
106
|
-
(
|
|
106
|
+
(restore) => restore(self.acquireWrite.commit) > restore(io).ensuring(self.releaseWrite.commit),
|
|
107
107
|
);
|
|
108
108
|
};
|
|
109
109
|
}
|
package/_src/TSemaphore/api.ts
CHANGED
|
@@ -56,7 +56,7 @@ export function releaseN(n: number, __tsplusTrace?: string) {
|
|
|
56
56
|
export function withPermits(self: TSemaphore, __tsplusTrace?: string) {
|
|
57
57
|
return (n: number) =>
|
|
58
58
|
<R, E, A>(io: IO<R, E, A>) =>
|
|
59
|
-
IO.uninterruptibleMask((
|
|
59
|
+
IO.uninterruptibleMask((restore) =>
|
|
60
60
|
restore(self.acquireN(n).commit).zipRight(restore(io).ensuring(self.releaseN(n).commit)),
|
|
61
61
|
);
|
|
62
62
|
}
|
package/package.json
CHANGED
package/FiberRefs/join.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { FiberId } from "@fncts/base/data/FiberId/definition";
|
|
2
|
-
import { FiberRefs } from "@fncts/io/FiberRefs";
|
|
3
|
-
import { Cons, List } from "@fncts/base/collection/immutable/List/definition";
|
|
4
|
-
import { FiberRef } from "@fncts/io/FiberRef/definition";
|
|
5
|
-
/**
|
|
6
|
-
* @tsplus pipeable fncts.io.FiberRefs join
|
|
7
|
-
* @tsplus location "@fncts/io/FiberRefs/join"
|
|
8
|
-
*/
|
|
9
|
-
export declare function join(fiberId: FiberId.Runtime, that: FiberRefs): (self: FiberRefs) => FiberRefs;
|
package/IO/api/core-scope.d.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { Lazy } from "@fncts/base/data/function/definition";
|
|
2
|
-
import { Exit } from "@fncts/base/data/Exit/definition";
|
|
3
|
-
import { Fiber } from "@fncts/io/Fiber/definition";
|
|
4
|
-
import { URIO } from "@fncts/io/IO/definition";
|
|
5
|
-
import type { FiberRuntime } from "@fncts/io/Fiber/FiberRuntime";
|
|
6
|
-
import { IO } from "../definition.js";
|
|
7
|
-
/**
|
|
8
|
-
* @tsplus getter fncts.io.IO daemonChildren
|
|
9
|
-
* @tsplus location "@fncts/io/IO/api/core-scope"
|
|
10
|
-
*/
|
|
11
|
-
export declare function daemonChildren<R, E, A>(self: IO<R, E, A>, __tsplusTrace?: string): IO<R, E, A>;
|
|
12
|
-
/**
|
|
13
|
-
* @tsplus pipeable fncts.io.IO raceFibersWith
|
|
14
|
-
* @tsplus location "@fncts/io/IO/api/core-scope"
|
|
15
|
-
*/
|
|
16
|
-
export declare function raceFibersWith<R, E, A, R1, E1, B, R2, E2, C, R3, E3, D>(right: Lazy<IO<R1, E1, B>>, leftWins: (winner: FiberRuntime<E, A>, loser: FiberRuntime<E1, B>) => IO<R2, E2, C>, rightWins: (winner: FiberRuntime<E1, B>, loser: FiberRuntime<E, A>) => IO<R3, E3, D>, __tsplusTrace?: string): (left: IO<R, E, A>) => IO<R | R1 | R2 | R3, E2 | E3, C | D>;
|
|
17
|
-
/**
|
|
18
|
-
* Returns an effect that races this effect with the specified effect, calling
|
|
19
|
-
* the specified finisher as soon as one result or the other has been computed.
|
|
20
|
-
* @tsplus pipeable fncts.io.IO raceWith
|
|
21
|
-
* @tsplus location "@fncts/io/IO/api/core-scope"
|
|
22
|
-
*/
|
|
23
|
-
export declare function raceWith<R, E, A, R1, E1, A1, R2, E2, A2, R3, E3, A3>(right: Lazy<IO<R1, E1, A1>>, leftWins: (exit: Exit<E, A>, fiber: Fiber<E1, A1>) => IO<R2, E2, A2>, rightWins: (exit: Exit<E1, A1>, fiber: Fiber<E, A>) => IO<R3, E3, A3>, __tsplusTrace?: string): (left: IO<R, E, A>) => IO<R | R1 | R2 | R3, E2 | E3, A2 | A3>;
|
|
24
|
-
export type Grafter = <R, E, A>(effect: IO<R, E, A>) => IO<R, E, A>;
|
|
25
|
-
/**
|
|
26
|
-
* Transplants specified effects so that when those effects fork other
|
|
27
|
-
* effects, the forked effects will be governed by the scope of the
|
|
28
|
-
* fiber that executes this effect.
|
|
29
|
-
*
|
|
30
|
-
* This can be used to "graft" deep grandchildren onto a higher-level
|
|
31
|
-
* scope, effectively extending their lifespans into the parent scope.
|
|
32
|
-
* @tsplus static fncts.io.IOOps transplant
|
|
33
|
-
* @tsplus location "@fncts/io/IO/api/core-scope"
|
|
34
|
-
*/
|
|
35
|
-
export declare function transplant<R, E, A>(f: (_: Grafter) => IO<R, E, A>, __tsplusTrace?: string): IO<R, E, A>;
|
|
36
|
-
/**
|
|
37
|
-
* Forks the effect into a new fiber attached to the global scope. Because the
|
|
38
|
-
* new fiber is attached to the global scope, when the fiber executing the
|
|
39
|
-
* returned effect terminates, the forked fiber will continue running.
|
|
40
|
-
* @tsplus getter fncts.io.IO forkDaemon
|
|
41
|
-
* @tsplus location "@fncts/io/IO/api/core-scope"
|
|
42
|
-
*/
|
|
43
|
-
export declare function forkDaemon<R, E, A>(ma: IO<R, E, A>, __tsplusTrace?: string): URIO<R, FiberRuntime<E, A>>;
|
package/_cjs/FiberRefs/join.cjs
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.join = join;
|
|
7
|
-
var tsplus_module_1 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/FiberRefs"));
|
|
8
|
-
var tsplus_module_2 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/data/Equatable/api"));
|
|
9
|
-
var tsplus_module_3 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/FiberRef/api"));
|
|
10
|
-
var tsplus_module_4 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/collection/immutable/List/constructors"));
|
|
11
|
-
var tsplus_module_5 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/collection/immutable/HashMap/api"));
|
|
12
|
-
var tsplus_module_6 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/collection/immutable/List/definition"));
|
|
13
|
-
var tsplus_module_7 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/data/Maybe/destructors"));
|
|
14
|
-
var tsplus_module_8 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/data/number/instances"));
|
|
15
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
16
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
17
|
-
/**
|
|
18
|
-
* @tsplus pipeable fncts.io.FiberRefs join
|
|
19
|
-
*/
|
|
20
|
-
function join(fiberId, that) {
|
|
21
|
-
return self => {
|
|
22
|
-
const parentFiberRefs = tsplus_module_1.FiberRefs.reverseGet(self);
|
|
23
|
-
const childFiberRefs = tsplus_module_1.FiberRefs.reverseGet(that);
|
|
24
|
-
const fiberRefLocals = tsplus_module_5.foldLeftWithIndex(parentFiberRefs, (ref, parentFiberRefs, childStack) => {
|
|
25
|
-
const childValue = childStack.head[1];
|
|
26
|
-
if (tsplus_module_2.strictEquals(childStack.head[0], fiberId)) {
|
|
27
|
-
return parentFiberRefs;
|
|
28
|
-
}
|
|
29
|
-
return tsplus_module_7.match(() => {
|
|
30
|
-
if (tsplus_module_2.strictEquals(childValue, tsplus_module_3.initial(ref))) return parentFiberRefs;
|
|
31
|
-
return tsplus_module_5.set(ref, tsplus_module_4.cons([fiberId, childValue]))(parentFiberRefs);
|
|
32
|
-
}, parentStack => {
|
|
33
|
-
const [ancestor, wasModified] = findAncestor(ref, parentStack, childStack);
|
|
34
|
-
if (!wasModified) return parentFiberRefs;
|
|
35
|
-
const patch = tsplus_module_3.diff(ref)(ancestor, childValue);
|
|
36
|
-
const oldValue = parentStack.head[1];
|
|
37
|
-
const newValue = tsplus_module_3.join(oldValue, tsplus_module_3.patch(ref)(patch)(oldValue))(ref);
|
|
38
|
-
if (oldValue === newValue) return parentFiberRefs;
|
|
39
|
-
let newStack;
|
|
40
|
-
if (tsplus_module_6.isEmpty(parentStack)) {
|
|
41
|
-
newStack = tsplus_module_4.cons([fiberId, newValue]);
|
|
42
|
-
} else {
|
|
43
|
-
const [parentFiberId] = parentStack.head;
|
|
44
|
-
if (tsplus_module_2.strictEquals(parentFiberId, fiberId)) {
|
|
45
|
-
newStack = tsplus_module_4.cons([parentFiberId, newValue], parentStack.tail);
|
|
46
|
-
} else {
|
|
47
|
-
newStack = tsplus_module_4.cons([fiberId, newValue], parentStack);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return tsplus_module_5.set(ref, newStack)(parentFiberRefs);
|
|
51
|
-
})(tsplus_module_5.get(ref)(parentFiberRefs));
|
|
52
|
-
})(childFiberRefs);
|
|
53
|
-
return tsplus_module_1.FiberRefs.get(fiberRefLocals);
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
function compareFiberId(left, right) {
|
|
57
|
-
const compare = tsplus_module_8.Ord.compare(right.startTime)(left.startTime);
|
|
58
|
-
return compare === 0 ? tsplus_module_8.Ord.compare(right.id)(left.id) : compare;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* @tsplus tailRec
|
|
62
|
-
*/
|
|
63
|
-
function findAncestor(ref, parentStack, childStack, childModified = false) {
|
|
64
|
-
var ref_1 = ref,
|
|
65
|
-
parentStack_1 = parentStack,
|
|
66
|
-
childStack_1 = childStack,
|
|
67
|
-
childModified_1 = childModified;
|
|
68
|
-
var ref_2 = ref,
|
|
69
|
-
parentStack_2 = parentStack,
|
|
70
|
-
childStack_2 = childStack,
|
|
71
|
-
childModified_2 = childModified;
|
|
72
|
-
while (1) {
|
|
73
|
-
if (tsplus_module_6.isNonEmpty(parentStack_1) && tsplus_module_6.isNonEmpty(childStack_1)) {
|
|
74
|
-
const [parentFiberId] = parentStack_1.head;
|
|
75
|
-
const [childFiberId, childValue] = childStack_1.head;
|
|
76
|
-
const compare = compareFiberId(parentFiberId, childFiberId);
|
|
77
|
-
if (compare < 0) {
|
|
78
|
-
ref_2 = ref_1;
|
|
79
|
-
parentStack_2 = parentStack_1;
|
|
80
|
-
childStack_2 = childStack_1.tail;
|
|
81
|
-
childModified_2 = true;
|
|
82
|
-
ref_1 = ref_2;
|
|
83
|
-
parentStack_1 = parentStack_2;
|
|
84
|
-
childStack_1 = childStack_2;
|
|
85
|
-
childModified_1 = childModified_2;
|
|
86
|
-
continue;
|
|
87
|
-
} else if (compare > 0) {
|
|
88
|
-
ref_2 = ref_1;
|
|
89
|
-
parentStack_2 = parentStack_1.tail;
|
|
90
|
-
childStack_2 = childStack_1;
|
|
91
|
-
childModified_2 = childModified_1;
|
|
92
|
-
ref_1 = ref_2;
|
|
93
|
-
parentStack_1 = parentStack_2;
|
|
94
|
-
childStack_1 = childStack_2;
|
|
95
|
-
childModified_1 = childModified_2;
|
|
96
|
-
continue;
|
|
97
|
-
} else {
|
|
98
|
-
return [childValue, childModified_1];
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return [tsplus_module_3.initial(ref_1), true];
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
//# sourceMappingURL=join.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"join.cjs","mappings":"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","names":["join","fiberId","that","self","parentFiberRefs","tsplus_module_1","reverseGet","childFiberRefs","fiberRefLocals","tsplus_module_5","ref","childStack","childValue","head","tsplus_module_7","tsplus_module_2","tsplus_module_4","parentStack","ancestor","wasModified","findAncestor","patch","tsplus_module_3","oldValue","newValue","newStack","tsplus_module_6","parentFiberId","tail","get","compareFiberId","left","right","compare","tsplus_module_8","startTime","id","childModified","parentStack_1","childStack_1","childModified_1","parentStack_2","childStack_2","childModified_2","childFiberId"],"sourceRoot":"","sources":["../../_src/FiberRefs/join.ts"],"sourcesContent":[null]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core-scope.cjs","mappings":";;;;;;;;;;;;;;;;;AAGA;AAAmE;AAAA;MASnDA,cAAc;AAAA;MAOdC,cAAc;AAAA;AAV9B;;;AAGA,0BAAwCC,IAAiB,EAAEC,aAAsB;EAC/E,OAAOC,2DAAmCC,4CAAuB,EADRF,cACS,CAACD,IAAI,CAAC;AAC1E;AAEA;;;AAGA,0BACEI,KAA0B,EAC1BC,QAAmF,EACnFC,SAAoF,EACpFL,aAAsB;EAEtB,OAAQM,IAAiB,IAA0C;IACjE,OAAOC,iCAAoB,CAACC,WAAW,EAAEC,YAAY,KAAI;MACvD,MAAMC,MAAM,GAAeP,KAAK,EAAE;MAClC,MAAMQ,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,IAAIC,4BAAa,CAAC,IAAI,CAAC;MAC7C,MAAMC,SAAS,GAAO,wCAAoB,EAAChB,IAAI,EAAEE,WAAW,EAAEG,kBAAkB,EAAE,IAAI,EAAEX,aAAa,CAAC;MACtG,MAAMuB,UAAU,GAAM,wCAAoB,EAACb,MAAM,EAAEF,WAAW,EAAEG,kBAAkB,EAAE,IAAI,EAAEX,aAAa,CAAC;MACxGsB,SAAS,CAACE,WAAW,oCAA6BtB,qBAAKM,WAAW,CAACiB,KAAK,CAAC,CAAC;MAC1EF,UAAU,CAACC,WAAW,oCAA6BtB,qBAAKM,WAAW,CAACiB,KAAK,CAAC,CAAC;MAE3E,OAAOlB,sBAAUW,EAAE,IAAI;QACrBI,SAAS,CAACI,WAAW,CAAC,MAAMb,QAAQ,CAACS,SAAS,EAAEC,UAAU,EAAEnB,QAAQ,EAAEgB,aAAa,EAAEF,EAAE,CAAC,CAAC;QACzFK,UAAU,CAACG,WAAW,CAAC,MAAMb,QAAQ,CAACU,UAAU,EAAED,SAAS,EAAEjB,SAAS,EAAEe,aAAa,EAAEF,EAAE,CAAC,CAAC;QAC3FI,SAAS,CAACK,SAAS,CAACrB,IAAI,CAAC;QACzBiB,UAAU,CAACI,SAAS,CAACjB,MAAM,CAAC;MAC9B,CAAC,CAAC;IACJ,CAAC,EA9BHV,cA8BI;EACJ,CAAC;AACH;AAEA;;;;;;AAMM,SAAU4B,QAAQ,CACtBzB,KAA2B,EAC3BC,QAAoE,EACpEC,SAAqE,EACrEL,aAAsB;EAEtB,OAAQM,IAAiB,IAA4C;IACnE,OAAOuB,iBACL1B,KAAK,EACL,CAACW,MAAM,EAAEC,KAAK,KACZR,wBAAsBuB,IAAI,IAAI;MAC5B,QAAQA,IAAI,CAACC,IAAI;QACf;UACE,OAAOxB,wBAA0B,MAAMH,QAAQ,CAAC0B,IAAI,EAAEf,KAAK,CAAC,EATxEf,eASmBc,MAAM,CAACkB,UAAU,CAAqC;QAC/D;UACE,OAAO5B,QAAQ,CAAC0B,IAAI,EAAEf,KAAK,CAAC;MAAC;IAEnC,CAAC,EAbPf,eAMMc,MAAM,CAACmB,KAAK,CAOV,EACJ,CAACnB,MAAM,EAAEC,KAAK,KACZR,wBAAsBuB,IAAI,IAAI;MAC5B,QAAQA,IAAI,CAACC,IAAI;QACf;UACE,OAAOxB,wBAA0B,MAAMF,SAAS,CAACyB,IAAI,EAAEf,KAAK,CAAC,EAlBzEf,eAkBmBc,MAAM,CAACkB,UAAU,CAAsC;QAChE;UACE,OAAO3B,SAAS,CAACyB,IAAI,EAAEf,KAAK,CAAC;MAAC;IAEpC,CAAC,EAtBPf,eAeMc,MAAM,CAACmB,KAAK,CAOV,EAtBRjC,eAGSM,IAAI,CAoBV;EACH,CAAC;AACH;AAIA;;;;;;;;;;AAUM,SAAU4B,UAAU,CAAUC,CAA8B,EAAEnC,aAAsB;EACxF,OAAOO,iCAAqB6B,UAAU,IAAI;IACxC,MAAMC,aAAa,GAAGD,UAAU,CAACE,WAAW,mCAA4B;IACxE,MAAMb,KAAK,GAAWc,gCAAwBH,UAAU,CAACX,KAAK,EAAxCY,aAAa,CAA4B;IAC/D,OAAOF,CAAC,CAAClC,2DAAmCC,qBAAKuB,KAAK,CAAC,EAJSzB,cAIR,CAAC;EAC3D,CAAC,EALiEA,cAKhE;AACJ;AAEA;;;;;;;AAOM,SAAUwC,UAAU,CAAUC,EAAe,EAAEzC,aAAsB;EACzE,6CAAOyC,EAAE,EAD0CzC;AAErD","names":["daemonChildren","raceFibersWith","self","__tsplusTrace","tsplus_module_4","tsplus_module_2","right","leftWins","rightWins","left","tsplus_module_5","parentState","parentStatus","right0","parentRuntimeFlags","runtimeFlags","complete","winner","loser","cont","ab","cb","compareAndSet","raceIndicator","AtomicBoolean","leftFiber","rightFiber","setFiberRef","scope","addObserver","startFork","raceWith","raceFibersWith_1","exit","_tag","inheritAll","await","transplant","f","fiberState","scopeOverride","getFiberRef","tsplus_module_6","forkDaemon","ma"],"sourceRoot":"","sources":["../../../_src/IO/api/core-scope.ts"],"sourcesContent":[null]}
|
package/_mjs/FiberRefs/join.mjs
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import * as tsplus_module_1 from "@fncts/io/FiberRefs";
|
|
2
|
-
import * as tsplus_module_2 from "@fncts/base/data/Equatable/api";
|
|
3
|
-
import * as tsplus_module_3 from "@fncts/io/FiberRef/api";
|
|
4
|
-
import * as tsplus_module_4 from "@fncts/base/collection/immutable/List/constructors";
|
|
5
|
-
import * as tsplus_module_5 from "@fncts/base/collection/immutable/HashMap/api";
|
|
6
|
-
import * as tsplus_module_6 from "@fncts/base/collection/immutable/List/definition";
|
|
7
|
-
import * as tsplus_module_7 from "@fncts/base/data/Maybe/destructors";
|
|
8
|
-
import * as tsplus_module_8 from "@fncts/base/data/number/instances";
|
|
9
|
-
/**
|
|
10
|
-
* @tsplus pipeable fncts.io.FiberRefs join
|
|
11
|
-
*/
|
|
12
|
-
export function join(fiberId, that) {
|
|
13
|
-
return self => {
|
|
14
|
-
const parentFiberRefs = tsplus_module_1.FiberRefs.reverseGet(self);
|
|
15
|
-
const childFiberRefs = tsplus_module_1.FiberRefs.reverseGet(that);
|
|
16
|
-
const fiberRefLocals = tsplus_module_5.foldLeftWithIndex(parentFiberRefs, (ref, parentFiberRefs, childStack) => {
|
|
17
|
-
const childValue = childStack.head[1];
|
|
18
|
-
if (tsplus_module_2.strictEquals(childStack.head[0], fiberId)) {
|
|
19
|
-
return parentFiberRefs;
|
|
20
|
-
}
|
|
21
|
-
return tsplus_module_7.match(() => {
|
|
22
|
-
if (tsplus_module_2.strictEquals(childValue, tsplus_module_3.initial(ref))) return parentFiberRefs;
|
|
23
|
-
return tsplus_module_5.set(ref, tsplus_module_4.cons([fiberId, childValue]))(parentFiberRefs);
|
|
24
|
-
}, parentStack => {
|
|
25
|
-
const [ancestor, wasModified] = findAncestor(ref, parentStack, childStack);
|
|
26
|
-
if (!wasModified) return parentFiberRefs;
|
|
27
|
-
const patch = tsplus_module_3.diff(ref)(ancestor, childValue);
|
|
28
|
-
const oldValue = parentStack.head[1];
|
|
29
|
-
const newValue = tsplus_module_3.join(oldValue, tsplus_module_3.patch(ref)(patch)(oldValue))(ref);
|
|
30
|
-
if (oldValue === newValue) return parentFiberRefs;
|
|
31
|
-
let newStack;
|
|
32
|
-
if (tsplus_module_6.isEmpty(parentStack)) {
|
|
33
|
-
newStack = tsplus_module_4.cons([fiberId, newValue]);
|
|
34
|
-
} else {
|
|
35
|
-
const [parentFiberId] = parentStack.head;
|
|
36
|
-
if (tsplus_module_2.strictEquals(parentFiberId, fiberId)) {
|
|
37
|
-
newStack = tsplus_module_4.cons([parentFiberId, newValue], parentStack.tail);
|
|
38
|
-
} else {
|
|
39
|
-
newStack = tsplus_module_4.cons([fiberId, newValue], parentStack);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return tsplus_module_5.set(ref, newStack)(parentFiberRefs);
|
|
43
|
-
})(tsplus_module_5.get(ref)(parentFiberRefs));
|
|
44
|
-
})(childFiberRefs);
|
|
45
|
-
return tsplus_module_1.FiberRefs.get(fiberRefLocals);
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
function compareFiberId(left, right) {
|
|
49
|
-
const compare = tsplus_module_8.Ord.compare(right.startTime)(left.startTime);
|
|
50
|
-
return compare === 0 ? tsplus_module_8.Ord.compare(right.id)(left.id) : compare;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* @tsplus tailRec
|
|
54
|
-
*/
|
|
55
|
-
function findAncestor(ref, parentStack, childStack, childModified = false) {
|
|
56
|
-
var ref_1 = ref,
|
|
57
|
-
parentStack_1 = parentStack,
|
|
58
|
-
childStack_1 = childStack,
|
|
59
|
-
childModified_1 = childModified;
|
|
60
|
-
var ref_2 = ref,
|
|
61
|
-
parentStack_2 = parentStack,
|
|
62
|
-
childStack_2 = childStack,
|
|
63
|
-
childModified_2 = childModified;
|
|
64
|
-
while (1) {
|
|
65
|
-
if (tsplus_module_6.isNonEmpty(parentStack_1) && tsplus_module_6.isNonEmpty(childStack_1)) {
|
|
66
|
-
const [parentFiberId] = parentStack_1.head;
|
|
67
|
-
const [childFiberId, childValue] = childStack_1.head;
|
|
68
|
-
const compare = compareFiberId(parentFiberId, childFiberId);
|
|
69
|
-
if (compare < 0) {
|
|
70
|
-
ref_2 = ref_1;
|
|
71
|
-
parentStack_2 = parentStack_1;
|
|
72
|
-
childStack_2 = childStack_1.tail;
|
|
73
|
-
childModified_2 = true;
|
|
74
|
-
ref_1 = ref_2;
|
|
75
|
-
parentStack_1 = parentStack_2;
|
|
76
|
-
childStack_1 = childStack_2;
|
|
77
|
-
childModified_1 = childModified_2;
|
|
78
|
-
continue;
|
|
79
|
-
} else if (compare > 0) {
|
|
80
|
-
ref_2 = ref_1;
|
|
81
|
-
parentStack_2 = parentStack_1.tail;
|
|
82
|
-
childStack_2 = childStack_1;
|
|
83
|
-
childModified_2 = childModified_1;
|
|
84
|
-
ref_1 = ref_2;
|
|
85
|
-
parentStack_1 = parentStack_2;
|
|
86
|
-
childStack_1 = childStack_2;
|
|
87
|
-
childModified_1 = childModified_2;
|
|
88
|
-
continue;
|
|
89
|
-
} else {
|
|
90
|
-
return [childValue, childModified_1];
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return [tsplus_module_3.initial(ref_1), true];
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=join.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"join.mjs","mappings":"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","names":["join","fiberId","that","self","parentFiberRefs","tsplus_module_1","reverseGet","childFiberRefs","fiberRefLocals","tsplus_module_5","ref","childStack","childValue","head","tsplus_module_7","tsplus_module_2","tsplus_module_4","parentStack","ancestor","wasModified","findAncestor","patch","tsplus_module_3","oldValue","newValue","newStack","tsplus_module_6","parentFiberId","tail","get","compareFiberId","left","right","compare","tsplus_module_8","startTime","id","childModified","parentStack_1","childStack_1","childModified_1","parentStack_2","childStack_2","childModified_2","childFiberId"],"sourceRoot":"","sources":["../../_src/FiberRefs/join.ts"],"sourcesContent":[null]}
|