@fncts/io 0.0.20 → 0.0.22

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 (1688) hide show
  1. package/Cached/api.d.ts +2 -2
  2. package/Channel/ChildExecutorDecision/api.d.ts +2 -2
  3. package/Channel/UpstreamPullRequest/api.d.ts +2 -2
  4. package/Channel/api/interruptWhen.d.ts +5 -5
  5. package/Channel/api/mapOutConcurrentIO.d.ts +8 -0
  6. package/Channel/api/mergeAll.d.ts +2 -2
  7. package/Channel/api/mergeAllUnboundedWith.d.ts +2 -2
  8. package/Channel/api/mergeAllWith.d.ts +2 -2
  9. package/Channel/api/mergeMap.d.ts +2 -2
  10. package/Channel/api/mergeWith.d.ts +2 -2
  11. package/Channel/api/zipConcurrent.d.ts +16 -0
  12. package/Channel/api.d.ts +62 -62
  13. package/Channel/core-api.d.ts +11 -11
  14. package/Channel/definition.d.ts +35 -21
  15. package/Channel/internal/SingleProducerAsyncInput.d.ts +1 -1
  16. package/CountdownLatch.d.ts +25 -0
  17. package/Fiber/FiberMessage.d.ts +67 -0
  18. package/Fiber/FiberRuntime.d.ts +116 -0
  19. package/Fiber/api/interrupt.d.ts +1 -1
  20. package/Fiber/api/interruptAs.d.ts +6 -1
  21. package/Fiber/api/location.d.ts +1 -2
  22. package/Fiber/api/mapFiber.d.ts +2 -2
  23. package/Fiber/api/mapIO.d.ts +5 -5
  24. package/Fiber/api/zipWith.d.ts +2 -2
  25. package/Fiber/definition.d.ts +17 -16
  26. package/Fiber.d.ts +2 -3
  27. package/FiberDescriptor.d.ts +3 -6
  28. package/FiberRef/api/locallyScoped.d.ts +2 -2
  29. package/FiberRef/api/locallyScopedWith.d.ts +2 -2
  30. package/FiberRef/api.d.ts +18 -18
  31. package/FiberRef/definition.d.ts +2 -2
  32. package/FiberRef/unsafe.d.ts +5 -0
  33. package/FiberRefs/api.d.ts +30 -2
  34. package/FiberRefs/definition.d.ts +14 -7
  35. package/FiberRefs/join.d.ts +3 -3
  36. package/FiberScope/constructors.d.ts +2 -2
  37. package/FiberScope/definition.d.ts +8 -5
  38. package/FiberStatus/constructors.d.ts +3 -7
  39. package/FiberStatus/definition.d.ts +16 -28
  40. package/Future/api.d.ts +21 -21
  41. package/Hub/api.d.ts +27 -25
  42. package/Hub/definition.d.ts +13 -9
  43. package/IO/api/acquireRelease.d.ts +1 -1
  44. package/IO/api/acquireReleaseExit.d.ts +1 -1
  45. package/IO/api/asyncInterrupt.d.ts +39 -0
  46. package/IO/api/bracket.d.ts +1 -1
  47. package/IO/api/bracketExit.d.ts +1 -1
  48. package/IO/api/concurrency.d.ts +2 -2
  49. package/IO/api/core-scope.d.ts +7 -43
  50. package/IO/api/delay.d.ts +8 -0
  51. package/IO/api/ensuringChildren.d.ts +3 -3
  52. package/IO/api/environment.d.ts +11 -15
  53. package/IO/api/{foreachC.d.ts → foreachConcurrent.d.ts} +8 -8
  54. package/IO/api/foreachExec.d.ts +1 -1
  55. package/IO/api/fork.d.ts +36 -0
  56. package/IO/api/forkIn.d.ts +3 -3
  57. package/IO/api/fulfill.d.ts +3 -3
  58. package/IO/api/interrupt.d.ts +9 -13
  59. package/IO/api/onExit.d.ts +3 -3
  60. package/IO/api/onTermination.d.ts +4 -4
  61. package/IO/api/provideLayer.d.ts +3 -3
  62. package/IO/api/provideSomeLayer.d.ts +3 -7
  63. package/IO/api/race.d.ts +2 -2
  64. package/IO/api/raceFirst.d.ts +2 -2
  65. package/IO/api/repeat.d.ts +3 -3
  66. package/IO/api/retry.d.ts +7 -7
  67. package/IO/api/schedule.d.ts +5 -5
  68. package/IO/api/scoped.d.ts +2 -2
  69. package/IO/api/supervised.d.ts +2 -4
  70. package/IO/api/timeout.d.ts +5 -5
  71. package/IO/api/withFinalizer.d.ts +3 -3
  72. package/IO/api/withFinalizerExit.d.ts +3 -3
  73. package/IO/api/zipConcurrent.d.ts +13 -0
  74. package/IO/api.d.ts +208 -306
  75. package/IO/definition.d.ts +111 -130
  76. package/IO/runtime.d.ts +19 -22
  77. package/IO.d.ts +5 -3
  78. package/Layer/MemoMap.d.ts +5 -5
  79. package/Layer/api.d.ts +28 -28
  80. package/LogLevel.d.ts +12 -12
  81. package/LogSpan.d.ts +2 -2
  82. package/Logger/api.d.ts +5 -5
  83. package/Push/api.d.ts +232 -0
  84. package/Push/definition.d.ts +34 -0
  85. package/Push/internal.d.ts +11 -0
  86. package/Push.d.ts +3 -0
  87. package/Queue/api/dimapIO.d.ts +70 -13
  88. package/Queue/api/filterInputIO.d.ts +12 -20
  89. package/Queue/api/filterOutputIO.d.ts +10 -21
  90. package/Queue/api/operations.d.ts +15 -14
  91. package/Queue/api/poll.d.ts +2 -2
  92. package/Queue/api/takeBetween.d.ts +3 -3
  93. package/Queue/api/zipWithIO.d.ts +7 -24
  94. package/Queue/definition.d.ts +112 -8
  95. package/Queue/internal.d.ts +7 -7
  96. package/Ref/Atomic.d.ts +22 -2
  97. package/Ref/Derived.d.ts +4 -2
  98. package/Ref/DerivedAll.d.ts +7 -3
  99. package/Ref/Synchronized/api.d.ts +31 -29
  100. package/Ref/Synchronized/constructors.d.ts +1 -1
  101. package/Ref/Synchronized/definition.d.ts +6 -4
  102. package/Ref/Synchronized.d.ts +3 -0
  103. package/Ref/api/collect.d.ts +3 -3
  104. package/Ref/api/dimap.d.ts +21 -21
  105. package/Ref/api/filter.d.ts +7 -6
  106. package/Ref/api/get.d.ts +1 -1
  107. package/Ref/api/match.d.ts +3 -3
  108. package/Ref/api/matchAll.d.ts +1 -1
  109. package/Ref/api/modify.d.ts +27 -27
  110. package/Ref/api/set.d.ts +3 -3
  111. package/Ref/constructors.d.ts +1 -1
  112. package/Ref/definition.d.ts +46 -20
  113. package/Ref/symbols.d.ts +30 -0
  114. package/Ref.d.ts +2 -0
  115. package/RefSubject/Atomic.d.ts +36 -0
  116. package/RefSubject/Synchronized/api.d.ts +9 -0
  117. package/RefSubject/Synchronized/definition.d.ts +40 -0
  118. package/RefSubject/api.d.ts +116 -0
  119. package/RefSubject/definition.d.ts +45 -0
  120. package/RefSubject.d.ts +3 -0
  121. package/RuntimeConfig.d.ts +0 -24
  122. package/RuntimeFlag.d.ts +10 -0
  123. package/RuntimeFlags/Patch.d.ts +53 -0
  124. package/RuntimeFlags/RuntimeFlags.d.ts +82 -0
  125. package/RuntimeFlags.d.ts +2 -0
  126. package/STM/api/core-api.d.ts +10 -10
  127. package/STM/api.d.ts +61 -61
  128. package/STM/internal/Journal.d.ts +4 -4
  129. package/Schedule/Decision.d.ts +2 -2
  130. package/Schedule/api.d.ts +121 -105
  131. package/Scope/ReleaseMap/api/releaseAll.d.ts +2 -2
  132. package/Scope/ReleaseMap/api.d.ts +10 -10
  133. package/Scope/ReleaseMap/definition.d.ts +1 -1
  134. package/Scope/api.d.ts +8 -8
  135. package/ScopedRef/api.d.ts +1 -1
  136. package/Sink/api.d.ts +66 -66
  137. package/State/api.d.ts +4 -4
  138. package/State/internal.d.ts +1 -1
  139. package/Stream/api/zipAllWith.d.ts +2 -2
  140. package/Stream/api/zipWith.d.ts +2 -2
  141. package/Stream/api/zipWithChunks.d.ts +2 -2
  142. package/Stream/api.d.ts +217 -205
  143. package/Stream/internal/DebounceState.d.ts +3 -3
  144. package/Stream/internal/Handoff.d.ts +6 -6
  145. package/Stream/internal/SinkEndReason.d.ts +3 -3
  146. package/Stream/internal/Take.d.ts +8 -8
  147. package/Subject/Atomic.d.ts +18 -0
  148. package/Subject/api.d.ts +13 -0
  149. package/Subject/definition.d.ts +15 -0
  150. package/Subject.d.ts +3 -0
  151. package/SubscriptionRef.d.ts +38 -0
  152. package/Supervisor/api.d.ts +4 -4
  153. package/SupervisorPatch.d.ts +4 -4
  154. package/TExit/definition.d.ts +2 -2
  155. package/TFuture/api.d.ts +7 -7
  156. package/TFuture/definition.d.ts +2 -2
  157. package/TReentrantLock/api.d.ts +4 -4
  158. package/TReentrantLock/definition.d.ts +3 -3
  159. package/TRef/api.d.ts +26 -27
  160. package/TRef/constructors.d.ts +6 -6
  161. package/TRef/definition.d.ts +47 -34
  162. package/TRef/symbols.d.ts +20 -0
  163. package/TRef.d.ts +1 -0
  164. package/TSemaphore/api.d.ts +4 -4
  165. package/TSemaphore/constructors.d.ts +6 -0
  166. package/TSemaphore/definition.d.ts +2 -2
  167. package/_cjs/Cached/api.cjs +9 -32
  168. package/_cjs/Cached/api.cjs.map +1 -1
  169. package/_cjs/Cached/definition.cjs +2 -7
  170. package/_cjs/Cached/definition.cjs.map +1 -1
  171. package/_cjs/Cached/internal.cjs +0 -3
  172. package/_cjs/Cached/internal.cjs.map +1 -1
  173. package/_cjs/Cached.cjs +0 -6
  174. package/_cjs/Cached.cjs.map +1 -1
  175. package/_cjs/CancellerState.cjs +3 -22
  176. package/_cjs/CancellerState.cjs.map +1 -1
  177. package/_cjs/Channel/ChildExecutorDecision/api.cjs +19 -20
  178. package/_cjs/Channel/ChildExecutorDecision/api.cjs.map +1 -1
  179. package/_cjs/Channel/ChildExecutorDecision/definition.cjs +0 -5
  180. package/_cjs/Channel/ChildExecutorDecision/definition.cjs.map +1 -1
  181. package/_cjs/Channel/ChildExecutorDecision.cjs +0 -4
  182. package/_cjs/Channel/ChildExecutorDecision.cjs.map +1 -1
  183. package/_cjs/Channel/UpstreamPullRequest/api.cjs +15 -20
  184. package/_cjs/Channel/UpstreamPullRequest/api.cjs.map +1 -1
  185. package/_cjs/Channel/UpstreamPullRequest/definition.cjs +0 -6
  186. package/_cjs/Channel/UpstreamPullRequest/definition.cjs.map +1 -1
  187. package/_cjs/Channel/UpstreamPullRequest.cjs +0 -4
  188. package/_cjs/Channel/UpstreamPullRequest.cjs.map +1 -1
  189. package/_cjs/Channel/UpstreamPullStrategy/definition.cjs +0 -4
  190. package/_cjs/Channel/UpstreamPullStrategy/definition.cjs.map +1 -1
  191. package/_cjs/Channel/UpstreamPullStrategy.cjs +0 -2
  192. package/_cjs/Channel/UpstreamPullStrategy.cjs.map +1 -1
  193. package/_cjs/Channel/api/interruptWhen.cjs +14 -22
  194. package/_cjs/Channel/api/interruptWhen.cjs.map +1 -1
  195. package/_cjs/Channel/api/mapOutConcurrentIO.cjs +42 -0
  196. package/_cjs/Channel/api/mapOutConcurrentIO.cjs.map +1 -0
  197. package/_cjs/Channel/api/mergeAll.cjs +6 -8
  198. package/_cjs/Channel/api/mergeAll.cjs.map +1 -1
  199. package/_cjs/Channel/api/mergeAllUnboundedWith.cjs +6 -8
  200. package/_cjs/Channel/api/mergeAllUnboundedWith.cjs.map +1 -1
  201. package/_cjs/Channel/api/mergeAllWith.cjs +40 -71
  202. package/_cjs/Channel/api/mergeAllWith.cjs.map +1 -1
  203. package/_cjs/Channel/api/mergeMap.cjs +6 -9
  204. package/_cjs/Channel/api/mergeMap.cjs.map +1 -1
  205. package/_cjs/Channel/api/mergeWith.cjs +35 -67
  206. package/_cjs/Channel/api/mergeWith.cjs.map +1 -1
  207. package/_cjs/Channel/api/run.cjs +1 -7
  208. package/_cjs/Channel/api/run.cjs.map +1 -1
  209. package/_cjs/Channel/api/runCollect.cjs +0 -5
  210. package/_cjs/Channel/api/runCollect.cjs.map +1 -1
  211. package/_cjs/Channel/api/runDrain.cjs +0 -5
  212. package/_cjs/Channel/api/runDrain.cjs.map +1 -1
  213. package/_cjs/Channel/api/runScoped.cjs +6 -28
  214. package/_cjs/Channel/api/runScoped.cjs.map +1 -1
  215. package/_cjs/Channel/api/toPull.cjs +7 -29
  216. package/_cjs/Channel/api/toPull.cjs.map +1 -1
  217. package/_cjs/Channel/api/{zipC.cjs → zipConcurrent.cjs} +22 -30
  218. package/_cjs/Channel/api/zipConcurrent.cjs.map +1 -0
  219. package/_cjs/Channel/api.cjs +242 -367
  220. package/_cjs/Channel/api.cjs.map +1 -1
  221. package/_cjs/Channel/core-api.cjs +34 -48
  222. package/_cjs/Channel/core-api.cjs.map +1 -1
  223. package/_cjs/Channel/definition.cjs +20 -106
  224. package/_cjs/Channel/definition.cjs.map +1 -1
  225. package/_cjs/Channel/internal/ChannelExecutor.cjs +161 -371
  226. package/_cjs/Channel/internal/ChannelExecutor.cjs.map +1 -1
  227. package/_cjs/Channel/internal/ChannelState.cjs +5 -37
  228. package/_cjs/Channel/internal/ChannelState.cjs.map +1 -1
  229. package/_cjs/Channel/internal/MergeDecision.cjs +4 -27
  230. package/_cjs/Channel/internal/MergeDecision.cjs.map +1 -1
  231. package/_cjs/Channel/internal/MergeState.cjs +3 -24
  232. package/_cjs/Channel/internal/MergeState.cjs.map +1 -1
  233. package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs +37 -131
  234. package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs.map +1 -1
  235. package/_cjs/Channel.cjs +0 -6
  236. package/_cjs/Channel.cjs.map +1 -1
  237. package/_cjs/Clock/api.cjs +0 -7
  238. package/_cjs/Clock/api.cjs.map +1 -1
  239. package/_cjs/Clock/definition.cjs +0 -6
  240. package/_cjs/Clock/definition.cjs.map +1 -1
  241. package/_cjs/Clock/live.cjs +2 -12
  242. package/_cjs/Clock/live.cjs.map +1 -1
  243. package/_cjs/Clock.cjs +0 -6
  244. package/_cjs/Clock.cjs.map +1 -1
  245. package/_cjs/Console/api.cjs +0 -7
  246. package/_cjs/Console/api.cjs.map +1 -1
  247. package/_cjs/Console/definition.cjs +0 -6
  248. package/_cjs/Console/definition.cjs.map +1 -1
  249. package/_cjs/Console/live.cjs +0 -11
  250. package/_cjs/Console/live.cjs.map +1 -1
  251. package/_cjs/Console.cjs +0 -6
  252. package/_cjs/Console.cjs.map +1 -1
  253. package/_cjs/CountdownLatch.cjs +50 -0
  254. package/_cjs/CountdownLatch.cjs.map +1 -0
  255. package/_cjs/Differ/api.cjs +5 -28
  256. package/_cjs/Differ/api.cjs.map +1 -1
  257. package/_cjs/Differ/definition.cjs +0 -4
  258. package/_cjs/Differ/definition.cjs.map +1 -1
  259. package/_cjs/Fiber/FiberMessage.cjs +72 -0
  260. package/_cjs/Fiber/FiberMessage.cjs.map +1 -0
  261. package/_cjs/Fiber/FiberRuntime.cjs +735 -0
  262. package/_cjs/Fiber/FiberRuntime.cjs.map +1 -0
  263. package/_cjs/Fiber/api/await.cjs +0 -1
  264. package/_cjs/Fiber/api/await.cjs.map +1 -1
  265. package/_cjs/Fiber/api/awaitAll.cjs +2 -8
  266. package/_cjs/Fiber/api/awaitAll.cjs.map +1 -1
  267. package/_cjs/Fiber/api/children.cjs +0 -1
  268. package/_cjs/Fiber/api/children.cjs.map +1 -1
  269. package/_cjs/Fiber/api/collectAll.cjs +3 -25
  270. package/_cjs/Fiber/api/collectAll.cjs.map +1 -1
  271. package/_cjs/Fiber/api/fromIO.cjs +1 -6
  272. package/_cjs/Fiber/api/fromIO.cjs.map +1 -1
  273. package/_cjs/Fiber/api/id.cjs +0 -1
  274. package/_cjs/Fiber/api/id.cjs.map +1 -1
  275. package/_cjs/Fiber/api/inheritRefs.cjs +1 -2
  276. package/_cjs/Fiber/api/inheritRefs.cjs.map +1 -1
  277. package/_cjs/Fiber/api/interrupt.cjs +3 -8
  278. package/_cjs/Fiber/api/interrupt.cjs.map +1 -1
  279. package/_cjs/Fiber/api/interruptAll.cjs +3 -13
  280. package/_cjs/Fiber/api/interruptAll.cjs.map +1 -1
  281. package/_cjs/Fiber/api/interruptAs.cjs +15 -8
  282. package/_cjs/Fiber/api/interruptAs.cjs.map +1 -1
  283. package/_cjs/Fiber/api/interruptFork.cjs +2 -9
  284. package/_cjs/Fiber/api/interruptFork.cjs.map +1 -1
  285. package/_cjs/Fiber/api/join.cjs +3 -6
  286. package/_cjs/Fiber/api/join.cjs.map +1 -1
  287. package/_cjs/Fiber/api/joinAll.cjs +1 -7
  288. package/_cjs/Fiber/api/joinAll.cjs.map +1 -1
  289. package/_cjs/Fiber/api/location.cjs +1 -8
  290. package/_cjs/Fiber/api/location.cjs.map +1 -1
  291. package/_cjs/Fiber/api/mapFiber.cjs +6 -11
  292. package/_cjs/Fiber/api/mapFiber.cjs.map +1 -1
  293. package/_cjs/Fiber/api/mapIO.cjs +14 -27
  294. package/_cjs/Fiber/api/mapIO.cjs.map +1 -1
  295. package/_cjs/Fiber/api/poll.cjs +0 -1
  296. package/_cjs/Fiber/api/poll.cjs.map +1 -1
  297. package/_cjs/Fiber/api/zipWith.cjs +7 -21
  298. package/_cjs/Fiber/api/zipWith.cjs.map +1 -1
  299. package/_cjs/Fiber/constructors.cjs +0 -18
  300. package/_cjs/Fiber/constructors.cjs.map +1 -1
  301. package/_cjs/Fiber/definition.cjs +11 -14
  302. package/_cjs/Fiber/definition.cjs.map +1 -1
  303. package/_cjs/Fiber.cjs +15 -72
  304. package/_cjs/Fiber.cjs.map +1 -1
  305. package/_cjs/FiberDescriptor.cjs +1 -6
  306. package/_cjs/FiberDescriptor.cjs.map +1 -1
  307. package/_cjs/FiberRef/api/locallyScoped.cjs +6 -10
  308. package/_cjs/FiberRef/api/locallyScoped.cjs.map +1 -1
  309. package/_cjs/FiberRef/api/locallyScopedWith.cjs +5 -8
  310. package/_cjs/FiberRef/api/locallyScopedWith.cjs.map +1 -1
  311. package/_cjs/FiberRef/api.cjs +78 -97
  312. package/_cjs/FiberRef/api.cjs.map +1 -1
  313. package/_cjs/FiberRef/constructors.cjs +1 -11
  314. package/_cjs/FiberRef/constructors.cjs.map +1 -1
  315. package/_cjs/FiberRef/definition.cjs +5 -23
  316. package/_cjs/FiberRef/definition.cjs.map +1 -1
  317. package/_cjs/FiberRef/unsafe.cjs +20 -48
  318. package/_cjs/FiberRef/unsafe.cjs.map +1 -1
  319. package/_cjs/FiberRef.cjs +0 -12
  320. package/_cjs/FiberRef.cjs.map +1 -1
  321. package/_cjs/FiberRefs/api.cjs +74 -32
  322. package/_cjs/FiberRefs/api.cjs.map +1 -1
  323. package/_cjs/FiberRefs/definition.cjs +5 -17
  324. package/_cjs/FiberRefs/definition.cjs.map +1 -1
  325. package/_cjs/FiberRefs/join.cjs +51 -71
  326. package/_cjs/FiberRefs/join.cjs.map +1 -1
  327. package/_cjs/FiberRefs.cjs +0 -6
  328. package/_cjs/FiberRefs.cjs.map +1 -1
  329. package/_cjs/FiberScope/constructors.cjs +0 -4
  330. package/_cjs/FiberScope/constructors.cjs.map +1 -1
  331. package/_cjs/FiberScope/definition.cjs +15 -20
  332. package/_cjs/FiberScope/definition.cjs.map +1 -1
  333. package/_cjs/FiberScope.cjs +0 -4
  334. package/_cjs/FiberScope.cjs.map +1 -1
  335. package/_cjs/FiberStatus/constructors.cjs +5 -20
  336. package/_cjs/FiberStatus/constructors.cjs.map +1 -1
  337. package/_cjs/FiberStatus/definition.cjs +18 -77
  338. package/_cjs/FiberStatus/definition.cjs.map +1 -1
  339. package/_cjs/FiberStatus.cjs +0 -4
  340. package/_cjs/FiberStatus.cjs.map +1 -1
  341. package/_cjs/Future/api.cjs +99 -141
  342. package/_cjs/Future/api.cjs.map +1 -1
  343. package/_cjs/Future/constructors.cjs +1 -12
  344. package/_cjs/Future/constructors.cjs.map +1 -1
  345. package/_cjs/Future/definition.cjs +2 -15
  346. package/_cjs/Future/definition.cjs.map +1 -1
  347. package/_cjs/Future.cjs +0 -6
  348. package/_cjs/Future.cjs.map +1 -1
  349. package/_cjs/Hub/api.cjs +112 -172
  350. package/_cjs/Hub/api.cjs.map +1 -1
  351. package/_cjs/Hub/definition.cjs +14 -7
  352. package/_cjs/Hub/definition.cjs.map +1 -1
  353. package/_cjs/Hub/internal.cjs +30 -122
  354. package/_cjs/Hub/internal.cjs.map +1 -1
  355. package/_cjs/Hub.cjs +0 -4
  356. package/_cjs/Hub.cjs.map +1 -1
  357. package/_cjs/IO/api/acquireRelease.cjs +0 -4
  358. package/_cjs/IO/api/acquireRelease.cjs.map +1 -1
  359. package/_cjs/IO/api/acquireReleaseExit.cjs +1 -7
  360. package/_cjs/IO/api/acquireReleaseExit.cjs.map +1 -1
  361. package/_cjs/IO/api/acquireReleaseInterruptible.cjs +0 -4
  362. package/_cjs/IO/api/acquireReleaseInterruptible.cjs.map +1 -1
  363. package/_cjs/IO/api/acquireReleaseInterruptibleExit.cjs +2 -6
  364. package/_cjs/IO/api/acquireReleaseInterruptibleExit.cjs.map +1 -1
  365. package/_cjs/IO/api/addFinalizer.cjs +0 -4
  366. package/_cjs/IO/api/addFinalizer.cjs.map +1 -1
  367. package/_cjs/IO/api/addFinalizerExit.cjs +1 -8
  368. package/_cjs/IO/api/addFinalizerExit.cjs.map +1 -1
  369. package/_cjs/IO/api/asyncIO.cjs +8 -16
  370. package/_cjs/IO/api/asyncIO.cjs.map +1 -1
  371. package/_cjs/IO/api/asyncInterrupt.cjs +77 -0
  372. package/_cjs/IO/api/asyncInterrupt.cjs.map +1 -0
  373. package/_cjs/IO/api/bracket.cjs +3 -7
  374. package/_cjs/IO/api/bracket.cjs.map +1 -1
  375. package/_cjs/IO/api/bracketExit.cjs +3 -10
  376. package/_cjs/IO/api/bracketExit.cjs.map +1 -1
  377. package/_cjs/IO/api/clockWith.cjs +2 -14
  378. package/_cjs/IO/api/clockWith.cjs.map +1 -1
  379. package/_cjs/IO/api/concurrency.cjs +9 -22
  380. package/_cjs/IO/api/concurrency.cjs.map +1 -1
  381. package/_cjs/IO/api/concurrentFinalizers.cjs +1 -8
  382. package/_cjs/IO/api/concurrentFinalizers.cjs.map +1 -1
  383. package/_cjs/IO/api/consoleWith.cjs +2 -14
  384. package/_cjs/IO/api/consoleWith.cjs.map +1 -1
  385. package/_cjs/IO/api/core-scope.cjs +60 -126
  386. package/_cjs/IO/api/core-scope.cjs.map +1 -1
  387. package/_cjs/{Fiber/api/evalOn.cjs → IO/api/delay.cjs} +10 -18
  388. package/_cjs/IO/api/delay.cjs.map +1 -0
  389. package/_cjs/IO/api/ensuringChildren.cjs +7 -10
  390. package/_cjs/IO/api/ensuringChildren.cjs.map +1 -1
  391. package/_cjs/IO/api/environment.cjs +35 -64
  392. package/_cjs/IO/api/environment.cjs.map +1 -1
  393. package/_cjs/IO/api/{foreachC.cjs → foreachConcurrent.cjs} +36 -73
  394. package/_cjs/IO/api/foreachConcurrent.cjs.map +1 -0
  395. package/_cjs/IO/api/foreachExec.cjs +4 -11
  396. package/_cjs/IO/api/foreachExec.cjs.map +1 -1
  397. package/_cjs/IO/api/fork.cjs +75 -0
  398. package/_cjs/IO/api/fork.cjs.map +1 -0
  399. package/_cjs/IO/api/forkAll.cjs +3 -7
  400. package/_cjs/IO/api/forkAll.cjs.map +1 -1
  401. package/_cjs/IO/api/forkIn.cjs +8 -14
  402. package/_cjs/IO/api/forkIn.cjs.map +1 -1
  403. package/_cjs/IO/api/forkScoped.cjs +1 -9
  404. package/_cjs/IO/api/forkScoped.cjs.map +1 -1
  405. package/_cjs/IO/api/fulfill.cjs +8 -12
  406. package/_cjs/IO/api/fulfill.cjs.map +1 -1
  407. package/_cjs/IO/api/interrupt.cjs +51 -77
  408. package/_cjs/IO/api/interrupt.cjs.map +1 -1
  409. package/_cjs/IO/api/memoize.cjs +1 -8
  410. package/_cjs/IO/api/memoize.cjs.map +1 -1
  411. package/_cjs/IO/api/onExit.cjs +6 -9
  412. package/_cjs/IO/api/onExit.cjs.map +1 -1
  413. package/_cjs/IO/api/onTermination.cjs +5 -11
  414. package/_cjs/IO/api/onTermination.cjs.map +1 -1
  415. package/_cjs/IO/api/once.cjs +1 -7
  416. package/_cjs/IO/api/once.cjs.map +1 -1
  417. package/_cjs/IO/api/provideLayer.cjs +6 -12
  418. package/_cjs/IO/api/provideLayer.cjs.map +1 -1
  419. package/_cjs/IO/api/provideSomeLayer.cjs +5 -20
  420. package/_cjs/IO/api/provideSomeLayer.cjs.map +1 -1
  421. package/_cjs/IO/api/race.cjs +8 -17
  422. package/_cjs/IO/api/race.cjs.map +1 -1
  423. package/_cjs/IO/api/raceFirst.cjs +6 -9
  424. package/_cjs/IO/api/raceFirst.cjs.map +1 -1
  425. package/_cjs/IO/api/randomWith.cjs +1 -13
  426. package/_cjs/IO/api/randomWith.cjs.map +1 -1
  427. package/_cjs/IO/api/repeat.cjs +12 -27
  428. package/_cjs/IO/api/repeat.cjs.map +1 -1
  429. package/_cjs/IO/api/retry.cjs +14 -29
  430. package/_cjs/IO/api/retry.cjs.map +1 -1
  431. package/_cjs/IO/api/schedule.cjs +15 -21
  432. package/_cjs/IO/api/schedule.cjs.map +1 -1
  433. package/_cjs/IO/api/scope.cjs +0 -6
  434. package/_cjs/IO/api/scope.cjs.map +1 -1
  435. package/_cjs/IO/api/scopeWith.cjs +0 -5
  436. package/_cjs/IO/api/scopeWith.cjs.map +1 -1
  437. package/_cjs/IO/api/scoped.cjs +6 -15
  438. package/_cjs/IO/api/scoped.cjs.map +1 -1
  439. package/_cjs/IO/api/sequenceT.cjs +1 -7
  440. package/_cjs/IO/api/sequenceT.cjs.map +1 -1
  441. package/_cjs/IO/api/sleep.cjs +0 -4
  442. package/_cjs/IO/api/sleep.cjs.map +1 -1
  443. package/_cjs/IO/api/stateful.cjs +0 -6
  444. package/_cjs/IO/api/stateful.cjs.map +1 -1
  445. package/_cjs/IO/api/supervised.cjs +6 -14
  446. package/_cjs/IO/api/supervised.cjs.map +1 -1
  447. package/_cjs/IO/api/timeout.cjs +10 -18
  448. package/_cjs/IO/api/timeout.cjs.map +1 -1
  449. package/_cjs/IO/api/withChildren.cjs +2 -10
  450. package/_cjs/IO/api/withChildren.cjs.map +1 -1
  451. package/_cjs/IO/api/withEarlyRelease.cjs +1 -8
  452. package/_cjs/IO/api/withEarlyRelease.cjs.map +1 -1
  453. package/_cjs/IO/api/withFinalizer.cjs +6 -8
  454. package/_cjs/IO/api/withFinalizer.cjs.map +1 -1
  455. package/_cjs/IO/api/withFinalizerExit.cjs +6 -8
  456. package/_cjs/IO/api/withFinalizerExit.cjs.map +1 -1
  457. package/_cjs/IO/api/zipConcurrent.cjs +51 -0
  458. package/_cjs/IO/api/zipConcurrent.cjs.map +1 -0
  459. package/_cjs/IO/api.cjs +669 -1057
  460. package/_cjs/IO/api.cjs.map +1 -1
  461. package/_cjs/IO/definition.cjs +121 -213
  462. package/_cjs/IO/definition.cjs.map +1 -1
  463. package/_cjs/IO/runtime.cjs +51 -119
  464. package/_cjs/IO/runtime.cjs.map +1 -1
  465. package/_cjs/IO.cjs +41 -123
  466. package/_cjs/IO.cjs.map +1 -1
  467. package/_cjs/IOEnv/definition.cjs +1 -12
  468. package/_cjs/IOEnv/definition.cjs.map +1 -1
  469. package/_cjs/IOEnv/live.cjs +1 -12
  470. package/_cjs/IOEnv/live.cjs.map +1 -1
  471. package/_cjs/IOEnv/services.cjs +0 -5
  472. package/_cjs/IOEnv/services.cjs.map +1 -1
  473. package/_cjs/IOEnv.cjs +0 -6
  474. package/_cjs/IOEnv.cjs.map +1 -1
  475. package/_cjs/InterruptStatus/constructors.cjs +0 -5
  476. package/_cjs/InterruptStatus/constructors.cjs.map +1 -1
  477. package/_cjs/InterruptStatus/definition.cjs +0 -5
  478. package/_cjs/InterruptStatus/definition.cjs.map +1 -1
  479. package/_cjs/InterruptStatus.cjs +0 -4
  480. package/_cjs/InterruptStatus.cjs.map +1 -1
  481. package/_cjs/Layer/MemoMap.cjs +54 -111
  482. package/_cjs/Layer/MemoMap.cjs.map +1 -1
  483. package/_cjs/Layer/api.cjs +112 -184
  484. package/_cjs/Layer/api.cjs.map +1 -1
  485. package/_cjs/Layer/definition.cjs +9 -51
  486. package/_cjs/Layer/definition.cjs.map +1 -1
  487. package/_cjs/Layer.cjs +0 -6
  488. package/_cjs/Layer.cjs.map +1 -1
  489. package/_cjs/LogLevel.cjs +24 -36
  490. package/_cjs/LogLevel.cjs.map +1 -1
  491. package/_cjs/LogSpan.cjs +16 -21
  492. package/_cjs/LogSpan.cjs.map +1 -1
  493. package/_cjs/Logger/api.cjs +18 -21
  494. package/_cjs/Logger/api.cjs.map +1 -1
  495. package/_cjs/Logger/constructors.cjs +3 -18
  496. package/_cjs/Logger/constructors.cjs.map +1 -1
  497. package/_cjs/Logger/definition.cjs +0 -3
  498. package/_cjs/Logger/definition.cjs.map +1 -1
  499. package/_cjs/Logger.cjs +0 -6
  500. package/_cjs/Logger.cjs.map +1 -1
  501. package/_cjs/Push/api.cjs +474 -0
  502. package/_cjs/Push/api.cjs.map +1 -0
  503. package/_cjs/Push/definition.cjs +43 -0
  504. package/_cjs/Push/definition.cjs.map +1 -0
  505. package/_cjs/Push/internal.cjs +40 -0
  506. package/_cjs/Push/internal.cjs.map +1 -0
  507. package/_cjs/Push.cjs +39 -0
  508. package/_cjs/Push.cjs.map +1 -0
  509. package/_cjs/Queue/api/dimapIO.cjs +109 -55
  510. package/_cjs/Queue/api/dimapIO.cjs.map +1 -1
  511. package/_cjs/Queue/api/filterInputIO.cjs +61 -36
  512. package/_cjs/Queue/api/filterInputIO.cjs.map +1 -1
  513. package/_cjs/Queue/api/filterOutputIO.cjs +72 -44
  514. package/_cjs/Queue/api/filterOutputIO.cjs.map +1 -1
  515. package/_cjs/Queue/api/operations.cjs +21 -35
  516. package/_cjs/Queue/api/operations.cjs.map +1 -1
  517. package/_cjs/Queue/api/poll.cjs +1 -7
  518. package/_cjs/Queue/api/poll.cjs.map +1 -1
  519. package/_cjs/Queue/api/takeBetween.cjs +24 -34
  520. package/_cjs/Queue/api/takeBetween.cjs.map +1 -1
  521. package/_cjs/Queue/api/zipWithIO.cjs +33 -48
  522. package/_cjs/Queue/api/zipWithIO.cjs.map +1 -1
  523. package/_cjs/Queue/api.cjs +0 -14
  524. package/_cjs/Queue/api.cjs.map +1 -1
  525. package/_cjs/Queue/constructors.cjs +4 -17
  526. package/_cjs/Queue/constructors.cjs.map +1 -1
  527. package/_cjs/Queue/definition.cjs +18 -11
  528. package/_cjs/Queue/definition.cjs.map +1 -1
  529. package/_cjs/Queue/internal.cjs +63 -117
  530. package/_cjs/Queue/internal.cjs.map +1 -1
  531. package/_cjs/Queue/strategy.cjs +27 -68
  532. package/_cjs/Queue/strategy.cjs.map +1 -1
  533. package/_cjs/Queue.cjs +0 -10
  534. package/_cjs/Queue.cjs.map +1 -1
  535. package/_cjs/Random/api.cjs +0 -17
  536. package/_cjs/Random/api.cjs.map +1 -1
  537. package/_cjs/Random/definition.cjs +0 -7
  538. package/_cjs/Random/definition.cjs.map +1 -1
  539. package/_cjs/Random/live.cjs +2 -16
  540. package/_cjs/Random/live.cjs.map +1 -1
  541. package/_cjs/Random.cjs +0 -6
  542. package/_cjs/Random.cjs.map +1 -1
  543. package/_cjs/Ref/Atomic.cjs +54 -26
  544. package/_cjs/Ref/Atomic.cjs.map +1 -1
  545. package/_cjs/Ref/Derived.cjs +11 -20
  546. package/_cjs/Ref/Derived.cjs.map +1 -1
  547. package/_cjs/Ref/DerivedAll.cjs +17 -23
  548. package/_cjs/Ref/DerivedAll.cjs.map +1 -1
  549. package/_cjs/Ref/Synchronized/api.cjs +99 -103
  550. package/_cjs/Ref/Synchronized/api.cjs.map +1 -1
  551. package/_cjs/Ref/Synchronized/constructors.cjs +1 -11
  552. package/_cjs/Ref/Synchronized/constructors.cjs.map +1 -1
  553. package/_cjs/Ref/Synchronized/definition.cjs +16 -39
  554. package/_cjs/Ref/Synchronized/definition.cjs.map +1 -1
  555. package/_cjs/{FiberState.cjs → Ref/Synchronized.cjs} +4 -10
  556. package/_cjs/Ref/Synchronized.cjs.map +1 -0
  557. package/_cjs/Ref/api/collect.cjs +7 -12
  558. package/_cjs/Ref/api/collect.cjs.map +1 -1
  559. package/_cjs/Ref/api/dimap.cjs +55 -60
  560. package/_cjs/Ref/api/dimap.cjs.map +1 -1
  561. package/_cjs/Ref/api/filter.cjs +14 -19
  562. package/_cjs/Ref/api/filter.cjs.map +1 -1
  563. package/_cjs/Ref/api/get.cjs +0 -2
  564. package/_cjs/Ref/api/get.cjs.map +1 -1
  565. package/_cjs/Ref/api/match.cjs +8 -10
  566. package/_cjs/Ref/api/match.cjs.map +1 -1
  567. package/_cjs/Ref/api/matchAll.cjs +6 -8
  568. package/_cjs/Ref/api/matchAll.cjs.map +1 -1
  569. package/_cjs/Ref/api/modify.cjs +73 -171
  570. package/_cjs/Ref/api/modify.cjs.map +1 -1
  571. package/_cjs/Ref/api/set.cjs +8 -8
  572. package/_cjs/Ref/api/set.cjs.map +1 -1
  573. package/_cjs/Ref/api.cjs +2 -26
  574. package/_cjs/Ref/api.cjs.map +1 -1
  575. package/_cjs/Ref/constructors.cjs +2 -9
  576. package/_cjs/Ref/constructors.cjs.map +1 -1
  577. package/_cjs/Ref/definition.cjs +11 -7
  578. package/_cjs/Ref/definition.cjs.map +1 -1
  579. package/_cjs/Ref/symbols.cjs +37 -0
  580. package/_cjs/Ref/symbols.cjs.map +1 -0
  581. package/_cjs/Ref.cjs +22 -18
  582. package/_cjs/Ref.cjs.map +1 -1
  583. package/_cjs/RefSubject/Atomic.cjs +109 -0
  584. package/_cjs/RefSubject/Atomic.cjs.map +1 -0
  585. package/_cjs/{FiberState/constructors.cjs → RefSubject/Synchronized/api.cjs} +13 -34
  586. package/_cjs/RefSubject/Synchronized/api.cjs.map +1 -0
  587. package/_cjs/RefSubject/Synchronized/definition.cjs +56 -0
  588. package/_cjs/RefSubject/Synchronized/definition.cjs.map +1 -0
  589. package/_cjs/RefSubject/api.cjs +245 -0
  590. package/_cjs/RefSubject/api.cjs.map +1 -0
  591. package/_cjs/{FiberState/api.cjs → RefSubject/definition.cjs} +12 -16
  592. package/_cjs/RefSubject/definition.cjs.map +1 -0
  593. package/_cjs/RefSubject.cjs +39 -0
  594. package/_cjs/RefSubject.cjs.map +1 -0
  595. package/_cjs/Reloadable/api.cjs +3 -18
  596. package/_cjs/Reloadable/api.cjs.map +1 -1
  597. package/_cjs/Reloadable/constructors.cjs +14 -41
  598. package/_cjs/Reloadable/constructors.cjs.map +1 -1
  599. package/_cjs/Reloadable/definition.cjs +0 -14
  600. package/_cjs/Reloadable/definition.cjs.map +1 -1
  601. package/_cjs/Reloadable.cjs +0 -6
  602. package/_cjs/Reloadable.cjs.map +1 -1
  603. package/_cjs/RuntimeConfig.cjs +1 -44
  604. package/_cjs/RuntimeConfig.cjs.map +1 -1
  605. package/_cjs/RuntimeFlag.cjs +6 -0
  606. package/_cjs/RuntimeFlag.cjs.map +1 -0
  607. package/_cjs/RuntimeFlags/Patch.cjs +76 -0
  608. package/_cjs/RuntimeFlags/Patch.cjs.map +1 -0
  609. package/_cjs/RuntimeFlags/RuntimeFlags.cjs +107 -0
  610. package/_cjs/RuntimeFlags/RuntimeFlags.cjs.map +1 -0
  611. package/_cjs/RuntimeFlags.cjs +28 -0
  612. package/_cjs/RuntimeFlags.cjs.map +1 -0
  613. package/_cjs/STM/api/core-api.cjs +36 -42
  614. package/_cjs/STM/api/core-api.cjs.map +1 -1
  615. package/_cjs/STM/api/core-constructors.cjs +0 -15
  616. package/_cjs/STM/api/core-constructors.cjs.map +1 -1
  617. package/_cjs/STM/api.cjs +218 -302
  618. package/_cjs/STM/api.cjs.map +1 -1
  619. package/_cjs/STM/definition.cjs +9 -72
  620. package/_cjs/STM/definition.cjs.map +1 -1
  621. package/_cjs/STM/driver.cjs +12 -65
  622. package/_cjs/STM/driver.cjs.map +1 -1
  623. package/_cjs/STM/internal/CommitState.cjs +5 -32
  624. package/_cjs/STM/internal/CommitState.cjs.map +1 -1
  625. package/_cjs/STM/internal/Entry.cjs +0 -20
  626. package/_cjs/STM/internal/Entry.cjs.map +1 -1
  627. package/_cjs/STM/internal/Journal.cjs +50 -142
  628. package/_cjs/STM/internal/Journal.cjs.map +1 -1
  629. package/_cjs/STM/internal/TryCommit.cjs +2 -12
  630. package/_cjs/STM/internal/TryCommit.cjs.map +1 -1
  631. package/_cjs/STM/internal/Versioned.cjs +0 -3
  632. package/_cjs/STM/internal/Versioned.cjs.map +1 -1
  633. package/_cjs/STM.cjs +0 -10
  634. package/_cjs/STM.cjs.map +1 -1
  635. package/_cjs/Schedule/Decision.cjs +13 -37
  636. package/_cjs/Schedule/Decision.cjs.map +1 -1
  637. package/_cjs/Schedule/Driver.cjs +0 -5
  638. package/_cjs/Schedule/Driver.cjs.map +1 -1
  639. package/_cjs/Schedule/api/driver.cjs +6 -22
  640. package/_cjs/Schedule/api/driver.cjs.map +1 -1
  641. package/_cjs/Schedule/api.cjs +440 -492
  642. package/_cjs/Schedule/api.cjs.map +1 -1
  643. package/_cjs/Schedule/definition.cjs +0 -2
  644. package/_cjs/Schedule/definition.cjs.map +1 -1
  645. package/_cjs/Schedule.cjs +0 -8
  646. package/_cjs/Schedule.cjs.map +1 -1
  647. package/_cjs/Scope/Finalizer/definition.cjs +0 -6
  648. package/_cjs/Scope/Finalizer/definition.cjs.map +1 -1
  649. package/_cjs/Scope/Finalizer.cjs +0 -2
  650. package/_cjs/Scope/Finalizer.cjs.map +1 -1
  651. package/_cjs/Scope/ReleaseMap/api/releaseAll.cjs +13 -24
  652. package/_cjs/Scope/ReleaseMap/api/releaseAll.cjs.map +1 -1
  653. package/_cjs/Scope/ReleaseMap/api.cjs +65 -79
  654. package/_cjs/Scope/ReleaseMap/api.cjs.map +1 -1
  655. package/_cjs/Scope/ReleaseMap/constructors.cjs +1 -12
  656. package/_cjs/Scope/ReleaseMap/constructors.cjs.map +1 -1
  657. package/_cjs/Scope/ReleaseMap/definition.cjs +0 -9
  658. package/_cjs/Scope/ReleaseMap/definition.cjs.map +1 -1
  659. package/_cjs/Scope/ReleaseMap.cjs +0 -6
  660. package/_cjs/Scope/ReleaseMap.cjs.map +1 -1
  661. package/_cjs/Scope/api.cjs +34 -69
  662. package/_cjs/Scope/api.cjs.map +1 -1
  663. package/_cjs/Scope/definition.cjs +0 -12
  664. package/_cjs/Scope/definition.cjs.map +1 -1
  665. package/_cjs/Scope.cjs +0 -4
  666. package/_cjs/Scope.cjs.map +1 -1
  667. package/_cjs/ScopedRef/api.cjs +7 -26
  668. package/_cjs/ScopedRef/api.cjs.map +1 -1
  669. package/_cjs/ScopedRef/definition.cjs +1 -5
  670. package/_cjs/ScopedRef/definition.cjs.map +1 -1
  671. package/_cjs/ScopedRef.cjs +0 -4
  672. package/_cjs/ScopedRef.cjs.map +1 -1
  673. package/_cjs/Sink/api.cjs +292 -484
  674. package/_cjs/Sink/api.cjs.map +1 -1
  675. package/_cjs/Sink/definition.cjs +0 -3
  676. package/_cjs/Sink/definition.cjs.map +1 -1
  677. package/_cjs/Sink.cjs +0 -4
  678. package/_cjs/Sink.cjs.map +1 -1
  679. package/_cjs/State/api.cjs +18 -32
  680. package/_cjs/State/api.cjs.map +1 -1
  681. package/_cjs/State/definition.cjs +2 -7
  682. package/_cjs/State/definition.cjs.map +1 -1
  683. package/_cjs/State/internal.cjs +0 -3
  684. package/_cjs/State/internal.cjs.map +1 -1
  685. package/_cjs/State.cjs +0 -4
  686. package/_cjs/State.cjs.map +1 -1
  687. package/_cjs/Stream/api/zipAllWith.cjs +16 -43
  688. package/_cjs/Stream/api/zipAllWith.cjs.map +1 -1
  689. package/_cjs/Stream/api/zipWith.cjs +6 -9
  690. package/_cjs/Stream/api/zipWith.cjs.map +1 -1
  691. package/_cjs/Stream/api/zipWithChunks.cjs +14 -32
  692. package/_cjs/Stream/api/zipWithChunks.cjs.map +1 -1
  693. package/_cjs/Stream/api.cjs +961 -1205
  694. package/_cjs/Stream/api.cjs.map +1 -1
  695. package/_cjs/Stream/definition.cjs +0 -8
  696. package/_cjs/Stream/definition.cjs.map +1 -1
  697. package/_cjs/Stream/internal/DebounceState.cjs +16 -44
  698. package/_cjs/Stream/internal/DebounceState.cjs.map +1 -1
  699. package/_cjs/Stream/internal/Handoff.cjs +34 -80
  700. package/_cjs/Stream/internal/Handoff.cjs.map +1 -1
  701. package/_cjs/Stream/internal/Pull.cjs +2 -25
  702. package/_cjs/Stream/internal/Pull.cjs.map +1 -1
  703. package/_cjs/Stream/internal/SinkEndReason.cjs +13 -28
  704. package/_cjs/Stream/internal/SinkEndReason.cjs.map +1 -1
  705. package/_cjs/Stream/internal/Take.cjs +32 -75
  706. package/_cjs/Stream/internal/Take.cjs.map +1 -1
  707. package/_cjs/Stream/internal/util.cjs +3 -13
  708. package/_cjs/Stream/internal/util.cjs.map +1 -1
  709. package/_cjs/Stream.cjs +0 -4
  710. package/_cjs/Stream.cjs.map +1 -1
  711. package/_cjs/{FiberState/definition.cjs → Subject/Atomic.cjs} +21 -36
  712. package/_cjs/Subject/Atomic.cjs.map +1 -0
  713. package/_cjs/{IO/api/withRuntimeConfig.cjs → Subject/api.cjs} +17 -14
  714. package/_cjs/Subject/api.cjs.map +1 -0
  715. package/_cjs/Subject/definition.cjs +11 -0
  716. package/_cjs/Subject/definition.cjs.map +1 -0
  717. package/_cjs/Subject.cjs +39 -0
  718. package/_cjs/Subject.cjs.map +1 -0
  719. package/_cjs/SubscriptionRef.cjs +54 -0
  720. package/_cjs/SubscriptionRef.cjs.map +1 -0
  721. package/_cjs/Supervisor/api.cjs +24 -37
  722. package/_cjs/Supervisor/api.cjs.map +1 -1
  723. package/_cjs/Supervisor/constructors.cjs +2 -26
  724. package/_cjs/Supervisor/constructors.cjs.map +1 -1
  725. package/_cjs/Supervisor/definition.cjs +6 -44
  726. package/_cjs/Supervisor/definition.cjs.map +1 -1
  727. package/_cjs/Supervisor.cjs +0 -6
  728. package/_cjs/Supervisor.cjs.map +1 -1
  729. package/_cjs/SupervisorPatch.cjs +25 -75
  730. package/_cjs/SupervisorPatch.cjs.map +1 -1
  731. package/_cjs/TExit/constructors.cjs +0 -12
  732. package/_cjs/TExit/constructors.cjs.map +1 -1
  733. package/_cjs/TExit/definition.cjs +14 -76
  734. package/_cjs/TExit/definition.cjs.map +1 -1
  735. package/_cjs/TExit.cjs +0 -4
  736. package/_cjs/TExit.cjs.map +1 -1
  737. package/_cjs/TFuture/api.cjs +21 -37
  738. package/_cjs/TFuture/api.cjs.map +1 -1
  739. package/_cjs/TFuture/constructors.cjs +1 -13
  740. package/_cjs/TFuture/constructors.cjs.map +1 -1
  741. package/_cjs/TFuture/definition.cjs +0 -4
  742. package/_cjs/TFuture/definition.cjs.map +1 -1
  743. package/_cjs/TFuture.cjs +0 -6
  744. package/_cjs/TFuture.cjs.map +1 -1
  745. package/_cjs/TReentrantLock/api.cjs +41 -111
  746. package/_cjs/TReentrantLock/api.cjs.map +1 -1
  747. package/_cjs/TReentrantLock/definition.cjs +7 -38
  748. package/_cjs/TReentrantLock/definition.cjs.map +1 -1
  749. package/_cjs/TReentrantLock.cjs +0 -4
  750. package/_cjs/TReentrantLock.cjs.map +1 -1
  751. package/_cjs/TRef/api.cjs +95 -296
  752. package/_cjs/TRef/api.cjs.map +1 -1
  753. package/_cjs/TRef/constructors.cjs +0 -19
  754. package/_cjs/TRef/constructors.cjs.map +1 -1
  755. package/_cjs/TRef/definition.cjs +84 -34
  756. package/_cjs/TRef/definition.cjs.map +1 -1
  757. package/_cjs/TRef/symbols.cjs +27 -0
  758. package/_cjs/TRef/symbols.cjs.map +1 -0
  759. package/_cjs/TRef.cjs +11 -6
  760. package/_cjs/TRef.cjs.map +1 -1
  761. package/_cjs/TSemaphore/api.cjs +30 -49
  762. package/_cjs/TSemaphore/api.cjs.map +1 -1
  763. package/_cjs/TSemaphore/constructors.cjs +13 -11
  764. package/_cjs/TSemaphore/constructors.cjs.map +1 -1
  765. package/_cjs/TSemaphore/definition.cjs +0 -4
  766. package/_cjs/TSemaphore/definition.cjs.map +1 -1
  767. package/_cjs/TSemaphore.cjs +0 -6
  768. package/_cjs/TSemaphore.cjs.map +1 -1
  769. package/_cjs/TxnId.cjs +0 -3
  770. package/_cjs/TxnId.cjs.map +1 -1
  771. package/_cjs/collection/immutable/Conc/dropUntilIO.cjs +19 -24
  772. package/_cjs/collection/immutable/Conc/dropUntilIO.cjs.map +1 -1
  773. package/_cjs/collection/immutable/Conc/dropWhileIO.cjs +19 -24
  774. package/_cjs/collection/immutable/Conc/dropWhileIO.cjs.map +1 -1
  775. package/_cjs/collection/immutable/Conc/filterIO.cjs +14 -19
  776. package/_cjs/collection/immutable/Conc/filterIO.cjs.map +1 -1
  777. package/_cjs/collection/immutable/Conc/findIO.cjs +18 -28
  778. package/_cjs/collection/immutable/Conc/findIO.cjs.map +1 -1
  779. package/_cjs/collection/immutable/Conc/mapIO.cjs +11 -14
  780. package/_cjs/collection/immutable/Conc/mapIO.cjs.map +1 -1
  781. package/_cjs/collection/immutable/Conc/takeWhileIO.cjs +29 -36
  782. package/_cjs/collection/immutable/Conc/takeWhileIO.cjs.map +1 -1
  783. package/_cjs/collection/immutable/Conc.cjs +0 -12
  784. package/_cjs/collection/immutable/Conc.cjs.map +1 -1
  785. package/_cjs/data/Exit/foreachIO.cjs +6 -10
  786. package/_cjs/data/Exit/foreachIO.cjs.map +1 -1
  787. package/_cjs/internal/HashedPair.cjs +4 -15
  788. package/_cjs/internal/HashedPair.cjs.map +1 -1
  789. package/_cjs/internal/Hub.cjs +13 -175
  790. package/_cjs/internal/Hub.cjs.map +1 -1
  791. package/_cjs/internal/IsFatal.cjs +22 -62
  792. package/_cjs/internal/IsFatal.cjs.map +1 -1
  793. package/_cjs/internal/MutableQueue.cjs +11 -77
  794. package/_cjs/internal/MutableQueue.cjs.map +1 -1
  795. package/_cjs/internal/Scheduler.cjs +0 -18
  796. package/_cjs/internal/Scheduler.cjs.map +1 -1
  797. package/_cjs/internal/StackTraceBuilder.cjs +0 -9
  798. package/_cjs/internal/StackTraceBuilder.cjs.map +1 -1
  799. package/_mjs/Cached/api.mjs +6 -13
  800. package/_mjs/Cached/api.mjs.map +1 -1
  801. package/_mjs/Cached/definition.mjs +2 -4
  802. package/_mjs/Cached/definition.mjs.map +1 -1
  803. package/_mjs/Cached/internal.mjs +0 -1
  804. package/_mjs/Cached/internal.mjs.map +1 -1
  805. package/_mjs/Cached.mjs.map +1 -1
  806. package/_mjs/CancellerState.mjs +6 -15
  807. package/_mjs/CancellerState.mjs.map +1 -1
  808. package/_mjs/Channel/ChildExecutorDecision/api.mjs +18 -18
  809. package/_mjs/Channel/ChildExecutorDecision/api.mjs.map +1 -1
  810. package/_mjs/Channel/ChildExecutorDecision/definition.mjs +0 -2
  811. package/_mjs/Channel/ChildExecutorDecision/definition.mjs.map +1 -1
  812. package/_mjs/Channel/ChildExecutorDecision.mjs.map +1 -1
  813. package/_mjs/Channel/UpstreamPullRequest/api.mjs +14 -16
  814. package/_mjs/Channel/UpstreamPullRequest/api.mjs.map +1 -1
  815. package/_mjs/Channel/UpstreamPullRequest/definition.mjs +0 -2
  816. package/_mjs/Channel/UpstreamPullRequest/definition.mjs.map +1 -1
  817. package/_mjs/Channel/UpstreamPullRequest.mjs.map +1 -1
  818. package/_mjs/Channel/UpstreamPullStrategy/definition.mjs +0 -1
  819. package/_mjs/Channel/UpstreamPullStrategy/definition.mjs.map +1 -1
  820. package/_mjs/Channel/UpstreamPullStrategy.mjs.map +1 -1
  821. package/_mjs/Channel/api/interruptWhen.mjs +11 -10
  822. package/_mjs/Channel/api/interruptWhen.mjs.map +1 -1
  823. package/_mjs/Channel/api/mapOutConcurrentIO.mjs +34 -0
  824. package/_mjs/Channel/api/mapOutConcurrentIO.mjs.map +1 -0
  825. package/_mjs/Channel/api/mergeAll.mjs +5 -4
  826. package/_mjs/Channel/api/mergeAll.mjs.map +1 -1
  827. package/_mjs/Channel/api/mergeAllUnboundedWith.mjs +5 -4
  828. package/_mjs/Channel/api/mergeAllUnboundedWith.mjs.map +1 -1
  829. package/_mjs/Channel/api/mergeAllWith.mjs +39 -39
  830. package/_mjs/Channel/api/mergeAllWith.mjs.map +1 -1
  831. package/_mjs/Channel/api/mergeMap.mjs +5 -4
  832. package/_mjs/Channel/api/mergeMap.mjs.map +1 -1
  833. package/_mjs/Channel/api/mergeWith.mjs +34 -50
  834. package/_mjs/Channel/api/mergeWith.mjs.map +1 -1
  835. package/_mjs/Channel/api/run.mjs +1 -2
  836. package/_mjs/Channel/api/run.mjs.map +1 -1
  837. package/_mjs/Channel/api/runCollect.mjs +0 -1
  838. package/_mjs/Channel/api/runCollect.mjs.map +1 -1
  839. package/_mjs/Channel/api/runDrain.mjs +0 -1
  840. package/_mjs/Channel/api/runDrain.mjs.map +1 -1
  841. package/_mjs/Channel/api/runScoped.mjs +6 -21
  842. package/_mjs/Channel/api/runScoped.mjs.map +1 -1
  843. package/_mjs/Channel/api/toPull.mjs +7 -20
  844. package/_mjs/Channel/api/toPull.mjs.map +1 -1
  845. package/_mjs/Channel/api/zipConcurrent.mjs +32 -0
  846. package/_mjs/Channel/api/zipConcurrent.mjs.map +1 -0
  847. package/_mjs/Channel/api.mjs +201 -267
  848. package/_mjs/Channel/api.mjs.map +1 -1
  849. package/_mjs/Channel/core-api.mjs +28 -35
  850. package/_mjs/Channel/core-api.mjs.map +1 -1
  851. package/_mjs/Channel/definition.mjs +32 -67
  852. package/_mjs/Channel/definition.mjs.map +1 -1
  853. package/_mjs/Channel/internal/ChannelExecutor.mjs +161 -340
  854. package/_mjs/Channel/internal/ChannelExecutor.mjs.map +1 -1
  855. package/_mjs/Channel/internal/ChannelState.mjs +5 -20
  856. package/_mjs/Channel/internal/ChannelState.mjs.map +1 -1
  857. package/_mjs/Channel/internal/MergeDecision.mjs +5 -16
  858. package/_mjs/Channel/internal/MergeDecision.mjs.map +1 -1
  859. package/_mjs/Channel/internal/MergeState.mjs +6 -15
  860. package/_mjs/Channel/internal/MergeState.mjs.map +1 -1
  861. package/_mjs/Channel/internal/SingleProducerAsyncInput.mjs +40 -103
  862. package/_mjs/Channel/internal/SingleProducerAsyncInput.mjs.map +1 -1
  863. package/_mjs/Channel.mjs.map +1 -1
  864. package/_mjs/Clock/api.mjs +0 -2
  865. package/_mjs/Clock/api.mjs.map +1 -1
  866. package/_mjs/Clock/definition.mjs +0 -2
  867. package/_mjs/Clock/definition.mjs.map +1 -1
  868. package/_mjs/Clock/live.mjs +2 -6
  869. package/_mjs/Clock/live.mjs.map +1 -1
  870. package/_mjs/Clock.mjs.map +1 -1
  871. package/_mjs/Console/api.mjs +0 -2
  872. package/_mjs/Console/api.mjs.map +1 -1
  873. package/_mjs/Console/definition.mjs +0 -2
  874. package/_mjs/Console/definition.mjs.map +1 -1
  875. package/_mjs/Console/live.mjs +0 -4
  876. package/_mjs/Console/live.mjs.map +1 -1
  877. package/_mjs/Console.mjs.map +1 -1
  878. package/_mjs/CountdownLatch.mjs +39 -0
  879. package/_mjs/CountdownLatch.mjs.map +1 -0
  880. package/_mjs/Differ/api.mjs +5 -20
  881. package/_mjs/Differ/api.mjs.map +1 -1
  882. package/_mjs/Differ/definition.mjs +0 -2
  883. package/_mjs/Differ/definition.mjs.map +1 -1
  884. package/_mjs/Fiber/FiberMessage.mjs +56 -0
  885. package/_mjs/Fiber/FiberMessage.mjs.map +1 -0
  886. package/_mjs/Fiber/FiberRuntime.mjs +728 -0
  887. package/_mjs/Fiber/FiberRuntime.mjs.map +1 -0
  888. package/_mjs/Fiber/api/await.mjs.map +1 -1
  889. package/_mjs/Fiber/api/awaitAll.mjs +2 -3
  890. package/_mjs/Fiber/api/awaitAll.mjs.map +1 -1
  891. package/_mjs/Fiber/api/children.mjs.map +1 -1
  892. package/_mjs/Fiber/api/collectAll.mjs +3 -4
  893. package/_mjs/Fiber/api/collectAll.mjs.map +1 -1
  894. package/_mjs/Fiber/api/fromIO.mjs +1 -2
  895. package/_mjs/Fiber/api/fromIO.mjs.map +1 -1
  896. package/_mjs/Fiber/api/id.mjs.map +1 -1
  897. package/_mjs/Fiber/api/inheritRefs.mjs +1 -1
  898. package/_mjs/Fiber/api/inheritRefs.mjs.map +1 -1
  899. package/_mjs/Fiber/api/interrupt.mjs +3 -4
  900. package/_mjs/Fiber/api/interrupt.mjs.map +1 -1
  901. package/_mjs/Fiber/api/interruptAll.mjs +3 -6
  902. package/_mjs/Fiber/api/interruptAll.mjs.map +1 -1
  903. package/_mjs/Fiber/api/interruptAs.mjs +13 -5
  904. package/_mjs/Fiber/api/interruptAs.mjs.map +1 -1
  905. package/_mjs/Fiber/api/interruptFork.mjs +2 -5
  906. package/_mjs/Fiber/api/interruptFork.mjs.map +1 -1
  907. package/_mjs/Fiber/api/join.mjs +3 -3
  908. package/_mjs/Fiber/api/join.mjs.map +1 -1
  909. package/_mjs/Fiber/api/joinAll.mjs +1 -2
  910. package/_mjs/Fiber/api/joinAll.mjs.map +1 -1
  911. package/_mjs/Fiber/api/location.mjs +1 -3
  912. package/_mjs/Fiber/api/location.mjs.map +1 -1
  913. package/_mjs/Fiber/api/mapFiber.mjs +5 -4
  914. package/_mjs/Fiber/api/mapFiber.mjs.map +1 -1
  915. package/_mjs/Fiber/api/mapIO.mjs +11 -10
  916. package/_mjs/Fiber/api/mapIO.mjs.map +1 -1
  917. package/_mjs/Fiber/api/poll.mjs.map +1 -1
  918. package/_mjs/Fiber/api/zipWith.mjs +6 -5
  919. package/_mjs/Fiber/api/zipWith.mjs.map +1 -1
  920. package/_mjs/Fiber/constructors.mjs +0 -6
  921. package/_mjs/Fiber/constructors.mjs.map +1 -1
  922. package/_mjs/Fiber/definition.mjs +9 -5
  923. package/_mjs/Fiber/definition.mjs.map +1 -1
  924. package/_mjs/Fiber.mjs +3 -4
  925. package/_mjs/Fiber.mjs.map +1 -1
  926. package/_mjs/FiberDescriptor.mjs +1 -4
  927. package/_mjs/FiberDescriptor.mjs.map +1 -1
  928. package/_mjs/FiberRef/api/locallyScoped.mjs +5 -4
  929. package/_mjs/FiberRef/api/locallyScoped.mjs.map +1 -1
  930. package/_mjs/FiberRef/api/locallyScopedWith.mjs +5 -4
  931. package/_mjs/FiberRef/api/locallyScopedWith.mjs.map +1 -1
  932. package/_mjs/FiberRef/api.mjs +64 -66
  933. package/_mjs/FiberRef/api.mjs.map +1 -1
  934. package/_mjs/FiberRef/constructors.mjs +1 -4
  935. package/_mjs/FiberRef/constructors.mjs.map +1 -1
  936. package/_mjs/FiberRef/definition.mjs +5 -10
  937. package/_mjs/FiberRef/definition.mjs.map +1 -1
  938. package/_mjs/FiberRef/unsafe.mjs +17 -30
  939. package/_mjs/FiberRef/unsafe.mjs.map +1 -1
  940. package/_mjs/FiberRef.mjs +2 -2
  941. package/_mjs/FiberRef.mjs.map +1 -1
  942. package/_mjs/FiberRefs/api.mjs +70 -24
  943. package/_mjs/FiberRefs/api.mjs.map +1 -1
  944. package/_mjs/FiberRefs/definition.mjs +2 -13
  945. package/_mjs/FiberRefs/definition.mjs.map +1 -1
  946. package/_mjs/FiberRefs/join.mjs +51 -61
  947. package/_mjs/FiberRefs/join.mjs.map +1 -1
  948. package/_mjs/FiberRefs.mjs.map +1 -1
  949. package/_mjs/FiberScope/constructors.mjs +0 -2
  950. package/_mjs/FiberScope/constructors.mjs.map +1 -1
  951. package/_mjs/FiberScope/definition.mjs +15 -12
  952. package/_mjs/FiberScope/definition.mjs.map +1 -1
  953. package/_mjs/FiberScope.mjs.map +1 -1
  954. package/_mjs/FiberStatus/constructors.mjs +5 -15
  955. package/_mjs/FiberStatus/constructors.mjs.map +1 -1
  956. package/_mjs/FiberStatus/definition.mjs +14 -66
  957. package/_mjs/FiberStatus/definition.mjs.map +1 -1
  958. package/_mjs/FiberStatus.mjs.map +1 -1
  959. package/_mjs/Future/api.mjs +87 -110
  960. package/_mjs/Future/api.mjs.map +1 -1
  961. package/_mjs/Future/constructors.mjs +1 -5
  962. package/_mjs/Future/constructors.mjs.map +1 -1
  963. package/_mjs/Future/definition.mjs +3 -9
  964. package/_mjs/Future/definition.mjs.map +1 -1
  965. package/_mjs/Future.mjs.map +1 -1
  966. package/_mjs/Hub/api.mjs +98 -123
  967. package/_mjs/Hub/api.mjs.map +1 -1
  968. package/_mjs/Hub/definition.mjs +13 -3
  969. package/_mjs/Hub/definition.mjs.map +1 -1
  970. package/_mjs/Hub/internal.mjs +30 -90
  971. package/_mjs/Hub/internal.mjs.map +1 -1
  972. package/_mjs/Hub.mjs.map +1 -1
  973. package/_mjs/IO/api/acquireRelease.mjs +0 -1
  974. package/_mjs/IO/api/acquireRelease.mjs.map +1 -1
  975. package/_mjs/IO/api/acquireReleaseExit.mjs +1 -2
  976. package/_mjs/IO/api/acquireReleaseExit.mjs.map +1 -1
  977. package/_mjs/IO/api/acquireReleaseInterruptible.mjs +0 -1
  978. package/_mjs/IO/api/acquireReleaseInterruptible.mjs.map +1 -1
  979. package/_mjs/IO/api/acquireReleaseInterruptibleExit.mjs +2 -2
  980. package/_mjs/IO/api/acquireReleaseInterruptibleExit.mjs.map +1 -1
  981. package/_mjs/IO/api/addFinalizer.mjs +0 -1
  982. package/_mjs/IO/api/addFinalizer.mjs.map +1 -1
  983. package/_mjs/IO/api/addFinalizerExit.mjs +1 -2
  984. package/_mjs/IO/api/addFinalizerExit.mjs.map +1 -1
  985. package/_mjs/IO/api/asyncIO.mjs +8 -8
  986. package/_mjs/IO/api/asyncIO.mjs.map +1 -1
  987. package/_mjs/IO/api/asyncInterrupt.mjs +65 -0
  988. package/_mjs/IO/api/asyncInterrupt.mjs.map +1 -0
  989. package/_mjs/IO/api/bracket.mjs +2 -3
  990. package/_mjs/IO/api/bracket.mjs.map +1 -1
  991. package/_mjs/IO/api/bracketExit.mjs +2 -3
  992. package/_mjs/IO/api/bracketExit.mjs.map +1 -1
  993. package/_mjs/IO/api/clockWith.mjs +2 -5
  994. package/_mjs/IO/api/clockWith.mjs.map +1 -1
  995. package/_mjs/IO/api/concurrency.mjs +8 -11
  996. package/_mjs/IO/api/concurrency.mjs.map +1 -1
  997. package/_mjs/IO/api/concurrentFinalizers.mjs +1 -2
  998. package/_mjs/IO/api/concurrentFinalizers.mjs.map +1 -1
  999. package/_mjs/IO/api/consoleWith.mjs +2 -5
  1000. package/_mjs/IO/api/consoleWith.mjs.map +1 -1
  1001. package/_mjs/IO/api/core-scope.mjs +56 -94
  1002. package/_mjs/IO/api/core-scope.mjs.map +1 -1
  1003. package/_mjs/IO/api/delay.mjs +12 -0
  1004. package/_mjs/IO/api/delay.mjs.map +1 -0
  1005. package/_mjs/IO/api/ensuringChildren.mjs +7 -5
  1006. package/_mjs/IO/api/ensuringChildren.mjs.map +1 -1
  1007. package/_mjs/IO/api/environment.mjs +29 -42
  1008. package/_mjs/IO/api/environment.mjs.map +1 -1
  1009. package/_mjs/IO/api/foreachConcurrent.mjs +104 -0
  1010. package/_mjs/IO/api/foreachConcurrent.mjs.map +1 -0
  1011. package/_mjs/IO/api/foreachExec.mjs +3 -4
  1012. package/_mjs/IO/api/foreachExec.mjs.map +1 -1
  1013. package/_mjs/IO/api/fork.mjs +64 -0
  1014. package/_mjs/IO/api/fork.mjs.map +1 -0
  1015. package/_mjs/IO/api/forkAll.mjs +3 -3
  1016. package/_mjs/IO/api/forkAll.mjs.map +1 -1
  1017. package/_mjs/IO/api/forkIn.mjs +7 -6
  1018. package/_mjs/IO/api/forkIn.mjs.map +1 -1
  1019. package/_mjs/IO/api/forkScoped.mjs +1 -2
  1020. package/_mjs/IO/api/forkScoped.mjs.map +1 -1
  1021. package/_mjs/IO/api/fulfill.mjs +7 -6
  1022. package/_mjs/IO/api/fulfill.mjs.map +1 -1
  1023. package/_mjs/IO/api/interrupt.mjs +45 -58
  1024. package/_mjs/IO/api/interrupt.mjs.map +1 -1
  1025. package/_mjs/IO/api/memoize.mjs +1 -2
  1026. package/_mjs/IO/api/memoize.mjs.map +1 -1
  1027. package/_mjs/IO/api/onExit.mjs +5 -4
  1028. package/_mjs/IO/api/onExit.mjs.map +1 -1
  1029. package/_mjs/IO/api/onTermination.mjs +5 -4
  1030. package/_mjs/IO/api/onTermination.mjs.map +1 -1
  1031. package/_mjs/IO/api/once.mjs +1 -2
  1032. package/_mjs/IO/api/once.mjs.map +1 -1
  1033. package/_mjs/IO/api/provideLayer.mjs +5 -4
  1034. package/_mjs/IO/api/provideLayer.mjs.map +1 -1
  1035. package/_mjs/IO/api/provideSomeLayer.mjs +5 -12
  1036. package/_mjs/IO/api/provideSomeLayer.mjs.map +1 -1
  1037. package/_mjs/IO/api/race.mjs +7 -7
  1038. package/_mjs/IO/api/race.mjs.map +1 -1
  1039. package/_mjs/IO/api/raceFirst.mjs +5 -4
  1040. package/_mjs/IO/api/raceFirst.mjs.map +1 -1
  1041. package/_mjs/IO/api/randomWith.mjs +1 -4
  1042. package/_mjs/IO/api/randomWith.mjs.map +1 -1
  1043. package/_mjs/IO/api/repeat.mjs +8 -13
  1044. package/_mjs/IO/api/repeat.mjs.map +1 -1
  1045. package/_mjs/IO/api/retry.mjs +12 -18
  1046. package/_mjs/IO/api/retry.mjs.map +1 -1
  1047. package/_mjs/IO/api/schedule.mjs +15 -15
  1048. package/_mjs/IO/api/schedule.mjs.map +1 -1
  1049. package/_mjs/IO/api/scope.mjs +0 -1
  1050. package/_mjs/IO/api/scope.mjs.map +1 -1
  1051. package/_mjs/IO/api/scopeWith.mjs +0 -1
  1052. package/_mjs/IO/api/scopeWith.mjs.map +1 -1
  1053. package/_mjs/IO/api/scoped.mjs +3 -6
  1054. package/_mjs/IO/api/scoped.mjs.map +1 -1
  1055. package/_mjs/IO/api/sequenceT.mjs +1 -2
  1056. package/_mjs/IO/api/sequenceT.mjs.map +1 -1
  1057. package/_mjs/IO/api/sleep.mjs +0 -1
  1058. package/_mjs/IO/api/sleep.mjs.map +1 -1
  1059. package/_mjs/IO/api/stateful.mjs +0 -1
  1060. package/_mjs/IO/api/stateful.mjs.map +1 -1
  1061. package/_mjs/IO/api/supervised.mjs +5 -9
  1062. package/_mjs/IO/api/supervised.mjs.map +1 -1
  1063. package/_mjs/IO/api/timeout.mjs +10 -9
  1064. package/_mjs/IO/api/timeout.mjs.map +1 -1
  1065. package/_mjs/IO/api/withChildren.mjs +2 -4
  1066. package/_mjs/IO/api/withChildren.mjs.map +1 -1
  1067. package/_mjs/IO/api/withEarlyRelease.mjs +1 -2
  1068. package/_mjs/IO/api/withEarlyRelease.mjs.map +1 -1
  1069. package/_mjs/IO/api/withFinalizer.mjs +5 -4
  1070. package/_mjs/IO/api/withFinalizer.mjs.map +1 -1
  1071. package/_mjs/IO/api/withFinalizerExit.mjs +5 -4
  1072. package/_mjs/IO/api/withFinalizerExit.mjs.map +1 -1
  1073. package/_mjs/IO/api/zipConcurrent.mjs +41 -0
  1074. package/_mjs/IO/api/zipConcurrent.mjs.map +1 -0
  1075. package/_mjs/IO/api.mjs +545 -797
  1076. package/_mjs/IO/api.mjs.map +1 -1
  1077. package/_mjs/IO/definition.mjs +107 -150
  1078. package/_mjs/IO/definition.mjs.map +1 -1
  1079. package/_mjs/IO/runtime.mjs +51 -86
  1080. package/_mjs/IO/runtime.mjs.map +1 -1
  1081. package/_mjs/IO.mjs +7 -5
  1082. package/_mjs/IO.mjs.map +1 -1
  1083. package/_mjs/IOEnv/definition.mjs +1 -2
  1084. package/_mjs/IOEnv/definition.mjs.map +1 -1
  1085. package/_mjs/IOEnv/live.mjs +1 -2
  1086. package/_mjs/IOEnv/live.mjs.map +1 -1
  1087. package/_mjs/IOEnv/services.mjs +0 -1
  1088. package/_mjs/IOEnv/services.mjs.map +1 -1
  1089. package/_mjs/IOEnv.mjs.map +1 -1
  1090. package/_mjs/InterruptStatus/constructors.mjs +0 -3
  1091. package/_mjs/InterruptStatus/constructors.mjs.map +1 -1
  1092. package/_mjs/InterruptStatus/definition.mjs +0 -3
  1093. package/_mjs/InterruptStatus/definition.mjs.map +1 -1
  1094. package/_mjs/InterruptStatus.mjs.map +1 -1
  1095. package/_mjs/Layer/MemoMap.mjs +54 -82
  1096. package/_mjs/Layer/MemoMap.mjs.map +1 -1
  1097. package/_mjs/Layer/api.mjs +93 -130
  1098. package/_mjs/Layer/api.mjs.map +1 -1
  1099. package/_mjs/Layer/definition.mjs +15 -34
  1100. package/_mjs/Layer/definition.mjs.map +1 -1
  1101. package/_mjs/Layer.mjs.map +1 -1
  1102. package/_mjs/LogLevel.mjs +24 -29
  1103. package/_mjs/LogLevel.mjs.map +1 -1
  1104. package/_mjs/LogSpan.mjs +16 -18
  1105. package/_mjs/LogSpan.mjs.map +1 -1
  1106. package/_mjs/Logger/api.mjs +16 -14
  1107. package/_mjs/Logger/api.mjs.map +1 -1
  1108. package/_mjs/Logger/constructors.mjs +3 -11
  1109. package/_mjs/Logger/constructors.mjs.map +1 -1
  1110. package/_mjs/Logger/definition.mjs +0 -1
  1111. package/_mjs/Logger/definition.mjs.map +1 -1
  1112. package/_mjs/Logger.mjs.map +1 -1
  1113. package/_mjs/Push/api.mjs +417 -0
  1114. package/_mjs/Push/api.mjs.map +1 -0
  1115. package/_mjs/Push/definition.mjs +33 -0
  1116. package/_mjs/Push/definition.mjs.map +1 -0
  1117. package/_mjs/Push/internal.mjs +26 -0
  1118. package/_mjs/Push/internal.mjs.map +1 -0
  1119. package/_mjs/Push.mjs +5 -0
  1120. package/_mjs/Push.mjs.map +1 -0
  1121. package/_mjs/Queue/api/dimapIO.mjs +101 -42
  1122. package/_mjs/Queue/api/dimapIO.mjs.map +1 -1
  1123. package/_mjs/Queue/api/filterInputIO.mjs +59 -24
  1124. package/_mjs/Queue/api/filterInputIO.mjs.map +1 -1
  1125. package/_mjs/Queue/api/filterOutputIO.mjs +70 -32
  1126. package/_mjs/Queue/api/filterOutputIO.mjs.map +1 -1
  1127. package/_mjs/Queue/api/operations.mjs +18 -22
  1128. package/_mjs/Queue/api/operations.mjs.map +1 -1
  1129. package/_mjs/Queue/api/poll.mjs +1 -2
  1130. package/_mjs/Queue/api/poll.mjs.map +1 -1
  1131. package/_mjs/Queue/api/takeBetween.mjs +23 -27
  1132. package/_mjs/Queue/api/takeBetween.mjs.map +1 -1
  1133. package/_mjs/Queue/api/zipWithIO.mjs +30 -33
  1134. package/_mjs/Queue/api/zipWithIO.mjs.map +1 -1
  1135. package/_mjs/Queue/api.mjs.map +1 -1
  1136. package/_mjs/Queue/constructors.mjs +5 -9
  1137. package/_mjs/Queue/constructors.mjs.map +1 -1
  1138. package/_mjs/Queue/definition.mjs +14 -7
  1139. package/_mjs/Queue/definition.mjs.map +1 -1
  1140. package/_mjs/Queue/internal.mjs +57 -93
  1141. package/_mjs/Queue/internal.mjs.map +1 -1
  1142. package/_mjs/Queue/strategy.mjs +28 -55
  1143. package/_mjs/Queue/strategy.mjs.map +1 -1
  1144. package/_mjs/Queue.mjs.map +1 -1
  1145. package/_mjs/Random/api.mjs +0 -8
  1146. package/_mjs/Random/api.mjs.map +1 -1
  1147. package/_mjs/Random/definition.mjs +0 -2
  1148. package/_mjs/Random/definition.mjs.map +1 -1
  1149. package/_mjs/Random/live.mjs +2 -9
  1150. package/_mjs/Random/live.mjs.map +1 -1
  1151. package/_mjs/Random.mjs.map +1 -1
  1152. package/_mjs/Ref/Atomic.mjs +49 -3
  1153. package/_mjs/Ref/Atomic.mjs.map +1 -1
  1154. package/_mjs/Ref/Derived.mjs +11 -9
  1155. package/_mjs/Ref/Derived.mjs.map +1 -1
  1156. package/_mjs/Ref/DerivedAll.mjs +15 -11
  1157. package/_mjs/Ref/DerivedAll.mjs.map +1 -1
  1158. package/_mjs/Ref/Synchronized/api.mjs +82 -68
  1159. package/_mjs/Ref/Synchronized/api.mjs.map +1 -1
  1160. package/_mjs/Ref/Synchronized/constructors.mjs +1 -2
  1161. package/_mjs/Ref/Synchronized/constructors.mjs.map +1 -1
  1162. package/_mjs/Ref/Synchronized/definition.mjs +16 -28
  1163. package/_mjs/Ref/Synchronized/definition.mjs.map +1 -1
  1164. package/_mjs/Ref/Synchronized.mjs +5 -0
  1165. package/_mjs/Ref/Synchronized.mjs.map +1 -0
  1166. package/_mjs/Ref/api/collect.mjs +6 -5
  1167. package/_mjs/Ref/api/collect.mjs.map +1 -1
  1168. package/_mjs/Ref/api/dimap.mjs +45 -41
  1169. package/_mjs/Ref/api/dimap.mjs.map +1 -1
  1170. package/_mjs/Ref/api/filter.mjs +12 -10
  1171. package/_mjs/Ref/api/filter.mjs.map +1 -1
  1172. package/_mjs/Ref/api/get.mjs +0 -1
  1173. package/_mjs/Ref/api/get.mjs.map +1 -1
  1174. package/_mjs/Ref/api/match.mjs +7 -7
  1175. package/_mjs/Ref/api/match.mjs.map +1 -1
  1176. package/_mjs/Ref/api/matchAll.mjs +5 -5
  1177. package/_mjs/Ref/api/matchAll.mjs.map +1 -1
  1178. package/_mjs/Ref/api/modify.mjs +63 -143
  1179. package/_mjs/Ref/api/modify.mjs.map +1 -1
  1180. package/_mjs/Ref/api/set.mjs +7 -6
  1181. package/_mjs/Ref/api/set.mjs.map +1 -1
  1182. package/_mjs/Ref/api.mjs +5 -7
  1183. package/_mjs/Ref/api.mjs.map +1 -1
  1184. package/_mjs/Ref/constructors.mjs +2 -3
  1185. package/_mjs/Ref/constructors.mjs.map +1 -1
  1186. package/_mjs/Ref/definition.mjs +10 -3
  1187. package/_mjs/Ref/definition.mjs.map +1 -1
  1188. package/_mjs/Ref/symbols.mjs +25 -0
  1189. package/_mjs/Ref/symbols.mjs.map +1 -0
  1190. package/_mjs/Ref.mjs +4 -2
  1191. package/_mjs/Ref.mjs.map +1 -1
  1192. package/_mjs/RefSubject/Atomic.mjs +100 -0
  1193. package/_mjs/RefSubject/Atomic.mjs.map +1 -0
  1194. package/_mjs/RefSubject/Synchronized/api.mjs +15 -0
  1195. package/_mjs/RefSubject/Synchronized/api.mjs.map +1 -0
  1196. package/_mjs/RefSubject/Synchronized/definition.mjs +45 -0
  1197. package/_mjs/RefSubject/Synchronized/definition.mjs.map +1 -0
  1198. package/_mjs/RefSubject/api.mjs +220 -0
  1199. package/_mjs/RefSubject/api.mjs.map +1 -0
  1200. package/_mjs/RefSubject/definition.mjs +11 -0
  1201. package/_mjs/RefSubject/definition.mjs.map +1 -0
  1202. package/_mjs/RefSubject.mjs +5 -0
  1203. package/_mjs/RefSubject.mjs.map +1 -0
  1204. package/_mjs/Reloadable/api.mjs +3 -12
  1205. package/_mjs/Reloadable/api.mjs.map +1 -1
  1206. package/_mjs/Reloadable/constructors.mjs +14 -26
  1207. package/_mjs/Reloadable/constructors.mjs.map +1 -1
  1208. package/_mjs/Reloadable/definition.mjs +0 -6
  1209. package/_mjs/Reloadable/definition.mjs.map +1 -1
  1210. package/_mjs/Reloadable.mjs.map +1 -1
  1211. package/_mjs/RuntimeConfig.mjs +0 -31
  1212. package/_mjs/RuntimeConfig.mjs.map +1 -1
  1213. package/_mjs/RuntimeFlag.mjs +2 -0
  1214. package/_mjs/RuntimeFlag.mjs.map +1 -0
  1215. package/_mjs/RuntimeFlags/Patch.mjs +58 -0
  1216. package/_mjs/RuntimeFlags/Patch.mjs.map +1 -0
  1217. package/_mjs/RuntimeFlags/RuntimeFlags.mjs +82 -0
  1218. package/_mjs/RuntimeFlags/RuntimeFlags.mjs.map +1 -0
  1219. package/_mjs/RuntimeFlags.mjs +4 -0
  1220. package/_mjs/RuntimeFlags.mjs.map +1 -0
  1221. package/_mjs/STM/api/core-api.mjs +29 -27
  1222. package/_mjs/STM/api/core-api.mjs.map +1 -1
  1223. package/_mjs/STM/api/core-constructors.mjs +0 -8
  1224. package/_mjs/STM/api/core-constructors.mjs.map +1 -1
  1225. package/_mjs/STM/api.mjs +182 -212
  1226. package/_mjs/STM/api.mjs.map +1 -1
  1227. package/_mjs/STM/definition.mjs +14 -36
  1228. package/_mjs/STM/definition.mjs.map +1 -1
  1229. package/_mjs/STM/driver.mjs +12 -54
  1230. package/_mjs/STM/driver.mjs.map +1 -1
  1231. package/_mjs/STM/internal/CommitState.mjs +5 -25
  1232. package/_mjs/STM/internal/CommitState.mjs.map +1 -1
  1233. package/_mjs/STM/internal/Entry.mjs +0 -12
  1234. package/_mjs/STM/internal/Entry.mjs.map +1 -1
  1235. package/_mjs/STM/internal/Journal.mjs +50 -128
  1236. package/_mjs/STM/internal/Journal.mjs.map +1 -1
  1237. package/_mjs/STM/internal/TryCommit.mjs +3 -8
  1238. package/_mjs/STM/internal/TryCommit.mjs.map +1 -1
  1239. package/_mjs/STM/internal/Versioned.mjs +0 -1
  1240. package/_mjs/STM/internal/Versioned.mjs.map +1 -1
  1241. package/_mjs/STM.mjs +2 -2
  1242. package/_mjs/STM.mjs.map +1 -1
  1243. package/_mjs/Schedule/Decision.mjs +14 -25
  1244. package/_mjs/Schedule/Decision.mjs.map +1 -1
  1245. package/_mjs/Schedule/Driver.mjs +0 -2
  1246. package/_mjs/Schedule/Driver.mjs.map +1 -1
  1247. package/_mjs/Schedule/api/driver.mjs +6 -8
  1248. package/_mjs/Schedule/api/driver.mjs.map +1 -1
  1249. package/_mjs/Schedule/api.mjs +379 -374
  1250. package/_mjs/Schedule/api.mjs.map +1 -1
  1251. package/_mjs/Schedule/definition.mjs.map +1 -1
  1252. package/_mjs/Schedule.mjs.map +1 -1
  1253. package/_mjs/Scope/Finalizer/definition.mjs +0 -1
  1254. package/_mjs/Scope/Finalizer/definition.mjs.map +1 -1
  1255. package/_mjs/Scope/Finalizer.mjs.map +1 -1
  1256. package/_mjs/Scope/ReleaseMap/api/releaseAll.mjs +12 -12
  1257. package/_mjs/Scope/ReleaseMap/api/releaseAll.mjs.map +1 -1
  1258. package/_mjs/Scope/ReleaseMap/api.mjs +59 -60
  1259. package/_mjs/Scope/ReleaseMap/api.mjs.map +1 -1
  1260. package/_mjs/Scope/ReleaseMap/constructors.mjs +1 -4
  1261. package/_mjs/Scope/ReleaseMap/constructors.mjs.map +1 -1
  1262. package/_mjs/Scope/ReleaseMap/definition.mjs +0 -2
  1263. package/_mjs/Scope/ReleaseMap/definition.mjs.map +1 -1
  1264. package/_mjs/Scope/ReleaseMap.mjs.map +1 -1
  1265. package/_mjs/Scope/api.mjs +28 -45
  1266. package/_mjs/Scope/api.mjs.map +1 -1
  1267. package/_mjs/Scope/definition.mjs +0 -4
  1268. package/_mjs/Scope/definition.mjs.map +1 -1
  1269. package/_mjs/Scope.mjs.map +1 -1
  1270. package/_mjs/ScopedRef/api.mjs +7 -11
  1271. package/_mjs/ScopedRef/api.mjs.map +1 -1
  1272. package/_mjs/ScopedRef/definition.mjs +1 -3
  1273. package/_mjs/ScopedRef/definition.mjs.map +1 -1
  1274. package/_mjs/ScopedRef.mjs.map +1 -1
  1275. package/_mjs/Sink/api.mjs +282 -383
  1276. package/_mjs/Sink/api.mjs.map +1 -1
  1277. package/_mjs/Sink/definition.mjs +0 -1
  1278. package/_mjs/Sink/definition.mjs.map +1 -1
  1279. package/_mjs/Sink.mjs.map +1 -1
  1280. package/_mjs/State/api.mjs +16 -19
  1281. package/_mjs/State/api.mjs.map +1 -1
  1282. package/_mjs/State/definition.mjs +2 -4
  1283. package/_mjs/State/definition.mjs.map +1 -1
  1284. package/_mjs/State/internal.mjs +0 -1
  1285. package/_mjs/State/internal.mjs.map +1 -1
  1286. package/_mjs/State.mjs.map +1 -1
  1287. package/_mjs/Stream/api/zipAllWith.mjs +15 -30
  1288. package/_mjs/Stream/api/zipAllWith.mjs.map +1 -1
  1289. package/_mjs/Stream/api/zipWith.mjs +5 -4
  1290. package/_mjs/Stream/api/zipWith.mjs.map +1 -1
  1291. package/_mjs/Stream/api/zipWithChunks.mjs +13 -23
  1292. package/_mjs/Stream/api/zipWithChunks.mjs.map +1 -1
  1293. package/_mjs/Stream/api.mjs +827 -936
  1294. package/_mjs/Stream/api.mjs.map +1 -1
  1295. package/_mjs/Stream/definition.mjs +0 -4
  1296. package/_mjs/Stream/definition.mjs.map +1 -1
  1297. package/_mjs/Stream/internal/DebounceState.mjs +18 -34
  1298. package/_mjs/Stream/internal/DebounceState.mjs.map +1 -1
  1299. package/_mjs/Stream/internal/Handoff.mjs +33 -51
  1300. package/_mjs/Stream/internal/Handoff.mjs.map +1 -1
  1301. package/_mjs/Stream/internal/Pull.mjs +2 -9
  1302. package/_mjs/Stream/internal/Pull.mjs.map +1 -1
  1303. package/_mjs/Stream/internal/SinkEndReason.mjs +13 -22
  1304. package/_mjs/Stream/internal/SinkEndReason.mjs.map +1 -1
  1305. package/_mjs/Stream/internal/Take.mjs +28 -42
  1306. package/_mjs/Stream/internal/Take.mjs.map +1 -1
  1307. package/_mjs/Stream/internal/util.mjs +3 -6
  1308. package/_mjs/Stream/internal/util.mjs.map +1 -1
  1309. package/_mjs/Stream.mjs.map +1 -1
  1310. package/_mjs/Subject/Atomic.mjs +22 -0
  1311. package/_mjs/Subject/Atomic.mjs.map +1 -0
  1312. package/_mjs/Subject/api.mjs +18 -0
  1313. package/_mjs/Subject/api.mjs.map +1 -0
  1314. package/_mjs/Subject/definition.mjs +3 -0
  1315. package/_mjs/Subject/definition.mjs.map +1 -0
  1316. package/_mjs/Subject.mjs +5 -0
  1317. package/_mjs/Subject.mjs.map +1 -0
  1318. package/_mjs/SubscriptionRef.mjs +41 -0
  1319. package/_mjs/SubscriptionRef.mjs.map +1 -0
  1320. package/_mjs/Supervisor/api.mjs +22 -29
  1321. package/_mjs/Supervisor/api.mjs.map +1 -1
  1322. package/_mjs/Supervisor/constructors.mjs +2 -14
  1323. package/_mjs/Supervisor/constructors.mjs.map +1 -1
  1324. package/_mjs/Supervisor/definition.mjs +6 -32
  1325. package/_mjs/Supervisor/definition.mjs.map +1 -1
  1326. package/_mjs/Supervisor.mjs.map +1 -1
  1327. package/_mjs/SupervisorPatch.mjs +28 -55
  1328. package/_mjs/SupervisorPatch.mjs.map +1 -1
  1329. package/_mjs/TExit/constructors.mjs +0 -6
  1330. package/_mjs/TExit/constructors.mjs.map +1 -1
  1331. package/_mjs/TExit/definition.mjs +14 -57
  1332. package/_mjs/TExit/definition.mjs.map +1 -1
  1333. package/_mjs/TExit.mjs.map +1 -1
  1334. package/_mjs/TFuture/api.mjs +17 -17
  1335. package/_mjs/TFuture/api.mjs.map +1 -1
  1336. package/_mjs/TFuture/constructors.mjs +1 -4
  1337. package/_mjs/TFuture/constructors.mjs.map +1 -1
  1338. package/_mjs/TFuture/definition.mjs.map +1 -1
  1339. package/_mjs/TFuture.mjs.map +1 -1
  1340. package/_mjs/TReentrantLock/api.mjs +41 -85
  1341. package/_mjs/TReentrantLock/api.mjs.map +1 -1
  1342. package/_mjs/TReentrantLock/definition.mjs +7 -26
  1343. package/_mjs/TReentrantLock/definition.mjs.map +1 -1
  1344. package/_mjs/TReentrantLock.mjs.map +1 -1
  1345. package/_mjs/TRef/api.mjs +79 -257
  1346. package/_mjs/TRef/api.mjs.map +1 -1
  1347. package/_mjs/TRef/constructors.mjs +0 -7
  1348. package/_mjs/TRef/constructors.mjs.map +1 -1
  1349. package/_mjs/TRef/definition.mjs +84 -19
  1350. package/_mjs/TRef/definition.mjs.map +1 -1
  1351. package/_mjs/TRef/symbols.mjs +17 -0
  1352. package/_mjs/TRef/symbols.mjs.map +1 -0
  1353. package/_mjs/TRef.mjs +1 -0
  1354. package/_mjs/TRef.mjs.map +1 -1
  1355. package/_mjs/TSemaphore/api.mjs +26 -32
  1356. package/_mjs/TSemaphore/api.mjs.map +1 -1
  1357. package/_mjs/TSemaphore/constructors.mjs +10 -4
  1358. package/_mjs/TSemaphore/constructors.mjs.map +1 -1
  1359. package/_mjs/TSemaphore/definition.mjs.map +1 -1
  1360. package/_mjs/TSemaphore.mjs.map +1 -1
  1361. package/_mjs/TxnId.mjs +0 -1
  1362. package/_mjs/TxnId.mjs.map +1 -1
  1363. package/_mjs/collection/immutable/Conc/dropUntilIO.mjs +19 -20
  1364. package/_mjs/collection/immutable/Conc/dropUntilIO.mjs.map +1 -1
  1365. package/_mjs/collection/immutable/Conc/dropWhileIO.mjs +19 -20
  1366. package/_mjs/collection/immutable/Conc/dropWhileIO.mjs.map +1 -1
  1367. package/_mjs/collection/immutable/Conc/filterIO.mjs +14 -15
  1368. package/_mjs/collection/immutable/Conc/filterIO.mjs.map +1 -1
  1369. package/_mjs/collection/immutable/Conc/findIO.mjs +17 -22
  1370. package/_mjs/collection/immutable/Conc/findIO.mjs.map +1 -1
  1371. package/_mjs/collection/immutable/Conc/mapIO.mjs +10 -9
  1372. package/_mjs/collection/immutable/Conc/mapIO.mjs.map +1 -1
  1373. package/_mjs/collection/immutable/Conc/takeWhileIO.mjs +28 -30
  1374. package/_mjs/collection/immutable/Conc/takeWhileIO.mjs.map +1 -1
  1375. package/_mjs/collection/immutable/Conc.mjs.map +1 -1
  1376. package/_mjs/data/Exit/foreachIO.mjs +5 -4
  1377. package/_mjs/data/Exit/foreachIO.mjs.map +1 -1
  1378. package/_mjs/internal/HashedPair.mjs +4 -7
  1379. package/_mjs/internal/HashedPair.mjs.map +1 -1
  1380. package/_mjs/internal/Hub.mjs +13 -158
  1381. package/_mjs/internal/Hub.mjs.map +1 -1
  1382. package/_mjs/internal/IsFatal.mjs +24 -51
  1383. package/_mjs/internal/IsFatal.mjs.map +1 -1
  1384. package/_mjs/internal/MutableQueue.mjs +10 -57
  1385. package/_mjs/internal/MutableQueue.mjs.map +1 -1
  1386. package/_mjs/internal/Scheduler.mjs +0 -11
  1387. package/_mjs/internal/Scheduler.mjs.map +1 -1
  1388. package/_mjs/internal/StackTraceBuilder.mjs +0 -3
  1389. package/_mjs/internal/StackTraceBuilder.mjs.map +1 -1
  1390. package/_src/Cached/api.ts +2 -2
  1391. package/_src/Channel/ChildExecutorDecision/api.ts +14 -17
  1392. package/_src/Channel/UpstreamPullRequest/api.ts +11 -13
  1393. package/_src/Channel/api/interruptWhen.ts +18 -17
  1394. package/_src/Channel/api/mapOutConcurrentIO.ts +66 -0
  1395. package/_src/Channel/api/mergeAll.ts +15 -16
  1396. package/_src/Channel/api/mergeAllUnboundedWith.ts +15 -27
  1397. package/_src/Channel/api/mergeAllWith.ts +114 -126
  1398. package/_src/Channel/api/mergeMap.ts +8 -18
  1399. package/_src/Channel/api/mergeWith.ts +154 -158
  1400. package/_src/Channel/api/toPull.ts +1 -1
  1401. package/_src/Channel/api/zipConcurrent.ts +68 -0
  1402. package/_src/Channel/api.ts +354 -414
  1403. package/_src/Channel/core-api.ts +75 -122
  1404. package/_src/Channel/definition.ts +49 -7
  1405. package/_src/Channel/internal/ChannelExecutor.ts +12 -16
  1406. package/_src/Channel/internal/SingleProducerAsyncInput.ts +2 -4
  1407. package/_src/CountdownLatch.ts +39 -0
  1408. package/_src/Fiber/FiberMessage.ts +78 -0
  1409. package/_src/Fiber/FiberRuntime.ts +822 -0
  1410. package/_src/Fiber/api/awaitAll.ts +1 -1
  1411. package/_src/Fiber/api/collectAll.ts +2 -2
  1412. package/_src/Fiber/api/inheritRefs.ts +1 -1
  1413. package/_src/Fiber/api/interrupt.ts +1 -2
  1414. package/_src/Fiber/api/interruptAll.ts +1 -2
  1415. package/_src/Fiber/api/interruptAs.ts +9 -2
  1416. package/_src/Fiber/api/interruptFork.ts +1 -1
  1417. package/_src/Fiber/api/location.ts +2 -2
  1418. package/_src/Fiber/api/mapFiber.ts +5 -7
  1419. package/_src/Fiber/api/mapIO.ts +21 -21
  1420. package/_src/Fiber/api/zipWith.ts +14 -17
  1421. package/_src/Fiber/definition.ts +17 -16
  1422. package/_src/Fiber.ts +2 -4
  1423. package/_src/FiberDescriptor.ts +1 -8
  1424. package/_src/FiberRef/api/locallyScoped.ts +8 -6
  1425. package/_src/FiberRef/api/locallyScopedWith.ts +5 -7
  1426. package/_src/FiberRef/api.ts +59 -52
  1427. package/_src/FiberRef/unsafe.ts +6 -1
  1428. package/_src/FiberRef.ts +0 -1
  1429. package/_src/FiberRefs/api.ts +69 -14
  1430. package/_src/FiberRefs/definition.ts +15 -7
  1431. package/_src/FiberRefs/join.ts +39 -48
  1432. package/_src/FiberScope/constructors.ts +2 -2
  1433. package/_src/FiberScope/definition.ts +21 -9
  1434. package/_src/FiberStatus/constructors.ts +6 -18
  1435. package/_src/FiberStatus/definition.ts +13 -54
  1436. package/_src/Future/api.ts +67 -53
  1437. package/_src/Hub/api.ts +84 -96
  1438. package/_src/Hub/definition.ts +22 -7
  1439. package/_src/Hub/internal.ts +8 -8
  1440. package/_src/IO/api/acquireRelease.ts +1 -1
  1441. package/_src/IO/api/acquireReleaseExit.ts +1 -1
  1442. package/_src/IO/api/asyncInterrupt.ts +77 -0
  1443. package/_src/IO/api/bracket.ts +1 -1
  1444. package/_src/IO/api/bracketExit.ts +1 -1
  1445. package/_src/IO/api/clockWith.ts +0 -1
  1446. package/_src/IO/api/concurrency.ts +5 -7
  1447. package/_src/IO/api/consoleWith.ts +0 -2
  1448. package/_src/IO/api/core-scope.ts +74 -90
  1449. package/_src/IO/api/delay.ts +8 -0
  1450. package/_src/IO/api/ensuringChildren.ts +8 -7
  1451. package/_src/IO/api/environment.ts +24 -42
  1452. package/_src/IO/api/{foreachC.ts → foreachConcurrent.ts} +30 -18
  1453. package/_src/IO/api/foreachExec.ts +3 -3
  1454. package/_src/IO/api/fork.ts +83 -0
  1455. package/_src/IO/api/forkIn.ts +7 -9
  1456. package/_src/IO/api/fulfill.ts +5 -3
  1457. package/_src/IO/api/interrupt.ts +49 -32
  1458. package/_src/IO/api/onExit.ts +8 -10
  1459. package/_src/IO/api/onTermination.ts +12 -14
  1460. package/_src/IO/api/provideLayer.ts +8 -10
  1461. package/_src/IO/api/provideSomeLayer.ts +5 -14
  1462. package/_src/IO/api/race.ts +19 -21
  1463. package/_src/IO/api/raceFirst.ts +5 -7
  1464. package/_src/IO/api/repeat.ts +3 -5
  1465. package/_src/IO/api/retry.ts +19 -21
  1466. package/_src/IO/api/schedule.ts +20 -21
  1467. package/_src/IO/api/scoped.ts +2 -2
  1468. package/_src/IO/api/sequenceT.ts +7 -1
  1469. package/_src/IO/api/stateful.ts +0 -2
  1470. package/_src/IO/api/supervised.ts +4 -8
  1471. package/_src/IO/api/timeout.ts +10 -16
  1472. package/_src/IO/api/withChildren.ts +2 -4
  1473. package/_src/IO/api/withFinalizer.ts +5 -7
  1474. package/_src/IO/api/withFinalizerExit.ts +6 -5
  1475. package/_src/IO/api/zipConcurrent.ts +69 -0
  1476. package/_src/IO/api.ts +576 -782
  1477. package/_src/IO/definition.ts +150 -137
  1478. package/_src/IO/runtime.ts +53 -64
  1479. package/_src/IO.ts +5 -3
  1480. package/_src/Layer/MemoMap.ts +62 -64
  1481. package/_src/Layer/api.ts +95 -104
  1482. package/_src/Layer/definition.ts +0 -1
  1483. package/_src/LogLevel.ts +24 -16
  1484. package/_src/LogSpan.ts +16 -16
  1485. package/_src/Logger/api.ts +18 -17
  1486. package/_src/Logger/constructors.ts +9 -15
  1487. package/_src/Push/api.ts +702 -0
  1488. package/_src/Push/definition.ts +42 -0
  1489. package/_src/Push/internal.ts +39 -0
  1490. package/_src/Push.ts +5 -0
  1491. package/_src/Queue/api/dimapIO.ts +124 -47
  1492. package/_src/Queue/api/filterInputIO.ts +69 -24
  1493. package/_src/Queue/api/filterOutputIO.ts +77 -17
  1494. package/_src/Queue/api/operations.ts +33 -31
  1495. package/_src/Queue/api/poll.ts +3 -1
  1496. package/_src/Queue/api/takeBetween.ts +29 -30
  1497. package/_src/Queue/api/zipWithIO.ts +47 -36
  1498. package/_src/Queue/constructors.ts +5 -5
  1499. package/_src/Queue/definition.ts +129 -8
  1500. package/_src/Queue/internal.ts +24 -38
  1501. package/_src/Queue/strategy.ts +12 -26
  1502. package/_src/Ref/Atomic.ts +70 -4
  1503. package/_src/Ref/Derived.ts +22 -1
  1504. package/_src/Ref/DerivedAll.ts +26 -2
  1505. package/_src/Ref/Synchronized/api.ts +129 -130
  1506. package/_src/Ref/Synchronized/constructors.ts +1 -1
  1507. package/_src/Ref/Synchronized/definition.ts +21 -14
  1508. package/_src/Ref/Synchronized.ts +5 -0
  1509. package/_src/Ref/api/collect.ts +6 -8
  1510. package/_src/Ref/api/dimap.ts +51 -64
  1511. package/_src/Ref/api/filter.ts +12 -16
  1512. package/_src/Ref/api/get.ts +2 -5
  1513. package/_src/Ref/api/match.ts +8 -7
  1514. package/_src/Ref/api/matchAll.ts +6 -5
  1515. package/_src/Ref/api/modify.ts +61 -165
  1516. package/_src/Ref/api/set.ts +7 -9
  1517. package/_src/Ref/constructors.ts +3 -1
  1518. package/_src/Ref/definition.ts +56 -23
  1519. package/_src/Ref/symbols.ts +29 -0
  1520. package/_src/Ref.ts +2 -0
  1521. package/_src/RefSubject/Atomic.ts +120 -0
  1522. package/_src/RefSubject/Synchronized/api.ts +14 -0
  1523. package/_src/RefSubject/Synchronized/definition.ts +72 -0
  1524. package/_src/RefSubject/api.ts +240 -0
  1525. package/_src/RefSubject/definition.ts +62 -0
  1526. package/_src/RefSubject.ts +5 -0
  1527. package/_src/Reloadable/constructors.ts +2 -2
  1528. package/_src/RuntimeConfig.ts +0 -31
  1529. package/_src/RuntimeFlag.ts +10 -0
  1530. package/_src/RuntimeFlags/Patch.ts +79 -0
  1531. package/_src/RuntimeFlags/RuntimeFlags.ts +112 -0
  1532. package/_src/RuntimeFlags.ts +4 -0
  1533. package/_src/STM/api/core-api.ts +32 -35
  1534. package/_src/STM/api.ts +211 -201
  1535. package/_src/STM/internal/Entry.ts +0 -10
  1536. package/_src/STM/internal/Journal.ts +24 -27
  1537. package/_src/STM.ts +0 -1
  1538. package/_src/Schedule/Decision.ts +10 -8
  1539. package/_src/Schedule/api/driver.ts +2 -6
  1540. package/_src/Schedule/api.ts +471 -474
  1541. package/_src/Schedule/definition.ts +0 -1
  1542. package/_src/Scope/ReleaseMap/api/releaseAll.ts +24 -26
  1543. package/_src/Scope/ReleaseMap/api.ts +77 -74
  1544. package/_src/Scope/ReleaseMap/constructors.ts +1 -1
  1545. package/_src/Scope/api.ts +16 -18
  1546. package/_src/ScopedRef/api.ts +0 -3
  1547. package/_src/ScopedRef/definition.ts +1 -2
  1548. package/_src/Sink/api.ts +326 -354
  1549. package/_src/State/api.ts +12 -8
  1550. package/_src/State/internal.ts +1 -1
  1551. package/_src/Stream/api/zipAllWith.ts +7 -6
  1552. package/_src/Stream/api/zipWith.ts +5 -8
  1553. package/_src/Stream/api/zipWithChunks.ts +7 -6
  1554. package/_src/Stream/api.ts +1086 -1203
  1555. package/_src/Stream/definition.ts +0 -2
  1556. package/_src/Stream/internal/DebounceState.ts +16 -17
  1557. package/_src/Stream/internal/Handoff.ts +32 -36
  1558. package/_src/Stream/internal/SinkEndReason.ts +13 -14
  1559. package/_src/Stream/internal/Take.ts +21 -21
  1560. package/_src/Stream/internal/util.ts +0 -2
  1561. package/_src/Subject/Atomic.ts +28 -0
  1562. package/_src/Subject/api.ts +18 -0
  1563. package/_src/Subject/definition.ts +18 -0
  1564. package/_src/Subject.ts +5 -0
  1565. package/_src/SubscriptionRef.ts +58 -0
  1566. package/_src/Supervisor/api.ts +20 -16
  1567. package/_src/Supervisor/definition.ts +0 -1
  1568. package/_src/SupervisorPatch.ts +10 -6
  1569. package/_src/TExit/definition.ts +0 -8
  1570. package/_src/TFuture/api.ts +23 -17
  1571. package/_src/TFuture/definition.ts +2 -3
  1572. package/_src/TReentrantLock/api.ts +18 -14
  1573. package/_src/TReentrantLock/definition.ts +1 -8
  1574. package/_src/TRef/api.ts +80 -250
  1575. package/_src/TRef/constructors.ts +6 -6
  1576. package/_src/TRef/definition.ts +161 -45
  1577. package/_src/TRef/symbols.ts +19 -0
  1578. package/_src/TRef.ts +1 -0
  1579. package/_src/TSemaphore/api.ts +20 -19
  1580. package/_src/TSemaphore/constructors.ts +7 -0
  1581. package/_src/TSemaphore/definition.ts +1 -1
  1582. package/_src/collection/immutable/Conc/dropUntilIO.ts +19 -21
  1583. package/_src/collection/immutable/Conc/dropWhileIO.ts +21 -23
  1584. package/_src/collection/immutable/Conc/filterIO.ts +15 -17
  1585. package/_src/collection/immutable/Conc/findIO.ts +17 -19
  1586. package/_src/collection/immutable/Conc/mapIO.ts +12 -10
  1587. package/_src/collection/immutable/Conc/takeWhileIO.ts +27 -29
  1588. package/_src/data/Exit/foreachIO.ts +8 -10
  1589. package/_src/global.ts +11 -3
  1590. package/_src/index.ts +10 -1
  1591. package/_src/internal/Hub.ts +17 -27
  1592. package/_src/internal/IsFatal.ts +14 -12
  1593. package/_src/internal/MutableQueue.ts +8 -8
  1594. package/_src/internal/StackTraceBuilder.ts +1 -2
  1595. package/collection/immutable/Conc/dropUntilIO.d.ts +3 -3
  1596. package/collection/immutable/Conc/dropWhileIO.d.ts +3 -3
  1597. package/collection/immutable/Conc/filterIO.d.ts +3 -3
  1598. package/collection/immutable/Conc/findIO.d.ts +2 -2
  1599. package/collection/immutable/Conc/mapIO.d.ts +3 -3
  1600. package/collection/immutable/Conc/takeWhileIO.d.ts +3 -3
  1601. package/data/Exit/foreachIO.d.ts +3 -3
  1602. package/global.d.ts +11 -3
  1603. package/index.d.ts +10 -1
  1604. package/internal/HashedPair.d.ts +2 -2
  1605. package/internal/Hub.d.ts +2 -2
  1606. package/internal/IsFatal.d.ts +3 -3
  1607. package/internal/MutableQueue.d.ts +3 -3
  1608. package/package.json +4 -4
  1609. package/Channel/api/mapOutIOC.d.ts +0 -8
  1610. package/Channel/api/zipC.d.ts +0 -16
  1611. package/Fiber/FiberContext.d.ts +0 -153
  1612. package/Fiber/api/evalOn.d.ts +0 -7
  1613. package/Fiber/api/evalOnIO.d.ts +0 -9
  1614. package/Fiber/api/interruptAsFork.d.ts +0 -8
  1615. package/FiberState/api.d.ts +0 -7
  1616. package/FiberState/constructors.d.ts +0 -22
  1617. package/FiberState/definition.d.ts +0 -38
  1618. package/FiberState.d.ts +0 -3
  1619. package/IO/api/withRuntimeConfig.d.ts +0 -10
  1620. package/IO/api/zipC.d.ts +0 -13
  1621. package/Ref/Atomic/Atomic.d.ts +0 -18
  1622. package/Ref/Atomic/api.d.ts +0 -53
  1623. package/_cjs/Channel/api/mapOutIOC.cjs +0 -63
  1624. package/_cjs/Channel/api/mapOutIOC.cjs.map +0 -1
  1625. package/_cjs/Channel/api/zipC.cjs.map +0 -1
  1626. package/_cjs/Fiber/FiberContext.cjs +0 -1088
  1627. package/_cjs/Fiber/FiberContext.cjs.map +0 -1
  1628. package/_cjs/Fiber/api/evalOn.cjs.map +0 -1
  1629. package/_cjs/Fiber/api/evalOnIO.cjs +0 -31
  1630. package/_cjs/Fiber/api/evalOnIO.cjs.map +0 -1
  1631. package/_cjs/Fiber/api/interruptAsFork.cjs +0 -15
  1632. package/_cjs/Fiber/api/interruptAsFork.cjs.map +0 -1
  1633. package/_cjs/FiberState/api.cjs.map +0 -1
  1634. package/_cjs/FiberState/constructors.cjs.map +0 -1
  1635. package/_cjs/FiberState/definition.cjs.map +0 -1
  1636. package/_cjs/FiberState.cjs.map +0 -1
  1637. package/_cjs/IO/api/foreachC.cjs.map +0 -1
  1638. package/_cjs/IO/api/withRuntimeConfig.cjs.map +0 -1
  1639. package/_cjs/IO/api/zipC.cjs +0 -67
  1640. package/_cjs/IO/api/zipC.cjs.map +0 -1
  1641. package/_cjs/Ref/Atomic/Atomic.cjs +0 -64
  1642. package/_cjs/Ref/Atomic/Atomic.cjs.map +0 -1
  1643. package/_cjs/Ref/Atomic/api.cjs +0 -156
  1644. package/_cjs/Ref/Atomic/api.cjs.map +0 -1
  1645. package/_mjs/Channel/api/mapOutIOC.mjs +0 -32
  1646. package/_mjs/Channel/api/mapOutIOC.mjs.map +0 -1
  1647. package/_mjs/Channel/api/zipC.mjs +0 -30
  1648. package/_mjs/Channel/api/zipC.mjs.map +0 -1
  1649. package/_mjs/Fiber/FiberContext.mjs +0 -1013
  1650. package/_mjs/Fiber/FiberContext.mjs.map +0 -1
  1651. package/_mjs/Fiber/api/evalOn.mjs +0 -17
  1652. package/_mjs/Fiber/api/evalOn.mjs.map +0 -1
  1653. package/_mjs/Fiber/api/evalOnIO.mjs +0 -16
  1654. package/_mjs/Fiber/api/evalOnIO.mjs.map +0 -1
  1655. package/_mjs/Fiber/api/interruptAsFork.mjs +0 -8
  1656. package/_mjs/Fiber/api/interruptAsFork.mjs.map +0 -1
  1657. package/_mjs/FiberState/api.mjs +0 -15
  1658. package/_mjs/FiberState/api.mjs.map +0 -1
  1659. package/_mjs/FiberState/constructors.mjs +0 -26
  1660. package/_mjs/FiberState/constructors.mjs.map +0 -1
  1661. package/_mjs/FiberState/definition.mjs +0 -26
  1662. package/_mjs/FiberState/definition.mjs.map +0 -1
  1663. package/_mjs/FiberState.mjs +0 -5
  1664. package/_mjs/FiberState.mjs.map +0 -1
  1665. package/_mjs/IO/api/foreachC.mjs +0 -118
  1666. package/_mjs/IO/api/foreachC.mjs.map +0 -1
  1667. package/_mjs/IO/api/withRuntimeConfig.mjs +0 -13
  1668. package/_mjs/IO/api/withRuntimeConfig.mjs.map +0 -1
  1669. package/_mjs/IO/api/zipC.mjs +0 -39
  1670. package/_mjs/IO/api/zipC.mjs.map +0 -1
  1671. package/_mjs/Ref/Atomic/Atomic.mjs +0 -47
  1672. package/_mjs/Ref/Atomic/Atomic.mjs.map +0 -1
  1673. package/_mjs/Ref/Atomic/api.mjs +0 -127
  1674. package/_mjs/Ref/Atomic/api.mjs.map +0 -1
  1675. package/_src/Channel/api/mapOutIOC.ts +0 -63
  1676. package/_src/Channel/api/zipC.ts +0 -104
  1677. package/_src/Fiber/FiberContext.ts +0 -1019
  1678. package/_src/Fiber/api/evalOn.ts +0 -17
  1679. package/_src/Fiber/api/evalOnIO.ts +0 -19
  1680. package/_src/Fiber/api/interruptAsFork.ts +0 -7
  1681. package/_src/FiberState/api.ts +0 -12
  1682. package/_src/FiberState/constructors.ts +0 -33
  1683. package/_src/FiberState/definition.ts +0 -44
  1684. package/_src/FiberState.ts +0 -5
  1685. package/_src/IO/api/withRuntimeConfig.ts +0 -20
  1686. package/_src/IO/api/zipC.ts +0 -74
  1687. package/_src/Ref/Atomic/Atomic.ts +0 -56
  1688. package/_src/Ref/Atomic/api.ts +0 -124
