@fncts/io 0.0.31 → 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 (342) hide show
  1. package/Channel/api/runScoped.d.ts +1 -0
  2. package/Channel/api.d.ts +1 -0
  3. package/Channel/internal/ChannelExecutor.d.ts +2 -2
  4. package/Fiber/FiberMessage.d.ts +5 -5
  5. package/Fiber/FiberRuntime.d.ts +3 -3
  6. package/IO/api/provideSomeLayer.d.ts +1 -2
  7. package/IO/api/zipConcurrent.d.ts +2 -1
  8. package/IO/api.d.ts +2 -1
  9. package/IO/definition.d.ts +34 -24
  10. package/IO/runtime.d.ts +10 -18
  11. package/STM/definition.d.ts +1 -1
  12. package/Stream/api.d.ts +113 -5
  13. package/_cjs/Channel/api/mapOutConcurrentIO.cjs +1 -1
  14. package/_cjs/Channel/api/mapOutConcurrentIO.cjs.map +1 -1
  15. package/_cjs/Channel/api/mergeAllWith.cjs +3 -3
  16. package/_cjs/Channel/api/mergeAllWith.cjs.map +1 -1
  17. package/_cjs/Channel/api/mergeWith.cjs +4 -4
  18. package/_cjs/Channel/api/mergeWith.cjs.map +1 -1
  19. package/_cjs/Channel/api/runScoped.cjs +19 -3
  20. package/_cjs/Channel/api/runScoped.cjs.map +1 -1
  21. package/_cjs/Channel/api/toPull.cjs +3 -3
  22. package/_cjs/Channel/api/toPull.cjs.map +1 -1
  23. package/_cjs/Channel/api.cjs +8 -7
  24. package/_cjs/Channel/api.cjs.map +1 -1
  25. package/_cjs/Channel/internal/ChannelExecutor.cjs +71 -62
  26. package/_cjs/Channel/internal/ChannelExecutor.cjs.map +1 -1
  27. package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs +3 -3
  28. package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs.map +1 -1
  29. package/_cjs/Clock/live.cjs +1 -1
  30. package/_cjs/Clock/live.cjs.map +1 -1
  31. package/_cjs/Fiber/FiberMessage.cjs +12 -11
  32. package/_cjs/Fiber/FiberMessage.cjs.map +1 -1
  33. package/_cjs/Fiber/FiberRuntime.cjs +102 -70
  34. package/_cjs/Fiber/FiberRuntime.cjs.map +1 -1
  35. package/_cjs/Fiber/api/collectAll.cjs +1 -1
  36. package/_cjs/Fiber/api/collectAll.cjs.map +1 -1
  37. package/_cjs/Fiber/api/mapIO.cjs +1 -1
  38. package/_cjs/Fiber/api/mapIO.cjs.map +1 -1
  39. package/_cjs/Fiber/api/zipWith.cjs +1 -1
  40. package/_cjs/Fiber/api/zipWith.cjs.map +1 -1
  41. package/_cjs/Fiber/constructors.cjs +5 -5
  42. package/_cjs/Fiber/constructors.cjs.map +1 -1
  43. package/_cjs/FiberRef/unsafe.cjs +3 -2
  44. package/_cjs/FiberRef/unsafe.cjs.map +1 -1
  45. package/_cjs/FiberScope/definition.cjs +2 -2
  46. package/_cjs/FiberScope/definition.cjs.map +1 -1
  47. package/_cjs/Future/api.cjs +4 -4
  48. package/_cjs/Future/api.cjs.map +1 -1
  49. package/_cjs/Hub/api.cjs.map +1 -1
  50. package/_cjs/Hub/internal.cjs +1 -1
  51. package/_cjs/Hub/internal.cjs.map +1 -1
  52. package/_cjs/IO/api/asyncIO.cjs +1 -1
  53. package/_cjs/IO/api/asyncIO.cjs.map +1 -1
  54. package/_cjs/IO/api/asyncInterrupt.cjs +2 -2
  55. package/_cjs/IO/api/asyncInterrupt.cjs.map +1 -1
  56. package/_cjs/IO/api/concurrency.cjs +3 -3
  57. package/_cjs/IO/api/concurrency.cjs.map +1 -1
  58. package/_cjs/IO/api/daemonChildren.cjs +1 -1
  59. package/_cjs/IO/api/daemonChildren.cjs.map +1 -1
  60. package/_cjs/IO/api/fork.cjs +2 -1
  61. package/_cjs/IO/api/fork.cjs.map +1 -1
  62. package/_cjs/IO/api/interrupt.cjs +2 -2
  63. package/_cjs/IO/api/interrupt.cjs.map +1 -1
  64. package/_cjs/IO/api/provideSomeLayer.cjs.map +1 -1
  65. package/_cjs/IO/api/raceWith.cjs +9 -12
  66. package/_cjs/IO/api/raceWith.cjs.map +1 -1
  67. package/_cjs/IO/api/repeat.cjs +2 -2
  68. package/_cjs/IO/api/repeat.cjs.map +1 -1
  69. package/_cjs/IO/api/stateful.cjs +3 -3
  70. package/_cjs/IO/api/stateful.cjs.map +1 -1
  71. package/_cjs/IO/api/timeout.cjs +1 -1
  72. package/_cjs/IO/api/timeout.cjs.map +1 -1
  73. package/_cjs/IO/api/transplant.cjs +1 -1
  74. package/_cjs/IO/api/transplant.cjs.map +1 -1
  75. package/_cjs/IO/api/withChildren.cjs +5 -4
  76. package/_cjs/IO/api/withChildren.cjs.map +1 -1
  77. package/_cjs/IO/api/withEarlyRelease.cjs +1 -1
  78. package/_cjs/IO/api/withEarlyRelease.cjs.map +1 -1
  79. package/_cjs/IO/api/zipConcurrent.cjs +23 -23
  80. package/_cjs/IO/api/zipConcurrent.cjs.map +1 -1
  81. package/_cjs/IO/api.cjs +33 -32
  82. package/_cjs/IO/api.cjs.map +1 -1
  83. package/_cjs/IO/definition.cjs +17 -31
  84. package/_cjs/IO/definition.cjs.map +1 -1
  85. package/_cjs/IO/runtime.cjs +47 -40
  86. package/_cjs/IO/runtime.cjs.map +1 -1
  87. package/_cjs/Logger/api.cjs +3 -2
  88. package/_cjs/Logger/api.cjs.map +1 -1
  89. package/_cjs/MVar/api.cjs +11 -11
  90. package/_cjs/MVar/api.cjs.map +1 -1
  91. package/_cjs/Push/api.cjs +3 -3
  92. package/_cjs/Push/api.cjs.map +1 -1
  93. package/_cjs/Push/internal.cjs +1 -1
  94. package/_cjs/Push/internal.cjs.map +1 -1
  95. package/_cjs/Queue/api/filterInputIO.cjs +2 -2
  96. package/_cjs/Queue/api/filterInputIO.cjs.map +1 -1
  97. package/_cjs/Queue/api/filterOutputIO.cjs.map +1 -1
  98. package/_cjs/Ref/Derived.cjs +4 -4
  99. package/_cjs/Ref/Derived.cjs.map +1 -1
  100. package/_cjs/Ref/DerivedAll.cjs +5 -5
  101. package/_cjs/Ref/DerivedAll.cjs.map +1 -1
  102. package/_cjs/Ref/Synchronized/api.cjs +3 -3
  103. package/_cjs/Ref/Synchronized/api.cjs.map +1 -1
  104. package/_cjs/Ref/api/collect.cjs +1 -1
  105. package/_cjs/Ref/api/collect.cjs.map +1 -1
  106. package/_cjs/Ref/api/dimap.cjs +3 -3
  107. package/_cjs/Ref/api/dimap.cjs.map +1 -1
  108. package/_cjs/Ref/api/filter.cjs +2 -2
  109. package/_cjs/Ref/api/filter.cjs.map +1 -1
  110. package/_cjs/Ref/api.cjs +2 -3
  111. package/_cjs/Ref/api.cjs.map +1 -1
  112. package/_cjs/RefSubject/Atomic.cjs +6 -6
  113. package/_cjs/RefSubject/Atomic.cjs.map +1 -1
  114. package/_cjs/STM/api.cjs +5 -5
  115. package/_cjs/STM/api.cjs.map +1 -1
  116. package/_cjs/STM/definition.cjs +1 -1
  117. package/_cjs/STM/definition.cjs.map +1 -1
  118. package/_cjs/STM/internal/CommitState.cjs +5 -4
  119. package/_cjs/STM/internal/CommitState.cjs.map +1 -1
  120. package/_cjs/STM/internal/Journal.cjs +8 -8
  121. package/_cjs/STM/internal/Journal.cjs.map +1 -1
  122. package/_cjs/Schedule/api/driver.cjs +3 -3
  123. package/_cjs/Schedule/api/driver.cjs.map +1 -1
  124. package/_cjs/Schedule/api.cjs +8 -8
  125. package/_cjs/Schedule/api.cjs.map +1 -1
  126. package/_cjs/Scope/ReleaseMap/api/releaseAll.cjs +1 -1
  127. package/_cjs/Scope/ReleaseMap/api/releaseAll.cjs.map +1 -1
  128. package/_cjs/Scope/ReleaseMap/api.cjs +3 -3
  129. package/_cjs/Scope/ReleaseMap/api.cjs.map +1 -1
  130. package/_cjs/ScopedRef/api.cjs +1 -1
  131. package/_cjs/ScopedRef/api.cjs.map +1 -1
  132. package/_cjs/Semaphore.cjs +2 -2
  133. package/_cjs/Semaphore.cjs.map +1 -1
  134. package/_cjs/Sink/api.cjs +6 -6
  135. package/_cjs/Sink/api.cjs.map +1 -1
  136. package/_cjs/Stream/api/zipAllWith.cjs +8 -8
  137. package/_cjs/Stream/api/zipAllWith.cjs.map +1 -1
  138. package/_cjs/Stream/api/zipWithChunks.cjs +6 -6
  139. package/_cjs/Stream/api/zipWithChunks.cjs.map +1 -1
  140. package/_cjs/Stream/api.cjs +415 -133
  141. package/_cjs/Stream/api.cjs.map +1 -1
  142. package/_cjs/Stream/internal/Handoff.cjs +2 -2
  143. package/_cjs/Stream/internal/Handoff.cjs.map +1 -1
  144. package/_cjs/Stream/internal/Pull.cjs +2 -2
  145. package/_cjs/Stream/internal/Pull.cjs.map +1 -1
  146. package/_cjs/Stream/internal/Take.cjs +6 -6
  147. package/_cjs/Stream/internal/Take.cjs.map +1 -1
  148. package/_cjs/Stream/internal/util.cjs +3 -2
  149. package/_cjs/Stream/internal/util.cjs.map +1 -1
  150. package/_cjs/TFuture/api.cjs +3 -3
  151. package/_cjs/TFuture/api.cjs.map +1 -1
  152. package/_cjs/TFuture/constructors.cjs +1 -1
  153. package/_cjs/TFuture/constructors.cjs.map +1 -1
  154. package/_cjs/TRef/definition.cjs +9 -9
  155. package/_cjs/TRef/definition.cjs.map +1 -1
  156. package/_cjs/collection/immutable/Conc/findIO.cjs +3 -3
  157. package/_cjs/collection/immutable/Conc/findIO.cjs.map +1 -1
  158. package/_cjs/data/Exit/foreachIO.cjs +1 -1
  159. package/_cjs/data/Exit/foreachIO.cjs.map +1 -1
  160. package/_mjs/Cached/definition.mjs.map +1 -1
  161. package/_mjs/Channel/api/mapOutConcurrentIO.mjs +1 -1
  162. package/_mjs/Channel/api/mapOutConcurrentIO.mjs.map +1 -1
  163. package/_mjs/Channel/api/mergeAllWith.mjs +3 -3
  164. package/_mjs/Channel/api/mergeAllWith.mjs.map +1 -1
  165. package/_mjs/Channel/api/mergeWith.mjs +4 -4
  166. package/_mjs/Channel/api/mergeWith.mjs.map +1 -1
  167. package/_mjs/Channel/api/runScoped.mjs +19 -3
  168. package/_mjs/Channel/api/runScoped.mjs.map +1 -1
  169. package/_mjs/Channel/api/toPull.mjs +3 -3
  170. package/_mjs/Channel/api/toPull.mjs.map +1 -1
  171. package/_mjs/Channel/api.mjs +8 -7
  172. package/_mjs/Channel/api.mjs.map +1 -1
  173. package/_mjs/Channel/internal/ChannelExecutor.mjs +71 -62
  174. package/_mjs/Channel/internal/ChannelExecutor.mjs.map +1 -1
  175. package/_mjs/Channel/internal/SingleProducerAsyncInput.mjs +3 -3
  176. package/_mjs/Channel/internal/SingleProducerAsyncInput.mjs.map +1 -1
  177. package/_mjs/Clock/live.mjs +1 -1
  178. package/_mjs/Clock/live.mjs.map +1 -1
  179. package/_mjs/Fiber/FiberMessage.mjs +5 -5
  180. package/_mjs/Fiber/FiberMessage.mjs.map +1 -1
  181. package/_mjs/Fiber/FiberRuntime.mjs +102 -70
  182. package/_mjs/Fiber/FiberRuntime.mjs.map +1 -1
  183. package/_mjs/Fiber/api/collectAll.mjs +1 -1
  184. package/_mjs/Fiber/api/collectAll.mjs.map +1 -1
  185. package/_mjs/Fiber/api/mapIO.mjs +1 -1
  186. package/_mjs/Fiber/api/mapIO.mjs.map +1 -1
  187. package/_mjs/Fiber/api/zipWith.mjs +1 -1
  188. package/_mjs/Fiber/api/zipWith.mjs.map +1 -1
  189. package/_mjs/Fiber/constructors.mjs +5 -5
  190. package/_mjs/Fiber/constructors.mjs.map +1 -1
  191. package/_mjs/FiberRef/unsafe.mjs +3 -2
  192. package/_mjs/FiberRef/unsafe.mjs.map +1 -1
  193. package/_mjs/FiberScope/definition.mjs +2 -2
  194. package/_mjs/FiberScope/definition.mjs.map +1 -1
  195. package/_mjs/Future/api.mjs +4 -4
  196. package/_mjs/Future/api.mjs.map +1 -1
  197. package/_mjs/Hub/api.mjs.map +1 -1
  198. package/_mjs/Hub/internal.mjs +1 -1
  199. package/_mjs/Hub/internal.mjs.map +1 -1
  200. package/_mjs/IO/api/asyncIO.mjs +1 -1
  201. package/_mjs/IO/api/asyncIO.mjs.map +1 -1
  202. package/_mjs/IO/api/asyncInterrupt.mjs +2 -2
  203. package/_mjs/IO/api/asyncInterrupt.mjs.map +1 -1
  204. package/_mjs/IO/api/concurrency.mjs +3 -3
  205. package/_mjs/IO/api/concurrency.mjs.map +1 -1
  206. package/_mjs/IO/api/daemonChildren.mjs +1 -1
  207. package/_mjs/IO/api/daemonChildren.mjs.map +1 -1
  208. package/_mjs/IO/api/fork.mjs +2 -1
  209. package/_mjs/IO/api/fork.mjs.map +1 -1
  210. package/_mjs/IO/api/interrupt.mjs +2 -2
  211. package/_mjs/IO/api/interrupt.mjs.map +1 -1
  212. package/_mjs/IO/api/provideSomeLayer.mjs.map +1 -1
  213. package/_mjs/IO/api/raceWith.mjs +9 -12
  214. package/_mjs/IO/api/raceWith.mjs.map +1 -1
  215. package/_mjs/IO/api/repeat.mjs +2 -2
  216. package/_mjs/IO/api/repeat.mjs.map +1 -1
  217. package/_mjs/IO/api/stateful.mjs +3 -3
  218. package/_mjs/IO/api/stateful.mjs.map +1 -1
  219. package/_mjs/IO/api/timeout.mjs +1 -1
  220. package/_mjs/IO/api/timeout.mjs.map +1 -1
  221. package/_mjs/IO/api/transplant.mjs +1 -1
  222. package/_mjs/IO/api/transplant.mjs.map +1 -1
  223. package/_mjs/IO/api/withChildren.mjs +5 -4
  224. package/_mjs/IO/api/withChildren.mjs.map +1 -1
  225. package/_mjs/IO/api/withEarlyRelease.mjs +1 -1
  226. package/_mjs/IO/api/withEarlyRelease.mjs.map +1 -1
  227. package/_mjs/IO/api/zipConcurrent.mjs +23 -23
  228. package/_mjs/IO/api/zipConcurrent.mjs.map +1 -1
  229. package/_mjs/IO/api.mjs +32 -30
  230. package/_mjs/IO/api.mjs.map +1 -1
  231. package/_mjs/IO/definition.mjs +16 -27
  232. package/_mjs/IO/definition.mjs.map +1 -1
  233. package/_mjs/IO/runtime.mjs +43 -34
  234. package/_mjs/IO/runtime.mjs.map +1 -1
  235. package/_mjs/Logger/api.mjs +3 -2
  236. package/_mjs/Logger/api.mjs.map +1 -1
  237. package/_mjs/MVar/api.mjs +11 -11
  238. package/_mjs/MVar/api.mjs.map +1 -1
  239. package/_mjs/Push/api.mjs +3 -3
  240. package/_mjs/Push/api.mjs.map +1 -1
  241. package/_mjs/Push/internal.mjs +1 -1
  242. package/_mjs/Push/internal.mjs.map +1 -1
  243. package/_mjs/Queue/api/filterInputIO.mjs +2 -2
  244. package/_mjs/Queue/api/filterInputIO.mjs.map +1 -1
  245. package/_mjs/Queue/api/filterOutputIO.mjs.map +1 -1
  246. package/_mjs/Ref/Derived.mjs +4 -4
  247. package/_mjs/Ref/Derived.mjs.map +1 -1
  248. package/_mjs/Ref/DerivedAll.mjs +5 -5
  249. package/_mjs/Ref/DerivedAll.mjs.map +1 -1
  250. package/_mjs/Ref/Synchronized/api.mjs +3 -3
  251. package/_mjs/Ref/Synchronized/api.mjs.map +1 -1
  252. package/_mjs/Ref/api/collect.mjs +1 -1
  253. package/_mjs/Ref/api/collect.mjs.map +1 -1
  254. package/_mjs/Ref/api/dimap.mjs +3 -3
  255. package/_mjs/Ref/api/dimap.mjs.map +1 -1
  256. package/_mjs/Ref/api/filter.mjs +2 -2
  257. package/_mjs/Ref/api/filter.mjs.map +1 -1
  258. package/_mjs/Ref/api.mjs +2 -1
  259. package/_mjs/Ref/api.mjs.map +1 -1
  260. package/_mjs/RefSubject/Atomic.mjs +6 -6
  261. package/_mjs/RefSubject/Atomic.mjs.map +1 -1
  262. package/_mjs/STM/api.mjs +5 -5
  263. package/_mjs/STM/api.mjs.map +1 -1
  264. package/_mjs/STM/definition.mjs +1 -1
  265. package/_mjs/STM/definition.mjs.map +1 -1
  266. package/_mjs/STM/internal/CommitState.mjs +5 -4
  267. package/_mjs/STM/internal/CommitState.mjs.map +1 -1
  268. package/_mjs/STM/internal/Journal.mjs +8 -8
  269. package/_mjs/STM/internal/Journal.mjs.map +1 -1
  270. package/_mjs/Schedule/api/driver.mjs +3 -3
  271. package/_mjs/Schedule/api/driver.mjs.map +1 -1
  272. package/_mjs/Schedule/api.mjs +8 -8
  273. package/_mjs/Schedule/api.mjs.map +1 -1
  274. package/_mjs/Scope/ReleaseMap/api/releaseAll.mjs +1 -1
  275. package/_mjs/Scope/ReleaseMap/api/releaseAll.mjs.map +1 -1
  276. package/_mjs/Scope/ReleaseMap/api.mjs +3 -3
  277. package/_mjs/Scope/ReleaseMap/api.mjs.map +1 -1
  278. package/_mjs/ScopedRef/api.mjs +1 -1
  279. package/_mjs/ScopedRef/api.mjs.map +1 -1
  280. package/_mjs/Semaphore.mjs +2 -2
  281. package/_mjs/Semaphore.mjs.map +1 -1
  282. package/_mjs/Sink/api.mjs +6 -6
  283. package/_mjs/Sink/api.mjs.map +1 -1
  284. package/_mjs/Stream/api/zipAllWith.mjs +8 -8
  285. package/_mjs/Stream/api/zipAllWith.mjs.map +1 -1
  286. package/_mjs/Stream/api/zipWithChunks.mjs +6 -6
  287. package/_mjs/Stream/api/zipWithChunks.mjs.map +1 -1
  288. package/_mjs/Stream/api.mjs +321 -60
  289. package/_mjs/Stream/api.mjs.map +1 -1
  290. package/_mjs/Stream/internal/Handoff.mjs +2 -2
  291. package/_mjs/Stream/internal/Handoff.mjs.map +1 -1
  292. package/_mjs/Stream/internal/Pull.mjs +2 -2
  293. package/_mjs/Stream/internal/Pull.mjs.map +1 -1
  294. package/_mjs/Stream/internal/Take.mjs +6 -6
  295. package/_mjs/Stream/internal/Take.mjs.map +1 -1
  296. package/_mjs/Stream/internal/util.mjs +3 -2
  297. package/_mjs/Stream/internal/util.mjs.map +1 -1
  298. package/_mjs/TFuture/api.mjs +3 -3
  299. package/_mjs/TFuture/api.mjs.map +1 -1
  300. package/_mjs/TFuture/constructors.mjs +1 -1
  301. package/_mjs/TFuture/constructors.mjs.map +1 -1
  302. package/_mjs/TRef/definition.mjs +9 -9
  303. package/_mjs/TRef/definition.mjs.map +1 -1
  304. package/_mjs/collection/immutable/Conc/findIO.mjs +3 -3
  305. package/_mjs/collection/immutable/Conc/findIO.mjs.map +1 -1
  306. package/_mjs/data/Exit/foreachIO.mjs +1 -1
  307. package/_mjs/data/Exit/foreachIO.mjs.map +1 -1
  308. package/_src/Cached/definition.ts +1 -1
  309. package/_src/Channel/api/runScoped.ts +30 -5
  310. package/_src/Channel/api/toPull.ts +1 -1
  311. package/_src/Channel/api.ts +1 -0
  312. package/_src/Channel/internal/ChannelExecutor.ts +24 -20
  313. package/_src/Fiber/FiberMessage.ts +5 -5
  314. package/_src/Fiber/FiberRuntime.ts +40 -17
  315. package/_src/FiberRefs/api.ts +1 -1
  316. package/_src/Hub/api.ts +1 -1
  317. package/_src/IO/api/asyncIO.ts +1 -1
  318. package/_src/IO/api/provideSomeLayer.ts +1 -3
  319. package/_src/IO/api/raceWith.ts +1 -3
  320. package/_src/IO/api/stateful.ts +1 -1
  321. package/_src/IO/api/zipConcurrent.ts +26 -30
  322. package/_src/IO/api.ts +4 -3
  323. package/_src/IO/definition.ts +35 -28
  324. package/_src/IO/runtime.ts +39 -38
  325. package/_src/Queue/api/filterInputIO.ts +1 -1
  326. package/_src/Queue/api/filterOutputIO.ts +1 -1
  327. package/_src/RefSubject/Atomic.ts +4 -4
  328. package/_src/STM/definition.ts +1 -1
  329. package/_src/State/definition.ts +1 -1
  330. package/_src/Stream/api.ts +315 -14
  331. package/_src/Subject/Atomic.ts +1 -1
  332. package/_src/global.ts +0 -4
  333. package/_src/index.ts +2 -2
  334. package/global.d.ts +0 -4
  335. package/index.d.ts +2 -2
  336. package/package.json +3 -3
  337. package/RuntimeConfig.d.ts +0 -11
  338. package/_cjs/RuntimeConfig.cjs +0 -12
  339. package/_cjs/RuntimeConfig.cjs.map +0 -1
  340. package/_mjs/RuntimeConfig.mjs +0 -3
  341. package/_mjs/RuntimeConfig.mjs.map +0 -1
  342. package/_src/RuntimeConfig.ts +0 -6
