@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,97 +0,0 @@
|
|
1
|
-
import * as tsplus_module_1 from "@fncts/io/FiberScope/constructors";
|
2
|
-
import * as tsplus_module_2 from "@fncts/base/data/Maybe/constructors";
|
3
|
-
import * as tsplus_module_3 from "@fncts/io/FiberRef/unsafe";
|
4
|
-
import * as tsplus_module_4 from "@fncts/io/FiberRef/api";
|
5
|
-
import * as tsplus_module_5 from "@fncts/io/IO/api";
|
6
|
-
import * as tsplus_module_6 from "@fncts/base/data/Maybe/api";
|
7
|
-
import * as tsplus_module_7 from "@fncts/io/IO/api/fork";
|
8
|
-
export const daemonChildren = daemonChildren_1;
|
9
|
-
export const raceFibersWith = raceFibersWith_1;
|
10
|
-
import { AtomicBoolean } from "@fncts/base/internal/AtomicBoolean";
|
11
|
-
import { unsafeMakeChildFiber } from "@fncts/io/IO/api/fork";
|
12
|
-
/**
|
13
|
-
* @tsplus getter fncts.io.IO daemonChildren
|
14
|
-
*/
|
15
|
-
function daemonChildren_1(self, __tsplusTrace) {
|
16
|
-
return tsplus_module_4.locally(tsplus_module_3.forkScopeOverride, tsplus_module_2.just(tsplus_module_1.global), __tsplusTrace)(self);
|
17
|
-
}
|
18
|
-
/**
|
19
|
-
* @tsplus pipeable fncts.io.IO raceFibersWith
|
20
|
-
*/
|
21
|
-
function raceFibersWith_1(right, leftWins, rightWins, __tsplusTrace) {
|
22
|
-
return left => {
|
23
|
-
return tsplus_module_5.withFiberRuntime((parentState, parentStatus) => {
|
24
|
-
const right0 = right();
|
25
|
-
const parentRuntimeFlags = parentStatus.runtimeFlags;
|
26
|
-
function complete(winner, loser, cont, ab, cb) {
|
27
|
-
if (ab.compareAndSet(true, false)) {
|
28
|
-
cb(cont(winner, loser));
|
29
|
-
}
|
30
|
-
}
|
31
|
-
const raceIndicator = new AtomicBoolean(true);
|
32
|
-
const leftFiber = unsafeMakeChildFiber(left, parentState, parentRuntimeFlags, null, __tsplusTrace);
|
33
|
-
const rightFiber = unsafeMakeChildFiber(right0, parentState, parentRuntimeFlags, null, __tsplusTrace);
|
34
|
-
leftFiber.setFiberRef(tsplus_module_3.forkScopeOverride, tsplus_module_2.just(parentState.scope));
|
35
|
-
rightFiber.setFiberRef(tsplus_module_3.forkScopeOverride, tsplus_module_2.just(parentState.scope));
|
36
|
-
return tsplus_module_5.async(cb => {
|
37
|
-
leftFiber.addObserver(() => complete(leftFiber, rightFiber, leftWins, raceIndicator, cb));
|
38
|
-
rightFiber.addObserver(() => complete(rightFiber, leftFiber, rightWins, raceIndicator, cb));
|
39
|
-
leftFiber.startFork(left);
|
40
|
-
rightFiber.startFork(right0);
|
41
|
-
});
|
42
|
-
}, __tsplusTrace);
|
43
|
-
};
|
44
|
-
}
|
45
|
-
/**
|
46
|
-
* Returns an effect that races this effect with the specified effect, calling
|
47
|
-
* the specified finisher as soon as one result or the other has been computed.
|
48
|
-
*
|
49
|
-
* @tsplus pipeable fncts.io.IO raceWith
|
50
|
-
*/
|
51
|
-
export function raceWith(right, leftWins, rightWins, __tsplusTrace) {
|
52
|
-
return left => {
|
53
|
-
return raceFibersWith_1(right, (winner, loser) => tsplus_module_5.flatMap(exit => {
|
54
|
-
switch (exit._tag) {
|
55
|
-
case "Success" /* ExitTag.Success */:
|
56
|
-
return tsplus_module_5.flatMap(() => leftWins(exit, loser), __tsplusTrace)(winner.inheritAll);
|
57
|
-
case "Failure" /* ExitTag.Failure */:
|
58
|
-
return leftWins(exit, loser);
|
59
|
-
}
|
60
|
-
}, __tsplusTrace)(winner.await), (winner, loser) => tsplus_module_5.flatMap(exit => {
|
61
|
-
switch (exit._tag) {
|
62
|
-
case "Success" /* ExitTag.Success */:
|
63
|
-
return tsplus_module_5.flatMap(() => rightWins(exit, loser), __tsplusTrace)(winner.inheritAll);
|
64
|
-
case "Failure" /* ExitTag.Failure */:
|
65
|
-
return rightWins(exit, loser);
|
66
|
-
}
|
67
|
-
}, __tsplusTrace)(winner.await), __tsplusTrace)(left);
|
68
|
-
};
|
69
|
-
}
|
70
|
-
/**
|
71
|
-
* Transplants specified effects so that when those effects fork other
|
72
|
-
* effects, the forked effects will be governed by the scope of the
|
73
|
-
* fiber that executes this effect.
|
74
|
-
*
|
75
|
-
* This can be used to "graft" deep grandchildren onto a higher-level
|
76
|
-
* scope, effectively extending their lifespans into the parent scope.
|
77
|
-
*
|
78
|
-
* @tsplus static fncts.io.IOOps transplant
|
79
|
-
*/
|
80
|
-
export function transplant(f, __tsplusTrace) {
|
81
|
-
return tsplus_module_5.withFiberRuntime(fiberState => {
|
82
|
-
const scopeOverride = fiberState.getFiberRef(tsplus_module_3.forkScopeOverride);
|
83
|
-
const scope = tsplus_module_6.getOrElse(() => fiberState.scope)(scopeOverride);
|
84
|
-
return f(tsplus_module_4.locally(tsplus_module_3.forkScopeOverride, tsplus_module_2.just(scope), __tsplusTrace));
|
85
|
-
}, __tsplusTrace);
|
86
|
-
}
|
87
|
-
/**
|
88
|
-
* Forks the effect into a new fiber attached to the global scope. Because the
|
89
|
-
* new fiber is attached to the global scope, when the fiber executing the
|
90
|
-
* returned effect terminates, the forked fiber will continue running.
|
91
|
-
*
|
92
|
-
* @tsplus getter fncts.io.IO forkDaemon
|
93
|
-
*/
|
94
|
-
export function forkDaemon(ma, __tsplusTrace) {
|
95
|
-
return daemonChildren_1(tsplus_module_7.fork(ma, __tsplusTrace), __tsplusTrace);
|
96
|
-
}
|
97
|
-
//# sourceMappingURL=core-scope.mjs.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"core-scope.mjs","mappings":"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","names":["daemonChildren","raceFibersWith","AtomicBoolean","unsafeMakeChildFiber","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","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/_src/FiberRefs/join.ts
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @tsplus pipeable fncts.io.FiberRefs join
|
3
|
-
*/
|
4
|
-
export function join(fiberId: FiberId.Runtime, that: FiberRefs) {
|
5
|
-
return (self: FiberRefs): FiberRefs => {
|
6
|
-
const parentFiberRefs = FiberRefs.reverseGet(self);
|
7
|
-
const childFiberRefs = FiberRefs.reverseGet(that);
|
8
|
-
const fiberRefLocals = childFiberRefs.foldLeftWithIndex(parentFiberRefs, (ref, parentFiberRefs, childStack) => {
|
9
|
-
const childValue = childStack.head[1];
|
10
|
-
if (childStack.head[0] == fiberId) {
|
11
|
-
return parentFiberRefs;
|
12
|
-
}
|
13
|
-
return parentFiberRefs.get(ref).match(
|
14
|
-
() => {
|
15
|
-
if (Equatable.strictEquals(childValue, ref.initial)) return parentFiberRefs;
|
16
|
-
return parentFiberRefs.set(ref, Cons([fiberId, childValue] as const));
|
17
|
-
},
|
18
|
-
(parentStack) => {
|
19
|
-
const [ancestor, wasModified] = findAncestor(ref, parentStack, childStack);
|
20
|
-
if (!wasModified) return parentFiberRefs;
|
21
|
-
const patch = ref.diff(ancestor, childValue);
|
22
|
-
const oldValue = parentStack.head[1];
|
23
|
-
const newValue = ref.join(oldValue, ref.patch(patch)(oldValue));
|
24
|
-
if (oldValue === newValue) return parentFiberRefs;
|
25
|
-
let newStack: Cons<readonly [FiberId.Runtime, unknown]>;
|
26
|
-
if (parentStack.isEmpty()) {
|
27
|
-
newStack = Cons([fiberId, newValue] as const);
|
28
|
-
} else {
|
29
|
-
const [parentFiberId] = parentStack.head;
|
30
|
-
if (parentFiberId == fiberId) {
|
31
|
-
newStack = Cons([parentFiberId, newValue], parentStack.tail);
|
32
|
-
} else {
|
33
|
-
newStack = Cons([fiberId, newValue], parentStack);
|
34
|
-
}
|
35
|
-
}
|
36
|
-
return parentFiberRefs.set(ref, newStack);
|
37
|
-
},
|
38
|
-
);
|
39
|
-
});
|
40
|
-
return FiberRefs.get(fiberRefLocals);
|
41
|
-
};
|
42
|
-
}
|
43
|
-
|
44
|
-
function compareFiberId(left: FiberId.Runtime, right: FiberId.Runtime): number {
|
45
|
-
const compare = Number.Ord.compare(right.startTime)(left.startTime);
|
46
|
-
return compare === 0 ? Number.Ord.compare(right.id)(left.id) : compare;
|
47
|
-
}
|
48
|
-
|
49
|
-
/**
|
50
|
-
* @tsplus tailRec
|
51
|
-
*/
|
52
|
-
function findAncestor(
|
53
|
-
ref: FiberRef<any>,
|
54
|
-
parentStack: List<readonly [FiberId.Runtime, any]>,
|
55
|
-
childStack: List<readonly [FiberId.Runtime, any]>,
|
56
|
-
childModified = false,
|
57
|
-
): readonly [any, boolean] {
|
58
|
-
if (parentStack.isNonEmpty() && childStack.isNonEmpty()) {
|
59
|
-
const [parentFiberId] = parentStack.head;
|
60
|
-
const [childFiberId, childValue] = childStack.head;
|
61
|
-
const compare = compareFiberId(parentFiberId, childFiberId);
|
62
|
-
if (compare < 0) {
|
63
|
-
return findAncestor(ref, parentStack, childStack.tail, true);
|
64
|
-
} else if (compare > 0) {
|
65
|
-
return findAncestor(ref, parentStack.tail, childStack, childModified);
|
66
|
-
} else {
|
67
|
-
return [childValue, childModified];
|
68
|
-
}
|
69
|
-
}
|
70
|
-
return [ref.initial, true];
|
71
|
-
}
|