@fncts/io 0.0.24 → 0.0.26
Sign up to get free protection for your applications and to get access to all the features.
- package/FiberRef/api.d.ts +0 -63
- package/FiberRef/operations.d.ts +64 -0
- package/FiberRef.d.ts +1 -0
- package/FiberRefs/api.d.ts +6 -1
- package/FiberRefs.d.ts +0 -1
- package/IO/api/daemonChildren.d.ts +6 -0
- package/IO/api/disconnect.d.ts +17 -0
- package/IO/api/fork.d.ts +4 -0
- package/IO/api/forkDaemon.d.ts +10 -0
- package/IO/api/interrupt.d.ts +1 -20
- package/IO/api/race.d.ts +7 -1
- package/IO/api/raceWith.d.ts +17 -0
- package/IO/api/transplant.d.ts +13 -0
- package/IO/api/whenFiberRef.d.ts +10 -0
- package/IO/api/whenRef.d.ts +10 -0
- package/IO/api/zipConcurrent.d.ts +5 -4
- package/IO/api.d.ts +12 -1
- package/IO.d.ts +7 -1
- package/RefSubject/Atomic.d.ts +1 -1
- package/_cjs/Cached/api.cjs +1 -1
- package/_cjs/Channel/api/mergeAllWith.cjs +1 -1
- package/_cjs/Channel/api/mergeWith.cjs +17 -16
- package/_cjs/Channel/api/mergeWith.cjs.map +1 -1
- package/_cjs/Channel/api.cjs +1 -3
- package/_cjs/Channel/api.cjs.map +1 -1
- package/_cjs/Fiber/FiberRuntime.cjs +16 -17
- package/_cjs/Fiber/FiberRuntime.cjs.map +1 -1
- package/_cjs/FiberRef/api/locallyScoped.cjs +1 -1
- package/_cjs/FiberRef/api/locallyScopedWith.cjs +1 -1
- package/_cjs/FiberRef/api.cjs +0 -124
- package/_cjs/FiberRef/api.cjs.map +1 -1
- package/_cjs/FiberRef/constructors.cjs +1 -1
- package/_cjs/FiberRef/operations.cjs +130 -0
- package/_cjs/FiberRef/operations.cjs.map +1 -0
- package/_cjs/FiberRef.cjs +11 -0
- package/_cjs/FiberRef.cjs.map +1 -1
- package/_cjs/FiberRefs/api.cjs +90 -0
- package/_cjs/FiberRefs/api.cjs.map +1 -1
- package/_cjs/FiberRefs.cjs +0 -11
- package/_cjs/FiberRefs.cjs.map +1 -1
- package/_cjs/Future/api.cjs +1 -3
- package/_cjs/Future/api.cjs.map +1 -1
- package/_cjs/IO/api/asyncIO.cjs +1 -3
- package/_cjs/IO/api/asyncIO.cjs.map +1 -1
- package/_cjs/IO/api/bracketExit.cjs +1 -3
- package/_cjs/IO/api/bracketExit.cjs.map +1 -1
- package/_cjs/IO/api/clockWith.cjs +1 -1
- package/_cjs/IO/api/concurrency.cjs +1 -1
- package/_cjs/IO/api/consoleWith.cjs +1 -1
- package/_cjs/IO/api/daemonChildren.cjs +19 -0
- package/_cjs/IO/api/daemonChildren.cjs.map +1 -0
- package/_cjs/IO/api/disconnect.cjs +31 -0
- package/_cjs/IO/api/disconnect.cjs.map +1 -0
- package/_cjs/IO/api/environment.cjs +1 -1
- package/_cjs/IO/api/foreachConcurrent.cjs +19 -20
- package/_cjs/IO/api/foreachConcurrent.cjs.map +1 -1
- package/_cjs/IO/api/fork.cjs +8 -3
- package/_cjs/IO/api/fork.cjs.map +1 -1
- package/_cjs/IO/api/forkDaemon.cjs +21 -0
- package/_cjs/IO/api/forkDaemon.cjs.map +1 -0
- package/_cjs/IO/api/forkIn.cjs +2 -4
- package/_cjs/IO/api/forkIn.cjs.map +1 -1
- package/_cjs/IO/api/forkScoped.cjs +2 -4
- package/_cjs/IO/api/forkScoped.cjs.map +1 -1
- package/_cjs/IO/api/fulfill.cjs +1 -3
- package/_cjs/IO/api/fulfill.cjs.map +1 -1
- package/_cjs/IO/api/interrupt.cjs +8 -59
- package/_cjs/IO/api/interrupt.cjs.map +1 -1
- package/_cjs/IO/api/race.cjs +24 -12
- package/_cjs/IO/api/race.cjs.map +1 -1
- package/_cjs/IO/api/{core-scope.cjs → raceWith.cjs} +15 -56
- package/_cjs/IO/api/raceWith.cjs.map +1 -0
- package/_cjs/IO/api/randomWith.cjs +1 -1
- package/_cjs/IO/api/supervised.cjs +1 -1
- package/_cjs/IO/api/transplant.cjs +31 -0
- package/_cjs/IO/api/transplant.cjs.map +1 -0
- package/_cjs/IO/api/whenFiberRef.cjs +20 -0
- package/_cjs/IO/api/whenFiberRef.cjs.map +1 -0
- package/_cjs/IO/api/whenRef.cjs +21 -0
- package/_cjs/IO/api/whenRef.cjs.map +1 -0
- package/_cjs/IO/api/zipConcurrent.cjs +25 -19
- package/_cjs/IO/api/zipConcurrent.cjs.map +1 -1
- package/_cjs/IO/api.cjs +21 -5
- package/_cjs/IO/api.cjs.map +1 -1
- package/_cjs/IO.cjs +70 -4
- package/_cjs/IO.cjs.map +1 -1
- package/_cjs/Layer/MemoMap.cjs +1 -3
- package/_cjs/Layer/MemoMap.cjs.map +1 -1
- package/_cjs/RefSubject/Atomic.cjs +2 -2
- package/_cjs/RefSubject/Atomic.cjs.map +1 -1
- package/_cjs/Reloadable/constructors.cjs +1 -1
- package/_cjs/Reloadable/definition.cjs +1 -1
- package/_cjs/STM/api/atomically.cjs +2 -4
- package/_cjs/STM/api/atomically.cjs.map +1 -1
- package/_cjs/ScopedRef/api.cjs +2 -6
- package/_cjs/ScopedRef/api.cjs.map +1 -1
- package/_cjs/State/api.cjs +1 -1
- package/_cjs/Stream/api.cjs +137 -135
- package/_cjs/Stream/api.cjs.map +1 -1
- package/_cjs/TReentrantLock/api.cjs +2 -6
- package/_cjs/TReentrantLock/api.cjs.map +1 -1
- package/_cjs/TSemaphore/api.cjs +1 -3
- package/_cjs/TSemaphore/api.cjs.map +1 -1
- package/_mjs/Cached/api.mjs +1 -1
- package/_mjs/Channel/api/mergeAllWith.mjs +1 -1
- package/_mjs/Channel/api/mergeWith.mjs +17 -16
- package/_mjs/Channel/api/mergeWith.mjs.map +1 -1
- package/_mjs/Channel/api.mjs +1 -3
- package/_mjs/Channel/api.mjs.map +1 -1
- package/_mjs/Fiber/FiberRuntime.mjs +16 -17
- package/_mjs/Fiber/FiberRuntime.mjs.map +1 -1
- package/_mjs/FiberRef/api/locallyScoped.mjs +1 -1
- package/_mjs/FiberRef/api/locallyScopedWith.mjs +1 -1
- package/_mjs/FiberRef/api.mjs +0 -107
- package/_mjs/FiberRef/api.mjs.map +1 -1
- package/_mjs/FiberRef/constructors.mjs +1 -1
- package/_mjs/FiberRef/operations.mjs +109 -0
- package/_mjs/FiberRef/operations.mjs.map +1 -0
- package/_mjs/FiberRef.mjs +1 -0
- package/_mjs/FiberRef.mjs.map +1 -1
- package/_mjs/FiberRefs/api.mjs +89 -0
- package/_mjs/FiberRefs/api.mjs.map +1 -1
- package/_mjs/FiberRefs.mjs +0 -1
- package/_mjs/FiberRefs.mjs.map +1 -1
- package/_mjs/Future/api.mjs +1 -3
- package/_mjs/Future/api.mjs.map +1 -1
- package/_mjs/IO/api/asyncIO.mjs +1 -3
- package/_mjs/IO/api/asyncIO.mjs.map +1 -1
- package/_mjs/IO/api/bracketExit.mjs +1 -3
- package/_mjs/IO/api/bracketExit.mjs.map +1 -1
- package/_mjs/IO/api/clockWith.mjs +1 -1
- package/_mjs/IO/api/concurrency.mjs +1 -1
- package/_mjs/IO/api/consoleWith.mjs +1 -1
- package/_mjs/IO/api/daemonChildren.mjs +11 -0
- package/_mjs/IO/api/daemonChildren.mjs.map +1 -0
- package/_mjs/IO/api/disconnect.mjs +23 -0
- package/_mjs/IO/api/disconnect.mjs.map +1 -0
- package/_mjs/IO/api/environment.mjs +1 -1
- package/_mjs/IO/api/foreachConcurrent.mjs +19 -20
- package/_mjs/IO/api/foreachConcurrent.mjs.map +1 -1
- package/_mjs/IO/api/fork.mjs +6 -2
- package/_mjs/IO/api/fork.mjs.map +1 -1
- package/_mjs/IO/api/forkDaemon.mjs +13 -0
- package/_mjs/IO/api/forkDaemon.mjs.map +1 -0
- package/_mjs/IO/api/forkIn.mjs +2 -4
- package/_mjs/IO/api/forkIn.mjs.map +1 -1
- package/_mjs/IO/api/forkScoped.mjs +2 -4
- package/_mjs/IO/api/forkScoped.mjs.map +1 -1
- package/_mjs/IO/api/fulfill.mjs +1 -3
- package/_mjs/IO/api/fulfill.mjs.map +1 -1
- package/_mjs/IO/api/interrupt.mjs +6 -55
- package/_mjs/IO/api/interrupt.mjs.map +1 -1
- package/_mjs/IO/api/race.mjs +22 -12
- package/_mjs/IO/api/race.mjs.map +1 -1
- package/_mjs/IO/api/raceWith.mjs +59 -0
- package/_mjs/IO/api/raceWith.mjs.map +1 -0
- package/_mjs/IO/api/randomWith.mjs +1 -1
- package/_mjs/IO/api/supervised.mjs +1 -1
- package/_mjs/IO/api/transplant.mjs +23 -0
- package/_mjs/IO/api/transplant.mjs.map +1 -0
- package/_mjs/IO/api/whenFiberRef.mjs +12 -0
- package/_mjs/IO/api/whenFiberRef.mjs.map +1 -0
- package/_mjs/IO/api/whenRef.mjs +13 -0
- package/_mjs/IO/api/whenRef.mjs.map +1 -0
- package/_mjs/IO/api/zipConcurrent.mjs +23 -17
- package/_mjs/IO/api/zipConcurrent.mjs.map +1 -1
- package/_mjs/IO/api.mjs +16 -3
- package/_mjs/IO/api.mjs.map +1 -1
- package/_mjs/IO.mjs +7 -1
- package/_mjs/IO.mjs.map +1 -1
- package/_mjs/Layer/MemoMap.mjs +1 -3
- package/_mjs/Layer/MemoMap.mjs.map +1 -1
- package/_mjs/RefSubject/Atomic.mjs +1 -1
- package/_mjs/RefSubject/Atomic.mjs.map +1 -1
- package/_mjs/Reloadable/constructors.mjs +1 -1
- package/_mjs/Reloadable/definition.mjs +1 -1
- package/_mjs/STM/api/atomically.mjs +2 -4
- package/_mjs/STM/api/atomically.mjs.map +1 -1
- package/_mjs/ScopedRef/api.mjs +2 -6
- package/_mjs/ScopedRef/api.mjs.map +1 -1
- package/_mjs/State/api.mjs +1 -1
- package/_mjs/Stream/api.mjs +137 -135
- package/_mjs/Stream/api.mjs.map +1 -1
- package/_mjs/TReentrantLock/api.mjs +2 -6
- package/_mjs/TReentrantLock/api.mjs.map +1 -1
- package/_mjs/TSemaphore/api.mjs +1 -3
- package/_mjs/TSemaphore/api.mjs.map +1 -1
- package/_src/Channel/api.ts +1 -1
- package/_src/FiberRef/api.ts +0 -114
- package/_src/FiberRef/operations.ts +115 -0
- package/_src/FiberRef.ts +1 -0
- package/_src/FiberRefs/api.ts +72 -0
- package/_src/FiberRefs.ts +0 -1
- package/_src/Future/api.ts +1 -1
- package/_src/IO/api/asyncIO.ts +1 -1
- package/_src/IO/api/bracketExit.ts +1 -1
- package/_src/IO/api/daemonChildren.ts +6 -0
- package/_src/IO/api/disconnect.ts +25 -0
- package/_src/IO/api/foreachConcurrent.ts +1 -1
- package/_src/IO/api/fork.ts +3 -0
- package/_src/IO/api/forkDaemon.ts +12 -0
- package/_src/IO/api/forkIn.ts +1 -1
- package/_src/IO/api/forkScoped.ts +1 -3
- package/_src/IO/api/fulfill.ts +1 -1
- package/_src/IO/api/interrupt.ts +5 -56
- package/_src/IO/api/race.ts +18 -8
- package/_src/IO/api/{core-scope.ts → raceWith.ts} +2 -44
- package/_src/IO/api/transplant.ts +19 -0
- package/_src/IO/api/whenFiberRef.ts +9 -0
- package/_src/IO/api/whenRef.ts +9 -0
- package/_src/IO/api/zipConcurrent.ts +41 -43
- package/_src/IO/api.ts +18 -2
- package/_src/IO.ts +7 -1
- package/_src/Layer/MemoMap.ts +1 -1
- package/_src/RefSubject/Atomic.ts +1 -1
- package/_src/STM/api/atomically.ts +1 -1
- package/_src/ScopedRef/api.ts +2 -2
- package/_src/TReentrantLock/api.ts +2 -2
- package/_src/TSemaphore/api.ts +1 -1
- package/package.json +2 -2
- package/FiberRefs/join.d.ts +0 -9
- package/IO/api/core-scope.d.ts +0 -43
- package/_cjs/FiberRefs/join.cjs +0 -104
- package/_cjs/FiberRefs/join.cjs.map +0 -1
- package/_cjs/IO/api/core-scope.cjs.map +0 -1
- package/_mjs/FiberRefs/join.mjs +0 -96
- package/_mjs/FiberRefs/join.mjs.map +0 -1
- package/_mjs/IO/api/core-scope.mjs +0 -97
- package/_mjs/IO/api/core-scope.mjs.map +0 -1
- package/_src/FiberRefs/join.ts +0 -71
@@ -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":"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","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]}
|