@@ -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,24 +112,28 @@ 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;
112
119
  export const orElse = orElse_1;
113
120
  export const pipeThrough = pipeThrough_1;
121
+ export const pipeThroughChannelOrFail = pipeThroughChannelOrFail_1;
114
122
  export const provideEnvironment = provideEnvironment_1;
115
123
  export const provideLayer = provideLayer_1;
116
124
  export const repeatIOMaybe = repeatIOMaybe_1;
117
125
  export const repeatIOChunkMaybe = repeatIOChunkMaybe_1;
118
126
  export const run = run_1;
119
127
  export const runForeachScoped = runForeachScoped_1;
120
- export const runIntoElementsScoped_ = runIntoElementsScoped_1;
121
128
  export const runIntoQueueScoped = runIntoQueueScoped_1;
129
+ export const runIntoQueueElementsScoped = runIntoQueueElementsScoped_1;
122
130
  export const runIntoHubScoped = runIntoHubScoped_1;
123
131
  export const runScoped = runScoped_1;
124
132
  export const scanIO = scanIO_1;
125
133
  export const scanReduceIO = scanReduceIO_1;
126
134
  export const succeedNow = succeedNow_1;
135
+ export const tap = tap_1;
136
+ export const tapError = tapError_1;
127
137
  export const throttleEnforceIO = throttleEnforceIO_1;
