effect 2.2.5 → 2.3.0

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 +19 -19
  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 +19 -19
  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
package/src/Channel.ts CHANGED
@@ -71,8 +71,26 @@ export type ChannelTypeId = typeof ChannelTypeId
71
71
  * @since 2.0.0
72
72
  * @category models
73
73
  */
74
- export interface Channel<out Env, in InErr, in InElem, in InDone, out OutErr, out OutElem, out OutDone>
75
- extends Channel.Variance<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>, Pipeable
74
+ // export interface Channel<out Env, in InErr, in InElem, in InDone, out OutErr, out OutElem, out OutDone>
75
+ export interface Channel<
76
+ out OutElem,
77
+ in InElem = unknown,
78
+ out OutErr = never,
79
+ in InErr = unknown,
80
+ out OutDone = void,
81
+ in InDone = unknown,
82
+ out Env = never
83
+ > extends
84
+ Channel.Variance<
85
+ OutElem,
86
+ InElem,
87
+ OutErr,
88
+ InErr,
89
+ OutDone,
90
+ InDone,
91
+ Env
92
+ >,
93
+ Pipeable
76
94
  {
77
95
  [Unify.typeSymbol]?: unknown
78
96
  [Unify.unifySymbol]?: ChannelUnify<this>
@@ -86,15 +104,15 @@ export interface Channel<out Env, in InErr, in InElem, in InDone, out OutErr, ou
86
104
  export interface ChannelUnify<A extends { [Unify.typeSymbol]?: any }> extends Effect.EffectUnify<A> {
87
105
  Channel?: () => A[Unify.typeSymbol] extends
88
106
  | Channel<
89
- infer Env,
90
- infer InErr,
107
+ infer OutElem,
91
108
  infer InElem,
92
- infer InDone,
93
109
  infer OutErr,
94
- infer OutElem,
95
- infer OutDone
110
+ infer InErr,
111
+ infer OutDone,
112
+ infer InDone,
113
+ infer Env
96
114
  >
97
- | infer _ ? Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
115
+ | infer _ ? Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
98
116
  : never
99
117
  }
100
118
 
@@ -111,7 +129,7 @@ export interface ChannelUnifyIgnore extends Effect.EffectUnifyIgnore {
111
129
  * @category models
112
130
  */
113
131
  declare module "./Effect.js" {
114
- interface Effect<R, E, A> extends Channel<R, unknown, unknown, unknown, E, never, A> {}
132
+ interface Effect<A, E, R> extends Channel<never, unknown, E, unknown, A, unknown, R> {}
115
133
  interface EffectUnifyIgnore {
116
134
  Channel?: true
117
135
  }
@@ -125,14 +143,14 @@ export declare namespace Channel {
125
143
  * @since 2.0.0
126
144
  * @category models
127
145
  */
128
- export interface Variance<out Env, in InErr, in InElem, in InDone, out OutErr, out OutElem, out OutDone> {
129
- readonly [ChannelTypeId]: VarianceStruct<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
146
+ export interface Variance<out OutElem, in InElem, out OutErr, in InErr, out OutDone, in InDone, out Env> {
147
+ readonly [ChannelTypeId]: VarianceStruct<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
130
148
  }
131
149
  /**
132
150
  * @since 2.0.0
133
151
  * @category models
134
152
  */
135
- export interface VarianceStruct<out Env, in InErr, in InElem, in InDone, out OutErr, out OutElem, out OutDone> {
153
+ export interface VarianceStruct<out OutElem, in InElem, out OutErr, in InErr, out OutDone, in InDone, out Env> {
136
154
  _Env: Types.Covariant<Env>
137
155
  _InErr: Types.Contravariant<InErr>
138
156
  _InElem: Types.Contravariant<InElem>
@@ -172,20 +190,25 @@ export interface ChannelException<out E> {
172
190
  * @since 2.0.0
173
191
  * @category constructors
174
192
  */
175
- export const acquireUseRelease: <Env, InErr, InElem, InDone, OutErr, OutElem1, OutDone, Acquired>(
176
- acquire: Effect.Effect<Env, OutErr, Acquired>,
177
- use: (a: Acquired) => Channel<Env, InErr, InElem, InDone, OutErr, OutElem1, OutDone>,
178
- release: (a: Acquired, exit: Exit.Exit<OutErr, OutDone>) => Effect.Effect<Env, never, any>
179
- ) => Channel<Env, InErr, InElem, InDone, OutErr, OutElem1, OutDone> = channel.acquireUseRelease
193
+ export const acquireUseRelease: <Acquired, OutErr, Env, OutElem1, InElem, InErr, OutDone, InDone>(
194
+ acquire: Effect.Effect<Acquired, OutErr, Env>,
195
+ use: (a: Acquired) => Channel<OutElem1, InElem, OutErr, InErr, OutDone, InDone, Env>,
196
+ release: (a: Acquired, exit: Exit.Exit<OutDone, OutErr>) => Effect.Effect<any, never, Env>
197
+ ) => Channel<OutElem1, InElem, OutErr, InErr, OutDone, InDone, Env> = channel.acquireUseRelease
180
198
 
181
199
  /**
182
200
  * @since 2.0.0
183
201
  * @category constructors
184
202
  */
185
- export const acquireReleaseOut: <R, R2, E, Z>(
186
- self: Effect.Effect<R, E, Z>,
187
- release: (z: Z, e: Exit.Exit<unknown, unknown>) => Effect.Effect<R2, never, unknown>
188
- ) => Channel<R | R2, unknown, unknown, unknown, E, Z, void> = core.acquireReleaseOut
203
+ export const acquireReleaseOut: {
204
+ <Z, R2>(
205
+ release: (z: Z, e: Exit.Exit<unknown, unknown>) => Effect.Effect<unknown, never, R2>
206
+ ): <E, R>(self: Effect.Effect<Z, E, R>) => Channel<Z, unknown, E, unknown, void, unknown, R2 | R>
207
+ <Z, E, R, R2>(
208
+ self: Effect.Effect<Z, E, R>,
209
+ release: (z: Z, e: Exit.Exit<unknown, unknown>) => Effect.Effect<unknown, never, R2>
210
+ ): Channel<Z, unknown, E, unknown, void, unknown, R | R2>
211
+ } = core.acquireReleaseOut
189
212
 
190
213
  /**
191
214
  * Returns a new channel that is the same as this one, except the terminal
@@ -200,22 +223,22 @@ export const acquireReleaseOut: <R, R2, E, Z>(
200
223
  export const as: {
201
224
  <OutDone2>(
202
225
  value: OutDone2
203
- ): <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
204
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
205
- ) => Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone2>
206
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, OutDone2>(
207
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
226
+ ): <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
227
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
228
+ ) => Channel<OutElem, InElem, OutErr, InErr, OutDone2, InDone, Env>
229
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutDone2>(
230
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
208
231
  value: OutDone2
209
- ): Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone2>
232
+ ): Channel<OutElem, InElem, OutErr, InErr, OutDone2, InDone, Env>
210
233
  } = channel.as
211
234
 
212
235
  /**
213
236
  * @since 2.0.0
214
237
  * @category mapping
215
238
  */
216
- export const asUnit: <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
217
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
218
- ) => Channel<Env, InErr, InElem, InDone, OutErr, OutElem, void> = channel.asUnit
239
+ export const asUnit: <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
240
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
241
+ ) => Channel<OutElem, InElem, OutErr, InErr, void, InDone, Env> = channel.asUnit
219
242
 
220
243
  /**
221
244
  * Creates a channel backed by a buffer. When the buffer is empty, the channel
@@ -225,21 +248,17 @@ export const asUnit: <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
225
248
  * @since 2.0.0
226
249
  * @category constructors
227
250
  */
228
- export const buffer: <InErr, InElem, InDone>(
229
- options: {
230
- readonly empty: InElem
231
- readonly isEmpty: Predicate<InElem>
232
- readonly ref: Ref.Ref<InElem>
233
- }
234
- ) => Channel<never, InErr, InElem, InDone, InErr, InElem, InDone> = channel.buffer
251
+ export const buffer: <InElem, InErr, InDone>(
252
+ options: { readonly empty: InElem; readonly isEmpty: Predicate<InElem>; readonly ref: Ref.Ref<InElem> }
253
+ ) => Channel<InElem, InElem, InErr, InErr, InDone, InDone, never> = channel.buffer
235
254
 
236
255
  /**
237
256
  * @since 2.0.0
238
257
  * @category constructors
239
258
  */
240
- export const bufferChunk: <InErr, InElem, InDone>(
259
+ export const bufferChunk: <InElem, InErr, InDone>(
241
260
  ref: Ref.Ref<Chunk.Chunk<InElem>>
242
- ) => Channel<never, InErr, Chunk.Chunk<InElem>, InDone, InErr, Chunk.Chunk<InElem>, InDone> = channel.bufferChunk
261
+ ) => Channel<Chunk.Chunk<InElem>, Chunk.Chunk<InElem>, InErr, InErr, InDone, InDone> = channel.bufferChunk
243
262
 
244
263
  /**
245
264
  * Returns a new channel that is the same as this one, except if this channel
@@ -250,30 +269,30 @@ export const bufferChunk: <InErr, InElem, InDone>(
250
269
  * @category error handling
251
270
  */
252
271
  export const catchAll: {
253
- <Env1, InErr1, InElem1, InDone1, OutErr, OutErr1, OutElem1, OutDone1>(
254
- f: (error: OutErr) => Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>
255
- ): <Env, InErr, InElem, InDone, OutElem, OutDone>(
256
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
272
+ <OutErr, OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
273
+ f: (error: OutErr) => Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>
274
+ ): <OutElem, InElem, InErr, OutDone, InDone, Env>(
275
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
257
276
  ) => Channel<
258
- Env1 | Env,
259
- InErr & InErr1,
277
+ OutElem1 | OutElem,
260
278
  InElem & InElem1,
261
- InDone & InDone1,
262
279
  OutErr1,
263
- OutElem1 | OutElem,
264
- OutDone1 | OutDone
280
+ InErr & InErr1,
281
+ OutDone1 | OutDone,
282
+ InDone & InDone1,
283
+ Env1 | Env
265
284
  >
266
- <Env, InErr, InElem, InDone, OutElem, OutDone, Env1, InErr1, InElem1, InDone1, OutErr, OutErr1, OutElem1, OutDone1>(
267
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
268
- f: (error: OutErr) => Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>
285
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
286
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
287
+ f: (error: OutErr) => Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>
269
288
  ): Channel<
270
- Env | Env1,
271
- InErr & InErr1,
289
+ OutElem | OutElem1,
272
290
  InElem & InElem1,
273
- InDone & InDone1,
274
291
  OutErr1,
275
- OutElem | OutElem1,
276
- OutDone | OutDone1
292
+ InErr & InErr1,
293
+ OutDone | OutDone1,
294
+ InDone & InDone1,
295
+ Env | Env1
277
296
  >
278
297
  } = channel.catchAll
279
298
 
@@ -286,30 +305,30 @@ export const catchAll: {
286
305
  * @category error handling
287
306
  */
288
307
  export const catchAllCause: {
289
- <Env1, InErr1, InElem1, InDone1, OutErr, OutErr1, OutElem1, OutDone1>(
290
- f: (cause: Cause.Cause<OutErr>) => Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>
291
- ): <Env, InErr, InElem, InDone, OutElem, OutDone>(
292
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
308
+ <OutErr, OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
309
+ f: (cause: Cause.Cause<OutErr>) => Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>
310
+ ): <OutElem, InElem, InErr, OutDone, InDone, Env>(
311
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
293
312
  ) => Channel<
294
- Env1 | Env,
295
- InErr & InErr1,
313
+ OutElem1 | OutElem,
296
314
  InElem & InElem1,
297
- InDone & InDone1,
298
315
  OutErr1,
299
- OutElem1 | OutElem,
300
- OutDone1 | OutDone
316
+ InErr & InErr1,
317
+ OutDone1 | OutDone,
318
+ InDone & InDone1,
319
+ Env1 | Env
301
320
  >
302
- <Env, InErr, InElem, InDone, OutElem, OutDone, Env1, InErr1, InElem1, InDone1, OutErr, OutErr1, OutElem1, OutDone1>(
303
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
304
- f: (cause: Cause.Cause<OutErr>) => Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>
321
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
322
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
323
+ f: (cause: Cause.Cause<OutErr>) => Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>
305
324
  ): Channel<
306
- Env | Env1,
307
- InErr & InErr1,
325
+ OutElem | OutElem1,
308
326
  InElem & InElem1,
309
- InDone & InDone1,
310
327
  OutErr1,
311
- OutElem | OutElem1,
312
- OutDone | OutDone1
328
+ InErr & InErr1,
329
+ OutDone | OutDone1,
330
+ InDone & InDone1,
331
+ Env | Env1
313
332
  >
314
333
  } = core.catchAllCause
315
334
 
@@ -319,9 +338,9 @@ export const catchAllCause: {
319
338
  * @since 2.0.0
320
339
  * @category constructors
321
340
  */
322
- export const concatAll: <Env, InErr, InElem, InDone, OutErr, OutElem>(
323
- channels: Channel<Env, InErr, InElem, InDone, OutErr, Channel<Env, InErr, InElem, InDone, OutErr, OutElem, any>, any>
324
- ) => Channel<Env, InErr, InElem, InDone, OutErr, OutElem, any> = core.concatAll
341
+ export const concatAll: <OutElem, InElem, OutErr, InErr, InDone, Env>(
342
+ channels: Channel<Channel<OutElem, InElem, OutErr, InErr, any, InDone, Env>, InElem, OutErr, InErr, any, InDone, Env>
343
+ ) => Channel<OutElem, InElem, OutErr, InErr, any, InDone, Env> = core.concatAll
325
344
 
326
345
  /**
327
346
  * Concat sequentially a channel of channels.
@@ -330,33 +349,33 @@ export const concatAll: <Env, InErr, InElem, InDone, OutErr, OutElem>(
330
349
  * @category constructors
331
350
  */
332
351
  export const concatAllWith: <
333
- Env,
334
- InErr,
335
- InElem,
336
- InDone,
337
- OutErr,
338
352
  OutElem,
339
- OutDone,
340
- OutDone2,
341
- OutDone3,
342
- Env2,
343
- InErr2,
344
353
  InElem2,
354
+ OutErr2,
355
+ InErr2,
356
+ OutDone,
345
357
  InDone2,
346
- OutErr2
358
+ Env2,
359
+ InElem,
360
+ OutErr,
361
+ InErr,
362
+ OutDone2,
363
+ InDone,
364
+ Env,
365
+ OutDone3
347
366
  >(
348
367
  channels: Channel<
349
- Env,
350
- InErr,
368
+ Channel<OutElem, InElem2, OutErr2, InErr2, OutDone, InDone2, Env2>,
351
369
  InElem,
352
- InDone,
353
370
  OutErr,
354
- Channel<Env2, InErr2, InElem2, InDone2, OutErr2, OutElem, OutDone>,
355
- OutDone2
371
+ InErr,
372
+ OutDone2,
373
+ InDone,
374
+ Env
356
375
  >,
357
376
  f: (o: OutDone, o1: OutDone) => OutDone,
358
377
  g: (o: OutDone, o2: OutDone2) => OutDone3
359
- ) => Channel<Env | Env2, InErr & InErr2, InElem & InElem2, InDone & InDone2, OutErr | OutErr2, OutElem, OutDone3> =
378
+ ) => Channel<OutElem, InElem & InElem2, OutErr2 | OutErr, InErr & InErr2, OutDone3, InDone & InDone2, Env2 | Env> =
360
379
  core.concatAllWith
361
380
 
362
381
  /**
@@ -369,15 +388,15 @@ export const concatAllWith: <
369
388
  * @category utils
370
389
  */
371
390
  export const concatMap: {
372
- <OutElem, OutElem2, Env2, InErr2, InElem2, InDone2, OutErr2, _>(
373
- f: (o: OutElem) => Channel<Env2, InErr2, InElem2, InDone2, OutErr2, OutElem2, _>
391
+ <OutElem, OutElem2, InElem2, OutErr2, InErr2, _, InDone2, Env2>(
392
+ f: (o: OutElem) => Channel<OutElem2, InElem2, OutErr2, InErr2, _, InDone2, Env2>
374
393
  ): <Env, InErr, InElem, InDone, OutErr, OutDone>(
375
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
376
- ) => Channel<Env2 | Env, InErr & InErr2, InElem & InElem2, InDone & InDone2, OutErr2 | OutErr, OutElem2, unknown>
394
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
395
+ ) => Channel<OutElem2, InElem & InElem2, OutErr2 | OutErr, InErr & InErr2, unknown, InDone & InDone2, Env2 | Env>
377
396
  <Env, InErr, InElem, InDone, OutErr, OutDone, OutElem, OutElem2, Env2, InErr2, InElem2, InDone2, OutErr2, _>(
378
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
379
- f: (o: OutElem) => Channel<Env2, InErr2, InElem2, InDone2, OutErr2, OutElem2, _>
380
- ): Channel<Env | Env2, InErr & InErr2, InElem & InElem2, InDone & InDone2, OutErr | OutErr2, OutElem2, unknown>
397
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
398
+ f: (o: OutElem) => Channel<OutElem2, InElem2, OutErr2, InErr2, _, InDone2, Env2>
399
+ ): Channel<OutElem2, InElem & InElem2, OutErr | OutErr2, InErr & InErr2, unknown, InDone & InDone2, Env | Env2>
381
400
  } = channel.concatMap
382
401
 
383
402
  /**
@@ -392,35 +411,35 @@ export const concatMap: {
392
411
  * @category utils
393
412
  */
394
413
  export const concatMapWith: {
395
- <OutElem, OutElem2, OutDone, OutDone2, OutDone3, Env2, InErr2, InElem2, InDone2, OutErr2>(
396
- f: (o: OutElem) => Channel<Env2, InErr2, InElem2, InDone2, OutErr2, OutElem2, OutDone>,
414
+ <OutElem, OutElem2, InElem2, OutErr2, InErr2, OutDone, InDone2, Env2, OutDone2, OutDone3>(
415
+ f: (o: OutElem) => Channel<OutElem2, InElem2, OutErr2, InErr2, OutDone, InDone2, Env2>,
397
416
  g: (o: OutDone, o1: OutDone) => OutDone,
398
417
  h: (o: OutDone, o2: OutDone2) => OutDone3
399
418
  ): <Env, InErr, InElem, InDone, OutErr>(
400
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone2>
401
- ) => Channel<Env2 | Env, InErr & InErr2, InElem & InElem2, InDone & InDone2, OutErr2 | OutErr, OutElem2, OutDone3>
419
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone2, InDone, Env>
420
+ ) => Channel<OutElem2, InElem & InElem2, OutErr2 | OutErr, InErr & InErr2, OutDone3, InDone & InDone2, Env2 | Env>
402
421
  <
403
- Env,
404
- InErr,
422
+ OutElem,
405
423
  InElem,
406
- InDone,
407
424
  OutErr,
408
- OutElem,
409
- OutElem2,
410
- OutDone,
425
+ InErr,
411
426
  OutDone2,
412
- OutDone3,
413
- Env2,
414
- InErr2,
427
+ InDone,
428
+ Env,
429
+ OutElem2,
415
430
  InElem2,
431
+ OutErr2,
432
+ InErr2,
433
+ OutDone,
416
434
  InDone2,
417
- OutErr2
435
+ Env2,
436
+ OutDone3
418
437
  >(
419
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone2>,
420
- f: (o: OutElem) => Channel<Env2, InErr2, InElem2, InDone2, OutErr2, OutElem2, OutDone>,
438
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone2, InDone, Env>,
439
+ f: (o: OutElem) => Channel<OutElem2, InElem2, OutErr2, InErr2, OutDone, InDone2, Env2>,
421
440
  g: (o: OutDone, o1: OutDone) => OutDone,
422
441
  h: (o: OutDone, o2: OutDone2) => OutDone3
423
- ): Channel<Env | Env2, InErr & InErr2, InElem & InElem2, InDone & InDone2, OutErr | OutErr2, OutElem2, OutDone3>
442
+ ): Channel<OutElem2, InElem & InElem2, OutErr | OutErr2, InErr & InErr2, OutDone3, InDone & InDone2, Env | Env2>
424
443
  } = core.concatMapWith
425
444
 
426
445
  /**
@@ -435,8 +454,8 @@ export const concatMapWith: {
435
454
  * @category utils
436
455
  */
437
456
  export const concatMapWithCustom: {
438
- <OutElem, OutElem2, OutDone, OutDone2, OutDone3, Env2, InErr2, InElem2, InDone2, OutErr2>(
439
- f: (o: OutElem) => Channel<Env2, InErr2, InElem2, InDone2, OutErr2, OutElem2, OutDone>,
457
+ <OutElem, OutElem2, InElem2, OutErr2, InErr2, OutDone, InDone2, Env2, OutDone2, OutDone3>(
458
+ f: (o: OutElem) => Channel<OutElem2, InElem2, OutErr2, InErr2, OutDone, InDone2, Env2>,
440
459
  g: (o: OutDone, o1: OutDone) => OutDone,
441
460
  h: (o: OutDone, o2: OutDone2) => OutDone3,
442
461
  onPull: (
@@ -444,34 +463,34 @@ export const concatMapWithCustom: {
444
463
  ) => UpstreamPullStrategy.UpstreamPullStrategy<OutElem2>,
445
464
  onEmit: (elem: OutElem2) => ChildExecutorDecision.ChildExecutorDecision
446
465
  ): <Env, InErr, InElem, InDone, OutErr>(
447
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone2>
448
- ) => Channel<Env2 | Env, InErr & InErr2, InElem & InElem2, InDone & InDone2, OutErr2 | OutErr, OutElem2, OutDone3>
466
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone2, InDone, Env>
467
+ ) => Channel<OutElem2, InElem & InElem2, OutErr2 | OutErr, InErr & InErr2, OutDone3, InDone & InDone2, Env2 | Env>
449
468
  <
450
- Env,
451
- InErr,
469
+ OutElem,
452
470
  InElem,
453
- InDone,
454
471
  OutErr,
455
- OutElem,
456
- OutElem2,
457
- OutDone,
472
+ InErr,
458
473
  OutDone2,
459
- OutDone3,
460
- Env2,
461
- InErr2,
474
+ InDone,
475
+ Env,
476
+ OutElem2,
462
477
  InElem2,
478
+ OutErr2,
479
+ InErr2,
480
+ OutDone,
463
481
  InDone2,
464
- OutErr2
482
+ Env2,
483
+ OutDone3
465
484
  >(
466
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone2>,
467
- f: (o: OutElem) => Channel<Env2, InErr2, InElem2, InDone2, OutErr2, OutElem2, OutDone>,
485
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone2, InDone, Env>,
486
+ f: (o: OutElem) => Channel<OutElem2, InElem2, OutErr2, InErr2, OutDone, InDone2, Env2>,
468
487
  g: (o: OutDone, o1: OutDone) => OutDone,
469
488
  h: (o: OutDone, o2: OutDone2) => OutDone3,
470
489
  onPull: (
471
490
  upstreamPullRequest: UpstreamPullRequest.UpstreamPullRequest<OutElem>
472
491
  ) => UpstreamPullStrategy.UpstreamPullStrategy<OutElem2>,
473
492
  onEmit: (elem: OutElem2) => ChildExecutorDecision.ChildExecutorDecision
474
- ): Channel<Env | Env2, InErr & InErr2, InElem & InElem2, InDone & InDone2, OutErr | OutErr2, OutElem2, OutDone3>
493
+ ): Channel<OutElem2, InElem & InElem2, OutErr | OutErr2, InErr & InErr2, OutDone3, InDone & InDone2, Env | Env2>
475
494
  } = core.concatMapWithCustom
476
495
 
477
496
  /**
@@ -482,15 +501,15 @@ export const concatMapWithCustom: {
482
501
  * @category utils
483
502
  */
484
503
  export const collect: {
485
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutElem2, OutDone>(
504
+ <OutElem, OutElem2>(
486
505
  pf: (o: OutElem) => Option.Option<OutElem2>
487
- ): (
488
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
489
- ) => Channel<Env, InErr, InElem, InDone, OutErr, OutElem2, OutDone>
490
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutElem2, OutDone>(
491
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
506
+ ): <InElem, OutErr, InErr, OutDone, InDone, Env>(
507
+ self: Channel<OutElem, unknown, never, unknown, void, unknown, never>
508
+ ) => Channel<OutElem2, InElem, OutErr, InErr, OutDone, InDone, Env>
509
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem2>(
510
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
492
511
  pf: (o: OutElem) => Option.Option<OutElem2>
493
- ): Channel<Env, InErr, InElem, InDone, OutErr, OutElem2, OutDone>
512
+ ): Channel<OutElem2, InElem, OutErr, InErr, OutDone, InDone, Env>
494
513
  } = channel.collect
495
514
 
496
515
  /**
@@ -501,17 +520,17 @@ export const collect: {
501
520
  * @since 2.0.0
502
521
  * @category utils
503
522
  */
504
- export const concatOut: <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
523
+ export const concatOut: <OutElem, InElem, OutErr, InErr, InDone, Env, OutDone>(
505
524
  self: Channel<
506
- Env,
507
- InErr,
525
+ Channel<OutElem, InElem, OutErr, InErr, unknown, InDone, Env>,
508
526
  InElem,
509
- InDone,
510
527
  OutErr,
511
- Channel<Env, InErr, InElem, InDone, OutErr, OutElem, unknown>,
512
- OutDone
528
+ InErr,
529
+ OutDone,
530
+ InDone,
531
+ Env
513
532
  >
514
- ) => Channel<Env, InErr, InElem, InDone, OutErr, OutElem, unknown> = channel.concatOut
533
+ ) => Channel<OutElem, InElem, OutErr, InErr, unknown, InDone, Env> = channel.concatOut
515
534
 
516
535
  /**
517
536
  * Returns a new channel which is the same as this one but applies the given
@@ -523,13 +542,13 @@ export const concatOut: <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
523
542
  export const mapInput: {
524
543
  <InDone0, InDone>(
525
544
  f: (a: InDone0) => InDone
526
- ): <Env, InErr, InElem, OutErr, OutElem, OutDone>(
527
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
528
- ) => Channel<Env, InErr, InElem, InDone0, OutErr, OutElem, OutDone>
529
- <Env, InErr, InElem, OutErr, OutElem, OutDone, InDone0, InDone>(
530
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
545
+ ): <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
546
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
547
+ ) => Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone0, Env>
548
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, InDone0>(
549
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
531
550
  f: (a: InDone0) => InDone
532
- ): Channel<Env, InErr, InElem, InDone0, OutErr, OutElem, OutDone>
551
+ ): Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone0, Env>
533
552
  } = channel.mapInput
534
553
 
535
554
  /**
@@ -540,15 +559,15 @@ export const mapInput: {
540
559
  * @category utils
541
560
  */
542
561
  export const mapInputEffect: {
543
- <Env1, InErr, InDone0, InDone>(
544
- f: (i: InDone0) => Effect.Effect<Env1, InErr, InDone>
545
- ): <Env, InElem, OutErr, OutElem, OutDone>(
546
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
547
- ) => Channel<Env1 | Env, InErr, InElem, InDone0, OutErr, OutElem, OutDone>
548
- <Env, InElem, OutErr, OutElem, OutDone, Env1, InErr, InDone0, InDone>(
549
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
550
- f: (i: InDone0) => Effect.Effect<Env1, InErr, InDone>
551
- ): Channel<Env | Env1, InErr, InElem, InDone0, OutErr, OutElem, OutDone>
562
+ <InDone0, InDone, InErr, Env1>(
563
+ f: (i: InDone0) => Effect.Effect<InDone, InErr, Env1>
564
+ ): <OutElem, InElem, OutErr, OutDone, Env>(
565
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
566
+ ) => Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone0, Env1 | Env>
567
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, InDone0, Env1>(
568
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
569
+ f: (i: InDone0) => Effect.Effect<InDone, InErr, Env1>
570
+ ): Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone0, Env | Env1>
552
571
  } = channel.mapInputEffect
553
572
 
554
573
  /**
@@ -561,13 +580,13 @@ export const mapInputEffect: {
561
580
  export const mapInputError: {
562
581
  <InErr0, InErr>(
563
582
  f: (a: InErr0) => InErr
564
- ): <Env, InElem, InDone, OutErr, OutElem, OutDone>(
565
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
566
- ) => Channel<Env, InErr0, InElem, InDone, OutErr, OutElem, OutDone>
567
- <Env, InElem, InDone, OutErr, OutElem, OutDone, InErr0, InErr>(
568
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
583
+ ): <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
584
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
585
+ ) => Channel<OutElem, InElem, OutErr, InErr0, OutDone, InDone, Env>
586
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, InErr0>(
587
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
569
588
  f: (a: InErr0) => InErr
570
- ): Channel<Env, InErr0, InElem, InDone, OutErr, OutElem, OutDone>
589
+ ): Channel<OutElem, InElem, OutErr, InErr0, OutDone, InDone, Env>
571
590
  } = channel.mapInputError
572
591
 
573
592
  /**
@@ -578,15 +597,15 @@ export const mapInputError: {
578
597
  * @category utils
579
598
  */
580
599
  export const mapInputErrorEffect: {
581
- <Env1, InErr0, InErr, InDone>(
582
- f: (error: InErr0) => Effect.Effect<Env1, InErr, InDone>
583
- ): <Env, InElem, OutErr, OutElem, OutDone>(
584
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
585
- ) => Channel<Env1 | Env, InErr0, InElem, InDone, OutErr, OutElem, OutDone>
586
- <Env, InElem, OutErr, OutElem, OutDone, Env1, InErr0, InErr, InDone>(
587
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
588
- f: (error: InErr0) => Effect.Effect<Env1, InErr, InDone>
589
- ): Channel<Env | Env1, InErr0, InElem, InDone, OutErr, OutElem, OutDone>
600
+ <InErr0, InDone, InErr, Env1>(
601
+ f: (error: InErr0) => Effect.Effect<InDone, InErr, Env1>
602
+ ): <OutElem, InElem, OutErr, OutDone, Env>(
603
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
604
+ ) => Channel<OutElem, InElem, OutErr, InErr0, OutDone, InDone, Env1 | Env>
605
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, InErr0, Env1>(
606
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
607
+ f: (error: InErr0) => Effect.Effect<InDone, InErr, Env1>
608
+ ): Channel<OutElem, InElem, OutErr, InErr0, OutDone, InDone, Env | Env1>
590
609
  } = channel.mapInputErrorEffect
591
610
 
592
611
  /**
@@ -599,13 +618,13 @@ export const mapInputErrorEffect: {
599
618
  export const mapInputIn: {
600
619
  <InElem0, InElem>(
601
620
  f: (a: InElem0) => InElem
602
- ): <Env, InErr, InDone, OutErr, OutElem, OutDone>(
603
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
604
- ) => Channel<Env, InErr, InElem0, InDone, OutErr, OutElem, OutDone>
605
- <Env, InErr, InDone, OutErr, OutElem, OutDone, InElem0, InElem>(
606
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
621
+ ): <OutElem, OutErr, InErr, OutDone, InDone, Env>(
622
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
623
+ ) => Channel<OutElem, InElem0, OutErr, InErr, OutDone, InDone, Env>
624
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, InElem0>(
625
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
607
626
  f: (a: InElem0) => InElem
608
- ): Channel<Env, InErr, InElem0, InDone, OutErr, OutElem, OutDone>
627
+ ): Channel<OutElem, InElem0, OutErr, InErr, OutDone, InDone, Env>
609
628
  } = channel.mapInputIn
610
629
 
611
630
  /**
@@ -616,15 +635,15 @@ export const mapInputIn: {
616
635
  * @category utils
617
636
  */
618
637
  export const mapInputInEffect: {
619
- <Env1, InErr, InElem0, InElem>(
620
- f: (a: InElem0) => Effect.Effect<Env1, InErr, InElem>
621
- ): <Env, InDone, OutErr, OutElem, OutDone>(
622
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
623
- ) => Channel<Env1 | Env, InErr, InElem0, InDone, OutErr, OutElem, OutDone>
624
- <Env, InDone, OutErr, OutElem, OutDone, Env1, InErr, InElem0, InElem>(
625
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
626
- f: (a: InElem0) => Effect.Effect<Env1, InErr, InElem>
627
- ): Channel<Env | Env1, InErr, InElem0, InDone, OutErr, OutElem, OutDone>
638
+ <InElem0, InElem, InErr, Env1>(
639
+ f: (a: InElem0) => Effect.Effect<InElem, InErr, Env1>
640
+ ): <OutElem, OutErr, OutDone, InDone, Env>(
641
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
642
+ ) => Channel<OutElem, InElem0, OutErr, InErr, OutDone, InDone, Env1 | Env>
643
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, InElem0, Env1>(
644
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
645
+ f: (a: InElem0) => Effect.Effect<InElem, InErr, Env1>
646
+ ): Channel<OutElem, InElem0, OutErr, InErr, OutDone, InDone, Env | Env1>
628
647
  } = channel.mapInputInEffect
629
648
 
630
649
  /**
@@ -639,9 +658,9 @@ export const mapInputInEffect: {
639
658
  * @since 2.0.0
640
659
  * @category utils
641
660
  */
642
- export const doneCollect: <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
643
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
644
- ) => Channel<Env, InErr, InElem, InDone, OutErr, never, [Chunk.Chunk<OutElem>, OutDone]> = channel.doneCollect
661
+ export const doneCollect: <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
662
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
663
+ ) => Channel<never, InElem, OutErr, InErr, [Chunk.Chunk<OutElem>, OutDone], InDone, Env> = channel.doneCollect
645
664
 
646
665
  /**
647
666
  * Returns a new channel which reads all the elements from upstream's output
@@ -650,9 +669,9 @@ export const doneCollect: <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
650
669
  * @since 2.0.0
651
670
  * @category utils
652
671
  */
653
- export const drain: <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
654
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
655
- ) => Channel<Env, InErr, InElem, InDone, OutErr, never, OutDone> = channel.drain
672
+ export const drain: <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
673
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
674
+ ) => Channel<never, InElem, OutErr, InErr, OutDone, InDone, Env> = channel.drain
656
675
 
