@fncts/io 0.0.34 → 0.0.36

Sign up to get free protection for your applications and to get access to all the features.
Files changed (230) hide show
  1. package/Fiber/FiberRuntime.d.ts +7 -7
  2. package/Fiber/constructors.d.ts +5 -0
  3. package/IO/api/all.d.ts +41 -0
  4. package/IO/api/concurrency.d.ts +11 -0
  5. package/IO/api/interrupt.d.ts +1 -1
  6. package/IO/api/raceWith.d.ts +2 -1
  7. package/IO/api.d.ts +7 -2
  8. package/IO/definition.d.ts +103 -127
  9. package/IO.d.ts +1 -0
  10. package/Push/api.d.ts +86 -36
  11. package/Push/definition.d.ts +28 -13
  12. package/Push/internal.d.ts +7 -11
  13. package/RefSubject/Atomic.d.ts +8 -11
  14. package/RefSubject/Synchronized/definition.d.ts +4 -6
  15. package/RefSubject/api.d.ts +0 -1
  16. package/RefSubject/definition.d.ts +6 -8
  17. package/STM/definition.d.ts +19 -2
  18. package/Sink/api.d.ts +24 -24
  19. package/Subject/Atomic.d.ts +4 -6
  20. package/Subject/definition.d.ts +2 -2
  21. package/_cjs/Channel/api/runScoped.cjs +1 -1
  22. package/_cjs/Channel/api/runScoped.cjs.map +1 -1
  23. package/_cjs/Channel/api.cjs +2 -2
  24. package/_cjs/Channel/api.cjs.map +1 -1
  25. package/_cjs/Fiber/FiberRuntime.cjs +110 -98
  26. package/_cjs/Fiber/FiberRuntime.cjs.map +1 -1
  27. package/_cjs/Fiber/constructors.cjs +10 -2
  28. package/_cjs/Fiber/constructors.cjs.map +1 -1
  29. package/_cjs/Future/api.cjs +1 -1
  30. package/_cjs/Future/api.cjs.map +1 -1
  31. package/_cjs/IO/api/all.cjs +33 -0
  32. package/_cjs/IO/api/all.cjs.map +1 -0
  33. package/_cjs/IO/api/asyncIO.cjs +1 -1
  34. package/_cjs/IO/api/asyncIO.cjs.map +1 -1
  35. package/_cjs/IO/api/bracketExit.cjs +1 -1
  36. package/_cjs/IO/api/bracketExit.cjs.map +1 -1
  37. package/_cjs/IO/api/concurrency.cjs +25 -4
  38. package/_cjs/IO/api/concurrency.cjs.map +1 -1
  39. package/_cjs/IO/api/disconnect.cjs +1 -1
  40. package/_cjs/IO/api/disconnect.cjs.map +1 -1
  41. package/_cjs/IO/api/foreachConcurrent.cjs +1 -1
  42. package/_cjs/IO/api/foreachConcurrent.cjs.map +1 -1
  43. package/_cjs/IO/api/foreachExec.cjs +1 -1
  44. package/_cjs/IO/api/foreachExec.cjs.map +1 -1
  45. package/_cjs/IO/api/forkIn.cjs +1 -1
  46. package/_cjs/IO/api/forkIn.cjs.map +1 -1
  47. package/_cjs/IO/api/forkScoped.cjs +1 -1
  48. package/_cjs/IO/api/forkScoped.cjs.map +1 -1
  49. package/_cjs/IO/api/fulfill.cjs +1 -1
  50. package/_cjs/IO/api/fulfill.cjs.map +1 -1
  51. package/_cjs/IO/api/interrupt.cjs +18 -6
  52. package/_cjs/IO/api/interrupt.cjs.map +1 -1
  53. package/_cjs/IO/api/raceWith.cjs +4 -4
  54. package/_cjs/IO/api/raceWith.cjs.map +1 -1
  55. package/_cjs/IO/api/timeout.cjs +8 -5
  56. package/_cjs/IO/api/timeout.cjs.map +1 -1
  57. package/_cjs/IO/api/zipConcurrent.cjs +1 -1
  58. package/_cjs/IO/api/zipConcurrent.cjs.map +1 -1
  59. package/_cjs/IO/api.cjs +78 -20
  60. package/_cjs/IO/api.cjs.map +1 -1
  61. package/_cjs/IO/definition.cjs +14 -191
  62. package/_cjs/IO/definition.cjs.map +1 -1
  63. package/_cjs/IO.cjs +11 -0
  64. package/_cjs/IO.cjs.map +1 -1
  65. package/_cjs/Layer/MemoMap.cjs +1 -1
  66. package/_cjs/Layer/MemoMap.cjs.map +1 -1
  67. package/_cjs/Layer/api.cjs.map +1 -1
  68. package/_cjs/Push/api.cjs +238 -168
  69. package/_cjs/Push/api.cjs.map +1 -1
  70. package/_cjs/Push/definition.cjs +12 -13
  71. package/_cjs/Push/definition.cjs.map +1 -1
  72. package/_cjs/Push/internal.cjs +37 -29
  73. package/_cjs/Push/internal.cjs.map +1 -1
  74. package/_cjs/RefSubject/Atomic.cjs +15 -19
  75. package/_cjs/RefSubject/Atomic.cjs.map +1 -1
  76. package/_cjs/RefSubject/Synchronized/definition.cjs +9 -10
  77. package/_cjs/RefSubject/Synchronized/definition.cjs.map +1 -1
  78. package/_cjs/RefSubject/api.cjs +5 -6
  79. package/_cjs/RefSubject/api.cjs.map +1 -1
  80. package/_cjs/RefSubject/definition.cjs.map +1 -1
  81. package/_cjs/STM/api/atomically.cjs +1 -1
  82. package/_cjs/STM/api/atomically.cjs.map +1 -1
  83. package/_cjs/STM/api.cjs +2 -2
  84. package/_cjs/STM/api.cjs.map +1 -1
  85. package/_cjs/STM/definition.cjs +1 -1
  86. package/_cjs/STM/definition.cjs.map +1 -1
  87. package/_cjs/ScopedRef/api.cjs +2 -2
  88. package/_cjs/ScopedRef/api.cjs.map +1 -1
  89. package/_cjs/Semaphore.cjs +1 -1
  90. package/_cjs/Semaphore.cjs.map +1 -1
  91. package/_cjs/Sink/api.cjs +13 -13
  92. package/_cjs/Sink/api.cjs.map +1 -1
  93. package/_cjs/Subject/Atomic.cjs +4 -5
  94. package/_cjs/Subject/Atomic.cjs.map +1 -1
  95. package/_cjs/TReentrantLock/api.cjs +2 -2
  96. package/_cjs/TReentrantLock/api.cjs.map +1 -1
  97. package/_cjs/TSemaphore/api.cjs +1 -1
  98. package/_cjs/TSemaphore/api.cjs.map +1 -1
  99. package/_cjs/collection/immutable/Conc/dropUntilIO.cjs +12 -17
  100. package/_cjs/collection/immutable/Conc/dropUntilIO.cjs.map +1 -1
  101. package/_cjs/collection/immutable/Conc/dropWhileIO.cjs +12 -17
  102. package/_cjs/collection/immutable/Conc/dropWhileIO.cjs.map +1 -1
  103. package/_cjs/collection/immutable/Conc/filterIO.cjs +2 -12
  104. package/_cjs/collection/immutable/Conc/filterIO.cjs.map +1 -1
  105. package/_cjs/collection/immutable/Conc/mapIO.cjs +3 -9
  106. package/_cjs/collection/immutable/Conc/mapIO.cjs.map +1 -1
  107. package/_cjs/collection/immutable/Conc/takeWhileIO.cjs +11 -27
  108. package/_cjs/collection/immutable/Conc/takeWhileIO.cjs.map +1 -1
  109. package/_mjs/Channel/api/runScoped.mjs +1 -1
  110. package/_mjs/Channel/api/runScoped.mjs.map +1 -1
  111. package/_mjs/Channel/api.mjs +2 -2
  112. package/_mjs/Channel/api.mjs.map +1 -1
  113. package/_mjs/Fiber/FiberRuntime.mjs +111 -100
  114. package/_mjs/Fiber/FiberRuntime.mjs.map +1 -1
  115. package/_mjs/Fiber/constructors.mjs +7 -1
  116. package/_mjs/Fiber/constructors.mjs.map +1 -1
  117. package/_mjs/Future/api.mjs +1 -1
  118. package/_mjs/Future/api.mjs.map +1 -1
  119. package/_mjs/IO/api/all.mjs +24 -0
  120. package/_mjs/IO/api/all.mjs.map +1 -0
  121. package/_mjs/IO/api/asyncIO.mjs +1 -1
  122. package/_mjs/IO/api/asyncIO.mjs.map +1 -1
  123. package/_mjs/IO/api/bracketExit.mjs +1 -1
  124. package/_mjs/IO/api/bracketExit.mjs.map +1 -1
  125. package/_mjs/IO/api/concurrency.mjs +19 -2
  126. package/_mjs/IO/api/concurrency.mjs.map +1 -1
  127. package/_mjs/IO/api/disconnect.mjs +1 -1
  128. package/_mjs/IO/api/disconnect.mjs.map +1 -1
  129. package/_mjs/IO/api/foreachConcurrent.mjs +1 -1
  130. package/_mjs/IO/api/foreachConcurrent.mjs.map +1 -1
  131. package/_mjs/IO/api/foreachExec.mjs +1 -1
  132. package/_mjs/IO/api/foreachExec.mjs.map +1 -1
  133. package/_mjs/IO/api/forkIn.mjs +1 -1
  134. package/_mjs/IO/api/forkIn.mjs.map +1 -1
  135. package/_mjs/IO/api/forkScoped.mjs +1 -1
  136. package/_mjs/IO/api/forkScoped.mjs.map +1 -1
  137. package/_mjs/IO/api/fulfill.mjs +1 -1
  138. package/_mjs/IO/api/fulfill.mjs.map +1 -1
  139. package/_mjs/IO/api/interrupt.mjs +19 -7
  140. package/_mjs/IO/api/interrupt.mjs.map +1 -1
  141. package/_mjs/IO/api/raceWith.mjs +4 -4
  142. package/_mjs/IO/api/raceWith.mjs.map +1 -1
  143. package/_mjs/IO/api/timeout.mjs +8 -5
  144. package/_mjs/IO/api/timeout.mjs.map +1 -1
  145. package/_mjs/IO/api/zipConcurrent.mjs +1 -1
  146. package/_mjs/IO/api/zipConcurrent.mjs.map +1 -1
  147. package/_mjs/IO/api.mjs +78 -23
  148. package/_mjs/IO/api.mjs.map +1 -1
  149. package/_mjs/IO/definition.mjs +12 -181
  150. package/_mjs/IO/definition.mjs.map +1 -1
  151. package/_mjs/IO.mjs +1 -0
  152. package/_mjs/IO.mjs.map +1 -1
  153. package/_mjs/Layer/MemoMap.mjs +1 -1
  154. package/_mjs/Layer/MemoMap.mjs.map +1 -1
  155. package/_mjs/Layer/api.mjs.map +1 -1
  156. package/_mjs/Push/api.mjs +223 -166
  157. package/_mjs/Push/api.mjs.map +1 -1
  158. package/_mjs/Push/definition.mjs +9 -10
  159. package/_mjs/Push/definition.mjs.map +1 -1
  160. package/_mjs/Push/internal.mjs +33 -22
  161. package/_mjs/Push/internal.mjs.map +1 -1
  162. package/_mjs/RefSubject/Atomic.mjs +15 -19
  163. package/_mjs/RefSubject/Atomic.mjs.map +1 -1
  164. package/_mjs/RefSubject/Synchronized/definition.mjs +9 -10
  165. package/_mjs/RefSubject/Synchronized/definition.mjs.map +1 -1
  166. package/_mjs/RefSubject/api.mjs +6 -7
  167. package/_mjs/RefSubject/api.mjs.map +1 -1
  168. package/_mjs/RefSubject/definition.mjs.map +1 -1
  169. package/_mjs/STM/api/atomically.mjs +1 -1
  170. package/_mjs/STM/api/atomically.mjs.map +1 -1
  171. package/_mjs/STM/api.mjs +2 -2
  172. package/_mjs/STM/api.mjs.map +1 -1
  173. package/_mjs/STM/definition.mjs +1 -1
  174. package/_mjs/STM/definition.mjs.map +1 -1
  175. package/_mjs/ScopedRef/api.mjs +2 -2
  176. package/_mjs/ScopedRef/api.mjs.map +1 -1
  177. package/_mjs/Semaphore.mjs +1 -1
  178. package/_mjs/Semaphore.mjs.map +1 -1
  179. package/_mjs/Sink/api.mjs +10 -10
  180. package/_mjs/Sink/api.mjs.map +1 -1
  181. package/_mjs/Subject/Atomic.mjs +4 -5
  182. package/_mjs/Subject/Atomic.mjs.map +1 -1
  183. package/_mjs/TReentrantLock/api.mjs +2 -2
  184. package/_mjs/TReentrantLock/api.mjs.map +1 -1
  185. package/_mjs/TSemaphore/api.mjs +1 -1
  186. package/_mjs/TSemaphore/api.mjs.map +1 -1
  187. package/_mjs/collection/immutable/Conc/dropUntilIO.mjs +12 -17
  188. package/_mjs/collection/immutable/Conc/dropUntilIO.mjs.map +1 -1
  189. package/_mjs/collection/immutable/Conc/dropWhileIO.mjs +12 -17
  190. package/_mjs/collection/immutable/Conc/dropWhileIO.mjs.map +1 -1
  191. package/_mjs/collection/immutable/Conc/filterIO.mjs +2 -12
  192. package/_mjs/collection/immutable/Conc/filterIO.mjs.map +1 -1
  193. package/_mjs/collection/immutable/Conc/mapIO.mjs +3 -9
  194. package/_mjs/collection/immutable/Conc/mapIO.mjs.map +1 -1
  195. package/_mjs/collection/immutable/Conc/takeWhileIO.mjs +11 -27
  196. package/_mjs/collection/immutable/Conc/takeWhileIO.mjs.map +1 -1
  197. package/_src/Channel/api.ts +3 -3
  198. package/_src/Fiber/FiberRuntime.ts +76 -75
  199. package/_src/Fiber/constructors.ts +5 -0
  200. package/_src/IO/api/all.ts +64 -0
  201. package/_src/IO/api/concurrency.ts +33 -0
  202. package/_src/IO/api/foreachExec.ts +2 -2
  203. package/_src/IO/api/interrupt.ts +20 -7
  204. package/_src/IO/api/raceWith.ts +4 -2
  205. package/_src/IO/api/timeout.ts +21 -1
  206. package/_src/IO/api.ts +79 -27
  207. package/_src/IO/definition.ts +155 -200
  208. package/_src/IO.ts +1 -0
  209. package/_src/Layer/api.ts +0 -1
  210. package/_src/Push/api.ts +305 -304
  211. package/_src/Push/definition.ts +19 -17
  212. package/_src/Push/internal.ts +63 -31
  213. package/_src/RefSubject/Atomic.ts +16 -22
  214. package/_src/RefSubject/Synchronized/definition.ts +6 -9
  215. package/_src/RefSubject/api.ts +9 -12
  216. package/_src/RefSubject/definition.ts +6 -8
  217. package/_src/STM/api.ts +0 -5
  218. package/_src/STM/definition.ts +8 -2
  219. package/_src/Sink/api.ts +9 -9
  220. package/_src/Subject/Atomic.ts +6 -8
  221. package/_src/Subject/definition.ts +2 -2
  222. package/_src/collection/immutable/Conc/dropUntilIO.ts +18 -15
  223. package/_src/collection/immutable/Conc/dropWhileIO.ts +18 -17
  224. package/_src/collection/immutable/Conc/filterIO.ts +1 -11
  225. package/_src/collection/immutable/Conc/mapIO.ts +2 -9
  226. package/_src/collection/immutable/Conc/takeWhileIO.ts +19 -28
  227. package/collection/immutable/Conc/filterIO.d.ts +1 -1
  228. package/collection/immutable/Conc/mapIO.d.ts +1 -1
  229. package/collection/immutable/Conc/takeWhileIO.d.ts +1 -1
  230. package/package.json +2 -2