128
138
  export const toHub = toHub_1;
129
139
  export const toPull = toPull_1;
@@ -135,7 +145,7 @@ export const unfoldIO = unfoldIO_1;
135
145
  export const unfoldChunk = unfoldChunk_1;
136
146
  export const unwrap = unwrap_1;
137
147
  export const unwrapScoped = unwrapScoped_1;
138
- import { constVoid, identity, tuple } from "@fncts/base/data/function";
148
+ import { identity, tuple } from "@fncts/base/data/function";
139
149
  import { DEFAULT_CHUNK_SIZE, Stream } from "./definition.mjs";
140
150
  import { Handoff } from "./internal/Handoff.mjs";
141
151
  import { ScheduleEnd, UpstreamEnd } from "./internal/SinkEndReason.mjs";
@@ -173,7 +183,7 @@ export function aggregateAsync(sink, __tsplusTrace) {
173
183
  */
174
184
  function aggregateAsyncWithin_1(sink, schedule, __tsplusTrace) {
175
185
  return stream => {
176
- 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));
177
187
  };
178
188
  }
179
189
  /**
@@ -226,15 +236,15 @@ function aggregateAsyncWithinEither_1(sink, schedule, __tsplusTrace) {
226
236
  function handleSide(leftovers, b, c, __tsplusTrace) {
227
237
  return tsplus_module_10.unwrap(() => tsplus_module_1.zipRight(tsplus_module_1.map(reason => tsplus_module_21.matchSinkEndReason({
228
238
  ScheduleEnd: () => tsplus_module_10.unwrapScoped(() => tsplus_module_1.flatMap(consumed_ => tsplus_module_1.flatMap(sinkFiber => tsplus_module_1.map(scheduleFiber => {
229
- 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);
230
240
  return consumed_ ? tsplus_module_11.zipRight(scheduledAggregator(sinkFiber, scheduleFiber))(tsplus_module_10.write(() => toWrite)) : scheduledAggregator(sinkFiber, scheduleFiber);
231
- }, __tsplusTrace)(tsplus_module_17.forkScoped(timeout(tsplus_module_3.just(b), __tsplusTrace), __tsplusTrace)), __tsplusTrace)(forkSink), __tsplusTrace)(tsplus_module_14.get(consumed, __tsplusTrace))),
232
- 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)))
233
243
  })(reason), __tsplusTrace)(tsplus_module_14.get(sinkEndReason, __tsplusTrace)), __tsplusTrace)(tsplus_module_13.set(tsplus_module_12.flatten(leftovers), __tsplusTrace)(sinkLeftovers)));
234
244
  }
235
- 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)));
236
246
  };
237
- 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);
238
248
  }, __tsplusTrace)(fromIO_1(deps, __tsplusTrace));
239
249
  };
240
250
  }
@@ -281,7 +291,11 @@ function asyncInterrupt_1(register, outputBuffer = 16, __tsplusTrace) {
281
291
  return ensuring_1(canceler, __tsplusTrace)(new Stream(loop));
282
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) => {
283
293
  const effect = tsplus_module_1.flatMap(a => tsplus_module_28.offer(a, __tsplusTrace)(output), __tsplusTrace)(tsplus_module_27.fromPull(k));
284
- 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);
285
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);
286
300
  }
287
301
  /**
@@ -293,7 +307,7 @@ function asyncInterrupt_1(register, outputBuffer = 16, __tsplusTrace) {
293
307
  * @tsplus static fncts.io.StreamOps asyncMaybe
294
308
  */