657
676
  /**
658
677
  * Returns a new channel which connects the given `AsyncInputProducer` as
@@ -664,13 +683,13 @@ export const drain: <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
664
683
  export const embedInput: {
665
684
  <InErr, InElem, InDone>(
666
685
  input: SingleProducerAsyncInput.AsyncInputProducer<InErr, InElem, InDone>
667
- ): <Env, OutErr, OutElem, OutDone>(
668
- self: Channel<Env, unknown, unknown, unknown, OutErr, OutElem, OutDone>
669
- ) => Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
670
- <Env, OutErr, OutElem, OutDone, InErr, InElem, InDone>(
671
- self: Channel<Env, unknown, unknown, unknown, OutErr, OutElem, OutDone>,
686
+ ): <OutElem, OutErr, OutDone, Env>(
687
+ self: Channel<OutElem, unknown, OutErr, unknown, OutDone, unknown, Env>
688
+ ) => Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
689
+ <OutElem, OutErr, OutDone, Env, InErr, InElem, InDone>(
690
+ self: Channel<OutElem, unknown, OutErr, unknown, OutDone, unknown, Env>,
672
691
  input: SingleProducerAsyncInput.AsyncInputProducer<InErr, InElem, InDone>
673
- ): Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
692
+ ): Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
674
693
  } = core.embedInput
675
694
 
676
695
  /**
@@ -680,9 +699,9 @@ export const embedInput: {
680
699
  * @since 2.0.0
681
700
  * @category utils
682
701
  */
