effect 2.2.5 → 2.3.1

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 (693) hide show
  1. package/RateLimiter/package.json +6 -0
  2. package/dist/cjs/Cause.js +14 -1
  3. package/dist/cjs/Cause.js.map +1 -1
  4. package/dist/cjs/Channel.js.map +1 -1
  5. package/dist/cjs/Clock.js.map +1 -1
  6. package/dist/cjs/Console.js.map +1 -1
  7. package/dist/cjs/Context.js +23 -25
  8. package/dist/cjs/Context.js.map +1 -1
  9. package/dist/cjs/Data.js +3 -3
  10. package/dist/cjs/Data.js.map +1 -1
  11. package/dist/cjs/Deferred.js +1 -1
  12. package/dist/cjs/Deferred.js.map +1 -1
  13. package/dist/cjs/Effect.js +9 -9
  14. package/dist/cjs/Effect.js.map +1 -1
  15. package/dist/cjs/Effectable.js.map +1 -1
  16. package/dist/cjs/Either.js.map +1 -1
  17. package/dist/cjs/Exit.js +2 -2
  18. package/dist/cjs/Exit.js.map +1 -1
  19. package/dist/cjs/Fiber.js.map +1 -1
  20. package/dist/cjs/FiberMap.js +3 -3
  21. package/dist/cjs/FiberRef.js.map +1 -1
  22. package/dist/cjs/FiberRefs.js.map +1 -1
  23. package/dist/cjs/FiberSet.js +3 -3
  24. package/dist/cjs/FiberSet.js.map +1 -1
  25. package/dist/cjs/GroupBy.js.map +1 -1
  26. package/dist/cjs/Layer.js.map +1 -1
  27. package/dist/cjs/LogLevel.js.map +1 -1
  28. package/dist/cjs/Logger.js.map +1 -1
  29. package/dist/cjs/Metric.js.map +1 -1
  30. package/dist/cjs/Number.js +20 -1
  31. package/dist/cjs/Number.js.map +1 -1
  32. package/dist/cjs/Option.js.map +1 -1
  33. package/dist/cjs/Pool.js.map +1 -1
  34. package/dist/cjs/PubSub.js.map +1 -1
  35. package/dist/cjs/Queue.js.map +1 -1
  36. package/dist/cjs/Random.js.map +1 -1
  37. package/dist/cjs/RateLimiter.js +38 -0
  38. package/dist/cjs/RateLimiter.js.map +1 -0
  39. package/dist/cjs/ReadonlyRecord.js +45 -9
  40. package/dist/cjs/ReadonlyRecord.js.map +1 -1
  41. package/dist/cjs/Ref.js.map +1 -1
  42. package/dist/cjs/Request.js.map +1 -1
  43. package/dist/cjs/RequestResolver.js.map +1 -1
  44. package/dist/cjs/Resource.js.map +1 -1
  45. package/dist/cjs/Runtime.js +1 -4
  46. package/dist/cjs/Runtime.js.map +1 -1
  47. package/dist/cjs/RuntimeFlags.js.map +1 -1
  48. package/dist/cjs/STM.js.map +1 -1
  49. package/dist/cjs/Schedule.js.map +1 -1
  50. package/dist/cjs/Scope.js.map +1 -1
  51. package/dist/cjs/ScopedRef.js.map +1 -1
  52. package/dist/cjs/SingleProducerAsyncInput.js.map +1 -1
  53. package/dist/cjs/Sink.js.map +1 -1
  54. package/dist/cjs/Stream.js.map +1 -1
  55. package/dist/cjs/SubscriptionRef.js.map +1 -1
  56. package/dist/cjs/Supervisor.js.map +1 -1
  57. package/dist/cjs/SynchronizedRef.js.map +1 -1
  58. package/dist/cjs/TArray.js.map +1 -1
  59. package/dist/cjs/TDeferred.js.map +1 -1
  60. package/dist/cjs/TMap.js.map +1 -1
  61. package/dist/cjs/TPriorityQueue.js.map +1 -1
  62. package/dist/cjs/TPubSub.js.map +1 -1
  63. package/dist/cjs/TQueue.js.map +1 -1
  64. package/dist/cjs/TRandom.js.map +1 -1
  65. package/dist/cjs/TReentrantLock.js.map +1 -1
  66. package/dist/cjs/TRef.js.map +1 -1
  67. package/dist/cjs/TSemaphore.js.map +1 -1
  68. package/dist/cjs/TSet.js.map +1 -1
  69. package/dist/cjs/Take.js +6 -6
  70. package/dist/cjs/Take.js.map +1 -1
  71. package/dist/cjs/TestAnnotation.js +10 -13
  72. package/dist/cjs/TestAnnotation.js.map +1 -1
  73. package/dist/cjs/TestAnnotations.js +1 -1
  74. package/dist/cjs/TestAnnotations.js.map +1 -1
  75. package/dist/cjs/TestClock.js +1 -1
  76. package/dist/cjs/TestClock.js.map +1 -1
  77. package/dist/cjs/TestConfig.js +1 -1
  78. package/dist/cjs/TestConfig.js.map +1 -1
  79. package/dist/cjs/TestContext.js.map +1 -1
  80. package/dist/cjs/TestLive.js +1 -1
  81. package/dist/cjs/TestLive.js.map +1 -1
  82. package/dist/cjs/TestServices.js.map +1 -1
  83. package/dist/cjs/TestSized.js +1 -1
  84. package/dist/cjs/TestSized.js.map +1 -1
  85. package/dist/cjs/Utils.js +0 -1
  86. package/dist/cjs/Utils.js.map +1 -1
  87. package/dist/cjs/index.js +4 -2
  88. package/dist/cjs/index.js.map +1 -1
  89. package/dist/cjs/internal/cache.js.map +1 -1
  90. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  91. package/dist/cjs/internal/channel/mergeDecision.js +2 -6
  92. package/dist/cjs/internal/channel/mergeDecision.js.map +1 -1
  93. package/dist/cjs/internal/channel/singleProducerAsyncInput.js.map +1 -1
  94. package/dist/cjs/internal/channel.js +1 -1
  95. package/dist/cjs/internal/channel.js.map +1 -1
  96. package/dist/cjs/internal/clock.js +1 -1
  97. package/dist/cjs/internal/clock.js.map +1 -1
  98. package/dist/cjs/internal/configProvider.js +2 -4
  99. package/dist/cjs/internal/configProvider.js.map +1 -1
  100. package/dist/cjs/internal/console.js.map +1 -1
  101. package/dist/cjs/internal/context.js +31 -22
  102. package/dist/cjs/internal/context.js.map +1 -1
  103. package/dist/cjs/internal/core-effect.js +13 -27
  104. package/dist/cjs/internal/core-effect.js.map +1 -1
  105. package/dist/cjs/internal/core-stream.js.map +1 -1
  106. package/dist/cjs/internal/core.js +61 -130
  107. package/dist/cjs/internal/core.js.map +1 -1
  108. package/dist/cjs/internal/data.js.map +1 -1
  109. package/dist/cjs/internal/defaultServices/console.js +1 -1
  110. package/dist/cjs/internal/defaultServices/console.js.map +1 -1
  111. package/dist/cjs/internal/defaultServices.js.map +1 -1
  112. package/dist/cjs/internal/deferred.js.map +1 -1
  113. package/dist/cjs/internal/differ/contextPatch.js +9 -9
  114. package/dist/cjs/internal/differ/contextPatch.js.map +1 -1
  115. package/dist/cjs/internal/effect/circular.js +7 -10
  116. package/dist/cjs/internal/effect/circular.js.map +1 -1
  117. package/dist/cjs/internal/effectable.js +4 -4
  118. package/dist/cjs/internal/effectable.js.map +1 -1
  119. package/dist/cjs/internal/fiber.js +2 -6
  120. package/dist/cjs/internal/fiber.js.map +1 -1
  121. package/dist/cjs/internal/fiberRuntime.js +10 -19
  122. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  123. package/dist/cjs/internal/groupBy.js.map +1 -1
  124. package/dist/cjs/internal/keyedPool.js.map +1 -1
  125. package/dist/cjs/internal/layer/circular.js.map +1 -1
  126. package/dist/cjs/internal/layer.js +3 -3
  127. package/dist/cjs/internal/layer.js.map +1 -1
  128. package/dist/cjs/internal/logSpan.js +3 -5
  129. package/dist/cjs/internal/logSpan.js.map +1 -1
  130. package/dist/cjs/internal/metric.js.map +1 -1
  131. package/dist/cjs/internal/pool.js.map +1 -1
  132. package/dist/cjs/internal/pubsub.js +2 -6
  133. package/dist/cjs/internal/pubsub.js.map +1 -1
  134. package/dist/cjs/internal/query.js.map +1 -1
  135. package/dist/cjs/internal/queue.js.map +1 -1
  136. package/dist/cjs/internal/random.js +1 -1
  137. package/dist/cjs/internal/random.js.map +1 -1
  138. package/dist/cjs/internal/rateLimiter.js +44 -0
  139. package/dist/cjs/internal/rateLimiter.js.map +1 -0
  140. package/dist/cjs/internal/ref.js.map +1 -1
  141. package/dist/cjs/internal/reloadable.js +1 -9
  142. package/dist/cjs/internal/reloadable.js.map +1 -1
  143. package/dist/cjs/internal/runtime.js +0 -1
  144. package/dist/cjs/internal/runtime.js.map +1 -1
  145. package/dist/cjs/internal/schedule.js.map +1 -1
  146. package/dist/cjs/internal/scopedCache.js.map +1 -1
  147. package/dist/cjs/internal/scopedRef.js.map +1 -1
  148. package/dist/cjs/internal/sink.js +7 -7
  149. package/dist/cjs/internal/sink.js.map +1 -1
  150. package/dist/cjs/internal/stm/core.js.map +1 -1
  151. package/dist/cjs/internal/stm/stm/stmState.js.map +1 -1
  152. package/dist/cjs/internal/stm/stm/tExit.js +2 -2
  153. package/dist/cjs/internal/stm/stm/tExit.js.map +1 -1
  154. package/dist/cjs/internal/stm/stm/tryCommit.js.map +1 -1
  155. package/dist/cjs/internal/stm/stm.js.map +1 -1
  156. package/dist/cjs/internal/stm/tArray.js.map +1 -1
  157. package/dist/cjs/internal/stm/tDeferred.js +4 -2
  158. package/dist/cjs/internal/stm/tDeferred.js.map +1 -1
  159. package/dist/cjs/internal/stm/tMap.js.map +1 -1
  160. package/dist/cjs/internal/stm/tPriorityQueue.js.map +1 -1
  161. package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
  162. package/dist/cjs/internal/stm/tQueue.js.map +1 -1
  163. package/dist/cjs/internal/stm/tRandom.js +1 -1
  164. package/dist/cjs/internal/stm/tRandom.js.map +1 -1
  165. package/dist/cjs/internal/stm/tReentrantLock.js.map +1 -1
  166. package/dist/cjs/internal/stm/tRef.js.map +1 -1
  167. package/dist/cjs/internal/stm/tSemaphore.js.map +1 -1
  168. package/dist/cjs/internal/stm/tSet.js.map +1 -1
  169. package/dist/cjs/internal/stream/debounceState.js.map +1 -1
  170. package/dist/cjs/internal/stream/handoff.js.map +1 -1
  171. package/dist/cjs/internal/stream/handoffSignal.js.map +1 -1
  172. package/dist/cjs/internal/stream/pull.js.map +1 -1
  173. package/dist/cjs/internal/stream.js +0 -2
  174. package/dist/cjs/internal/stream.js.map +1 -1
  175. package/dist/cjs/internal/subscriptionRef.js.map +1 -1
  176. package/dist/cjs/internal/supervisor.js.map +1 -1
  177. package/dist/cjs/internal/take.js +2 -2
  178. package/dist/cjs/internal/take.js.map +1 -1
  179. package/dist/cjs/internal/testing/sleep.js.map +1 -1
  180. package/dist/cjs/internal/tracer.js +2 -2
  181. package/dist/cjs/internal/tracer.js.map +1 -1
  182. package/dist/cjs/internal/version.js +1 -1
  183. package/dist/dts/Cache.d.ts +20 -20
  184. package/dist/dts/Cache.d.ts.map +1 -1
  185. package/dist/dts/Cause.d.ts +33 -5
  186. package/dist/dts/Cause.d.ts.map +1 -1
  187. package/dist/dts/Channel.d.ts +197 -194
  188. package/dist/dts/Channel.d.ts.map +1 -1
  189. package/dist/dts/Clock.d.ts +7 -7
  190. package/dist/dts/Clock.d.ts.map +1 -1
  191. package/dist/dts/Config.d.ts +1 -1
  192. package/dist/dts/Config.d.ts.map +1 -1
  193. package/dist/dts/ConfigProvider.d.ts +6 -6
  194. package/dist/dts/ConfigProvider.d.ts.map +1 -1
  195. package/dist/dts/Console.d.ts +43 -43
  196. package/dist/dts/Console.d.ts.map +1 -1
  197. package/dist/dts/Context.d.ts +44 -29
  198. package/dist/dts/Context.d.ts.map +1 -1
  199. package/dist/dts/Data.d.ts +38 -57
  200. package/dist/dts/Data.d.ts.map +1 -1
  201. package/dist/dts/Deferred.d.ts +36 -36
  202. package/dist/dts/Deferred.d.ts.map +1 -1
  203. package/dist/dts/Effect.d.ts +732 -729
  204. package/dist/dts/Effect.d.ts.map +1 -1
  205. package/dist/dts/Effectable.d.ts +8 -8
  206. package/dist/dts/Effectable.d.ts.map +1 -1
  207. package/dist/dts/Either.d.ts +2 -3
  208. package/dist/dts/Either.d.ts.map +1 -1
  209. package/dist/dts/Exit.d.ts +74 -74
  210. package/dist/dts/Exit.d.ts.map +1 -1
  211. package/dist/dts/Fiber.d.ts +75 -75
  212. package/dist/dts/Fiber.d.ts.map +1 -1
  213. package/dist/dts/FiberMap.d.ts +22 -22
  214. package/dist/dts/FiberMap.d.ts.map +1 -1
  215. package/dist/dts/FiberRef.d.ts +28 -28
  216. package/dist/dts/FiberRef.d.ts.map +1 -1
  217. package/dist/dts/FiberRefs.d.ts +1 -1
  218. package/dist/dts/FiberRefs.d.ts.map +1 -1
  219. package/dist/dts/FiberSet.d.ts +16 -16
  220. package/dist/dts/FiberSet.d.ts.map +1 -1
  221. package/dist/dts/GroupBy.d.ts +6 -6
  222. package/dist/dts/GroupBy.d.ts.map +1 -1
  223. package/dist/dts/KeyedPool.d.ts +22 -22
  224. package/dist/dts/KeyedPool.d.ts.map +1 -1
  225. package/dist/dts/Layer.d.ts +126 -126
  226. package/dist/dts/Layer.d.ts.map +1 -1
  227. package/dist/dts/LogLevel.d.ts +2 -2
  228. package/dist/dts/LogLevel.d.ts.map +1 -1
  229. package/dist/dts/Logger.d.ts +14 -14
  230. package/dist/dts/Logger.d.ts.map +1 -1
  231. package/dist/dts/MergeDecision.d.ts +7 -7
  232. package/dist/dts/MergeState.d.ts +13 -13
  233. package/dist/dts/MergeState.d.ts.map +1 -1
  234. package/dist/dts/Metric.d.ts +32 -32
  235. package/dist/dts/Metric.d.ts.map +1 -1
  236. package/dist/dts/MetricPolling.d.ts +6 -6
  237. package/dist/dts/MetricPolling.d.ts.map +1 -1
  238. package/dist/dts/Number.d.ts +15 -0
  239. package/dist/dts/Number.d.ts.map +1 -1
  240. package/dist/dts/Option.d.ts +2 -3
  241. package/dist/dts/Option.d.ts.map +1 -1
  242. package/dist/dts/Pool.d.ts +15 -16
  243. package/dist/dts/Pool.d.ts.map +1 -1
  244. package/dist/dts/PubSub.d.ts +18 -18
  245. package/dist/dts/PubSub.d.ts.map +1 -1
  246. package/dist/dts/Queue.d.ts +40 -40
  247. package/dist/dts/Queue.d.ts.map +1 -1
  248. package/dist/dts/Random.d.ts +13 -13
  249. package/dist/dts/Random.d.ts.map +1 -1
  250. package/dist/dts/RateLimiter.d.ts +31 -0
  251. package/dist/dts/RateLimiter.d.ts.map +1 -0
  252. package/dist/dts/ReadonlyArray.d.ts +3 -3
  253. package/dist/dts/ReadonlyRecord.d.ts +37 -8
  254. package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
  255. package/dist/dts/Ref.d.ts +25 -25
  256. package/dist/dts/Ref.d.ts.map +1 -1
  257. package/dist/dts/Reloadable.d.ts +9 -9
  258. package/dist/dts/Reloadable.d.ts.map +1 -1
  259. package/dist/dts/Request.d.ts +27 -28
  260. package/dist/dts/Request.d.ts.map +1 -1
  261. package/dist/dts/RequestBlock.d.ts +3 -3
  262. package/dist/dts/RequestBlock.d.ts.map +1 -1
  263. package/dist/dts/RequestResolver.d.ts +16 -16
  264. package/dist/dts/RequestResolver.d.ts.map +1 -1
  265. package/dist/dts/Resource.d.ts +7 -7
  266. package/dist/dts/Resource.d.ts.map +1 -1
  267. package/dist/dts/Runtime.d.ts +13 -16
  268. package/dist/dts/Runtime.d.ts.map +1 -1
  269. package/dist/dts/RuntimeFlags.d.ts +10 -10
  270. package/dist/dts/RuntimeFlags.d.ts.map +1 -1
  271. package/dist/dts/STM.d.ts +303 -303
  272. package/dist/dts/STM.d.ts.map +1 -1
  273. package/dist/dts/Schedule.d.ts +47 -47
  274. package/dist/dts/Schedule.d.ts.map +1 -1
  275. package/dist/dts/Scope.d.ts +10 -10
  276. package/dist/dts/Scope.d.ts.map +1 -1
  277. package/dist/dts/ScopedCache.d.ts +14 -14
  278. package/dist/dts/ScopedCache.d.ts.map +1 -1
  279. package/dist/dts/ScopedRef.d.ts +5 -5
  280. package/dist/dts/ScopedRef.d.ts.map +1 -1
  281. package/dist/dts/SingleProducerAsyncInput.d.ts +8 -8
  282. package/dist/dts/SingleProducerAsyncInput.d.ts.map +1 -1
  283. package/dist/dts/Sink.d.ts +214 -205
  284. package/dist/dts/Sink.d.ts.map +1 -1
  285. package/dist/dts/Stream.d.ts +595 -592
  286. package/dist/dts/Stream.d.ts.map +1 -1
  287. package/dist/dts/StreamEmit.d.ts +5 -5
  288. package/dist/dts/StreamEmit.d.ts.map +1 -1
  289. package/dist/dts/Streamable.d.ts +2 -2
  290. package/dist/dts/Streamable.d.ts.map +1 -1
  291. package/dist/dts/SubscriptionRef.d.ts +41 -41
  292. package/dist/dts/SubscriptionRef.d.ts.map +1 -1
  293. package/dist/dts/Supervisor.d.ts +17 -17
  294. package/dist/dts/Supervisor.d.ts.map +1 -1
  295. package/dist/dts/SynchronizedRef.d.ts +41 -41
  296. package/dist/dts/SynchronizedRef.d.ts.map +1 -1
  297. package/dist/dts/TArray.d.ts +72 -72
  298. package/dist/dts/TArray.d.ts.map +1 -1
  299. package/dist/dts/TDeferred.d.ts +12 -12
  300. package/dist/dts/TDeferred.d.ts.map +1 -1
  301. package/dist/dts/TMap.d.ts +67 -67
  302. package/dist/dts/TMap.d.ts.map +1 -1
  303. package/dist/dts/TPriorityQueue.d.ts +23 -23
  304. package/dist/dts/TPriorityQueue.d.ts.map +1 -1
  305. package/dist/dts/TPubSub.d.ts +15 -15
  306. package/dist/dts/TPubSub.d.ts.map +1 -1
  307. package/dist/dts/TQueue.d.ts +40 -40
  308. package/dist/dts/TQueue.d.ts.map +1 -1
  309. package/dist/dts/TRandom.d.ts +13 -13
  310. package/dist/dts/TRandom.d.ts.map +1 -1
  311. package/dist/dts/TReentrantLock.d.ts +21 -21
  312. package/dist/dts/TReentrantLock.d.ts.map +1 -1
  313. package/dist/dts/TRef.d.ts +25 -25
  314. package/dist/dts/TRef.d.ts.map +1 -1
  315. package/dist/dts/TSemaphore.d.ts +15 -15
  316. package/dist/dts/TSemaphore.d.ts.map +1 -1
  317. package/dist/dts/TSet.d.ts +49 -49
  318. package/dist/dts/TSet.d.ts.map +1 -1
  319. package/dist/dts/Take.d.ts +41 -41
  320. package/dist/dts/Take.d.ts.map +1 -1
  321. package/dist/dts/TestAnnotation.d.ts +1 -3
  322. package/dist/dts/TestAnnotation.d.ts.map +1 -1
  323. package/dist/dts/TestAnnotations.d.ts +3 -3
  324. package/dist/dts/TestAnnotations.d.ts.map +1 -1
  325. package/dist/dts/TestClock.d.ts +18 -18
  326. package/dist/dts/TestClock.d.ts.map +1 -1
  327. package/dist/dts/TestConfig.d.ts.map +1 -1
  328. package/dist/dts/TestContext.d.ts +2 -2
  329. package/dist/dts/TestContext.d.ts.map +1 -1
  330. package/dist/dts/TestLive.d.ts +1 -1
  331. package/dist/dts/TestLive.d.ts.map +1 -1
  332. package/dist/dts/TestServices.d.ts +31 -31
  333. package/dist/dts/TestServices.d.ts.map +1 -1
  334. package/dist/dts/TestSized.d.ts +2 -2
  335. package/dist/dts/TestSized.d.ts.map +1 -1
  336. package/dist/dts/Tracer.d.ts +1 -1
  337. package/dist/dts/Utils.d.ts.map +1 -1
  338. package/dist/dts/index.d.ts +12 -2
  339. package/dist/dts/index.d.ts.map +1 -1
  340. package/dist/dts/internal/channel/channelExecutor.d.ts +1 -1
  341. package/dist/dts/internal/channel/channelExecutor.d.ts.map +1 -1
  342. package/dist/dts/internal/core-stream.d.ts +1 -1
  343. package/dist/dts/internal/core-stream.d.ts.map +1 -1
  344. package/dist/dts/internal/rateLimiter.d.ts +2 -0
  345. package/dist/dts/internal/rateLimiter.d.ts.map +1 -0
  346. package/dist/dts/internal/stm/stm.d.ts +6 -6
  347. package/dist/dts/internal/stm/stm.d.ts.map +1 -1
  348. package/dist/dts/internal/version.d.ts +1 -1
  349. package/dist/esm/Cause.js +13 -0
  350. package/dist/esm/Cause.js.map +1 -1
  351. package/dist/esm/Channel.js.map +1 -1
  352. package/dist/esm/Clock.js.map +1 -1
  353. package/dist/esm/Console.js.map +1 -1
  354. package/dist/esm/Context.js +22 -24
  355. package/dist/esm/Context.js.map +1 -1
  356. package/dist/esm/Data.js +4 -5
  357. package/dist/esm/Data.js.map +1 -1
  358. package/dist/esm/Deferred.js +1 -1
  359. package/dist/esm/Deferred.js.map +1 -1
  360. package/dist/esm/Effect.js +9 -9
  361. package/dist/esm/Effect.js.map +1 -1
  362. package/dist/esm/Effectable.js.map +1 -1
  363. package/dist/esm/Either.js.map +1 -1
  364. package/dist/esm/Exit.js +2 -2
  365. package/dist/esm/Exit.js.map +1 -1
  366. package/dist/esm/Fiber.js.map +1 -1
  367. package/dist/esm/FiberMap.js +3 -3
  368. package/dist/esm/FiberRef.js.map +1 -1
  369. package/dist/esm/FiberRefs.js.map +1 -1
  370. package/dist/esm/FiberSet.js +3 -3
  371. package/dist/esm/FiberSet.js.map +1 -1
  372. package/dist/esm/GroupBy.js.map +1 -1
  373. package/dist/esm/Layer.js.map +1 -1
  374. package/dist/esm/LogLevel.js.map +1 -1
  375. package/dist/esm/Logger.js.map +1 -1
  376. package/dist/esm/Metric.js.map +1 -1
  377. package/dist/esm/Number.js +18 -0
  378. package/dist/esm/Number.js.map +1 -1
  379. package/dist/esm/Option.js.map +1 -1
  380. package/dist/esm/Pool.js.map +1 -1
  381. package/dist/esm/PubSub.js.map +1 -1
  382. package/dist/esm/Queue.js.map +1 -1
  383. package/dist/esm/Random.js.map +1 -1
  384. package/dist/esm/RateLimiter.js +7 -0
  385. package/dist/esm/RateLimiter.js.map +1 -0
  386. package/dist/esm/ReadonlyRecord.js +44 -8
  387. package/dist/esm/ReadonlyRecord.js.map +1 -1
  388. package/dist/esm/Ref.js.map +1 -1
  389. package/dist/esm/Request.js.map +1 -1
  390. package/dist/esm/RequestResolver.js.map +1 -1
  391. package/dist/esm/Resource.js.map +1 -1
  392. package/dist/esm/Runtime.js +1 -4
  393. package/dist/esm/Runtime.js.map +1 -1
  394. package/dist/esm/RuntimeFlags.js.map +1 -1
  395. package/dist/esm/STM.js.map +1 -1
  396. package/dist/esm/Schedule.js.map +1 -1
  397. package/dist/esm/Scope.js.map +1 -1
  398. package/dist/esm/ScopedRef.js.map +1 -1
  399. package/dist/esm/SingleProducerAsyncInput.js.map +1 -1
  400. package/dist/esm/Sink.js.map +1 -1
  401. package/dist/esm/Stream.js.map +1 -1
  402. package/dist/esm/SubscriptionRef.js.map +1 -1
  403. package/dist/esm/Supervisor.js.map +1 -1
  404. package/dist/esm/SynchronizedRef.js.map +1 -1
  405. package/dist/esm/TArray.js.map +1 -1
  406. package/dist/esm/TDeferred.js.map +1 -1
  407. package/dist/esm/TMap.js.map +1 -1
  408. package/dist/esm/TPriorityQueue.js.map +1 -1
  409. package/dist/esm/TPubSub.js.map +1 -1
  410. package/dist/esm/TQueue.js.map +1 -1
  411. package/dist/esm/TRandom.js.map +1 -1
  412. package/dist/esm/TReentrantLock.js.map +1 -1
  413. package/dist/esm/TRef.js.map +1 -1
  414. package/dist/esm/TSemaphore.js.map +1 -1
  415. package/dist/esm/TSet.js.map +1 -1
  416. package/dist/esm/Take.js +6 -6
  417. package/dist/esm/Take.js.map +1 -1
  418. package/dist/esm/TestAnnotation.js +10 -13
  419. package/dist/esm/TestAnnotation.js.map +1 -1
  420. package/dist/esm/TestAnnotations.js +1 -1
  421. package/dist/esm/TestAnnotations.js.map +1 -1
  422. package/dist/esm/TestClock.js +1 -1
  423. package/dist/esm/TestClock.js.map +1 -1
  424. package/dist/esm/TestConfig.js +1 -1
  425. package/dist/esm/TestConfig.js.map +1 -1
  426. package/dist/esm/TestContext.js.map +1 -1
  427. package/dist/esm/TestLive.js +1 -1
  428. package/dist/esm/TestLive.js.map +1 -1
  429. package/dist/esm/TestServices.js.map +1 -1
  430. package/dist/esm/TestSized.js +1 -1
  431. package/dist/esm/TestSized.js.map +1 -1
  432. package/dist/esm/Utils.js +1 -1
  433. package/dist/esm/Utils.js.map +1 -1
  434. package/dist/esm/index.js +12 -2
  435. package/dist/esm/index.js.map +1 -1
  436. package/dist/esm/internal/cache.js.map +1 -1
  437. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  438. package/dist/esm/internal/channel/mergeDecision.js +2 -6
  439. package/dist/esm/internal/channel/mergeDecision.js.map +1 -1
  440. package/dist/esm/internal/channel/singleProducerAsyncInput.js.map +1 -1
  441. package/dist/esm/internal/channel.js +1 -1
  442. package/dist/esm/internal/channel.js.map +1 -1
  443. package/dist/esm/internal/clock.js +1 -1
  444. package/dist/esm/internal/clock.js.map +1 -1
  445. package/dist/esm/internal/configProvider.js +2 -4
  446. package/dist/esm/internal/configProvider.js.map +1 -1
  447. package/dist/esm/internal/console.js.map +1 -1
  448. package/dist/esm/internal/context.js +28 -20
  449. package/dist/esm/internal/context.js.map +1 -1
  450. package/dist/esm/internal/core-effect.js +12 -26
  451. package/dist/esm/internal/core-effect.js.map +1 -1
  452. package/dist/esm/internal/core-stream.js.map +1 -1
  453. package/dist/esm/internal/core.js +57 -127
  454. package/dist/esm/internal/core.js.map +1 -1
  455. package/dist/esm/internal/data.js.map +1 -1
  456. package/dist/esm/internal/defaultServices/console.js +1 -1
  457. package/dist/esm/internal/defaultServices/console.js.map +1 -1
  458. package/dist/esm/internal/defaultServices.js.map +1 -1
  459. package/dist/esm/internal/deferred.js.map +1 -1
  460. package/dist/esm/internal/differ/contextPatch.js +9 -9
  461. package/dist/esm/internal/differ/contextPatch.js.map +1 -1
  462. package/dist/esm/internal/effect/circular.js +5 -8
  463. package/dist/esm/internal/effect/circular.js.map +1 -1
  464. package/dist/esm/internal/effectable.js +4 -4
  465. package/dist/esm/internal/effectable.js.map +1 -1
  466. package/dist/esm/internal/fiber.js +2 -6
  467. package/dist/esm/internal/fiber.js.map +1 -1
  468. package/dist/esm/internal/fiberRuntime.js +10 -19
  469. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  470. package/dist/esm/internal/groupBy.js.map +1 -1
  471. package/dist/esm/internal/keyedPool.js.map +1 -1
  472. package/dist/esm/internal/layer/circular.js.map +1 -1
  473. package/dist/esm/internal/layer.js +3 -3
  474. package/dist/esm/internal/layer.js.map +1 -1
  475. package/dist/esm/internal/logSpan.js +3 -5
  476. package/dist/esm/internal/logSpan.js.map +1 -1
  477. package/dist/esm/internal/metric.js.map +1 -1
  478. package/dist/esm/internal/pool.js.map +1 -1
  479. package/dist/esm/internal/pubsub.js +1 -5
  480. package/dist/esm/internal/pubsub.js.map +1 -1
  481. package/dist/esm/internal/query.js.map +1 -1
  482. package/dist/esm/internal/queue.js.map +1 -1
  483. package/dist/esm/internal/random.js +1 -1
  484. package/dist/esm/internal/random.js.map +1 -1
  485. package/dist/esm/internal/rateLimiter.js +12 -0
  486. package/dist/esm/internal/rateLimiter.js.map +1 -0
  487. package/dist/esm/internal/ref.js.map +1 -1
  488. package/dist/esm/internal/reloadable.js +1 -9
  489. package/dist/esm/internal/reloadable.js.map +1 -1
  490. package/dist/esm/internal/runtime.js +0 -1
  491. package/dist/esm/internal/runtime.js.map +1 -1
  492. package/dist/esm/internal/schedule.js.map +1 -1
  493. package/dist/esm/internal/scopedCache.js.map +1 -1
  494. package/dist/esm/internal/scopedRef.js.map +1 -1
  495. package/dist/esm/internal/sink.js +7 -7
  496. package/dist/esm/internal/sink.js.map +1 -1
  497. package/dist/esm/internal/stm/core.js.map +1 -1
  498. package/dist/esm/internal/stm/stm/stmState.js.map +1 -1
  499. package/dist/esm/internal/stm/stm/tExit.js +2 -2
  500. package/dist/esm/internal/stm/stm/tExit.js.map +1 -1
  501. package/dist/esm/internal/stm/stm/tryCommit.js.map +1 -1
  502. package/dist/esm/internal/stm/stm.js.map +1 -1
  503. package/dist/esm/internal/stm/tArray.js.map +1 -1
  504. package/dist/esm/internal/stm/tDeferred.js +4 -2
  505. package/dist/esm/internal/stm/tDeferred.js.map +1 -1
  506. package/dist/esm/internal/stm/tMap.js.map +1 -1
  507. package/dist/esm/internal/stm/tPriorityQueue.js.map +1 -1
  508. package/dist/esm/internal/stm/tPubSub.js.map +1 -1
  509. package/dist/esm/internal/stm/tQueue.js.map +1 -1
  510. package/dist/esm/internal/stm/tRandom.js +1 -1
  511. package/dist/esm/internal/stm/tRandom.js.map +1 -1
  512. package/dist/esm/internal/stm/tReentrantLock.js.map +1 -1
  513. package/dist/esm/internal/stm/tRef.js.map +1 -1
  514. package/dist/esm/internal/stm/tSemaphore.js.map +1 -1
  515. package/dist/esm/internal/stm/tSet.js.map +1 -1
  516. package/dist/esm/internal/stream/debounceState.js.map +1 -1
  517. package/dist/esm/internal/stream/handoff.js.map +1 -1
  518. package/dist/esm/internal/stream/handoffSignal.js.map +1 -1
  519. package/dist/esm/internal/stream/pull.js.map +1 -1
  520. package/dist/esm/internal/stream.js +0 -2
  521. package/dist/esm/internal/stream.js.map +1 -1
  522. package/dist/esm/internal/subscriptionRef.js.map +1 -1
  523. package/dist/esm/internal/supervisor.js.map +1 -1
  524. package/dist/esm/internal/take.js +2 -2
  525. package/dist/esm/internal/take.js.map +1 -1
  526. package/dist/esm/internal/testing/sleep.js.map +1 -1
  527. package/dist/esm/internal/tracer.js +2 -2
  528. package/dist/esm/internal/tracer.js.map +1 -1
  529. package/dist/esm/internal/version.js +1 -1
  530. package/package.json +9 -1
  531. package/src/Cache.ts +20 -20
  532. package/src/Cause.ts +37 -13
  533. package/src/Channel.ts +802 -794
  534. package/src/Clock.ts +7 -7
  535. package/src/Config.ts +1 -1
  536. package/src/ConfigProvider.ts +6 -6
  537. package/src/Console.ts +44 -48
  538. package/src/Context.ts +52 -30
  539. package/src/Data.ts +38 -61
  540. package/src/Deferred.ts +39 -41
  541. package/src/Effect.ts +1187 -1206
  542. package/src/Effectable.ts +8 -8
  543. package/src/Either.ts +2 -3
  544. package/src/Exit.ts +88 -105
  545. package/src/Fiber.ts +77 -83
  546. package/src/FiberMap.ts +77 -77
  547. package/src/FiberRef.ts +28 -28
  548. package/src/FiberRefs.ts +1 -1
  549. package/src/FiberSet.ts +61 -62
  550. package/src/GroupBy.ts +8 -12
  551. package/src/KeyedPool.ts +22 -22
  552. package/src/Layer.ts +187 -181
  553. package/src/LogLevel.ts +7 -6
  554. package/src/Logger.ts +18 -18
  555. package/src/MergeDecision.ts +7 -7
  556. package/src/MergeState.ts +16 -16
  557. package/src/Metric.ts +39 -39
  558. package/src/MetricPolling.ts +6 -6
  559. package/src/Number.ts +19 -0
  560. package/src/Option.ts +2 -3
  561. package/src/Pool.ts +15 -16
  562. package/src/PubSub.ts +18 -18
  563. package/src/Queue.ts +43 -46
  564. package/src/Random.ts +13 -15
  565. package/src/RateLimiter.ts +37 -0
  566. package/src/ReadonlyRecord.ts +49 -8
  567. package/src/Ref.ts +25 -25
  568. package/src/Reloadable.ts +10 -10
  569. package/src/Request.ts +31 -31
  570. package/src/RequestBlock.ts +3 -3
  571. package/src/RequestResolver.ts +21 -21
  572. package/src/Resource.ts +13 -13
  573. package/src/Runtime.ts +16 -19
  574. package/src/RuntimeFlags.ts +10 -10
  575. package/src/STM.ts +361 -362
  576. package/src/Schedule.ts +47 -47
  577. package/src/Scheduler.ts +2 -2
  578. package/src/Scope.ts +14 -15
  579. package/src/ScopedCache.ts +14 -14
  580. package/src/ScopedRef.ts +7 -7
  581. package/src/SingleProducerAsyncInput.ts +8 -9
  582. package/src/Sink.ts +357 -381
  583. package/src/Stream.ts +935 -1033
  584. package/src/StreamEmit.ts +5 -5
  585. package/src/Streamable.ts +2 -2
  586. package/src/SubscriptionRef.ts +51 -51
  587. package/src/Supervisor.ts +26 -26
  588. package/src/SynchronizedRef.ts +44 -44
  589. package/src/TArray.ts +74 -74
  590. package/src/TDeferred.ts +14 -14
  591. package/src/TMap.ts +72 -72
  592. package/src/TPriorityQueue.ts +23 -24
  593. package/src/TPubSub.ts +15 -15
  594. package/src/TQueue.ts +40 -40
  595. package/src/TRandom.ts +13 -13
  596. package/src/TReentrantLock.ts +21 -21
  597. package/src/TRef.ts +25 -25
  598. package/src/TSemaphore.ts +15 -15
  599. package/src/TSet.ts +49 -49
  600. package/src/Take.ts +51 -51
  601. package/src/TestAnnotation.ts +6 -17
  602. package/src/TestAnnotations.ts +7 -9
  603. package/src/TestClock.ts +39 -45
  604. package/src/TestConfig.ts +1 -3
  605. package/src/TestContext.ts +3 -3
  606. package/src/TestLive.ts +3 -5
  607. package/src/TestServices.ts +45 -47
  608. package/src/TestSized.ts +5 -5
  609. package/src/Tracer.ts +1 -1
  610. package/src/Utils.ts +8 -10
  611. package/src/index.ts +13 -2
  612. package/src/internal/blockedRequests.ts +2 -2
  613. package/src/internal/cache.ts +38 -38
  614. package/src/internal/channel/channelExecutor.ts +65 -73
  615. package/src/internal/channel/channelState.ts +11 -11
  616. package/src/internal/channel/continuation.ts +10 -10
  617. package/src/internal/channel/mergeDecision.ts +14 -16
  618. package/src/internal/channel/mergeState.ts +12 -12
  619. package/src/internal/channel/singleProducerAsyncInput.ts +15 -17
  620. package/src/internal/channel/subexecutor.ts +7 -7
  621. package/src/internal/channel.ts +901 -980
  622. package/src/internal/clock.ts +6 -6
  623. package/src/internal/concurrency.ts +9 -9
  624. package/src/internal/configProvider.ts +29 -36
  625. package/src/internal/console.ts +12 -12
  626. package/src/internal/context.ts +32 -23
  627. package/src/internal/core-effect.ts +655 -616
  628. package/src/internal/core-stream.ts +317 -325
  629. package/src/internal/core.ts +856 -790
  630. package/src/internal/data.ts +2 -3
  631. package/src/internal/dataSource.ts +14 -14
  632. package/src/internal/defaultServices/console.ts +3 -1
  633. package/src/internal/defaultServices.ts +21 -21
  634. package/src/internal/deferred.ts +9 -9
  635. package/src/internal/differ/contextPatch.ts +17 -17
  636. package/src/internal/effect/circular.ts +154 -159
  637. package/src/internal/effectable.ts +7 -7
  638. package/src/internal/fiber.ts +55 -59
  639. package/src/internal/fiberRefs.ts +1 -1
  640. package/src/internal/fiberRuntime.ts +426 -463
  641. package/src/internal/groupBy.ts +59 -62
  642. package/src/internal/keyedPool.ts +37 -37
  643. package/src/internal/layer/circular.ts +37 -37
  644. package/src/internal/layer.ts +235 -240
  645. package/src/internal/logSpan.ts +3 -5
  646. package/src/internal/metric/polling.ts +5 -5
  647. package/src/internal/metric.ts +54 -55
  648. package/src/internal/pool.ts +72 -72
  649. package/src/internal/pubsub.ts +75 -84
  650. package/src/internal/query.ts +25 -27
  651. package/src/internal/queue.ts +65 -70
  652. package/src/internal/random.ts +9 -9
  653. package/src/internal/rateLimiter.ts +30 -0
  654. package/src/internal/ref.ts +24 -24
  655. package/src/internal/reloadable.ts +11 -31
  656. package/src/internal/request.ts +14 -14
  657. package/src/internal/resource.ts +8 -8
  658. package/src/internal/runtime.ts +21 -22
  659. package/src/internal/schedule.ts +131 -134
  660. package/src/internal/scopedCache.ts +35 -32
  661. package/src/internal/scopedRef.ts +14 -14
  662. package/src/internal/sink.ts +507 -565
  663. package/src/internal/stm/core.ts +101 -102
  664. package/src/internal/stm/stm/stmState.ts +10 -10
  665. package/src/internal/stm/stm/tExit.ts +18 -18
  666. package/src/internal/stm/stm/tryCommit.ts +5 -5
  667. package/src/internal/stm/stm.ts +363 -374
  668. package/src/internal/stm/tArray.ts +92 -92
  669. package/src/internal/stm/tDeferred.ts +16 -14
  670. package/src/internal/stm/tMap.ts +83 -84
  671. package/src/internal/stm/tPriorityQueue.ts +24 -25
  672. package/src/internal/stm/tPubSub.ts +37 -38
  673. package/src/internal/stm/tQueue.ts +44 -48
  674. package/src/internal/stm/tRandom.ts +18 -18
  675. package/src/internal/stm/tReentrantLock.ts +28 -28
  676. package/src/internal/stm/tRef.ts +25 -25
  677. package/src/internal/stm/tSemaphore.ts +16 -16
  678. package/src/internal/stm/tSet.ts +51 -52
  679. package/src/internal/stream/debounceState.ts +7 -7
  680. package/src/internal/stream/emit.ts +4 -4
  681. package/src/internal/stream/handoff.ts +19 -19
  682. package/src/internal/stream/handoffSignal.ts +4 -4
  683. package/src/internal/stream/pull.ts +10 -11
  684. package/src/internal/stream.ts +1770 -1788
  685. package/src/internal/subscriptionRef.ts +17 -17
  686. package/src/internal/supervisor.ts +49 -56
  687. package/src/internal/synchronizedRef.ts +27 -27
  688. package/src/internal/take.ts +61 -61
  689. package/src/internal/testing/sleep.ts +2 -2
  690. package/src/internal/testing/suspendedWarningData.ts +2 -2
  691. package/src/internal/testing/warningData.ts +2 -2
  692. package/src/internal/tracer.ts +2 -6
  693. package/src/internal/version.ts +1 -1
