@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
@@ -5,24 +5,14 @@ import * as tsplus_module_3 from "@fncts/io/RuntimeFlags/Patch";
5
5
  import * as tsplus_module_4 from "@fncts/io/RuntimeFlags/RuntimeFlags";
6
6
  import * as tsplus_module_5 from "@fncts/base/data/Exit/api";
7
7
  import * as tsplus_module_6 from "@fncts/base/data/Exit/constructors";
8
- import * as tsplus_module_7 from "@fncts/io/Fiber/api/join";
9
- import * as tsplus_module_8 from "@fncts/io/IO/api/core-scope";
10
8
  export const interruptAs = interruptAs_1;
11
9
  export const interruptible = interruptible_1;
12
10
  export const uninterruptible = uninterruptible_1;
13
11
  export const uninterruptibleMask = uninterruptibleMask_1;
14
- export const onInterrupt = onInterrupt_1;
15
12
  export const onExit = onExit_1;
16
- export const disconnect = disconnect_1;
17
13
  import { Dynamic, Interruptible, Uninterruptible } from "@fncts/io/IO/definition";
18
- const RestoreInterruptible = {
19
- restore: (io, __tsplusTrace) => interruptible_1(io, fileName_1 + ":11:37"),
20
- force: (io, __tsplusTrace) => interruptible_1(io, fileName_1 + ":12:35")
21
- };
22
- const RestoreUninterruptible = {
23
- restore: (io, __tsplusTrace) => uninterruptible_1(io, fileName_1 + ":16:37"),
24
- force: (io, __tsplusTrace) => interruptible_1(disconnect_1(uninterruptible_1(io, fileName_1 + ":17:35"), fileName_1 + ":17:51"), fileName_1 + ":17:62")
25
- };
14
+ const RestoreInterruptible = (io, __tsplusTrace) => interruptible_1(io, fileName_1 + ":7:81");
15
+ const RestoreUninterruptible = (io, __tsplusTrace) => uninterruptible_1(io, fileName_1 + ":9:83");
26
16
  /**
27
17
  * Returns an effect that is interrupted as if by the specified fiber.
28
18
  *
@@ -37,22 +27,7 @@ function interruptAs_1(fiberId, __tsplusTrace) {
37
27
  *
38
28
  * @tsplus static fncts.io.IOOps interrupt
39
29
  */
40
- export const interrupt = /*#__PURE__*/tsplus_module_2.flatMap(interruptAs_1, fileName_1 + ":35:69")(tsplus_module_2.fiberId);
41
- // /**
42
- // * Switches the interrupt status for this effect. If `true` is used, then the
43
- // * effect becomes interruptible (the default), while if `false` is used, then
44
- // * the effect becomes uninterruptible. These changes are compositional, so
45
- // * they only affect regions of the effect.
46
- // *
47
- // * @tsplus fluent fncts.io.IO setInterruptStatus
48
- // */
49
- // export function setInterruptStatus_<R, E, A>(
50
- // self: IO<R, E, A>,
51
- // flag: InterruptStatus,
52
- // __tsplusTrace?: string,
53
- // ): IO<R, E, A> {
54
- // return new SetInterrupt(self, flag, __tsplusTrace);
55
- // }
30
+ export const interrupt = /*#__PURE__*/tsplus_module_2.flatMap(interruptAs_1, fileName_1 + ":26:69")(tsplus_module_2.fiberId);
56
31
  /**
57
32
  * Returns a new effect that performs the same operations as this effect, but
58
33
  * interruptibly, even if composed inside of an uninterruptible region.
@@ -99,9 +74,7 @@ function uninterruptibleMask_1(f) {
99
74
  */
100
75
  export function ensuring(finalizer, __tsplusTrace) {
101
76
  return self => {
102
- return uninterruptibleMask_1(({
103
- restore
104
- }) => tsplus_module_2.matchCauseIO(cause1 => tsplus_module_2.matchCauseIO(cause2 => tsplus_module_2.failCauseNow(tsplus_module_1.then(cause1, cause2), __tsplusTrace), () => tsplus_module_2.failCauseNow(cause1, __tsplusTrace), __tsplusTrace)(finalizer), a => tsplus_module_2.map(() => a, __tsplusTrace)(finalizer), __tsplusTrace)(restore(self, __tsplusTrace)));
77
+ return uninterruptibleMask_1(restore => tsplus_module_2.matchCauseIO(cause1 => tsplus_module_2.matchCauseIO(cause2 => tsplus_module_2.failCauseNow(tsplus_module_1.then(cause1, cause2), __tsplusTrace), () => tsplus_module_2.failCauseNow(cause1, __tsplusTrace), __tsplusTrace)(finalizer), a => tsplus_module_2.map(() => a, __tsplusTrace)(finalizer), __tsplusTrace)(restore(self, __tsplusTrace)));
105
78
  };
106
79
  }
107
80
  /**
@@ -120,7 +93,7 @@ export function interruptibleMask(k, __tsplusTrace) {
120
93
  *
121
94
  * @tsplus pipeable fncts.io.IO onInterrupt
122
95
  */
