@fncts/io 0.0.32 → 0.0.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/Fiber/FiberRuntime.d.ts +3 -3
  2. package/IO/api.d.ts +2 -1
  3. package/IO/definition.d.ts +34 -24
  4. package/IO/runtime.d.ts +7 -17
  5. package/STM/definition.d.ts +1 -1
  6. package/Stream/api.d.ts +89 -1
  7. package/_cjs/Channel/api/mapOutConcurrentIO.cjs +1 -1
  8. package/_cjs/Channel/api/mapOutConcurrentIO.cjs.map +1 -1
  9. package/_cjs/Channel/api/mergeAllWith.cjs +3 -3
  10. package/_cjs/Channel/api/mergeAllWith.cjs.map +1 -1
  11. package/_cjs/Channel/api/mergeWith.cjs +4 -4
  12. package/_cjs/Channel/api/mergeWith.cjs.map +1 -1
  13. package/_cjs/Channel/api/toPull.cjs +2 -2
  14. package/_cjs/Channel/api/toPull.cjs.map +1 -1
  15. package/_cjs/Channel/api.cjs +6 -6
  16. package/_cjs/Channel/api.cjs.map +1 -1
  17. package/_cjs/Channel/internal/ChannelExecutor.cjs +10 -10
  18. package/_cjs/Channel/internal/ChannelExecutor.cjs.map +1 -1
  19. package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs +3 -3
  20. package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs.map +1 -1
  21. package/_cjs/Clock/live.cjs +1 -1
  22. package/_cjs/Clock/live.cjs.map +1 -1
  23. package/_cjs/Fiber/FiberRuntime.cjs +78 -47
  24. package/_cjs/Fiber/FiberRuntime.cjs.map +1 -1
  25. package/_cjs/Fiber/api/collectAll.cjs +1 -1
  26. package/_cjs/Fiber/api/collectAll.cjs.map +1 -1
  27. package/_cjs/Fiber/api/mapIO.cjs +1 -1
  28. package/_cjs/Fiber/api/mapIO.cjs.map +1 -1
  29. package/_cjs/Fiber/api/zipWith.cjs +1 -1
  30. package/_cjs/Fiber/api/zipWith.cjs.map +1 -1
  31. package/_cjs/Fiber/constructors.cjs +5 -5
  32. package/_cjs/Fiber/constructors.cjs.map +1 -1
  33. package/_cjs/FiberRef/unsafe.cjs +3 -2
  34. package/_cjs/FiberRef/unsafe.cjs.map +1 -1
  35. package/_cjs/Future/api.cjs +4 -4
  36. package/_cjs/Future/api.cjs.map +1 -1
  37. package/_cjs/Hub/internal.cjs +1 -1
  38. package/_cjs/Hub/internal.cjs.map +1 -1
  39. package/_cjs/IO/api/asyncIO.cjs +1 -1
  40. package/_cjs/IO/api/asyncIO.cjs.map +1 -1
  41. package/_cjs/IO/api/asyncInterrupt.cjs +2 -2
  42. package/_cjs/IO/api/asyncInterrupt.cjs.map +1 -1
  43. package/_cjs/IO/api/concurrency.cjs +3 -3
  44. package/_cjs/IO/api/concurrency.cjs.map +1 -1
  45. package/_cjs/IO/api/daemonChildren.cjs +1 -1
  46. package/_cjs/IO/api/daemonChildren.cjs.map +1 -1
  47. package/_cjs/IO/api/fork.cjs +2 -1
  48. package/_cjs/IO/api/fork.cjs.map +1 -1
  49. package/_cjs/IO/api/interrupt.cjs +2 -2
  50. package/_cjs/IO/api/interrupt.cjs.map +1 -1
  51. package/_cjs/IO/api/repeat.cjs +2 -2
  52. package/_cjs/IO/api/repeat.cjs.map +1 -1
  53. package/_cjs/IO/api/timeout.cjs +1 -1
  54. package/_cjs/IO/api/timeout.cjs.map +1 -1
  55. package/_cjs/IO/api/transplant.cjs +1 -1
  56. package/_cjs/IO/api/transplant.cjs.map +1 -1
  57. package/_cjs/IO/api/withEarlyRelease.cjs +1 -1
  58. package/_cjs/IO/api/withEarlyRelease.cjs.map +1 -1
  59. package/_cjs/IO/api.cjs +33 -32
  60. package/_cjs/IO/api.cjs.map +1 -1
  61. package/_cjs/IO/definition.cjs +17 -31
  62. package/_cjs/IO/definition.cjs.map +1 -1
  63. package/_cjs/IO/runtime.cjs +45 -38
  64. package/_cjs/IO/runtime.cjs.map +1 -1
  65. package/_cjs/Logger/api.cjs +3 -2
  66. package/_cjs/Logger/api.cjs.map +1 -1
  67. package/_cjs/MVar/api.cjs +11 -11
  68. package/_cjs/MVar/api.cjs.map +1 -1
  69. package/_cjs/Push/api.cjs +3 -3
  70. package/_cjs/Push/api.cjs.map +1 -1
  71. package/_cjs/Push/internal.cjs +1 -1
  72. package/_cjs/Push/internal.cjs.map +1 -1
  73. package/_cjs/Queue/api/filterInputIO.cjs +2 -2
  74. package/_cjs/Queue/api/filterInputIO.cjs.map +1 -1
  75. package/_cjs/Ref/Derived.cjs +4 -4
  76. package/_cjs/Ref/Derived.cjs.map +1 -1
  77. package/_cjs/Ref/DerivedAll.cjs +5 -5
  78. package/_cjs/Ref/DerivedAll.cjs.map +1 -1
  79. package/_cjs/Ref/Synchronized/api.cjs +3 -3
  80. package/_cjs/Ref/Synchronized/api.cjs.map +1 -1
  81. package/_cjs/Ref/api/collect.cjs +1 -1
  82. package/_cjs/Ref/api/collect.cjs.map +1 -1
  83. package/_cjs/Ref/api/dimap.cjs +3 -3
  84. package/_cjs/Ref/api/dimap.cjs.map +1 -1
  85. package/_cjs/Ref/api/filter.cjs +2 -2
  86. package/_cjs/Ref/api/filter.cjs.map +1 -1
  87. package/_cjs/Ref/api.cjs +2 -3
  88. package/_cjs/Ref/api.cjs.map +1 -1
  89. package/_cjs/RefSubject/Atomic.cjs +6 -6
  90. package/_cjs/RefSubject/Atomic.cjs.map +1 -1
  91. package/_cjs/STM/api.cjs +5 -5
  92. package/_cjs/STM/api.cjs.map +1 -1
  93. package/_cjs/STM/definition.cjs +1 -1
  94. package/_cjs/STM/definition.cjs.map +1 -1
  95. package/_cjs/STM/internal/CommitState.cjs +5 -4
  96. package/_cjs/STM/internal/CommitState.cjs.map +1 -1
  97. package/_cjs/STM/internal/Journal.cjs +8 -8
  98. package/_cjs/STM/internal/Journal.cjs.map +1 -1
  99. package/_cjs/Schedule/api/driver.cjs +3 -3
  100. package/_cjs/Schedule/api/driver.cjs.map +1 -1
  101. package/_cjs/Schedule/api.cjs +8 -8
  102. package/_cjs/Schedule/api.cjs.map +1 -1
  103. package/_cjs/Scope/ReleaseMap/api/releaseAll.cjs +1 -1
  104. package/_cjs/Scope/ReleaseMap/api/releaseAll.cjs.map +1 -1
  105. package/_cjs/Scope/ReleaseMap/api.cjs +3 -3
  106. package/_cjs/Scope/ReleaseMap/api.cjs.map +1 -1
  107. package/_cjs/ScopedRef/api.cjs +1 -1
  108. package/_cjs/ScopedRef/api.cjs.map +1 -1
  109. package/_cjs/Semaphore.cjs +2 -2
  110. package/_cjs/Semaphore.cjs.map +1 -1
  111. package/_cjs/Sink/api.cjs +6 -6
  112. package/_cjs/Sink/api.cjs.map +1 -1
  113. package/_cjs/Stream/api/zipAllWith.cjs +8 -8
  114. package/_cjs/Stream/api/zipAllWith.cjs.map +1 -1
  115. package/_cjs/Stream/api/zipWithChunks.cjs +6 -6
  116. package/_cjs/Stream/api/zipWithChunks.cjs.map +1 -1
  117. package/_cjs/Stream/api.cjs +370 -130
  118. package/_cjs/Stream/api.cjs.map +1 -1
  119. package/_cjs/Stream/internal/Handoff.cjs +2 -2
  120. package/_cjs/Stream/internal/Handoff.cjs.map +1 -1
  121. package/_cjs/Stream/internal/Pull.cjs +2 -2
  122. package/_cjs/Stream/internal/Pull.cjs.map +1 -1
  123. package/_cjs/Stream/internal/Take.cjs +6 -6
  124. package/_cjs/Stream/internal/Take.cjs.map +1 -1
  125. package/_cjs/Stream/internal/util.cjs +3 -2
  126. package/_cjs/Stream/internal/util.cjs.map +1 -1
  127. package/_cjs/TFuture/api.cjs +3 -3
  128. package/_cjs/TFuture/api.cjs.map +1 -1
  129. package/_cjs/TFuture/constructors.cjs +1 -1
  130. package/_cjs/TFuture/constructors.cjs.map +1 -1
  131. package/_cjs/TRef/definition.cjs +9 -9
  132. package/_cjs/TRef/definition.cjs.map +1 -1
  133. package/_cjs/collection/immutable/Conc/findIO.cjs +3 -3
  134. package/_cjs/collection/immutable/Conc/findIO.cjs.map +1 -1
  135. package/_cjs/data/Exit/foreachIO.cjs +1 -1
  136. package/_cjs/data/Exit/foreachIO.cjs.map +1 -1
  137. package/_mjs/Channel/api/mapOutConcurrentIO.mjs +1 -1
  138. package/_mjs/Channel/api/mapOutConcurrentIO.mjs.map +1 -1
  139. package/_mjs/Channel/api/mergeAllWith.mjs +3 -3
  140. package/_mjs/Channel/api/mergeAllWith.mjs.map +1 -1
  141. package/_mjs/Channel/api/mergeWith.mjs +4 -4
  142. package/_mjs/Channel/api/mergeWith.mjs.map +1 -1
  143. package/_mjs/Channel/api/toPull.mjs +2 -2
  144. package/_mjs/Channel/api/toPull.mjs.map +1 -1
  145. package/_mjs/Channel/api.mjs +6 -6
  146. package/_mjs/Channel/api.mjs.map +1 -1
  147. package/_mjs/Channel/internal/ChannelExecutor.mjs +10 -10
  148. package/_mjs/Channel/internal/ChannelExecutor.mjs.map +1 -1
  149. package/_mjs/Channel/internal/SingleProducerAsyncInput.mjs +3 -3
  150. package/_mjs/Channel/internal/SingleProducerAsyncInput.mjs.map +1 -1
  151. package/_mjs/Clock/live.mjs +1 -1
  152. package/_mjs/Clock/live.mjs.map +1 -1
  153. package/_mjs/Fiber/FiberRuntime.mjs +78 -47
  154. package/_mjs/Fiber/FiberRuntime.mjs.map +1 -1
  155. package/_mjs/Fiber/api/collectAll.mjs +1 -1
  156. package/_mjs/Fiber/api/collectAll.mjs.map +1 -1
  157. package/_mjs/Fiber/api/mapIO.mjs +1 -1
  158. package/_mjs/Fiber/api/mapIO.mjs.map +1 -1
  159. package/_mjs/Fiber/api/zipWith.mjs +1 -1
  160. package/_mjs/Fiber/api/zipWith.mjs.map +1 -1
  161. package/_mjs/Fiber/constructors.mjs +5 -5
  162. package/_mjs/Fiber/constructors.mjs.map +1 -1
  163. package/_mjs/FiberRef/unsafe.mjs +3 -2
  164. package/_mjs/FiberRef/unsafe.mjs.map +1 -1
  165. package/_mjs/Future/api.mjs +4 -4
  166. package/_mjs/Future/api.mjs.map +1 -1
  167. package/_mjs/Hub/internal.mjs +1 -1
  168. package/_mjs/Hub/internal.mjs.map +1 -1
  169. package/_mjs/IO/api/asyncIO.mjs +1 -1
  170. package/_mjs/IO/api/asyncIO.mjs.map +1 -1
  171. package/_mjs/IO/api/asyncInterrupt.mjs +2 -2
  172. package/_mjs/IO/api/asyncInterrupt.mjs.map +1 -1
  173. package/_mjs/IO/api/concurrency.mjs +3 -3
  174. package/_mjs/IO/api/concurrency.mjs.map +1 -1
  175. package/_mjs/IO/api/daemonChildren.mjs +1 -1
  176. package/_mjs/IO/api/daemonChildren.mjs.map +1 -1
  177. package/_mjs/IO/api/fork.mjs +2 -1
  178. package/_mjs/IO/api/fork.mjs.map +1 -1
  179. package/_mjs/IO/api/interrupt.mjs +2 -2
  180. package/_mjs/IO/api/interrupt.mjs.map +1 -1
  181. package/_mjs/IO/api/repeat.mjs +2 -2
  182. package/_mjs/IO/api/repeat.mjs.map +1 -1
  183. package/_mjs/IO/api/timeout.mjs +1 -1
  184. package/_mjs/IO/api/timeout.mjs.map +1 -1
  185. package/_mjs/IO/api/transplant.mjs +1 -1
  186. package/_mjs/IO/api/transplant.mjs.map +1 -1
  187. package/_mjs/IO/api/withEarlyRelease.mjs +1 -1
  188. package/_mjs/IO/api/withEarlyRelease.mjs.map +1 -1
  189. package/_mjs/IO/api.mjs +32 -30
  190. package/_mjs/IO/api.mjs.map +1 -1
  191. package/_mjs/IO/definition.mjs +16 -27
  192. package/_mjs/IO/definition.mjs.map +1 -1
  193. package/_mjs/IO/runtime.mjs +42 -33
  194. package/_mjs/IO/runtime.mjs.map +1 -1
  195. package/_mjs/Logger/api.mjs +3 -2
  196. package/_mjs/Logger/api.mjs.map +1 -1
  197. package/_mjs/MVar/api.mjs +11 -11
  198. package/_mjs/MVar/api.mjs.map +1 -1
  199. package/_mjs/Push/api.mjs +3 -3
  200. package/_mjs/Push/api.mjs.map +1 -1
  201. package/_mjs/Push/internal.mjs +1 -1
  202. package/_mjs/Push/internal.mjs.map +1 -1
  203. package/_mjs/Queue/api/filterInputIO.mjs +2 -2
  204. package/_mjs/Queue/api/filterInputIO.mjs.map +1 -1
  205. package/_mjs/Ref/Derived.mjs +4 -4
  206. package/_mjs/Ref/Derived.mjs.map +1 -1
  207. package/_mjs/Ref/DerivedAll.mjs +5 -5
  208. package/_mjs/Ref/DerivedAll.mjs.map +1 -1
  209. package/_mjs/Ref/Synchronized/api.mjs +3 -3
  210. package/_mjs/Ref/Synchronized/api.mjs.map +1 -1
  211. package/_mjs/Ref/api/collect.mjs +1 -1
  212. package/_mjs/Ref/api/collect.mjs.map +1 -1
  213. package/_mjs/Ref/api/dimap.mjs +3 -3
  214. package/_mjs/Ref/api/dimap.mjs.map +1 -1
  215. package/_mjs/Ref/api/filter.mjs +2 -2
  216. package/_mjs/Ref/api/filter.mjs.map +1 -1
  217. package/_mjs/Ref/api.mjs +2 -1
  218. package/_mjs/Ref/api.mjs.map +1 -1
  219. package/_mjs/RefSubject/Atomic.mjs +6 -6
  220. package/_mjs/RefSubject/Atomic.mjs.map +1 -1
  221. package/_mjs/STM/api.mjs +5 -5
  222. package/_mjs/STM/api.mjs.map +1 -1
  223. package/_mjs/STM/definition.mjs +1 -1
  224. package/_mjs/STM/definition.mjs.map +1 -1
  225. package/_mjs/STM/internal/CommitState.mjs +5 -4
  226. package/_mjs/STM/internal/CommitState.mjs.map +1 -1
  227. package/_mjs/STM/internal/Journal.mjs +8 -8
  228. package/_mjs/STM/internal/Journal.mjs.map +1 -1
  229. package/_mjs/Schedule/api/driver.mjs +3 -3
  230. package/_mjs/Schedule/api/driver.mjs.map +1 -1
  231. package/_mjs/Schedule/api.mjs +8 -8
  232. package/_mjs/Schedule/api.mjs.map +1 -1
  233. package/_mjs/Scope/ReleaseMap/api/releaseAll.mjs +1 -1
  234. package/_mjs/Scope/ReleaseMap/api/releaseAll.mjs.map +1 -1
  235. package/_mjs/Scope/ReleaseMap/api.mjs +3 -3
  236. package/_mjs/Scope/ReleaseMap/api.mjs.map +1 -1
  237. package/_mjs/ScopedRef/api.mjs +1 -1
  238. package/_mjs/ScopedRef/api.mjs.map +1 -1
  239. package/_mjs/Semaphore.mjs +2 -2
  240. package/_mjs/Semaphore.mjs.map +1 -1
  241. package/_mjs/Sink/api.mjs +6 -6
  242. package/_mjs/Sink/api.mjs.map +1 -1
  243. package/_mjs/Stream/api/zipAllWith.mjs +8 -8
  244. package/_mjs/Stream/api/zipAllWith.mjs.map +1 -1
  245. package/_mjs/Stream/api/zipWithChunks.mjs +6 -6
  246. package/_mjs/Stream/api/zipWithChunks.mjs.map +1 -1
  247. package/_mjs/Stream/api.mjs +281 -58
  248. package/_mjs/Stream/api.mjs.map +1 -1
  249. package/_mjs/Stream/internal/Handoff.mjs +2 -2
  250. package/_mjs/Stream/internal/Handoff.mjs.map +1 -1
  251. package/_mjs/Stream/internal/Pull.mjs +2 -2
  252. package/_mjs/Stream/internal/Pull.mjs.map +1 -1
  253. package/_mjs/Stream/internal/Take.mjs +6 -6
  254. package/_mjs/Stream/internal/Take.mjs.map +1 -1
  255. package/_mjs/Stream/internal/util.mjs +3 -2
  256. package/_mjs/Stream/internal/util.mjs.map +1 -1
  257. package/_mjs/TFuture/api.mjs +3 -3
  258. package/_mjs/TFuture/api.mjs.map +1 -1
  259. package/_mjs/TFuture/constructors.mjs +1 -1
  260. package/_mjs/TFuture/constructors.mjs.map +1 -1
  261. package/_mjs/TRef/definition.mjs +9 -9
  262. package/_mjs/TRef/definition.mjs.map +1 -1
  263. package/_mjs/collection/immutable/Conc/findIO.mjs +3 -3
  264. package/_mjs/collection/immutable/Conc/findIO.mjs.map +1 -1
  265. package/_mjs/data/Exit/foreachIO.mjs +1 -1
  266. package/_mjs/data/Exit/foreachIO.mjs.map +1 -1
  267. package/_src/Fiber/FiberRuntime.ts +39 -16
  268. package/_src/IO/api/asyncIO.ts +1 -1
  269. package/_src/IO/api.ts +4 -3
  270. package/_src/IO/definition.ts +35 -28
  271. package/_src/IO/runtime.ts +36 -35
  272. package/_src/RefSubject/Atomic.ts +4 -4
  273. package/_src/STM/definition.ts +1 -1
  274. package/_src/Stream/api.ts +258 -8
  275. package/package.json +2 -2