@@ -35,15 +35,15 @@ import * as ChannelStateOpCodes from "./opCodes/channelState.js"
35
35
  import * as tracer from "./tracer.js"
36
36
 
37
37
  /** @internal */
38
- export const acquireUseRelease = <Env, InErr, InElem, InDone, OutErr, OutElem1, OutDone, Acquired>(
39
- acquire: Effect.Effect<Env, OutErr, Acquired>,
40
- use: (a: Acquired) => Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem1, OutDone>,
41
- release: (a: Acquired, exit: Exit.Exit<OutErr, OutDone>) => Effect.Effect<Env, never, any>
42
- ): Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem1, OutDone> =>
38
+ export const acquireUseRelease = <Acquired, OutErr, Env, OutElem1, InElem, InErr, OutDone, InDone>(
39
+ acquire: Effect.Effect<Acquired, OutErr, Env>,
40
+ use: (a: Acquired) => Channel.Channel<OutElem1, InElem, OutErr, InErr, OutDone, InDone, Env>,
41
+ release: (a: Acquired, exit: Exit.Exit<OutDone, OutErr>) => Effect.Effect<any, never, Env>
42
+ ): Channel.Channel<OutElem1, InElem, OutErr, InErr, OutDone, InDone, Env> =>
43
43
  core.flatMap(
44
44
  core.fromEffect(
45
45
  Ref.make<
46
- (exit: Exit.Exit<OutErr, OutDone>) => Effect.Effect<Env, never, any>
46
+ (exit: Exit.Exit<OutDone, OutErr>) => Effect.Effect<any, never, Env>
47
47
  >(() => Effect.unit)
48
48
  ),
49
49
  (ref) =>
@@ -65,37 +65,37 @@ export const acquireUseRelease = <Env, InErr, InElem, InDone, OutErr, OutElem1,
65
65
  export const as = dual<
66
66
  <OutDone2>(
67
67
  value: OutDone2
68
- ) => <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
69
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
70
- ) => Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone2>,
71
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, OutDone2>(
72
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
68
+ ) => <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
69
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
70
+ ) => Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone2, InDone, Env>,
71
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutDone2>(
72
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
73
73
  value: OutDone2
74
- ) => Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone2>
75
- >(2, <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, OutDone2>(
76
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
74
+ ) => Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone2, InDone, Env>
75
+ >(2, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutDone2>(
76
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
77
77
  value: OutDone2
78
- ): Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone2> => map(self, () => value))
78
+ ): Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone2, InDone, Env> => map(self, () => value))
79
79
 
80
80
  /** @internal */
81
- export const asUnit = <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
82
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
83
- ): Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, void> => map(self, constVoid)
81
+ export const asUnit = <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
82
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
83
+ ): Channel.Channel<OutElem, InElem, OutErr, InErr, void, InDone, Env> => map(self, constVoid)
84
84
 
85
85
  /** @internal */