683
- export const emitCollect: <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
684
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
685
- ) => Channel<Env, InErr, InElem, InDone, OutErr, [Chunk.Chunk<OutElem>, OutDone], void> = channel.emitCollect
702
+ export const emitCollect: <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
703
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
704
+ ) => Channel<[Chunk.Chunk<OutElem>, OutDone], InElem, OutErr, InErr, void, InDone, Env> = channel.emitCollect
686
705
 
687
706
  /**
688
707
  * Returns a new channel with an attached finalizer. The finalizer is
@@ -693,15 +712,15 @@ export const emitCollect: <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
693
712
  * @category utils
694
713
  */
695
714
  export const ensuring: {
696
- <Env1, Z>(
697
- finalizer: Effect.Effect<Env1, never, Z>
698
- ): <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
699
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
700
- ) => Channel<Env1 | Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
701
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env1, Z>(
702
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
703
- finalizer: Effect.Effect<Env1, never, Z>
704
- ): Channel<Env | Env1, InErr, InElem, InDone, OutErr, OutElem, OutDone>
715
+ <Z, Env1>(
716
+ finalizer: Effect.Effect<Z, never, Env1>
717
+ ): <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
718
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
719
+ ) => Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env1 | Env>
720
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, Z, Env1>(
721
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
722
+ finalizer: Effect.Effect<Z, never, Env1>
723
+ ): Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env | Env1>
705
724
  } = channel.ensuring
706
725
 
707
726
  /**
@@ -713,15 +732,15 @@ export const ensuring: {
713
732
  * @category utils
714
733
  */
715
734
  export const ensuringWith: {
716
- <Env2, OutErr, OutDone>(
717
- finalizer: (e: Exit.Exit<OutErr, OutDone>) => Effect.Effect<Env2, never, unknown>
718
- ): <Env, InErr, InElem, InDone, OutElem>(
719
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
720
- ) => Channel<Env2 | Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
721
- <Env, InErr, InElem, InDone, OutElem, Env2, OutErr, OutDone>(
722
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
723
- finalizer: (e: Exit.Exit<OutErr, OutDone>) => Effect.Effect<Env2, never, unknown>
724
- ): Channel<Env | Env2, InErr, InElem, InDone, OutErr, OutElem, OutDone>
735
+ <OutDone, OutErr, Env2>(
736
+ finalizer: (e: Exit.Exit<OutDone, OutErr>) => Effect.Effect<unknown, never, Env2>
737
+ ): <OutElem, InElem, InErr, InDone, Env>(
738
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
739
+ ) => Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env2 | Env>
740
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, Env2>(
741
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
742
+ finalizer: (e: Exit.Exit<OutDone, OutErr>) => Effect.Effect<unknown, never, Env2>
743
+ ): Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env | Env2>
725
744
  } = core.ensuringWith
726
745
 
727
746
  /**
@@ -730,7 +749,7 @@ export const ensuringWith: {
730
749
  * @since 2.0.0
731
750
  * @category context
732
751
  */
733
- export const context: <Env>() => Channel<Env, unknown, unknown, unknown, never, never, Context.Context<Env>> =
752
+ export const context: <Env>() => Channel<never, unknown, never, unknown, Context.Context<Env>, unknown, Env> =
734
753
  channel.context
735
754
 
736
755
  /**
@@ -741,7 +760,7 @@ export const context: <Env>() => Channel<Env, unknown, unknown, unknown, never,
741
760
  */
742
761
  export const contextWith: <Env, OutDone>(
743
762
  f: (env: Context.Context<Env>) => OutDone
744
- ) => Channel<Env, unknown, unknown, unknown, never, never, OutDone> = channel.contextWith
763
+ ) => Channel<never, unknown, never, unknown, OutDone, unknown, Env> = channel.contextWith
745
764
 
746
765
  /**
747
766
  * Accesses the context of the channel in the context of a channel.
@@ -749,9 +768,9 @@ export const contextWith: <Env, OutDone>(
749
768
  * @since 2.0.0
750
769
  * @category context
751
770
  */
752
- export const contextWithChannel: <Env, Env1, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
753
- f: (env: Context.Context<Env>) => Channel<Env1, InErr, InElem, InDone, OutErr, OutElem, OutDone>
754
- ) => Channel<Env | Env1, InErr, InElem, InDone, OutErr, OutElem, OutDone> = channel.contextWithChannel
771
+ export const contextWithChannel: <Env, OutElem, InElem, OutErr, InErr, OutDone, InDone, Env1>(
772
+ f: (env: Context.Context<Env>) => Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env1>
773
+ ) => Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env | Env1> = channel.contextWithChannel
755
774
 
756
775
  /**
757
776
  * Accesses the context of the channel in the context of an effect.
@@ -759,9 +778,9 @@ export const contextWithChannel: <Env, Env1, InErr, InElem, InDone, OutErr, OutE
759
778
  * @since 2.0.0
760
779
  * @category context
761
780
  */
762
- export const contextWithEffect: <Env, Env1, OutErr, OutDone>(
763
- f: (env: Context.Context<Env>) => Effect.Effect<Env1, OutErr, OutDone>
764
- ) => Channel<Env | Env1, unknown, unknown, unknown, OutErr, never, OutDone> = channel.contextWithEffect
781
+ export const contextWithEffect: <Env, OutDone, OutErr, Env1>(
782
+ f: (env: Context.Context<Env>) => Effect.Effect<OutDone, OutErr, Env1>
783
+ ) => Channel<never, unknown, OutErr, unknown, OutDone, unknown, Env | Env1> = channel.contextWithEffect
765
784
 
766
785
  /**
767
786
  * Constructs a channel that fails immediately with the specified error.
@@ -769,7 +788,7 @@ export const contextWithEffect: <Env, Env1, OutErr, OutDone>(
769
788
  * @since 2.0.0
770
789
  * @category constructors
771
790
  */
772
- export const fail: <E>(error: E) => Channel<never, unknown, unknown, unknown, E, never, never> = core.fail
791
+ export const fail: <E>(error: E) => Channel<never, unknown, E, unknown, never, unknown> = core.fail
773
792
 
774
793
  /**
775
794
  * Constructs a channel that succeeds immediately with the specified lazily
@@ -778,8 +797,7 @@ export const fail: <E>(error: E) => Channel<never, unknown, unknown, unknown, E,
778
797
  * @since 2.0.0
779
798
  * @category constructors
780
799
  */
781
- export const failSync: <E>(evaluate: LazyArg<E>) => Channel<never, unknown, unknown, unknown, E, never, never> =
782
- core.failSync
800
+ export const failSync: <E>(evaluate: LazyArg<E>) => Channel<never, unknown, E, unknown, never, unknown> = core.failSync
783
801
 
784
802
  /**
785
803
  * Constructs a channel that fails immediately with the specified `Cause`.
@@ -787,7 +805,7 @@ export const failSync: <E>(evaluate: LazyArg<E>) => Channel<never, unknown, unkn
787
805
  * @since 2.0.0
788
806
  * @category constructors
789
807
  */
790
- export const failCause: <E>(cause: Cause.Cause<E>) => Channel<never, unknown, unknown, unknown, E, never, never> =
808
+ export const failCause: <E>(cause: Cause.Cause<E>) => Channel<never, unknown, E, unknown, never, unknown> =
791
809
  core.failCause
792
810
 
793
811
  /**
@@ -799,7 +817,7 @@ export const failCause: <E>(cause: Cause.Cause<E>) => Channel<never, unknown, un
799
817
  */
800
818
  export const failCauseSync: <E>(
801
819
  evaluate: LazyArg<Cause.Cause<E>>
802
- ) => Channel<never, unknown, unknown, unknown, E, never, never> = core.failCauseSync
820
+ ) => Channel<never, unknown, E, unknown, never, unknown> = core.failCauseSync
803
821
 
804
822
  /**
805
823
  * Returns a new channel, which sequentially combines this channel, together
@@ -812,30 +830,30 @@ export const failCauseSync: <E>(
812
830
  * @category sequencing
813
831
  */
