@fncts/io 0.0.24 → 0.0.25

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