295
309
  function asyncMaybe_1(register, outputBuffer = 16, __tsplusTrace) {
296
- 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);
297
311
  }
298
312
  /**
299
313
  * @tsplus static fncts.io.StreamOps async
@@ -301,7 +315,7 @@ function asyncMaybe_1(register, outputBuffer = 16, __tsplusTrace) {
301
315
  export function async(register, outputBuffer = 16, __tsplusTrace) {
302
316
  return asyncMaybe_1(cb => {
303
317
  register(cb);
304
- return tsplus_module_3.nothing();
318
+ return tsplus_module_3.nothing(__tsplusTrace);
305
319
  }, outputBuffer, __tsplusTrace);
306
320
  }
307
321
  /**
@@ -311,7 +325,14 @@ export function asyncIO(register, outputBuffer = 16, __tsplusTrace) {
311
325
  return new Stream(tsplus_module_10.unwrapScoped(() => tsplus_module_1.flatMap(output => tsplus_module_1.flatMap(runtime => tsplus_module_1.map(() => {
312
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))));
313
327
  return loop;
314
- }, __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))));
315
336
  }
316
337
  /**
317
338
  * Returns a stream whose failure and success channels have been mapped by
@@ -517,7 +538,7 @@ export function chunksWith(f, __tsplusTrace) {
517
538
  }
518
539
  function changesWithWriter(f, last, __tsplusTrace) {
519
540
  return tsplus_module_10.readWithCause(chunk => {
520
- 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);
521
542
  return tsplus_module_11.zipRight(changesWithWriter(f, newLast, __tsplusTrace))(tsplus_module_10.writeNow(newChunk));
522
543
  }, tsplus_module_11.failCauseNow, () => tsplus_module_10.unit);
523
544
  }
@@ -530,7 +551,7 @@ function changesWithWriter(f, last, __tsplusTrace) {
530
551
  */