package/_mjs/Push/api.mjs CHANGED
@@ -1,39 +1,41 @@
1
1
  var _a;
2
2
  const fileName_1 = "(@fncts/io) src/Push/api.ts";
3
- import * as tsplus_module_1 from "@fncts/io/IO/api";
4
- import * as tsplus_module_2 from "@fncts/io/Push/definition";
5
- import * as tsplus_module_3 from "@fncts/io/IO/api/forkScoped";
6
- import * as tsplus_module_4 from "@fncts/io/CountdownLatch";
7
- import * as tsplus_module_5 from "@fncts/base/collection/Iterable/api";
8
- import * as tsplus_module_6 from "@fncts/io/IO/api/delay";
9
- import * as tsplus_module_7 from "@fncts/io/IO/api/acquireRelease";
10
- import * as tsplus_module_8 from "@fncts/io/Fiber/api/interrupt";
11
- import * as tsplus_module_9 from "@fncts/io/Ref/Synchronized/api";
12
- import * as tsplus_module_10 from "@fncts/io/Ref/Synchronized/constructors";
13
- import * as tsplus_module_11 from "@fncts/io/TSemaphore/api";
14
- import * as tsplus_module_12 from "@fncts/io/TSemaphore/constructors";
15
- import * as tsplus_module_13 from "@fncts/io/STM/api/atomically";
16
- import * as tsplus_module_14 from "@fncts/base/data/Maybe/destructors";
17
- import * as tsplus_module_15 from "@fncts/io/IO/api/concurrency";
18
- import * as tsplus_module_16 from "@fncts/base/data/function/api";
19
- import * as tsplus_module_17 from "@fncts/io/Future/api";
20
- import * as tsplus_module_18 from "@fncts/io/Schedule/api";
21
- import * as tsplus_module_19 from "@fncts/io/IO/api/schedule";
22
- import * as tsplus_module_20 from "@fncts/io/Future/constructors";
23
- import * as tsplus_module_21 from "@fncts/io/IO/api/environment";
24
- import * as tsplus_module_22 from "@fncts/io/IO/api/fulfill";
25
- import * as tsplus_module_23 from "@fncts/base/data/Maybe/constructors";
26
- import * as tsplus_module_24 from "@fncts/base/data/Maybe/definition";
27
- import * as tsplus_module_25 from "@fncts/base/data/FiberId/constructors";
28
- import * as tsplus_module_26 from "@fncts/io/Fiber/api/interruptAs";
3
+ import * as tsplus_module_1 from "@fncts/io/Future/api";
4
+ import * as tsplus_module_2 from "@fncts/io/IO/api/interrupt";
5
+ import * as tsplus_module_3 from "@fncts/base/data/Either/destructors";
6
+ import * as tsplus_module_4 from "@fncts/io/IO/api";
7
+ import * as tsplus_module_5 from "@fncts/io/IO/api/forkIn";
8
+ import * as tsplus_module_6 from "@fncts/io/IO/api/fulfill";
9
+ import * as tsplus_module_7 from "@fncts/io/IO/runtime";
10
+ import * as tsplus_module_8 from "@fncts/io/IO/api/scope";
11
+ import * as tsplus_module_9 from "@fncts/io/Future/constructors";
12
+ import * as tsplus_module_10 from "@fncts/io/IO/api/scoped";
13
+ import * as tsplus_module_11 from "@fncts/io/Push/definition";
14
+ import * as tsplus_module_12 from "@fncts/base/data/Either/constructors";
15
+ import * as tsplus_module_13 from "@fncts/base/collection/Iterable/api";
16
+ import * as tsplus_module_14 from "@fncts/io/IO/api/foreachConcurrent";
17
+ import * as tsplus_module_15 from "@fncts/io/IO/api/delay";
18
+ import * as tsplus_module_16 from "@fncts/base/data/Maybe/destructors";
19
+ import * as tsplus_module_17 from "@fncts/io/Semaphore";
20
+ import * as tsplus_module_18 from "@fncts/io/IO/api/concurrency";
21
+ import * as tsplus_module_19 from "@fncts/base/data/function/api";
22
+ import * as tsplus_module_20 from "@fncts/io/IO/api/asyncIO";
23
+ import * as tsplus_module_21 from "@fncts/io/IO/api/forkDaemon";
24
+ import * as tsplus_module_22 from "@fncts/io/Fiber/api/await";
25
+ import * as tsplus_module_23 from "@fncts/io/IO/api/environment";
26
+ import * as tsplus_module_24 from "@fncts/io/Fiber/api/interrupt";
27
+ import * as tsplus_module_25 from "@fncts/base/data/Maybe/constructors";
28
+ import * as tsplus_module_26 from "@fncts/base/data/Maybe/definition";
29
29
  import * as tsplus_module_27 from "@fncts/base/data/Cause/api";