814
832
  export const flatMap: {
815
- <OutDone, Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone2>(
816
- f: (d: OutDone) => Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone2>
817
- ): <Env, InErr, InElem, InDone, OutErr, OutElem>(
818
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
833
+ <OutDone, OutElem1, InElem1, OutErr1, InErr1, OutDone2, InDone1, Env1>(
834
+ f: (d: OutDone) => Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone2, InDone1, Env1>
835
+ ): <OutElem, InElem, OutErr, InErr, InDone, Env>(
836
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
819
837
  ) => Channel<
820
- Env1 | Env,
821
- InErr & InErr1,
838
+ OutElem1 | OutElem,
822
839
  InElem & InElem1,
823
- InDone & InDone1,
824
840
  OutErr1 | OutErr,
825
- OutElem1 | OutElem,
826
- OutDone2
841
+ InErr & InErr1,
842
+ OutDone2,
843
+ InDone & InDone1,
844
+ Env1 | Env
827
845
  >
828
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone2>(
829
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
830
- f: (d: OutDone) => Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone2>
846
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, InElem1, OutErr1, InErr1, OutDone2, InDone1, Env1>(
847
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
848
+ f: (d: OutDone) => Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone2, InDone1, Env1>
831
849
  ): Channel<
832
- Env | Env1,
833
- InErr & InErr1,
850
+ OutElem | OutElem1,
834
851
  InElem & InElem1,
835
- InDone & InDone1,
836
852
  OutErr | OutErr1,
837
- OutElem | OutElem1,
838
- OutDone2
853
+ InErr & InErr1,
854
+ OutDone2,
855
+ InDone & InDone1,
856
+ Env | Env1
839
857
  >
840
858
  } = core.flatMap
841
859
 
@@ -848,37 +866,37 @@ export const flatMap: {
848
866
  * @category sequencing
849
867
  */
850
868
  export const flatten: <
851
- Env,
852
- InErr,
869
+ OutElem,
853
870
  InElem,
854
- InDone,
855
871
  OutErr,
856
- OutElem,
857
- Env1,
858
- InErr1,
872
+ InErr,
873
+ OutElem1,
859
874
  InElem1,
860
- InDone1,
861
875
  OutErr1,
862
- OutElem1,
863
- OutDone2
876
+ InErr1,
877
+ OutDone2,
878
+ InDone1,
879
+ Env1,
880
+ InDone,
881
+ Env
864
882
  >(
865
883
  self: Channel<
866
- Env,
867
- InErr,
884
+ OutElem,
868
885
  InElem,
869
- InDone,
870
886
  OutErr,
871
- OutElem,
872
- Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone2>
887
+ InErr,
888
+ Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone2, InDone1, Env1>,
889
+ InDone,
890
+ Env
873
891
  >
874
892
  ) => Channel<
875
- Env | Env1,
876
- InErr & InErr1,
893
+ OutElem | OutElem1,
877
894
  InElem & InElem1,
878
- InDone & InDone1,
879
895
  OutErr | OutErr1,
880
- OutElem | OutElem1,
881
- OutDone2
896
+ InErr & InErr1,
897
+ OutDone2,
898
+ InDone & InDone1,
899
+ Env1 | Env
882
900
  > = channel.flatten
883
901
 
884
902
  /**
@@ -889,74 +907,74 @@ export const flatten: <
889
907
  */
890
908
  export const foldChannel: {
891
909
  <
892
- Env1,
893
- Env2,
894
- InErr1,
895
- InErr2,
896
- InElem1,
897
- InElem2,
898
- InDone1,
899
- InDone2,
900
910
  OutErr,
901
- OutErr1,
902
- OutErr2,
903
911
  OutElem1,
904
- OutElem2,
905
- OutDone,
912
+ InElem1,
913
+ OutErr1,
914
+ InErr1,
906
915
  OutDone1,
907
- OutDone2
916
+ InDone1,
917
+ Env1,
918
+ OutDone,
919
+ OutElem2,
920
+ InElem2,
921
+ OutErr2,
922
+ InErr2,
923
+ OutDone2,
924
+ InDone2,
925
+ Env2
908
926
  >(
909
927
  options: {
910
- readonly onFailure: (error: OutErr) => Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>
911
- readonly onSuccess: (done: OutDone) => Channel<Env2, InErr2, InElem2, InDone2, OutErr2, OutElem2, OutDone2>
928
+ readonly onFailure: (error: OutErr) => Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>
929
+ readonly onSuccess: (done: OutDone) => Channel<OutElem2, InElem2, OutErr2, InErr2, OutDone2, InDone2, Env2>
912
930
  }
913
931
  ): <Env, InErr, InElem, InDone, OutElem>(
914
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
932
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
915
933
  ) => Channel<
916
- Env1 | Env2 | Env,
917
- InErr & InErr1 & InErr2,
934
+ OutElem1 | OutElem2 | OutElem,
918
935
  InElem & InElem1 & InElem2,
919
- InDone & InDone1 & InDone2,
920
936
  OutErr1 | OutErr2,
921
- OutElem1 | OutElem2 | OutElem,
922
- OutDone1 | OutDone2
937
+ InErr & InErr1 & InErr2,
938
+ OutDone1 | OutDone2,
939
+ InDone & InDone1 & InDone2,
940
+ Env1 | Env2 | Env
923
941
  >
924
942
  <
925
- Env,
926
- InErr,
943
+ OutElem,
927
944
  InElem,
945
+ OutErr,
946
+ InErr,
947
+ OutDone,
928
948
  InDone,
929
- OutElem,
930
- Env1,
931
- Env2,
932
- InErr1,
933
- InErr2,
949
+ Env,
950
+ OutElem1,
934
951
  InElem1,
935
- InElem2,
936
- InDone1,
937
- InDone2,
938
- OutErr,
939
952
  OutErr1,
940
- OutErr2,
941
- OutElem1,
942
- OutElem2,
943
- OutDone,
953
+ InErr1,
944
954
  OutDone1,
945
- OutDone2
955
+ InDone1,
956
+ Env1,
957
+ OutElem2,
958
+ InElem2,
959
+ OutErr2,
960
+ InErr2,
961
+ OutDone2,
962
+ InDone2,
963
+ Env2
946
964
  >(
947
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
965
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
948
966
  options: {
949
- readonly onFailure: (error: OutErr) => Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>
950
- readonly onSuccess: (done: OutDone) => Channel<Env2, InErr2, InElem2, InDone2, OutErr2, OutElem2, OutDone2>
967
+ readonly onFailure: (error: OutErr) => Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>
968
+ readonly onSuccess: (done: OutDone) => Channel<OutElem2, InElem2, OutErr2, InErr2, OutDone2, InDone2, Env2>
951
969
  }
952
970
  ): Channel<
953
- Env | Env1 | Env2,
954
- InErr & InErr1 & InErr2,
971
+ OutElem | OutElem1 | OutElem2,
955
972
  InElem & InElem1 & InElem2,
956
- InDone & InDone1 & InDone2,
957
973
  OutErr1 | OutErr2,
958
- OutElem | OutElem1 | OutElem2,
959
- OutDone1 | OutDone2
974
+ InErr & InErr1 & InErr2,
975
+ OutDone1 | OutDone2,
976
+ InDone & InDone1 & InDone2,
977
+ Env | Env1 | Env2
960
978
  >
961
979
  } = channel.foldChannel
962
980
 
@@ -968,78 +986,78 @@ export const foldChannel: {
968
986
  */
969
987
  export const foldCauseChannel: {
970
988
  <
971
- Env1,
972
- Env2,
973
- InErr1,
974
- InErr2,
975
- InElem1,
976
- InElem2,
977
- InDone1,
978
- InDone2,
979
989
  OutErr,
980
- OutErr2,
981
- OutErr3,
982
990
  OutElem1,
983
- OutElem2,
984
- OutDone,
991
+ InElem1,
992
+ OutErr2,
993
+ InErr1,
985
994
  OutDone2,
986
- OutDone3
995
+ InDone1,
996
+ Env1,
997
+ OutDone,
998
+ OutElem2,
999
+ InElem2,
1000
+ OutErr3,
1001
+ InErr2,
1002
+ OutDone3,
1003
+ InDone2,
1004
+ Env2
987
1005
  >(
988
1006
  options: {
989
1007
  readonly onFailure: (
990
1008
  c: Cause.Cause<OutErr>
991
- ) => Channel<Env1, InErr1, InElem1, InDone1, OutErr2, OutElem1, OutDone2>
992
- readonly onSuccess: (o: OutDone) => Channel<Env2, InErr2, InElem2, InDone2, OutErr3, OutElem2, OutDone3>
1009
+ ) => Channel<OutElem1, InElem1, OutErr2, InErr1, OutDone2, InDone1, Env1>
1010
+ readonly onSuccess: (o: OutDone) => Channel<OutElem2, InElem2, OutErr3, InErr2, OutDone3, InDone2, Env2>
993
1011
  }
994
1012
  ): <Env, InErr, InElem, InDone, OutElem>(
995
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1013
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
996
1014
  ) => Channel<
997
- Env1 | Env2 | Env,
998
- InErr & InErr1 & InErr2,
1015
+ OutElem1 | OutElem2 | OutElem,
999
1016
  InElem & InElem1 & InElem2,
1000
- InDone & InDone1 & InDone2,
1001
1017
  OutErr2 | OutErr3,
1002
- OutElem1 | OutElem2 | OutElem,
1003
- OutDone2 | OutDone3
1018
+ InErr & InErr1 & InErr2,
1019
+ OutDone2 | OutDone3,
1020
+ InDone & InDone1 & InDone2,
1021
+ Env1 | Env2 | Env
1004
1022
  >
1005
1023
  <
1006
- Env,
1007
- InErr,
1024
+ OutElem,
1008
1025
  InElem,
1026
+ OutErr,
1027
+ InErr,
1028
+ OutDone,
1009
1029
  InDone,
1010
- OutElem,
1011
- Env1,
1012
- Env2,
1013
- InErr1,
1014
- InErr2,
1030
+ Env,
1031
+ OutElem1,
1015
1032
  InElem1,
1016
- InElem2,
1017
- InDone1,
1018
- InDone2,
1019
- OutErr,
1020
1033
  OutErr2,
1021
- OutErr3,
1022
- OutElem1,
1023
- OutElem2,
1024
- OutDone,
1034
+ InErr1,
1025
1035
  OutDone2,
1026
- OutDone3
1036
+ InDone1,
1037
+ Env1,
1038
+ OutElem2,
1039
+ InElem2,
1040
+ OutErr3,
1041
+ InErr2,
1042
+ OutDone3,
1043
+ InDone2,
1044
+ Env2
1027
1045
  >(
1028
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1046
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1029
1047
  options: {
1030
1048
  readonly onFailure: (
1031
1049
  c: Cause.Cause<OutErr>
1032
- ) => Channel<Env1, InErr1, InElem1, InDone1, OutErr2, OutElem1, OutDone2>
1033
- readonly onSuccess: (o: OutDone) => Channel<Env2, InErr2, InElem2, InDone2, OutErr3, OutElem2, OutDone3>
1050
+ ) => Channel<OutElem1, InElem1, OutErr2, InErr1, OutDone2, InDone1, Env1>
1051
+ readonly onSuccess: (o: OutDone) => Channel<OutElem2, InElem2, OutErr3, InErr2, OutDone3, InDone2, Env2>
1034
1052
  }
1035
1053
  ): Channel<
1036
- Env | Env1 | Env2,
1037
- InErr & InErr1 & InErr2,
1054
+ OutElem | OutElem1 | OutElem2,
1038
1055
  InElem & InElem1 & InElem2,
1039
- InDone & InDone1 & InDone2,
1040
1056
  OutErr2 | OutErr3,
1041
- OutElem | OutElem1 | OutElem2,
1042
- OutDone2 | OutDone3
1057
+ InErr & InErr1 & InErr2,
1058
+ OutDone2 | OutDone3,
1059
+ InDone & InDone1 & InDone2,
1060
+ Env | Env1 | Env2
1043
1061
  >
1044
1062
  } = core.foldCauseChannel
1045
1063
 
@@ -1049,9 +1067,9 @@ export const foldCauseChannel: {
1049
1067
  * @since 2.0.0
1050
1068
  * @category constructors
1051
1069
  */
1052
- export const fromEffect: <R, E, A>(
1053
- effect: Effect.Effect<R, E, A>
1054
- ) => Channel<R, unknown, unknown, unknown, E, never, A> = core.fromEffect
1070
+ export const fromEffect: <A, E, R>(
1071
+ effect: Effect.Effect<A, E, R>
1072
+ ) => Channel<never, unknown, E, unknown, A, unknown, R> = core.fromEffect
1055
1073
 
1056
1074
  /**
1057
1075
  * Constructs a channel from an `Either`.
@@ -1059,7 +1077,7 @@ export const fromEffect: <R, E, A>(
1059
1077
  * @since 2.0.0
1060
1078
  * @category constructors
1061
1079
  */
1062
- export const fromEither: <E, A>(either: Either.Either<E, A>) => Channel<never, unknown, unknown, unknown, E, never, A> =
1080
+ export const fromEither: <E, A>(either: Either.Either<E, A>) => Channel<never, unknown, E, unknown, A, unknown> =
1063
1081
  channel.fromEither
1064
1082
 
1065
1083
  /**
@@ -1070,7 +1088,7 @@ export const fromEither: <E, A>(either: Either.Either<E, A>) => Channel<never, u
1070
1088
  */
1071
1089
  export const fromInput: <Err, Elem, Done>(
1072
1090
  input: SingleProducerAsyncInput.AsyncInputConsumer<Err, Elem, Done>
1073
- ) => Channel<never, unknown, unknown, unknown, Err, Elem, Done> = channel.fromInput
1091
+ ) => Channel<Elem, unknown, Err, unknown, Done, unknown> = channel.fromInput
1074
1092
 
1075
1093
  /**
1076
1094
  * Construct a `Channel` from a `PubSub`.
@@ -1078,9 +1096,9 @@ export const fromInput: <Err, Elem, Done>(
1078
1096
  * @since 2.0.0
1079
1097
  * @category constructors
1080
1098
  */
1081
- export const fromPubSub: <Err, Done, Elem>(
1082
- pubsub: PubSub.PubSub<Either.Either<Exit.Exit<Err, Done>, Elem>>
1083
- ) => Channel<never, unknown, unknown, unknown, Err, Elem, Done> = channel.fromPubSub
1099
+ export const fromPubSub: <Done, Err, Elem>(
1100
+ pubsub: PubSub.PubSub<Either.Either<Exit.Exit<Done, Err>, Elem>>
1101
+ ) => Channel<Elem, unknown, Err, unknown, Done, unknown> = channel.fromPubSub
1084
1102
 
1085
1103
  /**
1086
1104
  * Construct a `Channel` from a `PubSub` within a scoped effect.
@@ -1088,10 +1106,9 @@ export const fromPubSub: <Err, Done, Elem>(
1088
1106
  * @since 2.0.0
1089
1107
  * @category constructors
1090
1108
  */
1091
- export const fromPubSubScoped: <Err, Done, Elem>(
1092
- pubsub: PubSub.PubSub<Either.Either<Exit.Exit<Err, Done>, Elem>>
1093
- ) => Effect.Effect<Scope.Scope, never, Channel<never, unknown, unknown, unknown, Err, Elem, Done>> =
1094
- channel.fromPubSubScoped
1109
+ export const fromPubSubScoped: <Done, Err, Elem>(
1110
+ pubsub: PubSub.PubSub<Either.Either<Exit.Exit<Done, Err>, Elem>>
1111
+ ) => Effect.Effect<Channel<Elem, unknown, Err, unknown, Done, unknown>, never, Scope.Scope> = channel.fromPubSubScoped
1095
1112
 
1096
1113
  /**
1097
1114
  * Construct a `Channel` from an `Option`.
@@ -1101,7 +1118,7 @@ export const fromPubSubScoped: <Err, Done, Elem>(
1101
1118
  */
1102
1119
  export const fromOption: <A>(
1103
1120
  option: Option.Option<A>
1104
- ) => Channel<never, unknown, unknown, unknown, Option.Option<never>, never, A> = channel.fromOption
1121
+ ) => Channel<never, unknown, Option.Option<never>, unknown, A, unknown> = channel.fromOption
1105
1122
 
1106
1123
  /**
1107
1124
  * Construct a `Channel` from a `Queue`.
@@ -1109,15 +1126,15 @@ export const fromOption: <A>(
1109
1126
  * @since 2.0.0
1110
1127
  * @category constructors
1111
1128
  */
1112
- export const fromQueue: <Err, Elem, Done>(
1113
- queue: Queue.Dequeue<Either.Either<Exit.Exit<Err, Done>, Elem>>
1114
- ) => Channel<never, unknown, unknown, unknown, Err, Elem, Done> = channel.fromQueue
1129
+ export const fromQueue: <Done, Err, Elem>(
1130
+ queue: Queue.Dequeue<Either.Either<Exit.Exit<Done, Err>, Elem>>
1131
+ ) => Channel<Elem, unknown, Err, unknown, Done, unknown> = channel.fromQueue
1115
1132
 
1116
1133
  /**
1117
1134
  * @since 2.0.0
1118
1135
  * @category constructors
1119
1136
  */
1120
- export const identity: <Err, Elem, Done>() => Channel<never, Err, Elem, Done, Err, Elem, Done> = channel.identityChannel
1137
+ export const identity: <Elem, Err, Done>() => Channel<Elem, Elem, Err, Err, Done, Done> = channel.identityChannel
1121
1138
 
1122
1139
  /**
1123
1140
  * Returns a new channel, which is the same as this one, except it will be
@@ -1132,15 +1149,15 @@ export const identity: <Err, Elem, Done>() => Channel<never, Err, Elem, Done, Er
1132
1149
  * @category utils
1133
1150
  */
1134
1151
  export const interruptWhen: {
1135
- <Env1, OutErr1, OutDone1>(
1136
- effect: Effect.Effect<Env1, OutErr1, OutDone1>
1137
- ): <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
1138
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1139
- ) => Channel<Env1 | Env, InErr, InElem, InDone, OutErr1 | OutErr, OutElem, OutDone1 | OutDone>
1140
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env1, OutErr1, OutDone1>(
1141
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1142
- effect: Effect.Effect<Env1, OutErr1, OutDone1>
1143
- ): Channel<Env | Env1, InErr, InElem, InDone, OutErr | OutErr1, OutElem, OutDone | OutDone1>
1152
+ <OutDone1, OutErr1, Env1>(
1153
+ effect: Effect.Effect<OutDone1, OutErr1, Env1>
1154
+ ): <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
1155
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1156
+ ) => Channel<OutElem, InElem, OutErr1 | OutErr, InErr, OutDone1 | OutDone, InDone, Env1 | Env>
1157
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutDone1, OutErr1, Env1>(
1158
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1159
+ effect: Effect.Effect<OutDone1, OutErr1, Env1>
1160
+ ): Channel<OutElem, InElem, OutErr | OutErr1, InErr, OutDone | OutDone1, InDone, Env | Env1>
1144
1161
  } = channel.interruptWhen
1145
1162
 
1146
1163
  /**
@@ -1155,15 +1172,15 @@ export const interruptWhen: {
1155
1172
  * @category utils
1156
1173
  */
1157
1174
  export const interruptWhenDeferred: {
1158
- <OutErr1, OutDone1>(
1159
- deferred: Deferred.Deferred<OutErr1, OutDone1>
1160
- ): <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
1161
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1162
- ) => Channel<Env, InErr, InElem, InDone, OutErr1 | OutErr, OutElem, OutDone1 | OutDone>
1163
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, OutErr1, OutDone1>(
1164
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1165
- deferred: Deferred.Deferred<OutErr1, OutDone1>
1166
- ): Channel<Env, InErr, InElem, InDone, OutErr | OutErr1, OutElem, OutDone | OutDone1>
1175
+ <OutDone1, OutErr1>(
1176
+ deferred: Deferred.Deferred<OutDone1, OutErr1>
1177
+ ): <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
1178
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1179
+ ) => Channel<OutElem, InElem, OutErr1 | OutErr, InErr, OutDone1 | OutDone, InDone, Env>
1180
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutDone1, OutErr1>(
1181
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1182
+ deferred: Deferred.Deferred<OutDone1, OutErr1>
1183
+ ): Channel<OutElem, InElem, OutErr | OutErr1, InErr, OutDone | OutDone1, InDone, Env>
1167
1184
  } = channel.interruptWhenDeferred
1168
1185
 
1169
1186
  /**
@@ -1177,13 +1194,13 @@ export const interruptWhenDeferred: {
1177
1194
  export const map: {
1178
1195
  <OutDone, OutDone2>(
1179
1196
  f: (out: OutDone) => OutDone2
1180
- ): <Env, InErr, InElem, InDone, OutErr, OutElem>(
1181
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1182
- ) => Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone2>
1183
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, OutDone2>(
1184
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1197
+ ): <OutElem, InElem, OutErr, InErr, InDone, Env>(
1198
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1199
+ ) => Channel<OutElem, InElem, OutErr, InErr, OutDone2, InDone, Env>
1200
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutDone2>(
1201
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1185
1202
  f: (out: OutDone) => OutDone2
1186
- ): Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone2>
1203
+ ): Channel<OutElem, InElem, OutErr, InErr, OutDone2, InDone, Env>
1187
1204
  } = channel.map
1188
1205
 
1189
1206
  /**
@@ -1195,15 +1212,15 @@ export const map: {
1195
1212
  * @category mapping
1196
1213
  */