531
552
  export function changesWith(f, __tsplusTrace) {
532
553
  return stream => {
533
- 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));
534
555
  };
535
556
  }
536
557
  /**
@@ -566,7 +587,7 @@ function collectWhileIOLoop(iterator, pf, __tsplusTrace) {
566
587
  }
567
588
  }
568
589
  function combineProducer(handoff, latch, __tsplusTrace) {
569
- 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)));
570
591
  }
571
592
  /**
572
593
  * Combines the elements from this stream and the specified stream by repeatedly applying the
@@ -588,7 +609,7 @@ export function combine(that, s, f, __tsplusTrace) {
588
609
  };
589
610
  }
590
611
  function combineChunksProducer(handoff, latch, __tsplusTrace) {
591
- return tsplus_module_11.zipRight(tsplus_module_10.readWithCause(chunk => tsplus_module_11.zipRight(combineChunksProducer(handoff, latch, __tsplusTrace))(tsplus_module_10.fromIO(() => tsplus_module_5.offer(tsplus_module_27.chunk(chunk))(handoff))), cause => tsplus_module_10.fromIO(() => tsplus_module_5.offer(tsplus_module_27.failCause(cause))(handoff)), () => tsplus_module_11.zipRight(combineChunksProducer(handoff, latch, __tsplusTrace))(tsplus_module_10.fromIO(() => tsplus_module_5.offer(tsplus_module_27.end)(handoff)))))(tsplus_module_10.fromIO(() => tsplus_module_5.take(latch)));
612
+ return tsplus_module_11.zipRight(tsplus_module_10.readWithCause(chunk => tsplus_module_11.zipRight(combineChunksProducer(handoff, latch, __tsplusTrace))(tsplus_module_10.fromIO(() => tsplus_module_5.offer(tsplus_module_27.chunk(chunk))(handoff))), cause => tsplus_module_10.fromIO(() => tsplus_module_5.offer(tsplus_module_27.failCause(cause))(handoff)), () => tsplus_module_10.fromIO(() => tsplus_module_5.offer(tsplus_module_27.end)(handoff))))(tsplus_module_10.fromIO(() => tsplus_module_5.take(latch)));
592
613
  }
593
614
  /**
594
615
  * Combines the chunks from this stream and the specified stream by repeatedly applying the
@@ -701,6 +722,12 @@ export function debounce(duration, __tsplusTrace) {
701
722
  }, __tsplusTrace)(tsplus_module_5.make()), __tsplusTrace), __tsplusTrace);
702
723
  };
703
724
  }
725
+ /**
726
+ * @tsplus static fncts.io.StreamOps defer
727
+ */
728
+ function defer_1(self) {
729
+ return new Stream(tsplus_module_10.defer(() => self().channel));
730
+ }
704
731
  function defaultIfEmptyWriter(fb, __tsplusTrace) {
705
732
  return tsplus_module_10.readWith(i => tsplus_module_12.isEmpty(i) ? defaultIfEmptyWriter(fb, __tsplusTrace) : tsplus_module_11.zipRight(tsplus_module_10.id())(tsplus_module_10.writeNow(i)), tsplus_module_10.failNow, () => fb.channel);
706
733
  }