30
- import * as tsplus_module_28 from "@fncts/io/IO/api/foreachConcurrent";
31
- import * as tsplus_module_29 from "@fncts/base/collection/immutable/Conc/definition";
32
- import * as tsplus_module_30 from "@fncts/io/IO/api/scoped";
33
- import * as tsplus_module_31 from "@fncts/io/Ref/api/set";
34
- import * as tsplus_module_32 from "@fncts/io/Fiber/api/joinAll";
30
+ import * as tsplus_module_28 from "@fncts/io/Fiber/api/interruptFork";
31
+ import * as tsplus_module_29 from "@fncts/io/IO/api/forkScoped";
32
+ import * as tsplus_module_30 from "@fncts/base/collection/immutable/Conc/definition";
33
+ import * as tsplus_module_31 from "@fncts/io/Fiber/api/joinAll";
34
+ import * as tsplus_module_32 from "@fncts/io/IO/api/fork";
35
35
  import * as tsplus_module_33 from "@fncts/io/IO/api/asyncInterrupt";
36
+ export const asyncInterrupt = asyncInterrupt_1;
36
37
  export const combineLatest = combineLatest_1;
38
+ export const exhaustMap = exhaustMap_1;
37
39
  export const flatMapConcurrentBounded = flatMapConcurrentBounded_1;
38
40
  export const flatMapConcurrentUnbounded = flatMapConcurrentUnbounded_1;
39
41
  export const flatMap = flatMap_1;
@@ -42,13 +44,17 @@ export const fromIO = fromIO_1;
42
44
  export const map = map_1;
43
45
  export const mapIO = mapIO_1;
44
46
  export const mergeAll = mergeAll_1;
47
+ export const observe = observe_1;
45
48
  export const scoped = scoped_1;
49
+ export const switchMap = switchMap_1;
50
+ export const switchMapIO = switchMapIO_1;
46
51
  export const transform = transform_1;
47
52
  export const unfoldIO = unfoldIO_1;
48
53
  export const unwrap = unwrap_1;
49
54
  import { AtomicReference } from "@fncts/base/internal/AtomicReference";
50
- import { Emitter, Push, PushTypeId, PushVariance } from "./definition.mjs";
51
- import { earlyExit, onEarlyExit } from "./internal.mjs";
55
+ import { IO } from "@fncts/io/IO";
56
+ import { withExhaust, withSwitch, withUnboundedConcurrency } from "@fncts/io/Push/internal";
57
+ import { Push, PushTypeId, PushVariance, Sink } from "./definition.mjs";
52
58
  /**
53
59
  * @tsplus pipeable fncts.io.Push as
54
60
  */
@@ -57,13 +63,34 @@ export function as(b) {
57
63
  return map_1(b)(self);
58
64
  };
59
65
  }