@@ -51,18 +51,21 @@ import * as tsplus_module_49 from "@fncts/io/Fiber/api/poll";
51
51
  import * as tsplus_module_50 from "@fncts/io/IO/api/environment";
52
52
  import * as tsplus_module_51 from "@fncts/io/collection/immutable/Conc/findIO";
53
53
  import * as tsplus_module_52 from "@fncts/base/data/Exit/definition";
54
- import * as tsplus_module_53 from "@fncts/io/Stream/internal/Pull";
55
- import * as tsplus_module_54 from "@fncts/io/Queue/api/takeBetween";
56
- import * as tsplus_module_55 from "@fncts/io/Channel/api/interruptWhen";
57
- import * as tsplus_module_56 from "@fncts/io/Channel/api/mapOutConcurrentIO";
58
- import * as tsplus_module_57 from "@fncts/io/Channel/api/mergeMap";
59
- import * as tsplus_module_58 from "@fncts/io/Channel/internal/MergeDecision";
60
- import * as tsplus_module_59 from "@fncts/io/Channel/api/mergeWith";
61
- import * as tsplus_module_60 from "@fncts/io/Layer/MemoMap";
62
- import * as tsplus_module_61 from "@fncts/io/Layer/api";
63
- import * as tsplus_module_62 from "@fncts/io/Channel/api/runDrain";
64
- import * as tsplus_module_63 from "@fncts/base/data/exceptions";
65
- import * as tsplus_module_64 from "@fncts/io/Channel/api/toPull";
54
+ import * as tsplus_module_53 from "@fncts/base/collection/immutable/Conc/definition";
55
+ import * as tsplus_module_54 from "@fncts/io/Stream/internal/Pull";
56
+ import * as tsplus_module_55 from "@fncts/io/Queue/api/takeBetween";
57
+ import * as tsplus_module_56 from "@fncts/io/Channel/api/interruptWhen";
58
+ import * as tsplus_module_57 from "@fncts/io/Channel/api/mapOutConcurrentIO";
59
+ import * as tsplus_module_58 from "@fncts/io/Channel/api/mergeMap";
60
+ import * as tsplus_module_59 from "@fncts/io/Channel/internal/MergeDecision";
61
+ import * as tsplus_module_60 from "@fncts/io/Channel/api/mergeWith";
62
+ import * as tsplus_module_61 from "@fncts/io/Layer/MemoMap";
63
+ import * as tsplus_module_62 from "@fncts/io/Layer/api";
64
+ import * as tsplus_module_63 from "@fncts/io/Channel/api/runDrain";
65
+ import * as tsplus_module_64 from "@fncts/base/data/Maybe/definition";
66
+ import * as tsplus_module_65 from "@fncts/base/data/exceptions";
67
+ import * as tsplus_module_66 from "@fncts/io/IO/api/interrupt";
68
+ import * as tsplus_module_67 from "@fncts/io/Channel/api/toPull";
66
69
  export const aggregateAsyncWithin = aggregateAsyncWithin_1;