@@ -743,17 +770,17 @@ function distributedWithDynamic_1(maximumLag, decide, done = () => tsplus_module
743
770
  return self => {
744
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]) => {
745
772
  if (shouldProcess(id)) {
746
- 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));
747
774
  } else {
748
775
  return tsplus_module_1.succeedNow(b, __tsplusTrace);
749
776
  }
750
777
  }, __tsplusTrace)), __tsplusTrace)(tsplus_module_14.get(queuesRef, __tsplusTrace)), __tsplusTrace)(decide(a));
751
778
  return tsplus_module_1.flatMap(queuesRef => tsplus_module_1.map(add => add, __tsplusTrace)(tsplus_module_1.flatMap(queuesLock => tsplus_module_1.flatMap(newQueue => {
752
- 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(() => {
753
780
  const id = Symbol();
754
781
  return tsplus_module_1.map(() => tuple(id, queue), __tsplusTrace)(tsplus_module_15.update(map => tsplus_module_45.set(id, queue)(map), __tsplusTrace)(queuesRef));
755
782
  }, __tsplusTrace)(tsplus_module_28.offer(endTake, __tsplusTrace)(queue)), __tsplusTrace)(tsplus_module_30.makeBounded(1, __tsplusTrace)), __tsplusTrace)(newQueue)), __tsplusTrace));
756
- 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));
757
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));
758
785
  };
759
786
  }