66
+ /**
67
+ * @tsplus static fncts.io.PushOps asyncInterrupt
68
+ */
69
+ function asyncInterrupt_1(make) {
70
+ return tsplus_module_11.makePush(sink => tsplus_module_10.scoped(tsplus_module_4.flatMap(future => tsplus_module_4.flatMap(scope => tsplus_module_4.flatMap(runtime => {
71
+ const unsafeSink = {
72
+ event: value => runtime.unsafeRunOrFork(tsplus_module_5.forkIn(scope, fileName_1 + ":34:77")(sink.event(value)), fileName_1 + ":34:52"),
73
+ error: cause => runtime.unsafeRunOrFork(tsplus_module_5.forkIn(scope, fileName_1 + ":35:93")(tsplus_module_6.fulfill(future, fileName_1 + ":35:78")(sink.error(cause))), fileName_1 + ":35:52")
74
+ };
75
+ return tsplus_module_4.flatMap(eitherPush => tsplus_module_4.map(() => void 0, fileName_1 + ":38:10")(tsplus_module_3.match(canceller => tsplus_module_2.onInterrupt(() => canceller, fileName_1 + ":40:52")(tsplus_module_1.wait(future, fileName_1 + ":40:34")), push => push.run(sink))(eitherPush)), fileName_1 + ":37:29")(tsplus_module_4.succeed(() => make(unsafeSink), fileName_1 + ":37:32"));
76
+ }, fileName_1 + ":32:26")(tsplus_module_7.runtime(fileName_1 + ":32:37")), fileName_1 + ":31:26")(tsplus_module_8.scope), fileName_1 + ":30:26")(tsplus_module_9.make(fileName_1 + ":30:38")), fileName_1 + ":44:9"));
77
+ }
78
+ /**
79
+ * @tsplus static fncts.io.PushOps async
80
+ */
81
+ export function async(make) {
82
+ return asyncInterrupt_1(sink => {
83
+ make(sink);
84
+ return tsplus_module_12.left(tsplus_module_4.unit, fileName_1 + ":54:23");
85
+ });
86
+ }
60
87
  function combineLatest_1(streams) {
61
- return tsplus_module_2.makePush(emitter => (() => {
62
- const size = tsplus_module_5.size(streams);
63
- return tsplus_module_1.flatMap(ref => tsplus_module_1.flatMap(latch => {
64
- const emitIfReady = tsplus_module_1.flatMap(as => as.length === size ? emitter.emit(as) : tsplus_module_1.unit, fileName_1 + ":30:69")(tsplus_module_1.succeed(() => ref.filter(a => a != null), fileName_1 + ":30:31"));
65
- return tsplus_module_1.flatMap(() => tsplus_module_1.map(() => void 0, fileName_1 + ":46:8")(tsplus_module_1.zipRight(emitter.end, fileName_1 + ":46:22")(latch.await)), fileName_1 + ":33:8")(tsplus_module_1.foreachWithIndex(streams, (i, stream) => tsplus_module_3.forkScoped(stream.run(tsplus_module_2.makeEmitter(value => tsplus_module_1.zipRight(emitIfReady, fileName_1 + ":39:50")(tsplus_module_1.succeed(() => ref[i] = value, fileName_1 + ":39:30")), cause => emitter.failCause(cause), latch.countDown)), fileName_1 + ":43:14"), fileName_1 + ":34:28"));
66
- }, fileName_1 + ":29:30")(tsplus_module_4.make(size)), fileName_1 + ":28:30")(tsplus_module_1.succeed(() => Array(size), fileName_1 + ":28:33"));
88
+ return tsplus_module_11.makePush(emitter => (() => {
89
+ const size = tsplus_module_13.size(streams);
90
+ return tsplus_module_4.flatMap(ref => {
91
+ const emitIfReady = tsplus_module_4.flatMap(as => as.length === size ? emitter.event(as) : tsplus_module_4.unit, fileName_1 + ":70:69")(tsplus_module_4.succeed(() => ref.filter(a => a != null), fileName_1 + ":70:31"));
92
+ return tsplus_module_4.map(() => void 0, fileName_1 + ":73:8")(tsplus_module_14.foreachConcurrent(tsplus_module_13.zipWithIndex(streams), ([i, stream]) => stream.run(tsplus_module_11.makeSink(value => tsplus_module_4.zipRight(emitIfReady, fileName_1 + ":77:48")(tsplus_module_4.succeed(() => ref[i] = value, fileName_1 + ":77:28")), cause => emitter.error(cause))), fileName_1 + ":74:29"));
93
+ }, fileName_1 + ":69:30")(tsplus_module_4.succeed(() => Array(size), fileName_1 + ":69:33"));
67
94
  })());
68
95
  }
69
96
  /**
@@ -79,21 +106,66 @@ export function combineLatestWith(that, f) {
79
106
  */
80
107
  export function debounce(duration) {
81
108
  return self => {
82
- return tsplus_module_2.makePush(emitter => tsplus_module_1.flatMap(ref => tsplus_module_1.flatMap(latch => tsplus_module_1.flatMap(() => tsplus_module_1.map(() => void 0, fileName_1 + ":84:10")(tsplus_module_1.zipRight(emitter.end, fileName_1 + ":84:24")(latch.await)), fileName_1 + ":69:10")(self.run(tsplus_module_2.makeEmitter(value => tsplus_module_9.updateIO(previous => tsplus_module_1.flatMap(() => tsplus_module_3.forkScoped(tsplus_module_7.acquireRelease(() => tsplus_module_6.delay(duration)(emitter.emit(value)), () => latch.countDown, fileName_1 + ":76:47"), fileName_1 + ":76:107"), fileName_1 + ":75:22")(tsplus_module_1.defer(() => previous ? tsplus_module_8.interrupt(previous) : latch.increment, fileName_1 + ":75:31")), fileName_1 + ":73:29")(ref), cause => emitter.failCause(cause), latch.countDown))), fileName_1 + ":68:24")(tsplus_module_4.make(1)), fileName_1 + ":67:24")(tsplus_module_10.makeSynchronized(() => null, fileName_1 + ":67:46")));
109
+ return switchMapIO_1(a => tsplus_module_15.delay(duration)(tsplus_module_4.succeedNow(a, fileName_1 + ":101:49")))(self);
83
110
  };
84
111
  }
85
112
  /**
86
113
  * @tsplus static fncts.io.PushOps defer
87
114
  */
88
115
  export function defer(self) {
89
- return tsplus_module_2.makePush(emitter => tsplus_module_1.flatMap(push => push.run(emitter), fileName_1 + ":94:44")(tsplus_module_1.succeed(self, fileName_1 + ":94:30")));
116
+ return tsplus_module_11.makePush(emitter => tsplus_module_4.flatMap(push => push.run(emitter), fileName_1 + ":109:44")(tsplus_module_4.succeed(self, fileName_1 + ":109:30")));
117
+ }
118
+ /**
119
+ * @tsplus pipeable fncts.io.Push exhaustMap
120
+ */
121
+ function exhaustMap_1(f) {
122
+ return self => {
123
+ return tsplus_module_11.makePush(sink => withExhaust(fork => self.run(tsplus_module_11.makeSink(a => fork(f(a).run(sink)), sink.error))));
124
+ };
125
+ }
126
+ /**
127
+ * @tsplus pipeable fncts.io.Push exhaustMapIO
128
+ */
129
+ export function exhaustMapIO(f) {
130
+ return self => {
131
+ return exhaustMap_1(a => fromIO_1(() => f(a)))(self);
132
+ };
133
+ }
134
+ /**
135
+ * @tsplus pipeable fncts.io.Push filterIO
136
+ */
137
+ export function filterIO(predicate) {
138
+ return self => {
139
+ return tsplus_module_11.makePush(sink => self.run(tsplus_module_11.makeSink(a => tsplus_module_4.catchAllCause(sink.error, fileName_1 + ":141:29")(tsplus_module_4.flatMap(b => b ? sink.event(a) : tsplus_module_4.unit, fileName_1 + ":140:23")(predicate(a))), sink.error)));
140
+ };
141
+ }
142
+ /**
143
+ * @tsplus pipeable fncts.io.Push filterMapIO
144
+ */
145
+ export function filterMapIO(f) {
146
+ return self => {
147
+ return tsplus_module_11.makePush(sink => self.run(tsplus_module_11.makeSink(a => tsplus_module_4.catchAllCause(sink.error, fileName_1 + ":160:29")(tsplus_module_4.flatMap(mb => tsplus_module_16.match(() => tsplus_module_4.unit, sink.event)(mb), fileName_1 + ":159:23")(f(a))), sink.error)));
148
+ };
149
+ }
150
+ export function filter(predicate) {
151
+ return self => {
152
+ return tsplus_module_11.makePush(sink => self.run(tsplus_module_11.makeSink(a => predicate(a) ? sink.event(a) : tsplus_module_4.unit, sink.error)));
153
+ };
154
+ }
155
+ /**
156
+ * @tsplus pipeable fncts.io.Push filterMap
157
+ */
158
+ export function filterMap(f) {
159
+ return self => {
160
+ return tsplus_module_11.makePush(sink => self.run(tsplus_module_11.makeSink(a => tsplus_module_16.match(() => tsplus_module_4.unit, sink.event)(f(a)), sink.error)));
161
+ };
90
162
  }
91
163
  /**
92
164
  * @tsplus pipeable fncts.io.Push flatMapConcurrentBounded
93
165
  */
94
166
  function flatMapConcurrentBounded_1(f, concurrency) {
95
167
  return self => {
96
- return tsplus_module_2.makePush(emitter => tsplus_module_1.flatMap(semaphore => tsplus_module_1.map(() => void 0, fileName_1 + ":105:10")(flatMapConcurrentUnbounded_1(a => transform_1(io => tsplus_module_11.withPermit(semaphore, fileName_1 + ":105:82")(io))(f(a)))(self).run(emitter)), fileName_1 + ":104:28")(tsplus_module_13.atomically(tsplus_module_12.make(concurrency, fileName_1 + ":104:39"), fileName_1 + ":104:52")));
168
+ return tsplus_module_11.makePush(emitter => tsplus_module_4.flatMap(semaphore => tsplus_module_4.map(() => void 0, fileName_1 + ":196:10")(flatMapConcurrentUnbounded_1(a => transform_1(io => semaphore.withPermit(io))(f(a)))(self).run(emitter)), fileName_1 + ":195:28")(tsplus_module_17.makeSemaphore(concurrency, fileName_1 + ":195:38")));
97
169
  };
98
170
  }
99
171
  /**
@@ -101,7 +173,7 @@ function flatMapConcurrentBounded_1(f, concurrency) {
101
173
  */
102
174
  function flatMapConcurrentUnbounded_1(f) {
103
175
  return self => {
104
- return tsplus_module_2.makePush(emitter => tsplus_module_1.flatMap(latch => tsplus_module_1.flatMap(() => tsplus_module_1.map(() => void 0, fileName_1 + ":129:10")(tsplus_module_1.zipRight(emitter.end, fileName_1 + ":129:24")(latch.await)), fileName_1 + ":119:10")(self.run(tsplus_module_2.makeEmitter(value => tsplus_module_1.zipRight(tsplus_module_3.forkScoped(f(value).run(tsplus_module_2.makeEmitter(emitter.emit, emitter.failCause, latch.countDown)), fileName_1 + ":123:106"), fileName_1 + ":123:34")(latch.increment), emitter.failCause, latch.countDown))), fileName_1 + ":118:24")(tsplus_module_4.make(1)));
176
+ return tsplus_module_11.makePush(sink => withUnboundedConcurrency(fork => self.run(tsplus_module_11.makeSink(a => fork(f(a).run(sink)), sink.error))));
105
177
  };
106
178
  }
107
179
  /**
@@ -109,7 +181,7 @@ function flatMapConcurrentUnbounded_1(f) {
109
181
  */
110
182
  export function flatMapConcurrent(f) {
111
183
  return self => {
112
- return unwrap_1(tsplus_module_1.map(concurrency => tsplus_module_14.match(() => flatMapConcurrentUnbounded_1(f)(self), n => flatMapConcurrentBounded_1(f, n)(self))(concurrency), fileName_1 + ":141:25")(tsplus_module_15.concurrency));
184
+ return unwrap_1(tsplus_module_4.map(concurrency => tsplus_module_16.match(() => flatMapConcurrentUnbounded_1(f)(self), n => flatMapConcurrentBounded_1(f, n)(self))(concurrency), fileName_1 + ":217:25")(tsplus_module_18.concurrency));
113
185
  };
114
186
  }
115
187
  /**
@@ -124,34 +196,34 @@ function flatMap_1(f) {
124
196
  * @tsplus getter fncts.io.Push flatten
125
197
  */
126
198
  function flatten_1(self) {
127
- return flatMap_1(tsplus_module_16.identity)(self);
199
+ return flatMap_1(tsplus_module_19.identity)(self);
128
200
  }
129
201
  /**
130
202
  * @tsplus static fncts.io.PushOps fromIO
131
203
  */
132
204
  function fromIO_1(io) {
133
- return tsplus_module_2.makePush(emitter => tsplus_module_1.zipRight(emitter.end, fileName_1 + ":176:10")(tsplus_module_1.matchCauseIO(cause => emitter.failCause(cause), value => emitter.emit(value), fileName_1 + ":173:32")(tsplus_module_1.defer(io, fileName_1 + ":173:15"))));
205
+ return tsplus_module_11.makePush(emitter => tsplus_module_4.matchCauseIO(cause => emitter.error(cause), value => emitter.event(value), fileName_1 + ":248:30")(tsplus_module_4.defer(io, fileName_1 + ":248:13")));
134
206
  }
135
207
  /**
136
208
  * @tsplus static fncts.io.PushOps fromAsyncIterable
137
209
  */
138
210
  export function fromAsyncIterable(iterable) {
139
- return tsplus_module_2.makePush(emitter => tsplus_module_1.defer(() => fromAsyncIterableLoop(iterable[Symbol.asyncIterator](), emitter, fileName_1 + ":184:58"), fileName_1 + ":184:36"));
211
+ return tsplus_module_11.makePush(sink => tsplus_module_20.asyncIO(cb => tsplus_module_4.defer(() => fromAsyncIterableLoop(iterable[Symbol.asyncIterator](), sink, cb, fileName_1 + ":260:70"), fileName_1 + ":260:48"), fileName_1 + ":260:15"));
140
212
  }
141
- function fromAsyncIterableLoop(iterator, emitter, __tsplusTrace) {
142
- return tsplus_module_1.matchCauseIO(cause => tsplus_module_1.zipRight(emitter.end, __tsplusTrace)(emitter.failCause(cause)), result => result.done ? emitter.end : tsplus_module_1.zipRight(fromAsyncIterableLoop(iterator, emitter, __tsplusTrace), __tsplusTrace)(emitter.emit(result.value)), __tsplusTrace)(tsplus_module_1.fromPromiseHalt(iterator.next, __tsplusTrace));
213
+ function fromAsyncIterableLoop(iterator, sink, cb, __tsplusTrace) {
214
+ return tsplus_module_4.matchCauseIO(cause => sink.error(cause), result => result.done ? tsplus_module_4.succeed(() => cb(tsplus_module_4.unit), __tsplusTrace) : tsplus_module_4.zipRight(fromAsyncIterableLoop(iterator, sink, cb, __tsplusTrace), __tsplusTrace)(sink.event(result.value)), __tsplusTrace)(tsplus_module_4.fromPromiseHalt(iterator.next, __tsplusTrace));
143
215
  }
144
216
  /**
145
217
  * @tsplus static fncts.io.PushOps fromIterable
146
218
  */
147
219
  export function fromIterable(iterable) {
148
- return tsplus_module_2.makePush(emitter => tsplus_module_1.defer(() => fromIterableLoop(iterable[Symbol.iterator](), emitter), fileName_1 + ":202:36"));
220
+ return tsplus_module_11.makePush(sink => tsplus_module_20.asyncIO(cb => tsplus_module_4.defer(() => fromIterableLoop(iterable[Symbol.iterator](), sink, cb), fileName_1 + ":281:48"), fileName_1 + ":281:15"));
149
221
  }
150
- function fromIterableLoop(iterator, emitter) {
151
- return tsplus_module_1.defer(() => {
222
+ function fromIterableLoop(iterator, sink, cb) {
223
+ return tsplus_module_4.defer(() => {
152
224
  const value = iterator.next();
153
- return value.done ? emitter.end : tsplus_module_1.zipRight(fromIterableLoop(iterator, emitter), fileName_1 + ":208:66")(emitter.emit(value.value));
154
- }, fileName_1 + ":206:18");
225
+ return value.done ? tsplus_module_4.succeed(() => cb(tsplus_module_4.unit), fileName_1 + ":292:27") : tsplus_module_4.zipRight(fromIterableLoop(iterator, sink, cb), fileName_1 + ":292:68")(sink.event(value.value));
226
+ }, fileName_1 + ":290:18");
155
227
  }
156
228
  /**
157
229
  * @tsplus getter fncts.io.Push multicast
@@ -165,45 +237,46 @@ export class Multicast {
165
237
  this[_a] = PushTypeId;
166
238
  this.observers = [];
167
239
  }
168
- run(emitter) {
169
- return tsplus_module_1.flatMap(environment => tsplus_module_1.flatMap(future => tsplus_module_1.flatMap(() => tsplus_module_17.wait(future, fileName_1 + ":253:22"), fileName_1 + ":240:8")(tsplus_module_1.defer(() => {
170
- this.observers.push({
171
- emitter,
172
- environment,
173
- future
174
- });
175
- if (this.fiber) {
176
- return tsplus_module_1.unit;
177
- } else {
178
- return tsplus_module_1.tap(fiber => tsplus_module_1.succeed(() => this.fiber = fiber, fileName_1 + ":249:44"), fileName_1 + ":249:30")(tsplus_module_3.forkScoped(tsplus_module_19.schedule(() => tsplus_module_18.asap, fileName_1 + ":248:24")(this.push.run(this)), fileName_1 + ":248:39"));
240
+ run(sink) {
241
+ return tsplus_module_4.flatMap(environment => tsplus_module_4.map(() => void 0, fileName_1 + ":322:8")(tsplus_module_4.defer(() => {
242
+ let io = tsplus_module_4.unit;
243
+ if (this.observers.push({
244
+ sink: sink,
245
+ environment
246
+ }) === 1) {
247
+ io = tsplus_module_4.flatMap(fiber => tsplus_module_4.succeed(() => this.fiber = fiber, fileName_1 + ":326:70"), fileName_1 + ":326:56")(tsplus_module_21.forkDaemon(this.push.run(this), fileName_1 + ":326:37"));
179
248
  }
180
- }, fileName_1 + ":241:17")), fileName_1 + ":239:28")(tsplus_module_20.make(fileName_1 + ":239:40")), fileName_1 + ":238:28")(tsplus_module_21.environment(fileName_1 + ":238:43"));
181
- }
182
- emit(value) {
183
- return tsplus_module_1.defer(() => tsplus_module_1.foreachDiscard(this.observers.slice(), observer => this.runEvent(value, observer), fileName_1 + ":258:38"), fileName_1 + ":258:20");
184
- }
185
- failCause(cause) {
186
- return tsplus_module_1.zipRight(tsplus_module_1.defer(() => this.cleanup(), fileName_1 + ":264:15"), fileName_1 + ":263:110")(tsplus_module_1.defer(() => tsplus_module_1.foreachDiscard(this.observers.slice(), observer => this.runFailCause(cause, observer), fileName_1 + ":263:33"), fileName_1 + ":263:15"));
249
+ return tsplus_module_4.zipRight(tsplus_module_2.ensuring(this.removeSink(sink), fileName_1 + ":328:49")(tsplus_module_22.wait(this.fiber, fileName_1 + ":328:34")), fileName_1 + ":328:22")(io);
250
+ }, fileName_1 + ":323:17")), fileName_1 + ":321:28")(tsplus_module_23.environment(fileName_1 + ":321:43"));
187
251
  }
188
- get end() {
189
- return tsplus_module_1.zipRight(tsplus_module_1.defer(() => this.cleanup(), fileName_1 + ":271:15"), fileName_1 + ":270:97")(tsplus_module_1.defer(() => tsplus_module_1.foreachDiscard(this.observers.slice(), observer => this.runEnd(observer), fileName_1 + ":270:33"), fileName_1 + ":270:15"));
252
+ event(value) {
253
+ return tsplus_module_4.defer(() => tsplus_module_4.foreachDiscard(this.observers.slice(), observer => this.runValue(value, observer), fileName_1 + ":335:38"), fileName_1 + ":335:20");
190
254
  }
191
- runEvent(value, observer) {
192
- return tsplus_module_21.provideEnvironment(observer.environment, fileName_1 + ":279:26")(tsplus_module_1.tapErrorCause(cause => this.runFailCause(cause, observer), fileName_1 + ":278:21")(observer.emitter.emit(value)));
255
+ error(cause) {
256
+ return tsplus_module_4.defer(() => tsplus_module_4.foreachDiscard(this.observers.slice(), observer => this.runError(cause, observer), fileName_1 + ":339:38"), fileName_1 + ":339:20");
193
257
  }
194
- runFailCause(cause, observer) {
195
- this.observers.splice(this.observers.indexOf(observer), 1);
196
- return tsplus_module_21.provideEnvironment(observer.environment, fileName_1 + ":284:89")(tsplus_module_22.fulfill(observer.future, fileName_1 + ":284:53")(observer.emitter.failCause(cause)));
258
+ runValue(value, observer) {
259
+ return tsplus_module_4.catchAllCause(() => this.removeSink(observer.sink), fileName_1 + ":346:21")(tsplus_module_23.provideEnvironment(observer.environment, fileName_1 + ":345:26")(observer.sink.event(value)));
197
260
  }
198
- runEnd(observer) {
199
- this.observers.splice(this.observers.indexOf(observer), 1);
200
- return tsplus_module_21.provideEnvironment(observer.environment, fileName_1 + ":289:76")(tsplus_module_22.fulfill(observer.future, fileName_1 + ":289:40")(observer.emitter.end));
261
+ runError(cause, observer) {
262
+ return tsplus_module_4.catchAllCause(() => this.removeSink(observer.sink), fileName_1 + ":353:21")(tsplus_module_23.provideEnvironment(observer.environment, fileName_1 + ":352:26")(observer.sink.error(cause)));
201
263
  }
202
- cleanup() {
203
- if (this.fiber) {
204
- return tsplus_module_1.zipRight(tsplus_module_1.succeed(() => this.fiber = undefined, fileName_1 + ":294:39"), fileName_1 + ":294:36")(tsplus_module_8.interrupt(this.fiber));
205
- }
206
- return tsplus_module_1.unit;
264
+ removeSink(sink) {
265
+ return tsplus_module_4.defer(() => {
266
+ if (this.observers.length === 0) {
267
+ return tsplus_module_4.unit;
268
+ }
269
+ const index = this.observers.findIndex(observer => observer.sink === sink);
270
+ if (index > -1) {
271
+ this.observers.splice(index, 1);
272
+ if (this.observers.length === 0) {
273
+ const interrupt = tsplus_module_24.interrupt(this.fiber);
274
+ this.fiber = undefined;
275
+ return interrupt;
276
+ }
277
+ }
278
+ return tsplus_module_4.unit;
279
+ }, fileName_1 + ":357:20");
207
280
  }
208
281
  }
209
282
  _a = PushTypeId;
@@ -217,63 +290,20 @@ export class Hold extends Multicast {
217
290
  constructor(push) {
218
291
  super(push);
219
292
  this.push = push;
220
- this.value = new AtomicReference(tsplus_module_23.nothing(fileName_1 + ":308:47"));
221
- this.pendingEmitters = [];
222
- this.scheduledFiber = null;
223
- }
224
- run(emitter) {
225
- if (this.shouldScheduleFlush()) {
226
- return tsplus_module_1.flatMap(() => super.run(emitter), fileName_1 + ":318:49")(this.scheduleFlush(emitter));
227
- }
228
- const value = this.value.get;
229
- if (tsplus_module_24.isJust(value) && this.observers.length === 0) {
230
- return tsplus_module_1.flatMap(() => super.run(emitter), fileName_1 + ":323:47")(emitter.emit(value.value));
231
- }
232
- return super.run(emitter);
233
- }
234
- emit(value) {
235
- return tsplus_module_1.defer(() => {
236
- this.addValue(value);
237
- return tsplus_module_1.flatMap(() => super.emit(value), fileName_1 + ":332:41")(this.flushPending());
238
- }, fileName_1 + ":330:20");
239
- }
240
- failCause(cause) {
241
- return tsplus_module_1.defer(() => tsplus_module_1.flatMap(() => super.failCause(cause), fileName_1 + ":337:48")(this.flushPending()), fileName_1 + ":337:20");
242
- }
243
- get end() {
244
- return tsplus_module_1.defer(() => tsplus_module_1.flatMap(() => super.end, fileName_1 + ":341:48")(this.flushPending()), fileName_1 + ":341:20");
245
- }
246
- shouldScheduleFlush() {
247
- return tsplus_module_24.isJust(this.value.get) && this.observers.length > 0;
248
- }
249
- scheduleFlush(observer) {
250
- this.pendingEmitters.push([observer, tsplus_module_14.match(() => [], a => [a])(this.value.get)]);
251
- const interrupt = this.scheduledFiber ? tsplus_module_26.interruptAsFork(this.scheduledFiber, tsplus_module_25.none) : tsplus_module_1.unit;
252
- this.scheduledFiber = null;
253
- return tsplus_module_1.tap(fiber => tsplus_module_1.succeed(() => this.scheduledFiber = fiber, fileName_1 + ":361:9"), fileName_1 + ":360:87")(tsplus_module_3.forkScoped(tsplus_module_1.zipRight(tsplus_module_1.flatMap(() => this.flushPending(), fileName_1 + ":360:44")(interrupt), fileName_1 + ":360:26")(tsplus_module_1.yieldNow), fileName_1 + ":360:72"));
293
+ this.current = new AtomicReference(tsplus_module_25.nothing(fileName_1 + ":383:49"));
254
294
  }
255
- flushPending() {
256
- if (this.pendingEmitters.length === 0) {
257
- return tsplus_module_1.unit;
295
+ run(sink) {
296
+ const current = this.current.get;
297
+ if (tsplus_module_26.isJust(current)) {
298
+ return tsplus_module_4.zipRight(super.run(sink), fileName_1 + ":393:41")(sink.event(current.value));
258
299
  }
259
- const emitters = this.pendingEmitters;
260
- this.pendingEmitters = [];
261
- return tsplus_module_1.foreachDiscard(emitters, pendingEmitter => {
262
- return tsplus_module_1.defer(() => {
263
- const [emitter, values] = pendingEmitter;
264
- const observer = this.observers.find(observer => observer.emitter === emitter);
265
- if (!observer) {
266
- return tsplus_module_1.unit;
267
- }
268
- return tsplus_module_1.foreachDiscard(values, value => this.runEvent(value, observer), fileName_1 + ":380:33");
269
- }, fileName_1 + ":374:22");
270
- }, fileName_1 + ":373:29");
300
+ return super.run(sink);
271
301
  }
272
- addValue(value) {
273
- this.value.set(tsplus_module_23.just(value, fileName_1 + ":386:24"));
274
- this.pendingEmitters.forEach(([, values]) => {
275
- values.push(value);
276
- });
302
+ event(value) {
303
+ return tsplus_module_4.defer(() => {
304
+ this.current.set(tsplus_module_25.just(value, fileName_1 + ":401:28"));
305
+ return super.event(value);
306
+ }, fileName_1 + ":400:20");
277
307
  }
278
308
  }
279
309
  /**
@@ -281,7 +311,7 @@ export class Hold extends Multicast {
281
311
  */
282
312
  function map_1(f) {
283
313
  return self => {
284
- return mapIO_1(a => tsplus_module_1.succeedNow(f(a), fileName_1 + ":398:43"))(self);
314
+ return mapIO_1(a => tsplus_module_4.succeedNow(f(a), fileName_1 + ":412:43"))(self);
285
315
  };
286
316
  }
287
317
  /**
@@ -289,7 +319,7 @@ function map_1(f) {
289
319
  */
290
320
  export function mapError(f) {
291
321
  return self => {
292
- return tsplus_module_2.makePush(emitter => self.run(tsplus_module_2.makeEmitter(value => emitter.emit(value), cause => emitter.failCause(tsplus_module_27.map(f)(cause)), emitter.end)));
322
+ return tsplus_module_11.makePush(emitter => self.run(tsplus_module_11.makeSink(value => emitter.event(value), cause => emitter.error(tsplus_module_27.map(f)(cause)))));
293
323
  };
294
324
  }
295
325
  /**
@@ -297,14 +327,14 @@ export function mapError(f) {
297
327
  */
298
328
  export function mapErrorCause(f) {
299
329
  return self => {
300
- return tsplus_module_2.makePush(emitter => self.run(tsplus_module_2.makeEmitter(value => emitter.emit(value), cause => emitter.failCause(f(cause)), emitter.end)));
330
+ return tsplus_module_11.makePush(emitter => self.run(tsplus_module_11.makeSink(value => emitter.event(value), cause => emitter.error(f(cause)))));
301
331
  };
302
332
  }
303
333
  /**
304
334
  * @tsplus pipeable fncts.io.Push mapIO
305
335
  */
306
336
  function mapIO_1(f) {
307
- return self => tsplus_module_2.makePush(emitter => self.run(tsplus_module_2.makeEmitter(value => tsplus_module_1.matchCauseIO(cause => emitter.failCause(cause), b => emitter.emit(b), fileName_1 + ":445:34")(f(value)), cause => emitter.failCause(cause), emitter.end)));
337
+ return self => tsplus_module_11.makePush(emitter => self.run(tsplus_module_11.makeSink(value => tsplus_module_4.matchCauseIO(cause => emitter.error(cause), b => emitter.event(b), fileName_1 + ":457:34")(f(value)), cause => emitter.error(cause))));
308
338
  }
309
339
  /**
310
340
  * @tsplus pipeable fncts.io.Push merge
@@ -315,82 +345,106 @@ export function merge(that) {
315
345
  };
316
346
  }
317
347
  function mergeAll_1(streams) {
318
- return tsplus_module_2.makePush(emitter => tsplus_module_1.flatMap(latch => tsplus_module_1.flatMap(() => tsplus_module_1.map(() => void 0, fileName_1 + ":488:8")(tsplus_module_1.zipRight(emitter.end, fileName_1 + ":488:22")(latch.await)), fileName_1 + ":476:8")(tsplus_module_28.foreachConcurrent(streams, stream => tsplus_module_3.forkScoped(stream.run(tsplus_module_2.makeEmitter(value => emitter.emit(value), cause => emitter.failCause(cause), latch.countDown)), fileName_1 + ":485:14"), fileName_1 + ":477:37")), fileName_1 + ":475:22")(tsplus_module_4.make(tsplus_module_5.size(streams))));
348
+ return tsplus_module_11.makePush(sink => tsplus_module_14.foreachConcurrentDiscard(streams, stream => stream.run(tsplus_module_11.makeSink(sink.event, cause => tsplus_module_27.isInterruptedOnly(cause) ? tsplus_module_4.unit : sink.error(cause))), fileName_1 + ":485:32"));
349
+ }
350
+ /**
351
+ * @tsplus pipeable fncts.io.Push observe
352
+ */
353
+ function observe_1(f, __tsplusTrace) {
354
+ return self => {
355
+ return tsplus_module_4.flatMap(future => tsplus_module_4.flatMap(fiber => tsplus_module_4.flatMap(() => tsplus_module_4.map(() => void 0, __tsplusTrace)(tsplus_module_28.interruptFork(fiber, __tsplusTrace)), __tsplusTrace)(tsplus_module_1.wait(future, __tsplusTrace)), __tsplusTrace)(tsplus_module_29.forkScoped(tsplus_module_4.flatMap(() => tsplus_module_1.succeed_(undefined, __tsplusTrace)(future), __tsplusTrace)(self.run(tsplus_module_11.makeSink(a => tsplus_module_4.catchAllCause(cause => tsplus_module_1.failCause(cause, __tsplusTrace)(future), __tsplusTrace)(f(a)), cause => tsplus_module_1.failCause(cause, __tsplusTrace)(future)))), __tsplusTrace)), __tsplusTrace)(tsplus_module_9.make(__tsplusTrace));
356
+ };
319
357
  }
320
358
  /**
321
359
  * @tsplus static fncts.io.PushOps repeatIOMaybe
322
360
  */
323
361
  export function repeatIOMaybe(io, __tsplusTrace) {
324
- return unfoldIO_1(undefined, () => tsplus_module_1.catchAll(maybeError => tsplus_module_14.match(() => tsplus_module_1.succeedNow(tsplus_module_23.nothing(__tsplusTrace), __tsplusTrace), tsplus_module_1.failNow)(maybeError), __tsplusTrace)(tsplus_module_1.map(a => tsplus_module_23.just([a, undefined], __tsplusTrace), __tsplusTrace)(io)));
362
+ return unfoldIO_1(undefined, () => tsplus_module_4.catchAll(maybeError => tsplus_module_16.match(() => tsplus_module_4.succeedNow(tsplus_module_25.nothing(__tsplusTrace), __tsplusTrace), tsplus_module_4.failNow)(maybeError), __tsplusTrace)(tsplus_module_4.map(a => tsplus_module_25.just([a, undefined], __tsplusTrace), __tsplusTrace)(io)));
325
363
  }
326
364
  /**
327
365
  * @tsplus getter fncts.io.Push runCollect
328
366
  */
329
367
  export function runCollect(self) {
330
- return tsplus_module_1.defer(() => {
368
+ return tsplus_module_4.defer(() => {
331
369
  const out = [];
332
- return tsplus_module_1.flatMap(future => tsplus_module_1.zipRight(tsplus_module_1.succeed(() => tsplus_module_29.fromArray(out), fileName_1 + ":520:11"), fileName_1 + ":519:23")(tsplus_module_1.zipRight(tsplus_module_17.wait(future, fileName_1 + ":519:15"), fileName_1 + ":518:12")(self.run(tsplus_module_2.makeEmitter(value => tsplus_module_1.succeed(() => out.push(value), fileName_1 + ":514:26"), cause => tsplus_module_17.failCause(cause, fileName_1 + ":515:40")(future), tsplus_module_17.succeed_(undefined, fileName_1 + ":516:27")(future))))), fileName_1 + ":510:42")(tsplus_module_20.make(fileName_1 + ":510:23"));
333
- }, fileName_1 + ":508:18");
370
+ return tsplus_module_4.as(() => tsplus_module_30.fromArray(out), fileName_1 + ":532:51")(observe_1(a => tsplus_module_4.succeed(() => out.push(a), fileName_1 + ":532:34"), fileName_1 + ":532:24")(self));
371
+ }, fileName_1 + ":530:18");
334
372
  }
335
373
  /**
336
374
  * @tsplus getter fncts.io.Push runDrain
337
375
  */
338
376
  export function runDrain(self) {
339
- return tsplus_module_1.flatMap(future => tsplus_module_1.zipRight(tsplus_module_17.wait(future, fileName_1 + ":537:17"), fileName_1 + ":537:10")(self.run(tsplus_module_2.makeEmitter(() => tsplus_module_1.unit, cause => tsplus_module_17.failCause(cause, fileName_1 + ":534:38")(future), tsplus_module_17.succeed_(undefined, fileName_1 + ":535:25")(future)))), fileName_1 + ":529:40")(tsplus_module_20.make(fileName_1 + ":529:21"));
377
+ return observe_1(() => tsplus_module_4.unit, fileName_1 + ":540:22")(self);
340
378
  }
341
379
  /**
342
380
  * @tsplus static fncts.io.PushOps scoped
343
381
  */
344
382
  function scoped_1(io, __tsplusTrace) {
345
- return tsplus_module_2.makePush(emitter => tsplus_module_1.zipRight(emitter.end, __tsplusTrace)(tsplus_module_1.matchCauseIO(cause => emitter.failCause(cause), value => emitter.emit(value), __tsplusTrace)(tsplus_module_30.scoped(tsplus_module_1.defer(io, __tsplusTrace), __tsplusTrace))));
383
+ return tsplus_module_11.makePush(emitter => tsplus_module_4.matchCauseIO(cause => emitter.error(cause), value => emitter.event(value), __tsplusTrace)(tsplus_module_10.scoped(tsplus_module_4.defer(io, __tsplusTrace), __tsplusTrace)));
346
384
  }
347
385
  /**
348
386
  * @tsplus static fncts.io.PushOps succeed
349
387
  */
350
388
  export function succeed(value) {
351
- return fromIO_1(() => tsplus_module_1.succeed(value, fileName_1 + ":558:32"));
389
+ return fromIO_1(() => tsplus_module_4.succeed(value, fileName_1 + ":559:32"));
390
+ }
391
+ /**
392
+ * @tsplus pipeable fncts.io.Push switchMap
393
+ */
394
+ function switchMap_1(f) {
395
+ return self => {
396
+ return tsplus_module_11.makePush(sink => withSwitch(fork => self.run(tsplus_module_11.makeSink(a => fork(f(a).run(sink)), sink.error))));
397
+ };
398
+ }
399
+ /**
400
+ * @tsplus pipeable fncts.io.Push switchMapIO
401
+ */
402
+ function switchMapIO_1(f) {
403
+ return self => {
404
+ return switchMap_1(a => fromIO_1(() => f(a)))(self);
405
+ };
352
406
  }
353
407
  /**
354
- * @tsplus pipeable fncts.io.PushOps switchMap
408
+ * @tsplus pipeable fncts.io.Push tap
355
409
  */
356
- export function switchMap(f) {
410
+ export function tap(f) {
357
411
  return self => {
358
- return tsplus_module_2.makePush(emitter => tsplus_module_1.flatMap(current => tsplus_module_1.flatMap(latch => {
359
- const innerEmitter = tsplus_module_2.makeEmitter(value => emitter.emit(value), cause => tsplus_module_1.zipRight(emitter.failCause(cause), fileName_1 + ":572:41")(tsplus_module_31.set(null, fileName_1 + ":572:33")(current)), latch.countDown);
360
- return tsplus_module_1.flatMap(() => tsplus_module_1.map(() => void 0, fileName_1 + ":587:10")(tsplus_module_1.zipRight(emitter.end, fileName_1 + ":587:24")(latch.await)), fileName_1 + ":575:10")(self.run(tsplus_module_2.makeEmitter(value => tsplus_module_9.updateIO(fiber => tsplus_module_1.zipRight(tsplus_module_3.forkScoped(f(value).run(innerEmitter), fileName_1 + ":580:98"), fileName_1 + ":580:71")(fiber ? tsplus_module_8.interrupt(fiber) : latch.increment), fileName_1 + ":579:33")(current), cause => emitter.failCause(cause), latch.countDown)));
361
- }, fileName_1 + ":569:31")(tsplus_module_4.make(1)), fileName_1 + ":568:31")(tsplus_module_10.makeSynchronized(() => null, fileName_1 + ":568:53")));
412
+ return tsplus_module_11.makePush(sink => self.run(tsplus_module_11.makeSink(a => tsplus_module_4.matchCauseIO(sink.error, () => sink.event(a), fileName_1 + ":585:65")(f(a)), sink.error)));
362
413
  };
363
414
  }
364
415
  /**
365
416
  * @tsplus pipeable fncts.io.Push transform
366
417
  */
367
418
  function transform_1(f) {
368
- return self => tsplus_module_2.makePush(emitter => f(self.run(emitter)));
419
+ return self => tsplus_module_11.makePush(emitter => f(self.run(emitter)));
369
420
  }
370
421
  function unfoldLoop(s, f, emitter) {
371
- return tsplus_module_14.match(() => emitter.end, ([a, s]) => tsplus_module_1.zipRight(unfoldLoop(s, f, emitter), fileName_1 + ":607:34")(emitter.emit(a)))(f(s));
422
+ return tsplus_module_16.match(() => tsplus_module_4.unit, ([a, s]) => tsplus_module_4.zipRight(unfoldLoop(s, f, emitter), fileName_1 + ":603:35")(emitter.event(a)))(f(s));
372
423
  }
373
424
  /**
374
425
  * @tsplus static fncts.io.PushOps unfold
375
426
  */
376
427
  export function unfold(s, f) {
377
- return tsplus_module_2.makePush(emitter => unfoldLoop(s, f, emitter));
428
+ return tsplus_module_11.makePush(emitter => unfoldLoop(s, f, emitter));
378
429
  }
379
430
  function unfoldIOLoop(s, f, emitter) {
380
- return tsplus_module_1.catchAllCause(cause => emitter.failCause(cause), fileName_1 + ":630:19")(tsplus_module_1.flatMap(result => tsplus_module_14.match(() => emitter.end, ([a, s]) => tsplus_module_1.zipRight(unfoldIOLoop(s, f, emitter), fileName_1 + ":627:38")(emitter.emit(a)))(result), fileName_1 + ":624:13")(f(s)));
431
+ return tsplus_module_4.catchAllCause(cause => emitter.error(cause), fileName_1 + ":626:19")(tsplus_module_4.flatMap(result => tsplus_module_16.match(() => tsplus_module_4.unit, ([a, s]) => tsplus_module_4.zipRight(unfoldIOLoop(s, f, emitter), fileName_1 + ":623:39")(emitter.event(a)))(result), fileName_1 + ":620:13")(f(s)));
381
432
  }
382
433
  /**
383
434
  * @tsplus static fncts.io.PushOps unfoldIO
384
435
  */
385
436
  function unfoldIO_1(s, f) {
386
- return tsplus_module_2.makePush(emitter => unfoldIOLoop(s, f, emitter));
437
+ return tsplus_module_11.makePush(emitter => unfoldIOLoop(s, f, emitter));
387
438
  }
388
439
  /**
389
440
  * @tsplus pipeable fncts.io.Push untilFuture
390
441
  */
391
442
  export function untilFuture(future) {
392
443
  return self => {
393
- return tsplus_module_2.makePush(emitter => tsplus_module_1.flatMap(futureFiber => tsplus_module_1.flatMap(streamFiber => tsplus_module_1.map(() => void 0, fileName_1 + ":656:10")(tsplus_module_1.via(tsplus_module_32.joinAll([futureFiber, streamFiber], fileName_1 + ":656:24"), onEarlyExit(emitter.end))), fileName_1 + ":655:30")(tsplus_module_3.forkScoped(self.run(emitter), fileName_1 + ":655:48")), fileName_1 + ":647:30")(tsplus_module_3.forkScoped(tsplus_module_1.zipRight(earlyExit, fileName_1 + ":653:22")(tsplus_module_1.matchCauseIO(cause => emitter.failCause(cause), () => tsplus_module_1.unit, fileName_1 + ":649:26")(tsplus_module_17.wait(future, fileName_1 + ":648:17"))), fileName_1 + ":653:33")));
444
+ return tsplus_module_11.makePush(sink => tsplus_module_20.asyncIO(cb => {
445
+ const exit = tsplus_module_4.succeed(() => cb(tsplus_module_4.unit), fileName_1 + ":643:24");
446
+ return tsplus_module_4.flatMap(streamFiber => tsplus_module_4.flatMap(futureFiber => tsplus_module_4.map(() => void 0, fileName_1 + ":654:12")(tsplus_module_31.joinAll([streamFiber, futureFiber], fileName_1 + ":654:26")), fileName_1 + ":646:32")(tsplus_module_32.fork(tsplus_module_4.zipRight(exit, fileName_1 + ":652:24")(tsplus_module_4.matchCauseIO(cause => sink.error(cause), () => tsplus_module_4.unit, fileName_1 + ":648:28")(tsplus_module_1.wait(future, fileName_1 + ":647:19"))), fileName_1 + ":652:30")), fileName_1 + ":645:32")(tsplus_module_32.fork(self.run(sink), fileName_1 + ":645:47"));
447
+ }, fileName_1 + ":642:17"));
394
448
  };
395
449
  }
396
450
  /**
@@ -398,7 +452,10 @@ export function untilFuture(future) {
398
452
  */
399
453
  export function untilPush(signal) {
400
454
  return self => {
401
- return tsplus_module_2.makePush(emitter => tsplus_module_1.flatMap(signalFiber => tsplus_module_1.flatMap(streamFiber => tsplus_module_1.map(() => void 0, fileName_1 + ":679:10")(tsplus_module_1.via(tsplus_module_32.joinAll([signalFiber, streamFiber], fileName_1 + ":679:24"), onEarlyExit(emitter.end))), fileName_1 + ":678:30")(tsplus_module_3.forkScoped(self.run(emitter), fileName_1 + ":678:48")), fileName_1 + ":669:30")(tsplus_module_3.forkScoped(signal.run(tsplus_module_2.makeEmitter(() => earlyExit, cause => emitter.failCause(cause), earlyExit)), fileName_1 + ":676:12")));
455
+ return tsplus_module_11.makePush(sink => tsplus_module_20.asyncIO(cb => {
456
+ const exit = tsplus_module_4.succeed(() => cb(tsplus_module_4.unit), fileName_1 + ":668:24");
457
+ return tsplus_module_4.flatMap(signalFiber => tsplus_module_4.flatMap(streamFiber => tsplus_module_4.map(() => void 0, fileName_1 + ":679:12")(tsplus_module_31.joinAll([signalFiber, streamFiber], fileName_1 + ":679:26")), fileName_1 + ":678:32")(tsplus_module_32.fork(self.run(sink), fileName_1 + ":678:47")), fileName_1 + ":670:32")(tsplus_module_32.fork(signal.run(tsplus_module_11.makeSink(() => exit, cause => sink.error(cause))), fileName_1 + ":676:14"));
458
+ }, fileName_1 + ":667:17"));
402
459
  };
403
460
  }
404
461
  /**