@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,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
|
-
}
|