@@ -763,7 +790,7 @@ function distributedWithDynamic_1(maximumLag, decide, done = () => tsplus_module
763
790
  *
764
791
  * @tsplus getter fncts.io.Stream drain
765
792
  */
766
- export function drain(fa, __tsplusTrace) {
793
+ function drain_1(fa, __tsplusTrace) {
767
794
  return new Stream(tsplus_module_10.drain(fa.channel));
768
795
  }
769
796
  function dropLoop(r, __tsplusTrace) {
@@ -816,12 +843,12 @@ export function dropUntil(p, __tsplusTrace) {
816
843
  * @tsplus getter fncts.io.Stream either
817
844
  */
818
845
  export function either(stream, __tsplusTrace) {
819
- 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));
820
847
  }
821
848
  /**
822
849
  * @tsplus static fncts.io.StreamOps empty
823
850
  */
824
- const empty_1 = /*#__PURE__*/fromChunkNow_1( /*#__PURE__*/tsplus_module_7.empty(), fileName_1 + ":1220:70");
851
+ const empty_1 = /*#__PURE__*/fromChunkNow_1( /*#__PURE__*/tsplus_module_7.empty(), fileName_1 + ":1234:70");
825
852
  export const empty = empty_1;
826
853
  function endWhenWriter(fiber, __tsplusTrace) {
827
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)));
@@ -880,6 +907,14 @@ export function environmentWithIO(f, __tsplusTrace) {
880
907
  export function environmentWithStream(f, __tsplusTrace) {
881
908
  return flatMap_1(f, __tsplusTrace)(environment_1(__tsplusTrace));
882
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
+ }
883
918
  /**
884
919
  * Halt a stream with the specified error
885
920
  *
@@ -999,7 +1034,7 @@ function flattenExitOption_1(stream, __tsplusTrace) {
999
1034
  const processChunk = (chunk, cont) => {
1000
1035
  const [toEmit, rest] = tsplus_module_12.splitWhere(_ => !tsplus_module_52.isSuccess(_))(chunk);
1001
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));
1002
- 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)));
1003
1038
  };
1004
1039
  const process = tsplus_module_10.readWithCause(chunk => processChunk(chunk, process), tsplus_module_11.failCauseNow, _ => tsplus_module_11.endNow(undefined));
1005
1040
  return new Stream(tsplus_module_10.pipeTo(process)(stream.channel));
@@ -1053,6 +1088,59 @@ function fromChunk_1(c, __tsplusTrace) {
1053
1088
  function scoped_1(stream, __tsplusTrace) {
1054
1089
  return new Stream(tsplus_module_10.scoped(() => tsplus_module_1.map(tsplus_module_19.single, __tsplusTrace)(stream())));
1055
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
+ }
1056
1144
  /**
1057
1145
  * Creates a stream from an effect producing a value of type `A`
1058
1146
  *
@@ -1113,7 +1201,7 @@ export function fromIterableSingle(iterable, __tsplusTrace) {
1113
1201
  return flatMap_1(iterator => repeatIOMaybe_1(tsplus_module_1.defer(() => {
1114
1202
  const value = iterator.next();
1115
1203
  if (value.done) {
1116
- return tsplus_module_1.failNow(tsplus_module_3.nothing(), __tsplusTrace);
1204
+ return tsplus_module_1.failNow(tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace);
1117
1205
  } else {
1118
1206
  return tsplus_module_1.succeedNow(value.value, __tsplusTrace);
1119
1207
  }
@@ -1133,11 +1221,11 @@ function fromPull_1(scopedPull, __tsplusTrace) {
1133
1221
  function fromQueue_1(queue, maxChunkSize = DEFAULT_CHUNK_SIZE, __tsplusTrace) {
1134
1222
  return repeatIOChunkMaybe_1(tsplus_module_1.catchAllCause(c => tsplus_module_1.flatMap(down => {
1135
1223
  if (down && tsplus_module_25.interrupted(c)) {
1136
- return tsplus_module_53.end;
1224
+ return tsplus_module_54.end;
1137
1225
  } else {
1138
- return tsplus_module_53.failCause(c);
1226
+ return tsplus_module_54.failCause(c);
1139
1227
  }
1140
- }, __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);
1141
1229
  }
1142
1230
  /**
1143
1231
  * @tsplus static fncts.io.StreamOps fromQueueWithShutdown
@@ -1279,7 +1367,7 @@ export function intersperse(stream, middle, __tsplusTrace) {
1279
1367
  */
1280
1368
  export function interruptWhen(io, __tsplusTrace) {
1281
1369
  return stream => {
1282
- return new Stream(tsplus_module_55.interruptWhen(io)(stream.channel));
1370
+ return new Stream(tsplus_module_56.interruptWhen(io)(stream.channel));
1283
1371
  };
1284
1372
  }
1285
1373
  /**
@@ -1287,7 +1375,7 @@ export function interruptWhen(io, __tsplusTrace) {
1287
1375
  */
1288
1376
  export function interruptWhenFuture(future, __tsplusTrace) {
1289
1377
  return fa => {
1290
- return new Stream(tsplus_module_55.interruptWhenFuture(future)(fa.channel));
1378
+ return new Stream(tsplus_module_56.interruptWhenFuture(future)(fa.channel));
1291
1379
  };
1292
1380
  }
1293
1381
  /**
@@ -1448,11 +1536,87 @@ function mapIOLoop(iterator, f, __tsplusTrace) {
1448
1536
  *
1449
1537
  * @note This combinator destroys the chunking structure. It's recommended to use chunkN afterwards.
1450
1538
  *
1451
- * @tsplus pipeable fncts.io.Stream mapIOC
1539
+ * @tsplus pipeable fncts.io.Stream mapIOConcurrently
1452
1540
  */
1453
- export function mapIOC(n, f, __tsplusTrace) {
1541
+ export function mapIOConcurrently(n, f, __tsplusTrace) {
1454
1542
  return stream => {
1455
- 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))));
1544
+ };
1545
+ }
1546
+ /**
1547
+ * @tsplus pipeable fncts.io.Stream mapIOConcurrentlyUnordered
1548
+ */
1549
+ export function mapIOConcurrentlyUnordered(n, f) {
1550
+ return 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));
1456
1620
  };
1457
1621
  }
1458
1622
  /**
@@ -1465,7 +1629,7 @@ export function mapIOC(n, f, __tsplusTrace) {
1465
1629
  */
1466
1630
  function mergeMap_1(f, n, bufferSize = 16, __tsplusTrace) {
1467
1631
  return ma => {
1468
- 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)));
1469
1633
  };
1470
1634
  }
1471
1635
  /**
@@ -1488,15 +1652,15 @@ function mergeEither_1(fb, __tsplusTrace) {
1488
1652
  return mergeWith_1(fb, tsplus_module_18.left, tsplus_module_18.right)(fa);
1489
1653
  };
1490
1654
  }
1491
- export function mergeWithHandler(terminate, __tsplusTrace) {
1492
- 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);
1655
+ function mergeWithHandler(terminate, __tsplusTrace) {
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);
1493
1657
  }
1494
1658
  /**
1495
1659
  * @tsplus pipeable fncts.io.Stream mergeWith
1496
1660
  */
1497
1661
  function mergeWith_1(sb, l, r, strategy = "Both", __tsplusTrace) {
1498
1662
  return sa => {
1499
- 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));
1500
1664
  };
1501
1665
  }
1502
1666
  /**
@@ -1553,7 +1717,7 @@ export function orElseFail(e, __tsplusTrace) {
1553
1717
  * See also Stream#catchAll.
1554
1718
  */
1555
1719
  export function orElseOptional(stream, that, __tsplusTrace) {
1556
- 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);
1557
1721
  }
1558
1722
  /**
1559
1723
  * Succeeds with the specified value if this one fails with a typed error.
@@ -1573,6 +1737,14 @@ function pipeThrough_1(sa, __tsplusTrace) {
1573
1737
  return new Stream(tsplus_module_10.pipeToOrFail(sa.channel)(ma.channel));
1574
1738
  };
1575
1739
  }
1740
+ /**
1741
+ * @tsplus pipeable fncts.io.Stream pipeThroughChannelOrFail
1742
+ */
1743
+ function pipeThroughChannelOrFail_1(channel) {
1744
+ return self => {
1745
+ return new Stream(tsplus_module_10.pipeToOrFail(channel)(self.channel));
1746
+ };
1747
+ }
1576
1748
  /**
1577
1749
  * Provides the stream with its required environment, which eliminates
1578
1750
  * its dependency on `R`.
@@ -1589,7 +1761,7 @@ function provideEnvironment_1(r, __tsplusTrace) {
1589
1761
  */