67
70
  export const aggregateAsyncWithinEither = aggregateAsyncWithinEither_1;
68
71
  export const zipRight = zipRight_1;
@@ -76,11 +79,14 @@ export const flatMap = flatMap_1;
76
79
  export const chunks = chunks_1;
77
80
  export const concat = concat_1;
78
81
  export const crossWith = crossWith_1;
82
+ export const defer = defer_1;
79
83
  export const distributedWithDynamic = distributedWithDynamic_1;
84
+ export const drain = drain_1;
80
85
  export const drop = drop_1;
81
86
  export const dropWhile = dropWhile_1;
82
87
  export const ensuring = ensuring_1;
83
88
  export const environment = environment_1;
89
+ export const execute = execute_1;
84
90
  export const failNow = failNow_1;
85
91
  export const failCauseNow = failCauseNow_1;
86
92
  export const filterMap = filterMap_1;
@@ -106,6 +112,7 @@ export const mapChunks = mapChunks_1;
106
112
  export const mapConcatChunk = mapConcatChunk_1;
107
113
  export const mapError = mapError_1;
108
114
  export const mapIO = mapIO_1;
115
+ export const merge = merge_1;
109
116
  export const mergeMap = mergeMap_1;
110
117
  export const mergeEither = mergeEither_1;
111
118
  export const mergeWith = mergeWith_1;
@@ -125,6 +132,8 @@ export const runScoped = runScoped_1;
125
132
  export const scanIO = scanIO_1;
126
133
  export const scanReduceIO = scanReduceIO_1;
127
134
  export const succeedNow = succeedNow_1;
135
+ export const tap = tap_1;
136
+ export const tapError = tapError_1;
128
137
  export const throttleEnforceIO = throttleEnforceIO_1;
129
138
  export const toHub = toHub_1;
130
139
  export const toPull = toPull_1;
@@ -136,7 +145,7 @@ export const unfoldIO = unfoldIO_1;
136
145
  export const unfoldChunk = unfoldChunk_1;
137
146
  export const unwrap = unwrap_1;
138
147
  export const unwrapScoped = unwrapScoped_1;
139
- import { constVoid, identity, tuple } from "@fncts/base/data/function";
148
+ import { identity, tuple } from "@fncts/base/data/function";
140
149
  import { DEFAULT_CHUNK_SIZE, Stream } from "./definition.mjs";
141
150
  import { Handoff } from "./internal/Handoff.mjs";
142
151
  import { ScheduleEnd, UpstreamEnd } from "./internal/SinkEndReason.mjs";