@@ -1,12 +1,12 @@
1
1
  import type { PHub } from "../Hub.js";
2
2
  import type { Canceler } from "../IO.js";
3
- import type { PQueue } from "../Queue.js";
3
+ import type { PDequeue, PEnqueue, PQueue } from "../Queue.js";
4
4
  import type { SinkEndReason } from "./internal/SinkEndReason.js";
5
- import type { Erase } from "@fncts/typelevel/Intersection.js";
6
5
 
7
6
  import { constVoid, identity, tuple } from "@fncts/base/data/function";
8
7
 
9
8
  import { MergeDecision } from "../Channel/internal/MergeDecision.js";
9
+ import { Hub } from "../Hub.js";
10
10
  import { Queue } from "../Queue.js";
11
11
  import { DEFAULT_CHUNK_SIZE, Stream } from "./definition.js";
12
12
  import { DebounceState } from "./internal/DebounceState.js";
@@ -37,28 +37,27 @@ export function absolve<R, E, E2, A>(self: Stream<R, E, Either<E2, A>>, __tsplus
37
37
  * Any sink can be used here, but see `Sink.foldWeightedM` and `Sink.foldUntilM` for
38
38
  * sinks that cover the common usecases.
39
39
  *
40
- * @tsplus fluent fncts.io.Stream aggregateAsync
40
+ * @tsplus pipeable fncts.io.Stream aggregateAsync
41
41
  */
42
- export function aggregateAsync_<R, E, A extends A1, R1, E1, A1, B>(
43
- stream: Stream<R, E, A>,
44
- sink: Sink<R1, E1, A1, A1, B>,
45
- __tsplusTrace?: string,
46
- ): Stream<R | R1, E | E1, B> {
47
- return stream.aggregateAsyncWithin(sink, Schedule.forever);
42
+ export function aggregateAsync<R1, E1, A1, B>(sink: Sink<R1, E1, A1, A1, B>, __tsplusTrace?: string) {
43
+ return <R, E, A extends A1>(stream: Stream<R, E, A>): Stream<R | R1, E | E1, B> => {
44
+ return stream.aggregateAsyncWithin(sink, Schedule.forever);
45
+ };
48
46
  }
49
47
 
50
48
  /**
51
49
  * Like `aggregateAsyncWithinEither`, but only returns the `Right` results.
52
50
  *
53
- * @tsplus fluent fncts.io.Stream aggregateAsyncWithin
51
+ * @tsplus pipeable fncts.io.Stream aggregateAsyncWithin
54
52
  */
55
- export function aggregateAsyncWithin_<R, E, A extends A1, R1, E1, A1, B, R2, C>(
56
- stream: Stream<R, E, A>,
53
+ export function aggregateAsyncWithin<R1, E1, A1, B, R2, C>(
57
54
  sink: Sink<R1, E1, A1, A1, B>,
58
55
  schedule: Schedule<R2, Maybe<B>, C>,
59
56
  __tsplusTrace?: string,
60
- ): Stream<R | R1 | R2, E | E1, B> {
61
- return stream.aggregateAsyncWithinEither(sink, schedule).filterMap((cb) => cb.match(() => Nothing(), Maybe.just));
57
+ ) {
58
+ return <R, E, A extends A1>(stream: Stream<R, E, A>): Stream<R | R1 | R2, E | E1, B> => {
59
+ return stream.aggregateAsyncWithinEither(sink, schedule).filterMap((cb) => cb.match(() => Nothing(), Maybe.just));
60
+ };
62
61
  }
63
62
 
64
63
  /**
@@ -73,131 +72,124 @@ export function aggregateAsyncWithin_<R, E, A extends A1, R1, E1, A1, B, R2, C>(
73
72
  * Aggregated elements will be fed into the schedule to determine the delays between
74
73
  * pulls.
75
74
  *
76
- * @tsplus fluent fncts.io.Stream aggregateAsyncWithinEither
75
+ * @tsplus pipeable fncts.io.Stream aggregateAsyncWithinEither
77
76
  */
78
- export function aggregateAsyncWithinEither_<R, E, A extends A1, R1, E1, A1, B, R2, C>(
79
- stream: Stream<R, E, A>,
77
+ export function aggregateAsyncWithinEither<R1, E1, A1, B, R2, C>(
80
78
  sink: Sink<R1, E1, A1, A1, B>,
81
79
  schedule: Schedule<R2, Maybe<B>, C>,
82
80
  __tsplusTrace?: string,
83
- ): Stream<R | R1 | R2, E | E1, Either<C, B>> {
84
- type LocalHandoffSignal = HandoffSignal<E | E1, A1>;
85
-
86
- const deps = IO.sequenceT(
87
- Handoff<LocalHandoffSignal>(),
88
- Ref.make<SinkEndReason>(new ScheduleEnd()),
89
- Ref.make(Conc.empty<A1>()),
90
- schedule.driver,
91
- Ref.make(false),
92
- );
93
-
94
- return Stream.fromIO(deps).flatMap(([handoff, sinkEndReason, sinkLeftovers, scheduleDriver, consumed]) => {
95
- const handoffProducer: Channel<never, E | E1, Conc<A1>, unknown, never, never, any> = Channel.readWithCause(
96
- (_in: Conc<A1>) => Channel.fromIO(handoff.offer(HandoffSignal.Emit(_in))).apSecond(handoffProducer),
97
- (cause: Cause<E | E1>) => Channel.fromIO(handoff.offer(HandoffSignal.Halt(cause))),
98
- (_: any) => Channel.fromIO(handoff.offer(HandoffSignal.End(new UpstreamEnd()))),
81
+ ) {
82
+ return <R, E, A extends A1>(stream: Stream<R, E, A>): Stream<R | R1 | R2, E | E1, Either<C, B>> => {
83
+ type LocalHandoffSignal = HandoffSignal<E | E1, A1>;
84
+ const deps = IO.sequenceT(
85
+ Handoff<LocalHandoffSignal>(),
86
+ Ref.make<SinkEndReason>(new ScheduleEnd()),
87
+ Ref.make(Conc.empty<A1>()),
88
+ schedule.driver,
89
+ Ref.make(false),
99
90
  );
100
-
101
- const handoffConsumer: Channel<never, unknown, unknown, unknown, E | E1, Conc<A1>, void> = Channel.unwrap(
102
- sinkLeftovers.getAndSet(Conc.empty<A>()).flatMap((leftovers) => {
103
- if (leftovers.isNonEmpty) {
104
- return consumed.set(true) > IO.succeedNow(Channel.writeNow(leftovers) > handoffConsumer);
105
- } else {
106
- return handoff.take.map((signal) =>
107
- signal.match({
108
- Emit: ({ els }) => Channel.fromIO(consumed.set(true)) > Channel.writeNow(els) > handoffConsumer,
109
- Halt: ({ error }) => Channel.failCause(error),
110
- End: ({ reason }) => {
111
- if (reason._tag === SinkEndReasonTag.ScheduleEnd) {
112
- return Channel.unwrap(
113
- consumed.get.map((p) =>
114
- p
115
- ? Channel.fromIO(sinkEndReason.set(new ScheduleEnd()))
116
- : Channel.fromIO(sinkEndReason.set(new ScheduleEnd())) > handoffConsumer,
91
+ return Stream.fromIO(deps).flatMap(([handoff, sinkEndReason, sinkLeftovers, scheduleDriver, consumed]) => {
92
+ const handoffProducer: Channel<never, E | E1, Conc<A1>, unknown, never, never, any> = Channel.readWithCause(
93
+ (_in: Conc<A1>) => Channel.fromIO(handoff.offer(HandoffSignal.Emit(_in))).zipRight(handoffProducer),
94
+ (cause: Cause<E | E1>) => Channel.fromIO(handoff.offer(HandoffSignal.Halt(cause))),
95
+ (_: any) => Channel.fromIO(handoff.offer(HandoffSignal.End(new UpstreamEnd()))),
96
+ );
97
+ const handoffConsumer: Channel<never, unknown, unknown, unknown, E | E1, Conc<A1>, void> = Channel.unwrap(
98
+ sinkLeftovers.getAndSet(Conc.empty<A>()).flatMap((leftovers) => {
99
+ if (leftovers.isNonEmpty) {
100
+ return consumed.set(true) > IO.succeedNow(Channel.writeNow(leftovers) > handoffConsumer);
101
+ } else {
102
+ return handoff.take.map((signal) =>
103
+ signal.match({
104
+ Emit: ({ els }) => Channel.fromIO(consumed.set(true)) > Channel.writeNow(els) > handoffConsumer,
105
+ Halt: ({ error }) => Channel.failCause(error),
106
+ End: ({ reason }) => {
107
+ if (reason._tag === SinkEndReasonTag.ScheduleEnd) {
108
+ return Channel.unwrap(
109
+ consumed.get.map((p) =>
110
+ p
111
+ ? Channel.fromIO(sinkEndReason.set(new ScheduleEnd()))
112
+ : Channel.fromIO(sinkEndReason.set(new ScheduleEnd())) > handoffConsumer,
113
+ ),
114
+ );
115
+ } else {
116
+ return Channel.fromIO(sinkEndReason.set(reason));
117
+ }
118
+ },
119
+ }),
120
+ );
121
+ }
122
+ }),
123
+ );
124
+ function timeout(lastB: Maybe<B>, __tsplusTrace?: string): IO<R2, Nothing, C> {
125
+ return scheduleDriver.next(lastB);
126
+ }
127
+ const scheduledAggregator = (
128
+ sinkFiber: Fiber.Runtime<E | E1, readonly [Conc<Conc<A1>>, B]>,
129
+ scheduleFiber: Fiber.Runtime<Nothing, C>,
130
+ ): Channel<R1 | R2, unknown, unknown, unknown, E | E1, Conc<Either<C, B>>, any> => {
131
+ const forkSink =
132
+ consumed.set(false) > handoffConsumer.pipeToOrFail(sink.channel).doneCollect.runScoped.forkScoped;
133
+ function handleSide(leftovers: Conc<Conc<A1>>, b: B, c: Maybe<C>, __tsplusTrace?: string) {
134
+ return Channel.unwrap(
135
+ sinkLeftovers.set(leftovers.flatten) >
136
+ sinkEndReason.get.map((reason) =>
137
+ reason.match({
138
+ ScheduleEnd: () =>
139
+ Channel.unwrapScoped(
140
+ Do((Δ) => {
141
+ const consumed_ = Δ(consumed.get);
142
+ const sinkFiber = Δ(forkSink);
143
+ const scheduleFiber = Δ(timeout(Just(b)).forkScoped);
144
+ const toWrite = c.match(
145
+ () => Conc(Either.right(b)),
146
+ (c) => Conc(Either.right(b), Either.left(c)),
147
+ );
148
+ return consumed_
149
+ ? Channel.write(toWrite) > scheduledAggregator(sinkFiber, scheduleFiber)
150
+ : scheduledAggregator(sinkFiber, scheduleFiber);
151
+ }),
117
152
  ),
118
- );
119
- } else {
120
- return Channel.fromIO(sinkEndReason.set(reason));
121
- }
122
- },
123
- }),
153
+ UpstreamEnd: () =>
154
+ Channel.unwrap(consumed.get.map((p) => (p ? Channel.write(Conc(Either.right(b))) : Channel.unit))),
155
+ }),
156
+ ),
124
157
  );
125
158
  }
126
- }),
127
- );
128
-
129
- function timeout(lastB: Maybe<B>, __tsplusTrace?: string): IO<R2, Nothing, C> {
130
- return scheduleDriver.next(lastB);
131
- }
132
-
133
- const scheduledAggregator = (
134
- sinkFiber: Fiber.Runtime<E | E1, readonly [Conc<Conc<A1>>, B]>,
135
- scheduleFiber: Fiber.Runtime<Nothing, C>,
136
- ): Channel<R1 | R2, unknown, unknown, unknown, E | E1, Conc<Either<C, B>>, any> => {
137
- const forkSink =
138
- consumed.set(false) > handoffConsumer.pipeToOrFail(sink.channel).doneCollect.runScoped.forkScoped;
139
-
140
- function handleSide(leftovers: Conc<Conc<A1>>, b: B, c: Maybe<C>, __tsplusTrace?: string) {
141
159
  return Channel.unwrap(
142
- sinkLeftovers.set(leftovers.flatten) >
143
- sinkEndReason.get.map((reason) =>
144
- reason.match({
145
- ScheduleEnd: () =>
146
- Channel.unwrapScoped(
147
- Do() => {
148
- const consumed_ = Δ(consumed.get);
149
- const sinkFiber = Δ(forkSink);
150
- const scheduleFiber = Δ(timeout(Just(b)).forkScoped);
151
- const toWrite = c.match(
152
- () => Conc(Either.right(b)),
153
- (c) => Conc(Either.right(b), Either.left(c)),
154
- );
155
- return consumed_
156
- ? Channel.write(toWrite) > scheduledAggregator(sinkFiber, scheduleFiber)
157
- : scheduledAggregator(sinkFiber, scheduleFiber);
158
- }),
160
+ sinkFiber.join.raceWith(
161
+ scheduleFiber.join,
162
+ (sinkExit, scheduleFiber) =>
163
+ scheduleFiber.interrupt >
164
+ IO.fromExit(sinkExit).map(([leftovers, b]) => handleSide(leftovers, b, Nothing())),
165
+ (scheduleExit, sinkFiber) =>
166
+ IO.fromExit(scheduleExit).matchCauseIO(
167
+ (cause) =>
168
+ cause.failureOrCause.match(
169
+ () =>
170
+ handoff.offer(HandoffSignal.End(new ScheduleEnd())).forkDaemon >
171
+ sinkFiber.join.map(([leftovers, b]) => handleSide(leftovers, b, Nothing())),
172
+ (cause) =>
173
+ handoff.offer(HandoffSignal.Halt(cause)).forkDaemon >
174
+ sinkFiber.join.map(([leftovers, b]) => handleSide(leftovers, b, Nothing())),
159
175
  ),
160
- UpstreamEnd: () =>
161
- Channel.unwrap(consumed.get.map((p) => (p ? Channel.write(Conc(Either.right(b))) : Channel.unit))),
162
- }),
163
- ),
176
+ (c) =>
177
+ handoff.offer(HandoffSignal.End(new ScheduleEnd())).forkDaemon >
178
+ sinkFiber.join.map(([leftovers, b]) => handleSide(leftovers, b, Just(c))),
179
+ ),
180
+ ),
164
181
  );
165
- }
166
-
167
- return Channel.unwrap(
168
- sinkFiber.join.raceWith(
169
- scheduleFiber.join,
170
- (sinkExit, scheduleFiber) =>
171
- scheduleFiber.interrupt >
172
- IO.fromExit(sinkExit).map(([leftovers, b]) => handleSide(leftovers, b, Nothing())),
173
- (scheduleExit, sinkFiber) =>
174
- IO.fromExit(scheduleExit).matchCauseIO(
175
- (cause) =>
176
- cause.failureOrCause.match(
177
- () =>
178
- handoff.offer(HandoffSignal.End(new ScheduleEnd())).forkDaemon >
179
- sinkFiber.join.map(([leftovers, b]) => handleSide(leftovers, b, Nothing())),
180
- (cause) =>
181
- handoff.offer(HandoffSignal.Halt(cause)).forkDaemon >
182
- sinkFiber.join.map(([leftovers, b]) => handleSide(leftovers, b, Nothing())),
183
- ),
184
- (c) =>
185
- handoff.offer(HandoffSignal.End(new ScheduleEnd())).forkDaemon >
186
- sinkFiber.join.map(([leftovers, b]) => handleSide(leftovers, b, Just(c))),
187
- ),
188
- ),
182
+ };
183
+ return Stream.unwrapScoped(
184
+ Do((Δ) => {
185
+ Δ(stream.channel.pipeTo(handoffProducer).runScoped.forkScoped);
186
+ const sinkFiber = Δ(handoffConsumer.pipeToOrFail(sink.channel).doneCollect.runScoped.forkScoped);
187
+ const scheduleFiber = Δ(timeout(Nothing()).forkScoped);
188
+ return new Stream(scheduledAggregator(sinkFiber, scheduleFiber));
189
+ }),
189
190
  );
190
- };
191
-
192
- return Stream.unwrapScoped(
193
- Do((Δ) => {
194
- Δ(stream.channel.pipeTo(handoffProducer).runScoped.forkScoped);
195
- const sinkFiber = Δ(handoffConsumer.pipeToOrFail(sink.channel).doneCollect.runScoped.forkScoped);
196
- const scheduleFiber = Δ(timeout(Nothing()).forkScoped);
197
- return new Stream(scheduledAggregator(sinkFiber, scheduleFiber));
198
- }),
199
- );
200
- });
191
+ });
192
+ };
201
193
  }
202
194
 
203
195
  /**
@@ -205,14 +197,12 @@ export function aggregateAsyncWithinEither_<R, E, A extends A1, R1, E1, A1, B, R
205
197
  * but keeps only elements from this stream.
206
198
  * The `that` stream would be run multiple times, for every element in the `this` stream.
207
199
  *
208
- * @tsplus fluent fncts.io.Stream apFirst
200
+ * @tsplus pipeable fncts.io.Stream zipLeft
209
201
  */
210
- export function apFirst_<R, R1, E, E1, A, A1>(
211
- stream: Stream<R, E, A>,
212
- that: Stream<R1, E1, A1>,
213
- __tsplusTrace?: string,
214
- ): Stream<R | R1, E | E1, A> {
215
- return stream.crossWith(that, (a, _) => a);
202
+ export function zipLeft<R1, E1, A1>(that: Stream<R1, E1, A1>, __tsplusTrace?: string) {
203
+ return <R, E, A>(stream: Stream<R, E, A>): Stream<R | R1, E | E1, A> => {
204
+ return stream.crossWith(that, (a, _) => a);
205
+ };
216
206
  }
217
207
 
218
208
  /**
@@ -220,23 +210,23 @@ export function apFirst_<R, R1, E, E1, A, A1>(
220
210
  * but keeps only elements from the other stream.
221
211
  * The `that` stream would be run multiple times, for every element in the `this` stream.
222
212
  *
223
- * @tsplus fluent fncts.io.Stream apSecond
213
+ * @tsplus pipeable fncts.io.Stream zipRight
224
214
  */
225
- export function apSecond_<R, R1, E, E1, A, A1>(
226
- stream: Stream<R, E, A>,
227
- that: Stream<R1, E1, A1>,
228
- __tsplusTrace?: string,
229
- ): Stream<R | R1, E | E1, A1> {
230
- return stream.crossWith(that, (_, b) => b);
215
+ export function zipRight<R1, E1, A1>(that: Stream<R1, E1, A1>, __tsplusTrace?: string) {
216
+ return <R, E, A>(stream: Stream<R, E, A>): Stream<R | R1, E | E1, A1> => {
217
+ return stream.crossWith(that, (_, b) => b);
218
+ };
231
219
  }
232
220
 
233
221
  /**
234
222
  * Maps the success values of this stream to the specified constant value.
235
223
  *
236
- * @tsplus fluent fncts.io.Stream as
224
+ * @tsplus pipeable fncts.io.Stream as
237
225
  */
238
- export function as_<R, E, A, B>(stream: Stream<R, E, A>, b: Lazy<B>, __tsplusTrace?: string): Stream<R, E, B> {
239
- return stream.map(() => b());
226
+ export function as<B>(b: Lazy<B>, __tsplusTrace?: string) {
227
+ return <R, E, A>(stream: Stream<R, E, A>): Stream<R, E, B> => {
228
+ return stream.map(() => b());
229
+ };
240
230
  }
241
231
 
242
232
  /**
@@ -357,14 +347,11 @@ export function asyncIO<R, E, A, R1 = R, E1 = E>(
357
347
  /**
358
348
  * Returns a stream whose failure and success channels have been mapped by
359
349
  * the specified pair of functions, `f` and `g`.
350
+ *
351
+ * @tsplus pipeable fncts.io.Stream bimap
360
352
  */
361
- export function bimap_<R, E, E1, A, A1>(
362
- stream: Stream<R, E, A>,
363
- f: (e: E) => E1,
364
- g: (a: A) => A1,
365
- __tsplusTrace?: string,
366
- ): Stream<R, E1, A1> {
367
- return stream.mapError(f).map(g);
353
+ export function bimap<E, E1, A, A1>(f: (e: E) => E1, g: (a: A) => A1, __tsplusTrace?: string) {
354
+ return <R>(stream: Stream<R, E, A>): Stream<R, E1, A1> => stream.mapError(f).map(g);
368
355
  }
369
356
 
370
357
  /**
@@ -373,7 +360,7 @@ export function bimap_<R, E, E1, A, A1>(
373
360
  *
374
361
  * @tsplus static fncts.io.StreamOps acquireRelease
375
362
  */
376
- export function acquireRelease_<R, E, A, R1>(
363
+ export function acquireRelease<R, E, A, R1>(
377
364
  acquire: IO<R, E, A>,
378
365
  release: (a: A) => IO<R1, never, unknown>,
379
366
  __tsplusTrace?: string,
@@ -387,7 +374,7 @@ export function acquireRelease_<R, E, A, R1>(
387
374
  *
388
375
  * @tsplus static fncts.io.StreamOps acquireReleaseExit
389
376
  */
390
- export function acquireReleaseExit_<R, E, A, R1>(
377
+ export function acquireReleaseExit<R, E, A, R1>(
391
378
  acquire: IO<R, E, A>,
392
379
  release: (a: A, exit: Exit<any, any>) => IO<R1, never, unknown>,
393
380
  __tsplusTrace?: string,
@@ -400,17 +387,14 @@ export function acquireReleaseExit_<R, E, A, R1>(
400
387
  * The driver stream will only ever advance of the `maximumLag` chunks before the
401
388
  * slowest downstream stream.
402
389
  *
403
- * @tsplus fluent fncts.io.Stream broadcast
390
+ * @tsplus pipeable fncts.io.Stream broadcast
404
391
  */
405
- export function broadcast_<R, E, A>(
406
- stream: Stream<R, E, A>,
407
- n: number,
408
- maximumLag: number,
409
- __tsplusTrace?: string,
410
- ): IO<R | Scope, never, Conc<Stream<unknown, E, A>>> {
411
- return stream
412
- .broadcastedQueues(n, maximumLag)
413
- .map((c) => c.map((hub) => Stream.fromQueueWithShutdown(hub).flattenTake));
392
+ export function broadcast(n: number, maximumLag: number, __tsplusTrace?: string) {
393
+ return <R, E, A>(stream: Stream<R, E, A>): IO<R | Scope, never, Conc<Stream<unknown, E, A>>> => {
394
+ return stream
395
+ .broadcastedQueues(n, maximumLag)
396
+ .map((c) => c.map((hub) => Stream.fromQueueWithShutdown(hub).flattenTake));
397
+ };
414
398
  }
415
399
 
416
400
  /**
@@ -418,16 +402,14 @@ export function broadcast_<R, E, A>(
418
402
  * The driver stream will only ever advance of the `maximumLag` chunks before the
419
403
  * slowest downstream stream.
420
404
  *
421
- * @tsplus fluent fncts.io.Stream broadcastDynamic
405
+ * @tsplus pipeable fncts.io.Stream broadcastDynamic
422
406
  */
423
- export function broadcastDynamic_<R, E, A>(
424
- stream: Stream<R, E, A>,
425
- maximumLag: number,
426
- __tsplusTrace?: string,
427
- ): IO<R | Scope, never, Stream<unknown, E, A>> {
428
- return stream
429
- .broadcastedQueuesDynamic(maximumLag)
430
- .map((scoped) => Stream.scoped(scoped).flatMap(Stream.fromQueue).flattenTake);
407
+ export function broadcastDynamic(maximumLag: number, __tsplusTrace?: string) {
408
+ return <R, E, A>(stream: Stream<R, E, A>): IO<R | Scope, never, Stream<unknown, E, A>> => {
409
+ return stream
410
+ .broadcastedQueuesDynamic(maximumLag)
411
+ .map((scoped) => Stream.scoped(scoped).flatMap(Stream.fromQueue).flattenTake);
412
+ };
431
413
  }
432
414
 
433
415
  /**
@@ -436,20 +418,17 @@ export function broadcastDynamic_<R, E, A>(
436
418
  *
437
419
  * Queues can unsubscribe from upstream by shutting down.
438
420
  *
439
- * @tsplus fluent fncts.io.Stream broadcastedQueues
421
+ * @tsplus pipeable fncts.io.Stream broadcastedQueues
440
422
  */
441
- export function broadcastedQueues_<R, E, A>(
442
- stream: Stream<R, E, A>,
443
- n: number,
444
- maximumLag: number,
445
- __tsplusTrace?: string,
446
- ): IO<R | Scope, never, Conc<Hub.Dequeue<unknown, never, Take<E, A>>>> {
447
- return Do((Δ) => {
448
- const hub = Δ(Hub.makeBounded<Take<E, A>>(maximumLag));
449
- const queues = Δ(IO.sequenceIterable(Conc.replicate(n, hub.subscribe)));
450
- Δ(stream.runIntoHubScoped(hub).fork);
451
- return queues;
452
- });
423
+ export function broadcastedQueues(n: number, maximumLag: number, __tsplusTrace?: string) {
424
+ return <R, E, A>(self: Stream<R, E, A>): IO<R | Scope, never, Conc<Queue.Dequeue<Take<E, A>>>> => {
425
+ return Do((Δ) => {
426
+ const hub = Δ(Hub.makeBounded<Take<E, A>>(maximumLag));
427
+ const queues = Δ(IO.sequenceIterable(Conc.replicate(n, hub.subscribe)));
428
+ Δ(self.runIntoHubScoped(hub).fork);
429
+ return queues;
430
+ });
431
+ };
453
432
  }
454
433
 
455
434
  /**
@@ -458,62 +437,62 @@ export function broadcastedQueues_<R, E, A>(
458
437
  *
459
438
  * Queues can unsubscribe from upstream by shutting down.
460
439
  *
461
- * @tsplus fluent fncts.io.Stream broadcastedQueuesDynamic
440
+ * @tsplus pipeable fncts.io.Stream broadcastedQueuesDynamic
462
441
  */
463
- export function broadcastedQueuesDynamic_<R, E, A>(
464
- stream: Stream<R, E, A>,
465
- maximumLag: number,
466
- __tsplusTrace?: string,
467
- ): IO<R | Scope, never, IO<Scope, never, Hub.Dequeue<never, never, Take<E, A>>>> {
468
- return stream.toHub(maximumLag).map((hub) => hub.subscribe);
442
+ export function broadcastedQueuesDynamic(maximumLag: number, __tsplusTrace?: string) {
443
+ return <R, E, A>(stream: Stream<R, E, A>): IO<R | Scope, never, IO<Scope, never, Queue.Dequeue<Take<E, A>>>> => {
444
+ return stream.toHub(maximumLag).map((hub) => hub.subscribe);
445
+ };
469
446
  }
470
447
 
471
448
  /**
472
449
  * Allows a faster producer to progress independently of a slower consumer by buffering
473
450
  * up to `capacity` elements in a queue.
474
451
  *
475
- * @tsplus fluent fncts.io.Stream buffer
476
- */
477
- export function buffer_<R, E, A>(stream: Stream<R, E, A>, capacity: number, __tsplusTrace?: string): Stream<R, E, A> {
478
- const queue = toQueueOfElements_(stream, capacity);
479
- return new Stream(
480
- Channel.unwrapScoped(
481
- queue.map((queue) => {
482
- const process: Channel<never, unknown, unknown, unknown, E, Conc<A>, void> = Channel.fromIO(queue.take).flatMap(
483
- (exit: Exit<Maybe<E>, A>) =>
452
+ * @tsplus pipeable fncts.io.Stream buffer
453
+ */
454
+ export function buffer(capacity: number, __tsplusTrace?: string) {
455
+ return <R, E, A>(stream: Stream<R, E, A>): Stream<R, E, A> => {
456
+ const queue = stream.toQueueOfElements(capacity);
457
+ return new Stream(
458
+ Channel.unwrapScoped(
459
+ queue.map((queue) => {
460
+ const process: Channel<never, unknown, unknown, unknown, E, Conc<A>, void> = Channel.fromIO(
461
+ queue.take,
462
+ ).flatMap((exit: Exit<Maybe<E>, A>) =>
484
463
  exit.match(
485
464
  (cause) => cause.flipCauseMaybe.match(() => Channel.endNow(undefined), Channel.failCauseNow),
486
- (value) => Channel.writeNow(Conc.single(value)).apSecond(process),
465
+ (value) => Channel.writeNow(Conc.single(value)).zipRight(process),
487
466
  ),
488
- );
489
- return process;
490
- }),
491
- ),
492
- );
467
+ );
468
+ return process;
469
+ }),
470
+ ),
471
+ );
472
+ };
493
473
  }
494
474
 
495
475
  /**
496
- * @tsplus fluent fncts.io.Stream bufferChunks
476
+ * @tsplus pipeable fncts.io.Stream bufferChunks
497
477
  */
498
- export function bufferChunks_<R, E, A>(
499
- stream: Stream<R, E, A>,
500
- capacity: number,
501
- __tsplusTrace?: string,
502
- ): Stream<R, E, A> {
503
- const queue = stream.toQueue(capacity);
504
- return new Stream(
505
- Channel.unwrapScoped(
506
- queue.map((queue) => {
507
- const process: Channel<never, unknown, unknown, unknown, E, Conc<A>, void> = Channel.fromIO(queue.take).flatMap(
508
- (take: Take<E, A>) =>
478
+ export function bufferChunks(capacity: number, __tsplusTrace?: string) {
479
+ return <R, E, A>(stream: Stream<R, E, A>): Stream<R, E, A> => {
480
+ const queue = stream.toQueue(capacity);
481
+ return new Stream(
482
+ Channel.unwrapScoped(
483
+ queue.map((queue) => {
484
+ const process: Channel<never, unknown, unknown, unknown, E, Conc<A>, void> = Channel.fromIO(
485
+ queue.take,
486
+ ).flatMap((take: Take<E, A>) =>
509
487
  take.match(Channel.endNow(undefined), Channel.failCauseNow, (value) =>
510
- Channel.writeNow(value).apSecond(process),
488
+ Channel.writeNow(value).zipRight(process),
511
489
  ),
512
- );
513
- return process;
514
- }),
515
- ),
516
- );
490
+ );
491
+ return process;
492
+ }),
493
+ ),
494
+ );
495
+ };
517
496
  }
518
497
 
519
498
  /**
@@ -524,17 +503,15 @@ export function bufferChunks_<R, E, A>(
524
503
  */
525
504
  export function bufferUnbounded<R, E, A>(stream: Stream<R, E, A>, __tsplusTrace?: string): Stream<R, E, A> {
526
505
  const queue = stream.toQueueUnbounded;
527
-
528
506
  return new Stream(
529
507
  Channel.unwrapScoped(
530
508
  queue.map((queue) => {
531
509
  const process: Channel<never, unknown, unknown, unknown, E, Conc<A>, void> = Channel.fromIO(queue.take).flatMap(
532
510
  (take) =>
533
511
  take.match(Channel.endNow(undefined), Channel.failCauseNow, (value) =>
534
- Channel.writeNow(value).apSecond(process),
512
+ Channel.writeNow(value).zipRight(process),
535
513
  ),
536
514
  );
537
-
538
515
  return process;
539
516
  }),
540
517
  ),
@@ -577,9 +554,9 @@ function bufferSignalConsumer<R, E, A>(
577
554
  ): Channel<R, unknown, unknown, unknown, E, Conc<A>, void> {
578
555
  const process: Channel<never, unknown, unknown, unknown, E, Conc<A>, void> = Channel.fromIO(queue.take).flatMap(
579
556
  ([take, promise]) =>
580
- Channel.fromIO(promise.succeed(undefined)).apSecond(
557
+ Channel.fromIO(promise.succeed(undefined)).zipRight(
581
558
  take.match(Channel.endNow(undefined), Channel.failCauseNow, (value) =>
582
- Channel.writeNow(value).apSecond(process),
559
+ Channel.writeNow(value).zipRight(process),
583
560
  ),
584
561
  ),
585
562
  );
@@ -590,14 +567,12 @@ function bufferSignalConsumer<R, E, A>(
590
567
  * Switches over to the stream produced by the provided function in case this one
591
568
  * fails with a typed error.
592
569
  *
593
- * @tsplus fluent fncts.io.Stream catchAll
570
+ * @tsplus pipeable fncts.io.Stream catchAll
594
571
  */
595
- export function catchAll_<R, R1, E, E1, A, A1>(
596
- stream: Stream<R, E, A>,
597
- f: (e: E) => Stream<R1, E1, A1>,
598
- __tsplusTrace?: string,
599
- ): Stream<R | R1, E1, A | A1> {
600
- return stream.catchAllCause((cause) => cause.failureOrCause.match(f, Stream.failCauseNow));
572
+ export function catchAll<R1, E, E1, A1>(f: (e: E) => Stream<R1, E1, A1>, __tsplusTrace?: string) {
573
+ return <R, A>(stream: Stream<R, E, A>): Stream<R | R1, E1, A | A1> => {
574
+ return stream.catchAllCause((cause) => cause.failureOrCause.match(f, Stream.failCauseNow));
575
+ };
601
576
  }
602
577
 
603
578
  /**
@@ -605,31 +580,27 @@ export function catchAll_<R, R1, E, E1, A, A1>(
605
580
  * fails. Allows recovery from all causes of failure, including interruption if the
606
581
  * stream is uninterruptible.
607
582
  *
608
- * @tsplus fluent fncts.io.Stream catchAllCause
583
+ * @tsplus pipeable fncts.io.Stream catchAllCause
609
584
  */
610
- export function catchAllCause_<R, R1, E, E1, A, A1>(
611
- stream: Stream<R, E, A>,
612
- f: (cause: Cause<E>) => Stream<R1, E1, A1>,
613
- __tsplusTrace?: string,
614
- ): Stream<R | R1, E1, A | A1> {
615
- const channel: Channel<R | R1, unknown, unknown, unknown, E1, Conc<A | A1>, unknown> = stream.channel.catchAllCause(
616
- (cause) => f(cause).channel,
617
- );
618
- return new Stream(channel);
585
+ export function catchAllCause<R1, E, E1, A1>(f: (cause: Cause<E>) => Stream<R1, E1, A1>, __tsplusTrace?: string) {
586
+ return <R, A>(stream: Stream<R, E, A>): Stream<R | R1, E1, A | A1> => {
587
+ const channel: Channel<R | R1, unknown, unknown, unknown, E1, Conc<A | A1>, unknown> = stream.channel.catchAllCause(
588
+ (cause) => f(cause).channel,
589
+ );
590
+ return new Stream(channel);
591
+ };
619
592
  }
620
593
 
621
594
  /**
622
595
  * Switches over to the stream produced by the provided function in case this one
623
596
  * fails with some typed error.
624
597
  *
625
- * @tsplus fluent fncts.io.Stream catchJust
598
+ * @tsplus pipeable fncts.io.Stream catchJust
626
599
  */
627
- export function catchJust_<R, R1, E, E1, A, A1>(
628
- stream: Stream<R, E, A>,
629
- pf: (e: E) => Maybe<Stream<R1, E1, A1>>,
630
- __tsplusTrace?: string,
631
- ): Stream<R | R1, E | E1, A | A1> {
632
- return stream.catchAll((e) => pf(e).getOrElse(Stream.failNow(e)));
600
+ export function catchJust<R1, E, E1, A1>(pf: (e: E) => Maybe<Stream<R1, E1, A1>>, __tsplusTrace?: string) {
601
+ return <R, A>(stream: Stream<R, E, A>): Stream<R | R1, E | E1, A | A1> => {
602
+ return stream.catchAll((e) => pf(e).getOrElse(Stream.failNow(e)));
603
+ };
633
604
  }
634
605
 
635
606
  /**
@@ -637,36 +608,32 @@ export function catchJust_<R, R1, E, E1, A, A1>(
637
608
  * fails with some errors. Allows recovery from all causes of failure, including interruption if the
638
609
  * stream is uninterruptible.
639
610
  *
640
- * @tsplus fluent fncts.io.Stream catchJustCause
611
+ * @tsplus pipeable fncts.io.Stream catchJustCause
641
612
  */
642
- export function catchJustCause_<R, R1, E, E1, A, A1>(
643
- stream: Stream<R, E, A>,
644
- pf: (e: Cause<E>) => Maybe<Stream<R1, E1, A1>>,
645
- __tsplusTrace?: string,
646
- ): Stream<R | R1, E | E1, A | A1> {
647
- return stream.catchAllCause((cause) => pf(cause).getOrElse(Stream.failCauseNow(cause)));
613
+ export function catchJustCause<R1, E, E1, A1>(pf: (e: Cause<E>) => Maybe<Stream<R1, E1, A1>>, __tsplusTrace?: string) {
614
+ return <R, A>(stream: Stream<R, E, A>): Stream<R | R1, E | E1, A | A1> => {
615
+ return stream.catchAllCause((cause) => pf(cause).getOrElse(Stream.failCauseNow(cause)));
616
+ };
648
617
  }
649
618
 
650
619
  /**
651
620
  * Returns a stream made of the concatenation in strict order of all the streams
652
621
  * produced by passing each element of this stream to `f`
653
622
  *
654
- * @tsplus fluent fncts.io.Stream flatMap
623
+ * @tsplus pipeable fncts.io.Stream flatMap
655
624
  */
656
- export function flatMap_<R, E, A, R1, E1, B>(
657
- stream: Stream<R, E, A>,
658
- f: (a: A) => Stream<R1, E1, B>,
659
- __tsplusTrace?: string,
660
- ): Stream<R | R1, E | E1, B> {
661
- return new Stream(
662
- stream.channel.concatMap((as) =>
663
- as
664
- .map((a) => f(a).channel)
665
- .foldLeft(Channel.unit as Channel<R1, unknown, unknown, unknown, E1, Conc<B>, unknown>, (s, a) =>
666
- s.flatMap(() => a),
667
- ),
668
- ),
669
- );
625
+ export function flatMap<A, R1, E1, B>(f: (a: A) => Stream<R1, E1, B>, __tsplusTrace?: string) {
626
+ return <R, E>(stream: Stream<R, E, A>): Stream<R | R1, E | E1, B> => {
627
+ return new Stream(
628
+ stream.channel.concatMap((as) =>
629
+ as
630
+ .map((a) => f(a).channel)
631
+ .foldLeft(Channel.unit as Channel<R1, unknown, unknown, unknown, E1, Conc<B>, unknown>, (s, a) =>
632
+ s.flatMap(() => a),
633
+ ),
634
+ ),
635
+ );
636
+ };
670
637
  }
671
638
 
672
639
  /**
@@ -682,14 +649,15 @@ export function chunks<R, E, A>(stream: Stream<R, E, A>, __tsplusTrace?: string)
682
649
  * Performs the specified stream transformation with the chunk structure of
683
650
  * the stream exposed.
684
651
  *
685
- * @tsplus fluent fncts.io.Stream chunksWith
652
+ * @tsplus pipeable fncts.io.Stream chunksWith
686
653
  */
687
654
  export function chunksWith<R, E, A, R1, E1, B>(
688
- self: Stream<R, E, A>,
689
655
  f: (_: Stream<R, E, Conc<A>>) => Stream<R1, E1, Conc<B>>,
690
656
  __tsplusTrace?: string,
691
- ): Stream<R1, E1, B> {
692
- return f(self.chunks).flattenChunks;
657
+ ) {
658
+ return (self: Stream<R, E, A>): Stream<R1, E1, B> => {
659
+ return f(self.chunks).flattenChunks;
660
+ };
693
661
  }
694
662
 
695
663
  function changesWithWriter<R, E, A>(
@@ -705,7 +673,7 @@ function changesWithWriter<R, E, A>(
705
673
  (o) => (f(o, o1) ? [Just(o1), os] : [Just(o1), os.append(o1)]),
706
674
  ),
707
675
  );
708
- return Channel.writeNow(newChunk).apSecond(changesWithWriter(f, newLast));
676
+ return Channel.writeNow(newChunk).zipRight(changesWithWriter(f, newLast));
709
677
  },
710
678
  Channel.failCauseNow,
711
679
  () => Channel.unit,
@@ -717,47 +685,41 @@ function changesWithWriter<R, E, A>(
717
685
  * previous element emitted, using the specified function to determine
718
686
  * whether two elements are equal.
719
687
  *
720
- * @tsplus fluent fncts.io.Stream changesWith
688
+ * @tsplus pipeable fncts.io.Stream changesWith
721
689
  */
722
- export function changesWith_<R, E, A>(
723
- stream: Stream<R, E, A>,
724
- f: (x: A, y: A) => boolean,
725
- __tsplusTrace?: string,
726
- ): Stream<R, E, A> {
727
- return new Stream(stream.channel.pipeTo(changesWithWriter<R, E, A>(f, Nothing())));
690
+ export function changesWith<A>(f: (x: A, y: A) => boolean, __tsplusTrace?: string) {
691
+ return <R, E>(stream: Stream<R, E, A>): Stream<R, E, A> => {
692
+ return new Stream(stream.channel.pipeTo(changesWithWriter<R, E, A>(f, Nothing())));
693
+ };
728
694
  }
729
695
 
730
696
  /**
731
697
  * Transforms all elements of the stream for as long as the specified partial function is defined.
732
698
  *
733
- * @tsplus fluent fncts.io.Stream collectWhile
699
+ * @tsplus pipeable fncts.io.Stream collectWhile
734
700
  */
735
- export function collectWhile_<R, E, A, A1>(
736
- stream: Stream<R, E, A>,
737
- pf: (a: A) => Maybe<A1>,
738
- __tsplusTrace?: string,
739
- ): Stream<R, E, A1> {
740
- const loop: Channel<R, E, Conc<A>, unknown, E, Conc<A1>, any> = Channel.readWith(
741
- (inp) => {
742
- const mapped = inp.collectWhile(pf);
743
-
744
- if (mapped.length === inp.length) {
745
- return Channel.writeNow(mapped).apSecond(loop);
746
- } else {
747
- return Channel.writeNow(mapped);
748
- }
749
- },
750
- Channel.failNow,
751
- Channel.succeedNow,
752
- );
753
-
754
- return new Stream(stream.channel.pipeTo(loop));
701
+ export function collectWhile<A, A1>(pf: (a: A) => Maybe<A1>, __tsplusTrace?: string) {
702
+ return <R, E>(stream: Stream<R, E, A>): Stream<R, E, A1> => {
703
+ const loop: Channel<R, E, Conc<A>, unknown, E, Conc<A1>, any> = Channel.readWith(
704
+ (inp) => {
705
+ const mapped = inp.collectWhile(pf);
706
+ if (mapped.length === inp.length) {
707
+ return Channel.writeNow(mapped).zipRight(loop);
708
+ } else {
709
+ return Channel.writeNow(mapped);
710
+ }
711
+ },
712
+ Channel.failNow,
713
+ Channel.succeedNow,
714
+ );
715
+ return new Stream(stream.channel.pipeTo(loop));
716
+ };
755
717
  }
756
718
 
757
719
  /**
758
720
  * Effectfully transforms all elements of the stream for as long as the specified partial function is defined.
759
721
  */
760
- export function collectWhileIO_<R, E, A, R1, E1, B>(
722
+ export function collectWhileIO<R, E, A, R1, E1, B>(
761
723
  stream: Stream<R, E, A>,
762
724
  pf: (a: A) => Maybe<IO<R1, E1, B>>,
763
725
  __tsplusTrace?: string,
@@ -792,11 +754,11 @@ function combineProducer<Err, Elem>(
792
754
  latch: Handoff<void>,
793
755
  __tsplusTrace?: string,
794
756
  ): Channel<never, Err, Elem, unknown, never, never, any> {
795
- return Channel.fromIO(latch.take).apSecond(
757
+ return Channel.fromIO(latch.take).zipRight(
796
758
  Channel.readWithCause(
797
- (value) => Channel.fromIO(handoff.offer(Exit.succeed(value))).apSecond(combineProducer(handoff, latch)),
759
+ (value) => Channel.fromIO(handoff.offer(Exit.succeed(value))).zipRight(combineProducer(handoff, latch)),
798
760
  (cause) => Channel.fromIO(handoff.offer(Exit.failCause(cause.map(Maybe.just)))),
799
- () => Channel.fromIO(handoff.offer(Exit.fail(Nothing()))).apSecond(combineProducer(handoff, latch)),
761
+ () => Channel.fromIO(handoff.offer(Exit.fail(Nothing()))).zipRight(combineProducer(handoff, latch)),
800
762
  ),
801
763
  );
802
764
  }
@@ -809,10 +771,9 @@ function combineProducer<Err, Elem>(
809
771
  *
810
772
  * Where possible, prefer `Stream#combineChunks` for a more efficient implementation.
811
773
  *
812
- * @tsplus fluent fncts.io.Stream combine
774
+ * @tsplus pipeable fncts.io.Stream combine
813
775
  */
814
- export function combine_<R, E, A, R1, E1, A1, S, R2, A2>(
815
- stream: Stream<R, E, A>,
776
+ export function combine<R, E, A, R1, E1, A1, S, R2, A2>(
816
777
  that: Stream<R1, E1, A1>,
817
778
  s: S,
818
779
  f: (
@@ -821,25 +782,27 @@ export function combine_<R, E, A, R1, E1, A1, S, R2, A2>(
821
782
  eff2: IO<R1, Maybe<E1>, A1>,
822
783
  ) => IO<R2, never, Exit<Maybe<E | E1>, readonly [A2, S]>>,
823
784
  __tsplusTrace?: string,
824
- ): Stream<R | R1 | R2, E | E1, A2> {
825
- return new Stream(
826
- Channel.unwrapScoped(
827
- Do((Δ) => {
828
- const left = Δ(Handoff<Exit<Maybe<E>, A>>());
829
- const right = Δ(Handoff<Exit<Maybe<E1>, A1>>());
830
- const latchL = Δ(Handoff<void>());
831
- const latchR = Δ(Handoff<void>());
832
- Δ(stream.channel.concatMap(Channel.writeChunk).pipeTo(combineProducer(left, latchL)).runScoped.fork);
833
- Δ(that.channel.concatMap(Channel.writeChunk).pipeTo(combineProducer(right, latchR)).runScoped.fork);
834
- return tuple(left, right, latchL, latchR);
835
- }).map(([left, right, latchL, latchR]) => {
836
- const pullLeft = latchL.offer(undefined).apSecond(left.take).flatMap(IO.fromExitNow);
837
- const pullRight = latchR.offer(undefined).apSecond(right.take).flatMap(IO.fromExitNow);
838
- return Stream.unfoldIO(s, (s) => f(s, pullLeft, pullRight).flatMap((exit) => IO.fromExitNow(exit).optional))
839
- .channel;
840
- }),
841
- ),
842
- );
785
+ ) {
786
+ return (stream: Stream<R, E, A>): Stream<R | R1 | R2, E | E1, A2> => {
787
+ return new Stream(
788
+ Channel.unwrapScoped(
789
+ Do((Δ) => {
790
+ const left = Δ(Handoff<Exit<Maybe<E>, A>>());
791
+ const right = Δ(Handoff<Exit<Maybe<E1>, A1>>());
792
+ const latchL = Δ(Handoff<void>());
793
+ const latchR = Δ(Handoff<void>());
794
+ Δ(stream.channel.concatMap(Channel.writeChunk).pipeTo(combineProducer(left, latchL)).runScoped.fork);
795
+ Δ(that.channel.concatMap(Channel.writeChunk).pipeTo(combineProducer(right, latchR)).runScoped.fork);
796
+ return tuple(left, right, latchL, latchR);
797
+ }).map(([left, right, latchL, latchR]) => {
798
+ const pullLeft = latchL.offer(undefined).zipRight(left.take).flatMap(IO.fromExitNow);
799
+ const pullRight = latchR.offer(undefined).zipRight(right.take).flatMap(IO.fromExitNow);
800
+ return Stream.unfoldIO(s, (s) => f(s, pullLeft, pullRight).flatMap((exit) => IO.fromExitNow(exit).optional))
801
+ .channel;
802
+ }),
803
+ ),
804
+ );
805
+ };
843
806
  }
844
807
 
845
808
  function combineChunksProducer<Err, Elem>(
@@ -847,11 +810,11 @@ function combineChunksProducer<Err, Elem>(
847
810
  latch: Handoff<void>,
848
811
  __tsplusTrace?: string,
849
812
  ): Channel<never, Err, Conc<Elem>, unknown, never, never, any> {
850
- return Channel.fromIO(latch.take).apSecond(
813
+ return Channel.fromIO(latch.take).zipRight(
851
814
  Channel.readWithCause(
852
- (chunk) => Channel.fromIO(handoff.offer(Take.chunk(chunk))).apSecond(combineChunksProducer(handoff, latch)),
815
+ (chunk) => Channel.fromIO(handoff.offer(Take.chunk(chunk))).zipRight(combineChunksProducer(handoff, latch)),
853
816
  (cause) => Channel.fromIO(handoff.offer(Take.failCause(cause))),
854
- () => Channel.fromIO(handoff.offer(Take.end)).apSecond(combineChunksProducer(handoff, latch)),
817
+ () => Channel.fromIO(handoff.offer(Take.end)).zipRight(combineChunksProducer(handoff, latch)),
855
818
  ),
856
819
  );
857
820
  }
@@ -862,10 +825,9 @@ function combineChunksProducer<Err, Elem>(
862
825
  * it to the destination stream. `f` can maintain some internal state to control
863
826
  * the combining process, with the initial state being specified by `s`.
864
827
  *
865
- * @tsplus fluent fncts.io.Stream combineChunks
828
+ * @tsplus pipeable fncts.io.Stream combineChunks
866
829
  */
867
- export function combineChunks_<R, E, A, R1, E1, A1, S, R2, A2>(
868
- stream: Stream<R, E, A>,
830
+ export function combineChunks<R, E, A, R1, E1, A1, S, R2, A2>(
869
831
  that: Stream<R1, E1, A1>,
870
832
  s: S,
871
833
  f: (
@@ -874,61 +836,59 @@ export function combineChunks_<R, E, A, R1, E1, A1, S, R2, A2>(
874
836
  r: IO<R1, Maybe<E1>, Conc<A1>>,
875
837
  ) => IO<R2, never, Exit<Maybe<E | E1>, readonly [Conc<A2>, S]>>,
876
838
  __tsplusTrace?: string,
877
- ): Stream<R1 | R | R2, E | E1, A2> {
878
- return new Stream(
879
- Channel.unwrapScoped(
880
- Do((Δ) => {
881
- const left = Δ(Handoff<Take<E, A>>());
882
- const right = Δ(Handoff<Take<E1, A1>>());
883
- const latchL = Δ(Handoff<void>());
884
- const latchR = Δ(Handoff<void>());
885
- Δ(stream.channel.pipeTo(combineChunksProducer(left, latchL)).runScoped.fork);
886
- Δ(that.channel.pipeTo(combineChunksProducer(right, latchR)).runScoped.fork);
887
- return tuple(left, right, latchL, latchR);
888
- }).map(([left, right, latchL, latchR]) => {
889
- const pullLeft = latchL
890
- .offer(undefined)
891
- .apSecond(left.take)
892
- .flatMap((take) => take.done);
893
- const pullRight = latchR
894
- .offer(undefined)
895
- .apSecond(right.take)
896
- .flatMap((take) => take.done);
897
- return Stream.unfoldChunkIO(s, (s) => f(s, pullLeft, pullRight).flatMap((exit) => IO.fromExit(exit).optional))
898
- .channel;
899
- }),
900
- ),
901
- );
839
+ ) {
840
+ return (stream: Stream<R, E, A>): Stream<R1 | R | R2, E | E1, A2> => {
841
+ return new Stream(
842
+ Channel.unwrapScoped(
843
+ Do((Δ) => {
844
+ const left = Δ(Handoff<Take<E, A>>());
845
+ const right = Δ(Handoff<Take<E1, A1>>());
846
+ const latchL = Δ(Handoff<void>());
847
+ const latchR = Δ(Handoff<void>());
848
+ Δ(stream.channel.pipeTo(combineChunksProducer(left, latchL)).runScoped.fork);
849
+ Δ(that.channel.pipeTo(combineChunksProducer(right, latchR)).runScoped.fork);
850
+ return tuple(left, right, latchL, latchR);
851
+ }).map(([left, right, latchL, latchR]) => {
852
+ const pullLeft = latchL
853
+ .offer(undefined)
854
+ .zipRight(left.take)
855
+ .flatMap((take) => take.done);
856
+ const pullRight = latchR
857
+ .offer(undefined)
858
+ .zipRight(right.take)
859
+ .flatMap((take) => take.done);
860
+ return Stream.unfoldChunkIO(s, (s) => f(s, pullLeft, pullRight).flatMap((exit) => IO.fromExit(exit).optional))
861
+ .channel;
862
+ }),
863
+ ),
864
+ );
865
+ };
902
866
  }
903
867
 
904
868
  /**
905
869
  * Concatenates the specified stream with this stream, resulting in a stream
906
870
  * that emits the elements from this stream and then the elements from the specified stream.
907
871
  *
908
- * @tsplus fluent fncts.io.Stream concat
872
+ * @tsplus pipeable fncts.io.Stream concat
909
873
  */
910
- export function concat_<R, R1, E, E1, A, A1>(
911
- stream: Stream<R, E, A>,
912
- that: Stream<R1, E1, A1>,
913
- __tsplusTrace?: string,
914
- ): Stream<R | R1, E | E1, A | A1> {
915
- return new Stream<R | R1, E | E1, A | A1>(stream.channel.apSecond(that.channel));
874
+ export function concat<R1, E1, A1>(that: Stream<R1, E1, A1>, __tsplusTrace?: string) {
875
+ return <R, E, A>(stream: Stream<R, E, A>): Stream<R | R1, E | E1, A | A1> => {
876
+ return new Stream<R | R1, E | E1, A | A1>(stream.channel.zipRight(that.channel));
877
+ };
916
878
  }
917
879
 
918
880
  /**
919
881
  * Composes this stream with the specified stream to create a cartesian product of elements.
920
882
  * The `that` stream would be run multiple times, for every element in the `this` stream.
921
883
  *
922
- * @tsplus fluent fncts.io.Stream cross
884
+ * @tsplus pipeable fncts.io.Stream cross
923
885
  */
924
- export function cross_<R, E, A, R1, E1, B>(
925
- stream: Stream<R, E, A>,
926
- that: Stream<R1, E1, B>,
927
- __tsplusTrace?: string,
928
- ): Stream<R | R1, E | E1, readonly [A, B]> {
929
- return new Stream(
930
- stream.channel.concatMap((as) => that.channel.mapOut((bs) => as.flatMap((a) => bs.map((b) => tuple(a, b))))),
931
- );
886
+ export function cross<R1, E1, B>(that: Stream<R1, E1, B>, __tsplusTrace?: string) {
887
+ return <R, E, A>(stream: Stream<R, E, A>): Stream<R | R1, E | E1, readonly [A, B]> => {
888
+ return new Stream(
889
+ stream.channel.concatMap((as) => that.channel.mapOut((bs) => as.flatMap((a) => bs.map((b) => tuple(a, b))))),
890
+ );
891
+ };
932
892
  }
933
893
 
934
894
  /**
@@ -936,107 +896,99 @@ export function cross_<R, E, A, R1, E1, B>(
936
896
  * with a specified function.
937
897
  * The `fb` stream would be run multiple times, for every element in the `fa` stream.
938
898
  *
939
- * @tsplus fluent fncts.io.Stream crossWith
899
+ * @tsplus pipeable fncts.io.Stream crossWith
940
900
  */
941
- export function crossWith_<R, E, A, R1, E1, B, C>(
942
- fa: Stream<R, E, A>,
943
- fb: Stream<R1, E1, B>,
944
- f: (a: A, b: B) => C,
945
- __tsplusTrace?: string,
946
- ): Stream<R | R1, E | E1, C> {
947
- return fa.flatMap((a) => fb.map((b) => f(a, b)));
901
+ export function crossWith<A, R1, E1, B, C>(fb: Stream<R1, E1, B>, f: (a: A, b: B) => C, __tsplusTrace?: string) {
902
+ return <R, E>(fa: Stream<R, E, A>): Stream<R | R1, E | E1, C> => {
903
+ return fa.flatMap((a) => fb.map((b) => f(a, b)));
904
+ };
948
905
  }
949
906
 
950
907
  /**
951
908
  * Provides some of the environment required to run this effect,
952
909
  * leaving the remainder `R0`.
953
910
  *
954
- * @tsplus fluent fncts.io.Stream contramapEnvironment
911
+ * @tsplus pipeable fncts.io.Stream contramapEnvironment
955
912
  */
956
- export function contramapEnvironment_<R, E, A, R0>(
957
- ra: Stream<R, E, A>,
958
- f: (r0: Environment<R0>) => Environment<R>,
959
- __tsplusTrace?: string,
960
- ): Stream<R0, E, A> {
961
- return Stream.environment<R0>().flatMap((r0) => ra.provideEnvironment(f(r0)));
913
+ export function contramapEnvironment<R, R0>(f: (r0: Environment<R0>) => Environment<R>, __tsplusTrace?: string) {
914
+ return <E, A>(ra: Stream<R, E, A>): Stream<R0, E, A> => {
915
+ return Stream.environment<R0>().flatMap((r0) => ra.provideEnvironment(f(r0)));
916
+ };
962
917
  }
963
918
 
964
919
  /**
965
- * @tsplus fluent fncts.io.Stream debounce
920
+ * @tsplus pipeable fncts.io.Stream debounce
966
921
  */
967
- export function debounce_<R, E, A>(
968
- stream: Stream<R, E, A>,
969
- duration: Lazy<Duration>,
970
- __tsplusTrace?: string,
971
- ): Stream<R, E, A> {
972
- return Stream.unwrap(
973
- IO.transplant((grafter) =>
974
- Do((Δ) => {
975
- const handoff = Δ(Handoff<HandoffSignal<E, A>>());
976
- function enqueue(last: Conc<A>, __tsplusTrace?: string) {
977
- return grafter(Clock.sleep(duration).as(last).fork).map((f) => consumer(DebounceState.Previous(f)));
978
- }
979
- const producer: Channel<R, E, Conc<A>, unknown, E, never, unknown> = Channel.readWithCause(
980
- (inp: Conc<A>) =>
981
- inp.last.match(
982
- () => producer,
983
- (last) => Channel.fromIO(handoff.offer(HandoffSignal.Emit(Conc.single(last)))).apSecond(producer),
984
- ),
985
- (cause: Cause<E>) => Channel.fromIO(handoff.offer(HandoffSignal.Halt(cause))),
986
- () => Channel.fromIO(handoff.offer(HandoffSignal.End(new UpstreamEnd()))),
987
- );
988
- function consumer(
989
- state: DebounceState<E, A>,
990
- __tsplusTrace?: string,
991
- ): Channel<R, unknown, unknown, unknown, E, Conc<A>, unknown> {
992
- return Channel.unwrap(
993
- state.match({
994
- NotStarted: () =>
995
- handoff.take.map((signal) =>
996
- signal.match({
997
- Emit: ({ els }) => Channel.unwrap(enqueue(els)),
998
- Halt: ({ error }) => Channel.failCauseNow(error),
999
- End: () => Channel.unit,
1000
- }),
1001
- ),
1002
- Current: ({ fiber }) =>
1003
- fiber.join.map((signal) =>
1004
- signal.match({
1005
- Emit: ({ els }) => Channel.unwrap(enqueue(els)),
1006
- Halt: ({ error }) => Channel.failCauseNow(error),
1007
- End: () => Channel.unit,
1008
- }),
1009
- ),
1010
- Previous: ({ fiber }) =>
1011
- fiber.join.raceWith(
1012
- handoff.take,
1013
- (ex, current) =>
1014
- ex.match(
1015
- (cause) => current.interrupt.as(Channel.failCauseNow(cause)),
1016
- (chunk) =>
1017
- IO.succeedNow(Channel.writeNow(chunk).apSecond(consumer(DebounceState.Current(current)))),
1018
- ),
1019
- (ex, previous) =>
1020
- ex.match(
1021
- (cause) => previous.interrupt.as(Channel.failCauseNow(cause)),
1022
- (signal) =>
1023
- signal.match({
1024
- Emit: ({ els }) => previous.interrupt.apSecond(enqueue(els)),
1025
- Halt: ({ error }) => previous.interrupt.as(Channel.failCauseNow(error)),
1026
- End: () => previous.join.map((chunk) => Channel.writeNow(chunk).apSecond(Channel.unit)),
1027
- }),
1028
- ),
1029
- ),
1030
- }),
922
+ export function debounce(duration: Lazy<Duration>, __tsplusTrace?: string) {
923
+ return <R, E, A>(stream: Stream<R, E, A>): Stream<R, E, A> => {
924
+ return Stream.unwrap(
925
+ IO.transplant((grafter) =>
926
+ Do((Δ) => {
927
+ const handoff = Δ(Handoff<HandoffSignal<E, A>>());
928
+ function enqueue(last: Conc<A>, __tsplusTrace?: string) {
929
+ return grafter(Clock.sleep(duration).as(last).fork).map((f) => consumer(DebounceState.Previous(f)));
930
+ }
931
+ const producer: Channel<R, E, Conc<A>, unknown, E, never, unknown> = Channel.readWithCause(
932
+ (inp: Conc<A>) =>
933
+ inp.last.match(
934
+ () => producer,
935
+ (last) => Channel.fromIO(handoff.offer(HandoffSignal.Emit(Conc.single(last)))).zipRight(producer),
936
+ ),
937
+ (cause: Cause<E>) => Channel.fromIO(handoff.offer(HandoffSignal.Halt(cause))),
938
+ () => Channel.fromIO(handoff.offer(HandoffSignal.End(new UpstreamEnd()))),
1031
939
  );
1032
- }
1033
-
1034
- return Stream.scoped(stream.channel.pipeTo(producer).runScoped.fork).apSecond(
1035
- new Stream(consumer(DebounceState.NotStarted)),
1036
- );
1037
- }),
1038
- ),
1039
- );
940
+ function consumer(
941
+ state: DebounceState<E, A>,
942
+ __tsplusTrace?: string,
943
+ ): Channel<R, unknown, unknown, unknown, E, Conc<A>, unknown> {
944
+ return Channel.unwrap(
945
+ state.match({
946
+ NotStarted: () =>
947
+ handoff.take.map((signal) =>
948
+ signal.match({
949
+ Emit: ({ els }) => Channel.unwrap(enqueue(els)),
950
+ Halt: ({ error }) => Channel.failCauseNow(error),
951
+ End: () => Channel.unit,
952
+ }),
953
+ ),
954
+ Current: ({ fiber }) =>
955
+ fiber.join.map((signal) =>
956
+ signal.match({
957
+ Emit: ({ els }) => Channel.unwrap(enqueue(els)),
958
+ Halt: ({ error }) => Channel.failCauseNow(error),
959
+ End: () => Channel.unit,
960
+ }),
961
+ ),
962
+ Previous: ({ fiber }) =>
963
+ fiber.join.raceWith(
964
+ handoff.take,
965
+ (ex, current) =>
966
+ ex.match(
967
+ (cause) => current.interrupt.as(Channel.failCauseNow(cause)),
968
+ (chunk) =>
969
+ IO.succeedNow(Channel.writeNow(chunk).zipRight(consumer(DebounceState.Current(current)))),
970
+ ),
971
+ (ex, previous) =>
972
+ ex.match(
973
+ (cause) => previous.interrupt.as(Channel.failCauseNow(cause)),
974
+ (signal) =>
975
+ signal.match({
976
+ Emit: ({ els }) => previous.interrupt.zipRight(enqueue(els)),
977
+ Halt: ({ error }) => previous.interrupt.as(Channel.failCauseNow(error)),
978
+ End: () => previous.join.map((chunk) => Channel.writeNow(chunk).zipRight(Channel.unit)),
979
+ }),
980
+ ),
981
+ ),
982
+ }),
983
+ );
984
+ }
985
+ return Stream.scoped(stream.channel.pipeTo(producer).runScoped.fork).zipRight(
986
+ new Stream(consumer(DebounceState.NotStarted)),
987
+ );
988
+ }),
989
+ ),
990
+ );
991
+ };
1040
992
  }
1041
993
 
1042
994
  function defaultIfEmptyWriter<R, E, A, R1, E1, B>(
@@ -1045,7 +997,7 @@ function defaultIfEmptyWriter<R, E, A, R1, E1, B>(
1045
997
  ): Channel<R | R1, E, Conc<A>, unknown, E | E1, Conc<A | B>, unknown> {
1046
998
  return Channel.readWith(
1047
999
  (i: Conc<A>) =>
1048
- i.isEmpty ? defaultIfEmptyWriter(fb) : Channel.writeNow(i).apSecond(Channel.id<E, Conc<A>, unknown>()),
1000
+ i.isEmpty ? defaultIfEmptyWriter(fb) : Channel.writeNow(i).zipRight(Channel.id<E, Conc<A>, unknown>()),
1049
1001
  Channel.failNow,
1050
1002
  () => fb.channel,
1051
1003
  );
@@ -1054,14 +1006,12 @@ function defaultIfEmptyWriter<R, E, A, R1, E1, B>(
1054
1006
  /**
1055
1007
  * Switches to the provided stream in case this one is empty.
1056
1008
  *
1057
- * @tsplus fluent fncts.io.Stream defaultIfEmpty
1009
+ * @tsplus pipeable fncts.io.Stream defaultIfEmpty
1058
1010
  */
1059
- export function defaultIfEmpty_<R, E, A, R1, E1, B>(
1060
- fa: Stream<R, E, A>,
1061
- fb: Stream<R1, E1, B>,
1062
- __tsplusTrace?: string,
1063
- ): Stream<R | R1, E | E1, A | B> {
1064
- return new Stream(fa.channel.pipeTo(defaultIfEmptyWriter(fb)));
1011
+ export function defaultIfEmpty<R1, E1, B>(fb: Stream<R1, E1, B>, __tsplusTrace?: string) {
1012
+ return <R, E, A>(fa: Stream<R, E, A>): Stream<R | R1, E | E1, A | B> => {
1013
+ return new Stream(fa.channel.pipeTo(defaultIfEmptyWriter(fb)));
1014
+ };
1065
1015
  }
1066
1016
 
1067
1017
  /**
@@ -1069,34 +1019,35 @@ export function defaultIfEmpty_<R, E, A, R1, E1, B>(
1069
1019
  * queues should receive which elements. The decide function will receive the indices of the queues
1070
1020
  * in the resulting list.
1071
1021
  *
1072
- * @tsplus fluent fncts.io.Stream distributedWith
1022
+ * @tsplus pipeable fncts.io.Stream distributedWith
1073
1023
  */
1074
- export function distributedWith_<R, E, A>(
1075
- self: Stream<R, E, A>,
1024
+ export function distributedWith<A>(
1076
1025
  n: number,
1077
1026
  maximumLag: number,
1078
1027
  decide: (_: A) => UIO<(_: number) => boolean>,
1079
1028
  __tsplusTrace?: string,
1080
- ): IO<R | Scope, never, Conc<Queue.Dequeue<Exit<Maybe<E>, A>>>> {
1081
- return Future.make<never, (a: A) => UIO<(_: symbol) => boolean>>().flatMap((p) =>
1082
- self
1083
- .distributedWithDynamic(
1084
- maximumLag,
1085
- (a) => p.await.flatMap((f) => f(a)),
1086
- () => IO.unit,
1087
- )
1088
- .flatMap((next) =>
1089
- IO.sequenceIterable(
1090
- Conc.range(0, n).map((id) => next.map(([key, queue]) => [[key, id], queue] as const)),
1091
- ).flatMap((entries) => {
1092
- const [mappings, queues] = entries.foldRight(
1093
- [HashMap.makeDefault<symbol, number>(), Conc.empty<Queue.Dequeue<Exit<Maybe<E>, A>>>()] as const,
1094
- ([mapping, queue], [mappings, queues]) => [mappings.set(mapping[0], mapping[1]), queues.append(queue)],
1095
- );
1096
- return p.succeed((a) => decide(a).map((f) => (key: symbol) => f(mappings.get(key).value!))).as(queues);
1097
- }),
1098
- ),
1099
- );
1029
+ ) {
1030
+ return <R, E>(self: Stream<R, E, A>): IO<R | Scope, never, Conc<Queue.Dequeue<Exit<Maybe<E>, A>>>> => {
1031
+ return Future.make<never, (a: A) => UIO<(_: symbol) => boolean>>().flatMap((p) =>
1032
+ self
1033
+ .distributedWithDynamic(
1034
+ maximumLag,
1035
+ (a) => p.await.flatMap((f) => f(a)),
1036
+ () => IO.unit,
1037
+ )
1038
+ .flatMap((next) =>
1039
+ IO.sequenceIterable(
1040
+ Conc.range(0, n).map((id) => next.map(([key, queue]) => [[key, id], queue] as const)),
1041
+ ).flatMap((entries) => {
1042
+ const [mappings, queues] = entries.foldRight(
1043
+ [HashMap.empty<symbol, number>(), Conc.empty<Queue.Dequeue<Exit<Maybe<E>, A>>>()] as const,
1044
+ ([mapping, queue], [mappings, queues]) => [mappings.set(mapping[0], mapping[1]), queues.append(queue)],
1045
+ );
1046
+ return p.succeed((a) => decide(a).map((f) => (key: symbol) => f(mappings.get(key).value!))).as(queues);
1047
+ }),
1048
+ ),
1049
+ );
1050
+ };
1100
1051
  }
1101
1052
 
1102
1053
  /**
@@ -1107,93 +1058,89 @@ export function distributedWith_<R, E, A>(
1107
1058
  * Downstream users can also shutdown queues manually. In this case the driver will
1108
1059
  * continue but no longer backpressure on them.
1109
1060
  *
1110
- * @tsplus fluent fncts.io.Stream distributedWithDynamic
1061
+ * @tsplus pipeable fncts.io.Stream distributedWithDynamic
1111
1062
  */
1112
- export function distributedWithDynamic_<R, E, A>(
1113
- self: Stream<R, E, A>,
1063
+ export function distributedWithDynamic<E, A>(
1114
1064
  maximumLag: number,
1115
1065
  decide: (a: A) => UIO<(_: symbol) => boolean>,
1116
1066
  done: (exit: Exit<Maybe<E>, never>) => UIO<any> = () => IO.unit,
1117
1067
  __tsplusTrace?: string,
1118
- ): IO<R | Scope, never, UIO<readonly [symbol, Queue.Dequeue<Exit<Maybe<E>, A>>]>> {
1119
- const offer = (queuesRef: Ref<HashMap<symbol, Queue<Exit<Maybe<E>, A>>>>) => (a: A) =>
1120
- Do((Δ) => {
1121
- const shouldProcess = Δ(decide(a));
1122
- const queues = Δ(queuesRef.get);
1123
- return Δ(
1124
- IO.foldLeft(queues, Conc.empty<symbol>(), (b, [id, queue]) => {
1125
- if (shouldProcess(id)) {
1126
- return queue.offer(Exit.succeed(a)).matchCauseIO(
1127
- (c) => (c.interrupted ? IO.succeedNow(b.append(id)) : IO.failCauseNow(c)),
1128
- () => IO.succeedNow(b),
1129
- );
1130
- } else {
1131
- return IO.succeedNow(b);
1132
- }
1133
- }).flatMap((ids) => (ids.isNonEmpty ? queuesRef.update((map) => map.removeMany(ids)) : IO.unit)),
1134
- );
1135
- });
1136
-
1137
- return Do((Δ) => {
1138
- const queuesRef = Δ(
1139
- IO.acquireRelease(Ref.make<HashMap<symbol, Queue<Exit<Maybe<E>, A>>>>(HashMap.makeDefault()), (ref) =>
1140
- ref.get.flatMap((qs) => IO.foreach(qs.values, (q) => q.shutdown)),
1141
- ),
1142
- );
1143
-
1144
- const add = Δ(
1068
+ ) {
1069
+ return <R>(self: Stream<R, E, A>): IO<R | Scope, never, UIO<readonly [symbol, Queue.Dequeue<Exit<Maybe<E>, A>>]>> => {
1070
+ const offer = (queuesRef: Ref<HashMap<symbol, Queue<Exit<Maybe<E>, A>>>>) => (a: A) =>
1145
1071
  Do((Δ) => {
1146
- const queuesLock = Δ(TSemaphore.make(1).commit);
1147
- const newQueue = Δ(
1148
- Ref.make<UIO<readonly [symbol, Queue<Exit<Maybe<E>, A>>]>>(
1149
- Do((Δ) => {
1150
- const queue = Δ(Queue.makeBounded<Exit<Maybe<E>, A>>(maximumLag));
1151
- const id = Δ(IO.succeed(Symbol()));
1152
- Δ(queuesRef.update((map) => map.set(id, queue)));
1153
- return tuple(id, queue);
1154
- }),
1155
- ),
1072
+ const shouldProcess = Δ(decide(a));
1073
+ const queues = Δ(queuesRef.get);
1074
+ return Δ(
1075
+ IO.foldLeft(queues, Conc.empty<symbol>(), (b, [id, queue]) => {
1076
+ if (shouldProcess(id)) {
1077
+ return queue.offer(Exit.succeed(a)).matchCauseIO(
1078
+ (c) => (c.interrupted ? IO.succeedNow(b.append(id)) : IO.failCauseNow(c)),
1079
+ () => IO.succeedNow(b),
1080
+ );
1081
+ } else {
1082
+ return IO.succeedNow(b);
1083
+ }
1084
+ }).flatMap((ids) => (ids.isNonEmpty ? queuesRef.update((map) => map.removeMany(ids)) : IO.unit)),
1156
1085
  );
1157
- const finalize = (endTake: Exit<Maybe<E>, never>): UIO<void> =>
1158
- queuesLock.withPermit(
1159
- newQueue
1160
- .set(
1161
- Do((Δ) => {
1162
- const queue = Δ(Queue.makeBounded<Exit<Maybe<E>, A>>(1));
1163
- Δ(queue.offer(endTake));
1164
- const id = Symbol();
1165
- Δ(queuesRef.update((map) => map.set(id, queue)));
1166
- return tuple(id, queue);
1167
- }),
1168
- )
1169
- .flatMap(() =>
1170
- Do((Δ) => {
1171
- const queues = Δ(queuesRef.get.map((map) => map.values));
1172
- Δ(
1173
- IO.foreach(queues, (queue) =>
1174
- queue
1175
- .offer(endTake)
1176
- .catchJustCause((c) => (c.interrupted ? Just(IO.unit) : Nothing<UIO<void>>())),
1177
- ),
1178
- );
1179
- Δ(done(endTake));
1180
- }),
1181
- ).asUnit,
1086
+ });
1087
+ return Do((Δ) => {
1088
+ const queuesRef = Δ(
1089
+ IO.acquireRelease(Ref.make<HashMap<symbol, Queue<Exit<Maybe<E>, A>>>>(HashMap.empty()), (ref) =>
1090
+ ref.get.flatMap((qs) => IO.foreach(qs.values, (q) => q.shutdown)),
1091
+ ),
1092
+ );
1093
+ const add = Δ(
1094
+ Do((Δ) => {
1095
+ const queuesLock = Δ(TSemaphore.make(1).commit);
1096
+ const newQueue = Δ(
1097
+ Ref.make<UIO<readonly [symbol, Queue<Exit<Maybe<E>, A>>]>>(
1098
+ Do((Δ) => {
1099
+ const queue = Δ(Queue.makeBounded<Exit<Maybe<E>, A>>(maximumLag));
1100
+ const id = Δ(IO.succeed(Symbol()));
1101
+ Δ(queuesRef.update((map) => map.set(id, queue)));
1102
+ return tuple(id, queue);
1103
+ }),
1104
+ ),
1182
1105
  );
1183
-
1184
- Δ(
1185
- self.runForeachScoped(offer(queuesRef)).matchCauseIO(
1186
- (cause) => finalize(Exit.failCause(cause.map(Maybe.just))),
1187
- () => finalize(Exit.fail(Nothing())),
1188
- ).fork,
1189
- );
1190
-
1191
- return queuesLock.withPermit(newQueue.get.flatten);
1192
- }),
1193
- );
1194
-
1195
- return add;
1196
- });
1106
+ const finalize = (endTake: Exit<Maybe<E>, never>): UIO<void> =>
1107
+ queuesLock.withPermit(
1108
+ newQueue
1109
+ .set(
1110
+ Do() => {
1111
+ const queue = Δ(Queue.makeBounded<Exit<Maybe<E>, A>>(1));
1112
+ Δ(queue.offer(endTake));
1113
+ const id = Symbol();
1114
+ Δ(queuesRef.update((map) => map.set(id, queue)));
1115
+ return tuple(id, queue);
1116
+ }),
1117
+ )
1118
+ .flatMap(() =>
1119
+ Do((Δ) => {
1120
+ const queues = Δ(queuesRef.get.map((map) => map.values));
1121
+ Δ(
1122
+ IO.foreach(queues, (queue) =>
1123
+ queue
1124
+ .offer(endTake)
1125
+ .catchJustCause((c) => (c.interrupted ? Just(IO.unit) : Nothing<UIO<void>>())),
1126
+ ),
1127
+ );
1128
+ Δ(done(endTake));
1129
+ }),
1130
+ ).asUnit,
1131
+ );
1132
+ Δ(
1133
+ self.runForeachScoped(offer(queuesRef)).matchCauseIO(
1134
+ (cause) => finalize(Exit.failCause(cause.map(Maybe.just))),
1135
+ () => finalize(Exit.fail(Nothing())),
1136
+ ).fork,
1137
+ );
1138
+ return queuesLock.withPermit(newQueue.get.flatten);
1139
+ }),
1140
+ );
1141
+ return add;
1142
+ });
1143
+ };
1197
1144
  }
1198
1145
 
1199
1146
  /**
@@ -1212,7 +1159,7 @@ function dropLoop<R, E, A>(r: number, __tsplusTrace?: string): Channel<R, E, Con
1212
1159
  const dropped = inp.drop(r);
1213
1160
  const leftover = Math.max(0, r - inp.length);
1214
1161
  const more = inp.isEmpty || leftover > 0;
1215
- return more ? dropLoop(leftover) : Channel.write(dropped).apSecond(Channel.id());
1162
+ return more ? dropLoop(leftover) : Channel.write(dropped).zipRight(Channel.id());
1216
1163
  },
1217
1164
  Channel.failNow,
1218
1165
  () => Channel.unit,
@@ -1222,30 +1169,36 @@ function dropLoop<R, E, A>(r: number, __tsplusTrace?: string): Channel<R, E, Con
1222
1169
  /**
1223
1170
  * Drops the specified number of elements from this stream.
1224
1171
  *
1225
- * @tsplus fluent fncts.io.Stream drop
1172
+ * @tsplus pipeable fncts.io.Stream drop
1226
1173
  */
1227
- export function drop_<R, E, A>(stream: Stream<R, E, A>, n: number, __tsplusTrace?: string): Stream<R, E, A> {
1228
- return new Stream(stream.channel.pipeTo(dropLoop(n)));
1174
+ export function drop(n: number, __tsplusTrace?: string) {
1175
+ return <R, E, A>(stream: Stream<R, E, A>): Stream<R, E, A> => {
1176
+ return new Stream(stream.channel.pipeTo(dropLoop(n)));
1177
+ };
1229
1178
  }
1230
1179
 
1231
1180
  /**
1232
1181
  * Drops all elements of the stream for as long as the specified predicate
1233
1182
  * evaluates to `true`.
1234
1183
  *
1235
- * @tsplus fluent fncts.io.Stream dropWhile
1184
+ * @tsplus pipeable fncts.io.Stream dropWhile
1236
1185
  */
1237
- export function dropWhile_<R, E, A>(stream: Stream<R, E, A>, p: Predicate<A>, __tsplusTrace?: string): Stream<R, E, A> {
1238
- return stream.pipeThrough(Sink.dropWhile(p));
1186
+ export function dropWhile<A>(p: Predicate<A>, __tsplusTrace?: string) {
1187
+ return <R, E>(stream: Stream<R, E, A>): Stream<R, E, A> => {
1188
+ return stream.pipeThrough(Sink.dropWhile(p));
1189
+ };
1239
1190
  }
1240
1191
 
1241
1192
  /**
1242
1193
  * Drops all elements of the stream until the specified predicate evaluates
1243
1194
  * to `true`.
1244
1195
  *
1245
- * @tsplus fluent fncts.io.Stream dropUntil
1196
+ * @tsplus pipeable fncts.io.Stream dropUntil
1246
1197
  */
1247
- export function dropUntil_<R, E, A>(stream: Stream<R, E, A>, p: Predicate<A>, __tsplusTrace?: string): Stream<R, E, A> {
1248
- return stream.dropWhile(p.invert).drop(1);
1198
+ export function dropUntil<A>(p: Predicate<A>, __tsplusTrace?: string) {
1199
+ return <R, E>(stream: Stream<R, E, A>): Stream<R, E, A> => {
1200
+ return stream.dropWhile(p.invert).drop(1);
1201
+ };
1249
1202
  }
1250
1203
 
1251
1204
  /**
@@ -1275,7 +1228,7 @@ function endWhenWriter<E, A, E1>(
1275
1228
  maybeExit.match(
1276
1229
  () =>
1277
1230
  Channel.readWith(
1278
- (inp: Conc<A>) => Channel.writeNow(inp).apSecond(endWhenWriter<E, A, E1>(fiber)),
1231
+ (inp: Conc<A>) => Channel.writeNow(inp).zipRight(endWhenWriter<E, A, E1>(fiber)),
1279
1232
  Channel.failNow,
1280
1233
  () => Channel.unit,
1281
1234
  ),
@@ -1294,25 +1247,21 @@ function endWhenWriter<E, A, E1>(
1294
1247
  *
1295
1248
  * If the IO completes with a failure, the stream will emit that failure.
1296
1249
  *
1297
- * @tsplus fluent fncts.io.Stream endWhen
1250
+ * @tsplus pipeable fncts.io.Stream endWhen
1298
1251
  */
1299
- export function endWhen_<R, E, A, R1, E1>(
1300
- stream: Stream<R, E, A>,
1301
- io: IO<R1, E1, any>,
1302
- __tsplusTrace?: string,
1303
- ): Stream<R | R1, E | E1, A> {
1304
- return new Stream(Channel.unwrapScoped(io.forkScoped.map((fiber) => stream.channel.pipeTo(endWhenWriter(fiber)))));
1252
+ export function endWhen<R1, E1>(io: IO<R1, E1, any>, __tsplusTrace?: string) {
1253
+ return <R, E, A>(stream: Stream<R, E, A>): Stream<R | R1, E | E1, A> => {
1254
+ return new Stream(Channel.unwrapScoped(io.forkScoped.map((fiber) => stream.channel.pipeTo(endWhenWriter(fiber)))));
1255
+ };
1305
1256
  }
1306
1257
 
1307
1258
  /**
1308
- * @tsplus fluent fncts.io.Stream ensuring
1259
+ * @tsplus pipeable fncts.io.Stream ensuring
1309
1260
  */
1310
- export function ensuring_<R, E, A, R1>(
1311
- self: Stream<R, E, A>,
1312
- finalizer: IO<R1, never, any>,
1313
- __tsplusTrace?: string,
1314
- ): Stream<R | R1, E, A> {
1315
- return new Stream(self.channel.ensuring(finalizer));
1261
+ export function ensuring<R1>(finalizer: IO<R1, never, any>, __tsplusTrace?: string) {
1262
+ return <R, E, A>(self: Stream<R, E, A>): Stream<R | R1, E, A> => {
1263
+ return new Stream(self.channel.ensuring(finalizer));
1264
+ };
1316
1265
  }
1317
1266
 
1318
1267
  /**
@@ -1392,27 +1341,23 @@ export function failCause<E>(cause: Lazy<Cause<E>>, __tsplusTrace?: string): Str
1392
1341
  }
1393
1342
 
1394
1343
  /**
1395
- * @tsplus fluent fncts.io.Stream filter
1344
+ * @tsplus pipeable fncts.io.Stream filter
1396
1345
  */
1397
- export function filter_<R, E, A, B extends A>(fa: Stream<R, E, A>, refinement: Refinement<A, B>): Stream<R, E, B>;
1398
- export function filter_<R, E, A>(fa: Stream<R, E, A>, predicate: Predicate<A>): Stream<R, E, A>;
1399
- export function filter_<R, E, A>(
1400
- fa: Stream<R, E, A>,
1401
- predicate: Predicate<A>,
1402
- __tsplusTrace?: string,
1403
- ): Stream<R, E, A> {
1404
- return fa.mapChunks((chunk) => chunk.filter(predicate));
1346
+ export function filter<A, B extends A>(refinement: Refinement<A, B>): <R, E>(fa: Stream<R, E, A>) => Stream<R, E, B>;
1347
+ export function filter<A>(predicate: Predicate<A>): <R, E>(fa: Stream<R, E, A>) => Stream<R, E, A>;
1348
+ export function filter<A>(predicate: Predicate<A>, __tsplusTrace?: string) {
1349
+ return <R, E>(fa: Stream<R, E, A>): Stream<R, E, A> => {
1350
+ return fa.mapChunks((chunk) => chunk.filter(predicate));
1351
+ };
1405
1352
  }
1406
1353
 
1407
1354
  /**
1408
- * @tsplus fluent fncts.io.Stream filterIO
1355
+ * @tsplus pipeable fncts.io.Stream filterIO
1409
1356
  */
1410
- export function filterIO_<R, E, A, R1, E1>(
1411
- fa: Stream<R, E, A>,
1412
- f: (a: A) => IO<R1, E1, boolean>,
1413
- __tsplusTrace?: string,
1414
- ): Stream<R | R1, E | E1, A> {
1415
- return new Stream(fa.channel.pipeTo(filterIOLoop(Iterable.empty<A>()[Symbol.iterator](), f)));
1357
+ export function filterIO<A, R1, E1>(f: (a: A) => IO<R1, E1, boolean>, __tsplusTrace?: string) {
1358
+ return <R, E>(fa: Stream<R, E, A>): Stream<R | R1, E | E1, A> => {
1359
+ return new Stream(fa.channel.pipeTo(filterIOLoop(Iterable.empty<A>()[Symbol.iterator](), f)));
1360
+ };
1416
1361
  }
1417
1362
 
1418
1363
  function filterIOLoop<R, E, A, R1, E1>(
@@ -1439,25 +1384,23 @@ function filterIOLoop<R, E, A, R1, E1>(
1439
1384
  }
1440
1385
 
1441
1386
  /**
1442
- * @tsplus fluent fncts.io.Stream filterMap
1387
+ * @tsplus pipeable fncts.io.Stream filterMap
1443
1388
  */
1444
- export function filterMap_<R, E, A, B>(
1445
- fa: Stream<R, E, A>,
1446
- f: (a: A) => Maybe<B>,
1447
- __tsplusTrace?: string,
1448
- ): Stream<R, E, B> {
1449
- return fa.mapChunks((chunk) => chunk.filterMap(f));
1389
+ export function filterMap<A, B>(f: (a: A) => Maybe<B>, __tsplusTrace?: string) {
1390
+ return <R, E>(fa: Stream<R, E, A>): Stream<R, E, B> => {
1391
+ return fa.mapChunks((chunk) => chunk.filterMap(f));
1392
+ };
1450
1393
  }
1451
1394
 
1452
1395
  /**
1453
- * @tsplus fluent fncts.io.Stream filterMapIO
1396
+ * @tsplus pipeable fncts.io.Stream filterMapIO
1454
1397
  */
1455
- export function filterMapIO_<R, E, A, R1, E1, B>(
1456
- fa: Stream<R, E, A>,
1457
- f: (a: A) => IO<R1, E1, Maybe<B>>,
1458
- __tsplusTrace?: string,
1459
- ): Stream<R | R1, E | E1, B> {
1460
- return new Stream(fa.channel.pipeTo(filterMapIOLoop<R, E, A, R1, E1, B>(Iterable.empty<A>()[Symbol.iterator](), f)));
1398
+ export function filterMapIO<A, R1, E1, B>(f: (a: A) => IO<R1, E1, Maybe<B>>, __tsplusTrace?: string) {
1399
+ return <R, E>(fa: Stream<R, E, A>): Stream<R | R1, E | E1, B> => {
1400
+ return new Stream(
1401
+ fa.channel.pipeTo(filterMapIOLoop<R, E, A, R1, E1, B>(Iterable.empty<A>()[Symbol.iterator](), f)),
1402
+ );
1403
+ };
1461
1404
  }
1462
1405
 
1463
1406
  function filterMapIOLoop<R, E, A, R1, E1, B>(
@@ -1487,45 +1430,45 @@ function filterMapIOLoop<R, E, A, R1, E1, B>(
1487
1430
  /**
1488
1431
  * Finds the first element emitted by this stream that satisfies the provided predicate.
1489
1432
  *
1490
- * @tsplus fluent fncts.io.Stream find
1433
+ * @tsplus pipeable fncts.io.Stream find
1491
1434
  */
1492
- export function find_<R, E, A>(stream: Stream<R, E, A>, p: Predicate<A>, __tsplusTrace?: string): Stream<R, E, A> {
1493
- const loop: Channel<R, E, Conc<A>, unknown, E, Conc<A>, unknown> = Channel.readWith(
1494
- (inp: Conc<A>) =>
1495
- inp.find(p).match(
1496
- () => loop,
1497
- (a) => Channel.writeNow(Conc.single(a)),
1498
- ),
1499
- Channel.failNow,
1500
- () => Channel.unit,
1501
- );
1502
- return new Stream(stream.channel.pipeTo(loop));
1435
+ export function find<A>(p: Predicate<A>, __tsplusTrace?: string) {
1436
+ return <R, E>(stream: Stream<R, E, A>): Stream<R, E, A> => {
1437
+ const loop: Channel<R, E, Conc<A>, unknown, E, Conc<A>, unknown> = Channel.readWith(
1438
+ (inp: Conc<A>) =>
1439
+ inp.find(p).match(
1440
+ () => loop,
1441
+ (a) => Channel.writeNow(Conc.single(a)),
1442
+ ),
1443
+ Channel.failNow,
1444
+ () => Channel.unit,
1445
+ );
1446
+ return new Stream(stream.channel.pipeTo(loop));
1447
+ };
1503
1448
  }
1504
1449
 
1505
1450
  /**
1506
1451
  * Finds the first element emitted by this stream that satisfies the provided effectful predicate.
1507
1452
  *
1508
- * @tsplus fluent fncts.io.Stream findIO
1453
+ * @tsplus pipeable fncts.io.Stream findIO
1509
1454
  */
1510
- export function findIO_<R, E, A, R1, E1>(
1511
- stream: Stream<R, E, A>,
1512
- f: (a: A) => IO<R1, E1, boolean>,
1513
- __tsplusTrace?: string,
1514
- ): Stream<R | R1, E | E1, A> {
1515
- const loop: Channel<R | R1, E, Conc<A>, unknown, E | E1, Conc<A>, unknown> = Channel.readWith(
1516
- (inp: Conc<A>) =>
1517
- Channel.unwrap(
1518
- inp.findIO(f).map((maybeA) =>
1519
- maybeA.match(
1520
- () => loop,
1521
- (a) => Channel.writeNow(Conc.single(a)),
1455
+ export function findIO<A, R1, E1>(f: (a: A) => IO<R1, E1, boolean>, __tsplusTrace?: string) {
1456
+ return <R, E>(stream: Stream<R, E, A>): Stream<R | R1, E | E1, A> => {
1457
+ const loop: Channel<R | R1, E, Conc<A>, unknown, E | E1, Conc<A>, unknown> = Channel.readWith(
1458
+ (inp: Conc<A>) =>
1459
+ Channel.unwrap(
1460
+ inp.findIO(f).map((maybeA) =>
1461
+ maybeA.match(
1462
+ () => loop,
1463
+ (a) => Channel.writeNow(Conc.single(a)),
1464
+ ),
1522
1465
  ),
1523
1466
  ),
1524
- ),
1525
- Channel.failNow,
1526
- () => Channel.unit,
1527
- );
1528
- return new Stream(stream.channel.pipeTo(loop));
1467
+ Channel.failNow,
1468
+ () => Channel.unit,
1469
+ );
1470
+ return new Stream(stream.channel.pipeTo(loop));
1471
+ };
1529
1472
  }
1530
1473
 
1531
1474
  /**
@@ -1565,16 +1508,13 @@ export function flattenExitOption<R, E, E1, A>(
1565
1508
  () => Channel.endNow<void>(undefined),
1566
1509
  ),
1567
1510
  );
1568
-
1569
- return Channel.writeNow(toEmit.filterMap((exit) => exit.match(() => Nothing(), Maybe.just))).apSecond(next);
1511
+ return Channel.writeNow(toEmit.filterMap((exit) => exit.match(() => Nothing(), Maybe.just))).zipRight(next);
1570
1512
  };
1571
-
1572
1513
  const process: Channel<R, E, Conc<Exit<Maybe<E1>, A>>, unknown, E | E1, Conc<A>, any> = Channel.readWithCause(
1573
1514
  (chunk) => processChunk(chunk, process),
1574
1515
  Channel.failCauseNow,
1575
1516
  (_) => Channel.endNow(undefined),
1576
1517
  );
1577
-
1578
1518
  return new Stream(stream.channel.pipeTo(process));
1579
1519
  }
1580
1520
 
@@ -1632,8 +1572,8 @@ export function fromChunk<O>(c: Lazy<Conc<O>>, __tsplusTrace?: string): Stream<n
1632
1572
  *
1633
1573
  * @tsplus static fncts.io.StreamOps scoped
1634
1574
  */
1635
- export function scoped<R, E, A>(stream: IO<R, E, A>, __tsplusTrace?: string): Stream<Exclude<R, Scope>, E, A> {
1636
- return new Stream(Channel.scoped(stream.map(Conc.single)));
1575
+ export function scoped<R, E, A>(stream: Lazy<IO<R, E, A>>, __tsplusTrace?: string): Stream<Exclude<R, Scope>, E, A> {
1576
+ return new Stream(Channel.scoped(stream().map(Conc.single)));
1637
1577
  }
1638
1578
 
1639
1579
  /**
@@ -1672,7 +1612,7 @@ function fromAsyncIterableLoop<A>(
1672
1612
  .then((result) =>
1673
1613
  result.done
1674
1614
  ? k(IO.succeedNow(Channel.end(undefined)))
1675
- : k(IO.succeedNow(Channel.writeNow(Conc.single(result.value)).apSecond(fromAsyncIterableLoop(iterator)))),
1615
+ : k(IO.succeedNow(Channel.writeNow(Conc.single(result.value)).zipRight(fromAsyncIterableLoop(iterator)))),
1676
1616
  );
1677
1617
  }),
1678
1618
  );
@@ -1703,7 +1643,7 @@ export function fromIterable<A>(
1703
1643
  return Channel.unit;
1704
1644
  }
1705
1645
  if (maxChunkSize === 1) {
1706
- return Channel.writeNow(Conc.single(result.value)).apSecond(loop(iterator));
1646
+ return Channel.writeNow(Conc.single(result.value)).zipRight(loop(iterator));
1707
1647
  } else {
1708
1648
  const out = Array<A>(maxChunkSize);
1709
1649
  out[0] = result.value;
@@ -1712,7 +1652,7 @@ export function fromIterable<A>(
1712
1652
  out[count] = result.value;
1713
1653
  count++;
1714
1654
  }
1715
- return Channel.writeNow(Conc.from(out)).apSecond(loop(iterator));
1655
+ return Channel.writeNow(Conc.from(out)).zipRight(loop(iterator));
1716
1656
  }
1717
1657
  }),
1718
1658
  );
@@ -1758,11 +1698,11 @@ export function fromPull<R, E, A>(
1758
1698
  *
1759
1699
  * @tsplus static fncts.io.StreamOps fromQueue
1760
1700
  */
1761
- export function fromQueue_<R, E, O>(
1762
- queue: PQueue<never, R, unknown, E, never, O>,
1701
+ export function fromQueue<RA, RB, EA, EB, A, B>(
1702
+ queue: PDequeue<RA, RB, EA, EB, A, B>,
1763
1703
  maxChunkSize: number = DEFAULT_CHUNK_SIZE,
1764
1704
  __tsplusTrace?: string,
1765
- ): Stream<R, E, O> {
1705
+ ): Stream<RB, EB, B> {
1766
1706
  return repeatIOChunkMaybe(
1767
1707
  queue
1768
1708
  .takeBetween(1, maxChunkSize)
@@ -1782,14 +1722,36 @@ export function fromQueue_<R, E, O>(
1782
1722
  /**
1783
1723
  * @tsplus static fncts.io.StreamOps fromQueueWithShutdown
1784
1724
  */
1785
- export function fromQueueWithShutdown<R, E, A>(
1786
- queue: PQueue<never, R, unknown, E, never, A>,
1725
+ export function fromQueueWithShutdown<RA, RB, EA, EB, A, B>(
1726
+ queue: PDequeue<RA, RB, EA, EB, A, B>,
1787
1727
  maxChunkSize: number = DEFAULT_CHUNK_SIZE,
1788
1728
  __tsplusTrace?: string,
1789
- ): Stream<R, E, A> {
1729
+ ): Stream<RB, EB, B> {
1790
1730
  return Stream.fromQueue(queue, maxChunkSize).ensuring(queue.shutdown);
1791
1731
  }
1792
1732
 
1733
+ /**
1734
+ * @tsplus static fncts.io.StreamOps fromHub
1735
+ */
1736
+ export function fromHub<A>(
1737
+ hub: Lazy<Hub<A>>,
1738
+ maxChunkSize = DEFAULT_CHUNK_SIZE,
1739
+ __tsplusTrace?: string,
1740
+ ): Stream<never, never, A> {
1741
+ return Stream.scoped(hub().subscribe).flatMap((queue) => Stream.fromQueueWithShutdown(queue, maxChunkSize));
1742
+ }
1743
+
1744
+ /**
1745
+ * @tsplus static fncts.io.StreamOps fromHubScoped
1746
+ */
1747
+ export function fromHubScoped<A>(
1748
+ hub: Lazy<Hub<A>>,
1749
+ maxChunkSize = DEFAULT_CHUNK_SIZE,
1750
+ __tsplusTrace?: string,
1751
+ ): IO<Scope, never, Stream<never, never, A>> {
1752
+ return IO.defer(hub().subscribe.map((queue) => Stream.fromQueueWithShutdown(queue, maxChunkSize)));
1753
+ }
1754
+
1793
1755
  /**
1794
1756
  * Halt a stream with the specified exception
1795
1757
  *
@@ -1817,7 +1779,7 @@ function haltWhenWriter<E, A, E1>(
1817
1779
  maybeExit.match(
1818
1780
  () =>
1819
1781
  Channel.readWith(
1820
- (i: Conc<A>) => Channel.writeNow(i).apSecond(haltWhenWriter<E, A, E1>(fiber)),
1782
+ (i: Conc<A>) => Channel.writeNow(i).zipRight(haltWhenWriter<E, A, E1>(fiber)),
1821
1783
  Channel.failNow,
1822
1784
  () => Channel.unit,
1823
1785
  ),
@@ -1837,14 +1799,12 @@ function haltWhenWriter<E, A, E1>(
1837
1799
  *
1838
1800
  * If the IO completes with a failure, the stream will emit that failure.
1839
1801
  *
1840
- * @tsplus fluent fncts.io.Stream haltWhen
1802
+ * @tsplus pipeable fncts.io.Stream haltWhen
1841
1803
  */
1842
- export function haltWhen_<R, E, A, R1, E1>(
1843
- fa: Stream<R, E, A>,
1844
- io: IO<R1, E1, any>,
1845
- __tsplusTrace?: string,
1846
- ): Stream<R | R1, E | E1, A> {
1847
- return new Stream(Channel.unwrapScoped(io.forkScoped.map((fiber) => fa.channel.pipeTo(haltWhenWriter(fiber)))));
1804
+ export function haltWhen<R1, E1>(io: IO<R1, E1, any>, __tsplusTrace?: string) {
1805
+ return <R, E, A>(fa: Stream<R, E, A>): Stream<R | R1, E | E1, A> => {
1806
+ return new Stream(Channel.unwrapScoped(io.forkScoped.map((fiber) => fa.channel.pipeTo(haltWhenWriter(fiber)))));
1807
+ };
1848
1808
  }
1849
1809
 
1850
1810
  function haltWhenFutureWriter<R, E, A, E1>(
@@ -1856,7 +1816,7 @@ function haltWhenFutureWriter<R, E, A, E1>(
1856
1816
  maybeIO.match(
1857
1817
  () =>
1858
1818
  Channel.readWith(
1859
- (i: Conc<A>) => Channel.writeNow(i).apSecond(haltWhenFutureWriter<R, E, A, E1>(future)),
1819
+ (i: Conc<A>) => Channel.writeNow(i).zipRight(haltWhenFutureWriter<R, E, A, E1>(future)),
1860
1820
  Channel.failNow,
1861
1821
  () => Channel.unit,
1862
1822
  ),
@@ -1871,25 +1831,21 @@ function haltWhenFutureWriter<R, E, A, E1>(
1871
1831
  *
1872
1832
  * If the promise completes with a failure, the stream will emit that failure.
1873
1833
  *
1874
- * @tsplus fluent fncts.io.Stream haltWhen
1834
+ * @tsplus pipeable fncts.io.Stream haltWhen
1875
1835
  */
1876
- export function haltWhenFuture_<R, E, A, E1>(
1877
- fa: Stream<R, E, A>,
1878
- future: Future<E1, any>,
1879
- __tsplusTrace?: string,
1880
- ): Stream<R, E | E1, A> {
1881
- return new Stream(fa.channel.pipeTo(haltWhenFutureWriter(future)));
1836
+ export function haltWhenFuture<E1>(future: Future<E1, any>, __tsplusTrace?: string) {
1837
+ return <R, E, A>(fa: Stream<R, E, A>): Stream<R, E | E1, A> => {
1838
+ return new Stream(fa.channel.pipeTo(haltWhenFutureWriter(future)));
1839
+ };
1882
1840
  }
1883
1841
 
1884
1842
  /**
1885
- * @tsplus fluent fncts.io.Stream interleave
1843
+ * @tsplus pipeable fncts.io.Stream interleave
1886
1844
  */
1887
- export function interleave_<R, E, A, R1, E1, B>(
1888
- sa: Stream<R, E, A>,
1889
- sb: Stream<R1, E1, B>,
1890
- __tsplusTrace?: string,
1891
- ): Stream<R | R1, E | E1, A | B> {
1892
- return sa.interleaveWith(sb, Stream.fromChunk(Conc(true, false)).forever);
1845
+ export function interleave<R1, E1, B>(sb: Stream<R1, E1, B>, __tsplusTrace?: string) {
1846
+ return <R, E, A>(sa: Stream<R, E, A>): Stream<R | R1, E | E1, A | B> => {
1847
+ return sa.interleaveWith(sb, Stream.fromChunk(Conc(true, false)).forever);
1848
+ };
1893
1849
  }
1894
1850
 
1895
1851
  function interleaveWithProducer<E, A>(
@@ -1897,7 +1853,7 @@ function interleaveWithProducer<E, A>(
1897
1853
  __tsplusTrace?: string,
1898
1854
  ): Channel<never, E, A, unknown, never, never, void> {
1899
1855
  return Channel.readWithCause(
1900
- (value: A) => Channel.fromIO(handoff.offer(Take.single(value))).apSecond(interleaveWithProducer(handoff)),
1856
+ (value: A) => Channel.fromIO(handoff.offer(Take.single(value))).zipRight(interleaveWithProducer(handoff)),
1901
1857
  (cause) => Channel.fromIO(handoff.offer(Take.failCause(cause))),
1902
1858
  () => Channel.fromIO(handoff.offer(Take.end)),
1903
1859
  );
@@ -1911,52 +1867,53 @@ function interleaveWithProducer<E, A>(
1911
1867
  * `b`. If either this stream or the specified stream are exhausted further
1912
1868
  * requests for values from that stream will be ignored.
1913
1869
  *
1914
- * @tsplus fluent fncts.io.Stream interleaveWith
1870
+ * @tsplus pipeable fncts.io.Stream interleaveWith
1915
1871
  */
1916
- export function interleaveWith_<R, E, A, R1, E1, B, R2, E2>(
1917
- sa: Stream<R, E, A>,
1872
+ export function interleaveWith<R1, E1, B, R2, E2>(
1918
1873
  sb: Stream<R1, E1, B>,
1919
1874
  b: Stream<R2, E2, boolean>,
1920
1875
  __tsplusTrace?: string,
1921
- ): Stream<R | R1 | R2, E | E1 | E2, A | B> {
1922
- return new Stream(
1923
- Channel.unwrapScoped(
1924
- Do((Δ) => {
1925
- const left = Δ(Handoff<Take<E, A>>());
1926
- const right = Δ(Handoff<Take<E1, B>>());
1927
- Δ(sa.channel.concatMap(Channel.writeChunk).pipeTo(interleaveWithProducer(left)).runScoped.fork);
1928
- Δ(sb.channel.concatMap(Channel.writeChunk).pipeTo(interleaveWithProducer(right)).runScoped.fork);
1929
- return tuple(left, right);
1930
- }).map(([left, right]) => {
1931
- const process = (
1932
- leftDone: boolean,
1933
- rightDone: boolean,
1934
- ): Channel<R | R1 | R2, E | E1 | E2, boolean, unknown, E | E1 | E2, Conc<A | B>, void> =>
1935
- Channel.readWithCause(
1936
- (b: boolean) => {
1937
- if (b && !leftDone) {
1938
- return Channel.fromIO(left.take).flatMap((take) =>
1939
- take.match(rightDone ? Channel.unit : process(true, rightDone), Channel.failCauseNow, (chunk) =>
1940
- Channel.writeNow(chunk).apSecond(process(leftDone, rightDone)),
1941
- ),
1942
- );
1943
- }
1944
- if (!b && !rightDone) {
1945
- return Channel.fromIO(right.take).flatMap((take) =>
1946
- take.match(leftDone ? Channel.unit : process(leftDone, true), Channel.failCauseNow, (chunk) =>
1947
- Channel.writeNow(chunk).apSecond(process(leftDone, rightDone)),
1948
- ),
1949
- );
1950
- }
1951
- return process(leftDone, rightDone);
1952
- },
1953
- Channel.failCauseNow,
1954
- () => Channel.unit,
1955
- );
1956
- return b.channel.concatMap(Channel.writeChunk).pipeTo(process(false, false));
1957
- }),
1958
- ),
1959
- );
1876
+ ) {
1877
+ return <R, E, A>(sa: Stream<R, E, A>): Stream<R | R1 | R2, E | E1 | E2, A | B> => {
1878
+ return new Stream(
1879
+ Channel.unwrapScoped(
1880
+ Do((Δ) => {
1881
+ const left = Δ(Handoff<Take<E, A>>());
1882
+ const right = Δ(Handoff<Take<E1, B>>());
1883
+ Δ(sa.channel.concatMap(Channel.writeChunk).pipeTo(interleaveWithProducer(left)).runScoped.fork);
1884
+ Δ(sb.channel.concatMap(Channel.writeChunk).pipeTo(interleaveWithProducer(right)).runScoped.fork);
1885
+ return tuple(left, right);
1886
+ }).map(([left, right]) => {
1887
+ const process = (
1888
+ leftDone: boolean,
1889
+ rightDone: boolean,
1890
+ ): Channel<R | R1 | R2, E | E1 | E2, boolean, unknown, E | E1 | E2, Conc<A | B>, void> =>
1891
+ Channel.readWithCause(
1892
+ (b: boolean) => {
1893
+ if (b && !leftDone) {
1894
+ return Channel.fromIO(left.take).flatMap((take) =>
1895
+ take.match(rightDone ? Channel.unit : process(true, rightDone), Channel.failCauseNow, (chunk) =>
1896
+ Channel.writeNow(chunk).zipRight(process(leftDone, rightDone)),
1897
+ ),
1898
+ );
1899
+ }
1900
+ if (!b && !rightDone) {
1901
+ return Channel.fromIO(right.take).flatMap((take) =>
1902
+ take.match(leftDone ? Channel.unit : process(leftDone, true), Channel.failCauseNow, (chunk) =>
1903
+ Channel.writeNow(chunk).zipRight(process(leftDone, rightDone)),
1904
+ ),
1905
+ );
1906
+ }
1907
+ return process(leftDone, rightDone);
1908
+ },
1909
+ Channel.failCauseNow,
1910
+ () => Channel.unit,
1911
+ );
1912
+ return b.channel.concatMap(Channel.writeChunk).pipeTo(process(false, false));
1913
+ }),
1914
+ ),
1915
+ );
1916
+ };
1960
1917
  }
1961
1918
 
1962
1919
  function intersperseWriter<R, E, A, A1>(
@@ -1977,7 +1934,7 @@ function intersperseWriter<R, E, A, A1>(
1977
1934
  builder.append(a);
1978
1935
  }
1979
1936
  });
1980
- return Channel.writeNow(builder.result()).apSecond(intersperseWriter(middle, flagResult));
1937
+ return Channel.writeNow(builder.result()).zipRight(intersperseWriter(middle, flagResult));
1981
1938
  },
1982
1939
  Channel.failNow,
1983
1940
  () => Channel.unit,
@@ -1987,7 +1944,7 @@ function intersperseWriter<R, E, A, A1>(
1987
1944
  /**
1988
1945
  * Intersperse stream with provided element
1989
1946
  */
1990
- export function intersperse_<R, E, A, A1>(
1947
+ export function intersperse<R, E, A, A1>(
1991
1948
  stream: Stream<R, E, A>,
1992
1949
  middle: A1,
1993
1950
  __tsplusTrace?: string,
@@ -2003,34 +1960,32 @@ export function intersperse_<R, E, A, A1>(
2003
1960
  * If the IO completes with a failure before the stream completes, the returned stream
2004
1961
  * will emit that failure.
2005
1962
  *
2006
- * @tsplus fluent fncts.io.Stream interruptWhen
1963
+ * @tsplus pipeable fncts.io.Stream interruptWhen
2007
1964
  */
2008
- export function interruptWhen_<R, E, A, R1, E1>(
2009
- stream: Stream<R, E, A>,
2010
- io: IO<R1, E1, any>,
2011
- __tsplusTrace?: string,
2012
- ): Stream<R | R1, E | E1, A> {
2013
- return new Stream(stream.channel.interruptWhen(io));
1965
+ export function interruptWhen<R1, E1>(io: IO<R1, E1, any>, __tsplusTrace?: string) {
1966
+ return <R, E, A>(stream: Stream<R, E, A>): Stream<R | R1, E | E1, A> => {
1967
+ return new Stream(stream.channel.interruptWhen(io));
1968
+ };
2014
1969
  }
2015
1970
 
2016
1971
  /**
2017
- * @tsplus fluent fncts.io.Stream interruptWhen
1972
+ * @tsplus pipeable fncts.io.Stream interruptWhen
2018
1973
  */
2019
- export function interruptWhenFuture_<R, E, A, E1>(
2020
- fa: Stream<R, E, A>,
2021
- future: Future<E1, unknown>,
2022
- __tsplusTrace?: string,
2023
- ): Stream<R, E | E1, A> {
2024
- return new Stream(fa.channel.interruptWhen(future));
1974
+ export function interruptWhenFuture<E1>(future: Future<E1, unknown>, __tsplusTrace?: string) {
1975
+ return <R, E, A>(fa: Stream<R, E, A>): Stream<R, E | E1, A> => {
1976
+ return new Stream(fa.channel.interruptWhen(future));
1977
+ };
2025
1978
  }
2026
1979
 
2027
1980
  /**
2028
1981
  * Transforms the elements of this stream using the supplied function.
2029
1982
  *
2030
- * @tsplus fluent fncts.io.Stream map
1983
+ * @tsplus pipeable fncts.io.Stream map
2031
1984
  */
2032
- export function map_<R, E, A, B>(stream: Stream<R, E, A>, f: (o: A) => B, __tsplusTrace?: string): Stream<R, E, B> {
2033
- return new Stream(stream.channel.mapOut((as) => as.map(f)));
1985
+ export function map<A, B>(f: (o: A) => B, __tsplusTrace?: string) {
1986
+ return <R, E>(stream: Stream<R, E, A>): Stream<R, E, B> => {
1987
+ return new Stream(stream.channel.mapOut((as) => as.map(f)));
1988
+ };
2034
1989
  }
2035
1990
 
2036
1991
  function mapAccumAccumulator<S, E = never, A = never, B = never>(
@@ -2041,7 +1996,7 @@ function mapAccumAccumulator<S, E = never, A = never, B = never>(
2041
1996
  return Channel.readWith(
2042
1997
  (inp: Conc<A>) => {
2043
1998
  const [nextS, bs] = inp.mapAccum(currS, f);
2044
- return Channel.writeNow(bs).apSecond(mapAccumAccumulator(nextS, f));
1999
+ return Channel.writeNow(bs).zipRight(mapAccumAccumulator(nextS, f));
2045
2000
  },
2046
2001
  Channel.failNow,
2047
2002
  () => Channel.unit,
@@ -2051,15 +2006,12 @@ function mapAccumAccumulator<S, E = never, A = never, B = never>(
2051
2006
  /**
2052
2007
  * Statefully maps over the elements of this stream to produce new elements.
2053
2008
  *
2054
- * @tsplus fluent fncts.io.Stream mapAccum
2009
+ * @tsplus pipeable fncts.io.Stream mapAccum
2055
2010
  */
2056
- export function mapAccum_<R, E, A, S, B>(
2057
- stream: Stream<R, E, A>,
2058
- s: S,
2059
- f: (s: S, a: A) => readonly [S, B],
2060
- __tsplusTrace?: string,
2061
- ): Stream<R, E, B> {
2062
- return new Stream(stream.channel.pipeTo(mapAccumAccumulator(s, f)));
2011
+ export function mapAccum<A, S, B>(s: S, f: (s: S, a: A) => readonly [S, B], __tsplusTrace?: string) {
2012
+ return <R, E>(stream: Stream<R, E, A>): Stream<R, E, B> => {
2013
+ return new Stream(stream.channel.pipeTo(mapAccumAccumulator(s, f)));
2014
+ };
2063
2015
  }
2064
2016
 
2065
2017
  function mapAccumIOAccumulator<R, E, A, R1, E1, S, B>(
@@ -2080,10 +2032,10 @@ function mapAccumIOAccumulator<R, E, A, R1, E1, S, B>(
2080
2032
  (e) => {
2081
2033
  const partialResult = outputChunk.result();
2082
2034
  return partialResult.isNonEmpty
2083
- ? Channel.writeNow(partialResult).apSecond(Channel.failNow(e))
2035
+ ? Channel.writeNow(partialResult).zipRight(Channel.failNow(e))
2084
2036
  : Channel.failNow(e);
2085
2037
  },
2086
- (s) => Channel.writeNow(outputChunk.result()).apSecond(mapAccumIOAccumulator<R, E, A, R1, E1, S, B>(s, f)),
2038
+ (s) => Channel.writeNow(outputChunk.result()).zipRight(mapAccumIOAccumulator<R, E, A, R1, E1, S, B>(s, f)),
2087
2039
  );
2088
2040
  }),
2089
2041
  ),
@@ -2096,136 +2048,119 @@ function mapAccumIOAccumulator<R, E, A, R1, E1, S, B>(
2096
2048
  * Statefully and effectfully maps over the elements of this stream to produce
2097
2049
  * new elements.
2098
2050
  *
2099
- * @tsplus fluent fncts.io.Stream mapAccumIO
2051
+ * @tsplus pipeable fncts.io.Stream mapAccumIO
2100
2052
  */
2101
- export function mapAccumIO_<R, E, A, R1, E1, S, B>(
2102
- stream: Stream<R, E, A>,
2053
+ export function mapAccumIO<A, R1, E1, S, B>(
2103
2054
  s: S,
2104
2055
  f: (s: S, a: A) => IO<R1, E1, readonly [B, S]>,
2105
2056
  __tsplusTrace?: string,
2106
- ): Stream<R | R1, E | E1, B> {
2107
- return new Stream(stream.channel.pipeTo(mapAccumIOAccumulator(s, f)));
2057
+ ) {
2058
+ return <R, E>(stream: Stream<R, E, A>): Stream<R | R1, E | E1, B> => {
2059
+ return new Stream(stream.channel.pipeTo(mapAccumIOAccumulator(s, f)));
2060
+ };
2108
2061
  }
2109
2062
 
2110
2063
  /**
2111
2064
  * Transforms the chunks emitted by this stream.
2112
2065
  *
2113
- * @tsplus fluent fncts.io.Stream mapChunks
2066
+ * @tsplus pipeable fncts.io.Stream mapChunks
2114
2067
  */
2115
- export function mapChunks_<R, E, A, A1>(
2116
- stream: Stream<R, E, A>,
2117
- f: (chunk: Conc<A>) => Conc<A1>,
2118
- __tsplusTrace?: string,
2119
- ): Stream<R, E, A1> {
2120
- return new Stream(stream.channel.mapOut(f));
2068
+ export function mapChunks<A, A1>(f: (chunk: Conc<A>) => Conc<A1>, __tsplusTrace?: string) {
2069
+ return <R, E>(stream: Stream<R, E, A>): Stream<R, E, A1> => {
2070
+ return new Stream(stream.channel.mapOut(f));
2071
+ };
2121
2072
  }
2122
2073
 
2123
2074
  /**
2124
2075
  * Effectfully transforms the chunks emitted by this stream.
2125
2076
  *
2126
- * @tsplus fluent fncts.io.Stream mapChunksIO
2077
+ * @tsplus pipeable fncts.io.Stream mapChunksIO
2127
2078
  */
2128
- export function mapChunksIO_<R, E, A, R1, E1, B>(
2129
- stream: Stream<R, E, A>,
2130
- f: (chunk: Conc<A>) => IO<R1, E1, Conc<B>>,
2131
- __tsplusTrace?: string,
2132
- ): Stream<R | R1, E | E1, B> {
2133
- return new Stream(stream.channel.mapOutIO(f));
2079
+ export function mapChunksIO<A, R1, E1, B>(f: (chunk: Conc<A>) => IO<R1, E1, Conc<B>>, __tsplusTrace?: string) {
2080
+ return <R, E>(stream: Stream<R, E, A>): Stream<R | R1, E | E1, B> => {
2081
+ return new Stream(stream.channel.mapOutIO(f));
2082
+ };
2134
2083
  }
2135
2084
 
2136
2085
  /**
2137
2086
  * Maps each element to an iterable, and flattens the iterables into the
2138
2087
  * output of this stream.
2139
2088
  *
2140
- * @tsplus fluent fncts.io.Stream mapConcat
2089
+ * @tsplus pipeable fncts.io.Stream mapConcat
2141
2090
  */
2142
- export function mapConcat_<R, E, A, B>(
2143
- stream: Stream<R, E, A>,
2144
- f: (a: A) => Iterable<B>,
2145
- __tsplusTrace?: string,
2146
- ): Stream<R, E, B> {
2147
- return stream.mapConcatChunk((a) => Conc.from(f(a)));
2091
+ export function mapConcat<A, B>(f: (a: A) => Iterable<B>, __tsplusTrace?: string) {
2092
+ return <R, E>(stream: Stream<R, E, A>): Stream<R, E, B> => {
2093
+ return stream.mapConcatChunk((a) => Conc.from(f(a)));
2094
+ };
2148
2095
  }
2149
2096
 
2150
2097
  /**
2151
2098
  * Maps each element to a chunk, and flattens the chunks into the output of
2152
2099
  * this stream.
2153
2100
  *
2154
- * @tsplus fluent fncts.io.Stream mapConcatChunk
2101
+ * @tsplus pipeable fncts.io.Stream mapConcatChunk
2155
2102
  */
2156
- export function mapConcatChunk_<R, E, A, B>(
2157
- stream: Stream<R, E, A>,
2158
- f: (a: A) => Conc<B>,
2159
- __tsplusTrace?: string,
2160
- ): Stream<R, E, B> {
2161
- return stream.mapChunks((c) => c.flatMap(f));
2103
+ export function mapConcatChunk<A, B>(f: (a: A) => Conc<B>, __tsplusTrace?: string) {
2104
+ return <R, E>(stream: Stream<R, E, A>): Stream<R, E, B> => {
2105
+ return stream.mapChunks((c) => c.flatMap(f));
2106
+ };
2162
2107
  }
2163
2108
 
2164
2109
  /**
2165
2110
  * Effectfully maps each element to a chunk, and flattens the chunks into
2166
2111
  * the output of this stream.
2167
2112
  *
2168
- * @tsplus fluent fncts.io.Stream mapConcatChunkIO
2113
+ * @tsplus pipeable fncts.io.Stream mapConcatChunkIO
2169
2114
  */
2170
- export function mapConcatChunkIO_<R, E, A, R1, E1, B>(
2171
- stream: Stream<R, E, A>,
2172
- f: (a: A) => IO<R1, E1, Conc<B>>,
2173
- __tsplusTrace?: string,
2174
- ): Stream<R | R1, E | E1, B> {
2175
- return stream.mapIO(f).mapConcatChunk(identity);
2115
+ export function mapConcatChunkIO<A, R1, E1, B>(f: (a: A) => IO<R1, E1, Conc<B>>, __tsplusTrace?: string) {
2116
+ return <R, E>(stream: Stream<R, E, A>): Stream<R | R1, E | E1, B> => {
2117
+ return stream.mapIO(f).mapConcatChunk(identity);
2118
+ };
2176
2119
  }
2177
2120
 
2178
2121
  /**
2179
2122
  * Effectfully maps each element to an iterable, and flattens the iterables into
2180
2123
  * the output of this stream.
2181
2124
  *
2182
- * @tsplus fluent fncts.io.Stream mapConcatIO
2125
+ * @tsplus pipeable fncts.io.Stream mapConcatIO
2183
2126
  */
2184
- export function mapConcatIO_<R, E, A, R1, E1, B>(
2185
- stream: Stream<R, E, A>,
2186
- f: (a: A) => IO<R1, E1, Iterable<B>>,
2187
- __tsplusTrace?: string,
2188
- ): Stream<R | R1, E | E1, B> {
2189
- return stream.mapIO((a) => f(a).map(Conc.from)).mapConcatChunk(identity);
2127
+ export function mapConcatIO<A, R1, E1, B>(f: (a: A) => IO<R1, E1, Iterable<B>>, __tsplusTrace?: string) {
2128
+ return <R, E>(stream: Stream<R, E, A>): Stream<R | R1, E | E1, B> => {
2129
+ return stream.mapIO((a) => f(a).map(Conc.from)).mapConcatChunk(identity);
2130
+ };
2190
2131
  }
2191
2132
 
2192
2133
  /**
2193
2134
  * Transforms the errors emitted by this stream using `f`.
2194
2135
  *
2195
- * @tsplus fluent fncts.io.Stream mapError
2136
+ * @tsplus pipeable fncts.io.Stream mapError
2196
2137
  */
2197
- export function mapError_<R, E, E1, A>(
2198
- stream: Stream<R, E, A>,
2199
- f: (e: E) => E1,
2200
- __tsplusTrace?: string,
2201
- ): Stream<R, E1, A> {
2202
- return new Stream(stream.channel.mapError(f));
2138
+ export function mapError<E, E1>(f: (e: E) => E1, __tsplusTrace?: string) {
2139
+ return <R, A>(stream: Stream<R, E, A>): Stream<R, E1, A> => {
2140
+ return new Stream(stream.channel.mapError(f));
2141
+ };
2203
2142
  }
2204
2143
 
2205
2144
  /**
2206
2145
  * Transforms the full causes of failures emitted by this stream.
2207
2146
  *
2208
- * @tsplus fluent fncts.io.Stream mapErrorCause
2147
+ * @tsplus pipeable fncts.io.Stream mapErrorCause
2209
2148
  */
2210
- export function mapErrorCause_<R, E, A, E1>(
2211
- fa: Stream<R, E, A>,
2212
- f: (e: Cause<E>) => Cause<E1>,
2213
- __tsplusTrace?: string,
2214
- ): Stream<R, E1, A> {
2215
- return new Stream(fa.channel.mapErrorCause(f));
2149
+ export function mapErrorCause<E, E1>(f: (e: Cause<E>) => Cause<E1>, __tsplusTrace?: string) {
2150
+ return <R, A>(fa: Stream<R, E, A>): Stream<R, E1, A> => {
2151
+ return new Stream(fa.channel.mapErrorCause(f));
2152
+ };
2216
2153
  }
2217
2154
 
2218
2155
  /**
2219
2156
  * Maps over elements of the stream with the specified effectful function.
2220
2157
  *
2221
- * @tsplus fluent fncts.io.Stream mapIO
2158
+ * @tsplus pipeable fncts.io.Stream mapIO
2222
2159
  */
2223
- export function mapIO_<R, E, A, R1, E1, B>(
2224
- stream: Stream<R, E, A>,
2225
- f: (a: A) => IO<R1, E1, B>,
2226
- __tsplusTrace?: string,
2227
- ): Stream<R | R1, E | E1, B> {
2228
- return new Stream(stream.channel.pipeTo(mapIOLoop(Iterable.empty<A>()[Symbol.iterator](), f)));
2160
+ export function mapIO<A, R1, E1, B>(f: (a: A) => IO<R1, E1, B>, __tsplusTrace?: string) {
2161
+ return <R, E>(stream: Stream<R, E, A>): Stream<R | R1, E | E1, B> => {
2162
+ return new Stream(stream.channel.pipeTo(mapIOLoop(Iterable.empty<A>()[Symbol.iterator](), f)));
2163
+ };
2229
2164
  }
2230
2165
 
2231
2166
  function mapIOLoop<R, E, A, R1, E1, B>(
@@ -2254,15 +2189,12 @@ function mapIOLoop<R, E, A, R1, E1, B>(
2254
2189
  *
2255
2190
  * @note This combinator destroys the chunking structure. It's recommended to use chunkN afterwards.
2256
2191
  *
2257
- * @tsplus fluent fncts.io.Stream mapIOC
2192
+ * @tsplus pipeable fncts.io.Stream mapIOC
2258
2193
  */
2259
- export function mapIOC_<R, E, A, R1, E1, B>(
2260
- stream: Stream<R, E, A>,
2261
- n: number,
2262
- f: (a: A) => IO<R1, E1, B>,
2263
- __tsplusTrace?: string,
2264
- ): Stream<R | R1, E | E1, B> {
2265
- return new Stream(stream.channel.concatMap(Channel.writeChunk).mapOutIOC(n, f).mapOut(Conc.single));
2194
+ export function mapIOC<A, R1, E1, B>(n: number, f: (a: A) => IO<R1, E1, B>, __tsplusTrace?: string) {
2195
+ return <R, E>(stream: Stream<R, E, A>): Stream<R | R1, E | E1, B> => {
2196
+ return new Stream(stream.channel.concatMap(Channel.writeChunk).mapOutConcurrentIO(n, f).mapOut(Conc.single));
2197
+ };
2266
2198
  }
2267
2199
 
2268
2200
  /**
@@ -2271,16 +2203,17 @@ export function mapIOC_<R, E, A, R1, E1, B>(
2271
2203
  * concurrently. Up to `bufferSize` elements of the produced streams may be
2272
2204
  * buffered in memory by this operator.
2273
2205
  *
2274
- * @tsplus fluent fncts.io.Stream mergeMap
2206
+ * @tsplus pipeable fncts.io.Stream mergeMap
2275
2207
  */
2276
- export function mergeMap_<R, E, A, R1, E1, B>(
2277
- ma: Stream<R, E, A>,
2208
+ export function mergeMap<A, R1, E1, B>(
2278
2209
  f: (a: A) => Stream<R1, E1, B>,
2279
2210
  n: number,
2280
2211
  bufferSize = 16,
2281
2212
  __tsplusTrace?: string,
2282
- ): Stream<R | R1, E | E1, B> {
2283
- return new Stream(ma.channel.concatMap(Channel.writeChunk).mergeMap((a) => f(a).channel, n, bufferSize));
2213
+ ) {
2214
+ return <R, E>(ma: Stream<R, E, A>): Stream<R | R1, E | E1, B> => {
2215
+ return new Stream(ma.channel.concatMap(Channel.writeChunk).mergeMap((a) => f(a).channel, n, bufferSize));
2216
+ };
2284
2217
  }
2285
2218
 
2286
2219
  /**
@@ -2288,27 +2221,26 @@ export function mergeMap_<R, E, A, R1, E1, B>(
2288
2221
  * executing up to `n` invocations of `f` concurrently. The element order
2289
2222
  * is not enforced by this combinator, and elements may be reordered.
2290
2223
  *
2291
- * @tsplus fluent fncts.io.Stream mergeMapIO
2224
+ * @tsplus pipeable fncts.io.Stream mergeMapIO
2292
2225
  */
2293
- export function mergeMapIO_<R, E, A, R1, E1, B>(
2294
- stream: Stream<R, E, A>,
2226
+ export function mergeMapIO<A, R1, E1, B>(
2295
2227
  f: (a: A) => IO<R1, E1, B>,
2296
2228
  n: number,
2297
2229
  bufferSize = 16,
2298
2230
  __tsplusTrace?: string,
2299
- ): Stream<R | R1, E | E1, B> {
2300
- return stream.mergeMap((a) => Stream.fromIO(f(a)), n, bufferSize);
2231
+ ) {
2232
+ return <R, E>(stream: Stream<R, E, A>): Stream<R | R1, E | E1, B> => {
2233
+ return stream.mergeMap((a) => Stream.fromIO(f(a)), n, bufferSize);
2234
+ };
2301
2235
  }
2302
2236
 
2303
2237
  /**
2304
- * @tsplus fluent fncts.io.Stream mergeEither
2238
+ * @tsplus pipeable fncts.io.Stream mergeEither
2305
2239
  */
2306
- export function mergeEither_<R, E, A, R1, E1, B>(
2307
- fa: Stream<R, E, A>,
2308
- fb: Stream<R1, E1, B>,
2309
- __tsplusTrace?: string,
2310
- ): Stream<R | R1, E | E1, Either<A, B>> {
2311
- return fa.mergeWith(fb, Either.left, Either.right);
2240
+ export function mergeEither<R1, E1, B>(fb: Stream<R1, E1, B>, __tsplusTrace?: string) {
2241
+ return <R, E, A>(fa: Stream<R, E, A>): Stream<R | R1, E | E1, Either<A, B>> => {
2242
+ return fa.mergeWith(fb, Either.left, Either.right);
2243
+ };
2312
2244
  }
2313
2245
 
2314
2246
  export function mergeWithHandler<R, E>(
@@ -2322,25 +2254,26 @@ export function mergeWithHandler<R, E>(
2322
2254
  export type TerminationStrategy = "Left" | "Right" | "Both" | "Either";
2323
2255
 
2324
2256
  /**
2325
- * @tsplus fluent fncts.io.Stream mergeWith
2257
+ * @tsplus pipeable fncts.io.Stream mergeWith
2326
2258
  */
2327
- export function mergeWith_<R, E, A, R1, E1, A1, B, C>(
2328
- sa: Stream<R, E, A>,
2259
+ export function mergeWith<A, R1, E1, A1, B, C>(
2329
2260
  sb: Stream<R1, E1, A1>,
2330
2261
  l: (a: A) => B,
2331
2262
  r: (b: A1) => C,
2332
2263
  strategy: TerminationStrategy = "Both",
2333
2264
  __tsplusTrace?: string,
2334
- ): Stream<R | R1, E | E1, B | C> {
2335
- return new Stream<R | R1, E | E1, B | C>(
2336
- sa
2337
- .map(l)
2338
- .channel.mergeWith(
2339
- map_(sb, r).channel,
2340
- mergeWithHandler<R & R1, E | E1>(strategy === "Either" || strategy === "Left"),
2341
- mergeWithHandler<R & R1, E | E1>(strategy === "Either" || strategy === "Right"),
2342
- ),
2343
- );
2265
+ ) {
2266
+ return <R, E>(sa: Stream<R, E, A>): Stream<R | R1, E | E1, B | C> => {
2267
+ return new Stream<R | R1, E | E1, B | C>(
2268
+ sa
2269
+ .map(l)
2270
+ .channel.mergeWith(
2271
+ sb.map(r).channel,
2272
+ mergeWithHandler<R & R1, E | E1>(strategy === "Either" || strategy === "Left"),
2273
+ mergeWithHandler<R & R1, E | E1>(strategy === "Either" || strategy === "Right"),
2274
+ ),
2275
+ );
2276
+ };
2344
2277
  }
2345
2278
 
2346
2279
  /**
@@ -2348,14 +2281,12 @@ export function mergeWith_<R, E, A, R1, E1, A1, B, C>(
2348
2281
  *
2349
2282
  * Note: Unlike `IO.onError`, there is no guarantee that the provided effect will not be interrupted.
2350
2283
  *
2351
- * @tsplus fluent fncts.io.Stream onError
2284
+ * @tsplus pipeable fncts.io.Stream onError
2352
2285
  */
2353
- export function onError_<R, E, A, R1>(
2354
- stream: Stream<R, E, A>,
2355
- cleanup: (e: Cause<E>) => IO<R1, never, any>,
2356
- __tsplusTrace?: string,
2357
- ): Stream<R | R1, E, A> {
2358
- return stream.catchAllCause((cause) => fromIO(cleanup(cause).apSecond(IO.failCauseNow(cause))));
2286
+ export function onError<E, R1>(cleanup: (e: Cause<E>) => IO<R1, never, any>, __tsplusTrace?: string) {
2287
+ return <R, A>(stream: Stream<R, E, A>): Stream<R | R1, E, A> => {
2288
+ return stream.catchAllCause((cause) => fromIO(cleanup(cause).zipRight(IO.failCauseNow(cause))));
2289
+ };
2359
2290
  }
2360
2291
 
2361
2292
  /**
@@ -2363,14 +2294,12 @@ export function onError_<R, E, A, R1>(
2363
2294
  *
2364
2295
  * See also Stream#catchAll
2365
2296
  *
2366
- * @tsplus fluent fncts.io.Stream orElse
2297
+ * @tsplus pipeable fncts.io.Stream orElse
2367
2298
  */
2368
- export function orElse_<R, E, A, R1, E1, A1>(
2369
- stream: Stream<R, E, A>,
2370
- that: Lazy<Stream<R1, E1, A1>>,
2371
- __tsplusTrace?: string,
2372
- ): Stream<R | R1, E1, A | A1> {
2373
- return new Stream<R | R1, E1, A | A1>(stream.channel.orElse(that().channel));
2299
+ export function orElse<R1, E1, A1>(that: Lazy<Stream<R1, E1, A1>>, __tsplusTrace?: string) {
2300
+ return <R, E, A>(stream: Stream<R, E, A>): Stream<R | R1, E1, A | A1> => {
2301
+ return new Stream<R | R1, E1, A | A1>(stream.channel.orElse(that().channel));
2302
+ };
2374
2303
  }
2375
2304
 
2376
2305
  /**
@@ -2378,14 +2307,12 @@ export function orElse_<R, E, A, R1, E1, A1>(
2378
2307
  *
2379
2308
  * See also ZStream#catchAll
2380
2309
  *
2381
- * @tsplus fluent fncts.io.Stream orElseEither
2310
+ * @tsplus pipeable fncts.io.Stream orElseEither
2382
2311
  */
2383
- export function orElseEither_<R, E, A, R1, E1, A1>(
2384
- stream: Stream<R, E, A>,
2385
- that: Lazy<Stream<R1, E1, A1>>,
2386
- __tsplusTrace?: string,
2387
- ): Stream<R | R1, E1, Either<A, A1>> {
2388
- return stream.map(Either.left).orElse(that().map(Either.right));
2312
+ export function orElseEither<R1, E1, A1>(that: Lazy<Stream<R1, E1, A1>>, __tsplusTrace?: string) {
2313
+ return <R, E, A>(stream: Stream<R, E, A>): Stream<R | R1, E1, Either<A, A1>> => {
2314
+ return stream.map(Either.left).orElse(that().map(Either.right));
2315
+ };
2389
2316
  }
2390
2317
 
2391
2318
  /**
@@ -2393,14 +2320,12 @@ export function orElseEither_<R, E, A, R1, E1, A1>(
2393
2320
  *
2394
2321
  * See also Stream#catchAll
2395
2322
  *
2396
- * @tsplus fluent fncts.io.Stream orElseFail
2323
+ * @tsplus pipeable fncts.io.Stream orElseFail
2397
2324
  */
2398
- export function orElseFail_<R, E, A, E1>(
2399
- stream: Stream<R, E, A>,
2400
- e: Lazy<E1>,
2401
- __tsplusTrace?: string,
2402
- ): Stream<R, E1, A> {
2403
- return stream.orElse(Stream.failNow(e()));
2325
+ export function orElseFail<E1>(e: Lazy<E1>, __tsplusTrace?: string) {
2326
+ return <R, E, A>(stream: Stream<R, E, A>): Stream<R, E1, A> => {
2327
+ return stream.orElse(Stream.failNow(e()));
2328
+ };
2404
2329
  }
2405
2330
 
2406
2331
  /**
@@ -2408,7 +2333,7 @@ export function orElseFail_<R, E, A, E1>(
2408
2333
  *
2409
2334
  * See also Stream#catchAll.
2410
2335
  */
2411
- export function orElseOptional_<R, E, A, R1, E1, A1>(
2336
+ export function orElseOptional<R, E, A, R1, E1, A1>(
2412
2337
  stream: Stream<R, Maybe<E>, A>,
2413
2338
  that: Lazy<Stream<R1, Maybe<E1>, A1>>,
2414
2339
  __tsplusTrace?: string,
@@ -2424,85 +2349,69 @@ export function orElseOptional_<R, E, A, R1, E1, A1>(
2424
2349
  /**
2425
2350
  * Succeeds with the specified value if this one fails with a typed error.
2426
2351
  *
2427
- * @tsplus fluent fncts.io.Stream orElseSucceed
2352
+ * @tsplus pipeable fncts.io.Stream orElseSucceed
2428
2353
  */
2429
- export function orElseSucceed_<R, E, A, A1>(
2430
- stream: Stream<R, E, A>,
2431
- a: Lazy<A1>,
2432
- __tsplusTrace?: string,
2433
- ): Stream<R, never, A | A1> {
2434
- return stream.orElse(Stream.succeedNow(a()));
2354
+ export function orElseSucceed<A1>(a: Lazy<A1>, __tsplusTrace?: string) {
2355
+ return <R, E, A>(stream: Stream<R, E, A>): Stream<R, never, A | A1> => {
2356
+ return stream.orElse(Stream.succeedNow(a()));
2357
+ };
2435
2358
  }
2436
2359
 
2437
2360
  /**
2438
- * @tsplus fluent fncts.io.Stream pipeThrough
2361
+ * @tsplus pipeable fncts.io.Stream pipeThrough
2439
2362
  */
2440
- export function pipeThrough_<R, E, A, R1, E1, L, Z>(
2441
- ma: Stream<R, E, A>,
2442
- sa: Sink<R1, E1, A, L, Z>,
2443
- __tsplusTrace?: string,
2444
- ): Stream<R | R1, E | E1, L> {
2445
- return new Stream(ma.channel.pipeToOrFail(sa.channel));
2363
+ export function pipeThrough<A, R1, E1, L, Z>(sa: Sink<R1, E1, A, L, Z>, __tsplusTrace?: string) {
2364
+ return <R, E>(ma: Stream<R, E, A>): Stream<R | R1, E | E1, L> => {
2365
+ return new Stream(ma.channel.pipeToOrFail(sa.channel));
2366
+ };
2446
2367
  }
2447
2368
 
2448
2369
  /**
2449
2370
  * Provides the stream with its required environment, which eliminates
2450
2371
  * its dependency on `R`.
2451
2372
  *
2452
- * @tsplus fluent fncts.io.Stream provideEnvironment
2373
+ * @tsplus pipeable fncts.io.Stream provideEnvironment
2453
2374
  */
2454
- export function provideEnvironment_<R, E, A>(
2455
- ra: Stream<R, E, A>,
2456
- r: Environment<R>,
2457
- __tsplusTrace?: string,
2458
- ): Stream<never, E, A> {
2459
- return new Stream(ra.channel.provideEnvironment(r));
2375
+ export function provideEnvironment<R>(r: Environment<R>, __tsplusTrace?: string) {
2376
+ return <E, A>(ra: Stream<R, E, A>): Stream<never, E, A> => {
2377
+ return new Stream(ra.channel.provideEnvironment(r));
2378
+ };
2460
2379
  }
2461
2380
 
2462
2381
  /**
2463
- * @tsplus fluent fncts.io.Stream provideLayer
2382
+ * @tsplus pipeable fncts.io.Stream provideLayer
2464
2383
  */
2465
- export function provideLayer_<RIn, E, ROut, E1, A>(
2466
- self: Stream<ROut, E, A>,
2467
- layer: Layer<RIn, E1, ROut>,
2468
- __tsplusTrace?: string,
2469
- ): Stream<RIn, E | E1, A> {
2470
- return new Stream(Channel.unwrapScoped(layer.build.map((r) => self.channel.provideEnvironment(r))));
2384
+ export function provideLayer<RIn, ROut, E1>(layer: Layer<RIn, E1, ROut>, __tsplusTrace?: string) {
2385
+ return <E, A>(self: Stream<ROut, E, A>): Stream<RIn, E | E1, A> => {
2386
+ return new Stream(Channel.unwrapScoped(layer.build.map((r) => self.channel.provideEnvironment(r))));
2387
+ };
2471
2388
  }
2472
2389
 
2473
2390
  /**
2474
- * @tsplus fluent fncts.io.Stream provideSomeLayer
2391
+ * @tsplus pipeable fncts.io.Stream provideSomeLayer
2475
2392
  */
2476
- export function provideSomeLayer_<R, E, A, RIn, E1, ROut>(
2477
- self: Stream<R, E, A>,
2478
- layer: Layer<RIn, E1, ROut>,
2479
- __tsplusTrace?: string,
2480
- ): Stream<RIn | Exclude<R, ROut>, E | E1, A> {
2481
- // @ts-expect-error
2482
- return self.provideLayer(Layer.environment<RIn>().and(layer));
2393
+ export function provideSomeLayer<RIn, E1, ROut>(layer: Layer<RIn, E1, ROut>, __tsplusTrace?: string) {
2394
+ return <R, E, A>(self: Stream<R, E, A>): Stream<RIn | Exclude<R, ROut>, E | E1, A> => {
2395
+ // @ts-expect-error
2396
+ return self.provideLayer(Layer.environment<RIn>().and(layer));
2397
+ };
2483
2398
  }
2484
2399
 
2485
2400
  class Rechunker<A> {
2486
2401
  private builder: Array<A> = [];
2487
2402
  private pos = 0;
2488
-
2489
2403
  constructor(readonly n: number) {}
2490
-
2491
2404
  write(elem: A) {
2492
2405
  this.builder.push(elem);
2493
2406
  this.pos += 1;
2494
-
2495
2407
  if (this.pos === this.n) {
2496
2408
  const result = this.builder;
2497
2409
  this.builder = [];
2498
2410
  this.pos = 0;
2499
-
2500
2411
  return Conc.from(result);
2501
2412
  }
2502
-
2503
2413
  return null;
2504
2414
  }
2505
-
2506
2415
  emitOfNotEmpty(): Channel<never, unknown, unknown, unknown, never, Conc<A>, void> {
2507
2416
  if (this.pos !== 0) {
2508
2417
  return Channel.writeNow(Conc.from(this.builder));
@@ -2510,11 +2419,9 @@ class Rechunker<A> {
2510
2419
  return Channel.unit;
2511
2420
  }
2512
2421
  }
2513
-
2514
2422
  get isEmpty(): boolean {
2515
2423
  return this.pos === 0;
2516
2424
  }
2517
- /* eslint-enable */
2518
2425
  }
2519
2426
 
2520
2427
  function rechunkProcess<E, In>(
@@ -2525,7 +2432,7 @@ function rechunkProcess<E, In>(
2525
2432
  return Channel.readWithCause(
2526
2433
  (chunk: Conc<In>) => {
2527
2434
  if (chunk.length === target && rechunker.isEmpty) {
2528
- return Channel.writeNow(chunk).apSecond(rechunkProcess<E, In>(rechunker, target));
2435
+ return Channel.writeNow(chunk).zipRight(rechunkProcess<E, In>(rechunker, target));
2529
2436
  } else if (chunk.length > 0) {
2530
2437
  const chunks: Array<Conc<In>> = [];
2531
2438
  let result: Conc<In> | null = null;
@@ -2540,13 +2447,12 @@ function rechunkProcess<E, In>(
2540
2447
  result = null;
2541
2448
  }
2542
2449
  }
2543
-
2544
- return Channel.writeAll(chunks).apSecond(rechunkProcess<E, In>(rechunker, target));
2450
+ return Channel.writeAll(chunks).zipRight(rechunkProcess<E, In>(rechunker, target));
2545
2451
  } else {
2546
2452
  return rechunkProcess<E, In>(rechunker, target);
2547
2453
  }
2548
2454
  },
2549
- (cause) => rechunker.emitOfNotEmpty().apSecond(Channel.failCauseNow(cause)),
2455
+ (cause) => rechunker.emitOfNotEmpty().zipRight(Channel.failCauseNow(cause)),
2550
2456
  () => rechunker.emitOfNotEmpty(),
2551
2457
  );
2552
2458
  }
@@ -2556,10 +2462,12 @@ function rechunkProcess<E, In>(
2556
2462
  * `n` elements each.
2557
2463
  * The last chunk might contain less than `n` elements
2558
2464
  *
2559
- * @tsplus fluent fncts.io.Stream rechunk
2465
+ * @tsplus pipeable fncts.io.Stream rechunk
2560
2466
  */
2561
- export function rechunk_<R, E, A>(stream: Stream<R, E, A>, n: number, __tsplusTrace?: string): Stream<R, E, A> {
2562
- return new Stream(stream.channel.pipeTo(rechunkProcess(new Rechunker(n), n)));
2467
+ export function rechunk(n: number, __tsplusTrace?: string) {
2468
+ return <R, E, A>(stream: Stream<R, E, A>): Stream<R, E, A> => {
2469
+ return new Stream(stream.channel.pipeTo(rechunkProcess(new Rechunker(n), n)));
2470
+ };
2563
2471
  }
2564
2472
 
2565
2473
  /**
@@ -2614,14 +2522,12 @@ export function repeatIOChunkMaybe<R, E, A>(fa: IO<R, Maybe<E>, Conc<A>>, __tspl
2614
2522
  /**
2615
2523
  * Runs the sink on the stream to produce either the sink's result or an error.
2616
2524
  *
2617
- * @tsplus fluent fncts.io.Stream run
2525
+ * @tsplus pipeable fncts.io.Stream run
2618
2526
  */
2619
- export function run_<R, E, A, R2, E2, Z>(
2620
- stream: Stream<R, E, A>,
2621
- sink: Sink<R2, E2, A, unknown, Z>,
2622
- __tsplusTrace?: string,
2623
- ): IO<R | R2, E | E2, Z> {
2624
- return stream.channel.pipeToOrFail(sink.channel).runDrain;
2527
+ export function run<A, R2, E2, Z>(sink: Sink<R2, E2, A, unknown, Z>, __tsplusTrace?: string) {
2528
+ return <R, E>(stream: Stream<R, E, A>): IO<R | R2, E | E2, Z> => {
2529
+ return stream.channel.pipeToOrFail(sink.channel).runDrain;
2530
+ };
2625
2531
  }
2626
2532
 
2627
2533
  /**
@@ -2643,149 +2549,137 @@ export function runDrain<R, E, A>(stream: Stream<R, E, A>, __tsplusTrace?: strin
2643
2549
  }
2644
2550
 
2645
2551
  /**
2646
- * @tsplus fluent fncts.io.Stream runForeachScoped
2552
+ * @tsplus pipeable fncts.io.Stream runForeachScoped
2647
2553
  */
2648
- export function runForeachScoped_<R, E, A, R2, E2>(
2649
- self: Stream<R, E, A>,
2650
- f: (a: A) => IO<R2, E2, any>,
2651
- __tsplusTrace?: string,
2652
- ): IO<R | R2 | Scope, E | E2, void> {
2653
- return self.runScoped(Sink.foreach(f));
2554
+ export function runForeachScoped<A, R2, E2>(f: (a: A) => IO<R2, E2, any>, __tsplusTrace?: string) {
2555
+ return <R, E>(self: Stream<R, E, A>): IO<R | R2 | Scope, E | E2, void> => {
2556
+ return self.runScoped(Sink.foreach(f));
2557
+ };
2654
2558
  }
2655
2559
 
2656
2560
  /**
2657
2561
  * Like `into`, but provides the result as a `Managed` to allow for scope
2658
2562
  * composition.
2659
2563
  *
2660
- * @tsplus fluent fncts.io.Stream runIntoElementsScoped
2564
+ * @tsplus pipeable fncts.io.Stream runIntoElementsScoped
2661
2565
  */
2662
- export function runIntoElementsScoped_<R, E, A, R1, E1>(
2663
- stream: Stream<R, E, A>,
2566
+ export function runIntoElementsScoped_<E, A, R1, E1>(
2664
2567
  queue: PQueue<R1, unknown, never, never, Exit<Maybe<E | E1>, A>, unknown>,
2665
2568
  __tsplusTrace?: string,
2666
- ): IO<R | R1 | Scope, E | E1, void> {
2667
- const writer: Channel<R | R1, E, Conc<A>, unknown, never, Exit<Maybe<E | E1>, A>, unknown> = Channel.readWith(
2668
- (inp: Conc<A>) =>
2669
- inp
2670
- .foldLeft(
2671
- Channel.unit as Channel<R1, unknown, unknown, unknown, never, Exit<Maybe<E | E1>, A>, unknown>,
2672
- (channel, a) => channel.apSecond(Channel.writeNow(Exit.succeed(a))),
2673
- )
2674
- .apSecond(writer),
2675
- (err) => Channel.writeNow(Exit.fail(Just(err))),
2676
- () => Channel.writeNow(Exit.fail(Nothing())),
2677
- );
2678
- return stream.channel.pipeTo(writer).mapOutIO((exit) => queue.offer(exit)).drain.runScoped.asUnit;
2569
+ ) {
2570
+ return <R>(stream: Stream<R, E, A>): IO<R | R1 | Scope, E | E1, void> => {
2571
+ const writer: Channel<R | R1, E, Conc<A>, unknown, never, Exit<Maybe<E | E1>, A>, unknown> = Channel.readWith(
2572
+ (inp: Conc<A>) =>
2573
+ inp
2574
+ .foldLeft(
2575
+ Channel.unit as Channel<R1, unknown, unknown, unknown, never, Exit<Maybe<E | E1>, A>, unknown>,
2576
+ (channel, a) => channel.zipRight(Channel.writeNow(Exit.succeed(a))),
2577
+ )
2578
+ .zipRight(writer),
2579
+ (err) => Channel.writeNow(Exit.fail(Just(err))),
2580
+ () => Channel.writeNow(Exit.fail(Nothing())),
2581
+ );
2582
+ return stream.channel.pipeTo(writer).mapOutIO((exit) => queue.offer(exit)).drain.runScoped.asUnit;
2583
+ };
2679
2584
  }
2680
2585
 
2681
2586
  /**
2682
2587
  * Like `Stream#into`, but provides the result as a `Managed` to allow for scope
2683
2588
  * composition.
2684
2589
  *
2685
- * @tsplus fluent fncts.io.Stream runIntoQueueScoped
2590
+ * @tsplus pipeable fncts.io.Stream runIntoQueueScoped
2686
2591
  */
2687
- export function runIntoQueueScoped_<R, R1, E extends E1, E1, A>(
2688
- stream: Stream<R, E, A>,
2689
- queue: PQueue<R1, never, never, unknown, Take<E1, A>, any>,
2592
+ export function runIntoQueueScoped<RA, RB, EA, EB, E1, A, B>(
2593
+ queue: PEnqueue<RA, RB, EA, EB, Take<E1, A>, B>,
2690
2594
  __tsplusTrace?: string,
2691
- ): IO<R | R1 | Scope, E | E1, void> {
2692
- const writer: Channel<R, E, Conc<A>, unknown, E, Take<E | E1, A>, any> = Channel.readWithCause(
2693
- (inp) => Channel.writeNow(Take.chunk(inp)).apSecond(writer),
2694
- (cause) => Channel.writeNow(Take.failCause(cause)),
2695
- (_) => Channel.writeNow(Take.end),
2696
- );
2697
-
2698
- return stream.channel.pipeTo(writer).mapOutIO((take) => queue.offer(take)).drain.runScoped.asUnit;
2595
+ ) {
2596
+ return <R, E extends E1>(stream: Stream<R, E, A>): IO<R | RA | Scope, E | EA | E1, void> => {
2597
+ const writer: Channel<R, E, Conc<A>, unknown, E, Take<E | E1, A>, any> = Channel.readWithCause(
2598
+ (inp) => Channel.writeNow(Take.chunk(inp)).zipRight(writer),
2599
+ (cause) => Channel.writeNow(Take.failCause(cause)),
2600
+ (_) => Channel.writeNow(Take.end),
2601
+ );
2602
+ return stream.channel.pipeTo(writer).mapOutIO((take) => queue.offer(take)).drain.runScoped.asUnit;
2603
+ };
2699
2604
  }
2700
2605
 
2701
2606
  /**
2702
2607
  * Like `Stream#runIntoHub`, but provides the result as a `Managed` to allow for scope
2703
2608
  * composition.
2704
2609
  *
2705
- * @tsplus fluent fncts.io.Stream runIntoHubScoped
2610
+ * @tsplus pipeable fncts.io.Stream runIntoHubScoped
2706
2611
  */
2707
- export function runIntoHubScoped_<R, R1, E extends E1, E1, A>(
2708
- stream: Stream<R, E, A>,
2709
- hub: PHub<R1, never, never, unknown, Take<E1, A>, any>,
2612
+ export function runIntoHubScoped<RA, RB, EA, EB, E1, A, B>(
2613
+ hub: PHub<RA, RB, EA, EB, Take<E1, A>, B>,
2710
2614
  __tsplusTrace?: string,
2711
- ): IO<R | R1 | Scope, E | E1, void> {
2712
- return stream.runIntoQueueScoped(hub.toQueue);
2615
+ ) {
2616
+ return <R, E extends E1>(stream: Stream<R, E, A>): IO<R | RA | Scope, E | EA | E1, void> => {
2617
+ return stream.runIntoQueueScoped(hub);
2618
+ };
2713
2619
  }
2714
2620
 
2715
2621
  /**
2716
2622
  * Runs the sink on the stream to produce either the sink's result or an error.
2717
2623
  *
2718
- * @tsplus fluent fncts.io.Stream runScoped
2624
+ * @tsplus pipeable fncts.io.Stream runScoped
2719
2625
  */
2720
- export function runScoped_<R, E, A, R2, E2, Z>(
2721
- stream: Stream<R, E, A>,
2722
- sink: Sink<R2, E2, A, unknown, Z>,
2723
- __tsplusTrace?: string,
2724
- ): IO<R | R2 | Scope, E | E2, Z> {
2725
- return stream.channel.pipeToOrFail(sink.channel).drain.runScoped;
2626
+ export function runScoped<A, R2, E2, Z>(sink: Sink<R2, E2, A, unknown, Z>, __tsplusTrace?: string) {
2627
+ return <R, E>(stream: Stream<R, E, A>): IO<R | R2 | Scope, E | E2, Z> => {
2628
+ return stream.channel.pipeToOrFail(sink.channel).drain.runScoped;
2629
+ };
2726
2630
  }
2727
2631
 
2728
2632
  /**
2729
2633
  * Statefully maps over the elements of this stream to produce all intermediate results
2730
2634
  * of type `B` given an initial B.
2731
2635
  *
2732
- * @tsplus fluent fncts.io.Stream scan
2636
+ * @tsplus pipeable fncts.io.Stream scan
2733
2637
  */
2734
- export function scan_<R, E, A, B>(
2735
- sa: Stream<R, E, A>,
2736
- b: B,
2737
- f: (b: B, a: A) => B,
2738
- __tsplusTrace?: string,
2739
- ): Stream<R, E, B> {
2740
- return sa.scanIO(b, (b, a) => IO.succeedNow(f(b, a)));
2638
+ export function scan<A, B>(b: B, f: (b: B, a: A) => B, __tsplusTrace?: string) {
2639
+ return <R, E>(sa: Stream<R, E, A>): Stream<R, E, B> => {
2640
+ return sa.scanIO(b, (b, a) => IO.succeedNow(f(b, a)));
2641
+ };
2741
2642
  }
2742
2643
 
2743
2644
  /**
2744
2645
  * Statefully and effectfully maps over the elements of this stream to produce all
2745
2646
  * intermediate results of type `B` given an initial B.
2746
2647
  *
2747
- * @tsplus fluent fncts.io.Stream scanIO
2648
+ * @tsplus pipeable fncts.io.Stream scanIO
2748
2649
  */
2749
- export function scanIO_<R, E, A, R1, E1, B>(
2750
- sa: Stream<R, E, A>,
2751
- b: B,
2752
- f: (b: B, a: A) => IO<R1, E1, B>,
2753
- __tsplusTrace?: string,
2754
- ): Stream<R | R1, E | E1, B> {
2755
- return Stream.succeedNow(b).concat(sa.mapAccumIO(b, (b, a) => f(b, a).map((b) => [b, b])));
2650
+ export function scanIO<A, R1, E1, B>(b: B, f: (b: B, a: A) => IO<R1, E1, B>, __tsplusTrace?: string) {
2651
+ return <R, E>(sa: Stream<R, E, A>): Stream<R | R1, E | E1, B> => {
2652
+ return Stream.succeedNow(b).concat(sa.mapAccumIO(b, (b, a) => f(b, a).map((b) => [b, b])));
2653
+ };
2756
2654
  }
2757
2655
 
2758
2656
  /**
2759
2657
  * Statefully maps over the elements of this stream to produce all
2760
2658
  * intermediate results.
2761
2659
  *
2762
- * @tsplus fluent fncts.io.Stream scanReduce
2660
+ * @tsplus pipeable fncts.io.Stream scanReduce
2763
2661
  */
2764
- export function scanReduce_<R, E, A extends B, B>(
2765
- fa: Stream<R, E, A>,
2766
- f: (b: B, a: A) => B,
2767
- __tsplusTrace?: string,
2768
- ): Stream<R, E, B> {
2769
- return fa.scanReduceIO((b, a) => IO.succeedNow(f(b, a)));
2662
+ export function scanReduce<A extends B, B>(f: (b: B, a: A) => B, __tsplusTrace?: string) {
2663
+ return <R, E>(fa: Stream<R, E, A>): Stream<R, E, B> => {
2664
+ return fa.scanReduceIO((b, a) => IO.succeedNow(f(b, a)));
2665
+ };
2770
2666
  }
2771
2667
 
2772
2668
  /**
2773
2669
  * Statefully and effectfully maps over the elements of this stream to produce
2774
2670
  * all intermediate results.
2775
2671
  *
2776
- * @tsplus fluent fncts.io.Stream scanReduceIO
2672
+ * @tsplus pipeable fncts.io.Stream scanReduceIO
2777
2673
  */
2778
- export function scanReduceIO_<R, E, A extends B, R1, E1, B>(
2779
- fa: Stream<R, E, A>,
2780
- f: (b: B, a: A) => IO<R1, E1, B>,
2781
- __tsplusTrace?: string,
2782
- ): Stream<R | R1, E | E1, B> {
2783
- return fa.mapAccumIO(Nothing<B>(), (s, a) =>
2784
- s.match(
2785
- () => IO.succeedNow([a, Just(a)]),
2786
- (b) => f(b, a).map((b) => [b, Just(b)]),
2787
- ),
2788
- );
2674
+ export function scanReduceIO<A extends B, R1, E1, B>(f: (b: B, a: A) => IO<R1, E1, B>, __tsplusTrace?: string) {
2675
+ return <R, E>(fa: Stream<R, E, A>): Stream<R | R1, E | E1, B> => {
2676
+ return fa.mapAccumIO(Nothing<B>(), (s, a) =>
2677
+ s.match(
2678
+ () => IO.succeedNow([a, Just(a)]),
2679
+ (b) => f(b, a).map((b) => [b, Just(b)]),
2680
+ ),
2681
+ );
2682
+ };
2789
2683
  }
2790
2684
 
2791
2685
  /**
@@ -2812,7 +2706,7 @@ function takeLoop<E, A>(n: number, __tsplusTrace?: string): Channel<never, E, Co
2812
2706
  const taken = inp.take(n);
2813
2707
  const left = Math.max(n - taken.length, 0);
2814
2708
  if (left > 0) {
2815
- return Channel.writeNow(taken).apSecond(takeLoop(left));
2709
+ return Channel.writeNow(taken).zipRight(takeLoop(left));
2816
2710
  } else {
2817
2711
  return Channel.writeNow(taken);
2818
2712
  }
@@ -2825,27 +2719,27 @@ function takeLoop<E, A>(n: number, __tsplusTrace?: string): Channel<never, E, Co
2825
2719
  /**
2826
2720
  * Takes the specified number of elements from this stream.
2827
2721
  *
2828
- * @tsplus fluent fncts.io.Stream take
2722
+ * @tsplus pipeable fncts.io.Stream take
2829
2723
  */
2830
- export function take_<R, E, A>(stream: Stream<R, E, A>, n: number, __tsplusTrace?: string): Stream<R, E, A> {
2831
- if (n <= 0) {
2832
- return empty;
2833
- }
2834
- if (!Number.isInteger(n)) {
2835
- return halt(new IllegalArgumentError(`${n} should be an integer`, "Stream.take"));
2836
- }
2837
- return new Stream(stream.channel.pipeTo(takeLoop(n)));
2724
+ export function take(n: number, __tsplusTrace?: string) {
2725
+ return <R, E, A>(stream: Stream<R, E, A>): Stream<R, E, A> => {
2726
+ if (n <= 0) {
2727
+ return empty;
2728
+ }
2729
+ if (!Number.isInteger(n)) {
2730
+ return halt(new IllegalArgumentError(`${n} should be an integer`, "Stream.take"));
2731
+ }
2732
+ return new Stream(stream.channel.pipeTo(takeLoop(n)));
2733
+ };
2838
2734
  }
2839
2735
 
2840
2736
  /**
2841
- * @tsplus fluent fncts.io.Stream takeUntilIO
2737
+ * @tsplus pipeable fncts.io.Stream takeUntilIO
2842
2738
  */
2843
- export function takeUntilIO_<R, E, A, R1, E1>(
2844
- ma: Stream<R, E, A>,
2845
- f: (a: A) => IO<R1, E1, boolean>,
2846
- __tsplusTrace?: string,
2847
- ): Stream<R | R1, E | E1, A> {
2848
- return new Stream(ma.channel.pipeTo(takeUntilIOLoop(Iterable.empty<A>()[Symbol.iterator](), f)));
2739
+ export function takeUntilIO<A, R1, E1>(f: (a: A) => IO<R1, E1, boolean>, __tsplusTrace?: string) {
2740
+ return <R, E>(ma: Stream<R, E, A>): Stream<R | R1, E | E1, A> => {
2741
+ return new Stream(ma.channel.pipeTo(takeUntilIOLoop(Iterable.empty<A>()[Symbol.iterator](), f)));
2742
+ };
2849
2743
  }
2850
2744
 
2851
2745
  function takeUntilIOLoop<E, A, R1, E1>(
@@ -2880,7 +2774,7 @@ function takeUntilLoop<R, E, A>(
2880
2774
  const taken = chunk.takeWhile(p.invert);
2881
2775
  const last = chunk.drop(taken.length).take(1);
2882
2776
  if (last.isEmpty) {
2883
- return Channel.writeNow(taken).apSecond(takeUntilLoop<R, E, A>(p));
2777
+ return Channel.writeNow(taken).zipRight(takeUntilLoop<R, E, A>(p));
2884
2778
  } else {
2885
2779
  return Channel.writeNow(taken.concat(last));
2886
2780
  }
@@ -2894,21 +2788,21 @@ function takeUntilLoop<R, E, A>(
2894
2788
  * Takes all elements of the stream until the specified predicate evaluates
2895
2789
  * to `true`.
2896
2790
  *
2897
- * @tsplus fluent fncts.io.Stream takeUntil
2791
+ * @tsplus pipeable fncts.io.Stream takeUntil
2898
2792
  */
2899
- export function takeUntil_<R, E, A>(fa: Stream<R, E, A>, p: Predicate<A>, __tsplusTrace?: string): Stream<R, E, A> {
2900
- return new Stream(fa.channel.pipeTo(takeUntilLoop(p)));
2793
+ export function takeUntil<A>(p: Predicate<A>, __tsplusTrace?: string) {
2794
+ return <R, E>(fa: Stream<R, E, A>): Stream<R, E, A> => {
2795
+ return new Stream(fa.channel.pipeTo(takeUntilLoop(p)));
2796
+ };
2901
2797
  }
2902
2798
 
2903
2799
  /**
2904
- * @tsplus fluent fncts.io.Stream tap
2800
+ * @tsplus pipeable fncts.io.Stream tap
2905
2801
  */
2906
- export function tap_<R, E, A, R1, E1>(
2907
- ma: Stream<R, E, A>,
2908
- f: (a: A) => IO<R1, E1, any>,
2909
- __tsplusTrace?: string,
2910
- ): Stream<R | R1, E | E1, A> {
2911
- return ma.mapIO((a) => f(a).as(a));
2802
+ export function tap<A, R1, E1>(f: (a: A) => IO<R1, E1, any>, __tsplusTrace?: string) {
2803
+ return <R, E>(ma: Stream<R, E, A>): Stream<R | R1, E | E1, A> => {
2804
+ return ma.mapIO((a) => f(a).as(a));
2805
+ };
2912
2806
  }
2913
2807
 
2914
2808
  /**
@@ -2917,17 +2811,18 @@ export function tap_<R, E, A, R1, E1>(
2917
2811
  * tokens up to a `units + burst` threshold. Chunks that do not meet the bandwidth constraints are dropped.
2918
2812
  * The weight of each chunk is determined by the `costFn` function.
2919
2813
  *
2920
- * @tsplus fluent fncts.io.Stream throttleEnforce
2814
+ * @tsplus pipeable fncts.io.Stream throttleEnforce
2921
2815
  */
2922
- export function throttleEnforce_<R, E, A>(
2923
- sa: Stream<R, E, A>,
2816
+ export function throttleEnforce<A>(
2924
2817
  costFn: (chunk: Conc<A>) => number,
2925
2818
  units: number,
2926
2819
  duration: number,
2927
2820
  burst = 0,
2928
2821
  __tsplusTrace?: string,
2929
- ): Stream<R, E, A> {
2930
- return sa.throttleEnforceIO((chunk) => IO.succeedNow(costFn(chunk)), units, duration, burst);
2822
+ ) {
2823
+ return <R, E>(sa: Stream<R, E, A>): Stream<R, E, A> => {
2824
+ return sa.throttleEnforceIO((chunk) => IO.succeedNow(costFn(chunk)), units, duration, burst);
2825
+ };
2931
2826
  }
2932
2827
 
2933
2828
  function throttleEnforceIOLoop<E, A, R1, E1>(
@@ -2948,12 +2843,10 @@ function throttleEnforceIOLoop<E, A, R1, E1>(
2948
2843
  const available = (() => {
2949
2844
  const sum = tokens + cycles * units;
2950
2845
  const max = units + burst < 0 ? Number.MAX_SAFE_INTEGER : units + burst;
2951
-
2952
2846
  return sum < 0 ? max : Math.min(sum, max);
2953
2847
  })();
2954
-
2955
2848
  return weight <= available
2956
- ? Channel.writeNow(inp).apSecond(
2849
+ ? Channel.writeNow(inp).zipRight(
2957
2850
  throttleEnforceIOLoop<E, A, R1, E1>(costFn, units, duration, burst, available - weight, current),
2958
2851
  )
2959
2852
  : throttleEnforceIOLoop<E, A, R1, E1>(costFn, units, duration, burst, available - weight, current);
@@ -2970,39 +2863,38 @@ function throttleEnforceIOLoop<E, A, R1, E1>(
2970
2863
  * tokens up to a `units + burst` threshold. Chunks that do not meet the bandwidth constraints are dropped.
2971
2864
  * The weight of each chunk is determined by the `costFn` effectful function.
2972
2865
  *
2973
- * @tsplus fluent fncts.io.Stream throttleEnforceIO
2866
+ * @tsplus pipeable fncts.io.Stream throttleEnforceIO
2974
2867
  */
2975
- export function throttleEnforceIO_<R, E, A, R1, E1>(
2976
- sa: Stream<R, E, A>,
2868
+ export function throttleEnforceIO<A, R1, E1>(
2977
2869
  costFn: (chunk: Conc<A>) => IO<R1, E1, number>,
2978
2870
  units: number,
2979
2871
  duration: number,
2980
2872
  burst = 0,
2981
2873
  __tsplusTrace?: string,
2982
- ): Stream<R | R1, E | E1, A> {
2983
- return new Stream(
2984
- Channel.fromIO(Clock.currentTime).flatMap((current) =>
2985
- sa.channel.pipeTo(throttleEnforceIOLoop(costFn, units, duration, burst, units, current)),
2986
- ),
2987
- );
2874
+ ) {
2875
+ return <R, E>(sa: Stream<R, E, A>): Stream<R | R1, E | E1, A> => {
2876
+ return new Stream(
2877
+ Channel.fromIO(Clock.currentTime).flatMap((current) =>
2878
+ sa.channel.pipeTo(throttleEnforceIOLoop(costFn, units, duration, burst, units, current)),
2879
+ ),
2880
+ );
2881
+ };
2988
2882
  }
2989
2883
 
2990
2884
  /**
2991
2885
  * Converts the stream to a managed hub of chunks. After the managed hub is used,
2992
2886
  * the hub will never again produce values and should be discarded.
2993
2887
  *
2994
- * @tsplus fluent fncts.io.Stream toHub
2888
+ * @tsplus pipeable fncts.io.Stream toHub
2995
2889
  */
2996
- export function toHub_<R, E, A>(
2997
- stream: Stream<R, E, A>,
2998
- capacity: number,
2999
- __tsplusTrace?: string,
3000
- ): IO<R | Scope, never, Hub<Take<E, A>>> {
3001
- return Do((Δ) => {
3002
- const hub = Δ(IO.acquireRelease(Hub.makeBounded<Take<E, A>>(capacity), (_) => _.shutdown));
3003
- Δ(stream.runIntoHubScoped(hub).fork);
3004
- return hub;
3005
- });
2890
+ export function toHub(capacity: number, __tsplusTrace?: string) {
2891
+ return <R, E, A>(stream: Stream<R, E, A>): IO<R | Scope, never, Hub<Take<E, A>>> => {
2892
+ return Do((Δ) => {
2893
+ const hub = Δ(IO.acquireRelease(Hub.makeBounded<Take<E, A>>(capacity), (_) => _.shutdown));
2894
+ Δ(stream.runIntoHubScoped(hub).fork);
2895
+ return hub;
2896
+ });
2897
+ };
3006
2898
  }
3007
2899
 
3008
2900
  /**
@@ -3023,63 +2915,55 @@ export function toPull<R, E, A>(
3023
2915
  * Converts the stream to a managed queue of chunks. After the managed queue is used,
3024
2916
  * the queue will never again produce values and should be discarded.
3025
2917
  *
3026
- * @tsplus fluent fncts.io.Stream toQueue
2918
+ * @tsplus pipeable fncts.io.Stream toQueue
3027
2919
  */
3028
- export function toQueue_<R, E, A>(
3029
- stream: Stream<R, E, A>,
3030
- capacity = 2,
3031
- __tsplusTrace?: string,
3032
- ): IO<R | Scope, never, Queue<Take<E, A>>> {
3033
- return Do((Δ) => {
3034
- const queue = Δ(IO.acquireRelease(Queue.makeBounded<Take<E, A>>(capacity), (_) => _.shutdown));
3035
- Δ(stream.runIntoQueueScoped(queue).fork);
3036
- return queue;
3037
- });
2920
+ export function toQueue(capacity = 2, __tsplusTrace?: string) {
2921
+ return <R, E, A>(stream: Stream<R, E, A>): IO<R | Scope, never, Queue.Dequeue<Take<E, A>>> => {
2922
+ return Do((Δ) => {
2923
+ const queue = Δ(IO.acquireRelease(Queue.makeBounded<Take<E, A>>(capacity), (_) => _.shutdown));
2924
+ Δ(stream.runIntoQueueScoped(queue).fork);
2925
+ return queue;
2926
+ });
2927
+ };
3038
2928
  }
3039
2929
 
3040
2930
  /**
3041
- * @tsplus fluent fncts.io.Stream toQueueDropping
2931
+ * @tsplus pipeable fncts.io.Stream toQueueDropping
3042
2932
  */
3043
- export function toQueueDropping_<R, E, A>(
3044
- stream: Stream<R, E, A>,
3045
- capacity = 2,
3046
- __tsplusTrace?: string,
3047
- ): IO<R | Scope, never, Queue.Dequeue<Take<E, A>>> {
3048
- return Do((Δ) => {
3049
- const queue = Δ(IO.acquireRelease(Queue.makeDropping<Take<E, A>>(capacity), (_) => _.shutdown));
3050
- Δ(stream.runIntoQueueScoped(queue).fork);
3051
- return queue;
3052
- });
2933
+ export function toQueueDropping(capacity = 2, __tsplusTrace?: string) {
2934
+ return <R, E, A>(stream: Stream<R, E, A>): IO<R | Scope, never, Queue.Dequeue<Take<E, A>>> => {
2935
+ return Do((Δ) => {
2936
+ const queue = Δ(IO.acquireRelease(Queue.makeDropping<Take<E, A>>(capacity), (_) => _.shutdown));
2937
+ Δ(stream.runIntoQueueScoped(queue).fork);
2938
+ return queue;
2939
+ });
2940
+ };
3053
2941
  }
3054
2942
 
3055
2943
  /**
3056
- * @tsplus fluent fncts.io.Stream toQueueOfElements
2944
+ * @tsplus pipeable fncts.io.Stream toQueueOfElements
3057
2945
  */
3058
- export function toQueueOfElements_<R, E, A>(
3059
- stream: Stream<R, E, A>,
3060
- capacity = 2,
3061
- __tsplusTrace?: string,
3062
- ): IO<R | Scope, never, Queue.Dequeue<Exit<Maybe<E>, A>>> {
3063
- return Do((Δ) => {
3064
- const queue = Δ(IO.acquireRelease(Queue.makeBounded<Exit<Maybe<E>, A>>(capacity), (_) => _.shutdown));
3065
- Δ(stream.runIntoElementsScoped(queue).fork);
3066
- return queue;
3067
- });
2946
+ export function toQueueOfElements(capacity = 2, __tsplusTrace?: string) {
2947
+ return <R, E, A>(stream: Stream<R, E, A>): IO<R | Scope, never, Queue.Dequeue<Exit<Maybe<E>, A>>> => {
2948
+ return Do((Δ) => {
2949
+ const queue = Δ(IO.acquireRelease(Queue.makeBounded<Exit<Maybe<E>, A>>(capacity), (_) => _.shutdown));
2950
+ Δ(stream.runIntoElementsScoped(queue).fork);
2951
+ return queue;
2952
+ });
2953
+ };
3068
2954
  }
3069
2955
 
3070
2956
  /**
3071
- * @tsplus fluent fncts.io.Stream toQueueSliding
2957
+ * @tsplus pipeable fncts.io.Stream toQueueSliding
3072
2958
  */
3073
- export function toQueueSliding_<R, E, A>(
3074
- stream: Stream<R, E, A>,
3075
- capacity = 2,
3076
- __tsplusTrace?: string,
3077
- ): IO<R | Scope, never, Queue.Dequeue<Take<E, A>>> {
3078
- return Do((Δ) => {
3079
- const queue = Δ(IO.acquireRelease(Queue.makeSliding<Take<E, A>>(capacity), (_) => _.shutdown));
3080
- Δ(stream.runIntoQueueScoped(queue).fork);
3081
- return queue;
3082
- });
2959
+ export function toQueueSliding(capacity = 2, __tsplusTrace?: string) {
2960
+ return <R, E, A>(stream: Stream<R, E, A>): IO<R | Scope, never, Queue.Dequeue<Take<E, A>>> => {
2961
+ return Do((Δ) => {
2962
+ const queue = Δ(IO.acquireRelease(Queue.makeSliding<Take<E, A>>(capacity), (_) => _.shutdown));
2963
+ Δ(stream.runIntoQueueScoped(queue).fork);
2964
+ return queue;
2965
+ });
2966
+ };
3083
2967
  }
3084
2968
 
3085
2969
  /**
@@ -3216,59 +3100,58 @@ export function zipWithIndex_<R, E, A>(
3216
3100
  * that emitted elements that are not the last value in chunks will never be
3217
3101
  * used for zipping.
3218
3102
  *
3219
- * @tsplus fluent fncts.io.Stream zipWithLatest
3103
+ * @tsplus pipeable fncts.io.Stream zipWithLatest
3220
3104
  */
3221
- export function zipWithLatest_<R, E, A, R1, E1, B, C>(
3222
- fa: Stream<R, E, A>,
3223
- fb: Stream<R1, E1, B>,
3224
- f: (a: A, b: B) => C,
3225
- __tsplusTrace?: string,
3226
- ): Stream<R | R1, E | E1, C> {
3227
- function pullNonEmpty<R, E, A>(pull: IO<R, Maybe<E>, Conc<A>>, __tsplusTrace?: string): IO<R, Maybe<E>, Conc<A>> {
3228
- return pull.flatMap((chunk) => (chunk.isNonEmpty ? pullNonEmpty(pull) : IO.succeedNow(chunk)));
3229
- }
3230
- return Stream.fromPull(
3231
- Do((Δ) => {
3232
- const left = Δ(fa.toPull.map(pullNonEmpty));
3233
- const right = Δ(fb.toPull.map(pullNonEmpty));
3234
- return Δ(
3235
- Stream.fromIOMaybe(
3236
- left.raceWith(
3237
- right,
3238
- (leftDone: Exit<Maybe<E | E1>, Conc<A>>, rightFiber) =>
3239
- IO.fromExitNow(leftDone).zipWith(rightFiber.join, (l, r) => tuple(l, r, true)),
3240
- (rightDone, leftFiber) => IO.fromExitNow(rightDone).zipWith(leftFiber.join, (r, l) => tuple(l, r, false)),
3241
- ),
3242
- ).flatMap(([l, r, leftFirst]) =>
3243
- Stream.fromIO(Ref.make(tuple(l.unsafeGet(l.length - 1), r.unsafeGet(r.length - 1)))).flatMap((latest) =>
3244
- Stream.fromChunk(
3245
- leftFirst ? r.map((b) => f(l.unsafeGet(l.length - 1), b)) : l.map((a) => f(a, r.unsafeGet(r.length - 1))),
3246
- ).concat(
3247
- Stream.repeatIOMaybe(left)
3248
- .mergeEither(Stream.repeatIOMaybe(right))
3249
- .mapIO((ab) =>
3250
- ab.match(
3251
- (leftChunk) =>
3252
- latest.modify(([_, rightLatest]) =>
3253
- tuple(
3254
- leftChunk.map((a) => f(a, rightLatest)),
3255
- tuple(leftChunk.unsafeGet(leftChunk.length - 1), rightLatest),
3105
+ export function zipWithLatest<A, R1, E1, B, C>(fb: Stream<R1, E1, B>, f: (a: A, b: B) => C, __tsplusTrace?: string) {
3106
+ return <R, E>(fa: Stream<R, E, A>): Stream<R | R1, E | E1, C> => {
3107
+ function pullNonEmpty<R, E, A>(pull: IO<R, Maybe<E>, Conc<A>>, __tsplusTrace?: string): IO<R, Maybe<E>, Conc<A>> {
3108
+ return pull.flatMap((chunk) => (chunk.isNonEmpty ? pullNonEmpty(pull) : IO.succeedNow(chunk)));
3109
+ }
3110
+ return Stream.fromPull(
3111
+ Do() => {
3112
+ const left = Δ(fa.toPull.map(pullNonEmpty));
3113
+ const right = Δ(fb.toPull.map(pullNonEmpty));
3114
+ return Δ(
3115
+ Stream.fromIOMaybe(
3116
+ left.raceWith(
3117
+ right,
3118
+ (leftDone: Exit<Maybe<E | E1>, Conc<A>>, rightFiber) =>
3119
+ IO.fromExitNow(leftDone).zipWith(rightFiber.join, (l, r) => tuple(l, r, true)),
3120
+ (rightDone, leftFiber) => IO.fromExitNow(rightDone).zipWith(leftFiber.join, (r, l) => tuple(l, r, false)),
3121
+ ),
3122
+ ).flatMap(([l, r, leftFirst]) =>
3123
+ Stream.fromIO(Ref.make(tuple(l.unsafeGet(l.length - 1), r.unsafeGet(r.length - 1)))).flatMap((latest) =>
3124
+ Stream.fromChunk(
3125
+ leftFirst
3126
+ ? r.map((b) => f(l.unsafeGet(l.length - 1), b))
3127
+ : l.map((a) => f(a, r.unsafeGet(r.length - 1))),
3128
+ ).concat(
3129
+ Stream.repeatIOMaybe(left)
3130
+ .mergeEither(Stream.repeatIOMaybe(right))
3131
+ .mapIO((ab) =>
3132
+ ab.match(
3133
+ (leftChunk) =>
3134
+ latest.modify(([_, rightLatest]) =>
3135
+ tuple(
3136
+ leftChunk.map((a) => f(a, rightLatest)),
3137
+ tuple(leftChunk.unsafeGet(leftChunk.length - 1), rightLatest),
3138
+ ),
3256
3139
  ),
3257
- ),
3258
- (rightChunk) =>
3259
- latest.modify(([leftLatest, _]) =>
3260
- tuple(
3261
- rightChunk.map((b) => f(leftLatest, b)),
3262
- tuple(leftLatest, rightChunk.unsafeGet(rightChunk.length - 1)),
3140
+ (rightChunk) =>
3141
+ latest.modify(([leftLatest, _]) =>
3142
+ tuple(
3143
+ rightChunk.map((b) => f(leftLatest, b)),
3144
+ tuple(leftLatest, rightChunk.unsafeGet(rightChunk.length - 1)),
3145
+ ),
3263
3146
  ),
3264
- ),
3265
- ),
3266
- )
3267
- .flatMap(Stream.fromChunkNow),
3147
+ ),
3148
+ )
3149
+ .flatMap(Stream.fromChunkNow),
3150
+ ),
3268
3151
  ),
3269
- ),
3270
- ).toPull,
3271
- );
3272
- }),
3273
- );
3152
+ ).toPull,
3153
+ );
3154
+ }),
3155
+ );
3156
+ };
3274
3157
  }