@fncts/io 0.0.24 → 0.0.26

Sign up to get free protection for your applications and to get access to all the features.
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
  /**