@@ -174,7 +183,7 @@ export function aggregateAsync(sink, __tsplusTrace) {
174
183
  */
175
184
  function aggregateAsyncWithin_1(sink, schedule, __tsplusTrace) {
176
185
  return stream => {
177
- return filterMap_1(cb => tsplus_module_4.match(() => tsplus_module_3.nothing(), tsplus_module_3.just)(cb), __tsplusTrace)(aggregateAsyncWithinEither_1(sink, schedule, __tsplusTrace)(stream));
186
+ return filterMap_1(cb => tsplus_module_4.match(() => tsplus_module_3.nothing(__tsplusTrace), tsplus_module_3.just)(cb), __tsplusTrace)(aggregateAsyncWithinEither_1(sink, schedule, __tsplusTrace)(stream));
178
187
  };
179
188
  }
180
189
  /**
@@ -227,15 +236,15 @@ function aggregateAsyncWithinEither_1(sink, schedule, __tsplusTrace) {
227
236
  function handleSide(leftovers, b, c, __tsplusTrace) {
228
237
  return tsplus_module_10.unwrap(() => tsplus_module_1.zipRight(tsplus_module_1.map(reason => tsplus_module_21.matchSinkEndReason({
229
238
  ScheduleEnd: () => tsplus_module_10.unwrapScoped(() => tsplus_module_1.flatMap(consumed_ => tsplus_module_1.flatMap(sinkFiber => tsplus_module_1.map(scheduleFiber => {
230
- const toWrite = tsplus_module_20.match(() => tsplus_module_19.make(tsplus_module_18.right(b)), c => tsplus_module_19.make(tsplus_module_18.right(b), tsplus_module_18.left(c)))(c);
239
+ const toWrite = tsplus_module_20.match(() => tsplus_module_19.make(tsplus_module_18.right(b, __tsplusTrace)), c => tsplus_module_19.make(tsplus_module_18.right(b, __tsplusTrace), tsplus_module_18.left(c, __tsplusTrace)))(c);
231
240
  return consumed_ ? tsplus_module_11.zipRight(scheduledAggregator(sinkFiber, scheduleFiber))(tsplus_module_10.write(() => toWrite)) : scheduledAggregator(sinkFiber, scheduleFiber);
232
- }, __tsplusTrace)(tsplus_module_17.forkScoped(timeout(tsplus_module_3.just(b), __tsplusTrace), __tsplusTrace)), __tsplusTrace)(forkSink), __tsplusTrace)(tsplus_module_14.get(consumed, __tsplusTrace))),
233
- UpstreamEnd: () => tsplus_module_10.unwrap(() => tsplus_module_1.map(p => p ? tsplus_module_10.write(() => tsplus_module_19.make(tsplus_module_18.right(b))) : tsplus_module_10.unit, __tsplusTrace)(tsplus_module_14.get(consumed, __tsplusTrace)))
241
+ }, __tsplusTrace)(tsplus_module_17.forkScoped(timeout(tsplus_module_3.just(b, __tsplusTrace), __tsplusTrace), __tsplusTrace)), __tsplusTrace)(forkSink), __tsplusTrace)(tsplus_module_14.get(consumed, __tsplusTrace))),
242
+ UpstreamEnd: () => tsplus_module_10.unwrap(() => tsplus_module_1.map(p => p ? tsplus_module_10.write(() => tsplus_module_19.make(tsplus_module_18.right(b, __tsplusTrace))) : tsplus_module_10.unit, __tsplusTrace)(tsplus_module_14.get(consumed, __tsplusTrace)))
234
243
  })(reason), __tsplusTrace)(tsplus_module_14.get(sinkEndReason, __tsplusTrace)), __tsplusTrace)(tsplus_module_13.set(tsplus_module_12.flatten(leftovers), __tsplusTrace)(sinkLeftovers)));
235
244
  }
236
- return tsplus_module_10.unwrap(() => tsplus_module_26.raceWith(() => tsplus_module_22.join(scheduleFiber, __tsplusTrace), (sinkExit, scheduleFiber) => tsplus_module_1.zipRight(tsplus_module_1.map(([leftovers, b]) => handleSide(leftovers, b, tsplus_module_3.nothing(), __tsplusTrace), __tsplusTrace)(tsplus_module_1.fromExit(() => sinkExit, __tsplusTrace)), __tsplusTrace)(tsplus_module_23.interrupt(scheduleFiber)), (scheduleExit, sinkFiber) => tsplus_module_1.matchCauseIO(cause => tsplus_module_4.match(() => tsplus_module_1.zipRight(tsplus_module_1.map(([leftovers, b]) => handleSide(leftovers, b, tsplus_module_3.nothing(), __tsplusTrace), __tsplusTrace)(tsplus_module_22.join(sinkFiber, __tsplusTrace)), __tsplusTrace)(tsplus_module_24.forkDaemon(tsplus_module_5.offer(tsplus_module_5.end(new ScheduleEnd()))(handoff), __tsplusTrace)), cause => tsplus_module_1.zipRight(tsplus_module_1.map(([leftovers, b]) => handleSide(leftovers, b, tsplus_module_3.nothing(), __tsplusTrace), __tsplusTrace)(tsplus_module_22.join(sinkFiber, __tsplusTrace)), __tsplusTrace)(tsplus_module_24.forkDaemon(tsplus_module_5.offer(tsplus_module_5.halt(cause))(handoff), __tsplusTrace)))(tsplus_module_25.failureOrCause(cause)), c => tsplus_module_1.zipRight(tsplus_module_1.map(([leftovers, b]) => handleSide(leftovers, b, tsplus_module_3.just(c), __tsplusTrace), __tsplusTrace)(tsplus_module_22.join(sinkFiber, __tsplusTrace)), __tsplusTrace)(tsplus_module_24.forkDaemon(tsplus_module_5.offer(tsplus_module_5.end(new ScheduleEnd()))(handoff), __tsplusTrace)), __tsplusTrace)(tsplus_module_1.fromExit(() => scheduleExit, __tsplusTrace)), __tsplusTrace)(tsplus_module_22.join(sinkFiber, __tsplusTrace)));
245
+ return tsplus_module_10.unwrap(() => tsplus_module_26.raceWith(() => tsplus_module_22.join(scheduleFiber, __tsplusTrace), (sinkExit, scheduleFiber) => tsplus_module_1.zipRight(tsplus_module_1.map(([leftovers, b]) => handleSide(leftovers, b, tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace), __tsplusTrace)(tsplus_module_1.fromExit(() => sinkExit, __tsplusTrace)), __tsplusTrace)(tsplus_module_23.interrupt(scheduleFiber)), (scheduleExit, sinkFiber) => tsplus_module_1.matchCauseIO(cause => tsplus_module_4.match(() => tsplus_module_1.zipRight(tsplus_module_1.map(([leftovers, b]) => handleSide(leftovers, b, tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace), __tsplusTrace)(tsplus_module_22.join(sinkFiber, __tsplusTrace)), __tsplusTrace)(tsplus_module_24.forkDaemon(tsplus_module_5.offer(tsplus_module_5.end(new ScheduleEnd()))(handoff), __tsplusTrace)), cause => tsplus_module_1.zipRight(tsplus_module_1.map(([leftovers, b]) => handleSide(leftovers, b, tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace), __tsplusTrace)(tsplus_module_22.join(sinkFiber, __tsplusTrace)), __tsplusTrace)(tsplus_module_24.forkDaemon(tsplus_module_5.offer(tsplus_module_5.halt(cause))(handoff), __tsplusTrace)))(tsplus_module_25.failureOrCause(cause)), c => tsplus_module_1.zipRight(tsplus_module_1.map(([leftovers, b]) => handleSide(leftovers, b, tsplus_module_3.just(c, __tsplusTrace), __tsplusTrace), __tsplusTrace)(tsplus_module_22.join(sinkFiber, __tsplusTrace)), __tsplusTrace)(tsplus_module_24.forkDaemon(tsplus_module_5.offer(tsplus_module_5.end(new ScheduleEnd()))(handoff), __tsplusTrace)), __tsplusTrace)(tsplus_module_1.fromExit(() => scheduleExit, __tsplusTrace)), __tsplusTrace)(tsplus_module_22.join(sinkFiber, __tsplusTrace)));
237
246
  };
238
- return unwrapScoped_1(tsplus_module_1.flatMap(() => tsplus_module_1.flatMap(sinkFiber => tsplus_module_1.map(scheduleFiber => new Stream(scheduledAggregator(sinkFiber, scheduleFiber)), __tsplusTrace)(tsplus_module_17.forkScoped(timeout(tsplus_module_3.nothing(), __tsplusTrace), __tsplusTrace)), __tsplusTrace)(tsplus_module_17.forkScoped(tsplus_module_16.runScoped(tsplus_module_10.doneCollect(tsplus_module_10.pipeToOrFail(sink.channel)(handoffConsumer))), __tsplusTrace)), __tsplusTrace)(tsplus_module_17.forkScoped(tsplus_module_16.runScoped(tsplus_module_10.pipeTo(handoffProducer)(stream.channel)), __tsplusTrace)), __tsplusTrace);
247
+ return unwrapScoped_1(tsplus_module_1.flatMap(() => tsplus_module_1.flatMap(sinkFiber => tsplus_module_1.map(scheduleFiber => new Stream(scheduledAggregator(sinkFiber, scheduleFiber)), __tsplusTrace)(tsplus_module_17.forkScoped(timeout(tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace), __tsplusTrace)), __tsplusTrace)(tsplus_module_17.forkScoped(tsplus_module_16.runScoped(tsplus_module_10.doneCollect(tsplus_module_10.pipeToOrFail(sink.channel)(handoffConsumer))), __tsplusTrace)), __tsplusTrace)(tsplus_module_17.forkScoped(tsplus_module_16.runScoped(tsplus_module_10.pipeTo(handoffProducer)(stream.channel)), __tsplusTrace)), __tsplusTrace);
239
248
  }, __tsplusTrace)(fromIO_1(deps, __tsplusTrace));
240
249
  };
241
250
  }
@@ -282,7 +291,11 @@ function asyncInterrupt_1(register, outputBuffer = 16, __tsplusTrace) {
282
291
  return ensuring_1(canceler, __tsplusTrace)(new Stream(loop));
283
292
  }, stream => unwrap_1(tsplus_module_1.as(() => stream, __tsplusTrace)(tsplus_module_28.shutdown(output, __tsplusTrace)), __tsplusTrace))(eitherStream), __tsplusTrace)(tsplus_module_1.succeed(() => register((k, cb) => {
284
293
  const effect = tsplus_module_1.flatMap(a => tsplus_module_28.offer(a, __tsplusTrace)(output), __tsplusTrace)(tsplus_module_27.fromPull(k));
285
- return runtime.unsafeRunAsyncWith(effect, cb || constVoid, __tsplusTrace);
294
+ const fiber = runtime.makeFiber(effect, __tsplusTrace);
295
+ if (cb) {
296
+ fiber.addObserver(cb);
297
+ }
298
+ fiber.start(effect);
286
299
  }), __tsplusTrace)), __tsplusTrace)(tsplus_module_29.runtime(__tsplusTrace)), __tsplusTrace)(tsplus_module_31.acquireRelease(() => tsplus_module_30.makeBounded(outputBuffer, __tsplusTrace), queue => tsplus_module_28.shutdown(queue, __tsplusTrace), __tsplusTrace)), __tsplusTrace);
287
300
  }
288
301
  /**
@@ -294,7 +307,7 @@ function asyncInterrupt_1(register, outputBuffer = 16, __tsplusTrace) {
294
307
  * @tsplus static fncts.io.StreamOps asyncMaybe
295
308
  */
296
309
  function asyncMaybe_1(register, outputBuffer = 16, __tsplusTrace) {
297
- return asyncInterrupt_1(k => tsplus_module_20.match(() => tsplus_module_18.left(tsplus_module_1.unit), tsplus_module_18.right)(register(k)), outputBuffer, __tsplusTrace);
310
+ return asyncInterrupt_1(k => tsplus_module_20.match(() => tsplus_module_18.left(tsplus_module_1.unit, __tsplusTrace), tsplus_module_18.right)(register(k)), outputBuffer, __tsplusTrace);
298
311
  }
299
312
  /**
300
313
  * @tsplus static fncts.io.StreamOps async
@@ -302,7 +315,7 @@ function asyncMaybe_1(register, outputBuffer = 16, __tsplusTrace) {
302
315
  export function async(register, outputBuffer = 16, __tsplusTrace) {
303
316
  return asyncMaybe_1(cb => {
304
317
  register(cb);
305
- return tsplus_module_3.nothing();
318
+ return tsplus_module_3.nothing(__tsplusTrace);
306
319
  }, outputBuffer, __tsplusTrace);
307
320
  }
308
321
  /**
@@ -312,7 +325,14 @@ export function asyncIO(register, outputBuffer = 16, __tsplusTrace) {
312
325
  return new Stream(tsplus_module_10.unwrapScoped(() => tsplus_module_1.flatMap(output => tsplus_module_1.flatMap(runtime => tsplus_module_1.map(() => {
313
326
  const loop = tsplus_module_10.unwrap(() => tsplus_module_1.matchCauseIO(cause => tsplus_module_1.as(() => tsplus_module_4.match(maybeError => tsplus_module_20.match(() => tsplus_module_11.endNow(undefined), tsplus_module_10.failNow)(maybeError), tsplus_module_11.failCauseNow)(tsplus_module_25.failureOrCause(cause)), __tsplusTrace)(tsplus_module_28.shutdown(output, __tsplusTrace)), as => tsplus_module_1.succeed(() => tsplus_module_11.zipRight(loop)(tsplus_module_10.writeNow(as)), __tsplusTrace), __tsplusTrace)(tsplus_module_1.flatMap(take => tsplus_module_27.done(take), __tsplusTrace)(tsplus_module_28.take(output, __tsplusTrace))));
314
327
  return loop;
315
- }, __tsplusTrace)(register((k, cb) => runtime.unsafeRunAsyncWith(tsplus_module_1.flatMap(a => tsplus_module_28.offer(a, __tsplusTrace)(output), __tsplusTrace)(tsplus_module_27.fromPull(k)), cb || constVoid, __tsplusTrace))), __tsplusTrace)(tsplus_module_29.runtime(__tsplusTrace)), __tsplusTrace)(tsplus_module_31.acquireRelease(() => tsplus_module_30.makeBounded(outputBuffer, __tsplusTrace), _ => tsplus_module_28.shutdown(_, __tsplusTrace), __tsplusTrace))));
328
+ }, __tsplusTrace)(register((k, cb) => {
329
+ const io = tsplus_module_1.flatMap(a => tsplus_module_28.offer(a, __tsplusTrace)(output), __tsplusTrace)(tsplus_module_27.fromPull(k));
330
+ const fiber = runtime.makeFiber(io, __tsplusTrace);
331
+ if (cb) {
332
+ fiber.addObserver(cb);
333
+ }
334
+ fiber.start(io);
335
+ })), __tsplusTrace)(tsplus_module_29.runtime(__tsplusTrace)), __tsplusTrace)(tsplus_module_31.acquireRelease(() => tsplus_module_30.makeBounded(outputBuffer, __tsplusTrace), _ => tsplus_module_28.shutdown(_, __tsplusTrace), __tsplusTrace))));
316
336
  }
317
337
  /**
318
338
  * Returns a stream whose failure and success channels have been mapped by
@@ -518,7 +538,7 @@ export function chunksWith(f, __tsplusTrace) {
518
538
  }
519
539
  function changesWithWriter(f, last, __tsplusTrace) {
520
540
  return tsplus_module_10.readWithCause(chunk => {
521
- const [newLast, newChunk] = tsplus_module_12.foldLeft([last, tsplus_module_7.empty()], ([maybeLast, os], o1) => tsplus_module_20.match(() => [tsplus_module_3.just(o1), tsplus_module_12.append(o1)(os)], o => f(o, o1) ? [tsplus_module_3.just(o1), os] : [tsplus_module_3.just(o1), tsplus_module_12.append(o1)(os)])(maybeLast))(chunk);
541
+ const [newLast, newChunk] = tsplus_module_12.foldLeft([last, tsplus_module_7.empty()], ([maybeLast, os], o1) => tsplus_module_20.match(() => [tsplus_module_3.just(o1, __tsplusTrace), tsplus_module_12.append(o1)(os)], o => f(o, o1) ? [tsplus_module_3.just(o1, __tsplusTrace), os] : [tsplus_module_3.just(o1, __tsplusTrace), tsplus_module_12.append(o1)(os)])(maybeLast))(chunk);
522
542
  return tsplus_module_11.zipRight(changesWithWriter(f, newLast, __tsplusTrace))(tsplus_module_10.writeNow(newChunk));
523
543
  }, tsplus_module_11.failCauseNow, () => tsplus_module_10.unit);
524
544
  }
@@ -531,7 +551,7 @@ function changesWithWriter(f, last, __tsplusTrace) {
531
551
  */
532
552
  export function changesWith(f, __tsplusTrace) {
533
553
  return stream => {
534
- return new Stream(tsplus_module_10.pipeTo(changesWithWriter(f, tsplus_module_3.nothing(), __tsplusTrace))(stream.channel));
554
+ return new Stream(tsplus_module_10.pipeTo(changesWithWriter(f, tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace))(stream.channel));
535
555
  };
536
556
  }
537
557
  /**
@@ -567,7 +587,7 @@ function collectWhileIOLoop(iterator, pf, __tsplusTrace) {
567
587
  }
568
588
  }
569
589
  function combineProducer(handoff, latch, __tsplusTrace) {
570
- return tsplus_module_11.zipRight(tsplus_module_10.readWithCause(value => tsplus_module_11.zipRight(combineProducer(handoff, latch, __tsplusTrace))(tsplus_module_10.fromIO(() => tsplus_module_5.offer(tsplus_module_41.succeed(value))(handoff))), cause => tsplus_module_10.fromIO(() => tsplus_module_5.offer(tsplus_module_41.failCause(tsplus_module_25.map(tsplus_module_3.just)(cause)))(handoff)), () => tsplus_module_11.zipRight(combineProducer(handoff, latch, __tsplusTrace))(tsplus_module_10.fromIO(() => tsplus_module_5.offer(tsplus_module_41.fail(tsplus_module_3.nothing()))(handoff)))))(tsplus_module_10.fromIO(() => tsplus_module_5.take(latch)));
590
+ return tsplus_module_11.zipRight(tsplus_module_10.readWithCause(value => tsplus_module_11.zipRight(combineProducer(handoff, latch, __tsplusTrace))(tsplus_module_10.fromIO(() => tsplus_module_5.offer(tsplus_module_41.succeed(value, __tsplusTrace))(handoff))), cause => tsplus_module_10.fromIO(() => tsplus_module_5.offer(tsplus_module_41.failCause(tsplus_module_25.map(tsplus_module_3.just)(cause), __tsplusTrace))(handoff)), () => tsplus_module_11.zipRight(combineProducer(handoff, latch, __tsplusTrace))(tsplus_module_10.fromIO(() => tsplus_module_5.offer(tsplus_module_41.fail(tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace))(handoff)))))(tsplus_module_10.fromIO(() => tsplus_module_5.take(latch)));
571
591
  }
572
592
  /**
573
593
  * Combines the elements from this stream and the specified stream by repeatedly applying the
@@ -705,7 +725,7 @@ export function debounce(duration, __tsplusTrace) {
705
725
  /**
706
726
  * @tsplus static fncts.io.StreamOps defer
707
727
  */
708
- export function defer(self) {
728
+ function defer_1(self) {
709
729
  return new Stream(tsplus_module_10.defer(() => self().channel));
710
730
  }
711
731
  function defaultIfEmptyWriter(fb, __tsplusTrace) {
@@ -750,17 +770,17 @@ function distributedWithDynamic_1(maximumLag, decide, done = () => tsplus_module
750
770
  return self => {
751
771
  const offer = queuesRef => a => tsplus_module_1.flatMap(shouldProcess => tsplus_module_1.flatMap(queues => tsplus_module_1.flatMap(ids => tsplus_module_12.isNonEmpty(ids) ? tsplus_module_15.update(map => tsplus_module_45.removeMany(ids)(map), __tsplusTrace)(queuesRef) : tsplus_module_1.unit, __tsplusTrace)(tsplus_module_1.foldLeft(queues, tsplus_module_7.empty(), (b, [id, queue]) => {
752
772
  if (shouldProcess(id)) {
753
- return tsplus_module_1.matchCauseIO(c => tsplus_module_25.interrupted(c) ? tsplus_module_1.succeedNow(tsplus_module_12.append(id)(b), __tsplusTrace) : tsplus_module_1.failCauseNow(c, __tsplusTrace), () => tsplus_module_1.succeedNow(b, __tsplusTrace), __tsplusTrace)(tsplus_module_28.offer(tsplus_module_41.succeed(a), __tsplusTrace)(queue));
773
+ return tsplus_module_1.matchCauseIO(c => tsplus_module_25.interrupted(c) ? tsplus_module_1.succeedNow(tsplus_module_12.append(id)(b), __tsplusTrace) : tsplus_module_1.failCauseNow(c, __tsplusTrace), () => tsplus_module_1.succeedNow(b, __tsplusTrace), __tsplusTrace)(tsplus_module_28.offer(tsplus_module_41.succeed(a, __tsplusTrace), __tsplusTrace)(queue));
754
774
  } else {
755
775
  return tsplus_module_1.succeedNow(b, __tsplusTrace);
756
776
  }
757
777
  }, __tsplusTrace)), __tsplusTrace)(tsplus_module_14.get(queuesRef, __tsplusTrace)), __tsplusTrace)(decide(a));
758
778
  return tsplus_module_1.flatMap(queuesRef => tsplus_module_1.map(add => add, __tsplusTrace)(tsplus_module_1.flatMap(queuesLock => tsplus_module_1.flatMap(newQueue => {
759
- const finalize = endTake => queuesLock.withPermit(tsplus_module_1.asUnit(tsplus_module_1.flatMap(() => tsplus_module_1.flatMap(queues => tsplus_module_1.flatMap(() => tsplus_module_1.map(() => void 0, __tsplusTrace)(done(endTake)), __tsplusTrace)(tsplus_module_1.foreach(queues, queue => tsplus_module_1.catchJustCause(c => tsplus_module_25.interrupted(c) ? tsplus_module_3.just(tsplus_module_1.unit) : tsplus_module_3.nothing(), __tsplusTrace)(tsplus_module_28.offer(endTake, __tsplusTrace)(queue)), __tsplusTrace)), __tsplusTrace)(tsplus_module_1.map(map => tsplus_module_45.values(map), __tsplusTrace)(tsplus_module_14.get(queuesRef, __tsplusTrace))), __tsplusTrace)(tsplus_module_13.set(tsplus_module_1.flatMap(queue => tsplus_module_1.flatMap(() => {
779
+ const finalize = endTake => queuesLock.withPermit(tsplus_module_1.asUnit(tsplus_module_1.flatMap(() => tsplus_module_1.flatMap(queues => tsplus_module_1.flatMap(() => tsplus_module_1.map(() => void 0, __tsplusTrace)(done(endTake)), __tsplusTrace)(tsplus_module_1.foreach(queues, queue => tsplus_module_1.catchJustCause(c => tsplus_module_25.interrupted(c) ? tsplus_module_3.just(tsplus_module_1.unit, __tsplusTrace) : tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace)(tsplus_module_28.offer(endTake, __tsplusTrace)(queue)), __tsplusTrace)), __tsplusTrace)(tsplus_module_1.map(map => tsplus_module_45.values(map), __tsplusTrace)(tsplus_module_14.get(queuesRef, __tsplusTrace))), __tsplusTrace)(tsplus_module_13.set(tsplus_module_1.flatMap(queue => tsplus_module_1.flatMap(() => {
760
780
  const id = Symbol();
761
781
  return tsplus_module_1.map(() => tuple(id, queue), __tsplusTrace)(tsplus_module_15.update(map => tsplus_module_45.set(id, queue)(map), __tsplusTrace)(queuesRef));
762
782
  }, __tsplusTrace)(tsplus_module_28.offer(endTake, __tsplusTrace)(queue)), __tsplusTrace)(tsplus_module_30.makeBounded(1, __tsplusTrace)), __tsplusTrace)(newQueue)), __tsplusTrace));
763
- return tsplus_module_1.map(() => queuesLock.withPermit(tsplus_module_1.flatten(tsplus_module_14.get(newQueue, __tsplusTrace), __tsplusTrace)), __tsplusTrace)(tsplus_module_33.fork(tsplus_module_1.matchCauseIO(cause => finalize(tsplus_module_41.failCause(tsplus_module_25.map(tsplus_module_3.just)(cause))), () => finalize(tsplus_module_41.fail(tsplus_module_3.nothing())), __tsplusTrace)(runForeachScoped_1(offer(queuesRef), __tsplusTrace)(self)), __tsplusTrace));
783
+ return tsplus_module_1.map(() => queuesLock.withPermit(tsplus_module_1.flatten(tsplus_module_14.get(newQueue, __tsplusTrace), __tsplusTrace)), __tsplusTrace)(tsplus_module_33.fork(tsplus_module_1.matchCauseIO(cause => finalize(tsplus_module_41.failCause(tsplus_module_25.map(tsplus_module_3.just)(cause), __tsplusTrace)), () => finalize(tsplus_module_41.fail(tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace)), __tsplusTrace)(runForeachScoped_1(offer(queuesRef), __tsplusTrace)(self)), __tsplusTrace));
764
784
  }, __tsplusTrace)(tsplus_module_6.make(() => tsplus_module_1.flatMap(queue => tsplus_module_1.flatMap(id => tsplus_module_1.map(() => tuple(id, queue), __tsplusTrace)(tsplus_module_15.update(map => tsplus_module_45.set(id, queue)(map), __tsplusTrace)(queuesRef)), __tsplusTrace)(tsplus_module_1.succeed(() => Symbol(), __tsplusTrace)), __tsplusTrace)(tsplus_module_30.makeBounded(maximumLag, __tsplusTrace)), __tsplusTrace)), __tsplusTrace)(tsplus_module_46.makeSemaphore(1, __tsplusTrace))), __tsplusTrace)(tsplus_module_31.acquireRelease(() => tsplus_module_6.make(() => tsplus_module_45.empty(), __tsplusTrace), ref => tsplus_module_1.flatMap(qs => tsplus_module_1.foreach(tsplus_module_45.values(qs), q => tsplus_module_28.shutdown(q, __tsplusTrace), __tsplusTrace), __tsplusTrace)(tsplus_module_14.get(ref, __tsplusTrace)), __tsplusTrace));
765
785
  };
766
786
  }
@@ -770,7 +790,7 @@ function distributedWithDynamic_1(maximumLag, decide, done = () => tsplus_module
770
790
  *
771
791
  * @tsplus getter fncts.io.Stream drain
772
792
  */
773
- export function drain(fa, __tsplusTrace) {
793
+ function drain_1(fa, __tsplusTrace) {
774
794
  return new Stream(tsplus_module_10.drain(fa.channel));
775
795
  }
776
796
  function dropLoop(r, __tsplusTrace) {
@@ -823,12 +843,12 @@ export function dropUntil(p, __tsplusTrace) {
823
843
  * @tsplus getter fncts.io.Stream either
824
844
  */
825
845
  export function either(stream, __tsplusTrace) {
826
- return catchAll_1(e => succeedNow_1(tsplus_module_18.left(e), __tsplusTrace), __tsplusTrace)(map_1(tsplus_module_18.right, __tsplusTrace)(stream));
846
+ return catchAll_1(e => succeedNow_1(tsplus_module_18.left(e, __tsplusTrace), __tsplusTrace), __tsplusTrace)(map_1(tsplus_module_18.right, __tsplusTrace)(stream));
827
847
  }
828
848
  /**
829
849
  * @tsplus static fncts.io.StreamOps empty
830
850
  */
831
- const empty_1 = /*#__PURE__*/fromChunkNow_1( /*#__PURE__*/tsplus_module_7.empty(), fileName_1 + ":1228:70");
851
+ const empty_1 = /*#__PURE__*/fromChunkNow_1( /*#__PURE__*/tsplus_module_7.empty(), fileName_1 + ":1234:70");
832
852
  export const empty = empty_1;
833
853
  function endWhenWriter(fiber, __tsplusTrace) {
834
854
  return tsplus_module_10.unwrap(() => tsplus_module_1.map(maybeExit => tsplus_module_20.match(() => tsplus_module_10.readWith(inp => tsplus_module_11.zipRight(endWhenWriter(fiber, __tsplusTrace))(tsplus_module_10.writeNow(inp)), tsplus_module_10.failNow, () => tsplus_module_10.unit), exit => tsplus_module_36.match(tsplus_module_11.failCauseNow, () => tsplus_module_10.unit)(exit))(maybeExit), __tsplusTrace)(tsplus_module_49.poll(fiber, __tsplusTrace)));
@@ -887,6 +907,14 @@ export function environmentWithIO(f, __tsplusTrace) {
887
907
  export function environmentWithStream(f, __tsplusTrace) {
888
908
  return flatMap_1(f, __tsplusTrace)(environment_1(__tsplusTrace));
889
909
  }
910
+ /**
911
+ * Creates a stream that executes the specified effect but emits no elements.
912
+ *
913
+ * @tsplus static fncts.io.StreamOps execute
914
+ */
915
+ function execute_1(io, __tsplusTrace) {
916
+ return drain_1(fromIO_1(io, __tsplusTrace), __tsplusTrace);
917
+ }
890
918
  /**
891
919
  * Halt a stream with the specified error
892
920
  *
@@ -1006,7 +1034,7 @@ function flattenExitOption_1(stream, __tsplusTrace) {
1006
1034
  const processChunk = (chunk, cont) => {
1007
1035
  const [toEmit, rest] = tsplus_module_12.splitWhere(_ => !tsplus_module_52.isSuccess(_))(chunk);
1008
1036
  const next = tsplus_module_20.match(() => cont, exit => tsplus_module_36.match(cause => tsplus_module_20.match(() => tsplus_module_11.endNow(undefined), tsplus_module_11.failCauseNow)(tsplus_module_25.flipCauseOption(cause)), () => tsplus_module_11.endNow(undefined))(exit))(tsplus_module_12.head(rest));
1009
- return tsplus_module_11.zipRight(next)(tsplus_module_10.writeNow(tsplus_module_12.filterMap(exit => tsplus_module_36.match(() => tsplus_module_3.nothing(), tsplus_module_3.just)(exit))(toEmit)));
1037
+ return tsplus_module_11.zipRight(next)(tsplus_module_10.writeNow(tsplus_module_12.filterMap(exit => tsplus_module_36.match(() => tsplus_module_3.nothing(__tsplusTrace), tsplus_module_3.just)(exit))(toEmit)));
1010
1038
  };
1011
1039
  const process = tsplus_module_10.readWithCause(chunk => processChunk(chunk, process), tsplus_module_11.failCauseNow, _ => tsplus_module_11.endNow(undefined));
1012
1040
  return new Stream(tsplus_module_10.pipeTo(process)(stream.channel));
@@ -1060,6 +1088,59 @@ function fromChunk_1(c, __tsplusTrace) {
1060
1088
  function scoped_1(stream, __tsplusTrace) {
1061
1089
  return new Stream(tsplus_module_10.scoped(() => tsplus_module_1.map(tsplus_module_19.single, __tsplusTrace)(stream())));
1062
1090
  }
1091
+ /**
1092
+ * Emits a sliding window of n elements.
1093
+ *
1094
+ * @tsplus pipeable fncts.io.Stream sliding
1095
+ */
1096
+ export function sliding(chunkSize, stepSize, __tsplusTrace) {
1097
+ return self => {
1098
+ return defer_1(() => {
1099
+ function slidingChunk(chunk, input) {
1100
+ const updatedChunk = tsplus_module_12.concat(input)(chunk);
1101
+ const length = updatedChunk.length;
1102
+ if (length >= chunkSize) {
1103
+ const array = new Array((length - chunkSize) / stepSize + 1);
1104
+ let arrayIndex = 0;
1105
+ let chunkIndex = 0;
1106
+ while (chunkIndex + chunkSize <= length) {
1107
+ array[arrayIndex] = tsplus_module_12.slice(chunkIndex, chunkIndex + chunkSize)(updatedChunk);
1108
+ arrayIndex += 1;
1109
+ chunkIndex += stepSize;
1110
+ }
1111
+ return [tsplus_module_12.drop(chunkIndex)(updatedChunk), tsplus_module_53.fromArray(array)];
1112
+ } else {
1113
+ return [updatedChunk, tsplus_module_7.empty()];
1114
+ }
1115
+ }
1116
+ function sliding(chunk, written) {
1117
+ return tsplus_module_10.readWithCause(input => {
1118
+ const [updatedChunk, out] = slidingChunk(chunk, input);
1119
+ if (tsplus_module_12.isEmpty(out)) {
1120
+ return sliding(updatedChunk, written);
1121
+ } else {
1122
+ return tsplus_module_11.zipRight(sliding(updatedChunk, true))(tsplus_module_10.writeNow(out));
1123
+ }
1124
+ }, err => {
1125
+ const index = written && chunkSize > stepSize ? chunkSize - stepSize : 0;
1126
+ if (index >= chunk.length) {
1127
+ return tsplus_module_11.failCauseNow(err);
1128
+ } else {
1129
+ return tsplus_module_11.zipRight(tsplus_module_11.failCauseNow(err))(tsplus_module_10.writeNow(tsplus_module_19.single(chunk)));
1130
+ }
1131
+ }, done => {
1132
+ const index = written && chunkSize > stepSize ? chunkSize - stepSize : 0;
1133
+ if (index >= chunk.length) {
1134
+ return tsplus_module_11.succeedNow(done);
1135
+ } else {
1136
+ return tsplus_module_11.zipRight(tsplus_module_11.succeedNow(done))(tsplus_module_10.writeNow(tsplus_module_19.single(chunk)));
1137
+ }
1138
+ });
1139
+ }
1140
+ return new Stream(tsplus_module_10.pipeTo(sliding(tsplus_module_7.empty(), false))(self.channel));
1141
+ });
1142
+ };
1143
+ }
1063
1144
  /**
1064
1145
  * Creates a stream from an effect producing a value of type `A`
1065
1146
  *
@@ -1120,7 +1201,7 @@ export function fromIterableSingle(iterable, __tsplusTrace) {
1120
1201
  return flatMap_1(iterator => repeatIOMaybe_1(tsplus_module_1.defer(() => {
1121
1202
  const value = iterator.next();
1122
1203
  if (value.done) {
1123
- return tsplus_module_1.failNow(tsplus_module_3.nothing(), __tsplusTrace);
1204
+ return tsplus_module_1.failNow(tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace);
1124
1205
  } else {
1125
1206
  return tsplus_module_1.succeedNow(value.value, __tsplusTrace);
1126
1207
  }
@@ -1140,11 +1221,11 @@ function fromPull_1(scopedPull, __tsplusTrace) {
1140
1221
  function fromQueue_1(queue, maxChunkSize = DEFAULT_CHUNK_SIZE, __tsplusTrace) {
1141
1222
  return repeatIOChunkMaybe_1(tsplus_module_1.catchAllCause(c => tsplus_module_1.flatMap(down => {
1142
1223
  if (down && tsplus_module_25.interrupted(c)) {
1143
- return tsplus_module_53.end;
1224
+ return tsplus_module_54.end;
1144
1225
  } else {
1145
- return tsplus_module_53.failCause(c);
1226
+ return tsplus_module_54.failCause(c);
1146
1227
  }
1147
- }, __tsplusTrace)(tsplus_module_28.isShutdown(queue, __tsplusTrace)), __tsplusTrace)(tsplus_module_1.map(tsplus_module_19.from, __tsplusTrace)(tsplus_module_54.takeBetween(1, maxChunkSize, __tsplusTrace)(queue))), __tsplusTrace);
1228
+ }, __tsplusTrace)(tsplus_module_28.isShutdown(queue, __tsplusTrace)), __tsplusTrace)(tsplus_module_1.map(tsplus_module_19.from, __tsplusTrace)(tsplus_module_55.takeBetween(1, maxChunkSize, __tsplusTrace)(queue))), __tsplusTrace);
1148
1229
  }
1149
1230
  /**
1150
1231
  * @tsplus static fncts.io.StreamOps fromQueueWithShutdown
@@ -1286,7 +1367,7 @@ export function intersperse(stream, middle, __tsplusTrace) {
1286
1367
  */
1287
1368
  export function interruptWhen(io, __tsplusTrace) {
1288
1369
  return stream => {
1289
- return new Stream(tsplus_module_55.interruptWhen(io)(stream.channel));
1370
+ return new Stream(tsplus_module_56.interruptWhen(io)(stream.channel));
1290
1371
  };
1291
1372
  }
1292
1373
  /**
@@ -1294,7 +1375,7 @@ export function interruptWhen(io, __tsplusTrace) {
1294
1375
  */
1295
1376
  export function interruptWhenFuture(future, __tsplusTrace) {
1296
1377
  return fa => {
1297
- return new Stream(tsplus_module_55.interruptWhenFuture(future)(fa.channel));
1378
+ return new Stream(tsplus_module_56.interruptWhenFuture(future)(fa.channel));
1298
1379
  };
1299
1380
  }
1300
1381
  /**
@@ -1459,7 +1540,7 @@ function mapIOLoop(iterator, f, __tsplusTrace) {
1459
1540
  */
1460
1541
  export function mapIOConcurrently(n, f, __tsplusTrace) {
1461
1542
  return stream => {
1462
- return new Stream(tsplus_module_10.mapOut(tsplus_module_19.single)(tsplus_module_56.mapOutConcurrentIO(n, f)(tsplus_module_10.concatMap(tsplus_module_10.writeChunk)(stream.channel))));
1543
+ return new Stream(tsplus_module_10.mapOut(tsplus_module_19.single)(tsplus_module_57.mapOutConcurrentIO(n, f)(tsplus_module_10.concatMap(tsplus_module_10.writeChunk)(stream.channel))));
1463
1544
  };
1464
1545
  }
1465
1546
  /**
@@ -1467,7 +1548,75 @@ export function mapIOConcurrently(n, f, __tsplusTrace) {
1467
1548
  */
1468
1549
  export function mapIOConcurrentlyUnordered(n, f) {
1469
1550
  return self => {
1470
- return pipeThroughChannelOrFail_1(tsplus_module_57.mergeMap(inp => fromIO_1(f(inp), fileName_1 + ":2216:41").channel, n, 16)(tsplus_module_10.concatMap(chunk => tsplus_module_10.writeChunk(chunk))(tsplus_module_10.id())))(self);
1551
+ return pipeThroughChannelOrFail_1(tsplus_module_58.mergeMap(inp => fromIO_1(f(inp), fileName_1 + ":2290:41").channel, n, 16)(tsplus_module_10.concatMap(chunk => tsplus_module_10.writeChunk(chunk))(tsplus_module_10.id())))(self);
1552
+ };
1553
+ }
1554
+ /**
1555
+ * Merges this stream and the specified stream together.
1556
+ *
1557
+ * New produced stream will terminate when both specified stream terminate if
1558
+ * no termination strategy is specified.
1559
+ *
1560
+ * @tsplus pipeable fncts.io.Stream merge
1561
+ */
1562
+ function merge_1(that, strategy = "Both", __tsplusTrace) {
1563
+ return self => {
1564
+ return mergeWith_1(that, identity, identity, strategy, __tsplusTrace)(self);
1565
+ };
1566
+ }
1567
+ /**
1568
+ * Merges this stream and the specified stream together. New produced stream
1569
+ * will terminate when either stream terminates.
1570
+ *
1571
+ * @tsplus pipeable fncts.io.Stream mergeHaltEither
1572
+ */
1573
+ export function mergeHaltEither(that, __tsplusTrace) {
1574
+ return self => {
1575
+ return merge_1(that, "Either", __tsplusTrace)(self);
1576
+ };
1577
+ }
1578
+ /**
1579
+ * Merges this stream and the specified stream together. New produced stream
1580
+ * will terminate when this stream terminates.
1581
+ *
1582
+ * @tsplus pipeable fncts.io.Stream mergeHaltLeft
1583
+ */
1584
+ export function mergeHaltLeft(that, __tsplusTrace) {
1585
+ return self => {
1586
+ return merge_1(that, "Left", __tsplusTrace)(self);
1587
+ };
1588
+ }
1589
+ /**
1590
+ * Merges this stream and the specified stream together. New produced stream
1591
+ * will terminate when the specified stream terminates.
1592
+ *
1593
+ * @tsplus pipeable fncts.io.Stream mergeHaltRight
1594
+ */
1595
+ export function mergeHaltRight(that, __tsplusTrace) {
1596
+ return self => {
1597
+ return merge_1(that, "Right", __tsplusTrace)(self);
1598
+ };
1599
+ }
1600
+ /**
1601
+ * Merges this stream and the specified stream together, discarding the values
1602
+ * from the right stream.
1603
+ *
1604
+ * @tsplus pipeable fncts.io.Stream mergeLeft
1605
+ */
1606
+ export function mergeLeft(that, __tsplusTrace) {
1607
+ return self => {
1608
+ return merge_1(drain_1(that, __tsplusTrace))(self);
1609
+ };
1610
+ }
1611
+ /**
1612
+ * Merges this stream and the specified stream together, discarding the values
1613
+ * from the left stream.
1614
+ *
1615
+ * @tsplus pipeable fncts.io.Stream mergeRight
1616
+ */
1617
+ export function mergeRight(that, __tsplusTrace) {
1618
+ return self => {
1619
+ return merge_1(that)(drain_1(self, __tsplusTrace));
1471
1620
  };
1472
1621
  }
1473
1622
  /**
@@ -1480,7 +1629,7 @@ export function mapIOConcurrentlyUnordered(n, f) {
1480
1629
  */
1481
1630
  function mergeMap_1(f, n, bufferSize = 16, __tsplusTrace) {
1482
1631
  return ma => {
1483
- return new Stream(tsplus_module_57.mergeMap(a => f(a).channel, n, bufferSize)(tsplus_module_10.concatMap(tsplus_module_10.writeChunk)(ma.channel)));
1632
+ return new Stream(tsplus_module_58.mergeMap(a => f(a).channel, n, bufferSize)(tsplus_module_10.concatMap(tsplus_module_10.writeChunk)(ma.channel)));
1484
1633
  };
1485
1634
  }
1486
1635
  /**
@@ -1504,14 +1653,14 @@ function mergeEither_1(fb, __tsplusTrace) {
1504
1653
  };
1505
1654
  }
1506
1655
  function mergeWithHandler(terminate, __tsplusTrace) {
1507
- return exit => terminate || !tsplus_module_52.isSuccess(exit) ? tsplus_module_58.done(tsplus_module_1.fromExitNow(exit, __tsplusTrace)) : tsplus_module_58.wait(tsplus_module_1.fromExitNow);
1656
+ return exit => terminate || !tsplus_module_52.isSuccess(exit) ? tsplus_module_59.done(tsplus_module_1.fromExitNow(exit, __tsplusTrace)) : tsplus_module_59.wait(tsplus_module_1.fromExitNow);
1508
1657
  }
1509
1658
  /**
1510
1659
  * @tsplus pipeable fncts.io.Stream mergeWith
1511
1660
  */
1512
1661
  function mergeWith_1(sb, l, r, strategy = "Both", __tsplusTrace) {
1513
1662
  return sa => {
1514
- return new Stream(tsplus_module_59.mergeWith(map_1(r, __tsplusTrace)(sb).channel, mergeWithHandler(strategy === "Either" || strategy === "Left", __tsplusTrace), mergeWithHandler(strategy === "Either" || strategy === "Right", __tsplusTrace))(map_1(l, __tsplusTrace)(sa).channel));
1663
+ return new Stream(tsplus_module_60.mergeWith(map_1(r, __tsplusTrace)(sb).channel, mergeWithHandler(strategy === "Either" || strategy === "Left", __tsplusTrace), mergeWithHandler(strategy === "Either" || strategy === "Right", __tsplusTrace))(map_1(l, __tsplusTrace)(sa).channel));
1515
1664
  };
1516
1665
  }
1517
1666
  /**
@@ -1568,7 +1717,7 @@ export function orElseFail(e, __tsplusTrace) {
1568
1717
  * See also Stream#catchAll.
1569
1718
  */
1570
1719
  export function orElseOptional(stream, that, __tsplusTrace) {
1571
- return catchAll_1(maybeError => tsplus_module_20.match(() => that(), e => failNow_1(tsplus_module_3.just(e), __tsplusTrace))(maybeError), __tsplusTrace)(stream);
1720
+ return catchAll_1(maybeError => tsplus_module_20.match(() => that(), e => failNow_1(tsplus_module_3.just(e, __tsplusTrace), __tsplusTrace))(maybeError), __tsplusTrace)(stream);
1572
1721
  }
1573
1722
  /**
1574
1723
  * Succeeds with the specified value if this one fails with a typed error.
@@ -1612,7 +1761,7 @@ function provideEnvironment_1(r, __tsplusTrace) {
1612
1761
  */
1613
1762
  function provideLayer_1(layer, __tsplusTrace) {
1614
1763
  return self => {
1615
- return new Stream(tsplus_module_10.unwrapScoped(() => tsplus_module_1.map(r => tsplus_module_10.provideEnvironment(() => r)(self.channel), __tsplusTrace)(tsplus_module_60.build(layer, __tsplusTrace))));
1764
+ return new Stream(tsplus_module_10.unwrapScoped(() => tsplus_module_1.map(r => tsplus_module_10.provideEnvironment(() => r)(self.channel), __tsplusTrace)(tsplus_module_61.build(layer, __tsplusTrace))));
1616
1765
  };
1617
1766
  }
1618
1767
  /**
@@ -1621,7 +1770,7 @@ function provideLayer_1(layer, __tsplusTrace) {
1621
1770
  export function provideSomeLayer(layer, __tsplusTrace) {
1622
1771
  return self => {
1623
1772
  // @ts-expect-error
1624
- return provideLayer_1(tsplus_module_61.and(layer, __tsplusTrace)(tsplus_module_61.environment(__tsplusTrace)), __tsplusTrace)(self);
1773
+ return provideLayer_1(tsplus_module_62.and(layer, __tsplusTrace)(tsplus_module_62.environment(__tsplusTrace)), __tsplusTrace)(self);
1625
1774
  };
1626
1775
  }
1627
1776
  class Rechunker {
@@ -1726,7 +1875,7 @@ export function repeatIOChunk(fa, __tsplusTrace) {
1726
1875
  * @tsplus static fncts.io.StreamOps repeatIOChunkMaybe
1727
1876
  */
1728
1877
  function repeatIOChunkMaybe_1(fa, __tsplusTrace) {
1729
- return unfoldChunkIO_1(undefined, _ => tsplus_module_1.catchAll(maybeError => tsplus_module_20.match(() => tsplus_module_1.succeedNow(tsplus_module_3.nothing(), __tsplusTrace), tsplus_module_1.failNow)(maybeError), __tsplusTrace)(tsplus_module_1.map(chunk => tsplus_module_3.just(tuple(chunk, undefined)), __tsplusTrace)(fa)), __tsplusTrace);
1878
+ return unfoldChunkIO_1(undefined, _ => tsplus_module_1.catchAll(maybeError => tsplus_module_20.match(() => tsplus_module_1.succeedNow(tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace), tsplus_module_1.failNow)(maybeError), __tsplusTrace)(tsplus_module_1.map(chunk => tsplus_module_3.just(tuple(chunk, undefined), __tsplusTrace), __tsplusTrace)(fa)), __tsplusTrace);
1730
1879
  }
1731
1880
  /**
1732
1881
  * Runs the sink on the stream to produce either the sink's result or an error.
@@ -1735,7 +1884,7 @@ function repeatIOChunkMaybe_1(fa, __tsplusTrace) {
1735
1884
  */
1736
1885
  function run_1(sink, __tsplusTrace) {
1737
1886
  return stream => {
1738
- return tsplus_module_62.runDrain(tsplus_module_10.pipeToOrFail(sink.channel)(stream.channel));
1887
+ return tsplus_module_63.runDrain(tsplus_module_10.pipeToOrFail(sink.channel)(stream.channel));
1739
1888
  };
1740
1889
  }
1741
1890
  /**
@@ -1770,7 +1919,7 @@ function runForeachScoped_1(f, __tsplusTrace) {
1770
1919
  */
1771
1920
  export function runIntoElementsScoped_(queue, __tsplusTrace) {
1772
1921
  return stream => {
1773
- const writer = tsplus_module_10.readWith(inp => tsplus_module_11.zipRight(writer)(tsplus_module_12.foldLeft(tsplus_module_10.unit, (channel, a) => tsplus_module_11.zipRight(tsplus_module_10.writeNow(tsplus_module_41.succeed(a)))(channel))(inp)), err => tsplus_module_10.writeNow(tsplus_module_41.fail(tsplus_module_3.just(err))), () => tsplus_module_10.writeNow(tsplus_module_41.fail(tsplus_module_3.nothing())));
1922
+ const writer = tsplus_module_10.readWith(inp => tsplus_module_11.zipRight(writer)(tsplus_module_12.foldLeft(tsplus_module_10.unit, (channel, a) => tsplus_module_11.zipRight(tsplus_module_10.writeNow(tsplus_module_41.succeed(a, __tsplusTrace)))(channel))(inp)), err => tsplus_module_10.writeNow(tsplus_module_41.fail(tsplus_module_3.just(err, __tsplusTrace), __tsplusTrace)), () => tsplus_module_10.writeNow(tsplus_module_41.fail(tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace)));
1774
1923
  return tsplus_module_1.asUnit(tsplus_module_16.runScoped(tsplus_module_10.drain(tsplus_module_10.mapOutIO(exit => tsplus_module_28.offer(exit, __tsplusTrace)(queue))(tsplus_module_10.pipeTo(writer)(stream.channel)))), __tsplusTrace);
1775
1924
  };
1776
1925
  }
@@ -1796,9 +1945,9 @@ function runIntoQueueElementsScoped_1(queue) {
1796
1945
  return self => {
1797
1946
  return tsplus_module_1.defer(() => {
1798
1947
  const queue0 = queue();
1799
- const writer = tsplus_module_10.readWithCause(inp => tsplus_module_11.zipRight(writer)(tsplus_module_10.fromIO(() => tsplus_module_28.offerAll(tsplus_module_12.map(a => tsplus_module_41.succeed(a))(inp), fileName_1 + ":2647:57")(queue0))), cause => tsplus_module_10.fromIO(() => tsplus_module_28.offer(tsplus_module_41.failCause(tsplus_module_25.map(e => tsplus_module_3.just(e))(cause)), fileName_1 + ":2648:47")(queue0)), () => tsplus_module_10.fromIO(() => tsplus_module_28.offer(tsplus_module_41.fail(tsplus_module_3.nothing()), fileName_1 + ":2649:42")(queue0)));
1800
- return tsplus_module_1.asUnit(tsplus_module_16.runScoped(tsplus_module_10.drain(tsplus_module_10.pipeTo(writer)(self.channel))), fileName_1 + ":2652:55");
1801
- }, fileName_1 + ":2644:20");
1948
+ const writer = tsplus_module_10.readWithCause(inp => tsplus_module_11.zipRight(writer)(tsplus_module_10.fromIO(() => tsplus_module_28.offerAll(tsplus_module_12.map(a => tsplus_module_41.succeed(a, fileName_1 + ":2799:85"))(inp), fileName_1 + ":2799:57")(queue0))), cause => tsplus_module_10.fromIO(() => tsplus_module_28.offer(tsplus_module_41.failCause(tsplus_module_25.map(e => tsplus_module_3.just(e, fileName_1 + ":2800:84"))(cause), fileName_1 + ":2800:62"), fileName_1 + ":2800:47")(queue0)), () => tsplus_module_10.fromIO(() => tsplus_module_28.offer(tsplus_module_41.fail(tsplus_module_3.nothing(fileName_1 + ":2801:60"), fileName_1 + ":2801:52"), fileName_1 + ":2801:42")(queue0)));
1949
+ return tsplus_module_1.asUnit(tsplus_module_16.runScoped(tsplus_module_10.drain(tsplus_module_10.pipeTo(writer)(self.channel))), fileName_1 + ":2804:55");
1950
+ }, fileName_1 + ":2796:20");
1802
1951
  };
1803
1952
  }
1804
1953
  /**
@@ -1863,7 +2012,34 @@ export function scanReduce(f, __tsplusTrace) {
1863
2012
  */
1864
2013
  function scanReduceIO_1(f, __tsplusTrace) {
1865
2014
  return fa => {
1866
- return mapAccumIO_1(tsplus_module_3.nothing(), (s, a) => tsplus_module_20.match(() => tsplus_module_1.succeedNow([a, tsplus_module_3.just(a)], __tsplusTrace), b => tsplus_module_1.map(b => [b, tsplus_module_3.just(b)], __tsplusTrace)(f(b, a)))(s), __tsplusTrace)(fa);
2015
+ return mapAccumIO_1(tsplus_module_3.nothing(__tsplusTrace), (s, a) => tsplus_module_20.match(() => tsplus_module_1.succeedNow([a, tsplus_module_3.just(a, __tsplusTrace)], __tsplusTrace), b => tsplus_module_1.map(b => [b, tsplus_module_3.just(b, __tsplusTrace)], __tsplusTrace)(f(b, a)))(s), __tsplusTrace)(fa);
2016
+ };
2017
+ }
2018
+ /**
2019
+ * @tsplus pipeable fncts.io.Stream split
2020
+ */
2021
+ export function split(predicate, __tsplusTrace) {
2022
+ return self => {
2023
+ function split(leftovers, input) {
2024
+ const [chunk, remaining] = tsplus_module_12.splitWhere(predicate)(tsplus_module_12.concat(input)(leftovers));
2025
+ if (tsplus_module_12.isEmpty(chunk) || tsplus_module_12.isEmpty(remaining)) {
2026
+ return loop(tsplus_module_12.concat(tsplus_module_12.drop(1)(remaining))(chunk));
2027
+ } else {
2028
+ return tsplus_module_11.zipRight(split(tsplus_module_7.empty(), tsplus_module_12.drop(1)(remaining)))(tsplus_module_10.writeNow(tsplus_module_19.single(chunk)));
2029
+ }
2030
+ }
2031
+ function loop(leftovers) {
2032
+ return tsplus_module_10.readWith(input => split(leftovers, input), tsplus_module_10.failNow, _ => {
2033
+ if (tsplus_module_12.isEmpty(leftovers)) {
2034
+ return tsplus_module_10.unit;
2035
+ } else if (tsplus_module_64.isNothing(tsplus_module_12.find(predicate)(leftovers))) {
2036
+ return tsplus_module_11.zipRight(tsplus_module_10.unit)(tsplus_module_10.writeNow(tsplus_module_19.single(leftovers)));
2037
+ } else {
2038
+ return tsplus_module_11.zipRight(tsplus_module_10.unit)(split(tsplus_module_7.empty(), leftovers));
2039
+ }
2040
+ });
2041
+ }
2042
+ return new Stream(tsplus_module_10.pipeTo(loop(tsplus_module_7.empty()))(self.channel));
1867
2043
  };
1868
2044
  }
1869
2045
  /**
@@ -1904,7 +2080,7 @@ export function take(n, __tsplusTrace) {
1904
2080
  return empty_1;
1905
2081
  }
1906
2082
  if (!Number.isInteger(n)) {
1907
- return halt_1(() => new tsplus_module_63.IllegalArgumentError(`${n} should be an integer`, "Stream.take"), __tsplusTrace);
2083
+ return halt_1(() => new tsplus_module_65.IllegalArgumentError(`${n} should be an integer`, "Stream.take"), __tsplusTrace);
1908
2084
  }
1909
2085
  return new Stream(tsplus_module_10.pipeTo(takeLoop(n, __tsplusTrace))(stream.channel));
1910
2086
  };
@@ -1950,11 +2126,58 @@ export function takeUntil(p, __tsplusTrace) {
1950
2126
  /**
1951
2127
  * @tsplus pipeable fncts.io.Stream tap
1952
2128
  */
1953
- export function tap(f, __tsplusTrace) {
2129
+ function tap_1(f, __tsplusTrace) {
1954
2130
  return ma => {
1955
2131
  return mapIO_1(a => tsplus_module_1.as(() => a, __tsplusTrace)(f(a)), __tsplusTrace)(ma);
1956
2132
  };
1957
2133
  }
2134
+ /**
2135
+ * Returns a stream that effectfully "peeks" at the failure and adds an effect
2136
+ * to consumption of every element of the stream
2137
+ *
2138
+ * @tsplus pipeable fncts.io.Stream tapBoth
2139
+ */
2140
+ export function tapBoth(f, g, __tsplusTrace) {
2141
+ return self => {
2142
+ return tap_1(g, __tsplusTrace)(tapError_1(f, __tsplusTrace)(self));
2143
+ };
2144
+ }
2145
+ /**
2146
+ * Returns a stream that effectfully "peeks" at the failure of the stream.
2147
+ *
2148
+ * @tsplus pipeable fncts.io.Stream tapError
2149
+ */
2150
+ function tapError_1(f, __tsplusTrace) {
2151
+ return self => {
2152
+ return catchAll_1(e => fromIO_1(f(e), __tsplusTrace), __tsplusTrace)(self);
2153
+ };
2154
+ }
2155
+ /**
2156
+ * Returns a stream that effectfully "peeks" at the cause of failure of the
2157
+ * stream.
2158
+ *
2159
+ * @tsplus pipeable fncts.io.Stream tapErrorCause
2160
+ */
2161
+ export function tapErrorCause(f, __tsplusTrace) {
2162
+ return self => {
2163
+ return catchAllCause_1(e => fromIO_1(tsplus_module_1.zipRight(tsplus_module_1.refailCause(e, __tsplusTrace), __tsplusTrace)(f(e)), __tsplusTrace), __tsplusTrace)(self);
2164
+ };
2165
+ }
2166
+ /**
2167
+ * Sends all elements emitted by this stream to the specified sink in addition
2168
+ * to emitting them.
2169
+ *
2170
+ * @tsplus pipeable fncts.io.Stream tapSink
2171
+ */
2172
+ export function tapSink(sink, __tsplusTrace) {
2173
+ return self => {
2174
+ return flatMap_1(([queue, future]) => {
2175
+ const right = flattenTake_1(fromQueue_1(queue, 1, __tsplusTrace), __tsplusTrace);
2176
+ const loop = tsplus_module_10.readWithCause(chunk => tsplus_module_11.zipRight(loop)(tsplus_module_11.zipRight(tsplus_module_10.writeNow(chunk))(tsplus_module_10.fromIO(() => tsplus_module_28.offer(tsplus_module_27.chunk(chunk), __tsplusTrace)(queue)))), cause => tsplus_module_10.fromIO(() => tsplus_module_28.offer(tsplus_module_27.failCause(cause), __tsplusTrace)(queue)), () => tsplus_module_10.fromIO(() => tsplus_module_28.offer(tsplus_module_27.end, __tsplusTrace)(queue)));
2177
+ return merge_1(execute_1(tsplus_module_66.ensuring(tsplus_module_37.succeed_(undefined, __tsplusTrace)(future), __tsplusTrace)(run_1(sink, __tsplusTrace)(right)), __tsplusTrace), "Both", __tsplusTrace)(new Stream(tsplus_module_10.ensuring(tsplus_module_1.zipRight(tsplus_module_37.wait(future, __tsplusTrace), __tsplusTrace)(tsplus_module_24.forkDaemon(tsplus_module_28.offer(tsplus_module_27.end, __tsplusTrace)(queue), __tsplusTrace)))(tsplus_module_10.pipeTo(loop)(self.channel))));
2178
+ }, __tsplusTrace)(fromIO_1(tsplus_module_1.zip(tsplus_module_38.make(__tsplusTrace), __tsplusTrace)(tsplus_module_30.makeBounded(1, __tsplusTrace)), __tsplusTrace));
2179
+ };
2180
+ }
1958
2181
  /**
1959
2182
  * Throttles the chunks of this stream according to the given bandwidth parameters using the token bucket
1960
2183
  * algorithm. Allows for burst in the processing of elements by allowing the token bucket to accumulate
@@ -2010,7 +2233,7 @@ function toHub_1(capacity, __tsplusTrace) {
2010
2233
  * @tsplus getter fncts.io.Stream toPull
2011
2234
  */
2012
2235
  function toPull_1(stream, __tsplusTrace) {
2013
- return tsplus_module_1.map(io => tsplus_module_1.flatMap(r => tsplus_module_4.match(() => tsplus_module_1.failNow(tsplus_module_3.nothing(), __tsplusTrace), tsplus_module_1.succeedNow)(r), __tsplusTrace)(tsplus_module_1.mapError(tsplus_module_3.just, __tsplusTrace)(io)), __tsplusTrace)(tsplus_module_64.toPull(stream.channel));
2236
+ return tsplus_module_1.map(io => tsplus_module_1.flatMap(r => tsplus_module_4.match(() => tsplus_module_1.failNow(tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace), tsplus_module_1.succeedNow)(r), __tsplusTrace)(tsplus_module_1.mapError(tsplus_module_3.just, __tsplusTrace)(io)), __tsplusTrace)(tsplus_module_67.toPull(stream.channel));
2014
2237
  }
2015
2238
  /**
2016
2239
  * Converts the stream to a managed queue of chunks. After the managed queue is used,