1197
1214
  export const mapEffect: {
1198
- <Env1, OutErr1, OutDone, OutDone1>(
1199
- f: (o: OutDone) => Effect.Effect<Env1, OutErr1, OutDone1>
1200
- ): <Env, InErr, InElem, InDone, OutErr, OutElem>(
1201
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1202
- ) => Channel<Env1 | Env, InErr, InElem, InDone, OutErr1 | OutErr, OutElem, OutDone1>
1203
- <Env, InErr, InElem, InDone, OutErr, OutElem, Env1, OutErr1, OutDone, OutDone1>(
1204
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1205
- f: (o: OutDone) => Effect.Effect<Env1, OutErr1, OutDone1>
1206
- ): Channel<Env | Env1, InErr, InElem, InDone, OutErr | OutErr1, OutElem, OutDone1>
1215
+ <OutDone, OutDone1, OutErr1, Env1>(
1216
+ f: (o: OutDone) => Effect.Effect<OutDone1, OutErr1, Env1>
1217
+ ): <OutElem, InElem, OutErr, InErr, InDone, Env>(
1218
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1219
+ ) => Channel<OutElem, InElem, OutErr1 | OutErr, InErr, OutDone1, InDone, Env1 | Env>
1220
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutDone1, OutErr1, Env1>(
1221
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1222
+ f: (o: OutDone) => Effect.Effect<OutDone1, OutErr1, Env1>
1223
+ ): Channel<OutElem, InElem, OutErr | OutErr1, InErr, OutDone1, InDone, Env | Env1>
1207
1224
  } = channel.mapEffect
1208
1225
 
1209
1226
  /**
@@ -1217,13 +1234,13 @@ export const mapEffect: {
1217
1234
  export const mapError: {
1218
1235
  <OutErr, OutErr2>(
1219
1236
  f: (err: OutErr) => OutErr2
1220
- ): <Env, InErr, InElem, InDone, OutElem, OutDone>(
1221
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1222
- ) => Channel<Env, InErr, InElem, InDone, OutErr2, OutElem, OutDone>
1223
- <Env, InErr, InElem, InDone, OutElem, OutDone, OutErr, OutErr2>(
1224
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1237
+ ): <OutElem, InElem, InErr, OutDone, InDone, Env>(
1238
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1239
+ ) => Channel<OutElem, InElem, OutErr2, InErr, OutDone, InDone, Env>
1240
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutErr2>(
1241
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1225
1242
  f: (err: OutErr) => OutErr2
1226
- ): Channel<Env, InErr, InElem, InDone, OutErr2, OutElem, OutDone>
1243
+ ): Channel<OutElem, InElem, OutErr2, InErr, OutDone, InDone, Env>
1227
1244
  } = channel.mapError
1228
1245
 
1229
1246
  /**
@@ -1236,13 +1253,13 @@ export const mapError: {
1236
1253
  export const mapErrorCause: {
1237
1254
  <OutErr, OutErr2>(
1238
1255
  f: (cause: Cause.Cause<OutErr>) => Cause.Cause<OutErr2>
1239
- ): <Env, InErr, InElem, InDone, OutElem, OutDone>(
1240
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1241
- ) => Channel<Env, InErr, InElem, InDone, OutErr2, OutElem, OutDone>
1242
- <Env, InErr, InElem, InDone, OutElem, OutDone, OutErr, OutErr2>(
1243
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1256
+ ): <OutElem, InElem, InErr, OutDone, InDone, Env>(
1257
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1258
+ ) => Channel<OutElem, InElem, OutErr2, InErr, OutDone, InDone, Env>
1259
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutErr2>(
1260
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1244
1261
  f: (cause: Cause.Cause<OutErr>) => Cause.Cause<OutErr2>
1245
- ): Channel<Env, InErr, InElem, InDone, OutErr2, OutElem, OutDone>
1262
+ ): Channel<OutElem, InElem, OutErr2, InErr, OutDone, InDone, Env>
1246
1263
  } = channel.mapErrorCause
1247
1264
 
1248
1265
  /**
@@ -1254,13 +1271,13 @@ export const mapErrorCause: {
1254
1271
  export const mapOut: {
1255
1272
  <OutElem, OutElem2>(
1256
1273
  f: (o: OutElem) => OutElem2
1257
- ): <Env, InErr, InElem, InDone, OutErr, OutDone>(
1258
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1259
- ) => Channel<Env, InErr, InElem, InDone, OutErr, OutElem2, OutDone>
1260
- <Env, InErr, InElem, InDone, OutErr, OutDone, OutElem, OutElem2>(
1261
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1274
+ ): <InElem, OutErr, InErr, OutDone, InDone, Env>(
1275
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1276
+ ) => Channel<OutElem2, InElem, OutErr, InErr, OutDone, InDone, Env>
1277
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem2>(
1278
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1262
1279
  f: (o: OutElem) => OutElem2
1263
- ): Channel<Env, InErr, InElem, InDone, OutErr, OutElem2, OutDone>
1280
+ ): Channel<OutElem2, InElem, OutErr, InErr, OutDone, InDone, Env>
1264
1281
  } = channel.mapOut
1265
1282
 
1266
1283
  /**
@@ -1271,15 +1288,15 @@ export const mapOut: {
1271
1288
  * @category mapping
1272
1289
  */
1273
1290
  export const mapOutEffect: {
1274
- <OutElem, Env1, OutErr1, OutElem1>(
1275
- f: (o: OutElem) => Effect.Effect<Env1, OutErr1, OutElem1>
1276
- ): <Env, InErr, InElem, InDone, OutErr, OutDone>(
1277
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1278
- ) => Channel<Env1 | Env, InErr, InElem, InDone, OutErr1 | OutErr, OutElem1, OutDone>
1279
- <Env, InErr, InElem, InDone, OutErr, OutDone, OutElem, Env1, OutErr1, OutElem1>(
1280
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1281
- f: (o: OutElem) => Effect.Effect<Env1, OutErr1, OutElem1>
1282
- ): Channel<Env | Env1, InErr, InElem, InDone, OutErr | OutErr1, OutElem1, OutDone>
1291
+ <OutElem, OutElem1, OutErr1, Env1>(
1292
+ f: (o: OutElem) => Effect.Effect<OutElem1, OutErr1, Env1>
1293
+ ): <InElem, OutErr, InErr, OutDone, InDone, Env>(
1294
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1295
+ ) => Channel<OutElem1, InElem, OutErr1 | OutErr, InErr, OutDone, InDone, Env1 | Env>
1296
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, OutErr1, Env1>(
1297
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1298
+ f: (o: OutElem) => Effect.Effect<OutElem1, OutErr1, Env1>
1299
+ ): Channel<OutElem1, InElem, OutErr | OutErr1, InErr, OutDone, InDone, Env | Env1>
1283
1300
  } = channel.mapOutEffect
1284
1301
 
1285
1302
  /**
@@ -1291,17 +1308,17 @@ export const mapOutEffect: {
1291
1308
  * @category mapping
1292
1309
  */
1293
1310
  export const mapOutEffectPar: {
1294
- <OutElem, Env1, OutErr1, OutElem1>(
1295
- f: (o: OutElem) => Effect.Effect<Env1, OutErr1, OutElem1>,
1311
+ <OutElem, OutElem1, OutErr1, Env1>(
1312
+ f: (o: OutElem) => Effect.Effect<OutElem1, OutErr1, Env1>,
1296
1313
  n: number
1297
- ): <Env, InErr, InElem, InDone, OutErr, OutDone>(
1298
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1299
- ) => Channel<Env1 | Env, InErr, InElem, InDone, OutErr1 | OutErr, OutElem1, OutDone>
1300
- <Env, InErr, InElem, InDone, OutErr, OutDone, OutElem, Env1, OutErr1, OutElem1>(
1301
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1302
- f: (o: OutElem) => Effect.Effect<Env1, OutErr1, OutElem1>,
1314
+ ): <InElem, OutErr, InErr, OutDone, InDone, Env>(
1315
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1316
+ ) => Channel<OutElem1, InElem, OutErr1 | OutErr, InErr, OutDone, InDone, Env1 | Env>
1317
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, OutErr1, Env1>(
1318
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1319
+ f: (o: OutElem) => Effect.Effect<OutElem1, OutErr1, Env1>,
1303
1320
  n: number
1304
- ): Channel<Env | Env1, InErr, InElem, InDone, OutErr | OutErr1, OutElem1, OutDone>
1321
+ ): Channel<OutElem1, InElem, OutErr | OutErr1, InErr, OutDone, InDone, Env | Env1>
1305
1322
  } = channel.mapOutEffectPar
1306
1323
 
1307
1324
  /**
@@ -1314,34 +1331,34 @@ export const mergeAll: (
1314
1331
  readonly bufferSize?: number | undefined
1315
1332
  readonly mergeStrategy?: MergeStrategy.MergeStrategy | undefined
1316
1333
  }
1317
- ) => <Env, Env1, InErr, InErr1, InElem, InElem1, InDone, InDone1, OutErr, OutErr1, OutElem>(
1334
+ ) => <OutElem, InElem1, OutErr1, InErr1, InDone1, Env1, InElem, OutErr, InErr, InDone, Env>(
1318
1335
  channels: Channel<
1319
- Env,
1320
- InErr,
1336
+ Channel<OutElem, InElem1, OutErr1, InErr1, unknown, InDone1, Env1>,
1321
1337
  InElem,
1322
- InDone,
1323
1338
  OutErr,
1324
- Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem, unknown>,
1325
- unknown
1339
+ InErr,
1340
+ unknown,
1341
+ InDone,
1342
+ Env
1326
1343
  >
1327
- ) => Channel<Env | Env1, InErr & InErr1, InElem & InElem1, InDone & InDone1, OutErr | OutErr1, OutElem, unknown> =
1344
+ ) => Channel<OutElem, InElem & InElem1, OutErr1 | OutErr, InErr & InErr1, unknown, InDone & InDone1, Env1 | Env> =
1328
1345
  channel.mergeAll
1329
1346
 
1330
1347
  /**
1331
1348
  * @since 2.0.0
1332
1349
  * @category utils
1333
1350
  */
1334
- export const mergeAllUnbounded: <Env, Env1, InErr, InErr1, InElem, InElem1, InDone, InDone1, OutErr, OutErr1, OutElem>(
1351
+ export const mergeAllUnbounded: <OutElem, InElem1, OutErr1, InErr1, InDone1, Env1, InElem, OutErr, InErr, InDone, Env>(
1335
1352
  channels: Channel<
1336
- Env,
1337
- InErr,
1353
+ Channel<OutElem, InElem1, OutErr1, InErr1, unknown, InDone1, Env1>,
1338
1354
  InElem,
1339
- InDone,
1340
1355
  OutErr,
1341
- Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem, unknown>,
1342
- unknown
1356
+ InErr,
1357
+ unknown,
1358
+ InDone,
1359
+ Env
1343
1360
  >
1344
- ) => Channel<Env | Env1, InErr & InErr1, InElem & InElem1, InDone & InDone1, OutErr | OutErr1, OutElem, unknown> =
1361
+ ) => Channel<OutElem, InElem & InElem1, OutErr1 | OutErr, InErr & InErr1, unknown, InDone & InDone1, Env1 | Env> =
1345
1362
  channel.mergeAllUnbounded
1346
1363
 
1347
1364
  /**
@@ -1349,30 +1366,30 @@ export const mergeAllUnbounded: <Env, Env1, InErr, InErr1, InElem, InElem1, InDo
1349
1366
  * @category utils
1350
1367
  */
1351
1368
  export const mergeAllUnboundedWith: <
1352
- Env,
1353
- Env1,
1354
- InErr,
1355
- InErr1,
1356
- InElem,
1369
+ OutElem,
1357
1370
  InElem1,
1358
- InDone,
1371
+ OutErr1,
1372
+ InErr1,
1373
+ OutDone,
1359
1374
  InDone1,
1375
+ Env1,
1376
+ InElem,
1360
1377
  OutErr,
1361
- OutErr1,
1362
- OutElem,
1363
- OutDone
1378
+ InErr,
1379
+ InDone,
1380
+ Env
1364
1381
  >(
1365
1382
  channels: Channel<
1366
- Env,
1367
- InErr,
1383
+ Channel<OutElem, InElem1, OutErr1, InErr1, OutDone, InDone1, Env1>,
1368
1384
  InElem,
1369
- InDone,
1370
1385
  OutErr,
1371
- Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem, OutDone>,
1372
- OutDone
1386
+ InErr,
1387
+ OutDone,
1388
+ InDone,
1389
+ Env
1373
1390
  >,
1374
1391
  f: (o1: OutDone, o2: OutDone) => OutDone
1375
- ) => Channel<Env | Env1, InErr & InErr1, InElem & InElem1, InDone & InDone1, OutErr | OutErr1, OutElem, OutDone> =
1392
+ ) => Channel<OutElem, InElem & InElem1, OutErr1 | OutErr, InErr & InErr1, OutDone, InDone & InDone1, Env1 | Env> =
1376
1393
  channel.mergeAllUnboundedWith
1377
1394
 
1378
1395
  /**
@@ -1385,18 +1402,18 @@ export const mergeAllWith: (
1385
1402
  readonly bufferSize?: number | undefined
1386
1403
  readonly mergeStrategy?: MergeStrategy.MergeStrategy | undefined
1387
1404
  }
1388
- ) => <Env, Env1, InErr, InErr1, InElem, InElem1, InDone, InDone1, OutErr, OutErr1, OutElem, OutDone>(
1405
+ ) => <OutElem, InElem1, OutErr1, InErr1, OutDone, InDone1, Env1, InElem, OutErr, InErr, InDone, Env>(
1389
1406
  channels: Channel<
1390
- Env,
1391
- InErr,
1407
+ Channel<OutElem, InElem1, OutErr1, InErr1, OutDone, InDone1, Env1>,
1392
1408
  InElem,
1393
- InDone,
1394
1409
  OutErr,
1395
- Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem, OutDone>,
1396
- OutDone
1410
+ InErr,
1411
+ OutDone,
1412
+ InDone,
1413
+ Env
1397
1414
  >,
1398
1415
  f: (o1: OutDone, o2: OutDone) => OutDone
1399
- ) => Channel<Env | Env1, InErr & InErr1, InElem & InElem1, InDone & InDone1, OutErr | OutErr1, OutElem, OutDone> =
1416
+ ) => Channel<OutElem, InElem & InElem1, OutErr1 | OutErr, InErr & InErr1, OutDone, InDone & InDone1, Env1 | Env> =
1400
1417
  channel.mergeAllWith
1401
1418
 
1402
1419
  /**
@@ -1411,25 +1428,25 @@ export const mergeAllWith: (
1411
1428
  * @category mapping
1412
1429
  */
1413
1430
  export const mergeMap: {
1414
- <OutElem, Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, Z>(
1415
- f: (outElem: OutElem) => Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, Z>,
1431
+ <OutElem, OutElem1, InElem1, OutErr1, InErr1, Z, InDone1, Env1>(
1432
+ f: (outElem: OutElem) => Channel<OutElem1, InElem1, OutErr1, InErr1, Z, InDone1, Env1>,
1416
1433
  options: {
1417
1434
  readonly concurrency: number | "unbounded"
1418
1435
  readonly bufferSize?: number | undefined
1419
1436
  readonly mergeStrategy?: MergeStrategy.MergeStrategy | undefined
1420
1437
  }
1421
- ): <Env, InErr, InElem, InDone, OutErr, OutDone>(
1422
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1423
- ) => Channel<Env1 | Env, InErr & InErr1, InElem & InElem1, InDone & InDone1, OutErr1 | OutErr, OutElem1, unknown>
1424
- <Env, InErr, InElem, InDone, OutErr, OutDone, OutElem, Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, Z>(
1425
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1426
- f: (outElem: OutElem) => Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, Z>,
1438
+ ): <InElem, OutErr, InErr, OutDone, InDone, Env>(
1439
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1440
+ ) => Channel<OutElem1, InElem & InElem1, OutErr1 | OutErr, InErr & InErr1, unknown, InDone & InDone1, Env1 | Env>
1441
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, InElem1, OutErr1, InErr1, Z, InDone1, Env1>(
1442
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1443
+ f: (outElem: OutElem) => Channel<OutElem1, InElem1, OutErr1, InErr1, Z, InDone1, Env1>,
1427
1444
  options: {
1428
1445
  readonly concurrency: number | "unbounded"
1429
1446
  readonly bufferSize?: number | undefined
1430
1447
  readonly mergeStrategy?: MergeStrategy.MergeStrategy | undefined
1431
1448
  }
1432
- ): Channel<Env | Env1, InErr & InErr1, InElem & InElem1, InDone & InDone1, OutErr | OutErr1, OutElem1, unknown>
1449
+ ): Channel<OutElem1, InElem & InElem1, OutErr | OutErr1, InErr & InErr1, unknown, InDone & InDone1, Env | Env1>
1433
1450
  } = channel.mergeMap
