@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.
Files changed (230) hide show
  1. package/FiberRef/api.d.ts +0 -63
  2. package/FiberRef/operations.d.ts +64 -0
  3. package/FiberRef.d.ts +1 -0
  4. package/FiberRefs/api.d.ts +6 -1
  5. package/FiberRefs.d.ts +0 -1
  6. package/IO/api/daemonChildren.d.ts +6 -0
  7. package/IO/api/disconnect.d.ts +17 -0
  8. package/IO/api/fork.d.ts +4 -0
  9. package/IO/api/forkDaemon.d.ts +10 -0
  10. package/IO/api/interrupt.d.ts +1 -20
  11. package/IO/api/race.d.ts +7 -1
  12. package/IO/api/raceWith.d.ts +17 -0
  13. package/IO/api/transplant.d.ts +13 -0
  14. package/IO/api/whenFiberRef.d.ts +10 -0
  15. package/IO/api/whenRef.d.ts +10 -0
  16. package/IO/api/zipConcurrent.d.ts +5 -4
  17. package/IO/api.d.ts +12 -1
  18. package/IO.d.ts +7 -1
  19. package/RefSubject/Atomic.d.ts +1 -1
  20. package/_cjs/Cached/api.cjs +1 -1
  21. package/_cjs/Channel/api/mergeAllWith.cjs +1 -1
  22. package/_cjs/Channel/api/mergeWith.cjs +17 -16
  23. package/_cjs/Channel/api/mergeWith.cjs.map +1 -1
  24. package/_cjs/Channel/api.cjs +1 -3
  25. package/_cjs/Channel/api.cjs.map +1 -1
  26. package/_cjs/Fiber/FiberRuntime.cjs +16 -17
  27. package/_cjs/Fiber/FiberRuntime.cjs.map +1 -1
  28. package/_cjs/FiberRef/api/locallyScoped.cjs +1 -1
  29. package/_cjs/FiberRef/api/locallyScopedWith.cjs +1 -1
  30. package/_cjs/FiberRef/api.cjs +0 -124
  31. package/_cjs/FiberRef/api.cjs.map +1 -1
  32. package/_cjs/FiberRef/constructors.cjs +1 -1
  33. package/_cjs/FiberRef/operations.cjs +130 -0
  34. package/_cjs/FiberRef/operations.cjs.map +1 -0
  35. package/_cjs/FiberRef.cjs +11 -0
  36. package/_cjs/FiberRef.cjs.map +1 -1
  37. package/_cjs/FiberRefs/api.cjs +90 -0
  38. package/_cjs/FiberRefs/api.cjs.map +1 -1
  39. package/_cjs/FiberRefs.cjs +0 -11
  40. package/_cjs/FiberRefs.cjs.map +1 -1
  41. package/_cjs/Future/api.cjs +1 -3
  42. package/_cjs/Future/api.cjs.map +1 -1
  43. package/_cjs/IO/api/asyncIO.cjs +1 -3
  44. package/_cjs/IO/api/asyncIO.cjs.map +1 -1
  45. package/_cjs/IO/api/bracketExit.cjs +1 -3
  46. package/_cjs/IO/api/bracketExit.cjs.map +1 -1
  47. package/_cjs/IO/api/clockWith.cjs +1 -1
  48. package/_cjs/IO/api/concurrency.cjs +1 -1
  49. package/_cjs/IO/api/consoleWith.cjs +1 -1
  50. package/_cjs/IO/api/daemonChildren.cjs +19 -0
  51. package/_cjs/IO/api/daemonChildren.cjs.map +1 -0
  52. package/_cjs/IO/api/disconnect.cjs +31 -0
  53. package/_cjs/IO/api/disconnect.cjs.map +1 -0
  54. package/_cjs/IO/api/environment.cjs +1 -1
  55. package/_cjs/IO/api/foreachConcurrent.cjs +19 -20
  56. package/_cjs/IO/api/foreachConcurrent.cjs.map +1 -1
  57. package/_cjs/IO/api/fork.cjs +8 -3
  58. package/_cjs/IO/api/fork.cjs.map +1 -1
  59. package/_cjs/IO/api/forkDaemon.cjs +21 -0
  60. package/_cjs/IO/api/forkDaemon.cjs.map +1 -0
  61. package/_cjs/IO/api/forkIn.cjs +2 -4
  62. package/_cjs/IO/api/forkIn.cjs.map +1 -1
  63. package/_cjs/IO/api/forkScoped.cjs +2 -4
  64. package/_cjs/IO/api/forkScoped.cjs.map +1 -1
  65. package/_cjs/IO/api/fulfill.cjs +1 -3
  66. package/_cjs/IO/api/fulfill.cjs.map +1 -1
  67. package/_cjs/IO/api/interrupt.cjs +8 -59
  68. package/_cjs/IO/api/interrupt.cjs.map +1 -1
  69. package/_cjs/IO/api/race.cjs +24 -12
  70. package/_cjs/IO/api/race.cjs.map +1 -1
  71. package/_cjs/IO/api/{core-scope.cjs → raceWith.cjs} +15 -56
  72. package/_cjs/IO/api/raceWith.cjs.map +1 -0
  73. package/_cjs/IO/api/randomWith.cjs +1 -1
  74. package/_cjs/IO/api/supervised.cjs +1 -1
  75. package/_cjs/IO/api/transplant.cjs +31 -0
  76. package/_cjs/IO/api/transplant.cjs.map +1 -0
  77. package/_cjs/IO/api/whenFiberRef.cjs +20 -0
  78. package/_cjs/IO/api/whenFiberRef.cjs.map +1 -0
  79. package/_cjs/IO/api/whenRef.cjs +21 -0
  80. package/_cjs/IO/api/whenRef.cjs.map +1 -0
  81. package/_cjs/IO/api/zipConcurrent.cjs +25 -19
  82. package/_cjs/IO/api/zipConcurrent.cjs.map +1 -1
  83. package/_cjs/IO/api.cjs +21 -5
  84. package/_cjs/IO/api.cjs.map +1 -1
  85. package/_cjs/IO.cjs +70 -4
  86. package/_cjs/IO.cjs.map +1 -1
  87. package/_cjs/Layer/MemoMap.cjs +1 -3
  88. package/_cjs/Layer/MemoMap.cjs.map +1 -1
  89. package/_cjs/RefSubject/Atomic.cjs +2 -2
  90. package/_cjs/RefSubject/Atomic.cjs.map +1 -1
  91. package/_cjs/Reloadable/constructors.cjs +1 -1
  92. package/_cjs/Reloadable/definition.cjs +1 -1
  93. package/_cjs/STM/api/atomically.cjs +2 -4
  94. package/_cjs/STM/api/atomically.cjs.map +1 -1
  95. package/_cjs/ScopedRef/api.cjs +2 -6
  96. package/_cjs/ScopedRef/api.cjs.map +1 -1
  97. package/_cjs/State/api.cjs +1 -1
  98. package/_cjs/Stream/api.cjs +137 -135
  99. package/_cjs/Stream/api.cjs.map +1 -1
  100. package/_cjs/TReentrantLock/api.cjs +2 -6
  101. package/_cjs/TReentrantLock/api.cjs.map +1 -1
  102. package/_cjs/TSemaphore/api.cjs +1 -3
  103. package/_cjs/TSemaphore/api.cjs.map +1 -1
  104. package/_mjs/Cached/api.mjs +1 -1
  105. package/_mjs/Channel/api/mergeAllWith.mjs +1 -1
  106. package/_mjs/Channel/api/mergeWith.mjs +17 -16
  107. package/_mjs/Channel/api/mergeWith.mjs.map +1 -1
  108. package/_mjs/Channel/api.mjs +1 -3
  109. package/_mjs/Channel/api.mjs.map +1 -1
  110. package/_mjs/Fiber/FiberRuntime.mjs +16 -17
  111. package/_mjs/Fiber/FiberRuntime.mjs.map +1 -1
  112. package/_mjs/FiberRef/api/locallyScoped.mjs +1 -1
  113. package/_mjs/FiberRef/api/locallyScopedWith.mjs +1 -1
  114. package/_mjs/FiberRef/api.mjs +0 -107
  115. package/_mjs/FiberRef/api.mjs.map +1 -1
  116. package/_mjs/FiberRef/constructors.mjs +1 -1
  117. package/_mjs/FiberRef/operations.mjs +109 -0
  118. package/_mjs/FiberRef/operations.mjs.map +1 -0
  119. package/_mjs/FiberRef.mjs +1 -0
  120. package/_mjs/FiberRef.mjs.map +1 -1
  121. package/_mjs/FiberRefs/api.mjs +89 -0
  122. package/_mjs/FiberRefs/api.mjs.map +1 -1
  123. package/_mjs/FiberRefs.mjs +0 -1
  124. package/_mjs/FiberRefs.mjs.map +1 -1
  125. package/_mjs/Future/api.mjs +1 -3
  126. package/_mjs/Future/api.mjs.map +1 -1
  127. package/_mjs/IO/api/asyncIO.mjs +1 -3
  128. package/_mjs/IO/api/asyncIO.mjs.map +1 -1
  129. package/_mjs/IO/api/bracketExit.mjs +1 -3
  130. package/_mjs/IO/api/bracketExit.mjs.map +1 -1
  131. package/_mjs/IO/api/clockWith.mjs +1 -1
  132. package/_mjs/IO/api/concurrency.mjs +1 -1
  133. package/_mjs/IO/api/consoleWith.mjs +1 -1
  134. package/_mjs/IO/api/daemonChildren.mjs +11 -0
  135. package/_mjs/IO/api/daemonChildren.mjs.map +1 -0
  136. package/_mjs/IO/api/disconnect.mjs +23 -0
  137. package/_mjs/IO/api/disconnect.mjs.map +1 -0
  138. package/_mjs/IO/api/environment.mjs +1 -1
  139. package/_mjs/IO/api/foreachConcurrent.mjs +19 -20
  140. package/_mjs/IO/api/foreachConcurrent.mjs.map +1 -1
  141. package/_mjs/IO/api/fork.mjs +6 -2
  142. package/_mjs/IO/api/fork.mjs.map +1 -1
  143. package/_mjs/IO/api/forkDaemon.mjs +13 -0
  144. package/_mjs/IO/api/forkDaemon.mjs.map +1 -0
  145. package/_mjs/IO/api/forkIn.mjs +2 -4
  146. package/_mjs/IO/api/forkIn.mjs.map +1 -1
  147. package/_mjs/IO/api/forkScoped.mjs +2 -4
  148. package/_mjs/IO/api/forkScoped.mjs.map +1 -1
  149. package/_mjs/IO/api/fulfill.mjs +1 -3
  150. package/_mjs/IO/api/fulfill.mjs.map +1 -1
  151. package/_mjs/IO/api/interrupt.mjs +6 -55
  152. package/_mjs/IO/api/interrupt.mjs.map +1 -1
  153. package/_mjs/IO/api/race.mjs +22 -12
  154. package/_mjs/IO/api/race.mjs.map +1 -1
  155. package/_mjs/IO/api/raceWith.mjs +59 -0
  156. package/_mjs/IO/api/raceWith.mjs.map +1 -0
  157. package/_mjs/IO/api/randomWith.mjs +1 -1
  158. package/_mjs/IO/api/supervised.mjs +1 -1
  159. package/_mjs/IO/api/transplant.mjs +23 -0
  160. package/_mjs/IO/api/transplant.mjs.map +1 -0
  161. package/_mjs/IO/api/whenFiberRef.mjs +12 -0
  162. package/_mjs/IO/api/whenFiberRef.mjs.map +1 -0
  163. package/_mjs/IO/api/whenRef.mjs +13 -0
  164. package/_mjs/IO/api/whenRef.mjs.map +1 -0
  165. package/_mjs/IO/api/zipConcurrent.mjs +23 -17
  166. package/_mjs/IO/api/zipConcurrent.mjs.map +1 -1
  167. package/_mjs/IO/api.mjs +16 -3
  168. package/_mjs/IO/api.mjs.map +1 -1
  169. package/_mjs/IO.mjs +7 -1
  170. package/_mjs/IO.mjs.map +1 -1
  171. package/_mjs/Layer/MemoMap.mjs +1 -3
  172. package/_mjs/Layer/MemoMap.mjs.map +1 -1
  173. package/_mjs/RefSubject/Atomic.mjs +1 -1
  174. package/_mjs/RefSubject/Atomic.mjs.map +1 -1
  175. package/_mjs/Reloadable/constructors.mjs +1 -1
  176. package/_mjs/Reloadable/definition.mjs +1 -1
  177. package/_mjs/STM/api/atomically.mjs +2 -4
  178. package/_mjs/STM/api/atomically.mjs.map +1 -1
  179. package/_mjs/ScopedRef/api.mjs +2 -6
  180. package/_mjs/ScopedRef/api.mjs.map +1 -1
  181. package/_mjs/State/api.mjs +1 -1
  182. package/_mjs/Stream/api.mjs +137 -135
  183. package/_mjs/Stream/api.mjs.map +1 -1
  184. package/_mjs/TReentrantLock/api.mjs +2 -6
  185. package/_mjs/TReentrantLock/api.mjs.map +1 -1
  186. package/_mjs/TSemaphore/api.mjs +1 -3
  187. package/_mjs/TSemaphore/api.mjs.map +1 -1
  188. package/_src/Channel/api.ts +1 -1
  189. package/_src/FiberRef/api.ts +0 -114
  190. package/_src/FiberRef/operations.ts +115 -0
  191. package/_src/FiberRef.ts +1 -0
  192. package/_src/FiberRefs/api.ts +72 -0
  193. package/_src/FiberRefs.ts +0 -1
  194. package/_src/Future/api.ts +1 -1
  195. package/_src/IO/api/asyncIO.ts +1 -1
  196. package/_src/IO/api/bracketExit.ts +1 -1
  197. package/_src/IO/api/daemonChildren.ts +6 -0
  198. package/_src/IO/api/disconnect.ts +25 -0
  199. package/_src/IO/api/foreachConcurrent.ts +1 -1
  200. package/_src/IO/api/fork.ts +3 -0
  201. package/_src/IO/api/forkDaemon.ts +12 -0
  202. package/_src/IO/api/forkIn.ts +1 -1
  203. package/_src/IO/api/forkScoped.ts +1 -3
  204. package/_src/IO/api/fulfill.ts +1 -1
  205. package/_src/IO/api/interrupt.ts +5 -56
  206. package/_src/IO/api/race.ts +18 -8
  207. package/_src/IO/api/{core-scope.ts → raceWith.ts} +2 -44
  208. package/_src/IO/api/transplant.ts +19 -0
  209. package/_src/IO/api/whenFiberRef.ts +9 -0
  210. package/_src/IO/api/whenRef.ts +9 -0
  211. package/_src/IO/api/zipConcurrent.ts +41 -43
  212. package/_src/IO/api.ts +18 -2
  213. package/_src/IO.ts +7 -1
  214. package/_src/Layer/MemoMap.ts +1 -1
  215. package/_src/RefSubject/Atomic.ts +1 -1
  216. package/_src/STM/api/atomically.ts +1 -1
  217. package/_src/ScopedRef/api.ts +2 -2
  218. package/_src/TReentrantLock/api.ts +2 -2
  219. package/_src/TSemaphore/api.ts +1 -1
  220. package/package.json +2 -2
  221. package/FiberRefs/join.d.ts +0 -9
  222. package/IO/api/core-scope.d.ts +0 -43
  223. package/_cjs/FiberRefs/join.cjs +0 -104
  224. package/_cjs/FiberRefs/join.cjs.map +0 -1
  225. package/_cjs/IO/api/core-scope.cjs.map +0 -1
  226. package/_mjs/FiberRefs/join.mjs +0 -96
  227. package/_mjs/FiberRefs/join.mjs.map +0 -1
  228. package/_mjs/IO/api/core-scope.mjs +0 -97
  229. package/_mjs/IO/api/core-scope.mjs.map +0 -1
  230. 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]}
@@ -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
- }