123
- function onInterrupt_1(cleanup, __tsplusTrace) {
96
+ export function onInterrupt(cleanup, __tsplusTrace) {
124
97
  return ma => {
125
98
  return onExit_1(exit => tsplus_module_5.match(cause => tsplus_module_1.isInterruptedOnly(cause) ? cleanup() : tsplus_module_2.unit, () => tsplus_module_2.unit)(exit), __tsplusTrace)(ma);
126
99
  };
@@ -141,9 +114,7 @@ export function onInterruptWith(cleanup, __tsplusTrace) {
141
114
  */
142
115
  function onExit_1(cleanup, __tsplusTrace) {
143
116
  return self => {
144
- return uninterruptibleMask_1(({
145
- restore
146
- }) => tsplus_module_2.matchCauseIO(failure1 => {
117
+ return uninterruptibleMask_1(restore => tsplus_module_2.matchCauseIO(failure1 => {
147
118
  const result = tsplus_module_6.failCause(failure1);
148
119
  return tsplus_module_2.matchCauseIO(failure2 => tsplus_module_2.failCauseNow(tsplus_module_1.then(failure1, failure2), __tsplusTrace), () => tsplus_module_2.fromExitNow(result, __tsplusTrace), __tsplusTrace)(cleanup(result));
149
120
  }, success => {
@@ -152,24 +123,4 @@ function onExit_1(cleanup, __tsplusTrace) {
152
123
  }, __tsplusTrace)(restore(self, __tsplusTrace)));
153
124
  };
154
125
  }
155
- /**
156
- * Returns an IO whose interruption will be disconnected from the
157
- * fiber's own interruption, being performed in the background without
158
- * slowing down the fiber's interruption.
159
- *
160
- * This method is useful to create "fast interrupting" effects. For
161
- * example, if you call this on a bracketed effect, then even if the
162
- * effect is "stuck" in acquire or release, its interruption will return
163
- * immediately, while the acquire / release are performed in the
164
- * background.
165
- *
166
- * See timeout and race for other applications.
167
- *
168
- * @tsplus getter fncts.io.IO disconnect
169
- */
170
- function disconnect_1(self, __tsplusTrace) {
171
- return uninterruptibleMask_1(({
172
- restore
173
- }) => tsplus_module_2.flatMap(fiberId => tsplus_module_2.flatMap(fiber => onInterrupt_1(() => fiber.interruptAsFork(fiberId), __tsplusTrace)(restore(tsplus_module_7.join(fiber, __tsplusTrace), __tsplusTrace)), __tsplusTrace)(tsplus_module_8.forkDaemon(restore(self, __tsplusTrace), __tsplusTrace)), __tsplusTrace)(tsplus_module_2.fiberId));
174
- }
175
126
  //# sourceMappingURL=interrupt.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"interrupt.mjs","mappings":"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","names":["interruptAs","interruptible","uninterruptible","uninterruptibleMask","onInterrupt","onExit","disconnect","Dynamic","Interruptible","Uninterruptible","RestoreInterruptible","restore","io","__tsplusTrace","interruptible_1","force","RestoreUninterruptible","uninterruptible_1","fiberId","tsplus_module_2","tsplus_module_1","interrupt","self","f","tsplus_module_3","oldFlags","tsplus_module_4","ensuring","finalizer","uninterruptibleMask_1","cause1","cause2","a","interruptibleMask","k","flag","isInterruptible","cleanup","ma","onExit_1","exit","tsplus_module_5","cause","onInterruptWith","failure1","result","tsplus_module_6","failure2","success","fiber","onInterrupt_1","interruptAsFork"],"sourceRoot":"","sources":["../../../_src/IO/api/interrupt.ts"],"sourcesContent":[null]}
1
+ {"version":3,"file":"interrupt.mjs","mappings":"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","names":["interruptAs","interruptible","uninterruptible","uninterruptibleMask","onExit","Dynamic","Interruptible","Uninterruptible","RestoreInterruptible","io","__tsplusTrace","interruptible_1","RestoreUninterruptible","uninterruptible_1","fiberId","tsplus_module_2","tsplus_module_1","interrupt","self","f","tsplus_module_3","oldFlags","tsplus_module_4","ensuring","finalizer","uninterruptibleMask_1","restore","cause1","cause2","a","interruptibleMask","k","flag","isInterruptible","onInterrupt","cleanup","ma","onExit_1","exit","tsplus_module_5","cause","onInterruptWith","failure1","result","tsplus_module_6","failure2","success"],"sourceRoot":"","sources":["../../../_src/IO/api/interrupt.ts"],"sourcesContent":[null]}
@@ -1,14 +1,13 @@
1
1
  const fileName_1 = "(@fncts/io) src/IO/api/race.ts";
2
- import * as tsplus_module_1 from "@fncts/io/IO/api/interrupt";
3
- import * as tsplus_module_2 from "@fncts/base/data/Cause/api";
4
- import * as tsplus_module_3 from "@fncts/io/Fiber/api/join";
5
- import * as tsplus_module_4 from "@fncts/io/IO/api";
6
- import * as tsplus_module_5 from "@fncts/io/Fiber/api/interruptAs";
7
- import * as tsplus_module_6 from "@fncts/base/data/Exit/api";
8
- import * as tsplus_module_7 from "@fncts/io/IO/api/core-scope";
9
- function maybeDisconnect(io, __tsplusTrace) {
10
- return tsplus_module_1.uninterruptibleMask(restore => restore.force(io, __tsplusTrace));
11
- }
2
+ import * as tsplus_module_1 from "@fncts/io/IO/api";
3
+ import * as tsplus_module_2 from "@fncts/io/IO/api/disconnect";
4
+ import * as tsplus_module_3 from "@fncts/io/IO/api/interrupt";
5
+ import * as tsplus_module_4 from "@fncts/base/data/Cause/api";
6
+ import * as tsplus_module_5 from "@fncts/io/Fiber/api/join";
7
+ import * as tsplus_module_6 from "@fncts/io/Fiber/api/interruptAs";
8
+ import * as tsplus_module_7 from "@fncts/base/data/Exit/api";
9
+ import * as tsplus_module_8 from "@fncts/io/IO/api/raceWith";
10
+ export const raceAwait = raceAwait_1;
12
11
  /**
13
12
  * Returns an IO that races this effect with the specified effect,
14
13
  * returning the first successful `A` from the faster side. If one effect
@@ -21,8 +20,19 @@ function maybeDisconnect(io, __tsplusTrace) {
21
20
  * @tsplus pipeable fncts.io.IO race
22
21
  */
23
22
  export function race(that) {
24
- return io => {
25
- return tsplus_module_4.flatMap(id => tsplus_module_7.raceWith(() => maybeDisconnect(that, fileName_1 + ":20:24"), (exit, right) => tsplus_module_6.match(cause => tsplus_module_4.mapErrorCause(c => tsplus_module_2.both(cause, c), fileName_1 + ":23:48")(tsplus_module_3.join(right, fileName_1 + ":23:29")), a => tsplus_module_4.as(() => a, fileName_1 + ":24:44")(tsplus_module_5.interruptAs(right, id)))(exit), (exit, left) => tsplus_module_6.match(cause => tsplus_module_4.mapErrorCause(c => tsplus_module_2.both(cause, c), fileName_1 + ":28:47")(tsplus_module_3.join(left, fileName_1 + ":28:28")), a1 => tsplus_module_4.as(() => a1, fileName_1 + ":29:44")(tsplus_module_5.interruptAs(left, id)))(exit), fileName_1 + ":19:35")(maybeDisconnect(io, fileName_1 + ":19:22")), fileName_1 + ":18:30")(tsplus_module_4.fiberId);
23
+ return self => {
24
+ return tsplus_module_1.checkInterruptible(status => raceAwait_1(disconnect(that, status, fileName_1 + ":14:91"))(disconnect(self, status, fileName_1 + ":14:56")), fileName_1 + ":14:33");
25
+ };
26
+ }
27
+ function disconnect(io, interruptStatus, __tsplusTrace) {
28
+ if (interruptStatus.isInterruptible) return tsplus_module_2.disconnect(io, __tsplusTrace);else return tsplus_module_3.interruptible(tsplus_module_2.disconnect(tsplus_module_3.uninterruptible(io, __tsplusTrace), __tsplusTrace), __tsplusTrace);
29
+ }
30
+ /**
31
+ * @tsplus pipeable fncts.io.IO raceAwait
32
+ */
33
+ function raceAwait_1(that) {
34
+ return self => {
35
+ return tsplus_module_1.fiberIdWith(id => tsplus_module_8.raceWith(() => that, (exit, right) => tsplus_module_7.match(cause => tsplus_module_1.mapErrorCause(c => tsplus_module_4.both(cause, c), fileName_1 + ":33:48")(tsplus_module_5.join(right, fileName_1 + ":33:29")), a => tsplus_module_1.as(() => a, fileName_1 + ":34:44")(tsplus_module_6.interruptAs(right, id)))(exit), (exit, left) => tsplus_module_7.match(cause => tsplus_module_1.mapErrorCause(c => tsplus_module_4.both(cause, c), fileName_1 + ":38:47")(tsplus_module_5.join(left, fileName_1 + ":38:28")), a1 => tsplus_module_1.as(() => a1, fileName_1 + ":39:44")(tsplus_module_6.interruptAs(left, id)))(exit), fileName_1 + ":29:20")(self));
26
36
  };
27
37
  }
28
38
  //# sourceMappingURL=race.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"race.mjs","mappings":";;;;;;;;AAAA,SAASA,eAAe,CAAUC,EAAe,EAAEC,aAAsB;EACvE,OAAOC,oCAAwBC,OAAO,IAAKA,OAAO,CAACC,KAAK,CAACJ,EAAE,EADVC,cACW,CAAC;AAC/D;AAEA;;;;;;;;;;;AAWA,OAAM,SAAUI,IAAI,CAAaC,IAAoB;EACnD,OAAiBN,EAAe,IAAgC;IAC9D,OAAOO,wBAAoBC,EAAE,IAC3BC,+BACEV,eAAe,CAACO,IAAI,wBAAC,EACrB,CAACI,IAAI,EAAEC,KAAK,KACVC,sBACGC,KAAK,IAAKN,8BAA0BO,CAAC,IAAKC,qBAAWF,KAAK,EAAEC,CAAC,CAAC,8CAApDH,KAAK,yBAAgD,EAC/DK,CAAC,IAAKT,yBAAyBS,CAAC,yBAA1BC,iCAAK,EAAaT,EAAE,CAAC,CAAM,EAFpCE,IAAI,CAGH,EACH,CAACA,IAAI,EAAEQ,IAAI,KACTN,sBACGC,KAAK,IAAKN,8BAAyBO,CAAC,IAAKC,qBAAWF,KAAK,EAAEC,CAAC,CAAC,8CAAnDI,IAAI,yBAAgD,EAC9DC,EAAE,IAAKZ,yBAAwBY,EAAE,yBAA1BF,gCAAI,EAAaT,EAAE,CAAC,CAAO,EAFrCE,IAAI,CAGH,yBAXLX,eAAe,CAACC,EAAE,wBAAC,CAYlB,iDACF;EACH,CAAC;AACH","names":["maybeDisconnect","io","__tsplusTrace","tsplus_module_1","restore","force","race","that","tsplus_module_4","id","tsplus_module_7","exit","right","tsplus_module_6","cause","c","tsplus_module_2","a","tsplus_module_5","left","a1"],"sourceRoot":"","sources":["../../../_src/IO/api/race.ts"],"sourcesContent":[null]}
1
+ {"version":3,"file":"race.mjs","mappings":";;;;;;;;;aAyBgBA,SAAS;AAzBzB;;;;;;;;;;;AAWA,OAAM,SAAUC,IAAI,CAAaC,IAAoB;EACnD,OAAiBC,IAAiB,IAAgC;IAChE,OAAOC,mCAAuBC,MAAM,IAAKC,YAAmCC,UAAU,CAACL,IAAI,EAAEG,MAAM,wBAAC,EAA3DE,UAAU,CAACJ,IAAI,EAAEE,MAAM,wBAAC,CAAoC,wBAAC;EACxG,CAAC;AACH;AAEA,SAASE,UAAU,CAAUC,EAAe,EAAEC,eAAgC,EAAEC,aAAsB;EACpG,IAAID,eAAe,CAACE,eAAe,EAAE,kCAAOH,EAAE,EADgCE,eACpB,KACrD,gGAAOF,EAAE,EAFgEE;AAGhF;AAEA;;;AAGA,qBAAsCR,IAAoB;EACxD,OAAiBC,IAAiB,IAAgC;IAChE,OAAOC,4BAAgBQ,EAAE,IACvBC,+BACEX,IAAI,EACJ,CAACY,IAAI,EAAEC,KAAK,KACVC,sBACGC,KAAK,IAAKb,8BAA0Bc,CAAC,IAAKC,qBAAWF,KAAK,EAAEC,CAAC,CAAC,8CAApDH,KAAK,yBAAgD,EAC/DK,CAAC,IAAKhB,yBAAyBgB,CAAC,yBAA1BC,iCAAK,EAAaT,EAAE,CAAC,CAAM,EAFpCE,IAAI,CAGH,EACH,CAACA,IAAI,EAAEQ,IAAI,KACTN,sBACGC,KAAK,IAAKb,8BAAyBc,CAAC,IAAKC,qBAAWF,KAAK,EAAEC,CAAC,CAAC,8CAAnDI,IAAI,yBAAgD,EAC9DC,EAAE,IAAKnB,yBAAwBmB,EAAE,yBAA1BF,gCAAI,EAAaT,EAAE,CAAC,CAAO,EAFrCE,IAAI,CAGH,yBAXLX,IAAI,CAYH,CACF;EACH,CAAC;AACH","names":["raceAwait","race","that","self","tsplus_module_1","status","raceAwait_1","disconnect","io","interruptStatus","__tsplusTrace","isInterruptible","id","tsplus_module_8","exit","right","tsplus_module_7","cause","c","tsplus_module_4","a","tsplus_module_6","left","a1"],"sourceRoot":"","sources":["../../../_src/IO/api/race.ts"],"sourcesContent":[null]}
@@ -0,0 +1,59 @@
1
+ import * as tsplus_module_1 from "@fncts/io/IO/api/fork";
2
+ import * as tsplus_module_2 from "@fncts/io/FiberRef/unsafe";
3
+ import * as tsplus_module_3 from "@fncts/base/data/Maybe/constructors";
4
+ import * as tsplus_module_4 from "@fncts/io/IO/api";
5
+ export const raceFibersWith = raceFibersWith_1;
6
+ import { AtomicBoolean } from "@fncts/base/internal/AtomicBoolean";
7
+ /**
8
+ * @tsplus pipeable fncts.io.IO raceFibersWith
9
+ */
10
+ function raceFibersWith_1(right, leftWins, rightWins, __tsplusTrace) {
11
+ return left => {
12
+ return tsplus_module_4.withFiberRuntime((parentState, parentStatus) => {
13
+ const right0 = right();
14
+ const parentRuntimeFlags = parentStatus.runtimeFlags;
15
+ function complete(winner, loser, cont, ab, cb) {
16
+ if (ab.compareAndSet(true, false)) {
17
+ cb(cont(winner, loser));
18
+ }
19
+ }
20
+ const raceIndicator = new AtomicBoolean(true);
21
+ const leftFiber = tsplus_module_1.unsafeMakeChildFiber(left, parentState, parentRuntimeFlags, null, __tsplusTrace);
22
+ const rightFiber = tsplus_module_1.unsafeMakeChildFiber(right0, parentState, parentRuntimeFlags, null, __tsplusTrace);
23
+ leftFiber.setFiberRef(tsplus_module_2.forkScopeOverride, tsplus_module_3.just(parentState.scope));
24
+ rightFiber.setFiberRef(tsplus_module_2.forkScopeOverride, tsplus_module_3.just(parentState.scope));
25
+ return tsplus_module_4.async(cb => {
26
+ leftFiber.addObserver(() => complete(leftFiber, rightFiber, leftWins, raceIndicator, cb));
27
+ rightFiber.addObserver(() => complete(rightFiber, leftFiber, rightWins, raceIndicator, cb));
28
+ leftFiber.startFork(left);
29
+ rightFiber.startFork(right0);
30
+ });
31
+ }, __tsplusTrace);
32
+ };
33
+ }
34
+ /**
35
+ * Returns an effect that races this effect with the specified effect, calling
36
+ * the specified finisher as soon as one result or the other has been computed.
37
+ *
38
+ * @tsplus pipeable fncts.io.IO raceWith
39
+ */
40
+ export function raceWith(right, leftWins, rightWins, __tsplusTrace) {
41
+ return left => {
42
+ return raceFibersWith_1(right, (winner, loser) => tsplus_module_4.flatMap(exit => {
43
+ switch (exit._tag) {
44
+ case "Success" /* ExitTag.Success */:
45
+ return tsplus_module_4.flatMap(() => leftWins(exit, loser), __tsplusTrace)(winner.inheritAll);
46
+ case "Failure" /* ExitTag.Failure */:
47
+ return leftWins(exit, loser);
48
+ }
49
+ }, __tsplusTrace)(winner.await), (winner, loser) => tsplus_module_4.flatMap(exit => {
50
+ switch (exit._tag) {
51
+ case "Success" /* ExitTag.Success */:
52
+ return tsplus_module_4.flatMap(() => rightWins(exit, loser), __tsplusTrace)(winner.inheritAll);
53
+ case "Failure" /* ExitTag.Failure */:
54
+ return rightWins(exit, loser);
55
+ }
56
+ }, __tsplusTrace)(winner.await), __tsplusTrace)(left);
57
+ };
58
+ }
59
+ //# sourceMappingURL=raceWith.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raceWith.mjs","mappings":";;;;aAQgBA,cAAc;AAL9B,SAASC,aAAa,QAAQ,oCAAoC;AAElE;;;AAGA,0BACEC,KAA0B,EAC1BC,QAAmF,EACnFC,SAAoF,EACpFC,aAAsB;EAEtB,OAAQC,IAAiB,IAA0C;IACjE,OAAOC,iCAAoB,CAACC,WAAW,EAAEC,YAAY,KAAI;MACvD,MAAMC,MAAM,GAAeR,KAAK,EAAE;MAClC,MAAMS,kBAAkB,GAAGF,YAAY,CAACG,YAAY;MACpD,SAASC,QAAQ,CACfC,MAA2B,EAC3BC,KAA0B,EAC1BC,IAAgF,EAChFC,EAAiB,EACjBC,EAA6B;QAE7B,IAAID,EAAE,CAACE,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;UACjCD,EAAE,CAACF,IAAI,CAACF,MAAM,EAAEC,KAAK,CAAC,CAAC;;MAE3B;MAEA,MAAMK,aAAa,GAAG,IAAInB,aAAa,CAAC,IAAI,CAAC;MAC7C,MAAMoB,SAAS,GAAOC,qCAAwBhB,IAAI,EAAEE,WAAW,EAAEG,kBAAkB,EAAE,IAAI,EAAEN,aAAa,CAAC;MACzG,MAAMkB,UAAU,GAAMD,qCAAwBZ,MAAM,EAAEF,WAAW,EAAEG,kBAAkB,EAAE,IAAI,EAAEN,aAAa,CAAC;MAC3GgB,SAAS,CAACG,WAAW,oCAA6BC,qBAAKjB,WAAW,CAACkB,KAAK,CAAC,CAAC;MAC1EH,UAAU,CAACC,WAAW,oCAA6BC,qBAAKjB,WAAW,CAACkB,KAAK,CAAC,CAAC;MAE3E,OAAOnB,sBAAUW,EAAE,IAAI;QACrBG,SAAS,CAACM,WAAW,CAAC,MAAMd,QAAQ,CAACQ,SAAS,EAAEE,UAAU,EAAEpB,QAAQ,EAAEiB,aAAa,EAAEF,EAAE,CAAC,CAAC;QACzFK,UAAU,CAACI,WAAW,CAAC,MAAMd,QAAQ,CAACU,UAAU,EAAEF,SAAS,EAAEjB,SAAS,EAAEgB,aAAa,EAAEF,EAAE,CAAC,CAAC;QAC3FG,SAAS,CAACO,SAAS,CAACtB,IAAI,CAAC;QACzBiB,UAAU,CAACK,SAAS,CAAClB,MAAM,CAAC;MAC9B,CAAC,CAAC;IACJ,CAAC,EA9BHL,cA8BI;EACJ,CAAC;AACH;AAEA;;;;;;AAMA,OAAM,SAAUwB,QAAQ,CACtB3B,KAA2B,EAC3BC,QAAoE,EACpEC,SAAqE,EACrEC,aAAsB;EAEtB,OAAQC,IAAiB,IAA4C;IACnE,OAAOwB,iBACL5B,KAAK,EACL,CAACY,MAAM,EAAEC,KAAK,KACZR,wBAAsBwB,IAAI,IAAI;MAC5B,QAAQA,IAAI,CAACC,IAAI;QACf;UACE,OAAOzB,wBAA0B,MAAMJ,QAAQ,CAAC4B,IAAI,EAAEhB,KAAK,CAAC,EATxEV,eASmBS,MAAM,CAACmB,UAAU,CAAqC;QAC/D;UACE,OAAO9B,QAAQ,CAAC4B,IAAI,EAAEhB,KAAK,CAAC;MAAC;IAEnC,CAAC,EAbPV,eAMMS,MAAM,CAACoB,KAAK,CAOV,EACJ,CAACpB,MAAM,EAAEC,KAAK,KACZR,wBAAsBwB,IAAI,IAAI;MAC5B,QAAQA,IAAI,CAACC,IAAI;QACf;UACE,OAAOzB,wBAA0B,MAAMH,SAAS,CAAC2B,IAAI,EAAEhB,KAAK,CAAC,EAlBzEV,eAkBmBS,MAAM,CAACmB,UAAU,CAAsC;QAChE;UACE,OAAO7B,SAAS,CAAC2B,IAAI,EAAEhB,KAAK,CAAC;MAAC;IAEpC,CAAC,EAtBPV,eAeMS,MAAM,CAACoB,KAAK,CAOV,EAtBR7B,eAGSC,IAAI,CAoBV;EACH,CAAC;AACH","names":["raceFibersWith","AtomicBoolean","right","leftWins","rightWins","__tsplusTrace","left","tsplus_module_4","parentState","parentStatus","right0","parentRuntimeFlags","runtimeFlags","complete","winner","loser","cont","ab","cb","compareAndSet","raceIndicator","leftFiber","tsplus_module_1","rightFiber","setFiberRef","tsplus_module_3","scope","addObserver","startFork","raceWith","raceFibersWith_1","exit","_tag","inheritAll","await"],"sourceRoot":"","sources":["../../../_src/IO/api/raceWith.ts"],"sourcesContent":[null]}
@@ -2,7 +2,7 @@ const fileName_1 = "(@fncts/io) src/IO/api/randomWith.ts";
2
2
  import * as tsplus_module_1 from "@fncts/io/Random/definition";
3
3
  import * as tsplus_module_2 from "@fncts/base/data/Environment/api";
4
4
  import * as tsplus_module_3 from "@fncts/io/IOEnv/services";
5
- import * as tsplus_module_4 from "@fncts/io/FiberRef/api";
5
+ import * as tsplus_module_4 from "@fncts/io/FiberRef/operations";
6
6
  import * as tsplus_module_5 from "@fncts/io/IO/api";
7
7
  export const randomWith = randomWith_1;
8
8
  /**
@@ -1,6 +1,6 @@
1
1
  import * as tsplus_module_1 from "@fncts/io/Supervisor/api";
2
2
  import * as tsplus_module_2 from "@fncts/io/FiberRef/unsafe";
3
- import * as tsplus_module_3 from "@fncts/io/FiberRef/api";
3
+ import * as tsplus_module_3 from "@fncts/io/FiberRef/operations";
4
4
  /**
5
5
  * @tsplus fluent fncts.io.IO supervised
6
6
  */
@@ -0,0 +1,23 @@
1
+ import * as tsplus_module_1 from "@fncts/io/FiberRef/unsafe";
2
+ import * as tsplus_module_2 from "@fncts/base/data/Maybe/api";
3
+ import * as tsplus_module_3 from "@fncts/base/data/Maybe/constructors";
4
+ import * as tsplus_module_4 from "@fncts/io/FiberRef/operations";
5
+ import * as tsplus_module_5 from "@fncts/io/IO/api";
6
+ /**
7
+ * Transplants specified effects so that when those effects fork other
8
+ * effects, the forked effects will be governed by the scope of the
9
+ * fiber that executes this effect.
10
+ *
11
+ * This can be used to "graft" deep grandchildren onto a higher-level
12
+ * scope, effectively extending their lifespans into the parent scope.
13
+ *
14
+ * @tsplus static fncts.io.IOOps transplant
15
+ */
16
+ export function transplant(f, __tsplusTrace) {
17
+ return tsplus_module_5.withFiberRuntime(fiberState => {
18
+ const scopeOverride = fiberState.getFiberRef(tsplus_module_1.forkScopeOverride);
19
+ const scope = tsplus_module_2.getOrElse(() => fiberState.scope)(scopeOverride);
20
+ return f(tsplus_module_4.locally(tsplus_module_1.forkScopeOverride, tsplus_module_3.just(scope), __tsplusTrace));
21
+ }, __tsplusTrace);
22
+ }
23
+ //# sourceMappingURL=transplant.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transplant.mjs","mappings":";;;;;AAEA;;;;;;;;;;AAUA,OAAM,SAAUA,UAAU,CAAUC,CAA8B,EAAEC,aAAsB;EACxF,OAAOC,iCAAqBC,UAAU,IAAI;IACxC,MAAMC,aAAa,GAAGD,UAAU,CAACE,WAAW,mCAA4B;IACxE,MAAMC,KAAK,GAAWC,gCAAwBJ,UAAU,CAACG,KAAK,EAAxCF,aAAa,CAA4B;IAC/D,OAAOJ,CAAC,CAACQ,2DAAmCC,qBAAKH,KAAK,CAAC,EAJSL,cAIR,CAAC;EAC3D,CAAC,EALiEA,cAKhE;AACJ","names":["transplant","f","__tsplusTrace","tsplus_module_5","fiberState","scopeOverride","getFiberRef","scope","tsplus_module_2","tsplus_module_4","tsplus_module_3"],"sourceRoot":"","sources":["../../../_src/IO/api/transplant.ts"],"sourcesContent":[null]}
@@ -0,0 +1,12 @@
1
+ import * as tsplus_module_1 from "@fncts/io/FiberRef/operations";
2
+ import * as tsplus_module_2 from "@fncts/io/IO/api";
3
+ /**
4
+ * @tsplus pipeable fncts.io.IO whenFiberRef
5
+ * @tsplus static fncts.io.IOOps whenFiberRef
6
+ */
7
+ export function whenFiberRef(ref, f, __tsplusTrace) {
8
+ return self => {
9
+ return tsplus_module_2.whenIO(tsplus_module_2.map(f, __tsplusTrace)(tsplus_module_1.get(ref, __tsplusTrace)), __tsplusTrace)(self);
10
+ };
11
+ }
12
+ //# sourceMappingURL=whenFiberRef.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whenFiberRef.mjs","mappings":";;AAAA;;;;AAIA,OAAM,SAAUA,YAAY,CAAIC,GAAgB,EAAEC,CAAe,EAAEC,aAAsB;EACvF,OAAiBC,IAAiB,IAAwB;IACxD,OAAOC,uBAAYA,oBAAYH,CAAC,EAF+BC,mCAE5CF,GAAG,EAFyCE,eAE9B,EAF8BA,eAExDC,IAAI,CAAuB;EACpC,CAAC;AACH","names":["whenFiberRef","ref","f","__tsplusTrace","self","tsplus_module_2"],"sourceRoot":"","sources":["../../../_src/IO/api/whenFiberRef.ts"],"sourcesContent":[null]}
@@ -0,0 +1,13 @@
1
+ const fileName_1 = "(@fncts/io) src/IO/api/whenRef.ts";
2
+ import * as tsplus_module_1 from "@fncts/io/Ref/api/get";
3
+ import * as tsplus_module_2 from "@fncts/io/IO/api";
4
+ /**
5
+ * @tsplus pipeable fncts.io.IO whenRef
6
+ * @tsplus static fncts.io.IOOps whenRef
7
+ */
8
+ export function whenRef(ref, f) {
9
+ return self => {
10
+ return tsplus_module_2.whenIO(tsplus_module_2.map(f, fileName_1 + ":7:35")(tsplus_module_1.get(ref, fileName_1 + ":7:27")), fileName_1 + ":7:23")(self);
11
+ };
12
+ }
13
+ //# sourceMappingURL=whenRef.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whenRef.mjs","mappings":";;;AAAA;;;;AAIA,OAAM,SAAUA,OAAO,CAAIC,GAAW,EAAEC,CAAe;EACrD,OAAiBC,IAAiB,IAAwB;IACxD,OAAOC,uBAAYA,oBAAYF,CAAC,4CAAbD,GAAG,wBAAW,wBAA1BE,IAAI,CAAuB;EACpC,CAAC;AACH","names":["whenRef","ref","f","self","tsplus_module_2"],"sourceRoot":"","sources":["../../../_src/IO/api/whenRef.ts"],"sourcesContent":[null]}
@@ -1,25 +1,23 @@
1
+ const fileName_1 = "(@fncts/io) src/IO/api/zipConcurrent.ts";
1
2
  import * as tsplus_module_1 from "@fncts/base/data/FiberId/constructors";
2
3
  import * as tsplus_module_2 from "@fncts/io/Future/constructors";
3
- import * as tsplus_module_3 from "@fncts/base/data/Maybe/constructors";
4
+ import * as tsplus_module_3 from "@fncts/io/Fiber/api/interruptFork";
4
5
  import * as tsplus_module_4 from "@fncts/io/IO/api";
5
6
  import * as tsplus_module_5 from "@fncts/base/data/Cause/api";
6
7
  import * as tsplus_module_6 from "@fncts/base/data/Exit/api";
7
- import * as tsplus_module_7 from "@fncts/io/Fiber/api/interruptAs";
8
- import * as tsplus_module_8 from "@fncts/io/Fiber/api/inheritRefs";
8
+ import * as tsplus_module_7 from "@fncts/io/Fiber/api/await";
9
+ import * as tsplus_module_8 from "@fncts/io/Fiber/api/join";
9
10
  import * as tsplus_module_9 from "@fncts/io/Future/api";
10
- import * as tsplus_module_10 from "@fncts/base/data/Either/destructors";
11
- import * as tsplus_module_11 from "@fncts/base/data/Either/constructors";
12
- import * as tsplus_module_12 from "@fncts/base/data/Maybe/destructors";
13
- import * as tsplus_module_13 from "@fncts/io/IO/api/core-scope";
14
- import * as tsplus_module_14 from "@fncts/io/IO/api/interrupt";
15
- export const zipConcurrent = zipConcurrent_1;
11
+ import * as tsplus_module_10 from "@fncts/io/IO/api/transplant";
12
+ import * as tsplus_module_11 from "@fncts/io/IO/api/interrupt";
13
+ import * as tsplus_module_12 from "@fncts/io/IO/api/forkDaemon";
16
14
  export const zipWithConcurrent = zipWithConcurrent_1;
17
15
  import { tuple } from "@fncts/base/data/function";
18
- import { AtomicReference } from "@fncts/base/internal/AtomicReference";
16
+ import { AtomicBoolean } from "@fncts/base/internal/AtomicBoolean";
19
17
  /**
20
18
  * @tsplus pipeable fncts.io.IO zipConcurrent
21
19
  */
22
- function zipConcurrent_1(that, __tsplusTrace) {
20
+ export function zipConcurrent(that, __tsplusTrace) {
23
21
  return self => {
24
22
  return zipWithConcurrent_1(that, tuple, __tsplusTrace)(self);
25
23
  };
@@ -29,13 +27,21 @@ function zipConcurrent_1(that, __tsplusTrace) {
29
27
  */
30
28
  function zipWithConcurrent_1(that, f, __tsplusTrace) {
31
29
  return self => {
32
- return tsplus_module_4.flatMap(fiberId => tsplus_module_14.uninterruptibleMask(({
33
- restore
34
- }) => {
35
- const future = tsplus_module_2.unsafeMake(tsplus_module_1.none);
36
- const ref = new AtomicReference(tsplus_module_3.nothing());
37
- return tsplus_module_13.transplant(graft => tsplus_module_4.flatMap(([left, right]) => tsplus_module_4.matchCauseIO(cause => tsplus_module_4.flatMap(([left, right]) => tsplus_module_6.match(tsplus_module_4.failCauseNow, () => tsplus_module_4.failCauseNow(tsplus_module_5.stripFailures(cause), __tsplusTrace))(tsplus_module_6.zipConcurrent(right)(left)), __tsplusTrace)(zipConcurrent_1(tsplus_module_7.interruptAs(right, fiberId), __tsplusTrace)(tsplus_module_7.interruptAs(left, fiberId))), c => tsplus_module_4.as(() => c, __tsplusTrace)(tsplus_module_4.zip(tsplus_module_8.inheritRefs(right, __tsplusTrace), __tsplusTrace)(tsplus_module_8.inheritRefs(left, __tsplusTrace))), __tsplusTrace)(restore(tsplus_module_9.wait(future, __tsplusTrace), __tsplusTrace)), __tsplusTrace)(tsplus_module_4.zip(tsplus_module_13.forkDaemon(graft(tsplus_module_4.matchCauseIO(cause => tsplus_module_4.zipRight(tsplus_module_4.failCauseNow(cause, __tsplusTrace), __tsplusTrace)(tsplus_module_9.fail(undefined, __tsplusTrace)(future)), b => tsplus_module_12.match(() => tsplus_module_4.unit, value => tsplus_module_10.match(a => tsplus_module_4.asUnit(tsplus_module_9.succeed_(f(a, b), __tsplusTrace)(future), __tsplusTrace), () => tsplus_module_4.unit)(value))(ref.getAndSet(tsplus_module_3.just(tsplus_module_11.right(b)))), __tsplusTrace)(restore(that, __tsplusTrace))), __tsplusTrace), __tsplusTrace)(tsplus_module_13.forkDaemon(graft(tsplus_module_4.matchCauseIO(cause => tsplus_module_4.zipRight(tsplus_module_4.failCauseNow(cause, __tsplusTrace), __tsplusTrace)(tsplus_module_9.fail(undefined, __tsplusTrace)(future)), a => tsplus_module_12.match(() => tsplus_module_4.unit, value => tsplus_module_10.match(() => tsplus_module_4.unit, b => tsplus_module_4.asUnit(tsplus_module_9.succeed_(f(a, b), __tsplusTrace)(future), __tsplusTrace))(value))(ref.getAndSet(tsplus_module_3.just(tsplus_module_11.left(a)))), __tsplusTrace)(restore(self, __tsplusTrace))), __tsplusTrace))), __tsplusTrace);
30
+ return tsplus_module_4.flatMap(fiberId => tsplus_module_11.uninterruptibleMask(restore => {
31
+ return tsplus_module_10.transplant(graft => {
32
+ const future = tsplus_module_2.unsafeMake(tsplus_module_1.none);
33
+ const ref = new AtomicBoolean(false);
34
+ return tsplus_module_4.flatMap(([left, right]) => tsplus_module_4.matchCauseIO(cause => tsplus_module_4.zipRight(tsplus_module_4.flatMap(([left, right]) => tsplus_module_6.match(causes => tsplus_module_4.refailCause(tsplus_module_5.both(tsplus_module_5.stripFailures(cause), causes), __tsplusTrace), () => tsplus_module_4.refailCause(tsplus_module_5.stripFailures(cause), __tsplusTrace))(tsplus_module_6.zipWithCause(right, f, (a, b) => tsplus_module_5.both(a, b))(left)), __tsplusTrace)(tsplus_module_4.zip(tsplus_module_7.wait(right, __tsplusTrace), __tsplusTrace)(tsplus_module_7.wait(left, __tsplusTrace))), __tsplusTrace)(tsplus_module_4.zipRight(tsplus_module_3.interruptFork(right, __tsplusTrace), __tsplusTrace)(tsplus_module_3.interruptFork(left, __tsplusTrace))), () => tsplus_module_4.zipWith(tsplus_module_8.join(right, __tsplusTrace), f, __tsplusTrace)(tsplus_module_8.join(left, __tsplusTrace)), __tsplusTrace)(restore(tsplus_module_9.wait(future, __tsplusTrace), __tsplusTrace)), __tsplusTrace)(tsplus_module_4.zip(fork(() => that, restore, graft, future, ref), __tsplusTrace)(fork(() => self, restore, graft, future, ref)));
35
+ }, __tsplusTrace);
38
36
  }), __tsplusTrace)(tsplus_module_4.fiberId);
39
37
  };
40
38
  }
39
+ function fork(io, restore, graft, future, ref) {
40
+ return tsplus_module_12.forkDaemon(tsplus_module_4.matchCauseIO(cause => tsplus_module_4.zipRight(tsplus_module_4.refailCause(cause, fileName_1 + ":59:55"), fileName_1 + ":59:40")(tsplus_module_9.fail(undefined, fileName_1 + ":59:27")(future)), a => {
41
+ if (ref.getAndSet(true)) {
42
+ tsplus_module_9.unsafeDone(tsplus_module_4.unit, fileName_1 + ":62:26")(future);
43
+ }
44
+ return tsplus_module_4.succeedNow(a, fileName_1 + ":64:27");
45
+ }, fileName_1 + ":58:43")(graft(restore(io(), fileName_1 + ":58:23"))), fileName_1 + ":66:4");
46
+ }
41
47
  //# sourceMappingURL=zipConcurrent.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"zipConcurrent.mjs","mappings":";;;;;;;;;;;;;;aAMgBA,aAAa;aASbC,iBAAiB;AAfjC,SAASC,KAAK,QAAQ,2BAA2B;AACjD,SAASC,eAAe,QAAQ,sCAAsC;AAEtE;;;AAGA,yBAAyCC,IAAmB,EAAEC,aAAsB;EAClF,OAAiBC,IAAiB,IAAyC;IACzE,OAAOC,oBAAuBH,IAAI,EAAEF,KAAK,EAFiBG,eAEnDC,IAAI,CAA+B;EAC5C,CAAC;AACH;AAEA;;;AAGA,6BAAmDF,IAAmB,EAAEI,CAAoB,EAAEH,aAAsB;EAClH,OAAcC,IAAiB,IAA2B;IACxD,OAAOG,wBAAoBC,OAAO,IAChCC,qCAAuB,CAAC;MAAEC;IAAO,CAAE,KAAI;MACrC,MAAMC,MAAM,GAAGC,gDAAwC;MACvD,MAAMC,GAAG,GAAM,IAAIZ,eAAe,CAAsBa,yBAAS,CAAC;MAClE,OAAOC,4BAAeC,KAAK,IACzBT,wBA8BW,CAAC,CAACU,IAAI,EAAEC,KAAK,CAAC,KACrBX,6BACGY,KAAK,IACJZ,wBAGW,CAAC,CAACU,IAAI,EAAEC,KAAK,CAAC,KACrBE,oDAAiD,MAAMb,2DAAgBY,KAAK,GA5CJhB,cA4CmB,EAA3FiB,8BAAmBF,KAAK,EAAxBD,IAAI,CAAqB,CAAmE,EA5CpBd,eAwC5EkB,gBAEiBC,iCAAK,EAAad,OAAO,CAAC,EA1CiCL,eAwC5EmB,gCAAI,EACWd,OAAO,CAAC,CACqB,CAGzC,EACJe,CAAC,IAAKhB,yBAA2CgB,CAAC,EA9C2BpB,eA8CvEI,gDAAqBW,KAAK,EA9C6Cf,2DA8CvEc,IAAI,EA9CmEd,eA8ChC,CAAM,EA9C0BA,eAsChFO,OAAO,sBAACC,MAAM,EAtCkER,8BAsC3D,CASpB,EA/C+EA,eAOpFI,gDAeIS,KAAK,CACHT,6BACGY,KAAK,IAAIZ,yBAA0BA,6BAAgBY,KAAK,EAxBmBhB,cAwBlB,EAxBkBA,eAwBjEqB,qBAAYC,SAAS,EAxB4CtB,eAwBjEQ,MAAM,CAAgB,CAAyB,EACzDe,CAAC,IACAC,uBACE,MAAKpB,oBAAQ,EACZqB,KAAK,IACJC,uBACGC,CAAC,IAAIvB,uBAACiB,yBAAelB,CAAC,CAACwB,CAAC,EAAEJ,CAAC,CAAC,EA9BuCvB,eA8B7DQ,MAAM,CAAiB,EA9BsCR,cA8B/B,EACrC,MAAKI,oBAAQ,EAFfqB,KAAK,CAGJ,EANLf,GAAG,CAACkB,SAAS,CAACjB,qBAAKkB,uBAAaN,CAAC,CAAC,CAAC,CAAC,CAOnC,EAjCyEvB,eAuB9EO,OAAO,CAACR,IAAI,EAvBkEC,cAuBjE,CAWZ,CACF,EAnC+EA,2DAOpFa,KAAK,CACHT,6BACGY,KAAK,IAAIZ,yBAA0BA,6BAAgBY,KAAK,EATuBhB,cAStB,EATsBA,eASrEqB,qBAAYC,SAAS,EATgDtB,eASrEQ,MAAM,CAAgB,CAAyB,EACzDmB,CAAC,IACAH,uBACE,MAAKpB,oBAAQ,EACZqB,KAAK,IACJC,uBACE,MAAKtB,oBAAQ,EACZmB,CAAC,IAAInB,uBAACiB,yBAAelB,CAAC,CAACwB,CAAC,EAAEJ,CAAC,CAAC,EAhB2CvB,eAgBjEQ,MAAM,CAAiB,EAhB0CR,cAgBnC,EAFvCyB,KAAK,CAGJ,EANLf,GAAG,CAACkB,SAAS,CAACjB,qBAAKkB,sBAAYF,CAAC,CAAC,CAAC,CAAC,CAOlC,EAlB6E3B,eAQlFO,OAAO,CAACN,IAAI,EARsED,cAQrE,CAWZ,CACF,EApBmFA,eAoCjF,CAYA,EAhDiFA,cAiDrF;IACH,CAAC,CAAC,EAlDsFA,uCAmDzF;EACH,CAAC;AACH","names":["zipConcurrent","zipWithConcurrent","tuple","AtomicReference","that","__tsplusTrace","self","zipWithConcurrent_1","f","tsplus_module_4","fiberId","tsplus_module_14","restore","future","tsplus_module_2","ref","tsplus_module_3","tsplus_module_13","graft","left","right","cause","tsplus_module_6","zipConcurrent_1","tsplus_module_7","c","tsplus_module_9","undefined","b","tsplus_module_12","value","tsplus_module_10","a","getAndSet","tsplus_module_11"],"sourceRoot":"","sources":["../../../_src/IO/api/zipConcurrent.ts"],"sourcesContent":[null]}
1
+ {"version":3,"file":"zipConcurrent.mjs","mappings":";;;;;;;;;;;;;aAmBgBA,iBAAiB;AAhBjC,SAASC,KAAK,QAAQ,2BAA2B;AACjD,SAASC,aAAa,QAAQ,oCAAoC;AAGlE;;;AAGA,OAAM,SAAUC,aAAa,CAAYC,IAAmB,EAAEC,aAAsB;EAClF,OAAiBC,IAAiB,IAAyC;IACzE,OAAOC,oBAAuBH,IAAI,EAAEH,KAAK,EAFiBI,eAEnDC,IAAI,CAA+B;EAC5C,CAAC;AACH;AAEA;;;AAGA,6BAAmDF,IAAmB,EAAEI,CAAoB,EAAEH,aAAsB;EAClH,OAAcC,IAAiB,IAA2B;IACxD,OAAOG,wBAAoBC,OAAO,IAChCC,qCAAwBC,OAAO,IAAI;MACjC,OAAOC,4BAAeC,KAAK,IAAI;QAC7B,MAAMC,MAAM,GAAGC,gDAA2C;QAC1D,MAAMC,GAAG,GAAM,IAAIf,aAAa,CAAC,KAAK,CAAC;QACvC,OAAOO,wBAEI,CAAC,CAACS,IAAI,EAAEC,KAAK,CAAC,KACrBV,6BACGW,KAAK,IAAIX,yBAGRA,wBAAoC,CAAC,CAACS,IAAI,EAAEC,KAAK,CAAC,KAChDE,sBAGKC,MAAM,IAAKb,4BAAec,mDAAWH,KAAK,GAAgBE,MAAM,CAAC,EAlBIjB,cAkBH,EACnE,MAAMI,0DAAeW,KAAK,GAnB4Cf,cAmB7B,EAJ7CgB,6BACgBF,KAAK,EAAEX,CAAC,EAAE,CAACgB,CAAC,EAAEC,CAAC,KAAKF,qBAAWC,CAAC,EAAEC,CAAC,CAAC,EADpDP,IAAI,CACiD,CAIlD,EApBuEb,eAc5EI,yCAAeU,KAAK,EAdwDd,oDAc5Ea,IAAI,EAdwEb,eAcjD,CAO1B,EArB2EA,sEAa5Ec,KAAK,EAbuEd,6DAY5Ea,IAAI,EAZwEb,gBAqB3E,EACH,MAAMI,6CAAkBU,KAAK,EAtBiDd,gBAsB1CG,CAAC,EAtByCH,oCAsBxEa,IAAI,EAtBoEb,eAsBxC,EAtBwCA,eAUhFO,OAAO,sBAACG,MAAM,EAVkEV,8BAU3D,CAapB,EAvB+EA,eAO7EI,oBACAiB,IAAI,OAACtB,IAAI,EAAEQ,OAAO,EAAEE,KAAK,EAAEC,MAAM,EAAEE,GAAG,CAAC,EARsCZ,eAO7EqB,IAAI,OAACpB,IAAI,EAAEM,OAAO,EAAEE,KAAK,EAAEC,MAAM,EAAEE,GAAG,CAAC,CACC,CAgB5C;MACL,CAAC,EAzBqFZ,cAyBpF;IACJ,CAAC,CAAC,EA1BsFA,uCA2BzF;EACH,CAAC;AACH;AAEA,SAASqB,IAAI,CACXC,EAAqB,EACrBf,OAAiC,EACjCE,KAAc,EACdC,MAA0B,EAC1BE,GAAkB;EAElB,mCAAOR,6BACJW,KAAK,IAAIX,yBAA0BA,4BAAeW,KAAK,wBAAC,yBAA9CQ,qBAAYC,SAAS,yBAArBd,MAAM,CAAgB,CAAwB,EACxDS,CAAC,IAAI;IACJ,IAAIP,GAAG,CAACa,SAAS,CAAC,IAAI,CAAC,EAAE;MACvBF,8EAAM,CAAoB;;IAE5B,OAAOnB,2BAAce,CAAC,wBAAC;EACzB,CAAC,yBAPIV,KAAK,CAACF,OAAO,CAACe,EAAE,EAAE,wBAAC,CAAC,CAQ1B;AACH","names":["zipWithConcurrent","tuple","AtomicBoolean","zipConcurrent","that","__tsplusTrace","self","zipWithConcurrent_1","f","tsplus_module_4","fiberId","tsplus_module_11","restore","tsplus_module_10","graft","future","tsplus_module_2","ref","left","right","cause","tsplus_module_6","causes","tsplus_module_5","a","b","fork","io","tsplus_module_9","undefined","getAndSet"],"sourceRoot":"","sources":["../../../_src/IO/api/zipConcurrent.ts"],"sourcesContent":[null]}
package/_mjs/IO/api.mjs CHANGED
@@ -24,6 +24,7 @@ import * as tsplus_module_22 from "@fncts/base/data/Exit/constructors";
24
24
  export const async = async_1;
25
25
  export const zipRight = zipRight_1;
26
26
  export const as = as_1;
27
+ export const asJust = asJust_1;
27
28
  export const asUnit = asUnit_1;
28
29
  export const catchTagWith = catchTagWith_1;
29
30
  export const catchAll = catchAll_1;
@@ -137,7 +138,7 @@ function as_1(b, __tsplusTrace) {
137
138
  *
138
139
  * @tsplus getter fncts.io.IO asJust
139
140
  */
140
- export function asJust(ma, __tsplusTrace) {
141
+ function asJust_1(ma, __tsplusTrace) {
141
142
  return map_1(tsplus_module_3.just, __tsplusTrace)(ma);
142
143
  }
143
144
  /**
@@ -816,6 +817,12 @@ function iterate_1(initial, cont, body, __tsplusTrace) {
816
817
  export function left(a, __tsplusTrace) {
817
818
  return flatMap_1(a => succeedNow_1(tsplus_module_9.left(a), __tsplusTrace), __tsplusTrace)(succeed_1(a, __tsplusTrace));
818
819
  }
820
+ /**
821
+ * @tsplus getter fncts.io.IO just
822
+ */
823
+ export function just(self) {
824
+ return matchIO_1(e => fail_1(() => tsplus_module_3.just(e), fileName_1 + ":1069:19"), a => tsplus_module_16.match(() => fail_1(() => tsplus_module_3.nothing(), fileName_1 + ":1070:33"), succeedNow_1)(a), fileName_1 + ":1068:22")(self);
825
+ }
819
826
  /**
820
827
  * @tsplus static fncts.io.IOOps log
821
828
  */
@@ -984,6 +991,11 @@ export function merge(io, __tsplusTrace) {
984
991
  export function mergeAll(fas, b, f, __tsplusTrace) {
985
992
  return tsplus_module_11.foldLeft(succeed_1(() => b, __tsplusTrace), (b, a) => zipWith_1(a, f, __tsplusTrace)(b))(fas);
986
993
  }
994
+ /**
995
+ * @tsplus static fncts.io.IOOps nothing
996
+ */
997
+ const nothing_1 = /*#__PURE__*/succeedNow_1( /*#__PURE__*/tsplus_module_3.nothing(), fileName_1 + ":1307:37");
998
+ export const nothing = nothing_1;
987
999
  /**
988
1000
  * Converts an option on errors into an option on values.
989
1001
  *
@@ -1419,7 +1431,7 @@ function tryOrElse_1(that, onSuccess, __tsplusTrace) {
1419
1431
  /**
1420
1432
  * @tsplus static fncts.io.IOOps unit
1421
1433
  */
1422
- const unit_1 = /*#__PURE__*/succeedNow_1(undefined, fileName_1 + ":1803:45");
1434
+ const unit_1 = /*#__PURE__*/succeedNow_1(undefined, fileName_1 + ":1818:45");
1423
1435
  export const unit = unit_1;
1424
1436
  /**
1425
1437
  * Converts an option on errors into an option on values.
@@ -1476,10 +1488,11 @@ export function when(b, __tsplusTrace) {
1476
1488
  * The moral equivalent of `if (p) exp` when `p` has side-effects
1477
1489
  *
1478
1490
  * @tsplus pipeable fncts.io.IO whenIO
1491
+ * @tsplus static fncts.io.IOOps whenIO
1479
1492
  */
1480
1493
  function whenIO_1(mb, __tsplusTrace) {
1481
1494
  return ma => {
1482
- return flatMap_1(b => b ? asUnit_1(ma, __tsplusTrace) : unit_1, __tsplusTrace)(mb);
1495
+ return flatMap_1(b => b ? asJust_1(ma, __tsplusTrace) : nothing_1, __tsplusTrace)(mb);
1483
1496
  };
1484
1497
  }
1485
1498
  /**