1434
1451
 
1435
1452
  /**
@@ -1442,29 +1459,29 @@ export const mergeMap: {
1442
1459
  export const mergeOut: {
1443
1460
  (
1444
1461
  n: number
1445
- ): <Env, Env1, InErr, InErr1, InElem, InElem1, InDone, InDone1, OutErr, OutErr1, OutElem1, OutDone, Z>(
1462
+ ): <OutElem1, InElem1, OutErr1, InErr1, Z, InDone1, Env1, InElem, OutErr, InErr, OutDone, InDone, Env>(
1446
1463
  self: Channel<
1447
- Env,
1448
- InErr,
1464
+ Channel<OutElem1, InElem1, OutErr1, InErr1, Z, InDone1, Env1>,
1449
1465
  InElem,
1450
- InDone,
1451
1466
  OutErr,
1452
- Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, Z>,
1453
- OutDone
1467
+ InErr,
1468
+ OutDone,
1469
+ InDone,
1470
+ Env
1454
1471
  >
1455
- ) => Channel<Env | Env1, InErr & InErr1, InElem & InElem1, InDone & InDone1, OutErr | OutErr1, OutElem1, unknown>
1456
- <Env, Env1, InErr, InErr1, InElem, InElem1, InDone, InDone1, OutErr, OutErr1, OutElem1, OutDone, Z>(
1472
+ ) => Channel<OutElem1, InElem & InElem1, OutErr1 | OutErr, InErr & InErr1, unknown, InDone & InDone1, Env1 | Env>
1473
+ <OutElem1, InElem1, OutErr1, InErr1, Z, InDone1, Env1, InElem, OutErr, InErr, OutDone, InDone, Env>(
1457
1474
  self: Channel<
1458
- Env,
1459
- InErr,
1475
+ Channel<OutElem1, InElem1, OutErr1, InErr1, Z, InDone1, Env1>,
1460
1476
  InElem,
1461
- InDone,
1462
1477
  OutErr,
1463
- Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, Z>,
1464
- OutDone
1478
+ InErr,
1479
+ OutDone,
1480
+ InDone,
1481
+ Env
1465
1482
  >,
1466
1483
  n: number
1467
- ): Channel<Env | Env1, InErr & InErr1, InElem & InElem1, InDone & InDone1, OutErr | OutErr1, OutElem1, unknown>
1484
+ ): Channel<OutElem1, InElem & InElem1, OutErr1 | OutErr, InErr & InErr1, unknown, InDone & InDone1, Env1 | Env>
1468
1485
  } = channel.mergeOut
1469
1486
 
1470
1487
  /**
@@ -1480,30 +1497,30 @@ export const mergeOutWith: {
1480
1497
  <OutDone1>(
1481
1498
  n: number,
1482
1499
  f: (o1: OutDone1, o2: OutDone1) => OutDone1
1483
- ): <Env, Env1, InErr, InErr1, InElem, InElem1, InDone, InDone1, OutErr, OutErr1, OutElem1>(
1500
+ ): <OutElem1, InElem1, OutErr1, InErr1, InDone1, Env1, InElem, OutErr, InErr, InDone, Env>(
1484
1501
  self: Channel<
1485
- Env,
1486
- InErr,
1502
+ Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>,
1487
1503
  InElem,
1488
- InDone,
1489
1504
  OutErr,
1490
- Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>,
1491
- OutDone1
1505
+ InErr,
1506
+ OutDone1,
1507
+ InDone,
1508
+ Env
1492
1509
  >
1493
- ) => Channel<Env | Env1, InErr & InErr1, InElem & InElem1, InDone & InDone1, OutErr | OutErr1, OutElem1, OutDone1>
1494
- <Env, Env1, InErr, InErr1, InElem, InElem1, InDone, InDone1, OutErr, OutErr1, OutElem1, OutDone1>(
1510
+ ) => Channel<OutElem1, InElem & InElem1, OutErr1 | OutErr, InErr & InErr1, OutDone1, InDone & InDone1, Env1 | Env>
1511
+ <OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1, InElem, OutErr, InErr, InDone, Env>(
1495
1512
  self: Channel<
1496
- Env,
1497
- InErr,
1513
+ Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>,
1498
1514
  InElem,
1499
- InDone,
1500
1515
  OutErr,
1501
- Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>,
1502
- OutDone1
1516
+ InErr,
1517
+ OutDone1,
1518
+ InDone,
1519
+ Env
1503
1520
  >,
1504
1521
  n: number,
1505
1522
  f: (o1: OutDone1, o2: OutDone1) => OutDone1
1506
- ): Channel<Env | Env1, InErr & InErr1, InElem & InElem1, InDone & InDone1, OutErr | OutErr1, OutElem1, OutDone1>
1523
+ ): Channel<OutElem1, InElem & InElem1, OutErr1 | OutErr, InErr & InErr1, OutDone1, InDone & InDone1, Env1 | Env>
1507
1524
  } = channel.mergeOutWith
1508
1525
 
1509
1526
  /**
@@ -1516,65 +1533,65 @@ export const mergeOutWith: {
1516
1533
  * @category utils
1517
1534
  */
1518
1535
  export const mergeWith: {
1519
- <Env1, InErr1, InElem1, InDone1, OutErr, OutErr1, OutErr2, OutErr3, OutElem1, OutDone, OutDone1, OutDone2, OutDone3>(
1536
+ <OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1, OutDone, OutErr, OutErr2, OutDone2, OutErr3, OutDone3>(
1520
1537
  options: {
1521
- readonly other: Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>
1538
+ readonly other: Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>
1522
1539
  readonly onSelfDone: (
1523
- exit: Exit.Exit<OutErr, OutDone>
1540
+ exit: Exit.Exit<OutDone, OutErr>
1524
1541
  ) => MergeDecision.MergeDecision<Env1, OutErr1, OutDone1, OutErr2, OutDone2>
1525
1542
  readonly onOtherDone: (
1526
- ex: Exit.Exit<OutErr1, OutDone1>
1543
+ ex: Exit.Exit<OutDone1, OutErr1>
1527
1544
  ) => MergeDecision.MergeDecision<Env1, OutErr, OutDone, OutErr3, OutDone3>
1528
1545
  }
1529
1546
  ): <Env, InErr, InElem, InDone, OutElem>(
1530
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1547
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1531
1548
  ) => Channel<
1532
- Env1 | Env,
1533
- InErr & InErr1,
1549
+ OutElem1 | OutElem,
1534
1550
  InElem & InElem1,
1535
- InDone & InDone1,
1536
1551
  OutErr2 | OutErr3,
1537
- OutElem1 | OutElem,
1538
- OutDone2 | OutDone3
1552
+ InErr & InErr1,
1553
+ OutDone2 | OutDone3,
1554
+ InDone & InDone1,
1555
+ Env1 | Env
1539
1556
  >
1540
1557
  <
1541
- Env,
1542
- InErr,
1558
+ OutElem,
1543
1559
  InElem,
1560
+ OutErr,
1561
+ InErr,
1562
+ OutDone,
1544
1563
  InDone,
1545
- OutElem,
1546
- Env1,
1547
- InErr1,
1564
+ Env,
1565
+ OutElem1,
1548
1566
  InElem1,
1549
- InDone1,
1550
- OutErr,
1551
1567
  OutErr1,
1552
- OutErr2,
1553
- OutErr3,
1554
- OutElem1,
1555
- OutDone,
1568
+ InErr1,
1556
1569
  OutDone1,
1570
+ InDone1,
1571
+ Env1,
1572
+ OutErr2,
1557
1573
  OutDone2,
1574
+ OutErr3,
1558
1575
  OutDone3
1559
1576
  >(
1560
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1577
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1561
1578
  options: {
1562
- readonly other: Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>
1579
+ readonly other: Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>
1563
1580
  readonly onSelfDone: (
1564
- exit: Exit.Exit<OutErr, OutDone>
1581
+ exit: Exit.Exit<OutDone, OutErr>
1565
1582
  ) => MergeDecision.MergeDecision<Env1, OutErr1, OutDone1, OutErr2, OutDone2>
1566
1583
  readonly onOtherDone: (
1567
- ex: Exit.Exit<OutErr1, OutDone1>
1584
+ ex: Exit.Exit<OutDone1, OutErr1>
1568
1585
  ) => MergeDecision.MergeDecision<Env1, OutErr, OutDone, OutErr3, OutDone3>
1569
1586
  }
1570
1587
  ): Channel<
1571
- Env | Env1,
1572
- InErr & InErr1,
1588
+ OutElem | OutElem1,
1573
1589
  InElem & InElem1,
1574
- InDone & InDone1,
1575
1590
  OutErr2 | OutErr3,
1576
- OutElem | OutElem1,
1577
- OutDone2 | OutDone3
1591
+ InErr & InErr1,
1592
+ OutDone2 | OutDone3,
1593
+ InDone & InDone1,
1594
+ Env | Env1
1578
1595
  >
1579
1596
  } = channel.mergeWith
1580
1597
 
@@ -1584,7 +1601,7 @@ export const mergeWith: {
1584
1601
  * @since 2.0.0
1585
1602
  * @category constructors
1586
1603
  */
1587
- export const never: Channel<never, unknown, unknown, unknown, never, never, never> = channel.never
1604
+ export const never: Channel<never, unknown, never, unknown, never, unknown> = channel.never
1588
1605
 
1589
1606
  /**
1590
1607
  * Translates channel failure into death of the fiber, making all failures
@@ -1596,13 +1613,13 @@ export const never: Channel<never, unknown, unknown, unknown, never, never, neve
1596
1613
  export const orDie: {
1597
1614
  <E>(
1598
1615
  error: LazyArg<E>
1599
- ): <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
1600
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1601
- ) => Channel<Env, InErr, InElem, InDone, never, OutElem, OutDone>
1602
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, E>(
1603
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1616
+ ): <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
1617
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1618
+ ) => Channel<OutElem, InElem, never, InErr, OutDone, InDone, Env>
1619
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, E>(
1620
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1604
1621
  error: LazyArg<E>
1605
- ): Channel<Env, InErr, InElem, InDone, never, OutElem, OutDone>
1622
+ ): Channel<OutElem, InElem, never, InErr, OutDone, InDone, Env>
1606
1623
  } = channel.orDie
1607
1624
 
1608
1625
  /**
@@ -1615,13 +1632,13 @@ export const orDie: {
1615
1632
  export const orDieWith: {
1616
1633
  <OutErr>(
1617
1634
  f: (e: OutErr) => unknown
1618
- ): <Env, InErr, InElem, InDone, OutElem, OutDone>(
1619
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1620
- ) => Channel<Env, InErr, InElem, InDone, never, OutElem, OutDone>
1621
- <Env, InErr, InElem, InDone, OutElem, OutDone, OutErr>(
1622
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1635
+ ): <OutElem, InElem, InErr, OutDone, InDone, Env>(
1636
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1637
+ ) => Channel<OutElem, InElem, never, InErr, OutDone, InDone, Env>
1638
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
1639
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1623
1640
  f: (e: OutErr) => unknown
1624
- ): Channel<Env, InErr, InElem, InDone, never, OutElem, OutDone>
1641
+ ): Channel<OutElem, InElem, never, InErr, OutDone, InDone, Env>
1625
1642
  } = channel.orDieWith
1626
1643
 
1627
1644
  /**
@@ -1633,30 +1650,30 @@ export const orDieWith: {
1633
1650
  * @category error handling
1634
1651
  */
1635
1652
  export const orElse: {
1636
- <Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>(
1637
- that: LazyArg<Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>>
1638
- ): <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
1639
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1653
+ <OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
1654
+ that: LazyArg<Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>>
1655
+ ): <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
1656
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1640
1657
  ) => Channel<
1641
- Env1 | Env,
1642
- InErr & InErr1,
1658
+ OutElem1 | OutElem,
1643
1659
  InElem & InElem1,
1644
- InDone & InDone1,
1645
1660
  OutErr1,
1646
- OutElem1 | OutElem,
1647
- OutDone1 | OutDone
1661
+ InErr & InErr1,
1662
+ OutDone1 | OutDone,
1663
+ InDone & InDone1,
1664
+ Env1 | Env
1648
1665
  >
1649
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>(
1650
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1651
- that: LazyArg<Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>>
1666
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
1667
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1668
+ that: LazyArg<Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>>
1652
1669
  ): Channel<
1653
- Env | Env1,
1654
- InErr & InErr1,
1670
+ OutElem | OutElem1,
1655
1671
  InElem & InElem1,
1656
- InDone & InDone1,
1657
1672
  OutErr1,
1658
- OutElem | OutElem1,
1659
- OutDone | OutDone1
1673
+ InErr & InErr1,
1674
+ OutDone | OutDone1,
1675
+ InDone & InDone1,
1676
+ Env | Env1
1660
1677
  >
1661
1678
  } = channel.orElse
1662
1679
 