1590
1762
  function provideLayer_1(layer, __tsplusTrace) {
1591
1763
  return self => {
1592
- 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))));
1593
1765
  };
1594
1766
  }
1595
1767
  /**
@@ -1598,7 +1770,7 @@ function provideLayer_1(layer, __tsplusTrace) {
1598
1770
  export function provideSomeLayer(layer, __tsplusTrace) {
1599
1771
  return self => {
1600
1772
  // @ts-expect-error
1601
- 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);
1602
1774
  };
1603
1775
  }
1604
1776
  class Rechunker {
@@ -1703,7 +1875,7 @@ export function repeatIOChunk(fa, __tsplusTrace) {
1703
1875
  * @tsplus static fncts.io.StreamOps repeatIOChunkMaybe
1704
1876
  */
1705
1877
  function repeatIOChunkMaybe_1(fa, __tsplusTrace) {
1706
- 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);
1707
1879
  }
1708
1880
  /**
1709
1881
  * Runs the sink on the stream to produce either the sink's result or an error.
@@ -1712,7 +1884,7 @@ function repeatIOChunkMaybe_1(fa, __tsplusTrace) {
1712
1884
  */
1713
1885
  function run_1(sink, __tsplusTrace) {
1714
1886
  return stream => {
1715
- 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));
1716
1888
  };
1717
1889
  }
1718
1890
  /**
@@ -1745,9 +1917,9 @@ function runForeachScoped_1(f, __tsplusTrace) {
1745
1917
  *
1746
1918
  * @tsplus pipeable fncts.io.Stream runIntoElementsScoped
1747
1919
  */
1748
- function runIntoElementsScoped_1(queue, __tsplusTrace) {
1920
+ export function runIntoElementsScoped_(queue, __tsplusTrace) {
1749
1921
  return stream => {
1750
- 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)));
1751
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);
1752
1924
  };
1753
1925
  }
@@ -1763,6 +1935,21 @@ function runIntoQueueScoped_1(queue, __tsplusTrace) {
1763
1935
  return tsplus_module_1.asUnit(tsplus_module_16.runScoped(tsplus_module_10.drain(tsplus_module_10.mapOutIO(take => tsplus_module_28.offer(take, __tsplusTrace)(queue))(tsplus_module_10.pipeTo(writer)(stream.channel)))), __tsplusTrace);
1764
1936
  };
1765
1937
  }
1938
+ /**
1939
+ * Like runIntoQueue, but provides the result as a scoped IO
1940
+ * to allow for scope composition.
1941
+ *
1942
+ * @tsplus pipeable fncts.io.Stream runIntoQueueElementsScoped
1943
+ */
1944
+ function runIntoQueueElementsScoped_1(queue) {
1945
+ return self => {
1946
+ return tsplus_module_1.defer(() => {
1947
+ const queue0 = queue();
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");
1951
+ };
1952
+ }
1766
1953
  /**
1767
1954
  * Like `Stream#runIntoHub`, but provides the result as a `Managed` to allow for scope
1768
1955
  * composition.
@@ -1825,7 +2012,34 @@ export function scanReduce(f, __tsplusTrace) {
1825
2012
  */
1826
2013
  function scanReduceIO_1(f, __tsplusTrace) {
1827
2014
  return fa => {
1828
- 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));
1829
2043
  };
1830
2044
  }
1831
2045
  /**
@@ -1866,7 +2080,7 @@ export function take(n, __tsplusTrace) {
1866
2080
  return empty_1;
1867
2081
  }
1868
2082
  if (!Number.isInteger(n)) {
1869
- 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);
1870
2084
  }
1871
2085
  return new Stream(tsplus_module_10.pipeTo(takeLoop(n, __tsplusTrace))(stream.channel));
1872
2086
  };
@@ -1912,11 +2126,58 @@ export function takeUntil(p, __tsplusTrace) {
1912
2126
  /**
1913
2127
  * @tsplus pipeable fncts.io.Stream tap
1914
2128
  */
1915
- export function tap(f, __tsplusTrace) {
2129
+ function tap_1(f, __tsplusTrace) {
1916
2130
  return ma => {
1917
2131
  return mapIO_1(a => tsplus_module_1.as(() => a, __tsplusTrace)(f(a)), __tsplusTrace)(ma);
1918
2132
  };
1919
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
+ }
1920
2181
  /**
1921
2182
  * Throttles the chunks of this stream according to the given bandwidth parameters using the token bucket
1922
2183
  * algorithm. Allows for burst in the processing of elements by allowing the token bucket to accumulate
@@ -1972,7 +2233,7 @@ function toHub_1(capacity, __tsplusTrace) {
1972
2233
  * @tsplus getter fncts.io.Stream toPull
1973
2234
  */
1974
2235
  function toPull_1(stream, __tsplusTrace) {
1975
- 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));
1976
2237
  }
1977
2238
  /**
1978
2239
  * Converts the stream to a managed queue of chunks. After the managed queue is used,
@@ -1998,7 +2259,7 @@ export function toQueueDropping(capacity = 2, __tsplusTrace) {
1998
2259
  */
1999
2260
  function toQueueOfElements_1(capacity = 2, __tsplusTrace) {
2000
2261
  return stream => {
2001
- return tsplus_module_1.flatMap(queue => tsplus_module_1.map(() => queue, __tsplusTrace)(tsplus_module_33.fork(runIntoElementsScoped_1(queue, __tsplusTrace)(stream), __tsplusTrace)), __tsplusTrace)(tsplus_module_31.acquireRelease(() => tsplus_module_30.makeBounded(capacity, __tsplusTrace), _ => tsplus_module_28.shutdown(_, __tsplusTrace), __tsplusTrace));
2262
+ return tsplus_module_1.flatMap(queue => tsplus_module_1.map(() => queue, __tsplusTrace)(tsplus_module_17.forkScoped(runIntoQueueElementsScoped_1(() => queue)(stream), __tsplusTrace)), __tsplusTrace)(tsplus_module_31.acquireRelease(() => tsplus_module_30.makeBounded(capacity, __tsplusTrace), _ => tsplus_module_28.shutdown(_, __tsplusTrace), __tsplusTrace));
2002
2263
  };
2003
2264
  }
2004
2265
  /**