86
- export const buffer = <InErr, InElem, InDone>(
86
+ export const buffer = <InElem, InErr, InDone>(
87
87
  options: {
88
88
  readonly empty: InElem
89
89
  readonly isEmpty: Predicate<InElem>
90
90
  readonly ref: Ref.Ref<InElem>
91
91
  }
92
- ): Channel.Channel<never, InErr, InElem, InDone, InErr, InElem, InDone> =>
93
- core.suspend<never, InErr, InElem, InDone, InErr, InElem, InDone>(() => {
92
+ ): Channel.Channel<InElem, InElem, InErr, InErr, InDone, InDone> =>
93
+ core.suspend(() => {
94
94
  const doBuffer = <InErr, InElem, InDone>(
95
95
  empty: InElem,
96
96
  isEmpty: Predicate<InElem>,
97
97
  ref: Ref.Ref<InElem>
98
- ): Channel.Channel<never, InErr, InElem, InDone, InErr, InElem, InDone> =>
98
+ ): Channel.Channel<InElem, InElem, InErr, InErr, InDone, InDone> =>
99
99
  unwrap(
100
100
  Ref.modify(ref, (inElem) =>
101
101
  isEmpty(inElem) ?
@@ -123,10 +123,10 @@ export const buffer = <InErr, InElem, InDone>(
123
123
  })
124
124
 
125
125
  /** @internal */
126
- export const bufferChunk = <InErr, InElem, InDone>(
126
+ export const bufferChunk = <InElem, InErr, InDone>(
127
127
  ref: Ref.Ref<Chunk.Chunk<InElem>>
128
- ): Channel.Channel<never, InErr, Chunk.Chunk<InElem>, InDone, InErr, Chunk.Chunk<InElem>, InDone> =>
129
- buffer<InErr, Chunk.Chunk<InElem>, InDone>({
128
+ ): Channel.Channel<Chunk.Chunk<InElem>, Chunk.Chunk<InElem>, InErr, InErr, InDone, InDone> =>
129
+ buffer({
130
130
  empty: Chunk.empty(),
131
131
  isEmpty: Chunk.isEmpty,
132
132
  ref
@@ -134,44 +134,44 @@ export const bufferChunk = <InErr, InElem, InDone>(
134
134
 
135
135
  /** @internal */
136
136
  export const catchAll = dual<
137
- <Env1, InErr1, InElem1, InDone1, OutErr, OutErr1, OutElem1, OutDone1>(
138
- f: (error: OutErr) => Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>
139
- ) => <Env, InErr, InElem, InDone, OutElem, OutDone>(
140
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
137
+ <OutErr, OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
138
+ f: (error: OutErr) => Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>
139
+ ) => <OutElem, InElem, InErr, OutDone, InDone, Env>(
140
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
141
141
  ) => Channel.Channel<
142
- Env1 | Env,
143
- InErr & InErr1,
142
+ OutElem1 | OutElem,
144
143
  InElem & InElem1,
145
- InDone & InDone1,
146
144
  OutErr1,
147
- OutElem1 | OutElem,
148
- OutDone1 | OutDone
145
+ InErr & InErr1,
146
+ OutDone1 | OutDone,
147
+ InDone & InDone1,
148
+ Env1 | Env
149
149
  >,
150
- <Env, InErr, InElem, InDone, OutElem, OutDone, Env1, InErr1, InElem1, InDone1, OutErr, OutErr1, OutElem1, OutDone1>(
151
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
152
- f: (error: OutErr) => Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>
150
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
151
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
152
+ f: (error: OutErr) => Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>
153
153
  ) => Channel.Channel<
154
- Env1 | Env,
155
- InErr & InErr1,
154
+ OutElem1 | OutElem,
156
155
  InElem & InElem1,
157
- InDone & InDone1,
158
156
  OutErr1,
159
- OutElem1 | OutElem,
160
- OutDone1 | OutDone
157
+ InErr & InErr1,
158
+ OutDone1 | OutDone,
159
+ InDone & InDone1,
160
+ Env1 | Env
161
161
  >
162
162
  >(
163
163
  2,
164
- <Env, InErr, InElem, InDone, OutElem, OutDone, Env1, InErr1, InElem1, InDone1, OutErr, OutErr1, OutElem1, OutDone1>(
165
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
166
- f: (error: OutErr) => Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>
164
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
165
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
166
+ f: (error: OutErr) => Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>
167
167
  ): Channel.Channel<
168
- Env | Env1,
169
- InErr & InErr1,
168
+ OutElem | OutElem1,
170
169
  InElem & InElem1,
171
- InDone & InDone1,
172
170
  OutErr1,
173
- OutElem | OutElem1,
174
- OutDone | OutDone1
171
+ InErr & InErr1,
172
+ OutDone | OutDone1,
173
+ InDone & InDone1,
174
+ Env | Env1
175
175
  > =>
176
176
  core.catchAllCause(self, (cause) =>
177
177
  Either.match(Cause.failureOrCause(cause), {
@@ -182,60 +182,60 @@ export const catchAll = dual<
182
182
 
183
183
  /** @internal */
184
184
  export const concatMap = dual<
185
- <OutElem, OutElem2, Env2, InErr2, InElem2, InDone2, OutErr2, _>(
186
- f: (o: OutElem) => Channel.Channel<Env2, InErr2, InElem2, InDone2, OutErr2, OutElem2, _>
185
+ <OutElem, OutElem2, InElem2, OutErr2, InErr2, _, InDone2, Env2>(
186
+ f: (o: OutElem) => Channel.Channel<OutElem2, InElem2, OutErr2, InErr2, _, InDone2, Env2>
187
187
  ) => <Env, InErr, InElem, InDone, OutErr, OutDone>(
188
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
188
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
189
189
  ) => Channel.Channel<
190
- Env2 | Env,
191
- InErr & InErr2,
190
+ OutElem2,
192
191
  InElem & InElem2,
193
- InDone & InDone2,
194
192
  OutErr2 | OutErr,
195
- OutElem2,
196
- unknown
193
+ InErr & InErr2,
194
+ unknown,
195
+ InDone & InDone2,
196
+ Env2 | Env
197
197
  >,
198
198
  <Env, InErr, InElem, InDone, OutErr, OutDone, OutElem, OutElem2, Env2, InErr2, InElem2, InDone2, OutErr2, _>(
199
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
200
- f: (o: OutElem) => Channel.Channel<Env2, InErr2, InElem2, InDone2, OutErr2, OutElem2, _>
199
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
200
+ f: (o: OutElem) => Channel.Channel<OutElem2, InElem2, OutErr2, InErr2, _, InDone2, Env2>
201
201
  ) => Channel.Channel<
202
- Env2 | Env,
203
- InErr & InErr2,
202
+ OutElem2,
204
203
  InElem & InElem2,
205
- InDone & InDone2,
206
204
  OutErr2 | OutErr,
207
- OutElem2,
208
- unknown
205
+ InErr & InErr2,
206
+ unknown,
207
+ InDone & InDone2,
208
+ Env2 | Env
209
209
  >
210
210
  >(2, <Env, InErr, InElem, InDone, OutErr, OutDone, OutElem, OutElem2, Env2, InErr2, InElem2, InDone2, OutErr2, _>(
211
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
212
- f: (o: OutElem) => Channel.Channel<Env2, InErr2, InElem2, InDone2, OutErr2, OutElem2, _>
211
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
212
+ f: (o: OutElem) => Channel.Channel<OutElem2, InElem2, OutErr2, InErr2, _, InDone2, Env2>
213
213
  ): Channel.Channel<
214
- Env | Env2,
215
- InErr & InErr2,
214
+ OutElem2,
216
215
  InElem & InElem2,
217
- InDone & InDone2,
218
216
  OutErr | OutErr2,
219
- OutElem2,
220
- unknown
217
+ InErr & InErr2,
218
+ unknown,
219
+ InDone & InDone2,
220
+ Env | Env2
221
221
  > => core.concatMapWith(self, f, () => void 0, () => void 0))
222
222
 
223
223
  /** @internal */
224
224
  export const collect = dual<
225
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutElem2, OutDone>(
225
+ <OutElem, OutElem2>(
226
226
  pf: (o: OutElem) => Option.Option<OutElem2>
227
- ) => (
228
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
229
- ) => Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem2, OutDone>,
230
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutElem2, OutDone>(
231
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
227
+ ) => <InElem, OutErr, InErr, OutDone, InDone, Env>(
228
+ self: Channel.Channel<OutElem>
229
+ ) => Channel.Channel<OutElem2, InElem, OutErr, InErr, OutDone, InDone, Env>,
230
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem2>(
231
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
232
232
  pf: (o: OutElem) => Option.Option<OutElem2>
233
- ) => Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem2, OutDone>
234
- >(2, <Env, InErr, InElem, InDone, OutErr, OutElem, OutElem2, OutDone>(
235
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
233
+ ) => Channel.Channel<OutElem2, InElem, OutErr, InErr, OutDone, InDone, Env>
234
+ >(2, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem2>(
235
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
236
236
  pf: (o: OutElem) => Option.Option<OutElem2>
237
- ): Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem2, OutDone> => {
238
- const collector: Channel.Channel<Env, OutErr, OutElem, OutDone, OutErr, OutElem2, OutDone> = core
237
+ ): Channel.Channel<OutElem2, InElem, OutErr, InErr, OutDone, InDone, Env> => {
238
+ const collector: Channel.Channel<OutElem2, OutElem, OutErr, OutErr, OutDone, OutDone, Env> = core
239
239
  .readWith({
240
240
  onInput: (out) =>
241
241
  Option.match(pf(out), {
@@ -249,34 +249,34 @@ export const collect = dual<
249
249
  })
250
250
 
251
251
  /** @internal */
252
- export const concatOut = <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
252
+ export const concatOut = <OutElem, InElem, OutErr, InErr, InDone, Env, OutDone>(
253
253
  self: Channel.Channel<
254
- Env,
255
- InErr,
254
+ Channel.Channel<OutElem, InElem, OutErr, InErr, unknown, InDone, Env>,
256
255
  InElem,
257
- InDone,
258
256
  OutErr,
259
- Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, unknown>,
260
- OutDone
257
+ InErr,
258
+ OutDone,
259
+ InDone,
260
+ Env
261
261
  >
262
- ): Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, unknown> => core.concatAll(self)
262
+ ): Channel.Channel<OutElem, InElem, OutErr, InErr, unknown, InDone, Env> => core.concatAll(self)
263
263
 
264
264
  /** @internal */
265
265
  export const mapInput = dual<
266
266
  <InDone0, InDone>(
267
267
  f: (a: InDone0) => InDone
268
- ) => <Env, InErr, InElem, OutErr, OutElem, OutDone>(
269
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
270
- ) => Channel.Channel<Env, InErr, InElem, InDone0, OutErr, OutElem, OutDone>,
271
- <Env, InErr, InElem, OutErr, OutElem, OutDone, InDone0, InDone>(
272
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
268
+ ) => <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
269
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
270
+ ) => Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone0, Env>,
271
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, InDone0>(
272
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
273
273
  f: (a: InDone0) => InDone
274
- ) => Channel.Channel<Env, InErr, InElem, InDone0, OutErr, OutElem, OutDone>
275
- >(2, <Env, InErr, InElem, OutErr, OutElem, OutDone, InDone0, InDone>(
276
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
274
+ ) => Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone0, Env>
275
+ >(2, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, InDone0>(
276
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
277
277
  f: (a: InDone0) => InDone
278
- ): Channel.Channel<Env, InErr, InElem, InDone0, OutErr, OutElem, OutDone> => {
279
- const reader: Channel.Channel<never, InErr, InElem, InDone0, InErr, InElem, InDone> = core.readWith({
278
+ ): Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone0, Env> => {
279
+ const reader: Channel.Channel<InElem, InElem, InErr, InErr, InDone, InDone0> = core.readWith({
280
280
  onInput: (inElem: InElem) => core.flatMap(core.write(inElem), () => reader),
281
281
  onFailure: core.fail,
282
282
  onDone: (done: InDone0) => core.succeedNow(f(done))
@@ -286,20 +286,20 @@ export const mapInput = dual<
286
286
 
287
287
  /** @internal */
288
288
  export const mapInputEffect = dual<
289
- <Env1, InErr, InDone0, InDone>(
290
- f: (i: InDone0) => Effect.Effect<Env1, InErr, InDone>
291
- ) => <Env, InElem, OutErr, OutElem, OutDone>(
292
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
293
- ) => Channel.Channel<Env1 | Env, InErr, InElem, InDone0, OutErr, OutElem, OutDone>,
294
- <Env, InElem, OutErr, OutElem, OutDone, Env1, InErr, InDone0, InDone>(
295
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
296
- f: (i: InDone0) => Effect.Effect<Env1, InErr, InDone>
297
- ) => Channel.Channel<Env1 | Env, InErr, InElem, InDone0, OutErr, OutElem, OutDone>
298
- >(2, <Env, InElem, OutErr, OutElem, OutDone, Env1, InErr, InDone0, InDone>(
299
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
300
- f: (i: InDone0) => Effect.Effect<Env1, InErr, InDone>
301
- ): Channel.Channel<Env | Env1, InErr, InElem, InDone0, OutErr, OutElem, OutDone> => {
302
- const reader: Channel.Channel<Env1, InErr, InElem, InDone0, InErr, InElem, InDone> = core.readWith({
289
+ <InDone0, InDone, InErr, Env1>(
290
+ f: (i: InDone0) => Effect.Effect<InDone, InErr, Env1>
291
+ ) => <OutElem, InElem, OutErr, OutDone, Env>(
292
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
293
+ ) => Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone0, Env1 | Env>,
294
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, InDone0, Env1>(
295
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
296
+ f: (i: InDone0) => Effect.Effect<InDone, InErr, Env1>
297
+ ) => Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone0, Env1 | Env>
298
+ >(2, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, InDone0, Env1>(
299
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
300
+ f: (i: InDone0) => Effect.Effect<InDone, InErr, Env1>
301
+ ): Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone0, Env | Env1> => {
302
+ const reader: Channel.Channel<InElem, InElem, InErr, InErr, InDone, InDone0, Env1> = core.readWith({
303
303
  onInput: (inElem) => core.flatMap(core.write(inElem), () => reader),
304
304
  onFailure: core.fail,
305
305
  onDone: (done) => core.fromEffect(f(done))
@@ -311,18 +311,18 @@ export const mapInputEffect = dual<
311
311
  export const mapInputError = dual<
312
312
  <InErr0, InErr>(
313
313
  f: (a: InErr0) => InErr
314
- ) => <Env, InElem, InDone, OutErr, OutElem, OutDone>(
315
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
316
- ) => Channel.Channel<Env, InErr0, InElem, InDone, OutErr, OutElem, OutDone>,
317
- <Env, InElem, InDone, OutErr, OutElem, OutDone, InErr0, InErr>(
318
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
314
+ ) => <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
315
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
316
+ ) => Channel.Channel<OutElem, InElem, OutErr, InErr0, OutDone, InDone, Env>,
317
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, InErr0>(
318
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
319
319
  f: (a: InErr0) => InErr
320
- ) => Channel.Channel<Env, InErr0, InElem, InDone, OutErr, OutElem, OutDone>
321
- >(2, <Env, InElem, InDone, OutErr, OutElem, OutDone, InErr0, InErr>(
322
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
320
+ ) => Channel.Channel<OutElem, InElem, OutErr, InErr0, OutDone, InDone, Env>
321
+ >(2, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, InErr0>(
322
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
323
323
  f: (a: InErr0) => InErr
324
- ): Channel.Channel<Env, InErr0, InElem, InDone, OutErr, OutElem, OutDone> => {
325
- const reader: Channel.Channel<never, InErr0, InElem, InDone, InErr, InElem, InDone> = core.readWith({
324
+ ): Channel.Channel<OutElem, InElem, OutErr, InErr0, OutDone, InDone, Env> => {
325
+ const reader: Channel.Channel<InElem, InElem, InErr, InErr0, InDone, InDone> = core.readWith({
326
326
  onInput: (inElem: InElem) => core.flatMap(core.write(inElem), () => reader),
327
327
  onFailure: (error) => core.fail(f(error)),
328
328
  onDone: core.succeedNow
@@ -332,20 +332,20 @@ export const mapInputError = dual<
332
332
 
333
333
  /** @internal */
334
334
  export const mapInputErrorEffect = dual<
335
- <Env1, InErr0, InErr, InDone>(
336
- f: (error: InErr0) => Effect.Effect<Env1, InErr, InDone>
337
- ) => <Env, InElem, OutErr, OutElem, OutDone>(
338
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
339
- ) => Channel.Channel<Env1 | Env, InErr0, InElem, InDone, OutErr, OutElem, OutDone>,
340
- <Env, InElem, OutErr, OutElem, OutDone, Env1, InErr0, InErr, InDone>(
341
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
342
- f: (error: InErr0) => Effect.Effect<Env1, InErr, InDone>
343
- ) => Channel.Channel<Env1 | Env, InErr0, InElem, InDone, OutErr, OutElem, OutDone>
344
- >(2, <Env, InElem, OutErr, OutElem, OutDone, Env1, InErr0, InErr, InDone>(
345
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
346
- f: (error: InErr0) => Effect.Effect<Env1, InErr, InDone>
347
- ): Channel.Channel<Env | Env1, InErr0, InElem, InDone, OutErr, OutElem, OutDone> => {
348
- const reader: Channel.Channel<Env1, InErr0, InElem, InDone, InErr, InElem, InDone> = core.readWith({
335
+ <InErr0, InDone, InErr, Env1>(
336
+ f: (error: InErr0) => Effect.Effect<InDone, InErr, Env1>
337
+ ) => <OutElem, InElem, OutErr, OutDone, Env>(
338
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
339
+ ) => Channel.Channel<OutElem, InElem, OutErr, InErr0, OutDone, InDone, Env1 | Env>,
340
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, InErr0, Env1>(
341
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
342
+ f: (error: InErr0) => Effect.Effect<InDone, InErr, Env1>
343
+ ) => Channel.Channel<OutElem, InElem, OutErr, InErr0, OutDone, InDone, Env1 | Env>
344
+ >(2, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, InErr0, Env1>(
345
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
346
+ f: (error: InErr0) => Effect.Effect<InDone, InErr, Env1>
347
+ ): Channel.Channel<OutElem, InElem, OutErr, InErr0, OutDone, InDone, Env | Env1> => {
348
+ const reader: Channel.Channel<InElem, InElem, InErr, InErr0, InDone, InDone, Env1> = core.readWith({
349
349
  onInput: (inElem) => core.flatMap(core.write(inElem), () => reader),
350
350
  onFailure: (error) => core.fromEffect(f(error)),
351
351
  onDone: core.succeedNow
@@ -357,18 +357,18 @@ export const mapInputErrorEffect = dual<
357
357
  export const mapInputIn = dual<
358
358
  <InElem0, InElem>(
359
359
  f: (a: InElem0) => InElem
360
- ) => <Env, InErr, InDone, OutErr, OutElem, OutDone>(
361
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
362
- ) => Channel.Channel<Env, InErr, InElem0, InDone, OutErr, OutElem, OutDone>,
363
- <Env, InErr, InDone, OutErr, OutElem, OutDone, InElem0, InElem>(
364
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
360
+ ) => <OutElem, OutErr, InErr, OutDone, InDone, Env>(
361
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
362
+ ) => Channel.Channel<OutElem, InElem0, OutErr, InErr, OutDone, InDone, Env>,
363
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, InElem0>(
364
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
365
365
  f: (a: InElem0) => InElem
366
- ) => Channel.Channel<Env, InErr, InElem0, InDone, OutErr, OutElem, OutDone>
367
- >(2, <Env, InErr, InDone, OutErr, OutElem, OutDone, InElem0, InElem>(
368
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
366
+ ) => Channel.Channel<OutElem, InElem0, OutErr, InErr, OutDone, InDone, Env>
367
+ >(2, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, InElem0>(
368
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
369
369
  f: (a: InElem0) => InElem
370
- ): Channel.Channel<Env, InErr, InElem0, InDone, OutErr, OutElem, OutDone> => {
371
- const reader: Channel.Channel<never, InErr, InElem0, InDone, InErr, InElem, InDone> = core.readWith({
370
+ ): Channel.Channel<OutElem, InElem0, OutErr, InErr, OutDone, InDone, Env> => {
371
+ const reader: Channel.Channel<InElem, InElem0, InErr, InErr, InDone, InDone> = core.readWith({
372
372
  onInput: (inElem) => core.flatMap(core.write(f(inElem)), () => reader),
373
373
  onFailure: core.fail,
374
374
  onDone: core.succeedNow
@@ -378,20 +378,20 @@ export const mapInputIn = dual<
378
378
 
379
379
  /** @internal */
380
380
  export const mapInputInEffect = dual<
381
- <Env1, InErr, InElem0, InElem>(
382
- f: (a: InElem0) => Effect.Effect<Env1, InErr, InElem>
383
- ) => <Env, InDone, OutErr, OutElem, OutDone>(
384
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
385
- ) => Channel.Channel<Env1 | Env, InErr, InElem0, InDone, OutErr, OutElem, OutDone>,
386
- <Env, InDone, OutErr, OutElem, OutDone, Env1, InErr, InElem0, InElem>(
387
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
388
- f: (a: InElem0) => Effect.Effect<Env1, InErr, InElem>
389
- ) => Channel.Channel<Env1 | Env, InErr, InElem0, InDone, OutErr, OutElem, OutDone>
390
- >(2, <Env, InDone, OutErr, OutElem, OutDone, Env1, InErr, InElem0, InElem>(
391
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
392
- f: (a: InElem0) => Effect.Effect<Env1, InErr, InElem>
393
- ): Channel.Channel<Env | Env1, InErr, InElem0, InDone, OutErr, OutElem, OutDone> => {
394
- const reader: Channel.Channel<Env1, InErr, InElem0, InDone, InErr, InElem, InDone> = core.readWith({
381
+ <InElem0, InElem, InErr, Env1>(
382
+ f: (a: InElem0) => Effect.Effect<InElem, InErr, Env1>
383
+ ) => <OutElem, OutErr, OutDone, InDone, Env>(
384
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
385
+ ) => Channel.Channel<OutElem, InElem0, OutErr, InErr, OutDone, InDone, Env1 | Env>,
386
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, InElem0, Env1>(
387
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
388
+ f: (a: InElem0) => Effect.Effect<InElem, InErr, Env1>
389
+ ) => Channel.Channel<OutElem, InElem0, OutErr, InErr, OutDone, InDone, Env1 | Env>
390
+ >(2, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, InElem0, Env1>(
391
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
392
+ f: (a: InElem0) => Effect.Effect<InElem, InErr, Env1>
393
+ ): Channel.Channel<OutElem, InElem0, OutErr, InErr, OutDone, InDone, Env | Env1> => {
394
+ const reader: Channel.Channel<InElem, InElem0, InErr, InErr, InDone, InDone, Env1> = core.readWith({
395
395
  onInput: (inElem) => core.flatMap(core.flatMap(core.fromEffect(f(inElem)), core.write), () => reader),
396
396
  onFailure: core.fail,
397
397
  onDone: core.succeedNow
@@ -400,17 +400,9 @@ export const mapInputInEffect = dual<
400
400
  })
401
401
 
402
402
  /** @internal */
403
- export const doneCollect = <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
404
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
405
- ): Channel.Channel<
406
- Env,
407
- InErr,
408
- InElem,
409
- InDone,
410
- OutErr,
411
- never,
412
- [Chunk.Chunk<OutElem>, OutDone]
413
- > =>
403
+ export const doneCollect = <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
404
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
405
+ ): Channel.Channel<never, InElem, OutErr, InErr, [Chunk.Chunk<OutElem>, OutDone], InDone, Env> =>
414
406
  core.suspend(() => {
415
407
  const builder: Array<OutElem> = []
416
408
  return pipe(
@@ -422,7 +414,7 @@ export const doneCollect = <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone
422
414
  /** @internal */
423
415
  const doneCollectReader = <Env, OutErr, OutElem, OutDone>(
424
416
  builder: Array<OutElem>
425
- ): Channel.Channel<Env, OutErr, OutElem, OutDone, OutErr, never, OutDone> => {
417
+ ): Channel.Channel<never, OutElem, OutErr, OutErr, OutDone, OutDone, Env> => {
426
418
  return core.readWith({
427
419
  onInput: (outElem) =>
428
420
  core.flatMap(
@@ -437,10 +429,10 @@ const doneCollectReader = <Env, OutErr, OutElem, OutDone>(
437
429
  }
438
430
 
439
431
  /** @internal */
440
- export const drain = <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
441
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
442
- ): Channel.Channel<Env, InErr, InElem, InDone, OutErr, never, OutDone> => {
443
- const drainer: Channel.Channel<Env, OutErr, OutElem, OutDone, OutErr, never, OutDone> = core
432
+ export const drain = <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
433
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
434
+ ): Channel.Channel<never, InElem, OutErr, InErr, OutDone, InDone, Env> => {
435
+ const drainer: Channel.Channel<never, OutElem, OutErr, OutErr, OutDone, OutDone, Env> = core
444
436
  .readWithCause({
445
437
  onInput: () => drainer,
446
438
  onFailure: core.failCause,
@@ -450,214 +442,207 @@ export const drain = <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
450
442
  }
451
443
 
452
444
  /** @internal */
453
- export const emitCollect = <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
454
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
455
- ): Channel.Channel<Env, InErr, InElem, InDone, OutErr, [Chunk.Chunk<OutElem>, OutDone], void> =>
445
+ export const emitCollect = <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
446
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
447
+ ): Channel.Channel<[Chunk.Chunk<OutElem>, OutDone], InElem, OutErr, InErr, void, InDone, Env> =>
456
448
  core.flatMap(doneCollect(self), core.write)
457
449
 
458
450
  /** @internal */
459
451
  export const ensuring = dual<
460
- <Env1, Z>(
461
- finalizer: Effect.Effect<Env1, never, Z>
462
- ) => <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
463
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
464
- ) => Channel.Channel<Env1 | Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
465
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env1, Z>(
466
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
467
- finalizer: Effect.Effect<Env1, never, Z>
468
- ) => Channel.Channel<Env1 | Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
452
+ <Z, Env1>(
453
+ finalizer: Effect.Effect<Z, never, Env1>
454
+ ) => <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
455
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
456
+ ) => Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env1 | Env>,
457
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, Z, Env1>(
458
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
459
+ finalizer: Effect.Effect<Z, never, Env1>
460
+ ) => Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env1 | Env>
469
461
  >(2, <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env1, Z>(
470
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
471
- finalizer: Effect.Effect<Env1, never, Z>
472
- ): Channel.Channel<Env | Env1, InErr, InElem, InDone, OutErr, OutElem, OutDone> =>
462
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
463
+ finalizer: Effect.Effect<Z, never, Env1>
464
+ ): Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env | Env1> =>
473
465
  core.ensuringWith(self, () => finalizer))
474
466
 
475
467
  /** @internal */
476
- export const context = <Env>(): Channel.Channel<
477
- Env,
478
- unknown,
479
- unknown,
480
- unknown,
481
- never,
482
- never,
483
- Context.Context<Env>
484
- > => core.fromEffect(Effect.context<Env>())
468
+ export const context = <Env>(): Channel.Channel<never, unknown, never, unknown, Context.Context<Env>, unknown, Env> =>
469
+ core.fromEffect(Effect.context<Env>())
485
470
 
486
471
  /** @internal */
487
472
  export const contextWith = <Env, OutDone>(
488
473
  f: (env: Context.Context<Env>) => OutDone
489
- ): Channel.Channel<Env, unknown, unknown, unknown, never, never, OutDone> => map(context<Env>(), f)
474
+ ): Channel.Channel<never, unknown, never, unknown, OutDone, unknown, Env> => map(context<Env>(), f)
490
475
 
491
476
  /** @internal */
492
477
  export const contextWithChannel = <
493
478
  Env,
494
- Env1,
495
- InErr,
479
+ OutElem,
496
480
  InElem,
497
- InDone,
498
481
  OutErr,
499
- OutElem,
500
- OutDone
482
+ InErr,
483
+ OutDone,
484
+ InDone,
485
+ Env1
501
486
  >(
502
- f: (env: Context.Context<Env>) => Channel.Channel<Env1, InErr, InElem, InDone, OutErr, OutElem, OutDone>
503
- ): Channel.Channel<Env | Env1, InErr, InElem, InDone, OutErr, OutElem, OutDone> => core.flatMap(context<Env>(), f)
487
+ f: (env: Context.Context<Env>) => Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env1>
488
+ ): Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env | Env1> => core.flatMap(context<Env>(), f)
504
489
 
505
490
  /** @internal */
506
- export const contextWithEffect = <Env, Env1, OutErr, OutDone>(
507
- f: (env: Context.Context<Env>) => Effect.Effect<Env1, OutErr, OutDone>
508
- ): Channel.Channel<Env | Env1, unknown, unknown, unknown, OutErr, never, OutDone> => mapEffect(context<Env>(), f)
491
+ export const contextWithEffect = <Env, OutDone, OutErr, Env1>(
492
+ f: (env: Context.Context<Env>) => Effect.Effect<OutDone, OutErr, Env1>
493
+ ): Channel.Channel<never, unknown, OutErr, unknown, OutDone, unknown, Env | Env1> => mapEffect(context<Env>(), f)
509
494
 
510
495
  /** @internal */
511
496
  export const flatten = <
512
- Env,
513
- InErr,
497
+ OutElem,
514
498
  InElem,
515
- InDone,
516
499
  OutErr,
517
- OutElem,
518
- Env1,
519
- InErr1,
500
+ InErr,
501
+ OutElem1,
520
502
  InElem1,
521
- InDone1,
522
503
  OutErr1,
523
- OutElem1,
524
- OutDone2
504
+ InErr1,
505
+ OutDone2,
506
+ InDone1,
507
+ Env1,
508
+ InDone,
509
+ Env
525
510
  >(
526
511
  self: Channel.Channel<
527
- Env,
528
- InErr,
512
+ OutElem,
529
513
  InElem,
530
- InDone,
531
514
  OutErr,
532
- OutElem,
533
- Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone2>
515
+ InErr,
516
+ Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone2, InDone1, Env1>,
517
+ InDone,
518
+ Env
534
519
  >
535
520
  ): Channel.Channel<
536
- Env | Env1,
537
- InErr & InErr1,
521
+ OutElem | OutElem1,
538
522
  InElem & InElem1,
539
- InDone & InDone1,
540
523
  OutErr | OutErr1,
541
- OutElem | OutElem1,
542
- OutDone2
524
+ InErr & InErr1,
525
+ OutDone2,
526
+ InDone & InDone1,
527
+ Env | Env1
543
528
  > => core.flatMap(self, identity)
544
529
 
545
530
  /** @internal */
546
531
  export const foldChannel = dual<
547
532
  <
548
- Env1,
549
- Env2,
550
- InErr1,
551
- InErr2,
552
- InElem1,
553
- InElem2,
554
- InDone1,
555
- InDone2,
556
533
  OutErr,
557
- OutErr1,
558
- OutErr2,
559
534
  OutElem1,
560
- OutElem2,
561
- OutDone,
535
+ InElem1,
536
+ OutErr1,
537
+ InErr1,
562
538
  OutDone1,
563
- OutDone2
539
+ InDone1,
540
+ Env1,
541
+ OutDone,
542
+ OutElem2,
543
+ InElem2,
544
+ OutErr2,
545
+ InErr2,
546
+ OutDone2,
547
+ InDone2,
548
+ Env2
564
549
  >(
565
550
  options: {
566
551
  readonly onFailure: (
567
552
  error: OutErr
568
- ) => Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>
553
+ ) => Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>
569
554
  readonly onSuccess: (
570
555
  done: OutDone
571
- ) => Channel.Channel<Env2, InErr2, InElem2, InDone2, OutErr2, OutElem2, OutDone2>
556
+ ) => Channel.Channel<OutElem2, InElem2, OutErr2, InErr2, OutDone2, InDone2, Env2>
572
557
  }
573
558
  ) => <Env, InErr, InElem, InDone, OutElem>(
574
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
559
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
575
560
  ) => Channel.Channel<
576
- Env1 | Env2 | Env,
577
- InErr & InErr1 & InErr2,
561
+ OutElem1 | OutElem2 | OutElem,
578
562
  InElem & InElem1 & InElem2,
579
- InDone & InDone1 & InDone2,
580
563
  OutErr1 | OutErr2,
581
- OutElem1 | OutElem2 | OutElem,
582
- OutDone1 | OutDone2
564
+ InErr & InErr1 & InErr2,
565
+ OutDone1 | OutDone2,
566
+ InDone & InDone1 & InDone2,
567
+ Env1 | Env2 | Env
583
568
  >,
584
569
  <
585
- Env,
586
- InErr,
570
+ OutElem,
587
571
  InElem,
572
+ OutErr,
573
+ InErr,
574
+ OutDone,
588
575
  InDone,
589
- OutElem,
590
- Env1,
591
- Env2,
592
- InErr1,
593
- InErr2,
576
+ Env,
577
+ OutElem1,
594
578
  InElem1,
595
- InElem2,
596
- InDone1,
597
- InDone2,
598
- OutErr,
599
579
  OutErr1,
600
- OutErr2,
601
- OutElem1,
602
- OutElem2,
603
- OutDone,
580
+ InErr1,
604
581
  OutDone1,
605
- OutDone2
582
+ InDone1,
583
+ Env1,
584
+ OutElem2,
585
+ InElem2,
586
+ OutErr2,
587
+ InErr2,
588
+ OutDone2,
589
+ InDone2,
590
+ Env2
606
591
  >(
607
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
592
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
608
593
  options: {
609
594
  readonly onFailure: (
610
595
  error: OutErr
611
- ) => Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>
596
+ ) => Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>
612
597
  readonly onSuccess: (
613
598
  done: OutDone
614
- ) => Channel.Channel<Env2, InErr2, InElem2, InDone2, OutErr2, OutElem2, OutDone2>
599
+ ) => Channel.Channel<OutElem2, InElem2, OutErr2, InErr2, OutDone2, InDone2, Env2>
615
600
  }
616
601
  ) => Channel.Channel<
617
- Env1 | Env2 | Env,
618
- InErr & InErr1 & InErr2,
602
+ OutElem1 | OutElem2 | OutElem,
619
603
  InElem & InElem1 & InElem2,
620
- InDone & InDone1 & InDone2,
621
604
  OutErr1 | OutErr2,
622
- OutElem1 | OutElem2 | OutElem,
623
- OutDone1 | OutDone2
605
+ InErr & InErr1 & InErr2,
606
+ OutDone1 | OutDone2,
607
+ InDone & InDone1 & InDone2,
608
+ Env1 | Env2 | Env
624
609
  >
625
610
  >(2, <
626
- Env,
627
- InErr,
611
+ OutElem,
628
612
  InElem,
613
+ OutErr,
614
+ InErr,
615
+ OutDone,
629
616
  InDone,
630
- OutElem,
631
- Env1,
632
- Env2,
633
- InErr1,
634
- InErr2,
617
+ Env,
618
+ OutElem1,
635
619
  InElem1,
636
- InElem2,
637
- InDone1,
638
- InDone2,
639
- OutErr,
640
620
  OutErr1,
641
- OutErr2,
642
- OutElem1,
643
- OutElem2,
644
- OutDone,
621
+ InErr1,
645
622
  OutDone1,
646
- OutDone2
623
+ InDone1,
624
+ Env1,
625
+ OutElem2,
626
+ InElem2,
627
+ OutErr2,
628
+ InErr2,
629
+ OutDone2,
630
+ InDone2,
631
+ Env2
647
632
  >(
648
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
633
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
649
634
  options: {
650
- readonly onFailure: (error: OutErr) => Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>
651
- readonly onSuccess: (done: OutDone) => Channel.Channel<Env2, InErr2, InElem2, InDone2, OutErr2, OutElem2, OutDone2>
635
+ readonly onFailure: (error: OutErr) => Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>
636
+ readonly onSuccess: (done: OutDone) => Channel.Channel<OutElem2, InElem2, OutErr2, InErr2, OutDone2, InDone2, Env2>
652
637
  }
653
638
  ): Channel.Channel<
654
- Env | Env1 | Env2,
655
- InErr & InErr1 & InErr2,
639
+ OutElem | OutElem2 | OutElem1,
656
640
  InElem & InElem1 & InElem2,
657
- InDone & InDone1 & InDone2,
658
641
  OutErr2 | OutErr1,
659
- OutElem | OutElem2 | OutElem1,
660
- OutDone2 | OutDone1
642
+ InErr & InErr1 & InErr2,
643
+ OutDone2 | OutDone1,
644
+ InDone & InDone1 & InDone2,
645
+ Env | Env1 | Env2
661
646
  > =>
662
647
  core.foldCauseChannel(self, {
663
648
  onFailure: (cause) => {
@@ -677,13 +662,13 @@ export const foldChannel = dual<
677
662
  /** @internal */
678
663
  export const fromEither = <E, A>(
679
664
  either: Either.Either<E, A>
680
- ): Channel.Channel<never, unknown, unknown, unknown, E, never, A> =>
665
+ ): Channel.Channel<never, unknown, E, unknown, A, unknown> =>
681
666
  core.suspend(() => Either.match(either, { onLeft: core.fail, onRight: core.succeed }))
682
667
 
683
668
  /** @internal */
684
669
  export const fromInput = <Err, Elem, Done>(
685
670
  input: SingleProducerAsyncInput.AsyncInputConsumer<Err, Elem, Done>
686
- ): Channel.Channel<never, unknown, unknown, unknown, Err, Elem, Done> =>
671
+ ): Channel.Channel<Elem, unknown, Err, unknown, Done, unknown> =>
687
672
  unwrap(
688
673
  input.takeWith(
689
674
  core.failCause,
@@ -693,21 +678,21 @@ export const fromInput = <Err, Elem, Done>(
693
678
  )
694
679
 
695
680
  /** @internal */
696
- export const fromPubSub = <Err, Done, Elem>(
697
- pubsub: PubSub.PubSub<Either.Either<Exit.Exit<Err, Done>, Elem>>
698
- ): Channel.Channel<never, unknown, unknown, unknown, Err, Elem, Done> =>
681
+ export const fromPubSub = <Done, Err, Elem>(
682
+ pubsub: PubSub.PubSub<Either.Either<Exit.Exit<Done, Err>, Elem>>
683
+ ): Channel.Channel<Elem, unknown, Err, unknown, Done, unknown> =>
699
684
  unwrapScoped(Effect.map(PubSub.subscribe(pubsub), fromQueue))
700
685
 
701
686
  /** @internal */
702
- export const fromPubSubScoped = <Err, Done, Elem>(
703
- pubsub: PubSub.PubSub<Either.Either<Exit.Exit<Err, Done>, Elem>>
704
- ): Effect.Effect<Scope.Scope, never, Channel.Channel<never, unknown, unknown, unknown, Err, Elem, Done>> =>
687
+ export const fromPubSubScoped = <Done, Err, Elem>(
688
+ pubsub: PubSub.PubSub<Either.Either<Exit.Exit<Done, Err>, Elem>>
689
+ ): Effect.Effect<Channel.Channel<Elem, unknown, Err, unknown, Done, unknown>, never, Scope.Scope> =>
705
690
  Effect.map(PubSub.subscribe(pubsub), fromQueue)
706
691
 
707
692
  /** @internal */
708
693
  export const fromOption = <A>(
709
694
  option: Option.Option<A>
710
- ): Channel.Channel<never, unknown, unknown, unknown, Option.Option<never>, never, A> =>
695
+ ): Channel.Channel<never, unknown, Option.Option<never>, unknown, A, unknown> =>
711
696
  core.suspend(() =>
712
697
  Option.match(option, {
713
698
  onNone: () => core.fail(Option.none()),
@@ -716,14 +701,14 @@ export const fromOption = <A>(
716
701
  )
717
702
 
718
703
  /** @internal */
719
- export const fromQueue = <Err, Elem, Done>(
720
- queue: Queue.Dequeue<Either.Either<Exit.Exit<Err, Done>, Elem>>
721
- ): Channel.Channel<never, unknown, unknown, unknown, Err, Elem, Done> => core.suspend(() => fromQueueInternal(queue))
704
+ export const fromQueue = <Done, Err, Elem>(
705
+ queue: Queue.Dequeue<Either.Either<Exit.Exit<Done, Err>, Elem>>
706
+ ): Channel.Channel<Elem, unknown, Err, unknown, Done, unknown> => core.suspend(() => fromQueueInternal(queue))
722
707
 
723
708
  /** @internal */
724
- const fromQueueInternal = <Err, Elem, Done>(
725
- queue: Queue.Dequeue<Either.Either<Exit.Exit<Err, Done>, Elem>>
726
- ): Channel.Channel<never, unknown, unknown, unknown, Err, Elem, Done> =>
709
+ const fromQueueInternal = <Done, Err, Elem>(
710
+ queue: Queue.Dequeue<Either.Either<Exit.Exit<Done, Err>, Elem>>
711
+ ): Channel.Channel<Elem, unknown, Err, unknown, Done, unknown> =>
727
712
  pipe(
728
713
  core.fromEffect(Queue.take(queue)),
729
714
  core.flatMap(Either.match({
@@ -734,42 +719,34 @@ const fromQueueInternal = <Err, Elem, Done>(
734
719
  onRight: (elem) =>
735
720
  core.flatMap(
736
721
  core.write(elem),
737
- () => fromQueueInternal<Err, Elem, Done>(queue)
722
+ () => fromQueueInternal(queue)
738
723
  )
739
724
  }))
740
725
  )
741
726
 
742
727
  /** @internal */
743
- export const identityChannel = <Err, Elem, Done>(): Channel.Channel<never, Err, Elem, Done, Err, Elem, Done> =>
728
+ export const identityChannel = <Elem, Err, Done>(): Channel.Channel<Elem, Elem, Err, Err, Done, Done> =>
744
729
  core.readWith({
745
- onInput: (input: Elem) => core.flatMap(core.write(input), () => identityChannel<Err, Elem, Done>()),
730
+ onInput: (input: Elem) => core.flatMap(core.write(input), () => identityChannel()),
746
731
  onFailure: core.fail,
747
732
  onDone: core.succeedNow
748
733
  })
749
734
 
750
735
  /** @internal */
751
736
  export const interruptWhen = dual<
752
- <Env1, OutErr1, OutDone1>(
753
- effect: Effect.Effect<Env1, OutErr1, OutDone1>
754
- ) => <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
755
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
756
- ) => Channel.Channel<Env1 | Env, InErr, InElem, InDone, OutErr1 | OutErr, OutElem, OutDone1 | OutDone>,
757
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env1, OutErr1, OutDone1>(
758
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
759
- effect: Effect.Effect<Env1, OutErr1, OutDone1>
760
- ) => Channel.Channel<Env1 | Env, InErr, InElem, InDone, OutErr1 | OutErr, OutElem, OutDone1 | OutDone>
761
- >(2, <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env1, OutErr1, OutDone1>(
762
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
763
- effect: Effect.Effect<Env1, OutErr1, OutDone1>
764
- ): Channel.Channel<
765
- Env1 | Env,
766
- InErr,
767
- InElem,
768
- InDone,
769
- OutErr | OutErr1,
770
- OutElem,
771
- OutDone | OutDone1
772
- > =>
737
+ <OutDone1, OutErr1, Env1>(
738
+ effect: Effect.Effect<OutDone1, OutErr1, Env1>
739
+ ) => <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
740
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
741
+ ) => Channel.Channel<OutElem, InElem, OutErr1 | OutErr, InErr, OutDone1 | OutDone, InDone, Env1 | Env>,
742
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutDone1, OutErr1, Env1>(
743
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
744
+ effect: Effect.Effect<OutDone1, OutErr1, Env1>
745
+ ) => Channel.Channel<OutElem, InElem, OutErr1 | OutErr, InErr, OutDone1 | OutDone, InDone, Env1 | Env>
746
+ >(2, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutDone1, OutErr1, Env1>(
747
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
748
+ effect: Effect.Effect<OutDone1, OutErr1, Env1>
749
+ ): Channel.Channel<OutElem, InElem, OutErr | OutErr1, InErr, OutDone | OutDone1, InDone, Env1 | Env> =>
773
750
  mergeWith(self, {
774
751
  other: core.fromEffect(effect),
775
752
  onSelfDone: (selfDone) => mergeDecision.Done(Effect.suspend(() => selfDone)),
@@ -778,104 +755,104 @@ export const interruptWhen = dual<
778
755
 
779
756
  /** @internal */
780
757
  export const interruptWhenDeferred = dual<
781
- <OutErr1, OutDone1>(
782
- deferred: Deferred.Deferred<OutErr1, OutDone1>
783
- ) => <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
784
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
785
- ) => Channel.Channel<Env, InErr, InElem, InDone, OutErr1 | OutErr, OutElem, OutDone1 | OutDone>,
786
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, OutErr1, OutDone1>(
787
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
788
- deferred: Deferred.Deferred<OutErr1, OutDone1>
789
- ) => Channel.Channel<Env, InErr, InElem, InDone, OutErr1 | OutErr, OutElem, OutDone1 | OutDone>
758
+ <OutDone1, OutErr1>(
759
+ deferred: Deferred.Deferred<OutDone1, OutErr1>
760
+ ) => <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
761
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
762
+ ) => Channel.Channel<OutElem, InElem, OutErr1 | OutErr, InErr, OutDone1 | OutDone, InDone, Env>,
763
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutDone1, OutErr1>(
764
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
765
+ deferred: Deferred.Deferred<OutDone1, OutErr1>
766
+ ) => Channel.Channel<OutElem, InElem, OutErr1 | OutErr, InErr, OutDone1 | OutDone, InDone, Env>
790
767
  >(2, <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, OutErr1, OutDone1>(
791
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
792
- deferred: Deferred.Deferred<OutErr1, OutDone1>
793
- ): Channel.Channel<Env, InErr, InElem, InDone, OutErr | OutErr1, OutElem, OutDone | OutDone1> =>
768
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
769
+ deferred: Deferred.Deferred<OutDone1, OutErr1>
770
+ ): Channel.Channel<OutElem, InElem, OutErr | OutErr1, InErr, OutDone | OutDone1, InDone, Env> =>
794
771
  interruptWhen(self, Deferred.await(deferred)))
795
772
 
796
773
  /** @internal */
797
774
  export const map = dual<
798
775
  <OutDone, OutDone2>(
799
776
  f: (out: OutDone) => OutDone2
800
- ) => <Env, InErr, InElem, InDone, OutErr, OutElem>(
801
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
802
- ) => Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone2>,
803
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, OutDone2>(
804
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
777
+ ) => <OutElem, InElem, OutErr, InErr, InDone, Env>(
778
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
779
+ ) => Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone2, InDone, Env>,
780
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutDone2>(
781
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
805
782
  f: (out: OutDone) => OutDone2
806
- ) => Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone2>
783
+ ) => Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone2, InDone, Env>
807
784
  >(2, <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, OutDone2>(
808
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
785
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
809
786
  f: (out: OutDone) => OutDone2
810
- ): Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone2> =>
787
+ ): Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone2, InDone, Env> =>
811
788
  core.flatMap(self, (a) => core.sync(() => f(a))))
812
789
 
813
790
  /** @internal */
814
791
  export const mapEffect = dual<
815
- <Env1, OutErr1, OutDone, OutDone1>(
816
- f: (o: OutDone) => Effect.Effect<Env1, OutErr1, OutDone1>
817
- ) => <Env, InErr, InElem, InDone, OutErr, OutElem>(
818
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
819
- ) => Channel.Channel<Env1 | Env, InErr, InElem, InDone, OutErr1 | OutErr, OutElem, OutDone1>,
820
- <Env, InErr, InElem, InDone, OutErr, OutElem, Env1, OutErr1, OutDone, OutDone1>(
821
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
822
- f: (o: OutDone) => Effect.Effect<Env1, OutErr1, OutDone1>
823
- ) => Channel.Channel<Env1 | Env, InErr, InElem, InDone, OutErr1 | OutErr, OutElem, OutDone1>
824
- >(2, <Env, InErr, InElem, InDone, OutErr, OutElem, Env1, OutErr1, OutDone, OutDone1>(
825
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
826
- f: (o: OutDone) => Effect.Effect<Env1, OutErr1, OutDone1>
827
- ): Channel.Channel<Env | Env1, InErr, InElem, InDone, OutErr | OutErr1, OutElem, OutDone1> =>
792
+ <OutDone, OutDone1, OutErr1, Env1>(
793
+ f: (o: OutDone) => Effect.Effect<OutDone1, OutErr1, Env1>
794
+ ) => <OutElem, InElem, OutErr, InErr, InDone, Env>(
795
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
796
+ ) => Channel.Channel<OutElem, InElem, OutErr1 | OutErr, InErr, OutDone1, InDone, Env1 | Env>,
797
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutDone1, OutErr1, Env1>(
798
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
799
+ f: (o: OutDone) => Effect.Effect<OutDone1, OutErr1, Env1>
800
+ ) => Channel.Channel<OutElem, InElem, OutErr1 | OutErr, InErr, OutDone1, InDone, Env1 | Env>
801
+ >(2, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutDone1, OutErr1, Env1>(
802
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
803
+ f: (o: OutDone) => Effect.Effect<OutDone1, OutErr1, Env1>
804
+ ): Channel.Channel<OutElem, InElem, OutErr | OutErr1, InErr, OutDone1, InDone, Env | Env1> =>
828
805
  core.flatMap(self, (z) => core.fromEffect(f(z))))
829
806
 
830
807
  /** @internal */
831
808
  export const mapError = dual<
832
809
  <OutErr, OutErr2>(
833
810
  f: (err: OutErr) => OutErr2
834
- ) => <Env, InErr, InElem, InDone, OutElem, OutDone>(
835
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
836
- ) => Channel.Channel<Env, InErr, InElem, InDone, OutErr2, OutElem, OutDone>,
837
- <Env, InErr, InElem, InDone, OutElem, OutDone, OutErr, OutErr2>(
838
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
811
+ ) => <OutElem, InElem, InErr, OutDone, InDone, Env>(
812
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
813
+ ) => Channel.Channel<OutElem, InElem, OutErr2, InErr, OutDone, InDone, Env>,
814
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutErr2>(
815
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
839
816
  f: (err: OutErr) => OutErr2
840
- ) => Channel.Channel<Env, InErr, InElem, InDone, OutErr2, OutElem, OutDone>
841
- >(2, <Env, InErr, InElem, InDone, OutElem, OutDone, OutErr, OutErr2>(
842
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
817
+ ) => Channel.Channel<OutElem, InElem, OutErr2, InErr, OutDone, InDone, Env>
818
+ >(2, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutErr2>(
819
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
843
820
  f: (err: OutErr) => OutErr2
844
- ): Channel.Channel<Env, InErr, InElem, InDone, OutErr2, OutElem, OutDone> => mapErrorCause(self, Cause.map(f)))
821
+ ): Channel.Channel<OutElem, InElem, OutErr2, InErr, OutDone, InDone, Env> => mapErrorCause(self, Cause.map(f)))
845
822
 
846
823
  /** @internal */
847
824
  export const mapErrorCause = dual<
848
825
  <OutErr, OutErr2>(
849
826
  f: (cause: Cause.Cause<OutErr>) => Cause.Cause<OutErr2>
850
- ) => <Env, InErr, InElem, InDone, OutElem, OutDone>(
851
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
852
- ) => Channel.Channel<Env, InErr, InElem, InDone, OutErr2, OutElem, OutDone>,
853
- <Env, InErr, InElem, InDone, OutElem, OutDone, OutErr, OutErr2>(
854
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
827
+ ) => <OutElem, InElem, InErr, OutDone, InDone, Env>(
828
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
829
+ ) => Channel.Channel<OutElem, InElem, OutErr2, InErr, OutDone, InDone, Env>,
830
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutErr2>(
831
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
855
832
  f: (cause: Cause.Cause<OutErr>) => Cause.Cause<OutErr2>
856
- ) => Channel.Channel<Env, InErr, InElem, InDone, OutErr2, OutElem, OutDone>
857
- >(2, <Env, InErr, InElem, InDone, OutElem, OutDone, OutErr, OutErr2>(
858
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
833
+ ) => Channel.Channel<OutElem, InElem, OutErr2, InErr, OutDone, InDone, Env>
834
+ >(2, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutErr2>(
835
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
859
836
  f: (cause: Cause.Cause<OutErr>) => Cause.Cause<OutErr2>
860
- ): Channel.Channel<Env, InErr, InElem, InDone, OutErr2, OutElem, OutDone> =>
837
+ ): Channel.Channel<OutElem, InElem, OutErr2, InErr, OutDone, InDone, Env> =>
861
838
  core.catchAllCause(self, (cause) => core.failCause(f(cause))))
862
839
 
863
840
  /** @internal */
864
841
  export const mapOut = dual<
865
842
  <OutElem, OutElem2>(
866
843
  f: (o: OutElem) => OutElem2
867
- ) => <Env, InErr, InElem, InDone, OutErr, OutDone>(
868
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
869
- ) => Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem2, OutDone>,
870
- <Env, InErr, InElem, InDone, OutErr, OutDone, OutElem, OutElem2>(
871
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
844
+ ) => <InElem, OutErr, InErr, OutDone, InDone, Env>(
845
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
846
+ ) => Channel.Channel<OutElem2, InElem, OutErr, InErr, OutDone, InDone, Env>,
847
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem2>(
848
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
872
849
  f: (o: OutElem) => OutElem2
873
- ) => Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem2, OutDone>
874
- >(2, <Env, InErr, InElem, InDone, OutErr, OutDone, OutElem, OutElem2>(
875
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
850
+ ) => Channel.Channel<OutElem2, InElem, OutErr, InErr, OutDone, InDone, Env>
851
+ >(2, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem2>(
852
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
876
853
  f: (o: OutElem) => OutElem2
877
- ): Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem2, OutDone> => {
878
- const reader: Channel.Channel<Env, OutErr, OutElem, OutDone, OutErr, OutElem2, OutDone> = core
854
+ ): Channel.Channel<OutElem2, InElem, OutErr, InErr, OutDone, InDone, Env> => {
855
+ const reader: Channel.Channel<OutElem2, OutElem, OutErr, OutErr, OutDone, OutDone, Env> = core
879
856
  .readWith({
880
857
  onInput: (outElem) => core.flatMap(core.write(f(outElem)), () => reader),
881
858
  onFailure: core.fail,
@@ -886,20 +863,20 @@ export const mapOut = dual<
886
863
 
887
864
  /** @internal */
888
865
  export const mapOutEffect = dual<
889
- <OutElem, Env1, OutErr1, OutElem1>(
890
- f: (o: OutElem) => Effect.Effect<Env1, OutErr1, OutElem1>
891
- ) => <Env, InErr, InElem, InDone, OutErr, OutDone>(
892
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
893
- ) => Channel.Channel<Env1 | Env, InErr, InElem, InDone, OutErr1 | OutErr, OutElem1, OutDone>,
894
- <Env, InErr, InElem, InDone, OutErr, OutDone, OutElem, Env1, OutErr1, OutElem1>(
895
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
896
- f: (o: OutElem) => Effect.Effect<Env1, OutErr1, OutElem1>
897
- ) => Channel.Channel<Env1 | Env, InErr, InElem, InDone, OutErr1 | OutErr, OutElem1, OutDone>
898
- >(2, <Env, InErr, InElem, InDone, OutErr, OutDone, OutElem, Env1, OutErr1, OutElem1>(
899
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
900
- f: (o: OutElem) => Effect.Effect<Env1, OutErr1, OutElem1>
901
- ): Channel.Channel<Env | Env1, InErr, InElem, InDone, OutErr | OutErr1, OutElem1, OutDone> => {
902
- const reader: Channel.Channel<Env | Env1, OutErr, OutElem, OutDone, OutErr | OutErr1, OutElem1, OutDone> = core
866
+ <OutElem, OutElem1, OutErr1, Env1>(
867
+ f: (o: OutElem) => Effect.Effect<OutElem1, OutErr1, Env1>
868
+ ) => <InElem, OutErr, InErr, OutDone, InDone, Env>(
869
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
870
+ ) => Channel.Channel<OutElem1, InElem, OutErr1 | OutErr, InErr, OutDone, InDone, Env1 | Env>,
871
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, OutErr1, Env1>(
872
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
873
+ f: (o: OutElem) => Effect.Effect<OutElem1, OutErr1, Env1>
874
+ ) => Channel.Channel<OutElem1, InElem, OutErr1 | OutErr, InErr, OutDone, InDone, Env1 | Env>
875
+ >(2, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, OutErr1, Env1>(
876
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
877
+ f: (o: OutElem) => Effect.Effect<OutElem1, OutErr1, Env1>
878
+ ): Channel.Channel<OutElem1, InElem, OutErr | OutErr1, InErr, OutDone, InDone, Env | Env1> => {
879
+ const reader: Channel.Channel<OutElem1, OutElem, OutErr | OutErr1, OutErr, OutDone, OutDone, Env | Env1> = core
903
880
  .readWithCause({
904
881
  onInput: (outElem) =>
905
882
  pipe(
@@ -915,31 +892,31 @@ export const mapOutEffect = dual<
915
892
 
916
893
  /** @internal */
917
894
  export const mapOutEffectPar = dual<
918
- <OutElem, Env1, OutErr1, OutElem1>(
919
- f: (o: OutElem) => Effect.Effect<Env1, OutErr1, OutElem1>,
895
+ <OutElem, OutElem1, OutErr1, Env1>(
896
+ f: (o: OutElem) => Effect.Effect<OutElem1, OutErr1, Env1>,
920
897
  n: number
921
- ) => <Env, InErr, InElem, InDone, OutErr, OutDone>(
922
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
923
- ) => Channel.Channel<Env1 | Env, InErr, InElem, InDone, OutErr1 | OutErr, OutElem1, OutDone>,
924
- <Env, InErr, InElem, InDone, OutErr, OutDone, OutElem, Env1, OutErr1, OutElem1>(
925
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
926
- f: (o: OutElem) => Effect.Effect<Env1, OutErr1, OutElem1>,
898
+ ) => <InElem, OutErr, InErr, OutDone, InDone, Env>(
899
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
900
+ ) => Channel.Channel<OutElem1, InElem, OutErr1 | OutErr, InErr, OutDone, InDone, Env1 | Env>,
901
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, OutErr1, Env1>(
902
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
903
+ f: (o: OutElem) => Effect.Effect<OutElem1, OutErr1, Env1>,
927
904
  n: number
928
- ) => Channel.Channel<Env1 | Env, InErr, InElem, InDone, OutErr1 | OutErr, OutElem1, OutDone>
929
- >(3, <Env, InErr, InElem, InDone, OutErr, OutDone, OutElem, Env1, OutErr1, OutElem1>(
930
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
931
- f: (o: OutElem) => Effect.Effect<Env1, OutErr1, OutElem1>,
905
+ ) => Channel.Channel<OutElem1, InElem, OutErr1 | OutErr, InErr, OutDone, InDone, Env1 | Env>
906
+ >(3, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, OutErr1, Env1>(
907
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
908
+ f: (o: OutElem) => Effect.Effect<OutElem1, OutErr1, Env1>,
932
909
  n: number
933
- ): Channel.Channel<Env | Env1, InErr, InElem, InDone, OutErr | OutErr1, OutElem1, OutDone> =>
910
+ ): Channel.Channel<OutElem1, InElem, OutErr | OutErr1, InErr, OutDone, InDone, Env | Env1> =>
934
911
  pipe(
935
912
  Effect.gen(function*($) {
936
913
  const queue = yield* $(
937
914
  Effect.acquireRelease(
938
- Queue.bounded<Effect.Effect<Env1, OutErr | OutErr1, Either.Either<OutDone, OutElem1>>>(n),
915
+ Queue.bounded<Effect.Effect<Either.Either<OutDone, OutElem1>, OutErr | OutErr1, Env1>>(n),
939
916
  (queue) => Queue.shutdown(queue)
940
917
  )
941
918
  )
942
- const errorSignal = yield* $(Deferred.make<OutErr1, never>())
919
+ const errorSignal = yield* $(Deferred.make<never, OutErr1>())
943
920
  const withPermits = n === Number.POSITIVE_INFINITY ?
944
921
  ((_: number) => identity) :
945
922
  (yield* $(Effect.makeSemaphore(n))).withPermits
@@ -963,14 +940,14 @@ export const mapOutEffectPar = dual<
963
940
  },
964
941
  onRight: (outElem) =>
965
942
  Effect.gen(function*($) {
966
- const deferred = yield* $(Deferred.make<OutErr1, OutElem1>())
967
- const latch = yield* $(Deferred.make<never, void>())
943
+ const deferred = yield* $(Deferred.make<OutElem1, OutErr1>())
944
+ const latch = yield* $(Deferred.make<void>())
968
945
  yield* $(Effect.asUnit(Queue.offer(
969
946
  queue,
970
947
  Effect.map(Deferred.await(deferred), Either.right)
971
948
  )))
972
949
  yield* $(
973
- Deferred.succeed<never, void>(latch, void 0),
950
+ Deferred.succeed(latch, void 0),
974
951
  Effect.zipRight(
975
952
  pipe(
976
953
  Effect.uninterruptibleMask((restore) =>
@@ -1000,15 +977,7 @@ export const mapOutEffectPar = dual<
1000
977
  return queue
1001
978
  }),
1002
979
  Effect.map((queue) => {
1003
- const consumer: Channel.Channel<
1004
- Env1,
1005
- unknown,
1006
- unknown,
1007
- unknown,
1008
- OutErr | OutErr1,
1009
- OutElem1,
1010
- OutDone
1011
- > = unwrap(
980
+ const consumer: Channel.Channel<OutElem1, unknown, OutErr | OutErr1, unknown, OutDone, unknown, Env1> = unwrap(
1012
981
  Effect.matchCause(Effect.flatten(Queue.take(queue)), {
1013
982
  onFailure: core.failCause,
1014
983
  onSuccess: Either.match({
@@ -1031,104 +1000,104 @@ export const mergeAll = (
1031
1000
  }
1032
1001
  ) => {
1033
1002
  return <
1034
- Env,
1035
- Env1,
1036
- InErr,
1037
- InErr1,
1038
- InElem,
1003
+ OutElem,
1039
1004
  InElem1,
1040
- InDone,
1005
+ OutErr1,
1006
+ InErr1,
1041
1007
  InDone1,
1008
+ Env1,
1009
+ InElem,
1042
1010
  OutErr,
1043
- OutErr1,
1044
- OutElem
1011
+ InErr,
1012
+ InDone,
1013
+ Env
1045
1014
  >(
1046
1015
  channels: Channel.Channel<
1047
- Env,
1048
- InErr,
1016
+ Channel.Channel<OutElem, InElem1, OutErr1, InErr1, unknown, InDone1, Env1>,
1049
1017
  InElem,
1050
- InDone,
1051
1018
  OutErr,
1052
- Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem, unknown>,
1053
- unknown
1019
+ InErr,
1020
+ unknown,
1021
+ InDone,
1022
+ Env
1054
1023
  >
1055
1024
  ): Channel.Channel<
1056
- Env | Env1,
1057
- InErr & InErr1,
1025
+ OutElem,
1058
1026
  InElem & InElem1,
1059
- InDone & InDone1,
1060
1027
  OutErr | OutErr1,
1061
- OutElem,
1062
- unknown
1028
+ InErr & InErr1,
1029
+ unknown,
1030
+ InDone & InDone1,
1031
+ Env | Env1
1063
1032
  > => mergeAllWith(options)(channels, constVoid)
1064
1033
  }
1065
1034
 
1066
1035
  /** @internal */
1067
1036
  export const mergeAllUnbounded = <
1068
- Env,
1069
- Env1,
1070
- InErr,
1071
- InErr1,
1072
- InElem,
1037
+ OutElem,
1073
1038
  InElem1,
1074
- InDone,
1039
+ OutErr1,
1040
+ InErr1,
1075
1041
  InDone1,
1042
+ Env1,
1043
+ InElem,
1076
1044
  OutErr,
1077
- OutErr1,
1078
- OutElem
1045
+ InErr,
1046
+ InDone,
1047
+ Env
1079
1048
  >(
1080
1049
  channels: Channel.Channel<
1081
- Env,
1082
- InErr,
1050
+ Channel.Channel<OutElem, InElem1, OutErr1, InErr1, unknown, InDone1, Env1>,
1083
1051
  InElem,
1084
- InDone,
1085
1052
  OutErr,
1086
- Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem, unknown>,
1087
- unknown
1053
+ InErr,
1054
+ unknown,
1055
+ InDone,
1056
+ Env
1088
1057
  >
1089
1058
  ): Channel.Channel<
1090
- Env | Env1,
1091
- InErr & InErr1,
1059
+ OutElem,
1092
1060
  InElem & InElem1,
1093
- InDone & InDone1,
1094
1061
  OutErr | OutErr1,
1095
- OutElem,
1096
- unknown
1062
+ InErr & InErr1,
1063
+ unknown,
1064
+ InDone & InDone1,
1065
+ Env | Env1
1097
1066
  > => mergeAllWith({ concurrency: "unbounded" })(channels, constVoid)
1098
1067
 
1099
1068
  /** @internal */
1100
1069
  export const mergeAllUnboundedWith = <
1101
- Env,
1102
- Env1,
1103
- InErr,
1104
- InErr1,
1105
- InElem,
1070
+ OutElem,
1106
1071
  InElem1,
1107
- InDone,
1072
+ OutErr1,
1073
+ InErr1,
1074
+ OutDone,
1108
1075
  InDone1,
1076
+ Env1,
1077
+ InElem,
1109
1078
  OutErr,
1110
- OutErr1,
1111
- OutElem,
1112
- OutDone
1079
+ InErr,
1080
+ InDone,
1081
+ Env
1113
1082
  >(
1114
1083
  channels: Channel.Channel<
1115
- Env,
1116
- InErr,
1084
+ Channel.Channel<OutElem, InElem1, OutErr1, InErr1, OutDone, InDone1, Env1>,
1117
1085
  InElem,
1118
- InDone,
1119
1086
  OutErr,
1120
- Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem, OutDone>,
1121
- OutDone
1087
+ InErr,
1088
+ OutDone,
1089
+ InDone,
1090
+ Env
1122
1091
  >,
1123
1092
  f: (o1: OutDone, o2: OutDone) => OutDone
1124
1093
  ): Channel.Channel<
1125
- Env | Env1,
1126
- InErr & InErr1,
1094
+ OutElem,
1127
1095
  InElem & InElem1,
1128
- InDone & InDone1,
1129
1096
  OutErr | OutErr1,
1130
- OutElem,
1131
- OutDone
1097
+ InErr & InErr1,
1098
+ OutDone,
1099
+ InDone & InDone1,
1100
+ Env | Env1
1132
1101
  > => mergeAllWith({ concurrency: "unbounded" })(channels, f)
1133
1102
 
1134
1103
  /** @internal */
@@ -1143,38 +1112,25 @@ export const mergeAllWith = (
1143
1112
  readonly mergeStrategy?: MergeStrategy.MergeStrategy | undefined
1144
1113
  }
1145
1114
  ) =>
1146
- <
1147
- Env,
1148
- Env1,
1149
- InErr,
1150
- InErr1,
1151
- InElem,
1152
- InElem1,
1153
- InDone,
1154
- InDone1,
1155
- OutErr,
1156
- OutErr1,
1157
- OutElem,
1158
- OutDone
1159
- >(
1115
+ <OutElem, InElem1, OutErr1, InErr1, OutDone, InDone1, Env1, InElem, OutErr, InErr, InDone, Env>(
1160
1116
  channels: Channel.Channel<
1161
- Env,
1162
- InErr,
1117
+ Channel.Channel<OutElem, InElem1, OutErr1, InErr1, OutDone, InDone1, Env1>,
1163
1118
  InElem,
1164
- InDone,
1165
1119
  OutErr,
1166
- Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem, OutDone>,
1167
- OutDone
1120
+ InErr,
1121
+ OutDone,
1122
+ InDone,
1123
+ Env
1168
1124
  >,
1169
1125
  f: (o1: OutDone, o2: OutDone) => OutDone
1170
1126
  ): Channel.Channel<
1171
- Env | Env1,
1172
- InErr & InErr1,
1127
+ OutElem,
1173
1128
  InElem & InElem1,
1174
- InDone & InDone1,
1175
1129
  OutErr | OutErr1,
1176
- OutElem,
1177
- OutDone
1130
+ InErr & InErr1,
1131
+ OutDone,
1132
+ InDone & InDone1,
1133
+ Env | Env1
1178
1134
  > =>
1179
1135
  pipe(
1180
1136
  Effect.gen(function*($) {
@@ -1187,23 +1143,23 @@ export const mergeAllWith = (
1187
1143
  const queueReader = fromInput(input)
1188
1144
  const queue = yield* $(
1189
1145
  Effect.acquireRelease(
1190
- Queue.bounded<Effect.Effect<Env, OutErr | OutErr1, Either.Either<OutDone, OutElem>>>(bufferSize),
1146
+ Queue.bounded<Effect.Effect<Either.Either<OutDone, OutElem>, OutErr | OutErr1, Env>>(bufferSize),
1191
1147
  (queue) => Queue.shutdown(queue)
1192
1148
  )
1193
1149
  )
1194
1150
  const cancelers = yield* $(
1195
1151
  Effect.acquireRelease(
1196
- Queue.unbounded<Deferred.Deferred<never, void>>(),
1152
+ Queue.unbounded<Deferred.Deferred<void>>(),
1197
1153
  (queue) => Queue.shutdown(queue)
1198
1154
  )
1199
1155
  )
1200
1156
  const lastDone = yield* $(Ref.make<Option.Option<OutDone>>(Option.none()))
1201
- const errorSignal = yield* $(Deferred.make<never, void>())
1157
+ const errorSignal = yield* $(Deferred.make<void>())
1202
1158
  const withPermits = (yield* $(Effect.makeSemaphore(concurrencyN)))
1203
1159
  .withPermits
1204
1160
  const pull = yield* $(toPull(channels))
1205
1161
  const evaluatePull = (
1206
- pull: Effect.Effect<Env | Env1, OutErr | OutErr1, Either.Either<OutDone, OutElem>>
1162
+ pull: Effect.Effect<Either.Either<OutDone, OutElem>, OutErr | OutErr1, Env | Env1>
1207
1163
  ) =>
1208
1164
  pipe(
1209
1165
  Effect.flatMap(
@@ -1269,8 +1225,8 @@ export const mergeAllWith = (
1269
1225
  _mergeStrategy.match(mergeStrategy, {
1270
1226
  onBackPressure: () =>
1271
1227
  Effect.gen(function*($) {
1272
- const latch = yield* $(Deferred.make<never, void>())
1273
- const raceEffects: Effect.Effect<Env | Env1, OutErr | OutErr1, void> = pipe(
1228
+ const latch = yield* $(Deferred.make<void>())
1229
+ const raceEffects: Effect.Effect<void, OutErr | OutErr1, Env | Env1> = pipe(
1274
1230
  queueReader,
1275
1231
  core.pipeTo(channel),
1276
1232
  toPull,
@@ -1283,7 +1239,7 @@ export const mergeAllWith = (
1283
1239
  Effect.scoped
1284
1240
  )
1285
1241
  yield* $(
1286
- Deferred.succeed<never, void>(latch, void 0),
1242
+ Deferred.succeed(latch, void 0),
1287
1243
  Effect.zipRight(raceEffects),
1288
1244
  withPermits(1),
1289
1245
  Effect.forkScoped
@@ -1294,16 +1250,16 @@ export const mergeAllWith = (
1294
1250
  }),
1295
1251
  onBufferSliding: () =>
1296
1252
  Effect.gen(function*($) {
1297
- const canceler = yield* $(Deferred.make<never, void>())
1298
- const latch = yield* $(Deferred.make<never, void>())
1253
+ const canceler = yield* $(Deferred.make<void>())
1254
+ const latch = yield* $(Deferred.make<void>())
1299
1255
  const size = yield* $(Queue.size(cancelers))
1300
1256
  yield* $(
1301
1257
  Queue.take(cancelers),
1302
- Effect.flatMap((_) => Deferred.succeed<never, void>(_, void 0)),
1258
+ Effect.flatMap((_) => Deferred.succeed(_, void 0)),
1303
1259
  Effect.when(() => size >= concurrencyN)
1304
1260
  )
1305
1261
  yield* $(Queue.offer(cancelers, canceler))
1306
- const raceEffects: Effect.Effect<Env | Env1, OutErr | OutErr1, void> = pipe(
1262
+ const raceEffects: Effect.Effect<void, OutErr | OutErr1, Env | Env1> = pipe(
1307
1263
  queueReader,
1308
1264
  core.pipeTo(channel),
1309
1265
  toPull,
@@ -1317,7 +1273,7 @@ export const mergeAllWith = (
1317
1273
  Effect.scoped
1318
1274
  )
1319
1275
  yield* $(
1320
- Deferred.succeed<never, void>(latch, void 0),
1276
+ Deferred.succeed(latch, void 0),
1321
1277
  Effect.zipRight(raceEffects),
1322
1278
  withPermits(1),
1323
1279
  Effect.forkScoped
@@ -1335,15 +1291,7 @@ export const mergeAllWith = (
1335
1291
  return [queue, input] as const
1336
1292
  }),
1337
1293
  Effect.map(([queue, input]) => {
1338
- const consumer: Channel.Channel<
1339
- Env | Env1,
1340
- unknown,
1341
- unknown,
1342
- unknown,
1343
- OutErr | OutErr1,
1344
- OutElem,
1345
- OutDone
1346
- > = pipe(
1294
+ const consumer: Channel.Channel<OutElem, unknown, OutErr | OutErr1, unknown, OutDone, unknown, Env | Env1> = pipe(
1347
1295
  Queue.take(queue),
1348
1296
  Effect.flatten,
1349
1297
  Effect.matchCause({
@@ -1362,121 +1310,121 @@ export const mergeAllWith = (
1362
1310
 
1363
1311
  /** @internal */
1364
1312
  export const mergeMap = dual<
1365
- <OutElem, Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, Z>(
1366
- f: (outElem: OutElem) => Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, Z>,
1313
+ <OutElem, OutElem1, InElem1, OutErr1, InErr1, Z, InDone1, Env1>(
1314
+ f: (outElem: OutElem) => Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, Z, InDone1, Env1>,
1367
1315
  options: {
1368
1316
  readonly concurrency: number | "unbounded"
1369
1317
  readonly bufferSize?: number | undefined
1370
1318
  readonly mergeStrategy?: MergeStrategy.MergeStrategy | undefined
1371
1319
  }
1372
- ) => <Env, InErr, InElem, InDone, OutErr, OutDone>(
1373
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1320
+ ) => <InElem, OutErr, InErr, OutDone, InDone, Env>(
1321
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1374
1322
  ) => Channel.Channel<
1375
- Env1 | Env,
1376
- InErr & InErr1,
1323
+ OutElem1,
1377
1324
  InElem & InElem1,
1378
- InDone & InDone1,
1379
1325
  OutErr1 | OutErr,
1380
- OutElem1,
1381
- unknown
1326
+ InErr & InErr1,
1327
+ unknown,
1328
+ InDone & InDone1,
1329
+ Env1 | Env
1382
1330
  >,
1383
- <Env, InErr, InElem, InDone, OutErr, OutDone, OutElem, Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, Z>(
1384
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1385
- f: (outElem: OutElem) => Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, Z>,
1331
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, InElem1, OutErr1, InErr1, Z, InDone1, Env1>(
1332
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1333
+ f: (outElem: OutElem) => Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, Z, InDone1, Env1>,
1386
1334
  options: {
1387
1335
  readonly concurrency: number | "unbounded"
1388
1336
  readonly bufferSize?: number | undefined
1389
1337
  readonly mergeStrategy?: MergeStrategy.MergeStrategy | undefined
1390
1338
  }
1391
1339
  ) => Channel.Channel<
1392
- Env1 | Env,
1393
- InErr & InErr1,
1340
+ OutElem1,
1394
1341
  InElem & InElem1,
1395
- InDone & InDone1,
1396
1342
  OutErr1 | OutErr,
1397
- OutElem1,
1398
- unknown
1343
+ InErr & InErr1,
1344
+ unknown,
1345
+ InDone & InDone1,
1346
+ Env1 | Env
1399
1347
  >
1400
- >(3, <Env, InErr, InElem, InDone, OutErr, OutDone, OutElem, Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, Z>(
1401
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1402
- f: (outElem: OutElem) => Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, Z>,
1348
+ >(3, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, InElem1, OutErr1, InErr1, Z, InDone1, Env1>(
1349
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1350
+ f: (outElem: OutElem) => Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, Z, InDone1, Env1>,
1403
1351
  options: {
1404
1352
  readonly concurrency: number | "unbounded"
1405
1353
  readonly bufferSize?: number | undefined
1406
1354
  readonly mergeStrategy?: MergeStrategy.MergeStrategy | undefined
1407
1355
  }
1408
1356
  ): Channel.Channel<
1409
- Env | Env1,
1410
- InErr & InErr1,
1357
+ OutElem1,
1411
1358
  InElem & InElem1,
1412
- InDone & InDone1,
1413
1359
  OutErr | OutErr1,
1414
- OutElem1,
1415
- unknown
1360
+ InErr & InErr1,
1361
+ unknown,
1362
+ InDone & InDone1,
1363
+ Env | Env1
1416
1364
  > => mergeAll(options)(mapOut(self, f)))
1417
1365
 
1418
1366
  /** @internal */
1419
1367
  export const mergeOut = dual<
1420
1368
  (
1421
1369
  n: number
1422
- ) => <Env, Env1, InErr, InErr1, InElem, InElem1, InDone, InDone1, OutErr, OutErr1, OutElem1, OutDone, Z>(
1370
+ ) => <OutElem1, InElem1, OutErr1, InErr1, Z, InDone1, Env1, InElem, OutErr, InErr, OutDone, InDone, Env>(
1423
1371
  self: Channel.Channel<
1424
- Env,
1425
- InErr,
1372
+ Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, Z, InDone1, Env1>,
1426
1373
  InElem,
1427
- InDone,
1428
1374
  OutErr,
1429
- Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, Z>,
1430
- OutDone
1375
+ InErr,
1376
+ OutDone,
1377
+ InDone,
1378
+ Env
1431
1379
  >
1432
1380
  ) => Channel.Channel<
1433
- Env | Env1,
1434
- InErr & InErr1,
1381
+ OutElem1,
1435
1382
  InElem & InElem1,
1436
- InDone & InDone1,
1437
1383
  OutErr | OutErr1,
1438
- OutElem1,
1439
- unknown
1384
+ InErr & InErr1,
1385
+ unknown,
1386
+ InDone & InDone1,
1387
+ Env | Env1
1440
1388
  >,
1441
- <Env, Env1, InErr, InErr1, InElem, InElem1, InDone, InDone1, OutErr, OutErr1, OutElem1, OutDone, Z>(
1389
+ <OutElem1, InElem1, OutErr1, InErr1, Z, InDone1, Env1, InElem, OutErr, InErr, OutDone, InDone, Env>(
1442
1390
  self: Channel.Channel<
1443
- Env,
1444
- InErr,
1391
+ Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, Z, InDone1, Env1>,
1445
1392
  InElem,
1446
- InDone,
1447
1393
  OutErr,
1448
- Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, Z>,
1449
- OutDone
1394
+ InErr,
1395
+ OutDone,
1396
+ InDone,
1397
+ Env
1450
1398
  >,
1451
1399
  n: number
1452
1400
  ) => Channel.Channel<
1453
- Env | Env1,
1454
- InErr & InErr1,
1401
+ OutElem1,
1455
1402
  InElem & InElem1,
1456
- InDone & InDone1,
1457
1403
  OutErr | OutErr1,
1458
- OutElem1,
1459
- unknown
1404
+ InErr & InErr1,
1405
+ unknown,
1406
+ InDone & InDone1,
1407
+ Env | Env1
1460
1408
  >
1461
- >(2, <Env, Env1, InErr, InErr1, InElem, InElem1, InDone, InDone1, OutErr, OutErr1, OutElem1, OutDone, Z>(
1409
+ >(2, <OutElem1, InElem1, OutErr1, InErr1, Z, InDone1, Env1, InElem, OutErr, InErr, OutDone, InDone, Env>(
1462
1410
  self: Channel.Channel<
1463
- Env,
1464
- InErr,
1411
+ Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, Z, InDone1, Env1>,
1465
1412
  InElem,
1466
- InDone,
1467
1413
  OutErr,
1468
- Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, Z>,
1469
- OutDone
1414
+ InErr,
1415
+ OutDone,
1416
+ InDone,
1417
+ Env
1470
1418
  >,
1471
1419
  n: number
1472
1420
  ): Channel.Channel<
1473
- Env | Env1,
1474
- InErr & InErr1,
1421
+ OutElem1,
1475
1422
  InElem & InElem1,
1476
- InDone & InDone1,
1477
1423
  OutErr | OutErr1,
1478
- OutElem1,
1479
- unknown
1424
+ InErr & InErr1,
1425
+ unknown,
1426
+ InDone & InDone1,
1427
+ Env | Env1
1480
1428
  > => mergeAll({ concurrency: n })(mapOut(self, identity)))
1481
1429
 
1482
1430
  /** @internal */
@@ -1484,168 +1432,168 @@ export const mergeOutWith = dual<
1484
1432
  <OutDone1>(
1485
1433
  n: number,
1486
1434
  f: (o1: OutDone1, o2: OutDone1) => OutDone1
1487
- ) => <Env, Env1, InErr, InErr1, InElem, InElem1, InDone, InDone1, OutErr, OutErr1, OutElem1>(
1435
+ ) => <OutElem1, InElem1, OutErr1, InErr1, InDone1, Env1, InElem, OutErr, InErr, InDone, Env>(
1488
1436
  self: Channel.Channel<
1489
- Env,
1490
- InErr,
1437
+ Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>,
1491
1438
  InElem,
1492
- InDone,
1493
1439
  OutErr,
1494
- Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>,
1495
- OutDone1
1440
+ InErr,
1441
+ OutDone1,
1442
+ InDone,
1443
+ Env
1496
1444
  >
1497
1445
  ) => Channel.Channel<
1498
- Env | Env1,
1499
- InErr & InErr1,
1446
+ OutElem1,
1500
1447
  InElem & InElem1,
1501
- InDone & InDone1,
1502
1448
  OutErr | OutErr1,
1503
- OutElem1,
1504
- OutDone1
1449
+ InErr & InErr1,
1450
+ OutDone1,
1451
+ InDone & InDone1,
1452
+ Env | Env1
1505
1453
  >,
1506
- <Env, Env1, InErr, InErr1, InElem, InElem1, InDone, InDone1, OutErr, OutErr1, OutElem1, OutDone1>(
1454
+ <OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1, InElem, OutErr, InErr, InDone, Env>(
1507
1455
  self: Channel.Channel<
1508
- Env,
1509
- InErr,
1456
+ Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>,
1510
1457
  InElem,
1511
- InDone,
1512
1458
  OutErr,
1513
- Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>,
1514
- OutDone1
1459
+ InErr,
1460
+ OutDone1,
1461
+ InDone,
1462
+ Env
1515
1463
  >,
1516
1464
  n: number,
1517
1465
  f: (o1: OutDone1, o2: OutDone1) => OutDone1
1518
1466
  ) => Channel.Channel<
1519
- Env | Env1,
1520
- InErr & InErr1,
1467
+ OutElem1,
1521
1468
  InElem & InElem1,
1522
- InDone & InDone1,
1523
1469
  OutErr | OutErr1,
1524
- OutElem1,
1525
- OutDone1
1470
+ InErr & InErr1,
1471
+ OutDone1,
1472
+ InDone & InDone1,
1473
+ Env | Env1
1526
1474
  >
1527
- >(3, <Env, Env1, InErr, InErr1, InElem, InElem1, InDone, InDone1, OutErr, OutErr1, OutElem1, OutDone1>(
1475
+ >(3, <OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1, InElem, OutErr, InErr, InDone, Env>(
1528
1476
  self: Channel.Channel<
1529
- Env,
1530
- InErr,
1477
+ Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>,
1531
1478
  InElem,
1532
- InDone,
1533
1479
  OutErr,
1534
- Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>,
1535
- OutDone1
1480
+ InErr,
1481
+ OutDone1,
1482
+ InDone,
1483
+ Env
1536
1484
  >,
1537
1485
  n: number,
1538
1486
  f: (o1: OutDone1, o2: OutDone1) => OutDone1
1539
1487
  ): Channel.Channel<
1540
- Env | Env1,
1541
- InErr & InErr1,
1488
+ OutElem1,
1542
1489
  InElem & InElem1,
1543
- InDone & InDone1,
1544
1490
  OutErr | OutErr1,
1545
- OutElem1,
1546
- OutDone1
1491
+ InErr & InErr1,
1492
+ OutDone1,
1493
+ InDone & InDone1,
1494
+ Env | Env1
1547
1495
  > => mergeAllWith({ concurrency: n })(mapOut(self, identity), f))
1548
1496
 
1549
1497
  /** @internal */
1550
1498
  export const mergeWith = dual<
1551
- <Env1, InErr1, InElem1, InDone1, OutErr, OutErr1, OutErr2, OutErr3, OutElem1, OutDone, OutDone1, OutDone2, OutDone3>(
1499
+ <OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1, OutDone, OutErr, OutErr2, OutDone2, OutErr3, OutDone3>(
1552
1500
  options: {
1553
- readonly other: Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>
1501
+ readonly other: Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>
1554
1502
  readonly onSelfDone: (
1555
- exit: Exit.Exit<OutErr, OutDone>
1503
+ exit: Exit.Exit<OutDone, OutErr>
1556
1504
  ) => MergeDecision.MergeDecision<Env1, OutErr1, OutDone1, OutErr2, OutDone2>
1557
1505
  readonly onOtherDone: (
1558
- ex: Exit.Exit<OutErr1, OutDone1>
1506
+ ex: Exit.Exit<OutDone1, OutErr1>
1559
1507
  ) => MergeDecision.MergeDecision<Env1, OutErr, OutDone, OutErr3, OutDone3>
1560
1508
  }
1561
1509
  ) => <Env, InErr, InElem, InDone, OutElem>(
1562
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1510
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1563
1511
  ) => Channel.Channel<
1564
- Env1 | Env,
1565
- InErr & InErr1,
1512
+ OutElem1 | OutElem,
1566
1513
  InElem & InElem1,
1567
- InDone & InDone1,
1568
1514
  OutErr2 | OutErr3,
1569
- OutElem1 | OutElem,
1570
- OutDone2 | OutDone3
1515
+ InErr & InErr1,
1516
+ OutDone2 | OutDone3,
1517
+ InDone & InDone1,
1518
+ Env1 | Env
1571
1519
  >,
1572
1520
  <
1573
- Env,
1574
- InErr,
1521
+ OutElem,
1575
1522
  InElem,
1523
+ OutErr,
1524
+ InErr,
1525
+ OutDone,
1576
1526
  InDone,
1577
- OutElem,
1578
- Env1,
1579
- InErr1,
1527
+ Env,
1528
+ OutElem1,
1580
1529
  InElem1,
1581
- InDone1,
1582
- OutErr,
1583
1530
  OutErr1,
1584
- OutErr2,
1585
- OutErr3,
1586
- OutElem1,
1587
- OutDone,
1531
+ InErr1,
1588
1532
  OutDone1,
1533
+ InDone1,
1534
+ Env1,
1535
+ OutErr2,
1589
1536
  OutDone2,
1537
+ OutErr3,
1590
1538
  OutDone3
1591
1539
  >(
1592
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1540
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1593
1541
  options: {
1594
- readonly other: Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>
1542
+ readonly other: Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>
1595
1543
  readonly onSelfDone: (
1596
- exit: Exit.Exit<OutErr, OutDone>
1544
+ exit: Exit.Exit<OutDone, OutErr>
1597
1545
  ) => MergeDecision.MergeDecision<Env1, OutErr1, OutDone1, OutErr2, OutDone2>
1598
1546
  readonly onOtherDone: (
1599
- ex: Exit.Exit<OutErr1, OutDone1>
1547
+ ex: Exit.Exit<OutDone1, OutErr1>
1600
1548
  ) => MergeDecision.MergeDecision<Env1, OutErr, OutDone, OutErr3, OutDone3>
1601
1549
  }
1602
1550
  ) => Channel.Channel<
1603
- Env1 | Env,
1604
- InErr & InErr1,
1551
+ OutElem1 | OutElem,
1605
1552
  InElem & InElem1,
1606
- InDone & InDone1,
1607
1553
  OutErr2 | OutErr3,
1608
- OutElem1 | OutElem,
1609
- OutDone2 | OutDone3
1554
+ InErr & InErr1,
1555
+ OutDone2 | OutDone3,
1556
+ InDone & InDone1,
1557
+ Env1 | Env
1610
1558
  >
1611
1559
  >(2, <
1612
- Env,
1613
- InErr,
1560
+ OutElem,
1614
1561
  InElem,
1562
+ OutErr,
1563
+ InErr,
1564
+ OutDone,
1615
1565
  InDone,
1616
- OutElem,
1617
- Env1,
1618
- InErr1,
1566
+ Env,
1567
+ OutElem1,
1619
1568
  InElem1,
1620
- InDone1,
1621
- OutErr,
1622
1569
  OutErr1,
1623
- OutErr2,
1624
- OutErr3,
1625
- OutElem1,
1626
- OutDone,
1570
+ InErr1,
1627
1571
  OutDone1,
1572
+ InDone1,
1573
+ Env1,
1574
+ OutErr2,
1628
1575
  OutDone2,
1576
+ OutErr3,
1629
1577
  OutDone3
1630
1578
  >(
1631
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1579
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1632
1580
  options: {
1633
- readonly other: Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>
1581
+ readonly other: Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>
1634
1582
  readonly onSelfDone: (
1635
- exit: Exit.Exit<OutErr, OutDone>
1583
+ exit: Exit.Exit<OutDone, OutErr>
1636
1584
  ) => MergeDecision.MergeDecision<Env1, OutErr1, OutDone1, OutErr2, OutDone2>
1637
1585
  readonly onOtherDone: (
1638
- ex: Exit.Exit<OutErr1, OutDone1>
1586
+ ex: Exit.Exit<OutDone1, OutErr1>
1639
1587
  ) => MergeDecision.MergeDecision<Env1, OutErr, OutDone, OutErr3, OutDone3>
1640
1588
  }
1641
1589
  ): Channel.Channel<
1642
- Env1 | Env,
1643
- InErr & InErr1,
1590
+ OutElem | OutElem1,
1644
1591
  InElem & InElem1,
1645
- InDone & InDone1,
1646
1592
  OutErr2 | OutErr3,
1647
- OutElem | OutElem1,
1648
- OutDone2 | OutDone3
1593
+ InErr & InErr1,
1594
+ OutDone2 | OutDone3,
1595
+ InDone & InDone1,
1596
+ Env1 | Env
1649
1597
  > =>
1650
1598
  unwrapScoped(
1651
1599
  Effect.flatMap(
@@ -1674,13 +1622,13 @@ export const mergeWith = dual<
1674
1622
  >
1675
1623
 
1676
1624
  const handleSide = <Err, Done, Err2, Done2>(
1677
- exit: Exit.Exit<Err, Either.Either<Done, OutElem | OutElem1>>,
1678
- fiber: Fiber.Fiber<Err2, Either.Either<Done2, OutElem | OutElem1>>,
1679
- pull: Effect.Effect<Env | Env1, Err, Either.Either<Done, OutElem | OutElem1>>
1625
+ exit: Exit.Exit<Either.Either<Done, OutElem | OutElem1>, Err>,
1626
+ fiber: Fiber.Fiber<Either.Either<Done2, OutElem | OutElem1>, Err2>,
1627
+ pull: Effect.Effect<Either.Either<Done, OutElem | OutElem1>, Err, Env | Env1>
1680
1628
  ) =>
1681
1629
  (
1682
1630
  done: (
1683
- ex: Exit.Exit<Err, Done>
1631
+ ex: Exit.Exit<Done, Err>
1684
1632
  ) => MergeDecision.MergeDecision<
1685
1633
  Env | Env1,
1686
1634
  Err2,
@@ -1689,26 +1637,26 @@ export const mergeWith = dual<
1689
1637
  OutDone2 | OutDone3
1690
1638
  >,
1691
1639
  both: (
1692
- f1: Fiber.Fiber<Err, Either.Either<Done, OutElem | OutElem1>>,
1693
- f2: Fiber.Fiber<Err2, Either.Either<Done2, OutElem | OutElem1>>
1640
+ f1: Fiber.Fiber<Either.Either<Done, OutElem | OutElem1>, Err>,
1641
+ f2: Fiber.Fiber<Either.Either<Done2, OutElem | OutElem1>, Err2>
1694
1642
  ) => State,
1695
1643
  single: (
1696
1644
  f: (
1697
- ex: Exit.Exit<Err2, Done2>
1698
- ) => Effect.Effect<Env | Env1, OutErr2 | OutErr3, OutDone2 | OutDone3>
1645
+ ex: Exit.Exit<Done2, Err2>
1646
+ ) => Effect.Effect<OutDone2 | OutDone3, OutErr2 | OutErr3, Env | Env1>
1699
1647
  ) => State
1700
1648
  ): Effect.Effect<
1701
- Env | Env1,
1702
- never,
1703
1649
  Channel.Channel<
1704
- Env | Env1,
1650
+ OutElem | OutElem1,
1705
1651
  unknown,
1652
+ OutErr2 | OutErr3,
1706
1653
  unknown,
1654
+ OutDone2 | OutDone3,
1707
1655
  unknown,
1708
- OutErr2 | OutErr3,
1709
- OutElem | OutElem1,
1710
- OutDone2 | OutDone3
1711
- >
1656
+ Env | Env1
1657
+ >,
1658
+ never,
1659
+ Env | Env1
1712
1660
  > => {
1713
1661
  const onDecision = (
1714
1662
  decision: MergeDecision.MergeDecision<
@@ -1719,16 +1667,14 @@ export const mergeWith = dual<
1719
1667
  OutDone2 | OutDone3
1720
1668
  >
1721
1669
  ): Effect.Effect<
1722
- never,
1723
- never,
1724
1670
  Channel.Channel<
1725
- Env | Env1,
1671
+ OutElem | OutElem1,
1726
1672
  unknown,
1673
+ OutErr2 | OutErr3,
1727
1674
  unknown,
1675
+ OutDone2 | OutDone3,
1728
1676
  unknown,
1729
- OutErr2 | OutErr3,
1730
- OutElem | OutElem1,
1731
- OutDone2 | OutDone3
1677
+ Env | Env1
1732
1678
  >
1733
1679
  > => {
1734
1680
  const op = decision as mergeDecision.Primitive
@@ -1773,13 +1719,13 @@ export const mergeWith = dual<
1773
1719
  const go = (
1774
1720
  state: State
1775
1721
  ): Channel.Channel<
1776
- Env | Env1,
1722
+ OutElem | OutElem1,
1777
1723
  unknown,
1724
+ OutErr2 | OutErr3,
1778
1725
  unknown,
1726
+ OutDone2 | OutDone3,
1779
1727
  unknown,
1780
- OutErr2 | OutErr3,
1781
- OutElem | OutElem1,
1782
- OutDone2 | OutDone3
1728
+ Env | Env1
1783
1729
  > => {
1784
1730
  switch (state._tag) {
1785
1731
  case MergeStateOpCodes.OP_BOTH_RUNNING: {
@@ -1801,7 +1747,7 @@ export const mergeWith = dual<
1801
1747
  Fiber.interrupt(lf),
1802
1748
  handleSide(rightExit, state.left, pullR)(
1803
1749
  options.onOtherDone as (
1804
- ex: Exit.Exit<InErr1 | OutErr1, OutDone1>
1750
+ ex: Exit.Exit<OutDone1, InErr1 | OutErr1>
1805
1751
  ) => MergeDecision.MergeDecision<
1806
1752
  Env1 | Env,
1807
1753
  OutErr,
@@ -1883,7 +1829,7 @@ export const mergeWith = dual<
1883
1829
  ))
1884
1830
 
1885
1831
  /** @internal */
1886
- export const never: Channel.Channel<never, unknown, unknown, unknown, never, never, never> = core.fromEffect(
1832
+ export const never: Channel.Channel<never, unknown, never, unknown, never, unknown> = core.fromEffect(
1887
1833
  Effect.never
1888
1834
  )
1889
1835
 
@@ -1891,99 +1837,99 @@ export const never: Channel.Channel<never, unknown, unknown, unknown, never, nev
1891
1837
  export const orDie = dual<
1892
1838
  <E>(
1893
1839
  error: LazyArg<E>
1894
- ) => <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
1895
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1896
- ) => Channel.Channel<Env, InErr, InElem, InDone, never, OutElem, OutDone>,
1897
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, E>(
1898
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1840
+ ) => <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
1841
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1842
+ ) => Channel.Channel<OutElem, InElem, never, InErr, OutDone, InDone, Env>,
1843
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, E>(
1844
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1899
1845
  error: LazyArg<E>
1900
- ) => Channel.Channel<Env, InErr, InElem, InDone, never, OutElem, OutDone>
1901
- >(2, <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, E>(
1902
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1846
+ ) => Channel.Channel<OutElem, InElem, never, InErr, OutDone, InDone, Env>
1847
+ >(2, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, E>(
1848
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1903
1849
  error: LazyArg<E>
1904
- ): Channel.Channel<Env, InErr, InElem, InDone, never, OutElem, OutDone> => orDieWith(self, error))
1850
+ ): Channel.Channel<OutElem, InElem, never, InErr, OutDone, InDone, Env> => orDieWith(self, error))
1905
1851
 
1906
1852
  /** @internal */
1907
1853
  export const orDieWith = dual<
1908
1854
  <OutErr>(
1909
1855
  f: (e: OutErr) => unknown
1910
- ) => <Env, InErr, InElem, InDone, OutElem, OutDone>(
1911
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1912
- ) => Channel.Channel<Env, InErr, InElem, InDone, never, OutElem, OutDone>,
1913
- <Env, InErr, InElem, InDone, OutElem, OutDone, OutErr>(
1914
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1856
+ ) => <OutElem, InElem, InErr, OutDone, InDone, Env>(
1857
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1858
+ ) => Channel.Channel<OutElem, InElem, never, InErr, OutDone, InDone, Env>,
1859
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
1860
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1915
1861
  f: (e: OutErr) => unknown
1916
- ) => Channel.Channel<Env, InErr, InElem, InDone, never, OutElem, OutDone>
1917
- >(2, <Env, InErr, InElem, InDone, OutElem, OutDone, OutErr>(
1918
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1862
+ ) => Channel.Channel<OutElem, InElem, never, InErr, OutDone, InDone, Env>
1863
+ >(2, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
1864
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1919
1865
  f: (e: OutErr) => unknown
1920
- ): Channel.Channel<Env, InErr, InElem, InDone, never, OutElem, OutDone> =>
1866
+ ): Channel.Channel<OutElem, InElem, never, InErr, OutDone, InDone, Env> =>
1921
1867
  catchAll(self, (e) => {
1922
1868
  throw f(e)
1923
- }) as Channel.Channel<Env, InErr, InElem, InDone, never, OutElem, OutDone>)
1869
+ }) as Channel.Channel<OutElem, InElem, never, InErr, OutDone, InDone, Env>)
1924
1870
 
1925
1871
  /** @internal */
1926
1872
  export const orElse = dual<
1927
- <Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>(
1928
- that: LazyArg<Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>>
1929
- ) => <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
1930
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1873
+ <OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
1874
+ that: LazyArg<Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>>
1875
+ ) => <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
1876
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1931
1877
  ) => Channel.Channel<
1932
- Env1 | Env,
1933
- InErr & InErr1,
1878
+ OutElem1 | OutElem,
1934
1879
  InElem & InElem1,
1935
- InDone & InDone1,
1936
1880
  OutErr1,
1937
- OutElem1 | OutElem,
1938
- OutDone1 | OutDone
1881
+ InErr & InErr1,
1882
+ OutDone1 | OutDone,
1883
+ InDone & InDone1,
1884
+ Env1 | Env
1939
1885
  >,
1940
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>(
1941
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1942
- that: LazyArg<Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>>
1886
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
1887
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1888
+ that: LazyArg<Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>>
1943
1889
  ) => Channel.Channel<
1944
- Env1 | Env,
1945
- InErr & InErr1,
1890
+ OutElem1 | OutElem,
1946
1891
  InElem & InElem1,
1947
- InDone & InDone1,
1948
1892
  OutErr1,
1949
- OutElem1 | OutElem,
1950
- OutDone1 | OutDone
1893
+ InErr & InErr1,
1894
+ OutDone1 | OutDone,
1895
+ InDone & InDone1,
1896
+ Env1 | Env
1951
1897
  >
1952
1898
  >(
1953
1899
  2,
1954
1900
  <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>(
1955
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1956
- that: LazyArg<Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>>
1901
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1902
+ that: LazyArg<Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>>
1957
1903
  ): Channel.Channel<
1958
- Env | Env1,
1959
- InErr & InErr1,
1904
+ OutElem | OutElem1,
1960
1905
  InElem & InElem1,
1961
- InDone & InDone1,
1962
1906
  OutErr1,
1963
- OutElem | OutElem1,
1964
- OutDone | OutDone1
1907
+ InErr & InErr1,
1908
+ OutDone | OutDone1,
1909
+ InDone & InDone1,
1910
+ Env | Env1
1965
1911
  > => catchAll(self, that)
1966
1912
  )
1967
1913
 
1968
1914
  /** @internal */
1969
1915
  export const pipeToOrFail = dual<
1970
- <Env2, OutElem, OutDone, OutErr2, OutElem2, OutDone2>(
1971
- that: Channel.Channel<Env2, never, OutElem, OutDone, OutErr2, OutElem2, OutDone2>
1972
- ) => <Env, InErr, InElem, InDone, OutErr>(
1973
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1974
- ) => Channel.Channel<Env2 | Env, InErr, InElem, InDone, OutErr2 | OutErr, OutElem2, OutDone2>,
1975
- <Env, InErr, InElem, InDone, OutErr, Env2, OutElem, OutDone, OutErr2, OutElem2, OutDone2>(
1976
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1977
- that: Channel.Channel<Env2, never, OutElem, OutDone, OutErr2, OutElem2, OutDone2>
1978
- ) => Channel.Channel<Env2 | Env, InErr, InElem, InDone, OutErr2 | OutErr, OutElem2, OutDone2>
1979
- >(2, <Env, InErr, InElem, InDone, OutErr, Env2, OutElem, OutDone, OutErr2, OutElem2, OutDone2>(
1980
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1981
- that: Channel.Channel<Env2, never, OutElem, OutDone, OutErr2, OutElem2, OutDone2>
1982
- ): Channel.Channel<Env | Env2, InErr, InElem, InDone, OutErr | OutErr2, OutElem2, OutDone2> =>
1916
+ <OutElem2, OutElem, OutErr2, OutDone2, OutDone, Env2>(
1917
+ that: Channel.Channel<OutElem2, OutElem, OutErr2, never, OutDone2, OutDone, Env2>
1918
+ ) => <InElem, OutErr, InErr, InDone, Env>(
1919
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1920
+ ) => Channel.Channel<OutElem2, InElem, OutErr2 | OutErr, InErr, OutDone2, InDone, Env2 | Env>,
1921
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem2, OutErr2, OutDone2, Env2>(
1922
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1923
+ that: Channel.Channel<OutElem2, OutElem, OutErr2, never, OutDone2, OutDone, Env2>
1924
+ ) => Channel.Channel<OutElem2, InElem, OutErr2 | OutErr, InErr, OutDone2, InDone, Env2 | Env>
1925
+ >(2, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem2, OutErr2, OutDone2, Env2>(
1926
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1927
+ that: Channel.Channel<OutElem2, OutElem, OutErr2, never, OutDone2, OutDone, Env2>
1928
+ ): Channel.Channel<OutElem2, InElem, OutErr | OutErr2, InErr, OutDone2, InDone, Env | Env2> =>
1983
1929
  core.suspend(() => {
1984
1930
  let channelException: Channel.ChannelException<OutErr | OutErr2> | undefined = undefined
1985
1931
 
1986
- const reader: Channel.Channel<Env, OutErr, OutElem, OutDone, never, OutElem, OutDone> = core
1932
+ const reader: Channel.Channel<OutElem, OutElem, never, OutErr, OutDone, OutDone, Env> = core
1987
1933
  .readWith({
1988
1934
  onInput: (outElem) => core.flatMap(core.write(outElem), () => reader),
1989
1935
  onFailure: (outErr) => {
@@ -1994,13 +1940,13 @@ export const pipeToOrFail = dual<
1994
1940
  })
1995
1941
 
1996
1942
  const writer: Channel.Channel<
1997
- Env2,
1998
- OutErr2,
1999
1943
  OutElem2,
2000
- OutDone2,
2001
- OutErr2,
2002
1944
  OutElem2,
2003
- OutDone2
1945
+ OutErr2,
1946
+ OutErr2,
1947
+ OutDone2,
1948
+ OutDone2,
1949
+ Env2
2004
1950
  > = core.readWithCause({
2005
1951
  onInput: (outElem) => pipe(core.write(outElem), core.flatMap(() => writer)),
2006
1952
  onFailure: (cause) =>
@@ -2020,19 +1966,19 @@ export const provideService = dual<
2020
1966
  <T extends Context.Tag<any, any>>(
2021
1967
  tag: T,
2022
1968
  service: Context.Tag.Service<T>
2023
- ) => <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2024
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2025
- ) => Channel.Channel<Exclude<Env, Context.Tag.Identifier<T>>, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
2026
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, T extends Context.Tag<any, any>>(
2027
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1969
+ ) => <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
1970
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1971
+ ) => Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Exclude<Env, Context.Tag.Identifier<T>>>,
1972
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, T extends Context.Tag<any, any>>(
1973
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
2028
1974
  tag: T,
2029
1975
  service: Context.Tag.Service<T>
2030
- ) => Channel.Channel<Exclude<Env, Context.Tag.Identifier<T>>, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2031
- >(3, <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, T extends Context.Tag<any, any>>(
2032
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1976
+ ) => Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Exclude<Env, Context.Tag.Identifier<T>>>
1977
+ >(3, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, T extends Context.Tag<any, any>>(
1978
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
2033
1979
  tag: T,
2034
1980
  service: Context.Tag.Service<T>
2035
- ): Channel.Channel<Exclude<Env, Context.Tag.Identifier<T>>, InErr, InElem, InDone, OutErr, OutElem, OutDone> => {
1981
+ ): Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Exclude<Env, Context.Tag.Identifier<T>>> => {
2036
1982
  return core.flatMap(
2037
1983
  context<any>(),
2038
1984
  (context) => core.provideContext(self, Context.add(context, tag, service))
@@ -2041,97 +1987,90 @@ export const provideService = dual<
2041
1987
 
2042
1988
  /** @internal */
2043
1989
  export const provideLayer = dual<
2044
- <Env0, Env, OutErr2>(
2045
- layer: Layer.Layer<Env0, OutErr2, Env>
2046
- ) => <InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2047
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2048
- ) => Channel.Channel<Env0, InErr, InElem, InDone, OutErr2 | OutErr, OutElem, OutDone>,
2049
- <InErr, InElem, InDone, OutErr, OutElem, OutDone, Env0, Env, OutErr2>(
2050
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
2051
- layer: Layer.Layer<Env0, OutErr2, Env>
2052
- ) => Channel.Channel<Env0, InErr, InElem, InDone, OutErr2 | OutErr, OutElem, OutDone>
2053
- >(2, <InErr, InElem, InDone, OutErr, OutElem, OutDone, Env0, Env, OutErr2>(
2054
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
2055
- layer: Layer.Layer<Env0, OutErr2, Env>
2056
- ): Channel.Channel<Env0, InErr, InElem, InDone, OutErr | OutErr2, OutElem, OutDone> =>
1990
+ <Env, OutErr2, Env0>(
1991
+ layer: Layer.Layer<Env, OutErr2, Env0>
1992
+ ) => <OutElem, InElem, OutErr, InErr, OutDone, InDone>(
1993
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1994
+ ) => Channel.Channel<OutElem, InElem, OutErr2 | OutErr, InErr, OutDone, InDone, Env0>,
1995
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutErr2, Env0>(
1996
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1997
+ layer: Layer.Layer<Env, OutErr2, Env0>
1998
+ ) => Channel.Channel<OutElem, InElem, OutErr2 | OutErr, InErr, OutDone, InDone, Env0>
1999
+ >(2, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutErr2, Env0>(
2000
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
2001
+ layer: Layer.Layer<Env, OutErr2, Env0>
2002
+ ): Channel.Channel<OutElem, InElem, OutErr | OutErr2, InErr, OutDone, InDone, Env0> =>
2057
2003
  unwrapScoped(Effect.map(Layer.build(layer), (env) => core.provideContext(self, env))))
2058
2004
 
2059
2005
  /** @internal */
2060
2006
  export const mapInputContext = dual<
2061
2007
  <Env0, Env>(
2062
2008
  f: (env: Context.Context<Env0>) => Context.Context<Env>
2063
- ) => <InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2064
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2065
- ) => Channel.Channel<Env0, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
2066
- <InErr, InElem, InDone, OutErr, OutElem, OutDone, Env0, Env>(
2067
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
2009
+ ) => <OutElem, InElem, OutErr, InErr, OutDone, InDone>(
2010
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
2011
+ ) => Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env0>,
2012
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, Env0>(
2013
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
2068
2014
  f: (env: Context.Context<Env0>) => Context.Context<Env>
2069
- ) => Channel.Channel<Env0, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2070
- >(2, <InErr, InElem, InDone, OutErr, OutElem, OutDone, Env0, Env>(
2071
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
2015
+ ) => Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env0>
2016
+ >(2, <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, Env0>(
2017
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
2072
2018
  f: (env: Context.Context<Env0>) => Context.Context<Env>
2073
- ): Channel.Channel<Env0, InErr, InElem, InDone, OutErr, OutElem, OutDone> =>
2019
+ ): Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env0> =>
2074
2020
  contextWithChannel((context: Context.Context<Env0>) => core.provideContext(self, f(context))))
2075
2021
 
2076
2022
  /** @internal */
2077
2023
  export const provideSomeLayer = dual<
2078
- <Env0, Env2, OutErr2>(
2079
- layer: Layer.Layer<Env0, OutErr2, Env2>
2080
- ) => <R, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2081
- self: Channel.Channel<R, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2082
- ) => Channel.Channel<Env0 | Exclude<R, Env2>, InErr, InElem, InDone, OutErr2 | OutErr, OutElem, OutDone>,
2083
- <R, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env0, Env2, OutErr2>(
2084
- self: Channel.Channel<R, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
2085
- layer: Layer.Layer<Env0, OutErr2, Env2>
2086
- ) => Channel.Channel<Env0 | Exclude<R, Env2>, InErr, InElem, InDone, OutErr2 | OutErr, OutElem, OutDone>
2087
- >(2, <R, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env0, Env2, OutErr2>(
2088
- self: Channel.Channel<R, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
2089
- layer: Layer.Layer<Env0, OutErr2, Env2>
2090
- ): Channel.Channel<Env0 | Exclude<R, Env2>, InErr, InElem, InDone, OutErr | OutErr2, OutElem, OutDone> =>
2024
+ <Env2, OutErr2, Env0>(
2025
+ layer: Layer.Layer<Env2, OutErr2, Env0>
2026
+ ) => <OutElem, InElem, OutErr, InErr, OutDone, InDone, R>(
2027
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, R>
2028
+ ) => Channel.Channel<OutElem, InElem, OutErr2 | OutErr, InErr, OutDone, InDone, Env0 | Exclude<R, Env2>>,
2029
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, R, Env2, OutErr2, Env0>(
2030
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, R>,
2031
+ layer: Layer.Layer<Env2, OutErr2, Env0>
2032
+ ) => Channel.Channel<OutElem, InElem, OutErr2 | OutErr, InErr, OutDone, InDone, Env0 | Exclude<R, Env2>>
2033
+ >(2, <OutElem, InElem, OutErr, InErr, OutDone, InDone, R, Env2, OutErr2, Env0>(
2034
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, R>,
2035
+ layer: Layer.Layer<Env2, OutErr2, Env0>
2036
+ ): Channel.Channel<OutElem, InElem, OutErr | OutErr2, InErr, OutDone, InDone, Env0 | Exclude<R, Env2>> =>
2091
2037
  // @ts-expect-error
2092
2038
  provideLayer(self, Layer.merge(Layer.context<Exclude<R, Env2>>(), layer)))
2093
2039
 
2094
2040
  /** @internal */
2095
- export const read = <In>(): Channel.Channel<
2096
- never,
2097
- unknown,
2098
- In,
2099
- unknown,
2100
- Option.Option<never>,
2101
- never,
2102
- In
2103
- > => core.readOrFail<In, Option.Option<never>>(Option.none())
2041
+ export const read = <In>(): Channel.Channel<never, In, Option.Option<never>, unknown, In, unknown> =>
2042
+ core.readOrFail<Option.Option<never>, In>(Option.none())
2104
2043
 
2105
2044
  /** @internal */
2106
- export const repeated = <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2107
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2108
- ): Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone> => core.flatMap(self, () => repeated(self))
2045
+ export const repeated = <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
2046
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
2047
+ ): Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env> => core.flatMap(self, () => repeated(self))
2109
2048
 
2110
2049
  /** @internal */
2111
- export const run = <Env, InErr, InDone, OutErr, OutDone>(
2112
- self: Channel.Channel<Env, InErr, unknown, InDone, OutErr, never, OutDone>
2113
- ): Effect.Effect<Env, OutErr, OutDone> => Effect.scoped(executor.runScoped(self))
2050
+ export const run = <OutErr, InErr, OutDone, InDone, Env>(
2051
+ self: Channel.Channel<never, unknown, OutErr, InErr, OutDone, InDone, Env>
2052
+ ): Effect.Effect<OutDone, OutErr, Env> => Effect.scoped(executor.runScoped(self))
2114
2053
 
2115
2054
  /** @internal */
2116
- export const runCollect = <Env, InErr, InDone, OutErr, OutElem, OutDone>(
2117
- self: Channel.Channel<Env, InErr, unknown, InDone, OutErr, OutElem, OutDone>
2118
- ): Effect.Effect<Env, OutErr, [Chunk.Chunk<OutElem>, OutDone]> => executor.run(core.collectElements(self))
2055
+ export const runCollect = <OutElem, OutErr, InErr, OutDone, InDone, Env>(
2056
+ self: Channel.Channel<OutElem, unknown, OutErr, InErr, OutDone, InDone, Env>
2057
+ ): Effect.Effect<[Chunk.Chunk<OutElem>, OutDone], OutErr, Env> => executor.run(core.collectElements(self))
2119
2058
 
2120
2059
  /** @internal */
2121
- export const runDrain = <Env, InErr, InDone, OutElem, OutErr, OutDone>(
2122
- self: Channel.Channel<Env, InErr, unknown, InDone, OutErr, OutElem, OutDone>
2123
- ): Effect.Effect<Env, OutErr, OutDone> => executor.run(drain(self))
2060
+ export const runDrain = <OutElem, OutErr, InErr, OutDone, InDone, Env>(
2061
+ self: Channel.Channel<OutElem, unknown, OutErr, InErr, OutDone, InDone, Env>
2062
+ ): Effect.Effect<OutDone, OutErr, Env> => executor.run(drain(self))
2124
2063
 
2125
2064
  /** @internal */
2126
- export const scoped = <R, E, A>(
2127
- effect: Effect.Effect<R, E, A>
2128
- ): Channel.Channel<Exclude<R, Scope.Scope>, unknown, unknown, unknown, E, A, unknown> =>
2065
+ export const scoped = <A, E, R>(
2066
+ effect: Effect.Effect<A, E, R>
2067
+ ): Channel.Channel<A, unknown, E, unknown, unknown, unknown, Exclude<R, Scope.Scope>> =>
2129
2068
  unwrap(
2130
2069
  Effect.uninterruptibleMask((restore) =>
2131
2070
  Effect.map(Scope.make(), (scope) =>
2132
2071
  core.acquireReleaseOut(
2133
2072
  Effect.tapErrorCause(
2134
- restore(Scope.extend(scope)(effect)),
2073
+ restore(Scope.extend(effect, scope)),
2135
2074
  (cause) => Scope.close(scope, Exit.failCause(cause))
2136
2075
  ),
2137
2076
  (_, exit) => Scope.close(scope, exit)
@@ -2142,39 +2081,39 @@ export const scoped = <R, E, A>(
2142
2081
  /** @internal */
2143
2082
  export const service = <T extends Context.Tag<any, any>>(
2144
2083
  tag: T
2145
- ): Channel.Channel<Context.Tag.Identifier<T>, unknown, unknown, unknown, never, never, Context.Tag.Service<T>> =>
2084
+ ): Channel.Channel<never, unknown, never, unknown, Context.Tag.Service<T>, unknown, Context.Tag.Identifier<T>> =>
2146
2085
  core.fromEffect(tag)
2147
2086
 
2148
2087
  /** @internal */
2149
2088
  export const serviceWith = <T extends Context.Tag<any, any>>(tag: T) =>
2150
2089
  <OutDone>(
2151
2090
  f: (resource: Context.Tag.Service<T>) => OutDone
2152
- ): Channel.Channel<Context.Tag.Identifier<T>, unknown, unknown, unknown, never, never, OutDone> => map(service(tag), f)
2091
+ ): Channel.Channel<never, unknown, never, unknown, OutDone, unknown, Context.Tag.Identifier<T>> => map(service(tag), f)
2153
2092
 
2154
2093
  /** @internal */
2155
2094
  export const serviceWithChannel =
2156
2095
  <T extends Context.Tag<any, any>>(tag: T) =>
2157
2096
  <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2158
- f: (resource: Context.Tag.Service<T>) => Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2159
- ): Channel.Channel<Env | Context.Tag.Identifier<T>, InErr, InElem, InDone, OutErr, OutElem, OutDone> =>
2097
+ f: (resource: Context.Tag.Service<T>) => Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
2098
+ ): Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env | Context.Tag.Identifier<T>> =>
2160
2099
  core.flatMap(service(tag), f)
2161
2100
 
2162
2101
  /** @internal */
2163
2102
  export const serviceWithEffect = <T extends Context.Tag<any, any>>(tag: T) =>
2164
2103
  <Env, OutErr, OutDone>(
2165
- f: (resource: Context.Tag.Service<T>) => Effect.Effect<Env, OutErr, OutDone>
2166
- ): Channel.Channel<Env | Context.Tag.Identifier<T>, unknown, unknown, unknown, OutErr, never, OutDone> =>
2104
+ f: (resource: Context.Tag.Service<T>) => Effect.Effect<OutDone, OutErr, Env>
2105
+ ): Channel.Channel<never, unknown, OutErr, unknown, OutDone, unknown, Env | Context.Tag.Identifier<T>> =>
2167
2106
  mapEffect(service(tag), f)
2168
2107
 
2169
2108
  /** @internal */
2170
- export const toPubSub = <Err, Done, Elem>(
2171
- pubsub: PubSub.PubSub<Either.Either<Exit.Exit<Err, Done>, Elem>>
2172
- ): Channel.Channel<never, Err, Elem, Done, never, never, unknown> => toQueue(pubsub)
2109
+ export const toPubSub = <Done, Err, Elem>(
2110
+ pubsub: PubSub.PubSub<Either.Either<Exit.Exit<Done, Err>, Elem>>
2111
+ ): Channel.Channel<never, Elem, never, Err, unknown, Done> => toQueue(pubsub)
2173
2112
 
2174
2113
  /** @internal */
2175
- export const toPull = <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2176
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2177
- ): Effect.Effect<Env | Scope.Scope, never, Effect.Effect<Env, OutErr, Either.Either<OutDone, OutElem>>> =>
2114
+ export const toPull = <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
2115
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
2116
+ ): Effect.Effect<Effect.Effect<Either.Either<OutDone, OutElem>, OutErr, Env>, never, Env | Scope.Scope> =>
2178
2117
  Effect.map(
2179
2118
  Effect.acquireRelease(
2180
2119
  Effect.sync(() => new executor.ChannelExecutor(self, void 0, identity)),
@@ -2189,14 +2128,14 @@ export const toPull = <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2189
2128
  /** @internal */
2190
2129
  const interpretToPull = <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2191
2130
  channelState: ChannelState.ChannelState<Env, OutErr>,
2192
- exec: executor.ChannelExecutor<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2193
- ): Effect.Effect<Env, OutErr, Either.Either<OutDone, OutElem>> => {
2131
+ exec: executor.ChannelExecutor<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
2132
+ ): Effect.Effect<Either.Either<OutDone, OutElem>, OutErr, Env> => {
2194
2133
  const state = channelState as ChannelState.Primitive
2195
2134
  switch (state._tag) {
2196
2135
  case ChannelStateOpCodes.OP_DONE: {
2197
2136
  return Exit.match(exec.getDone(), {
2198
2137
  onFailure: Effect.failCause,
2199
- onSuccess: (done): Effect.Effect<Env, OutErr, Either.Either<OutDone, OutElem>> =>
2138
+ onSuccess: (done): Effect.Effect<Either.Either<OutDone, OutElem>, OutErr, Env> =>
2200
2139
  Effect.succeed(Either.left(done))
2201
2140
  })
2202
2141
  }
@@ -2205,7 +2144,7 @@ const interpretToPull = <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2205
2144
  }
2206
2145
  case ChannelStateOpCodes.OP_FROM_EFFECT: {
2207
2146
  return pipe(
2208
- state.effect as Effect.Effect<Env, OutErr, Either.Either<OutDone, OutElem>>,
2147
+ state.effect as Effect.Effect<Either.Either<OutDone, OutElem>, OutErr, Env>,
2209
2148
  Effect.flatMap(() => interpretToPull(exec.run() as ChannelState.ChannelState<Env, OutErr>, exec))
2210
2149
  )
2211
2150
  }
@@ -2213,21 +2152,21 @@ const interpretToPull = <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2213
2152
  return executor.readUpstream(
2214
2153
  state,
2215
2154
  () => interpretToPull(exec.run() as ChannelState.ChannelState<Env, OutErr>, exec),
2216
- (cause) => Effect.failCause(cause) as Effect.Effect<Env, OutErr, Either.Either<OutDone, OutElem>>
2155
+ (cause) => Effect.failCause(cause) as Effect.Effect<Either.Either<OutDone, OutElem>, OutErr, Env>
2217
2156
  )
2218
2157
  }
2219
2158
  }
2220
2159
  }
2221
2160
 
2222
2161
  /** @internal */
2223
- export const toQueue = <Err, Done, Elem>(
2224
- queue: Queue.Enqueue<Either.Either<Exit.Exit<Err, Done>, Elem>>
2225
- ): Channel.Channel<never, Err, Elem, Done, never, never, unknown> => core.suspend(() => toQueueInternal(queue))
2162
+ export const toQueue = <Done, Err, Elem>(
2163
+ queue: Queue.Enqueue<Either.Either<Exit.Exit<Done, Err>, Elem>>
2164
+ ): Channel.Channel<never, Elem, never, Err, unknown, Done> => core.suspend(() => toQueueInternal(queue))
2226
2165
 
2227
2166
  /** @internal */
2228
2167
  const toQueueInternal = <Err, Done, Elem>(
2229
- queue: Queue.Enqueue<Either.Either<Exit.Exit<Err, Done>, Elem>>
2230
- ): Channel.Channel<never, Err, Elem, Done, never, never, unknown> => {
2168
+ queue: Queue.Enqueue<Either.Either<Exit.Exit<Done, Err>, Elem>>
2169
+ ): Channel.Channel<never, Elem, never, Err, unknown, Done> => {
2231
2170
  return core.readWithCause({
2232
2171
  onInput: (elem) =>
2233
2172
  core.flatMap(
@@ -2240,32 +2179,14 @@ const toQueueInternal = <Err, Done, Elem>(
2240
2179
  }
2241
2180
 
2242
2181
  /** @internal */
2243
- export const unwrap = <R, E, R2, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2244
- channel: Effect.Effect<R, E, Channel.Channel<R2, InErr, InElem, InDone, OutErr, OutElem, OutDone>>
2245
- ): Channel.Channel<R | R2, InErr, InElem, InDone, E | OutErr, OutElem, OutDone> => flatten(core.fromEffect(channel))
2182
+ export const unwrap = <OutElem, InElem, OutErr, InErr, OutDone, InDone, R2, E, R>(
2183
+ channel: Effect.Effect<Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, R2>, E, R>
2184
+ ): Channel.Channel<OutElem, InElem, E | OutErr, InErr, OutDone, InDone, R | R2> => flatten(core.fromEffect(channel))
2246
2185
 
2247
2186
  /** @internal */
2248
- export const unwrapScoped = <
2249
- R,
2250
- E,
2251
- Env,
2252
- InErr,
2253
- InElem,
2254
- InDone,
2255
- OutErr,
2256
- OutElem,
2257
- OutDone
2258
- >(
2259
- self: Effect.Effect<R, E, Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>>
2260
- ): Channel.Channel<
2261
- Exclude<R, Scope.Scope> | Env,
2262
- InErr,
2263
- InElem,
2264
- InDone,
2265
- E | OutErr,
2266
- OutElem,
2267
- OutDone
2268
- > =>
2187
+ export const unwrapScoped = <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, E, R>(
2188
+ self: Effect.Effect<Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>, E, R>
2189
+ ): Channel.Channel<OutElem, InElem, E | OutErr, InErr, OutDone, InDone, Env | Exclude<R, Scope.Scope>> =>
2269
2190
  core.concatAllWith(
2270
2191
  scoped(self),
2271
2192
  (d, _) => d,
@@ -2277,19 +2198,19 @@ export const updateService = dual<
2277
2198
  <T extends Context.Tag<any, any>>(
2278
2199
  tag: T,
2279
2200
  f: (resource: Context.Tag.Service<T>) => Context.Tag.Service<T>
2280
- ) => <R, InErr, InDone, OutElem, OutErr, OutDone>(
2281
- self: Channel.Channel<R, InErr, unknown, InDone, OutErr, OutElem, OutDone>
2282
- ) => Channel.Channel<T | R, InErr, unknown, InDone, OutErr, OutElem, OutDone>,
2283
- <R, InErr, InDone, OutElem, OutErr, OutDone, T extends Context.Tag<any, any>>(
2284
- self: Channel.Channel<R, InErr, unknown, InDone, OutErr, OutElem, OutDone>,
2201
+ ) => <OutElem, OutErr, InErr, OutDone, InDone, R>(
2202
+ self: Channel.Channel<OutElem, unknown, OutErr, InErr, OutDone, InDone, R>
2203
+ ) => Channel.Channel<OutElem, unknown, OutErr, InErr, OutDone, InDone, T | R>,
2204
+ <OutElem, OutErr, InErr, OutDone, InDone, R, T extends Context.Tag<any, any>>(
2205
+ self: Channel.Channel<OutElem, unknown, OutErr, InErr, OutDone, InDone, R>,
2285
2206
  tag: T,
2286
2207
  f: (resource: Context.Tag.Service<T>) => Context.Tag.Service<T>
2287
- ) => Channel.Channel<T | R, InErr, unknown, InDone, OutErr, OutElem, OutDone>
2288
- >(3, <R, InErr, InDone, OutElem, OutErr, OutDone, T extends Context.Tag<any, any>>(
2289
- self: Channel.Channel<R, InErr, unknown, InDone, OutErr, OutElem, OutDone>,
2208
+ ) => Channel.Channel<OutElem, unknown, OutErr, InErr, OutDone, InDone, T | R>
2209
+ >(3, <OutElem, OutErr, InErr, OutDone, InDone, R, T extends Context.Tag<any, any>>(
2210
+ self: Channel.Channel<OutElem, unknown, OutErr, InErr, OutDone, InDone, R>,
2290
2211
  tag: T,
2291
2212
  f: (resource: Context.Tag.Service<T>) => Context.Tag.Service<T>
2292
- ): Channel.Channel<R | T, InErr, unknown, InDone, OutErr, OutElem, OutDone> =>
2213
+ ): Channel.Channel<OutElem, unknown, OutErr, InErr, OutDone, InDone, R | T> =>
2293
2214
  mapInputContext(self, (context: Context.Context<R>) =>
2294
2215
  Context.merge(
2295
2216
  context,
@@ -2307,11 +2228,11 @@ export const withSpan = dual<
2307
2228
  readonly root?: boolean | undefined
2308
2229
  readonly context?: Context.Context<never> | undefined
2309
2230
  }
2310
- ) => <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2311
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2312
- ) => Channel.Channel<Exclude<Env, Tracer.ParentSpan>, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
2313
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2314
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
2231
+ ) => <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
2232
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
2233
+ ) => Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Exclude<Env, Tracer.ParentSpan>>,
2234
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
2235
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
2315
2236
  name: string,
2316
2237
  options?: {
2317
2238
  readonly attributes?: Record<string, unknown> | undefined
@@ -2320,7 +2241,7 @@ export const withSpan = dual<
2320
2241
  readonly root?: boolean | undefined
2321
2242
  readonly context?: Context.Context<never> | undefined
2322
2243
  }
2323
- ) => Channel.Channel<Exclude<Env, Tracer.ParentSpan>, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2244
+ ) => Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Exclude<Env, Tracer.ParentSpan>>
2324
2245
  >(3, (self, name, options) =>
2325
2246
  unwrapScoped(
2326
2247
  Effect.flatMap(
@@ -2336,19 +2257,19 @@ export const withSpan = dual<
2336
2257
  /** @internal */
2337
2258
  export const writeAll = <OutElem>(
2338
2259
  ...outs: Array<OutElem>
2339
- ): Channel.Channel<never, unknown, unknown, unknown, never, OutElem, void> => writeChunk(Chunk.fromIterable(outs))
2260
+ ): Channel.Channel<OutElem> => writeChunk(Chunk.fromIterable(outs))
2340
2261
 
2341
2262
  /** @internal */
2342
2263
  export const writeChunk = <OutElem>(
2343
2264
  outs: Chunk.Chunk<OutElem>
2344
- ): Channel.Channel<never, unknown, unknown, unknown, never, OutElem, void> => writeChunkWriter(0, outs.length, outs)
2265
+ ): Channel.Channel<OutElem> => writeChunkWriter(0, outs.length, outs)
2345
2266
 
2346
2267
  /** @internal */
2347
2268
  const writeChunkWriter = <OutElem>(
2348
2269
  idx: number,
2349
2270
  len: number,
2350
2271
  chunk: Chunk.Chunk<OutElem>
2351
- ): Channel.Channel<never, unknown, unknown, unknown, never, OutElem, void> => {
2272
+ ): Channel.Channel<OutElem> => {
2352
2273
  return idx === len
2353
2274
  ? core.unit
2354
2275
  : pipe(
@@ -2359,53 +2280,53 @@ const writeChunkWriter = <OutElem>(
2359
2280
 
2360
2281
  /** @internal */
2361
2282
  export const zip = dual<
2362
- <Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>(
2363
- that: Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>,
2283
+ <OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
2284
+ that: Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>,
2364
2285
  options?: {
2365
2286
  readonly concurrent?: boolean | undefined
2366
2287
  }
2367
- ) => <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2368
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2288
+ ) => <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
2289
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
2369
2290
  ) => Channel.Channel<
2370
- Env1 | Env,
2371
- InErr & InErr1,
2291
+ OutElem1 | OutElem,
2372
2292
  InElem & InElem1,
2373
- InDone & InDone1,
2374
2293
  OutErr1 | OutErr,
2375
- OutElem1 | OutElem,
2376
- readonly [OutDone, OutDone1]
2294
+ InErr & InErr1,
2295
+ readonly [OutDone, OutDone1],
2296
+ InDone & InDone1,
2297
+ Env1 | Env
2377
2298
  >,
2378
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>(
2379
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
2380
- that: Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>,
2299
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
2300
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
2301
+ that: Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>,
2381
2302
  options?: {
2382
2303
  readonly concurrent?: boolean | undefined
2383
2304
  }
2384
2305
  ) => Channel.Channel<
2385
- Env1 | Env,
2386
- InErr & InErr1,
2306
+ OutElem1 | OutElem,
2387
2307
  InElem & InElem1,
2388
- InDone & InDone1,
2389
2308
  OutErr1 | OutErr,
2390
- OutElem1 | OutElem,
2391
- readonly [OutDone, OutDone1]
2309
+ InErr & InErr1,
2310
+ readonly [OutDone, OutDone1],
2311
+ InDone & InDone1,
2312
+ Env1 | Env
2392
2313
  >
2393
2314
  >(
2394
2315
  (args) => core.isChannel(args[1]),
2395
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>(
2396
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
2397
- that: Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>,
2316
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
2317
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
2318
+ that: Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>,
2398
2319
  options?: {
2399
2320
  readonly concurrent?: boolean | undefined
2400
2321
  }
2401
2322
  ): Channel.Channel<
2402
- Env | Env1,
2403
- InErr & InErr1,
2323
+ OutElem | OutElem1,
2404
2324
  InElem & InElem1,
2405
- InDone & InDone1,
2406
2325
  OutErr | OutErr1,
2407
- OutElem | OutElem1,
2408
- readonly [OutDone, OutDone1]
2326
+ InErr & InErr1,
2327
+ readonly [OutDone, OutDone1],
2328
+ InDone & InDone1,
2329
+ Env | Env1
2409
2330
  > =>
2410
2331
  options?.concurrent ?
2411
2332
  mergeWith(self, {
@@ -2418,53 +2339,53 @@ export const zip = dual<
2418
2339
 
2419
2340
  /** @internal */
2420
2341
  export const zipLeft = dual<
2421
- <Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>(
2422
- that: Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>,
2342
+ <OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
2343
+ that: Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>,
2423
2344
  options?: {
2424
2345
  readonly concurrent?: boolean | undefined
2425
2346
  }
2426
- ) => <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2427
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2347
+ ) => <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
2348
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
2428
2349
  ) => Channel.Channel<
2429
- Env1 | Env,
2430
- InErr & InErr1,
2350
+ OutElem1 | OutElem,
2431
2351
  InElem & InElem1,
2432
- InDone & InDone1,
2433
2352
  OutErr1 | OutErr,
2434
- OutElem1 | OutElem,
2435
- OutDone
2353
+ InErr & InErr1,
2354
+ OutDone,
2355
+ InDone & InDone1,
2356
+ Env1 | Env
2436
2357
  >,
2437
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>(
2438
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
2439
- that: Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>,
2358
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
2359
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
2360
+ that: Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>,
2440
2361
  options?: {
2441
2362
  readonly concurrent?: boolean | undefined
2442
2363
  }
2443
2364
  ) => Channel.Channel<
2444
- Env1 | Env,
2445
- InErr & InErr1,
2365
+ OutElem1 | OutElem,
2446
2366
  InElem & InElem1,
2447
- InDone & InDone1,
2448
2367
  OutErr1 | OutErr,
2449
- OutElem1 | OutElem,
2450
- OutDone
2368
+ InErr & InErr1,
2369
+ OutDone,
2370
+ InDone & InDone1,
2371
+ Env1 | Env
2451
2372
  >
2452
2373
  >(
2453
2374
  (args) => core.isChannel(args[1]),
2454
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>(
2455
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
2456
- that: Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>,
2375
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
2376
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
2377
+ that: Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>,
2457
2378
  options?: {
2458
2379
  readonly concurrent?: boolean | undefined
2459
2380
  }
2460
2381
  ): Channel.Channel<
2461
- Env | Env1,
2462
- InErr & InErr1,
2382
+ OutElem | OutElem1,
2463
2383
  InElem & InElem1,
2464
- InDone & InDone1,
2465
2384
  OutErr | OutErr1,
2466
- OutElem | OutElem1,
2467
- OutDone
2385
+ InErr & InErr1,
2386
+ OutDone,
2387
+ InDone & InDone1,
2388
+ Env | Env1
2468
2389
  > =>
2469
2390
  options?.concurrent ?
2470
2391
  map(zip(self, that, { concurrent: true }), (tuple) => tuple[0]) :
@@ -2473,53 +2394,53 @@ export const zipLeft = dual<
2473
2394
 
2474
2395
  /** @internal */
2475
2396
  export const zipRight = dual<
2476
- <Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>(
2477
- that: Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>,
2397
+ <OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
2398
+ that: Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>,
2478
2399
  options?: {
2479
2400
  readonly concurrent?: boolean | undefined
2480
2401
  }
2481
- ) => <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2482
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2402
+ ) => <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
2403
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
2483
2404
  ) => Channel.Channel<
2484
- Env1 | Env,
2485
- InErr & InErr1,
2405
+ OutElem1 | OutElem,
2486
2406
  InElem & InElem1,
2487
- InDone & InDone1,
2488
2407
  OutErr1 | OutErr,
2489
- OutElem1 | OutElem,
2490
- OutDone1
2408
+ InErr & InErr1,
2409
+ OutDone1,
2410
+ InDone & InDone1,
2411
+ Env1 | Env
2491
2412
  >,
2492
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>(
2493
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
2494
- that: Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>,
2413
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
2414
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
2415
+ that: Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>,
2495
2416
  options?: {
2496
2417
  readonly concurrent?: boolean | undefined
2497
2418
  }
2498
2419
  ) => Channel.Channel<
2499
- Env1 | Env,
2500
- InErr & InErr1,
2420
+ OutElem1 | OutElem,
2501
2421
  InElem & InElem1,
2502
- InDone & InDone1,
2503
2422
  OutErr1 | OutErr,
2504
- OutElem1 | OutElem,
2505
- OutDone1
2423
+ InErr & InErr1,
2424
+ OutDone1,
2425
+ InDone & InDone1,
2426
+ Env1 | Env
2506
2427
  >
2507
2428
  >(
2508
2429
  (args) => core.isChannel(args[1]),
2509
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>(
2510
- self: Channel.Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
2511
- that: Channel.Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>,
2430
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
2431
+ self: Channel.Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
2432
+ that: Channel.Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>,
2512
2433
  options?: {
2513
2434
  readonly concurrent?: boolean | undefined
2514
2435
  }
2515
2436
  ): Channel.Channel<
2516
- Env | Env1,
2517
- InErr & InErr1,
2437
+ OutElem | OutElem1,
2518
2438
  InElem & InElem1,
2519
- InDone & InDone1,
2520
2439
  OutErr | OutErr1,
2521
- OutElem | OutElem1,
2522
- OutDone1
2440
+ InErr & InErr1,
2441
+ OutDone1,
2442
+ InDone & InDone1,
2443
+ Env | Env1
2523
2444
  > =>
2524
2445
  options?.concurrent ?
2525
2446
  map(zip(self, that, { concurrent: true }), (tuple) => tuple[1]) :