@@ -1670,15 +1687,15 @@ export const orElse: {
1670
1687
  * @category utils
1671
1688
  */
1672
1689
  export const pipeTo: {
1673
- <Env2, OutErr, OutElem, OutDone, OutErr2, OutElem2, OutDone2>(
1674
- that: Channel<Env2, OutErr, OutElem, OutDone, OutErr2, OutElem2, OutDone2>
1675
- ): <Env, InErr, InElem, InDone>(
1676
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1677
- ) => Channel<Env2 | Env, InErr, InElem, InDone, OutErr2, OutElem2, OutDone2>
1678
- <Env, InErr, InElem, InDone, Env2, OutErr, OutElem, OutDone, OutErr2, OutElem2, OutDone2>(
1679
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1680
- that: Channel<Env2, OutErr, OutElem, OutDone, OutErr2, OutElem2, OutDone2>
1681
- ): Channel<Env | Env2, InErr, InElem, InDone, OutErr2, OutElem2, OutDone2>
1690
+ <OutElem2, OutElem, OutErr2, OutErr, OutDone2, OutDone, Env2>(
1691
+ that: Channel<OutElem2, OutElem, OutErr2, OutErr, OutDone2, OutDone, Env2>
1692
+ ): <InElem, InErr, InDone, Env>(
1693
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1694
+ ) => Channel<OutElem2, InElem, OutErr2, InErr, OutDone2, InDone, Env2 | Env>
1695
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem2, OutErr2, OutDone2, Env2>(
1696
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1697
+ that: Channel<OutElem2, OutElem, OutErr2, OutErr, OutDone2, OutDone, Env2>
1698
+ ): Channel<OutElem2, InElem, OutErr2, InErr, OutDone2, InDone, Env | Env2>
1682
1699
  } = core.pipeTo
1683
1700
 
1684
1701
  /**
@@ -1690,15 +1707,15 @@ export const pipeTo: {
1690
1707
  * @category utils
1691
1708
  */
1692
1709
  export const pipeToOrFail: {
1693
- <Env2, OutElem, OutDone, OutErr2, OutElem2, OutDone2>(
1694
- that: Channel<Env2, never, OutElem, OutDone, OutErr2, OutElem2, OutDone2>
1695
- ): <Env, InErr, InElem, InDone, OutErr>(
1696
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1697
- ) => Channel<Env2 | Env, InErr, InElem, InDone, OutErr2 | OutErr, OutElem2, OutDone2>
1698
- <Env, InErr, InElem, InDone, OutErr, Env2, OutElem, OutDone, OutErr2, OutElem2, OutDone2>(
1699
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1700
- that: Channel<Env2, never, OutElem, OutDone, OutErr2, OutElem2, OutDone2>
1701
- ): Channel<Env | Env2, InErr, InElem, InDone, OutErr | OutErr2, OutElem2, OutDone2>
1710
+ <OutElem2, OutElem, OutErr2, OutDone2, OutDone, Env2>(
1711
+ that: Channel<OutElem2, OutElem, OutErr2, never, OutDone2, OutDone, Env2>
1712
+ ): <InElem, OutErr, InErr, InDone, Env>(
1713
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1714
+ ) => Channel<OutElem2, InElem, OutErr2 | OutErr, InErr, OutDone2, InDone, Env2 | Env>
1715
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem2, OutErr2, OutDone2, Env2>(
1716
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1717
+ that: Channel<OutElem2, OutElem, OutErr2, never, OutDone2, OutDone, Env2>
1718
+ ): Channel<OutElem2, InElem, OutErr | OutErr2, InErr, OutDone2, InDone, Env | Env2>
1702
1719
  } = channel.pipeToOrFail
1703
1720
 
1704
1721
  /**
@@ -1711,13 +1728,13 @@ export const pipeToOrFail: {
1711
1728
  export const provideContext: {
1712
1729
  <Env>(
1713
1730
  env: Context.Context<Env>
1714
- ): <InErr, InElem, InDone, OutErr, OutElem, OutDone>(
1715
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1716
- ) => Channel<never, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1717
- <InErr, InElem, InDone, OutErr, OutElem, OutDone, Env>(
1718
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1731
+ ): <OutElem, InElem, OutErr, InErr, OutDone, InDone>(
1732
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1733
+ ) => Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, never>
1734
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
1735
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1719
1736
  env: Context.Context<Env>
1720
- ): Channel<never, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1737
+ ): Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, never>
1721
1738
  } = core.provideContext
1722
1739
 
1723
1740
  /**
@@ -1727,15 +1744,15 @@ export const provideContext: {
1727
1744
  * @category context
1728
1745
  */
1729
1746
  export const provideLayer: {
1730
- <Env0, Env, OutErr2>(
1731
- layer: Layer.Layer<Env0, OutErr2, Env>
1732
- ): <InErr, InElem, InDone, OutErr, OutElem, OutDone>(
1733
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1734
- ) => Channel<Env0, InErr, InElem, InDone, OutErr2 | OutErr, OutElem, OutDone>
1735
- <InErr, InElem, InDone, OutErr, OutElem, OutDone, Env0, Env, OutErr2>(
1736
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1737
- layer: Layer.Layer<Env0, OutErr2, Env>
1738
- ): Channel<Env0, InErr, InElem, InDone, OutErr | OutErr2, OutElem, OutDone>
1747
+ <Env, OutErr2, Env0>(
1748
+ layer: Layer.Layer<Env, OutErr2, Env0>
1749
+ ): <OutElem, InElem, OutErr, InErr, OutDone, InDone>(
1750
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1751
+ ) => Channel<OutElem, InElem, OutErr2 | OutErr, InErr, OutDone, InDone, Env0>
1752
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutErr2, Env0>(
1753
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1754
+ layer: Layer.Layer<Env, OutErr2, Env0>
1755
+ ): Channel<OutElem, InElem, OutErr | OutErr2, InErr, OutDone, InDone, Env0>
1739
1756
  } = channel.provideLayer
1740
1757
 
1741
1758
  /**
@@ -1748,13 +1765,13 @@ export const provideLayer: {
1748
1765
  export const mapInputContext: {
1749
1766
  <Env0, Env>(
1750
1767
  f: (env: Context.Context<Env0>) => Context.Context<Env>
1751
- ): <InErr, InElem, InDone, OutErr, OutElem, OutDone>(
1752
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1753
- ) => Channel<Env0, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1754
- <InErr, InElem, InDone, OutErr, OutElem, OutDone, Env0, Env>(
1755
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1768
+ ): <OutElem, InElem, OutErr, InErr, OutDone, InDone>(
1769
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1770
+ ) => Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env0>
1771
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, Env0>(
1772
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1756
1773
  f: (env: Context.Context<Env0>) => Context.Context<Env>
1757
- ): Channel<Env0, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1774
+ ): Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env0>
1758
1775
  } = channel.mapInputContext
1759
1776
 
1760
1777
  /**
@@ -1765,15 +1782,15 @@ export const mapInputContext: {
1765
1782
  * @category context
1766
1783
  */
1767
1784
  export const provideSomeLayer: {
1768
- <Env0, Env2, OutErr2>(
1769
- layer: Layer.Layer<Env0, OutErr2, Env2>
1770
- ): <R, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
1771
- self: Channel<R, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1772
- ) => Channel<Env0 | Exclude<R, Env2>, InErr, InElem, InDone, OutErr2 | OutErr, OutElem, OutDone>
1773
- <R, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env0, Env2, OutErr2>(
1774
- self: Channel<R, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1775
- layer: Layer.Layer<Env0, OutErr2, Env2>
1776
- ): Channel<Env0 | Exclude<R, Env2>, InErr, InElem, InDone, OutErr | OutErr2, OutElem, OutDone>
1785
+ <Env2, OutErr2, Env0>(
1786
+ layer: Layer.Layer<Env2, OutErr2, Env0>
1787
+ ): <OutElem, InElem, OutErr, InErr, OutDone, InDone, R>(
1788
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, R>
1789
+ ) => Channel<OutElem, InElem, OutErr2 | OutErr, InErr, OutDone, InDone, Env0 | Exclude<R, Env2>>
1790
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, R, Env2, OutErr2, Env0>(
1791
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, R>,
1792
+ layer: Layer.Layer<Env2, OutErr2, Env0>
1793
+ ): Channel<OutElem, InElem, OutErr | OutErr2, InErr, OutDone, InDone, Env0 | Exclude<R, Env2>>
1777
1794
  } = channel.provideSomeLayer
1778
1795
 
1779
1796
  /**
@@ -1787,62 +1804,62 @@ export const provideService: {
1787
1804
  <T extends Context.Tag<any, any>>(
1788
1805
  tag: T,
1789
1806
  service: Context.Tag.Service<T>
1790
- ): <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
1791
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1792
- ) => Channel<Exclude<Env, Context.Tag.Identifier<T>>, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1793
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, T extends Context.Tag<any, any>>(
1794
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
1807
+ ): <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
1808
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1809
+ ) => Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Exclude<Env, Context.Tag.Identifier<T>>>
1810
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, T extends Context.Tag<any, any>>(
1811
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
1795
1812
  tag: T,
1796
1813
  service: Context.Tag.Service<T>
1797
- ): Channel<Exclude<Env, Context.Tag.Identifier<T>>, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1814
+ ): Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Exclude<Env, Context.Tag.Identifier<T>>>
1798
1815
  } = channel.provideService
1799
1816
 
1800
1817
  /**
1801
1818
  * @since 2.0.0
1802
1819
  * @category constructors
1803
1820
  */
1804
- export const read: <In>() => Channel<never, unknown, In, unknown, Option.Option<never>, never, In> = channel.read
1821
+ export const read: <In>() => Channel<never, In, Option.Option<never>, unknown, In, unknown> = channel.read
1805
1822
 
1806
1823
  /**
1807
1824
  * @since 2.0.0
1808
1825
  * @category constructors
1809
1826
  */
1810
- export const readOrFail: <In, E>(error: E) => Channel<never, unknown, In, unknown, E, never, In> = core.readOrFail
1827
+ export const readOrFail: <E, In = unknown>(error: E) => Channel<never, In, E, unknown, In, unknown> = core.readOrFail
1811
1828
 
1812
1829
  /**
1813
1830
  * @since 2.0.0
1814
1831
  * @category constructors
1815
1832
  */
1816
1833
  export const readWith: <
1817
- Env,
1818
- InErr,
1819
1834
  InElem,
1820
- InDone,
1821
- OutErr,
1822
1835
  OutElem,
1836
+ OutErr,
1837
+ InErr,
1823
1838
  OutDone,
1824
- Env2,
1825
- OutErr2,
1839
+ InDone,
1840
+ Env,
1826
1841
  OutElem2,
1842
+ OutErr2,
1827
1843
  OutDone2,
1828
- Env3,
1829
- OutErr3,
1844
+ Env2,
1830
1845
  OutElem3,
1831
- OutDone3
1846
+ OutErr3,
1847
+ OutDone3,
1848
+ Env3
1832
1849
  >(
1833
1850
  options: {
1834
- readonly onInput: (input: InElem) => Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1835
- readonly onFailure: (error: InErr) => Channel<Env2, InErr, InElem, InDone, OutErr2, OutElem2, OutDone2>
1836
- readonly onDone: (done: InDone) => Channel<Env3, InErr, InElem, InDone, OutErr3, OutElem3, OutDone3>
1851
+ readonly onInput: (input: InElem) => Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1852
+ readonly onFailure: (error: InErr) => Channel<OutElem2, InElem, OutErr2, InErr, OutDone2, InDone, Env2>
1853
+ readonly onDone: (done: InDone) => Channel<OutElem3, InElem, OutErr3, InErr, OutDone3, InDone, Env3>
1837
1854
  }
1838
1855
  ) => Channel<
1839
- Env | Env2 | Env3,
1840
- InErr,
1856
+ OutElem | OutElem2 | OutElem3,
1841
1857
  InElem,
1842
- InDone,
1843
1858
  OutErr | OutErr2 | OutErr3,
1844
- OutElem | OutElem2 | OutElem3,
1845
- OutDone | OutDone2 | OutDone3
1859
+ InErr,
1860
+ OutDone | OutDone2 | OutDone3,
1861
+ InDone,
1862
+ Env | Env2 | Env3
1846
1863
  > = core.readWith
1847
1864
 
1848
1865
  /**
@@ -1850,35 +1867,35 @@ export const readWith: <
1850
1867
  * @category constructors
1851
1868
  */
1852
1869
  export const readWithCause: <
1853
- Env,
1854
- InErr,
1855
1870
  InElem,
1856
- InDone,
1857
- OutErr,
1858
1871
  OutElem,
1872
+ OutErr,
1873
+ InErr,
1859
1874
  OutDone,
1860
- Env2,
1861
- OutErr2,
1875
+ InDone,
1876
+ Env,
1862
1877
  OutElem2,
1878
+ OutErr2,
1863
1879
  OutDone2,
1864
- Env3,
1865
- OutErr3,
1880
+ Env2,
1866
1881
  OutElem3,
1867
- OutDone3
1882
+ OutErr3,
1883
+ OutDone3,
1884
+ Env3
1868
1885
  >(
1869
1886
  options: {
1870
- readonly onInput: (input: InElem) => Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1871
- readonly onFailure: (cause: Cause.Cause<InErr>) => Channel<Env2, InErr, InElem, InDone, OutErr2, OutElem2, OutDone2>
1872
- readonly onDone: (done: InDone) => Channel<Env3, InErr, InElem, InDone, OutErr3, OutElem3, OutDone3>
1887
+ readonly onInput: (input: InElem) => Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1888
+ readonly onFailure: (cause: Cause.Cause<InErr>) => Channel<OutElem2, InElem, OutErr2, InErr, OutDone2, InDone, Env2>
1889
+ readonly onDone: (done: InDone) => Channel<OutElem3, InElem, OutErr3, InErr, OutDone3, InDone, Env3>
1873
1890
  }
1874
1891
  ) => Channel<
1875
- Env | Env2 | Env3,
1876
- InErr,
1892
+ OutElem | OutElem2 | OutElem3,
1877
1893
  InElem,
1878
- InDone,
1879
1894
  OutErr | OutErr2 | OutErr3,
1880
- OutElem | OutElem2 | OutElem3,
1881
- OutDone | OutDone2 | OutDone3
1895
+ InErr,
1896
+ OutDone | OutDone2 | OutDone3,
1897
+ InDone,
1898
+ Env | Env2 | Env3
1882
1899
  > = core.readWithCause
1883
1900
 
1884
1901
  /**
@@ -1887,9 +1904,9 @@ export const readWithCause: <
1887
1904
  * @since 2.0.0
1888
1905
  * @category utils
1889
1906
  */
1890
- export const repeated: <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
1891
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1892
- ) => Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone> = channel.repeated
1907
+ export const repeated: <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
1908
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
1909
+ ) => Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env> = channel.repeated
1893
1910
 
1894
1911
  /**
1895
1912
  * Runs a channel until the end is received.
@@ -1897,9 +1914,9 @@ export const repeated: <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
1897
1914
  * @since 2.0.0
1898
1915
  * @category destructors
1899
1916
  */
1900
- export const run: <Env, InErr, InDone, OutErr, OutDone>(
1901
- self: Channel<Env, InErr, unknown, InDone, OutErr, never, OutDone>
1902
- ) => Effect.Effect<Env, OutErr, OutDone> = channel.run
1917
+ export const run: <OutErr, InErr, OutDone, InDone, Env>(
1918
+ self: Channel<never, unknown, OutErr, InErr, OutDone, InDone, Env>
1919
+ ) => Effect.Effect<OutDone, OutErr, Env> = channel.run
1903
1920
 
1904
1921
  /**
1905
1922
  * Run the channel until it finishes with a done value or fails with an error
@@ -1910,9 +1927,9 @@ export const run: <Env, InErr, InDone, OutErr, OutDone>(
1910
1927
  * @since 2.0.0
1911
1928
  * @category destructors
1912
1929
  */
1913
- export const runCollect: <Env, InErr, InDone, OutErr, OutElem, OutDone>(
1914
- self: Channel<Env, InErr, unknown, InDone, OutErr, OutElem, OutDone>
1915
- ) => Effect.Effect<Env, OutErr, [Chunk.Chunk<OutElem>, OutDone]> = channel.runCollect
1930
+ export const runCollect: <OutElem, OutErr, InErr, OutDone, InDone, Env>(
1931
+ self: Channel<OutElem, unknown, OutErr, InErr, OutDone, InDone, Env>
1932
+ ) => Effect.Effect<[Chunk.Chunk<OutElem>, OutDone], OutErr, Env> = channel.runCollect
1916
1933
 
1917
1934
  /**
1918
1935
  * Runs a channel until the end is received.
@@ -1920,9 +1937,9 @@ export const runCollect: <Env, InErr, InDone, OutErr, OutElem, OutDone>(
1920
1937
  * @since 2.0.0
1921
1938
  * @category destructors
1922
1939
  */
1923
- export const runDrain: <Env, InErr, InDone, OutElem, OutErr, OutDone>(
1924
- self: Channel<Env, InErr, unknown, InDone, OutErr, OutElem, OutDone>
1925
- ) => Effect.Effect<Env, OutErr, OutDone> = channel.runDrain
1940
+ export const runDrain: <OutElem, OutErr, InErr, OutDone, InDone, Env>(
1941
+ self: Channel<OutElem, unknown, OutErr, InErr, OutDone, InDone, Env>
1942
+ ) => Effect.Effect<OutDone, OutErr, Env> = channel.runDrain
1926
1943
 
1927
1944
  /**
1928
1945
  * Use a scoped effect to emit an output element.
@@ -1930,9 +1947,9 @@ export const runDrain: <Env, InErr, InDone, OutElem, OutErr, OutDone>(
1930
1947
  * @since 2.0.0
1931
1948
  * @category constructors
1932
1949
  */
1933
- export const scoped: <R, E, A>(
1934
- effect: Effect.Effect<R, E, A>
1935
- ) => Channel<Exclude<R, Scope.Scope>, unknown, unknown, unknown, E, A, unknown> = channel.scoped
1950
+ export const scoped: <A, E, R>(
1951
+ effect: Effect.Effect<A, E, R>
1952
+ ) => Channel<A, unknown, E, unknown, unknown, unknown, Exclude<R, Scope.Scope>> = channel.scoped
1936
1953
 
1937
1954
  /**
1938
1955
  * Constructs a channel that succeeds immediately with the specified value.
@@ -1940,7 +1957,7 @@ export const scoped: <R, E, A>(
1940
1957
  * @since 2.0.0
1941
1958
  * @category constructors
1942
1959
  */
1943
- export const succeed: <A>(value: A) => Channel<never, unknown, unknown, unknown, never, never, A> = core.succeed
1960
+ export const succeed: <A>(value: A) => Channel<never, unknown, never, unknown, A, unknown> = core.succeed
1944
1961
 
1945
1962
  /**
1946
1963
  * Lazily constructs a channel from the given side effect.
@@ -1948,9 +1965,9 @@ export const succeed: <A>(value: A) => Channel<never, unknown, unknown, unknown,
1948
1965
  * @since 2.0.0
1949
1966
  * @category constructors
1950
1967
  */
1951
- export const suspend: <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
1952
- evaluate: LazyArg<Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>>
1953
- ) => Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone> = core.suspend
1968
+ export const suspend: <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
1969
+ evaluate: LazyArg<Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>>
1970
+ ) => Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env> = core.suspend
1954
1971
 
1955
1972
  /**
1956
1973
  * Constructs a channel that succeeds immediately with the specified lazy value.
@@ -1960,7 +1977,7 @@ export const suspend: <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
1960
1977
  */
1961
1978
  export const sync: <OutDone>(
1962
1979
  evaluate: LazyArg<OutDone>
1963
- ) => Channel<never, unknown, unknown, unknown, never, never, OutDone> = core.sync
1980
+ ) => Channel<never, unknown, never, unknown, OutDone, unknown> = core.sync
1964
1981
 
1965
1982
  /**
1966
1983
  * Converts a `Channel` to a `PubSub`.
@@ -1968,9 +1985,9 @@ export const sync: <OutDone>(
1968
1985
  * @since 2.0.0
1969
1986
  * @category destructors
1970
1987
  */
1971
- export const toPubSub: <Err, Done, Elem>(
1972
- pubsub: PubSub.PubSub<Either.Either<Exit.Exit<Err, Done>, Elem>>
1973
- ) => Channel<never, Err, Elem, Done, never, never, unknown> = channel.toPubSub
1988
+ export const toPubSub: <Done, Err, Elem>(
1989
+ pubsub: PubSub.PubSub<Either.Either<Exit.Exit<Done, Err>, Elem>>
1990
+ ) => Channel<never, Elem, never, Err, unknown, Done> = channel.toPubSub
1974
1991
 
1975
1992
  /**
1976
1993
  * Returns a scoped `Effect` that can be used to repeatedly pull elements from
@@ -1981,9 +1998,9 @@ export const toPubSub: <Err, Done, Elem>(
1981
1998
  * @since 2.0.0
1982
1999
  * @category destructors
1983
2000
  */
1984
- export const toPull: <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
1985
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
1986
- ) => Effect.Effect<Scope.Scope | Env, never, Effect.Effect<Env, OutErr, Either.Either<OutDone, OutElem>>> =
2001
+ export const toPull: <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
2002
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
2003
+ ) => Effect.Effect<Effect.Effect<Either.Either<OutDone, OutElem>, OutErr, Env>, never, Scope.Scope | Env> =
1987
2004
  channel.toPull
1988
2005
 
1989
2006
  /**
@@ -1992,18 +2009,18 @@ export const toPull: <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
1992
2009
  * @since 2.0.0
1993
2010
  * @category destructors
1994
2011
  */
1995
- export const toQueue: <Err, Done, Elem>(
1996
- queue: Queue.Enqueue<Either.Either<Exit.Exit<Err, Done>, Elem>>
1997
- ) => Channel<never, Err, Elem, Done, never, never, unknown> = channel.toQueue
2012
+ export const toQueue: <Done, Err, Elem>(
2013
+ queue: Queue.Enqueue<Either.Either<Exit.Exit<Done, Err>, Elem>>
2014
+ ) => Channel<never, Elem, never, Err, unknown, Done> = channel.toQueue
1998
2015
 
1999
2016
  /** Converts this channel to a `Sink`.
2000
2017
  *
2001
2018
  * @since 2.0.0
2002
2019
  * @category destructors
2003
2020
  */
2004
- export const toSink: <Env, InErr, InElem, OutErr, OutElem, OutDone>(
2005
- self: Channel<Env, InErr, Chunk.Chunk<InElem>, unknown, OutErr, Chunk.Chunk<OutElem>, OutDone>
2006
- ) => Sink.Sink<Env, OutErr, InElem, OutElem, OutDone> = sink.channelToSink
2021
+ export const toSink: <OutElem, InElem, OutErr, InErr, OutDone, Env>(
2022
+ self: Channel<Chunk.Chunk<OutElem>, Chunk.Chunk<InElem>, OutErr, InErr, OutDone, unknown, Env>
2023
+ ) => Sink.Sink<OutDone, InElem, OutElem, OutErr, Env> = sink.channelToSink
2007
2024
 
2008
2025
  /**
2009
2026
  * Converts this channel to a `Stream`.
@@ -2011,15 +2028,15 @@ export const toSink: <Env, InErr, InElem, OutErr, OutElem, OutDone>(
2011
2028
  * @since 2.0.0
2012
2029
  * @category destructors
2013
2030
  */
2014
- export const toStream: <Env, OutErr, OutElem, OutDone>(
2015
- self: Channel<Env, unknown, unknown, unknown, OutErr, Chunk.Chunk<OutElem>, OutDone>
2016
- ) => Stream.Stream<Env, OutErr, OutElem> = stream.channelToStream
2031
+ export const toStream: <OutElem, OutErr, OutDone, Env>(
2032
+ self: Channel<Chunk.Chunk<OutElem>, unknown, OutErr, unknown, OutDone, unknown, Env>
2033
+ ) => Stream.Stream<OutElem, OutErr, Env> = stream.channelToStream
2017
2034
 
2018
2035
  /**
2019
2036
  * @since 2.0.0
2020
2037
  * @category constructors
2021
2038
  */
2022
- export const unit: Channel<never, unknown, unknown, unknown, never, never, void> = core.unit
2039
+ export const unit: Channel<never> = core.unit
2023
2040
 
2024
2041
  /**
2025
2042
  * Makes a channel from an effect that returns a channel in case of success.
@@ -2027,9 +2044,9 @@ export const unit: Channel<never, unknown, unknown, unknown, never, never, void>
2027
2044
  * @since 2.0.0
2028
2045
  * @category constructors
2029
2046
  */
2030
- export const unwrap: <R, E, R2, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2031
- channel: Effect.Effect<R, E, Channel<R2, InErr, InElem, InDone, OutErr, OutElem, OutDone>>
2032
- ) => Channel<R | R2, InErr, InElem, InDone, E | OutErr, OutElem, OutDone> = channel.unwrap
2047
+ export const unwrap: <OutElem, InElem, OutErr, InErr, OutDone, InDone, R2, E, R>(
2048
+ channel: Effect.Effect<Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, R2>, E, R>
2049
+ ) => Channel<OutElem, InElem, E | OutErr, InErr, OutDone, InDone, R | R2> = channel.unwrap
2033
2050
 
2034
2051
  /**
2035
2052
  * Makes a channel from a managed that returns a channel in case of success.
@@ -2037,9 +2054,9 @@ export const unwrap: <R, E, R2, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2037
2054
  * @since 2.0.0
2038
2055
  * @category constructors
2039
2056
  */
2040
- export const unwrapScoped: <R, E, Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2041
- self: Effect.Effect<R, E, Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>>
2042
- ) => Channel<Env | Exclude<R, Scope.Scope>, InErr, InElem, InDone, E | OutErr, OutElem, OutDone> = channel.unwrapScoped
2057
+ export const unwrapScoped: <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, E, R>(
2058
+ self: Effect.Effect<Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>, E, R>
2059
+ ) => Channel<OutElem, InElem, E | OutErr, InErr, OutDone, InDone, Env | Exclude<R, Scope.Scope>> = channel.unwrapScoped
2043
2060
 
2044
2061
  /**
2045
2062
  * Updates a service in the context of this channel.
@@ -2051,14 +2068,14 @@ export const updateService: {
2051
2068
  <T extends Context.Tag<any, any>>(
2052
2069
  tag: T,
2053
2070
  f: (resource: Context.Tag.Service<T>) => Context.Tag.Service<T>
2054
- ): <R, InErr, InDone, OutElem, OutErr, OutDone>(
2055
- self: Channel<R, InErr, unknown, InDone, OutErr, OutElem, OutDone>
2056
- ) => Channel<T | R, InErr, unknown, InDone, OutErr, OutElem, OutDone>
2057
- <R, InErr, InDone, OutElem, OutErr, OutDone, T extends Context.Tag<any, any>>(
2058
- self: Channel<R, InErr, unknown, InDone, OutErr, OutElem, OutDone>,
2071
+ ): <OutElem, OutErr, InErr, OutDone, InDone, R>(
2072
+ self: Channel<OutElem, unknown, OutErr, InErr, OutDone, InDone, R>
2073
+ ) => Channel<OutElem, unknown, OutErr, InErr, OutDone, InDone, T | R>
2074
+ <OutElem, OutErr, InErr, OutDone, InDone, R, T extends Context.Tag<any, any>>(
2075
+ self: Channel<OutElem, unknown, OutErr, InErr, OutDone, InDone, R>,
2059
2076
  tag: T,
2060
2077
  f: (resource: Context.Tag.Service<T>) => Context.Tag.Service<T>
2061
- ): Channel<R | T, InErr, unknown, InDone, OutErr, OutElem, OutDone>
2078
+ ): Channel<OutElem, unknown, OutErr, InErr, OutDone, InDone, R | T>
2062
2079
  } = channel.updateService
2063
2080
 
2064
2081
  /**
@@ -2076,12 +2093,12 @@ export const withSpan: {
2076
2093
  readonly parent?: Tracer.ParentSpan | undefined
2077
2094
  readonly root?: boolean | undefined
2078
2095
  readonly context?: Context.Context<never> | undefined
2079
- }
2080
- ): <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2081
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2082
- ) => Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2083
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2084
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
2096
+ } | undefined
2097
+ ): <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
2098
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
2099
+ ) => Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Exclude<Env, Tracer.ParentSpan>>
2100
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
2101
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
2085
2102
  name: string,
2086
2103
  options?: {
2087
2104
  readonly attributes?: Record<string, unknown> | undefined
@@ -2089,8 +2106,8 @@ export const withSpan: {
2089
2106
  readonly parent?: Tracer.ParentSpan | undefined
2090
2107
  readonly root?: boolean | undefined
2091
2108
  readonly context?: Context.Context<never> | undefined
2092
- }
2093
- ): Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2109
+ } | undefined
2110
+ ): Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Exclude<Env, Tracer.ParentSpan>>
2094
2111
  } = channel.withSpan
2095
2112
 
2096
2113
  /**
@@ -2099,8 +2116,7 @@ export const withSpan: {
2099
2116
  * @since 2.0.0
2100
2117
  * @category constructors
2101
2118
  */
2102
- export const write: <OutElem>(out: OutElem) => Channel<never, unknown, unknown, unknown, never, OutElem, void> =
2103
- core.write
2119
+ export const write: <OutElem>(out: OutElem) => Channel<OutElem> = core.write
2104
2120
 
2105
2121
  /**
2106
2122
  * Writes a sequence of values to the channel.
@@ -2110,7 +2126,7 @@ export const write: <OutElem>(out: OutElem) => Channel<never, unknown, unknown,
2110
2126
  */
2111
2127
  export const writeAll: <OutElems extends Array<any>>(
2112
2128
  ...outs: OutElems
2113
- ) => Channel<never, unknown, unknown, unknown, never, OutElems[number], void> = channel.writeAll
2129
+ ) => Channel<OutElems[number]> = channel.writeAll
2114
2130
 
2115
2131
  /**
2116
2132
  * Writes a `Chunk` of values to the channel.
@@ -2120,7 +2136,7 @@ export const writeAll: <OutElems extends Array<any>>(
2120
2136
  */
2121
2137
  export const writeChunk: <OutElem>(
2122
2138
  outs: Chunk.Chunk<OutElem>
2123
- ) => Channel<never, unknown, unknown, unknown, never, OutElem, void> = channel.writeChunk
2139
+ ) => Channel<OutElem> = channel.writeChunk
2124
2140
 
2125
2141
  /**
2126
2142
  * Returns a new channel that is the sequential composition of this channel
@@ -2131,36 +2147,32 @@ export const writeChunk: <OutElem>(
2131
2147
  * @category zipping
2132
2148
  */
2133
2149
  export const zip: {
2134
- <Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>(
2135
- that: Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>,
2136
- options?: {
2137
- readonly concurrent?: boolean | undefined
2138
- }
2139
- ): <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2140
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2150
+ <OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
2151
+ that: Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>,
2152
+ options?: { readonly concurrent?: boolean | undefined } | undefined
2153
+ ): <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
2154
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
2141
2155
  ) => Channel<
2142
- Env1 | Env,
2143
- InErr & InErr1,
2156
+ OutElem1 | OutElem,
2144
2157
  InElem & InElem1,
2145
- InDone & InDone1,
2146
2158
  OutErr1 | OutErr,
2147
- OutElem1 | OutElem,
2148
- readonly [OutDone, OutDone1]
2159
+ InErr & InErr1,
2160
+ readonly [OutDone, OutDone1],
2161
+ InDone & InDone1,
2162
+ Env1 | Env
2149
2163
  >
2150
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>(
2151
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
2152
- that: Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>,
2153
- options?: {
2154
- readonly concurrent?: boolean | undefined
2155
- }
2164
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
2165
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
2166
+ that: Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>,
2167
+ options?: { readonly concurrent?: boolean | undefined } | undefined
2156
2168
  ): Channel<
2157
- Env | Env1,
2158
- InErr & InErr1,
2169
+ OutElem | OutElem1,
2159
2170
  InElem & InElem1,
2160
- InDone & InDone1,
2161
2171
  OutErr | OutErr1,
2162
- OutElem | OutElem1,
2163
- readonly [OutDone, OutDone1]
2172
+ InErr & InErr1,
2173
+ readonly [OutDone, OutDone1],
2174
+ InDone & InDone1,
2175
+ Env | Env1
2164
2176
  >
2165
2177
  } = channel.zip
2166
2178
 
@@ -2173,36 +2185,32 @@ export const zip: {
2173
2185
  * @category zipping
2174
2186
  */
2175
2187
  export const zipLeft: {
2176
- <Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>(
2177
- that: Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>,
2178
- options?: {
2179
- readonly concurrent?: boolean | undefined
2180
- }
2181
- ): <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2182
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2188
+ <OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
2189
+ that: Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>,
2190
+ options?: { readonly concurrent?: boolean | undefined } | undefined
2191
+ ): <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>(
2192
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
2183
2193
  ) => Channel<
2184
- Env1 | Env,
2185
- InErr & InErr1,
2194
+ OutElem1 | OutElem,
2186
2195
  InElem & InElem1,
2187
- InDone & InDone1,
2188
2196
  OutErr1 | OutErr,
2189
- OutElem1 | OutElem,
2190
- OutDone
2197
+ InErr & InErr1,
2198
+ OutDone,
2199
+ InDone & InDone1,
2200
+ Env1 | Env
2191
2201
  >
2192
- <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>(
2193
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
2194
- that: Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>,
2195
- options?: {
2196
- readonly concurrent?: boolean | undefined
2197
- }
2202
+ <OutElem, InElem, OutErr, InErr, OutDone, InDone, Env, OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>(
2203
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
2204
+ that: Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>,
2205
+ options?: { readonly concurrent?: boolean | undefined } | undefined
2198
2206
  ): Channel<
2199
- Env | Env1,
2200
- InErr & InErr1,
2207
+ OutElem | OutElem1,
2201
2208
  InElem & InElem1,
2202
- InDone & InDone1,
2203
2209
  OutErr | OutErr1,
2204
- OutElem | OutElem1,
2205
- OutDone
2210
+ InErr & InErr1,
2211
+ OutDone,
2212
+ InDone & InDone1,
2213
+ Env | Env1
2206
2214
  >
2207
2215
  } = channel.zipLeft
2208
2216
 
@@ -2216,35 +2224,35 @@ export const zipLeft: {
2216
2224
  */
2217
2225
  export const zipRight: {
2218
2226
  <Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>(
2219
- that: Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>,
2227
+ that: Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>,
2220
2228
  options?: {
2221
2229
  readonly concurrent?: boolean | undefined
2222
2230
  }
2223
2231
  ): <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2224
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
2232
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
2225
2233
  ) => Channel<
2226
- Env1 | Env,
2227
- InErr & InErr1,
2234
+ OutElem1 | OutElem,
2228
2235
  InElem & InElem1,
2229
- InDone & InDone1,
2230
2236
  OutErr1 | OutErr,
2231
- OutElem1 | OutElem,
2232
- OutDone1
2237
+ InErr & InErr1,
2238
+ OutDone1,
2239
+ InDone & InDone1,
2240
+ Env1 | Env
2233
2241
  >
2234
2242
  <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone, Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>(
2235
- self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
2236
- that: Channel<Env1, InErr1, InElem1, InDone1, OutErr1, OutElem1, OutDone1>,
2243
+ self: Channel<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>,
2244
+ that: Channel<OutElem1, InElem1, OutErr1, InErr1, OutDone1, InDone1, Env1>,
2237
2245
  options?: {
2238
2246
  readonly concurrent?: boolean | undefined
2239
2247
  }
2240
2248
  ): Channel<
2241
- Env | Env1,
2242
- InErr & InErr1,
2249
+ OutElem | OutElem1,
2243
2250
  InElem & InElem1,
2244
- InDone & InDone1,
2245
2251
  OutErr | OutErr1,
2246
- OutElem | OutElem1,
2247
- OutDone1
2252
+ InErr & InErr1,
2253
+ OutDone1,
2254
+ InDone & InDone1,
2255
+ Env | Env1
2248
2256
  >
2249
2257
  } = channel.zipRight
2250
2258