effect 2.2.5 → 2.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (693) hide show
  1. package/RateLimiter/package.json +6 -0
  2. package/dist/cjs/Cause.js +14 -1
  3. package/dist/cjs/Cause.js.map +1 -1
  4. package/dist/cjs/Channel.js.map +1 -1
  5. package/dist/cjs/Clock.js.map +1 -1
  6. package/dist/cjs/Console.js.map +1 -1
  7. package/dist/cjs/Context.js +23 -25
  8. package/dist/cjs/Context.js.map +1 -1
  9. package/dist/cjs/Data.js +3 -3
  10. package/dist/cjs/Data.js.map +1 -1
  11. package/dist/cjs/Deferred.js +1 -1
  12. package/dist/cjs/Deferred.js.map +1 -1
  13. package/dist/cjs/Effect.js +9 -9
  14. package/dist/cjs/Effect.js.map +1 -1
  15. package/dist/cjs/Effectable.js.map +1 -1
  16. package/dist/cjs/Either.js.map +1 -1
  17. package/dist/cjs/Exit.js +2 -2
  18. package/dist/cjs/Exit.js.map +1 -1
  19. package/dist/cjs/Fiber.js.map +1 -1
  20. package/dist/cjs/FiberMap.js +3 -3
  21. package/dist/cjs/FiberRef.js.map +1 -1
  22. package/dist/cjs/FiberRefs.js.map +1 -1
  23. package/dist/cjs/FiberSet.js +3 -3
  24. package/dist/cjs/FiberSet.js.map +1 -1
  25. package/dist/cjs/GroupBy.js.map +1 -1
  26. package/dist/cjs/Layer.js.map +1 -1
  27. package/dist/cjs/LogLevel.js.map +1 -1
  28. package/dist/cjs/Logger.js.map +1 -1
  29. package/dist/cjs/Metric.js.map +1 -1
  30. package/dist/cjs/Number.js +20 -1
  31. package/dist/cjs/Number.js.map +1 -1
  32. package/dist/cjs/Option.js.map +1 -1
  33. package/dist/cjs/Pool.js.map +1 -1
  34. package/dist/cjs/PubSub.js.map +1 -1
  35. package/dist/cjs/Queue.js.map +1 -1
  36. package/dist/cjs/Random.js.map +1 -1
  37. package/dist/cjs/RateLimiter.js +38 -0
  38. package/dist/cjs/RateLimiter.js.map +1 -0
  39. package/dist/cjs/ReadonlyRecord.js +45 -9
  40. package/dist/cjs/ReadonlyRecord.js.map +1 -1
  41. package/dist/cjs/Ref.js.map +1 -1
  42. package/dist/cjs/Request.js.map +1 -1
  43. package/dist/cjs/RequestResolver.js.map +1 -1
  44. package/dist/cjs/Resource.js.map +1 -1
  45. package/dist/cjs/Runtime.js +1 -4
  46. package/dist/cjs/Runtime.js.map +1 -1
  47. package/dist/cjs/RuntimeFlags.js.map +1 -1
  48. package/dist/cjs/STM.js.map +1 -1
  49. package/dist/cjs/Schedule.js.map +1 -1
  50. package/dist/cjs/Scope.js.map +1 -1
  51. package/dist/cjs/ScopedRef.js.map +1 -1
  52. package/dist/cjs/SingleProducerAsyncInput.js.map +1 -1
  53. package/dist/cjs/Sink.js.map +1 -1
  54. package/dist/cjs/Stream.js.map +1 -1
  55. package/dist/cjs/SubscriptionRef.js.map +1 -1
  56. package/dist/cjs/Supervisor.js.map +1 -1
  57. package/dist/cjs/SynchronizedRef.js.map +1 -1
  58. package/dist/cjs/TArray.js.map +1 -1
  59. package/dist/cjs/TDeferred.js.map +1 -1
  60. package/dist/cjs/TMap.js.map +1 -1
  61. package/dist/cjs/TPriorityQueue.js.map +1 -1
  62. package/dist/cjs/TPubSub.js.map +1 -1
  63. package/dist/cjs/TQueue.js.map +1 -1
  64. package/dist/cjs/TRandom.js.map +1 -1
  65. package/dist/cjs/TReentrantLock.js.map +1 -1
  66. package/dist/cjs/TRef.js.map +1 -1
  67. package/dist/cjs/TSemaphore.js.map +1 -1
  68. package/dist/cjs/TSet.js.map +1 -1
  69. package/dist/cjs/Take.js +6 -6
  70. package/dist/cjs/Take.js.map +1 -1
  71. package/dist/cjs/TestAnnotation.js +10 -13
  72. package/dist/cjs/TestAnnotation.js.map +1 -1
  73. package/dist/cjs/TestAnnotations.js +1 -1
  74. package/dist/cjs/TestAnnotations.js.map +1 -1
  75. package/dist/cjs/TestClock.js +1 -1
  76. package/dist/cjs/TestClock.js.map +1 -1
  77. package/dist/cjs/TestConfig.js +1 -1
  78. package/dist/cjs/TestConfig.js.map +1 -1
  79. package/dist/cjs/TestContext.js.map +1 -1
  80. package/dist/cjs/TestLive.js +1 -1
  81. package/dist/cjs/TestLive.js.map +1 -1
  82. package/dist/cjs/TestServices.js.map +1 -1
  83. package/dist/cjs/TestSized.js +1 -1
  84. package/dist/cjs/TestSized.js.map +1 -1
  85. package/dist/cjs/Utils.js +0 -1
  86. package/dist/cjs/Utils.js.map +1 -1
  87. package/dist/cjs/index.js +4 -2
  88. package/dist/cjs/index.js.map +1 -1
  89. package/dist/cjs/internal/cache.js.map +1 -1
  90. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  91. package/dist/cjs/internal/channel/mergeDecision.js +2 -6
  92. package/dist/cjs/internal/channel/mergeDecision.js.map +1 -1
  93. package/dist/cjs/internal/channel/singleProducerAsyncInput.js.map +1 -1
  94. package/dist/cjs/internal/channel.js +1 -1
  95. package/dist/cjs/internal/channel.js.map +1 -1
  96. package/dist/cjs/internal/clock.js +1 -1
  97. package/dist/cjs/internal/clock.js.map +1 -1
  98. package/dist/cjs/internal/configProvider.js +2 -4
  99. package/dist/cjs/internal/configProvider.js.map +1 -1
  100. package/dist/cjs/internal/console.js.map +1 -1
  101. package/dist/cjs/internal/context.js +31 -22
  102. package/dist/cjs/internal/context.js.map +1 -1
  103. package/dist/cjs/internal/core-effect.js +13 -27
  104. package/dist/cjs/internal/core-effect.js.map +1 -1
  105. package/dist/cjs/internal/core-stream.js.map +1 -1
  106. package/dist/cjs/internal/core.js +61 -130
  107. package/dist/cjs/internal/core.js.map +1 -1
  108. package/dist/cjs/internal/data.js.map +1 -1
  109. package/dist/cjs/internal/defaultServices/console.js +1 -1
  110. package/dist/cjs/internal/defaultServices/console.js.map +1 -1
  111. package/dist/cjs/internal/defaultServices.js.map +1 -1
  112. package/dist/cjs/internal/deferred.js.map +1 -1
  113. package/dist/cjs/internal/differ/contextPatch.js +9 -9
  114. package/dist/cjs/internal/differ/contextPatch.js.map +1 -1
  115. package/dist/cjs/internal/effect/circular.js +7 -10
  116. package/dist/cjs/internal/effect/circular.js.map +1 -1
  117. package/dist/cjs/internal/effectable.js +4 -4
  118. package/dist/cjs/internal/effectable.js.map +1 -1
  119. package/dist/cjs/internal/fiber.js +2 -6
  120. package/dist/cjs/internal/fiber.js.map +1 -1
  121. package/dist/cjs/internal/fiberRuntime.js +10 -19
  122. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  123. package/dist/cjs/internal/groupBy.js.map +1 -1
  124. package/dist/cjs/internal/keyedPool.js.map +1 -1
  125. package/dist/cjs/internal/layer/circular.js.map +1 -1
  126. package/dist/cjs/internal/layer.js +3 -3
  127. package/dist/cjs/internal/layer.js.map +1 -1
  128. package/dist/cjs/internal/logSpan.js +3 -5
  129. package/dist/cjs/internal/logSpan.js.map +1 -1
  130. package/dist/cjs/internal/metric.js.map +1 -1
  131. package/dist/cjs/internal/pool.js.map +1 -1
  132. package/dist/cjs/internal/pubsub.js +2 -6
  133. package/dist/cjs/internal/pubsub.js.map +1 -1
  134. package/dist/cjs/internal/query.js.map +1 -1
  135. package/dist/cjs/internal/queue.js.map +1 -1
  136. package/dist/cjs/internal/random.js +1 -1
  137. package/dist/cjs/internal/random.js.map +1 -1
  138. package/dist/cjs/internal/rateLimiter.js +44 -0
  139. package/dist/cjs/internal/rateLimiter.js.map +1 -0
  140. package/dist/cjs/internal/ref.js.map +1 -1
  141. package/dist/cjs/internal/reloadable.js +1 -9
  142. package/dist/cjs/internal/reloadable.js.map +1 -1
  143. package/dist/cjs/internal/runtime.js +0 -1
  144. package/dist/cjs/internal/runtime.js.map +1 -1
  145. package/dist/cjs/internal/schedule.js.map +1 -1
  146. package/dist/cjs/internal/scopedCache.js.map +1 -1
  147. package/dist/cjs/internal/scopedRef.js.map +1 -1
  148. package/dist/cjs/internal/sink.js +7 -7
  149. package/dist/cjs/internal/sink.js.map +1 -1
  150. package/dist/cjs/internal/stm/core.js.map +1 -1
  151. package/dist/cjs/internal/stm/stm/stmState.js.map +1 -1
  152. package/dist/cjs/internal/stm/stm/tExit.js +2 -2
  153. package/dist/cjs/internal/stm/stm/tExit.js.map +1 -1
  154. package/dist/cjs/internal/stm/stm/tryCommit.js.map +1 -1
  155. package/dist/cjs/internal/stm/stm.js.map +1 -1
  156. package/dist/cjs/internal/stm/tArray.js.map +1 -1
  157. package/dist/cjs/internal/stm/tDeferred.js +4 -2
  158. package/dist/cjs/internal/stm/tDeferred.js.map +1 -1
  159. package/dist/cjs/internal/stm/tMap.js.map +1 -1
  160. package/dist/cjs/internal/stm/tPriorityQueue.js.map +1 -1
  161. package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
  162. package/dist/cjs/internal/stm/tQueue.js.map +1 -1
  163. package/dist/cjs/internal/stm/tRandom.js +1 -1
  164. package/dist/cjs/internal/stm/tRandom.js.map +1 -1
  165. package/dist/cjs/internal/stm/tReentrantLock.js.map +1 -1
  166. package/dist/cjs/internal/stm/tRef.js.map +1 -1
  167. package/dist/cjs/internal/stm/tSemaphore.js.map +1 -1
  168. package/dist/cjs/internal/stm/tSet.js.map +1 -1
  169. package/dist/cjs/internal/stream/debounceState.js.map +1 -1
  170. package/dist/cjs/internal/stream/handoff.js.map +1 -1
  171. package/dist/cjs/internal/stream/handoffSignal.js.map +1 -1
  172. package/dist/cjs/internal/stream/pull.js.map +1 -1
  173. package/dist/cjs/internal/stream.js +0 -2
  174. package/dist/cjs/internal/stream.js.map +1 -1
  175. package/dist/cjs/internal/subscriptionRef.js.map +1 -1
  176. package/dist/cjs/internal/supervisor.js.map +1 -1
  177. package/dist/cjs/internal/take.js +2 -2
  178. package/dist/cjs/internal/take.js.map +1 -1
  179. package/dist/cjs/internal/testing/sleep.js.map +1 -1
  180. package/dist/cjs/internal/tracer.js +2 -2
  181. package/dist/cjs/internal/tracer.js.map +1 -1
  182. package/dist/cjs/internal/version.js +1 -1
  183. package/dist/dts/Cache.d.ts +20 -20
  184. package/dist/dts/Cache.d.ts.map +1 -1
  185. package/dist/dts/Cause.d.ts +33 -5
  186. package/dist/dts/Cause.d.ts.map +1 -1
  187. package/dist/dts/Channel.d.ts +197 -194
  188. package/dist/dts/Channel.d.ts.map +1 -1
  189. package/dist/dts/Clock.d.ts +7 -7
  190. package/dist/dts/Clock.d.ts.map +1 -1
  191. package/dist/dts/Config.d.ts +1 -1
  192. package/dist/dts/Config.d.ts.map +1 -1
  193. package/dist/dts/ConfigProvider.d.ts +6 -6
  194. package/dist/dts/ConfigProvider.d.ts.map +1 -1
  195. package/dist/dts/Console.d.ts +43 -43
  196. package/dist/dts/Console.d.ts.map +1 -1
  197. package/dist/dts/Context.d.ts +44 -29
  198. package/dist/dts/Context.d.ts.map +1 -1
  199. package/dist/dts/Data.d.ts +38 -57
  200. package/dist/dts/Data.d.ts.map +1 -1
  201. package/dist/dts/Deferred.d.ts +36 -36
  202. package/dist/dts/Deferred.d.ts.map +1 -1
  203. package/dist/dts/Effect.d.ts +732 -729
  204. package/dist/dts/Effect.d.ts.map +1 -1
  205. package/dist/dts/Effectable.d.ts +8 -8
  206. package/dist/dts/Effectable.d.ts.map +1 -1
  207. package/dist/dts/Either.d.ts +2 -3
  208. package/dist/dts/Either.d.ts.map +1 -1
  209. package/dist/dts/Exit.d.ts +74 -74
  210. package/dist/dts/Exit.d.ts.map +1 -1
  211. package/dist/dts/Fiber.d.ts +75 -75
  212. package/dist/dts/Fiber.d.ts.map +1 -1
  213. package/dist/dts/FiberMap.d.ts +22 -22
  214. package/dist/dts/FiberMap.d.ts.map +1 -1
  215. package/dist/dts/FiberRef.d.ts +28 -28
  216. package/dist/dts/FiberRef.d.ts.map +1 -1
  217. package/dist/dts/FiberRefs.d.ts +1 -1
  218. package/dist/dts/FiberRefs.d.ts.map +1 -1
  219. package/dist/dts/FiberSet.d.ts +16 -16
  220. package/dist/dts/FiberSet.d.ts.map +1 -1
  221. package/dist/dts/GroupBy.d.ts +6 -6
  222. package/dist/dts/GroupBy.d.ts.map +1 -1
  223. package/dist/dts/KeyedPool.d.ts +22 -22
  224. package/dist/dts/KeyedPool.d.ts.map +1 -1
  225. package/dist/dts/Layer.d.ts +126 -126
  226. package/dist/dts/Layer.d.ts.map +1 -1
  227. package/dist/dts/LogLevel.d.ts +2 -2
  228. package/dist/dts/LogLevel.d.ts.map +1 -1
  229. package/dist/dts/Logger.d.ts +14 -14
  230. package/dist/dts/Logger.d.ts.map +1 -1
  231. package/dist/dts/MergeDecision.d.ts +7 -7
  232. package/dist/dts/MergeState.d.ts +13 -13
  233. package/dist/dts/MergeState.d.ts.map +1 -1
  234. package/dist/dts/Metric.d.ts +32 -32
  235. package/dist/dts/Metric.d.ts.map +1 -1
  236. package/dist/dts/MetricPolling.d.ts +6 -6
  237. package/dist/dts/MetricPolling.d.ts.map +1 -1
  238. package/dist/dts/Number.d.ts +15 -0
  239. package/dist/dts/Number.d.ts.map +1 -1
  240. package/dist/dts/Option.d.ts +2 -3
  241. package/dist/dts/Option.d.ts.map +1 -1
  242. package/dist/dts/Pool.d.ts +15 -16
  243. package/dist/dts/Pool.d.ts.map +1 -1
  244. package/dist/dts/PubSub.d.ts +18 -18
  245. package/dist/dts/PubSub.d.ts.map +1 -1
  246. package/dist/dts/Queue.d.ts +40 -40
  247. package/dist/dts/Queue.d.ts.map +1 -1
  248. package/dist/dts/Random.d.ts +13 -13
  249. package/dist/dts/Random.d.ts.map +1 -1
  250. package/dist/dts/RateLimiter.d.ts +31 -0
  251. package/dist/dts/RateLimiter.d.ts.map +1 -0
  252. package/dist/dts/ReadonlyArray.d.ts +3 -3
  253. package/dist/dts/ReadonlyRecord.d.ts +37 -8
  254. package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
  255. package/dist/dts/Ref.d.ts +25 -25
  256. package/dist/dts/Ref.d.ts.map +1 -1
  257. package/dist/dts/Reloadable.d.ts +9 -9
  258. package/dist/dts/Reloadable.d.ts.map +1 -1
  259. package/dist/dts/Request.d.ts +27 -28
  260. package/dist/dts/Request.d.ts.map +1 -1
  261. package/dist/dts/RequestBlock.d.ts +3 -3
  262. package/dist/dts/RequestBlock.d.ts.map +1 -1
  263. package/dist/dts/RequestResolver.d.ts +16 -16
  264. package/dist/dts/RequestResolver.d.ts.map +1 -1
  265. package/dist/dts/Resource.d.ts +7 -7
  266. package/dist/dts/Resource.d.ts.map +1 -1
  267. package/dist/dts/Runtime.d.ts +13 -16
  268. package/dist/dts/Runtime.d.ts.map +1 -1
  269. package/dist/dts/RuntimeFlags.d.ts +10 -10
  270. package/dist/dts/RuntimeFlags.d.ts.map +1 -1
  271. package/dist/dts/STM.d.ts +303 -303
  272. package/dist/dts/STM.d.ts.map +1 -1
  273. package/dist/dts/Schedule.d.ts +47 -47
  274. package/dist/dts/Schedule.d.ts.map +1 -1
  275. package/dist/dts/Scope.d.ts +10 -10
  276. package/dist/dts/Scope.d.ts.map +1 -1
  277. package/dist/dts/ScopedCache.d.ts +14 -14
  278. package/dist/dts/ScopedCache.d.ts.map +1 -1
  279. package/dist/dts/ScopedRef.d.ts +5 -5
  280. package/dist/dts/ScopedRef.d.ts.map +1 -1
  281. package/dist/dts/SingleProducerAsyncInput.d.ts +8 -8
  282. package/dist/dts/SingleProducerAsyncInput.d.ts.map +1 -1
  283. package/dist/dts/Sink.d.ts +214 -205
  284. package/dist/dts/Sink.d.ts.map +1 -1
  285. package/dist/dts/Stream.d.ts +595 -592
  286. package/dist/dts/Stream.d.ts.map +1 -1
  287. package/dist/dts/StreamEmit.d.ts +5 -5
  288. package/dist/dts/StreamEmit.d.ts.map +1 -1
  289. package/dist/dts/Streamable.d.ts +2 -2
  290. package/dist/dts/Streamable.d.ts.map +1 -1
  291. package/dist/dts/SubscriptionRef.d.ts +41 -41
  292. package/dist/dts/SubscriptionRef.d.ts.map +1 -1
  293. package/dist/dts/Supervisor.d.ts +17 -17
  294. package/dist/dts/Supervisor.d.ts.map +1 -1
  295. package/dist/dts/SynchronizedRef.d.ts +41 -41
  296. package/dist/dts/SynchronizedRef.d.ts.map +1 -1
  297. package/dist/dts/TArray.d.ts +72 -72
  298. package/dist/dts/TArray.d.ts.map +1 -1
  299. package/dist/dts/TDeferred.d.ts +12 -12
  300. package/dist/dts/TDeferred.d.ts.map +1 -1
  301. package/dist/dts/TMap.d.ts +67 -67
  302. package/dist/dts/TMap.d.ts.map +1 -1
  303. package/dist/dts/TPriorityQueue.d.ts +23 -23
  304. package/dist/dts/TPriorityQueue.d.ts.map +1 -1
  305. package/dist/dts/TPubSub.d.ts +15 -15
  306. package/dist/dts/TPubSub.d.ts.map +1 -1
  307. package/dist/dts/TQueue.d.ts +40 -40
  308. package/dist/dts/TQueue.d.ts.map +1 -1
  309. package/dist/dts/TRandom.d.ts +13 -13
  310. package/dist/dts/TRandom.d.ts.map +1 -1
  311. package/dist/dts/TReentrantLock.d.ts +21 -21
  312. package/dist/dts/TReentrantLock.d.ts.map +1 -1
  313. package/dist/dts/TRef.d.ts +25 -25
  314. package/dist/dts/TRef.d.ts.map +1 -1
  315. package/dist/dts/TSemaphore.d.ts +15 -15
  316. package/dist/dts/TSemaphore.d.ts.map +1 -1
  317. package/dist/dts/TSet.d.ts +49 -49
  318. package/dist/dts/TSet.d.ts.map +1 -1
  319. package/dist/dts/Take.d.ts +41 -41
  320. package/dist/dts/Take.d.ts.map +1 -1
  321. package/dist/dts/TestAnnotation.d.ts +1 -3
  322. package/dist/dts/TestAnnotation.d.ts.map +1 -1
  323. package/dist/dts/TestAnnotations.d.ts +3 -3
  324. package/dist/dts/TestAnnotations.d.ts.map +1 -1
  325. package/dist/dts/TestClock.d.ts +18 -18
  326. package/dist/dts/TestClock.d.ts.map +1 -1
  327. package/dist/dts/TestConfig.d.ts.map +1 -1
  328. package/dist/dts/TestContext.d.ts +2 -2
  329. package/dist/dts/TestContext.d.ts.map +1 -1
  330. package/dist/dts/TestLive.d.ts +1 -1
  331. package/dist/dts/TestLive.d.ts.map +1 -1
  332. package/dist/dts/TestServices.d.ts +31 -31
  333. package/dist/dts/TestServices.d.ts.map +1 -1
  334. package/dist/dts/TestSized.d.ts +2 -2
  335. package/dist/dts/TestSized.d.ts.map +1 -1
  336. package/dist/dts/Tracer.d.ts +1 -1
  337. package/dist/dts/Utils.d.ts.map +1 -1
  338. package/dist/dts/index.d.ts +12 -2
  339. package/dist/dts/index.d.ts.map +1 -1
  340. package/dist/dts/internal/channel/channelExecutor.d.ts +1 -1
  341. package/dist/dts/internal/channel/channelExecutor.d.ts.map +1 -1
  342. package/dist/dts/internal/core-stream.d.ts +1 -1
  343. package/dist/dts/internal/core-stream.d.ts.map +1 -1
  344. package/dist/dts/internal/rateLimiter.d.ts +2 -0
  345. package/dist/dts/internal/rateLimiter.d.ts.map +1 -0
  346. package/dist/dts/internal/stm/stm.d.ts +6 -6
  347. package/dist/dts/internal/stm/stm.d.ts.map +1 -1
  348. package/dist/dts/internal/version.d.ts +1 -1
  349. package/dist/esm/Cause.js +13 -0
  350. package/dist/esm/Cause.js.map +1 -1
  351. package/dist/esm/Channel.js.map +1 -1
  352. package/dist/esm/Clock.js.map +1 -1
  353. package/dist/esm/Console.js.map +1 -1
  354. package/dist/esm/Context.js +22 -24
  355. package/dist/esm/Context.js.map +1 -1
  356. package/dist/esm/Data.js +4 -5
  357. package/dist/esm/Data.js.map +1 -1
  358. package/dist/esm/Deferred.js +1 -1
  359. package/dist/esm/Deferred.js.map +1 -1
  360. package/dist/esm/Effect.js +9 -9
  361. package/dist/esm/Effect.js.map +1 -1
  362. package/dist/esm/Effectable.js.map +1 -1
  363. package/dist/esm/Either.js.map +1 -1
  364. package/dist/esm/Exit.js +2 -2
  365. package/dist/esm/Exit.js.map +1 -1
  366. package/dist/esm/Fiber.js.map +1 -1
  367. package/dist/esm/FiberMap.js +3 -3
  368. package/dist/esm/FiberRef.js.map +1 -1
  369. package/dist/esm/FiberRefs.js.map +1 -1
  370. package/dist/esm/FiberSet.js +3 -3
  371. package/dist/esm/FiberSet.js.map +1 -1
  372. package/dist/esm/GroupBy.js.map +1 -1
  373. package/dist/esm/Layer.js.map +1 -1
  374. package/dist/esm/LogLevel.js.map +1 -1
  375. package/dist/esm/Logger.js.map +1 -1
  376. package/dist/esm/Metric.js.map +1 -1
  377. package/dist/esm/Number.js +18 -0
  378. package/dist/esm/Number.js.map +1 -1
  379. package/dist/esm/Option.js.map +1 -1
  380. package/dist/esm/Pool.js.map +1 -1
  381. package/dist/esm/PubSub.js.map +1 -1
  382. package/dist/esm/Queue.js.map +1 -1
  383. package/dist/esm/Random.js.map +1 -1
  384. package/dist/esm/RateLimiter.js +7 -0
  385. package/dist/esm/RateLimiter.js.map +1 -0
  386. package/dist/esm/ReadonlyRecord.js +44 -8
  387. package/dist/esm/ReadonlyRecord.js.map +1 -1
  388. package/dist/esm/Ref.js.map +1 -1
  389. package/dist/esm/Request.js.map +1 -1
  390. package/dist/esm/RequestResolver.js.map +1 -1
  391. package/dist/esm/Resource.js.map +1 -1
  392. package/dist/esm/Runtime.js +1 -4
  393. package/dist/esm/Runtime.js.map +1 -1
  394. package/dist/esm/RuntimeFlags.js.map +1 -1
  395. package/dist/esm/STM.js.map +1 -1
  396. package/dist/esm/Schedule.js.map +1 -1
  397. package/dist/esm/Scope.js.map +1 -1
  398. package/dist/esm/ScopedRef.js.map +1 -1
  399. package/dist/esm/SingleProducerAsyncInput.js.map +1 -1
  400. package/dist/esm/Sink.js.map +1 -1
  401. package/dist/esm/Stream.js.map +1 -1
  402. package/dist/esm/SubscriptionRef.js.map +1 -1
  403. package/dist/esm/Supervisor.js.map +1 -1
  404. package/dist/esm/SynchronizedRef.js.map +1 -1
  405. package/dist/esm/TArray.js.map +1 -1
  406. package/dist/esm/TDeferred.js.map +1 -1
  407. package/dist/esm/TMap.js.map +1 -1
  408. package/dist/esm/TPriorityQueue.js.map +1 -1
  409. package/dist/esm/TPubSub.js.map +1 -1
  410. package/dist/esm/TQueue.js.map +1 -1
  411. package/dist/esm/TRandom.js.map +1 -1
  412. package/dist/esm/TReentrantLock.js.map +1 -1
  413. package/dist/esm/TRef.js.map +1 -1
  414. package/dist/esm/TSemaphore.js.map +1 -1
  415. package/dist/esm/TSet.js.map +1 -1
  416. package/dist/esm/Take.js +6 -6
  417. package/dist/esm/Take.js.map +1 -1
  418. package/dist/esm/TestAnnotation.js +10 -13
  419. package/dist/esm/TestAnnotation.js.map +1 -1
  420. package/dist/esm/TestAnnotations.js +1 -1
  421. package/dist/esm/TestAnnotations.js.map +1 -1
  422. package/dist/esm/TestClock.js +1 -1
  423. package/dist/esm/TestClock.js.map +1 -1
  424. package/dist/esm/TestConfig.js +1 -1
  425. package/dist/esm/TestConfig.js.map +1 -1
  426. package/dist/esm/TestContext.js.map +1 -1
  427. package/dist/esm/TestLive.js +1 -1
  428. package/dist/esm/TestLive.js.map +1 -1
  429. package/dist/esm/TestServices.js.map +1 -1
  430. package/dist/esm/TestSized.js +1 -1
  431. package/dist/esm/TestSized.js.map +1 -1
  432. package/dist/esm/Utils.js +1 -1
  433. package/dist/esm/Utils.js.map +1 -1
  434. package/dist/esm/index.js +12 -2
  435. package/dist/esm/index.js.map +1 -1
  436. package/dist/esm/internal/cache.js.map +1 -1
  437. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  438. package/dist/esm/internal/channel/mergeDecision.js +2 -6
  439. package/dist/esm/internal/channel/mergeDecision.js.map +1 -1
  440. package/dist/esm/internal/channel/singleProducerAsyncInput.js.map +1 -1
  441. package/dist/esm/internal/channel.js +1 -1
  442. package/dist/esm/internal/channel.js.map +1 -1
  443. package/dist/esm/internal/clock.js +1 -1
  444. package/dist/esm/internal/clock.js.map +1 -1
  445. package/dist/esm/internal/configProvider.js +2 -4
  446. package/dist/esm/internal/configProvider.js.map +1 -1
  447. package/dist/esm/internal/console.js.map +1 -1
  448. package/dist/esm/internal/context.js +28 -20
  449. package/dist/esm/internal/context.js.map +1 -1
  450. package/dist/esm/internal/core-effect.js +12 -26
  451. package/dist/esm/internal/core-effect.js.map +1 -1
  452. package/dist/esm/internal/core-stream.js.map +1 -1
  453. package/dist/esm/internal/core.js +57 -127
  454. package/dist/esm/internal/core.js.map +1 -1
  455. package/dist/esm/internal/data.js.map +1 -1
  456. package/dist/esm/internal/defaultServices/console.js +1 -1
  457. package/dist/esm/internal/defaultServices/console.js.map +1 -1
  458. package/dist/esm/internal/defaultServices.js.map +1 -1
  459. package/dist/esm/internal/deferred.js.map +1 -1
  460. package/dist/esm/internal/differ/contextPatch.js +9 -9
  461. package/dist/esm/internal/differ/contextPatch.js.map +1 -1
  462. package/dist/esm/internal/effect/circular.js +5 -8
  463. package/dist/esm/internal/effect/circular.js.map +1 -1
  464. package/dist/esm/internal/effectable.js +4 -4
  465. package/dist/esm/internal/effectable.js.map +1 -1
  466. package/dist/esm/internal/fiber.js +2 -6
  467. package/dist/esm/internal/fiber.js.map +1 -1
  468. package/dist/esm/internal/fiberRuntime.js +10 -19
  469. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  470. package/dist/esm/internal/groupBy.js.map +1 -1
  471. package/dist/esm/internal/keyedPool.js.map +1 -1
  472. package/dist/esm/internal/layer/circular.js.map +1 -1
  473. package/dist/esm/internal/layer.js +3 -3
  474. package/dist/esm/internal/layer.js.map +1 -1
  475. package/dist/esm/internal/logSpan.js +3 -5
  476. package/dist/esm/internal/logSpan.js.map +1 -1
  477. package/dist/esm/internal/metric.js.map +1 -1
  478. package/dist/esm/internal/pool.js.map +1 -1
  479. package/dist/esm/internal/pubsub.js +1 -5
  480. package/dist/esm/internal/pubsub.js.map +1 -1
  481. package/dist/esm/internal/query.js.map +1 -1
  482. package/dist/esm/internal/queue.js.map +1 -1
  483. package/dist/esm/internal/random.js +1 -1
  484. package/dist/esm/internal/random.js.map +1 -1
  485. package/dist/esm/internal/rateLimiter.js +12 -0
  486. package/dist/esm/internal/rateLimiter.js.map +1 -0
  487. package/dist/esm/internal/ref.js.map +1 -1
  488. package/dist/esm/internal/reloadable.js +1 -9
  489. package/dist/esm/internal/reloadable.js.map +1 -1
  490. package/dist/esm/internal/runtime.js +0 -1
  491. package/dist/esm/internal/runtime.js.map +1 -1
  492. package/dist/esm/internal/schedule.js.map +1 -1
  493. package/dist/esm/internal/scopedCache.js.map +1 -1
  494. package/dist/esm/internal/scopedRef.js.map +1 -1
  495. package/dist/esm/internal/sink.js +7 -7
  496. package/dist/esm/internal/sink.js.map +1 -1
  497. package/dist/esm/internal/stm/core.js.map +1 -1
  498. package/dist/esm/internal/stm/stm/stmState.js.map +1 -1
  499. package/dist/esm/internal/stm/stm/tExit.js +2 -2
  500. package/dist/esm/internal/stm/stm/tExit.js.map +1 -1
  501. package/dist/esm/internal/stm/stm/tryCommit.js.map +1 -1
  502. package/dist/esm/internal/stm/stm.js.map +1 -1
  503. package/dist/esm/internal/stm/tArray.js.map +1 -1
  504. package/dist/esm/internal/stm/tDeferred.js +4 -2
  505. package/dist/esm/internal/stm/tDeferred.js.map +1 -1
  506. package/dist/esm/internal/stm/tMap.js.map +1 -1
  507. package/dist/esm/internal/stm/tPriorityQueue.js.map +1 -1
  508. package/dist/esm/internal/stm/tPubSub.js.map +1 -1
  509. package/dist/esm/internal/stm/tQueue.js.map +1 -1
  510. package/dist/esm/internal/stm/tRandom.js +1 -1
  511. package/dist/esm/internal/stm/tRandom.js.map +1 -1
  512. package/dist/esm/internal/stm/tReentrantLock.js.map +1 -1
  513. package/dist/esm/internal/stm/tRef.js.map +1 -1
  514. package/dist/esm/internal/stm/tSemaphore.js.map +1 -1
  515. package/dist/esm/internal/stm/tSet.js.map +1 -1
  516. package/dist/esm/internal/stream/debounceState.js.map +1 -1
  517. package/dist/esm/internal/stream/handoff.js.map +1 -1
  518. package/dist/esm/internal/stream/handoffSignal.js.map +1 -1
  519. package/dist/esm/internal/stream/pull.js.map +1 -1
  520. package/dist/esm/internal/stream.js +0 -2
  521. package/dist/esm/internal/stream.js.map +1 -1
  522. package/dist/esm/internal/subscriptionRef.js.map +1 -1
  523. package/dist/esm/internal/supervisor.js.map +1 -1
  524. package/dist/esm/internal/take.js +2 -2
  525. package/dist/esm/internal/take.js.map +1 -1
  526. package/dist/esm/internal/testing/sleep.js.map +1 -1
  527. package/dist/esm/internal/tracer.js +2 -2
  528. package/dist/esm/internal/tracer.js.map +1 -1
  529. package/dist/esm/internal/version.js +1 -1
  530. package/package.json +9 -1
  531. package/src/Cache.ts +20 -20
  532. package/src/Cause.ts +37 -13
  533. package/src/Channel.ts +802 -794
  534. package/src/Clock.ts +7 -7
  535. package/src/Config.ts +1 -1
  536. package/src/ConfigProvider.ts +6 -6
  537. package/src/Console.ts +44 -48
  538. package/src/Context.ts +52 -30
  539. package/src/Data.ts +38 -61
  540. package/src/Deferred.ts +39 -41
  541. package/src/Effect.ts +1187 -1206
  542. package/src/Effectable.ts +8 -8
  543. package/src/Either.ts +2 -3
  544. package/src/Exit.ts +88 -105
  545. package/src/Fiber.ts +77 -83
  546. package/src/FiberMap.ts +77 -77
  547. package/src/FiberRef.ts +28 -28
  548. package/src/FiberRefs.ts +1 -1
  549. package/src/FiberSet.ts +61 -62
  550. package/src/GroupBy.ts +8 -12
  551. package/src/KeyedPool.ts +22 -22
  552. package/src/Layer.ts +187 -181
  553. package/src/LogLevel.ts +7 -6
  554. package/src/Logger.ts +18 -18
  555. package/src/MergeDecision.ts +7 -7
  556. package/src/MergeState.ts +16 -16
  557. package/src/Metric.ts +39 -39
  558. package/src/MetricPolling.ts +6 -6
  559. package/src/Number.ts +19 -0
  560. package/src/Option.ts +2 -3
  561. package/src/Pool.ts +15 -16
  562. package/src/PubSub.ts +18 -18
  563. package/src/Queue.ts +43 -46
  564. package/src/Random.ts +13 -15
  565. package/src/RateLimiter.ts +37 -0
  566. package/src/ReadonlyRecord.ts +49 -8
  567. package/src/Ref.ts +25 -25
  568. package/src/Reloadable.ts +10 -10
  569. package/src/Request.ts +31 -31
  570. package/src/RequestBlock.ts +3 -3
  571. package/src/RequestResolver.ts +21 -21
  572. package/src/Resource.ts +13 -13
  573. package/src/Runtime.ts +16 -19
  574. package/src/RuntimeFlags.ts +10 -10
  575. package/src/STM.ts +361 -362
  576. package/src/Schedule.ts +47 -47
  577. package/src/Scheduler.ts +2 -2
  578. package/src/Scope.ts +14 -15
  579. package/src/ScopedCache.ts +14 -14
  580. package/src/ScopedRef.ts +7 -7
  581. package/src/SingleProducerAsyncInput.ts +8 -9
  582. package/src/Sink.ts +357 -381
  583. package/src/Stream.ts +935 -1033
  584. package/src/StreamEmit.ts +5 -5
  585. package/src/Streamable.ts +2 -2
  586. package/src/SubscriptionRef.ts +51 -51
  587. package/src/Supervisor.ts +26 -26
  588. package/src/SynchronizedRef.ts +44 -44
  589. package/src/TArray.ts +74 -74
  590. package/src/TDeferred.ts +14 -14
  591. package/src/TMap.ts +72 -72
  592. package/src/TPriorityQueue.ts +23 -24
  593. package/src/TPubSub.ts +15 -15
  594. package/src/TQueue.ts +40 -40
  595. package/src/TRandom.ts +13 -13
  596. package/src/TReentrantLock.ts +21 -21
  597. package/src/TRef.ts +25 -25
  598. package/src/TSemaphore.ts +15 -15
  599. package/src/TSet.ts +49 -49
  600. package/src/Take.ts +51 -51
  601. package/src/TestAnnotation.ts +6 -17
  602. package/src/TestAnnotations.ts +7 -9
  603. package/src/TestClock.ts +39 -45
  604. package/src/TestConfig.ts +1 -3
  605. package/src/TestContext.ts +3 -3
  606. package/src/TestLive.ts +3 -5
  607. package/src/TestServices.ts +45 -47
  608. package/src/TestSized.ts +5 -5
  609. package/src/Tracer.ts +1 -1
  610. package/src/Utils.ts +8 -10
  611. package/src/index.ts +13 -2
  612. package/src/internal/blockedRequests.ts +2 -2
  613. package/src/internal/cache.ts +38 -38
  614. package/src/internal/channel/channelExecutor.ts +65 -73
  615. package/src/internal/channel/channelState.ts +11 -11
  616. package/src/internal/channel/continuation.ts +10 -10
  617. package/src/internal/channel/mergeDecision.ts +14 -16
  618. package/src/internal/channel/mergeState.ts +12 -12
  619. package/src/internal/channel/singleProducerAsyncInput.ts +15 -17
  620. package/src/internal/channel/subexecutor.ts +7 -7
  621. package/src/internal/channel.ts +901 -980
  622. package/src/internal/clock.ts +6 -6
  623. package/src/internal/concurrency.ts +9 -9
  624. package/src/internal/configProvider.ts +29 -36
  625. package/src/internal/console.ts +12 -12
  626. package/src/internal/context.ts +32 -23
  627. package/src/internal/core-effect.ts +655 -616
  628. package/src/internal/core-stream.ts +317 -325
  629. package/src/internal/core.ts +856 -790
  630. package/src/internal/data.ts +2 -3
  631. package/src/internal/dataSource.ts +14 -14
  632. package/src/internal/defaultServices/console.ts +3 -1
  633. package/src/internal/defaultServices.ts +21 -21
  634. package/src/internal/deferred.ts +9 -9
  635. package/src/internal/differ/contextPatch.ts +17 -17
  636. package/src/internal/effect/circular.ts +154 -159
  637. package/src/internal/effectable.ts +7 -7
  638. package/src/internal/fiber.ts +55 -59
  639. package/src/internal/fiberRefs.ts +1 -1
  640. package/src/internal/fiberRuntime.ts +426 -463
  641. package/src/internal/groupBy.ts +59 -62
  642. package/src/internal/keyedPool.ts +37 -37
  643. package/src/internal/layer/circular.ts +37 -37
  644. package/src/internal/layer.ts +235 -240
  645. package/src/internal/logSpan.ts +3 -5
  646. package/src/internal/metric/polling.ts +5 -5
  647. package/src/internal/metric.ts +54 -55
  648. package/src/internal/pool.ts +72 -72
  649. package/src/internal/pubsub.ts +75 -84
  650. package/src/internal/query.ts +25 -27
  651. package/src/internal/queue.ts +65 -70
  652. package/src/internal/random.ts +9 -9
  653. package/src/internal/rateLimiter.ts +30 -0
  654. package/src/internal/ref.ts +24 -24
  655. package/src/internal/reloadable.ts +11 -31
  656. package/src/internal/request.ts +14 -14
  657. package/src/internal/resource.ts +8 -8
  658. package/src/internal/runtime.ts +21 -22
  659. package/src/internal/schedule.ts +131 -134
  660. package/src/internal/scopedCache.ts +35 -32
  661. package/src/internal/scopedRef.ts +14 -14
  662. package/src/internal/sink.ts +507 -565
  663. package/src/internal/stm/core.ts +101 -102
  664. package/src/internal/stm/stm/stmState.ts +10 -10
  665. package/src/internal/stm/stm/tExit.ts +18 -18
  666. package/src/internal/stm/stm/tryCommit.ts +5 -5
  667. package/src/internal/stm/stm.ts +363 -374
  668. package/src/internal/stm/tArray.ts +92 -92
  669. package/src/internal/stm/tDeferred.ts +16 -14
  670. package/src/internal/stm/tMap.ts +83 -84
  671. package/src/internal/stm/tPriorityQueue.ts +24 -25
  672. package/src/internal/stm/tPubSub.ts +37 -38
  673. package/src/internal/stm/tQueue.ts +44 -48
  674. package/src/internal/stm/tRandom.ts +18 -18
  675. package/src/internal/stm/tReentrantLock.ts +28 -28
  676. package/src/internal/stm/tRef.ts +25 -25
  677. package/src/internal/stm/tSemaphore.ts +16 -16
  678. package/src/internal/stm/tSet.ts +51 -52
  679. package/src/internal/stream/debounceState.ts +7 -7
  680. package/src/internal/stream/emit.ts +4 -4
  681. package/src/internal/stream/handoff.ts +19 -19
  682. package/src/internal/stream/handoffSignal.ts +4 -4
  683. package/src/internal/stream/pull.ts +10 -11
  684. package/src/internal/stream.ts +1770 -1788
  685. package/src/internal/subscriptionRef.ts +17 -17
  686. package/src/internal/supervisor.ts +49 -56
  687. package/src/internal/synchronizedRef.ts +27 -27
  688. package/src/internal/take.ts +61 -61
  689. package/src/internal/testing/sleep.ts +2 -2
  690. package/src/internal/testing/suspendedWarningData.ts +2 -2
  691. package/src/internal/testing/warningData.ts +2 -2
  692. package/src/internal/tracer.ts +2 -6
  693. package/src/internal/version.ts +1 -1
@@ -84,23 +84,23 @@ export type Op<Tag extends string, Body = {}> = Layer.Layer<unknown, unknown, un
84
84
  /** @internal */
85
85
  export interface ExtendScope extends
86
86
  Op<OpCodes.OP_EXTEND_SCOPE, {
87
- readonly layer: Layer.Layer<never, never, unknown>
87
+ readonly layer: Layer.Layer<unknown>
88
88
  }>
89
89
  {}
90
90
 
91
91
  /** @internal */
92
92
  export interface Fold extends
93
93
  Op<OpCodes.OP_FOLD, {
94
- readonly layer: Layer.Layer<never, never, unknown>
95
- failureK(cause: Cause.Cause<unknown>): Layer.Layer<never, never, unknown>
96
- successK(context: Context.Context<unknown>): Layer.Layer<never, never, unknown>
94
+ readonly layer: Layer.Layer<unknown>
95
+ failureK(cause: Cause.Cause<unknown>): Layer.Layer<unknown>
96
+ successK(context: Context.Context<unknown>): Layer.Layer<unknown>
97
97
  }>
98
98
  {}
99
99
 
100
100
  /** @internal */
101
101
  export interface Fresh extends
102
102
  Op<OpCodes.OP_FRESH, {
103
- readonly layer: Layer.Layer<never, never, unknown>
103
+ readonly layer: Layer.Layer<unknown>
104
104
  }>
105
105
  {}
106
106
 
@@ -121,14 +121,14 @@ export interface Scoped extends
121
121
  /** @internal */
122
122
  export interface Suspend extends
123
123
  Op<OpCodes.OP_SUSPEND, {
124
- evaluate(): Layer.Layer<never, never, unknown>
124
+ evaluate(): Layer.Layer<unknown>
125
125
  }>
126
126
  {}
127
127
 
128
128
  /** @internal */
129
129
  export interface Locally extends
130
130
  Op<"Locally", {
131
- readonly self: Layer.Layer<never, never, unknown>
131
+ readonly self: Layer.Layer<unknown>
132
132
  f(_: Effect.Effect<any, any, any>): Effect.Effect<any, any, any>
133
133
  }>
134
134
  {}
@@ -136,16 +136,16 @@ export interface Locally extends
136
136
  /** @internal */
137
137
  export interface ProvideTo extends
138
138
  Op<OpCodes.OP_PROVIDE, {
139
- readonly first: Layer.Layer<never, never, unknown>
140
- readonly second: Layer.Layer<never, never, unknown>
139
+ readonly first: Layer.Layer<unknown>
140
+ readonly second: Layer.Layer<unknown>
141
141
  }>
142
142
  {}
143
143
 
144
144
  /** @internal */
145
145
  export interface ZipWith extends
146
146
  Op<OpCodes.OP_PROVIDE_MERGE, {
147
- readonly first: Layer.Layer<never, never, unknown>
148
- readonly second: Layer.Layer<never, never, unknown>
147
+ readonly first: Layer.Layer<unknown>
148
+ readonly second: Layer.Layer<unknown>
149
149
  zipK(left: Context.Context<unknown>, right: Context.Context<unknown>): Context.Context<unknown>
150
150
  }>
151
151
  {}
@@ -153,8 +153,8 @@ export interface ZipWith extends
153
153
  /** @internal */
154
154
  export interface ZipWithPar extends
155
155
  Op<OpCodes.OP_ZIP_WITH, {
156
- readonly first: Layer.Layer<never, never, unknown>
157
- readonly second: Layer.Layer<never, never, unknown>
156
+ readonly first: Layer.Layer<unknown>
157
+ readonly second: Layer.Layer<unknown>
158
158
  zipK(left: Context.Context<unknown>, right: Context.Context<unknown>): Context.Context<unknown>
159
159
  }>
160
160
  {}
@@ -163,7 +163,7 @@ export interface ZipWithPar extends
163
163
  export const isLayer = (u: unknown): u is Layer.Layer<unknown, unknown, unknown> => hasProperty(u, LayerTypeId)
164
164
 
165
165
  /** @internal */
166
- export const isFresh = <R, E, A>(self: Layer.Layer<R, E, A>): boolean => {
166
+ export const isFresh = <RIn, E, ROut>(self: Layer.Layer<ROut, E, RIn>): boolean => {
167
167
  return (self as Primitive)._tag === OpCodes.OP_FRESH
168
168
  }
169
169
 
@@ -178,7 +178,7 @@ class MemoMapImpl implements Layer.MemoMap {
178
178
  readonly ref: Synchronized.SynchronizedRef<
179
179
  Map<
180
180
  Layer.Layer<any, any, any>,
181
- readonly [Effect.Effect<never, any, any>, Scope.Scope.Finalizer]
181
+ readonly [Effect.Effect<any, any>, Scope.Scope.Finalizer]
182
182
  >
183
183
  >
184
184
  ) {
@@ -191,16 +191,16 @@ class MemoMapImpl implements Layer.MemoMap {
191
191
  * and adds a finalizer to the `Scope`.
192
192
  */
193
193
  getOrElseMemoize<RIn, E, ROut>(
194
- layer: Layer.Layer<RIn, E, ROut>,
194
+ layer: Layer.Layer<ROut, E, RIn>,
195
195
  scope: Scope.Scope
196
- ): Effect.Effect<RIn, E, Context.Context<ROut>> {
196
+ ): Effect.Effect<Context.Context<ROut>, E, RIn> {
197
197
  return pipe(
198
198
  synchronized.modifyEffect(this.ref, (map) => {
199
199
  const inMap = map.get(layer)
200
200
  if (inMap !== undefined) {
201
201
  const [acquire, release] = inMap
202
- const cached: Effect.Effect<never, E, Context.Context<ROut>> = pipe(
203
- acquire as Effect.Effect<never, E, readonly [FiberRefsPatch.FiberRefsPatch, Context.Context<ROut>]>,
202
+ const cached: Effect.Effect<Context.Context<ROut>, E> = pipe(
203
+ acquire as Effect.Effect<readonly [FiberRefsPatch.FiberRefsPatch, Context.Context<ROut>], E>,
204
204
  core.flatMap(([patch, b]) => pipe(effect.patchFiberRefs(patch), core.as(b))),
205
205
  core.onExit(core.exitMatch({
206
206
  onFailure: () => core.unit,
@@ -213,7 +213,7 @@ class MemoMapImpl implements Layer.MemoMap {
213
213
  ref.make(0),
214
214
  core.flatMap((observers) =>
215
215
  pipe(
216
- core.deferredMake<E, readonly [FiberRefsPatch.FiberRefsPatch, Context.Context<ROut>]>(),
216
+ core.deferredMake<readonly [FiberRefsPatch.FiberRefsPatch, Context.Context<ROut>], E>(),
217
217
  core.flatMap((deferred) =>
218
218
  pipe(
219
219
  ref.make<Scope.Scope.Finalizer>(() => core.unit),
@@ -297,13 +297,13 @@ class MemoMapImpl implements Layer.MemoMap {
297
297
  }
298
298
 
299
299
  /** @internal */
300
- export const makeMemoMap: Effect.Effect<never, never, Layer.MemoMap> = core.suspend(() =>
300
+ export const makeMemoMap: Effect.Effect<Layer.MemoMap> = core.suspend(() =>
301
301
  core.map(
302
302
  circular.makeSynchronized<
303
303
  Map<
304
304
  Layer.Layer<any, any, any>,
305
305
  readonly [
306
- Effect.Effect<never, any, any>,
306
+ Effect.Effect<any, any>,
307
307
  Scope.Scope.Finalizer
308
308
  ]
309
309
  >
@@ -314,19 +314,19 @@ export const makeMemoMap: Effect.Effect<never, never, Layer.MemoMap> = core.susp
314
314
 
315
315
  /** @internal */
316
316
  export const build = <RIn, E, ROut>(
317
- self: Layer.Layer<RIn, E, ROut>
318
- ): Effect.Effect<RIn | Scope.Scope, E, Context.Context<ROut>> =>
317
+ self: Layer.Layer<ROut, E, RIn>
318
+ ): Effect.Effect<Context.Context<ROut>, E, RIn | Scope.Scope> =>
319
319
  fiberRuntime.scopeWith((scope) => buildWithScope(self, scope))
320
320
 
321
321
  /** @internal */
322
322
  export const buildWithScope = dual<
323
323
  (
324
324
  scope: Scope.Scope
325
- ) => <RIn, E, ROut>(self: Layer.Layer<RIn, E, ROut>) => Effect.Effect<RIn, E, Context.Context<ROut>>,
325
+ ) => <RIn, E, ROut>(self: Layer.Layer<ROut, E, RIn>) => Effect.Effect<Context.Context<ROut>, E, RIn>,
326
326
  <RIn, E, ROut>(
327
- self: Layer.Layer<RIn, E, ROut>,
327
+ self: Layer.Layer<ROut, E, RIn>,
328
328
  scope: Scope.Scope
329
- ) => Effect.Effect<RIn, E, Context.Context<ROut>>
329
+ ) => Effect.Effect<Context.Context<ROut>, E, RIn>
330
330
  >(2, (self, scope) =>
331
331
  core.flatMap(
332
332
  makeMemoMap,
@@ -338,19 +338,19 @@ export const buildWithMemoMap = dual<
338
338
  (
339
339
  memoMap: Layer.MemoMap,
340
340
  scope: Scope.Scope
341
- ) => <RIn, E, ROut>(self: Layer.Layer<RIn, E, ROut>) => Effect.Effect<RIn, E, Context.Context<ROut>>,
341
+ ) => <RIn, E, ROut>(self: Layer.Layer<ROut, E, RIn>) => Effect.Effect<Context.Context<ROut>, E, RIn>,
342
342
  <RIn, E, ROut>(
343
- self: Layer.Layer<RIn, E, ROut>,
343
+ self: Layer.Layer<ROut, E, RIn>,
344
344
  memoMap: Layer.MemoMap,
345
345
  scope: Scope.Scope
346
- ) => Effect.Effect<RIn, E, Context.Context<ROut>>
346
+ ) => Effect.Effect<Context.Context<ROut>, E, RIn>
347
347
  >(3, (self, memoMap, scope) => core.flatMap(makeBuilder(self, scope), (run) => run(memoMap)))
348
348
 
349
349
  const makeBuilder = <RIn, E, ROut>(
350
- self: Layer.Layer<RIn, E, ROut>,
350
+ self: Layer.Layer<ROut, E, RIn>,
351
351
  scope: Scope.Scope,
352
352
  inMemoMap = false
353
- ): Effect.Effect<never, never, (memoMap: Layer.MemoMap) => Effect.Effect<RIn, E, Context.Context<ROut>>> => {
353
+ ): Effect.Effect<(memoMap: Layer.MemoMap) => Effect.Effect<Context.Context<ROut>, E, RIn>> => {
354
354
  const op = self as Primitive
355
355
  switch (op._tag) {
356
356
  case "Locally": {
@@ -360,7 +360,7 @@ const makeBuilder = <RIn, E, ROut>(
360
360
  return core.sync(() => (memoMap: Layer.MemoMap) =>
361
361
  fiberRuntime.scopeWith(
362
362
  (scope) => memoMap.getOrElseMemoize(op.layer, scope)
363
- ) as unknown as Effect.Effect<RIn, E, Context.Context<ROut>>
363
+ ) as unknown as Effect.Effect<Context.Context<ROut>, E, RIn>
364
364
  )
365
365
  }
366
366
  case "Fold": {
@@ -379,7 +379,7 @@ const makeBuilder = <RIn, E, ROut>(
379
379
  }
380
380
  case "FromEffect": {
381
381
  return inMemoMap
382
- ? core.sync(() => (_: Layer.MemoMap) => op.effect as Effect.Effect<RIn, E, Context.Context<ROut>>)
382
+ ? core.sync(() => (_: Layer.MemoMap) => op.effect as Effect.Effect<Context.Context<ROut>, E, RIn>)
383
383
  : core.sync(() => (memoMap: Layer.MemoMap) => memoMap.getOrElseMemoize(self, scope))
384
384
  }
385
385
  case "Provide": {
@@ -399,7 +399,7 @@ const makeBuilder = <RIn, E, ROut>(
399
399
  return inMemoMap
400
400
  ? core.sync(() => (_: Layer.MemoMap) =>
401
401
  fiberRuntime.scopeExtend(
402
- op.effect as Effect.Effect<RIn, E, Context.Context<ROut>>,
402
+ op.effect as Effect.Effect<Context.Context<ROut>, E, RIn>,
403
403
  scope
404
404
  )
405
405
  )
@@ -445,35 +445,34 @@ const makeBuilder = <RIn, E, ROut>(
445
445
 
446
446
  /** @internal */
447
447
  export const catchAll = dual<
448
- <E, R2, E2, A2>(
449
- onError: (error: E) => Layer.Layer<R2, E2, A2>
450
- ) => <R, A>(self: Layer.Layer<R, E, A>) => Layer.Layer<R | R2, E2, A & A2>,
451
- <R, E, A, R2, E2, A2>(
452
- self: Layer.Layer<R, E, A>,
453
- onError: (error: E) => Layer.Layer<R2, E2, A2>
454
- ) => Layer.Layer<R | R2, E2, A & A2>
448
+ <E, RIn2, E2, ROut2>(
449
+ onError: (error: E) => Layer.Layer<ROut2, E2, RIn2>
450
+ ) => <RIn, ROut>(self: Layer.Layer<ROut, E, RIn>) => Layer.Layer<ROut & ROut2, E2, RIn | RIn2>,
451
+ <RIn, E, ROut, RIn2, E2, ROut2>(
452
+ self: Layer.Layer<ROut, E, RIn>,
453
+ onError: (error: E) => Layer.Layer<ROut2, E2, RIn2>
454
+ ) => Layer.Layer<ROut & ROut2, E2, RIn | RIn2>
455
455
  >(2, (self, onFailure) => match(self, { onFailure, onSuccess: succeedContext }))
456
456
 
457
457
  /** @internal */
458
458
  export const catchAllCause = dual<
459
- <E, R2, E2, A2>(
460
- onError: (cause: Cause.Cause<E>) => Layer.Layer<R2, E2, A2>
461
- ) => <R, A>(self: Layer.Layer<R, E, A>) => Layer.Layer<R | R2, E2, A & A2>,
462
- <R, E, A, R2, E2, A2>(
463
- self: Layer.Layer<R, E, A>,
464
- onError: (cause: Cause.Cause<E>) => Layer.Layer<R2, E2, A2>
465
- ) => Layer.Layer<R | R2, E2, A & A2>
459
+ <E, RIn2, E2, ROut2>(
460
+ onError: (cause: Cause.Cause<E>) => Layer.Layer<ROut2, E2, RIn2>
461
+ ) => <RIn, ROut>(self: Layer.Layer<ROut, E, RIn>) => Layer.Layer<ROut & ROut2, E2, RIn | RIn2>,
462
+ <RIn, E, ROut, RIn2, E2, ROut22>(
463
+ self: Layer.Layer<ROut, E, RIn>,
464
+ onError: (cause: Cause.Cause<E>) => Layer.Layer<ROut22, E2, RIn2>
465
+ ) => Layer.Layer<ROut & ROut22, E2, RIn | RIn2>
466
466
  >(2, (self, onFailure) => matchCause(self, { onFailure, onSuccess: succeedContext }))
467
467
 
468
468
  /** @internal */
469
- export const die = (defect: unknown): Layer.Layer<never, never, unknown> => failCause(Cause.die(defect))
469
+ export const die = (defect: unknown): Layer.Layer<unknown> => failCause(Cause.die(defect))
470
470
 
471
471
  /** @internal */
472
- export const dieSync = (evaluate: LazyArg<unknown>): Layer.Layer<never, never, unknown> =>
473
- failCauseSync(() => Cause.die(evaluate()))
472
+ export const dieSync = (evaluate: LazyArg<unknown>): Layer.Layer<unknown> => failCauseSync(() => Cause.die(evaluate()))
474
473
 
475
474
  /** @internal */
476
- export const discard = <RIn, E, ROut>(self: Layer.Layer<RIn, E, ROut>): Layer.Layer<RIn, E, never> =>
475
+ export const discard = <RIn, E, ROut>(self: Layer.Layer<ROut, E, RIn>): Layer.Layer<never, E, RIn> =>
477
476
  map(self, () => Context.empty())
478
477
 
479
478
  /** @internal */
@@ -481,8 +480,8 @@ export const context = <R>(): Layer.Layer<R, never, R> => fromEffectContext(core
481
480
 
482
481
  /** @internal */
483
482
  export const extendScope = <RIn, E, ROut>(
484
- self: Layer.Layer<RIn, E, ROut>
485
- ): Layer.Layer<RIn | Scope.Scope, E, ROut> => {
483
+ self: Layer.Layer<ROut, E, RIn>
484
+ ): Layer.Layer<ROut, E, RIn | Scope.Scope> => {
486
485
  const extendScope = Object.create(proto)
487
486
  extendScope._tag = OpCodes.OP_EXTEND_SCOPE
488
487
  extendScope.layer = self
@@ -490,46 +489,45 @@ export const extendScope = <RIn, E, ROut>(
490
489
  }
491
490
 
492
491
  /** @internal */
493
- export const fail = <E>(error: E): Layer.Layer<never, E, unknown> => failCause(Cause.fail(error))
492
+ export const fail = <E>(error: E): Layer.Layer<unknown, E> => failCause(Cause.fail(error))
494
493
 
495
494
  /** @internal */
496
- export const failSync = <E>(evaluate: LazyArg<E>): Layer.Layer<never, E, unknown> =>
495
+ export const failSync = <E>(evaluate: LazyArg<E>): Layer.Layer<unknown, E> =>
497
496
  failCauseSync(() => Cause.fail(evaluate()))
498
497
 
499
498
  /** @internal */
500
- export const failCause = <E>(cause: Cause.Cause<E>): Layer.Layer<never, E, unknown> =>
501
- fromEffectContext(core.failCause(cause))
499
+ export const failCause = <E>(cause: Cause.Cause<E>): Layer.Layer<unknown, E> => fromEffectContext(core.failCause(cause))
502
500
 
503
501
  /** @internal */
504
- export const failCauseSync = <E>(evaluate: LazyArg<Cause.Cause<E>>): Layer.Layer<never, E, unknown> =>
502
+ export const failCauseSync = <E>(evaluate: LazyArg<Cause.Cause<E>>): Layer.Layer<unknown, E> =>
505
503
  fromEffectContext(core.failCauseSync(evaluate))
506
504
 
507
505
  /** @internal */
508
506
  export const flatMap = dual<
509
507
  <A, R2, E2, A2>(
510
- f: (context: Context.Context<A>) => Layer.Layer<R2, E2, A2>
511
- ) => <R, E>(self: Layer.Layer<R, E, A>) => Layer.Layer<R | R2, E | E2, A2>,
508
+ f: (context: Context.Context<A>) => Layer.Layer<A2, E2, R2>
509
+ ) => <R, E>(self: Layer.Layer<A, E, R>) => Layer.Layer<A2, E | E2, R | R2>,
512
510
  <R, E, A, R2, E2, A2>(
513
- self: Layer.Layer<R, E, A>,
514
- f: (context: Context.Context<A>) => Layer.Layer<R2, E2, A2>
515
- ) => Layer.Layer<R | R2, E | E2, A2>
511
+ self: Layer.Layer<A, E, R>,
512
+ f: (context: Context.Context<A>) => Layer.Layer<A2, E2, R2>
513
+ ) => Layer.Layer<A2, E | E2, R | R2>
516
514
  >(2, (self, f) => match(self, { onFailure: fail, onSuccess: f }))
517
515
 
518
516
  /** @internal */
519
517
  export const flatten = dual<
520
518
  <R2, E2, A, I>(
521
- tag: Context.Tag<I, Layer.Layer<R2, E2, A>>
519
+ tag: Context.Tag<I, Layer.Layer<A, E2, R2>>
522
520
  ) => <R, E>(
523
- self: Layer.Layer<R, E, I>
524
- ) => Layer.Layer<R | R2, E | E2, A>,
521
+ self: Layer.Layer<I, E, R>
522
+ ) => Layer.Layer<A, E | E2, R | R2>,
525
523
  <R, E, A, R2, E2, I>(
526
- self: Layer.Layer<R, E, I>,
527
- tag: Context.Tag<I, Layer.Layer<R2, E2, A>>
528
- ) => Layer.Layer<R | R2, E | E2, A>
524
+ self: Layer.Layer<I, E, R>,
525
+ tag: Context.Tag<I, Layer.Layer<A, E2, R2>>
526
+ ) => Layer.Layer<A, E | E2, R | R2>
529
527
  >(2, (self, tag) => flatMap(self, Context.get(tag as any) as any))
530
528
 
531
529
  /** @internal */
532
- export const fresh = <R, E, A>(self: Layer.Layer<R, E, A>): Layer.Layer<R, E, A> => {
530
+ export const fresh = <A, E, R>(self: Layer.Layer<A, E, R>): Layer.Layer<A, E, R> => {
533
531
  const fresh = Object.create(proto)
534
532
  fresh._tag = OpCodes.OP_FRESH
535
533
  fresh.layer = self
@@ -540,13 +538,13 @@ export const fresh = <R, E, A>(self: Layer.Layer<R, E, A>): Layer.Layer<R, E, A>
540
538
  export const fromEffect = dual<
541
539
  <T extends Context.Tag<any, any>>(
542
540
  tag: T
543
- ) => <R, E>(
544
- effect: Effect.Effect<R, E, Context.Tag.Service<T>>
545
- ) => Layer.Layer<R, E, Context.Tag.Identifier<T>>,
546
- <T extends Context.Tag<any, any>, R, E>(
541
+ ) => <E, R>(
542
+ effect: Effect.Effect<Context.Tag.Service<T>, E, R>
543
+ ) => Layer.Layer<Context.Tag.Identifier<T>, E, R>,
544
+ <T extends Context.Tag<any, any>, E, R>(
547
545
  tag: T,
548
- effect: Effect.Effect<R, E, Context.Tag.Service<T>>
549
- ) => Layer.Layer<R, E, Context.Tag.Identifier<T>>
546
+ effect: Effect.Effect<Context.Tag.Service<T>, E, R>
547
+ ) => Layer.Layer<Context.Tag.Identifier<T>, E, R>
550
548
  >(2, (a, b) => {
551
549
  const tagFirst = Context.isTag(a)
552
550
  const tag = (tagFirst ? a : b) as Context.Tag<unknown, unknown>
@@ -555,13 +553,13 @@ export const fromEffect = dual<
555
553
  })
556
554
 
557
555
  /** @internal */
558
- export const fromEffectDiscard = <R, E, _>(effect: Effect.Effect<R, E, _>) =>
556
+ export const fromEffectDiscard = <_, E, R>(effect: Effect.Effect<_, E, R>) =>
559
557
  fromEffectContext(core.map(effect, () => Context.empty()))
560
558
 
561
559
  /** @internal */
562
- export function fromEffectContext<R, E, A>(
563
- effect: Effect.Effect<R, E, Context.Context<A>>
564
- ): Layer.Layer<R, E, A> {
560
+ export function fromEffectContext<A, E, R>(
561
+ effect: Effect.Effect<Context.Context<A>, E, R>
562
+ ): Layer.Layer<A, E, R> {
565
563
  const fromEffect = Object.create(proto)
566
564
  fromEffect._tag = OpCodes.OP_FROM_EFFECT
567
565
  fromEffect.effect = effect
@@ -570,19 +568,19 @@ export function fromEffectContext<R, E, A>(
570
568
 
571
569
  /** @internal */
572
570
  export const fiberRefLocally = dual<
573
- <X>(ref: FiberRef<X>, value: X) => <R, E, A>(self: Layer.Layer<R, E, A>) => Layer.Layer<R, E, A>,
574
- <R, E, A, X>(self: Layer.Layer<R, E, A>, ref: FiberRef<X>, value: X) => Layer.Layer<R, E, A>
571
+ <X>(ref: FiberRef<X>, value: X) => <A, E, R>(self: Layer.Layer<A, E, R>) => Layer.Layer<A, E, R>,
572
+ <R, E, A, X>(self: Layer.Layer<A, E, R>, ref: FiberRef<X>, value: X) => Layer.Layer<A, E, R>
575
573
  >(3, (self, ref, value) => locallyEffect(self, core.fiberRefLocally(ref, value)))
576
574
 
577
575
  /** @internal */
578
576
  export const locallyEffect = dual<
579
577
  <RIn, E, ROut, RIn2, E2, ROut2>(
580
578
  f: (_: Effect.Effect<RIn, E, Context.Context<ROut>>) => Effect.Effect<RIn2, E2, Context.Context<ROut2>>
581
- ) => (self: Layer.Layer<RIn, E, ROut>) => Layer.Layer<RIn2, E2, ROut2>,
579
+ ) => (self: Layer.Layer<ROut, E, RIn>) => Layer.Layer<ROut2, E2, RIn2>,
582
580
  <RIn, E, ROut, RIn2, E2, ROut2>(
583
- self: Layer.Layer<RIn, E, ROut>,
581
+ self: Layer.Layer<ROut, E, RIn>,
584
582
  f: (_: Effect.Effect<RIn, E, Context.Context<ROut>>) => Effect.Effect<RIn2, E2, Context.Context<ROut2>>
585
- ) => Layer.Layer<RIn2, E2, ROut2>
583
+ ) => Layer.Layer<ROut2, E2, RIn2>
586
584
  >(2, (self, f) => {
587
585
  const locally = Object.create(proto)
588
586
  locally._tag = "Locally"
@@ -593,16 +591,16 @@ export const locallyEffect = dual<
593
591
 
594
592
  /** @internal */
595
593
  export const fiberRefLocallyWith = dual<
596
- <X>(ref: FiberRef<X>, value: (_: X) => X) => <R, E, A>(self: Layer.Layer<R, E, A>) => Layer.Layer<R, E, A>,
597
- <R, E, A, X>(self: Layer.Layer<R, E, A>, ref: FiberRef<X>, value: (_: X) => X) => Layer.Layer<R, E, A>
594
+ <X>(ref: FiberRef<X>, value: (_: X) => X) => <A, E, R>(self: Layer.Layer<A, E, R>) => Layer.Layer<A, E, R>,
595
+ <R, E, A, X>(self: Layer.Layer<A, E, R>, ref: FiberRef<X>, value: (_: X) => X) => Layer.Layer<A, E, R>
598
596
  >(3, (self, ref, value) => locallyEffect(self, core.fiberRefLocallyWith(ref, value)))
599
597
 
600
598
  /** @internal */
601
- export const fiberRefLocallyScoped = <A>(self: FiberRef<A>, value: A): Layer.Layer<never, never, never> =>
599
+ export const fiberRefLocallyScoped = <A>(self: FiberRef<A>, value: A): Layer.Layer<never> =>
602
600
  scopedDiscard(fiberRuntime.fiberRefLocallyScoped(self, value))
603
601
 
604
602
  /** @internal */
605
- export const fiberRefLocallyScopedWith = <A>(self: FiberRef<A>, value: (_: A) => A): Layer.Layer<never, never, never> =>
603
+ export const fiberRefLocallyScopedWith = <A>(self: FiberRef<A>, value: (_: A) => A): Layer.Layer<never> =>
606
604
  scopedDiscard(fiberRuntime.fiberRefLocallyScopedWith(self, value))
607
605
 
608
606
  /** @internal */
@@ -610,11 +608,11 @@ export const fromFunction = <A extends Context.Tag<any, any>, B extends Context.
610
608
  tagA: A,
611
609
  tagB: B,
612
610
  f: (a: Context.Tag.Service<A>) => Context.Tag.Service<B>
613
- ): Layer.Layer<Context.Tag.Identifier<A>, never, Context.Tag.Identifier<B>> =>
611
+ ): Layer.Layer<Context.Tag.Identifier<B>, never, Context.Tag.Identifier<A>> =>
614
612
  fromEffectContext(core.map(tagA, (a) => Context.make(tagB, f(a))))
615
613
 
616
614
  /** @internal */
617
- export const launch = <RIn, E, ROut>(self: Layer.Layer<RIn, E, ROut>): Effect.Effect<RIn, E, never> =>
615
+ export const launch = <RIn, E, ROut>(self: Layer.Layer<ROut, E, RIn>): Effect.Effect<never, E, RIn> =>
618
616
  fiberRuntime.scopedEffect(
619
617
  core.zipRight(
620
618
  fiberRuntime.scopeWith((scope) => pipe(self, buildWithScope(scope))),
@@ -626,34 +624,34 @@ export const launch = <RIn, E, ROut>(self: Layer.Layer<RIn, E, ROut>): Effect.Ef
626
624
  export const map = dual<
627
625
  <A, B>(
628
626
  f: (context: Context.Context<A>) => Context.Context<B>
629
- ) => <R, E>(self: Layer.Layer<R, E, A>) => Layer.Layer<R, E, B>,
627
+ ) => <R, E>(self: Layer.Layer<A, E, R>) => Layer.Layer<B, E, R>,
630
628
  <R, E, A, B>(
631
- self: Layer.Layer<R, E, A>,
629
+ self: Layer.Layer<A, E, R>,
632
630
  f: (context: Context.Context<A>) => Context.Context<B>
633
- ) => Layer.Layer<R, E, B>
631
+ ) => Layer.Layer<B, E, R>
634
632
  >(2, (self, f) => flatMap(self, (context) => succeedContext(f(context))))
635
633
 
636
634
  /** @internal */
637
635
  export const mapError = dual<
638
- <E, E2>(f: (error: E) => E2) => <R, A>(self: Layer.Layer<R, E, A>) => Layer.Layer<R, E2, A>,
639
- <R, E, A, E2>(self: Layer.Layer<R, E, A>, f: (error: E) => E2) => Layer.Layer<R, E2, A>
636
+ <E, E2>(f: (error: E) => E2) => <R, A>(self: Layer.Layer<A, E, R>) => Layer.Layer<A, E2, R>,
637
+ <R, E, A, E2>(self: Layer.Layer<A, E, R>, f: (error: E) => E2) => Layer.Layer<A, E2, R>
640
638
  >(2, (self, f) => catchAll(self, (error) => failSync(() => f(error))))
641
639
 
642
640
  /** @internal */
643
641
  export const matchCause = dual<
644
642
  <E, A, R2, E2, A2, R3, E3, A3>(
645
643
  options: {
646
- readonly onFailure: (cause: Cause.Cause<E>) => Layer.Layer<R2, E2, A2>
647
- readonly onSuccess: (context: Context.Context<A>) => Layer.Layer<R3, E3, A3>
644
+ readonly onFailure: (cause: Cause.Cause<E>) => Layer.Layer<A2, E2, R2>
645
+ readonly onSuccess: (context: Context.Context<A>) => Layer.Layer<A3, E3, R3>
648
646
  }
649
- ) => <R>(self: Layer.Layer<R, E, A>) => Layer.Layer<R | R2 | R3, E2 | E3, A2 & A3>,
647
+ ) => <R>(self: Layer.Layer<A, E, R>) => Layer.Layer<A2 & A3, E2 | E3, R | R2 | R3>,
650
648
  <R, E, A, R2, E2, A2, R3, E3, A3>(
651
- self: Layer.Layer<R, E, A>,
649
+ self: Layer.Layer<A, E, R>,
652
650
  options: {
653
- readonly onFailure: (cause: Cause.Cause<E>) => Layer.Layer<R2, E2, A2>
654
- readonly onSuccess: (context: Context.Context<A>) => Layer.Layer<R3, E3, A3>
651
+ readonly onFailure: (cause: Cause.Cause<E>) => Layer.Layer<A2, E2, R2>
652
+ readonly onSuccess: (context: Context.Context<A>) => Layer.Layer<A3, E3, R3>
655
653
  }
656
- ) => Layer.Layer<R | R2 | R3, E2 | E3, A2 & A3>
654
+ ) => Layer.Layer<A2 & A3, E2 | E3, R | R2 | R3>
657
655
  >(2, (self, { onFailure, onSuccess }) => {
658
656
  const fold = Object.create(proto)
659
657
  fold._tag = OpCodes.OP_FOLD
@@ -667,17 +665,17 @@ export const matchCause = dual<
667
665
  export const match = dual<
668
666
  <E, R2, E2, A2, A, R3, E3, A3>(
669
667
  options: {
670
- readonly onFailure: (error: E) => Layer.Layer<R2, E2, A2>
671
- readonly onSuccess: (context: Context.Context<A>) => Layer.Layer<R3, E3, A3>
668
+ readonly onFailure: (error: E) => Layer.Layer<A2, E2, R2>
669
+ readonly onSuccess: (context: Context.Context<A>) => Layer.Layer<A3, E3, R3>
672
670
  }
673
- ) => <R>(self: Layer.Layer<R, E, A>) => Layer.Layer<R | R2 | R3, E2 | E3, A2 & A3>,
671
+ ) => <R>(self: Layer.Layer<A, E, R>) => Layer.Layer<A2 & A3, E2 | E3, R | R2 | R3>,
674
672
  <R, E, A, R2, E2, A2, R3, E3, A3>(
675
- self: Layer.Layer<R, E, A>,
673
+ self: Layer.Layer<A, E, R>,
676
674
  options: {
677
- readonly onFailure: (error: E) => Layer.Layer<R2, E2, A2>
678
- readonly onSuccess: (context: Context.Context<A>) => Layer.Layer<R3, E3, A3>
675
+ readonly onFailure: (error: E) => Layer.Layer<A2, E2, R2>
676
+ readonly onSuccess: (context: Context.Context<A>) => Layer.Layer<A3, E3, R3>
679
677
  }
680
- ) => Layer.Layer<R | R2 | R3, E2 | E3, A2 & A3>
678
+ ) => Layer.Layer<A2 & A3, E2 | E3, R | R2 | R3>
681
679
  >(2, (self, { onFailure, onSuccess }) =>
682
680
  matchCause(self, {
683
681
  onFailure: (cause) => {
@@ -696,8 +694,8 @@ export const match = dual<
696
694
 
697
695
  /** @internal */
698
696
  export const memoize = <RIn, E, ROut>(
699
- self: Layer.Layer<RIn, E, ROut>
700
- ): Effect.Effect<Scope.Scope, never, Layer.Layer<RIn, E, ROut>> =>
697
+ self: Layer.Layer<ROut, E, RIn>
698
+ ): Effect.Effect<Layer.Layer<ROut, E, RIn>, never, Scope.Scope> =>
701
699
  fiberRuntime.scopeWith((scope) =>
702
700
  core.map(
703
701
  effect.memoize(buildWithScope(self, scope)),
@@ -708,26 +706,26 @@ export const memoize = <RIn, E, ROut>(
708
706
  /** @internal */
709
707
  export const merge = dual<
710
708
  <RIn2, E2, ROut2>(
711
- that: Layer.Layer<RIn2, E2, ROut2>
712
- ) => <RIn, E1, ROut>(self: Layer.Layer<RIn, E1, ROut>) => Layer.Layer<
713
- RIn | RIn2,
709
+ that: Layer.Layer<ROut2, E2, RIn2>
710
+ ) => <RIn, E1, ROut>(self: Layer.Layer<ROut, E1, RIn>) => Layer.Layer<
711
+ ROut | ROut2,
714
712
  E1 | E2,
715
- ROut | ROut2
713
+ RIn | RIn2
716
714
  >,
717
- <RIn, E1, ROut, RIn2, E2, ROut2>(self: Layer.Layer<RIn, E1, ROut>, that: Layer.Layer<RIn2, E2, ROut2>) => Layer.Layer<
718
- RIn | RIn2,
715
+ <RIn, E1, ROut, RIn2, E2, ROut2>(self: Layer.Layer<ROut, E1, RIn>, that: Layer.Layer<ROut2, E2, RIn2>) => Layer.Layer<
716
+ ROut | ROut2,
719
717
  E1 | E2,
720
- ROut | ROut2
718
+ RIn | RIn2
721
719
  >
722
720
  >(2, (self, that) => zipWith(self, that, (a, b) => Context.merge(a, b)))
723
721
 
724
722
  /** @internal */
725
- export const mergeAll = <Layers extends [Layer.Layer<any, any, never>, ...Array<Layer.Layer<any, any, never>>]>(
723
+ export const mergeAll = <Layers extends [Layer.Layer<never, any, any>, ...Array<Layer.Layer<never, any, any>>]>(
726
724
  ...layers: Layers
727
725
  ): Layer.Layer<
728
- { [k in keyof Layers]: Layer.Layer.Context<Layers[k]> }[number],
726
+ { [k in keyof Layers]: Layer.Layer.Success<Layers[k]> }[number],
729
727
  { [k in keyof Layers]: Layer.Layer.Error<Layers[k]> }[number],
730
- { [k in keyof Layers]: Layer.Layer.Success<Layers[k]> }[number]
728
+ { [k in keyof Layers]: Layer.Layer.Context<Layers[k]> }[number]
731
729
  > => {
732
730
  let final = layers[0]
733
731
  for (let i = 1; i < layers.length; i++) {
@@ -737,22 +735,22 @@ export const mergeAll = <Layers extends [Layer.Layer<any, any, never>, ...Array<
737
735
  }
738
736
 
739
737
  /** @internal */
740
- export const orDie = <R, E, A>(self: Layer.Layer<R, E, A>): Layer.Layer<R, never, A> =>
738
+ export const orDie = <A, E, R>(self: Layer.Layer<A, E, R>): Layer.Layer<A, never, R> =>
741
739
  catchAll(self, (defect) => die(defect))
742
740
 
743
741
  /** @internal */
744
742
  export const orElse = dual<
745
743
  <R2, E2, A2>(
746
- that: LazyArg<Layer.Layer<R2, E2, A2>>
747
- ) => <R, E, A>(self: Layer.Layer<R, E, A>) => Layer.Layer<R | R2, E | E2, A & A2>,
744
+ that: LazyArg<Layer.Layer<A2, E2, R2>>
745
+ ) => <A, E, R>(self: Layer.Layer<A, E, R>) => Layer.Layer<A & A2, E | E2, R | R2>,
748
746
  <R, E, A, R2, E2, A2>(
749
- self: Layer.Layer<R, E, A>,
750
- that: LazyArg<Layer.Layer<R2, E2, A2>>
751
- ) => Layer.Layer<R | R2, E | E2, A & A2>
747
+ self: Layer.Layer<A, E, R>,
748
+ that: LazyArg<Layer.Layer<A2, E2, R2>>
749
+ ) => Layer.Layer<A & A2, E | E2, R | R2>
752
750
  >(2, (self, that) => catchAll(self, that))
753
751
 
754
752
  /** @internal */
755
- export const passthrough = <RIn, E, ROut>(self: Layer.Layer<RIn, E, ROut>): Layer.Layer<RIn, E, RIn | ROut> =>
753
+ export const passthrough = <RIn, E, ROut>(self: Layer.Layer<ROut, E, RIn>): Layer.Layer<RIn | ROut, E, RIn> =>
756
754
  merge(context<RIn>(), self)
757
755
 
758
756
  /** @internal */
@@ -761,13 +759,13 @@ export const project = dual<
761
759
  tagA: A,
762
760
  tagB: B,
763
761
  f: (a: Context.Tag.Service<A>) => Context.Tag.Service<B>
764
- ) => <RIn, E>(self: Layer.Layer<RIn, E, Context.Tag.Identifier<A>>) => Layer.Layer<RIn, E, Context.Tag.Identifier<B>>,
762
+ ) => <RIn, E>(self: Layer.Layer<Context.Tag.Identifier<A>, E, RIn>) => Layer.Layer<Context.Tag.Identifier<B>, E, RIn>,
765
763
  <RIn, E, A extends Context.Tag<any, any>, B extends Context.Tag<any, any>>(
766
- self: Layer.Layer<RIn, E, Context.Tag.Identifier<A>>,
764
+ self: Layer.Layer<Context.Tag.Identifier<A>, E, RIn>,
767
765
  tagA: A,
768
766
  tagB: B,
769
767
  f: (a: Context.Tag.Service<A>) => Context.Tag.Service<B>
770
- ) => Layer.Layer<RIn, E, Context.Tag.Identifier<B>>
768
+ ) => Layer.Layer<Context.Tag.Identifier<B>, E, RIn>
771
769
  >(4, (self, tagA, tagB, f) => map(self, (context) => Context.make(tagB, f(Context.unsafeGet(context, tagA)))))
772
770
 
773
771
  /** @internal */
@@ -775,15 +773,15 @@ export const retry = dual<
775
773
  <RIn2, E, X>(
776
774
  schedule: Schedule.Schedule<RIn2, E, X>
777
775
  ) => <RIn, ROut>(
778
- self: Layer.Layer<RIn, E, ROut>
779
- ) => Layer.Layer<RIn | RIn2, E, ROut>,
776
+ self: Layer.Layer<ROut, E, RIn>
777
+ ) => Layer.Layer<ROut, E, RIn | RIn2>,
780
778
  <RIn, E, ROut, RIn2, X>(
781
- self: Layer.Layer<RIn, E, ROut>,
779
+ self: Layer.Layer<ROut, E, RIn>,
782
780
  schedule: Schedule.Schedule<RIn2, E, X>
783
- ) => Layer.Layer<RIn | RIn2, E, ROut>
781
+ ) => Layer.Layer<ROut, E, RIn | RIn2>
784
782
  >(2, (self, schedule) =>
785
783
  suspend(() => {
786
- const stateTag = Context.Tag<{ state: unknown }>()
784
+ const stateTag = Context.GenericTag<{ state: unknown }>("effect/Layer/retry/{ state: unknown }")
787
785
  return pipe(
788
786
  succeed(stateTag, { state: schedule.initial }),
789
787
  flatMap((env: Context.Context<{ state: unknown }>) =>
@@ -794,11 +792,11 @@ export const retry = dual<
794
792
 
795
793
  /** @internal */
796
794
  const retryLoop = <RIn, E, ROut, RIn2, X>(
797
- self: Layer.Layer<RIn, E, ROut>,
795
+ self: Layer.Layer<ROut, E, RIn>,
798
796
  schedule: Schedule.Schedule<RIn2, E, X>,
799
797
  stateTag: Context.Tag<{ state: unknown }, { state: unknown }>,
800
798
  state: unknown
801
- ): Layer.Layer<RIn | RIn2, E, ROut> => {
799
+ ): Layer.Layer<ROut, E, RIn | RIn2> => {
802
800
  return pipe(
803
801
  self,
804
802
  catchAll((error) =>
@@ -816,7 +814,7 @@ const retryUpdate = <RIn, E, X>(
816
814
  stateTag: Context.Tag<{ state: unknown }, { state: unknown }>,
817
815
  error: E,
818
816
  state: unknown
819
- ): Layer.Layer<RIn, E, { state: unknown }> => {
817
+ ): Layer.Layer<{ state: unknown }, E, RIn> => {
820
818
  return fromEffect(
821
819
  stateTag,
822
820
  pipe(
@@ -843,12 +841,12 @@ export const scoped = dual<
843
841
  <T extends Context.Tag<any, any>>(
844
842
  tag: T
845
843
  ) => <R, E>(
846
- effect: Effect.Effect<R, E, Context.Tag.Service<T>>
847
- ) => Layer.Layer<Exclude<R, Scope.Scope>, E, Context.Tag.Identifier<T>>,
844
+ effect: Effect.Effect<Context.Tag.Service<T>, E, R>
845
+ ) => Layer.Layer<Context.Tag.Identifier<T>, E, Exclude<R, Scope.Scope>>,
848
846
  <T extends Context.Tag<any, any>, R, E>(
849
847
  tag: T,
850
- effect: Effect.Effect<R, E, Context.Tag.Service<T>>
851
- ) => Layer.Layer<Exclude<R, Scope.Scope>, E, Context.Tag.Identifier<T>>
848
+ effect: Effect.Effect<Context.Tag.Service<T>, E, R>
849
+ ) => Layer.Layer<Context.Tag.Identifier<T>, E, Exclude<R, Scope.Scope>>
852
850
  >(2, (a, b) => {
853
851
  const tagFirst = Context.isTag(a)
854
852
  const tag = (tagFirst ? a : b) as Context.Tag<unknown, unknown>
@@ -857,14 +855,14 @@ export const scoped = dual<
857
855
  })
858
856
 
859
857
  /** @internal */
860
- export const scopedDiscard = <R, E, _>(
861
- effect: Effect.Effect<R, E, _>
862
- ): Layer.Layer<Exclude<R, Scope.Scope>, E, never> => scopedContext(pipe(effect, core.as(Context.empty())))
858
+ export const scopedDiscard = <_, E, R>(
859
+ effect: Effect.Effect<_, E, R>
860
+ ): Layer.Layer<never, E, Exclude<R, Scope.Scope>> => scopedContext(pipe(effect, core.as(Context.empty())))
863
861
 
864
862
  /** @internal */
865
- export const scopedContext = <R, E, A>(
866
- effect: Effect.Effect<R, E, Context.Context<A>>
867
- ): Layer.Layer<Exclude<R, Scope.Scope>, E, A> => {
863
+ export const scopedContext = <A, E, R>(
864
+ effect: Effect.Effect<Context.Context<A>, E, R>
865
+ ): Layer.Layer<A, E, Exclude<R, Scope.Scope>> => {
868
866
  const scoped = Object.create(proto)
869
867
  scoped._tag = OpCodes.OP_SCOPED
870
868
  scoped.effect = effect
@@ -872,7 +870,7 @@ export const scopedContext = <R, E, A>(
872
870
  }
873
871
 
874
872
  /** @internal */
875
- export const scope: Layer.Layer<never, never, Scope.Scope.Closeable> = scopedContext(
873
+ export const scope: Layer.Layer<Scope.Scope.Closeable> = scopedContext(
876
874
  core.map(
877
875
  fiberRuntime.acquireRelease(
878
876
  fiberRuntime.scopeMake(),
@@ -893,11 +891,11 @@ export const succeed = dual<
893
891
  tag: T
894
892
  ) => (
895
893
  resource: Context.Tag.Service<T>
896
- ) => Layer.Layer<never, never, Context.Tag.Identifier<T>>,
894
+ ) => Layer.Layer<Context.Tag.Identifier<T>>,
897
895
  <T extends Context.Tag<any, any>>(
898
896
  tag: T,
899
897
  resource: Context.Tag.Service<T>
900
- ) => Layer.Layer<never, never, Context.Tag.Identifier<T>>
898
+ ) => Layer.Layer<Context.Tag.Identifier<T>>
901
899
  >(2, (a, b) => {
902
900
  const tagFirst = Context.isTag(a)
903
901
  const tag = (tagFirst ? a : b) as Context.Tag<unknown, unknown>
@@ -908,7 +906,7 @@ export const succeed = dual<
908
906
  /** @internal */
909
907
  export const succeedContext = <A>(
910
908
  context: Context.Context<A>
911
- ): Layer.Layer<never, never, A> => {
909
+ ): Layer.Layer<A> => {
912
910
  return fromEffectContext(core.succeed(context))
913
911
  }
914
912
 
@@ -917,8 +915,8 @@ export const empty = succeedContext(Context.empty())
917
915
 
918
916
  /** @internal */
919
917
  export const suspend = <RIn, E, ROut>(
920
- evaluate: LazyArg<Layer.Layer<RIn, E, ROut>>
921
- ): Layer.Layer<RIn, E, ROut> => {
918
+ evaluate: LazyArg<Layer.Layer<ROut, E, RIn>>
919
+ ): Layer.Layer<ROut, E, RIn> => {
922
920
  const suspend = Object.create(proto)
923
921
  suspend._tag = OpCodes.OP_SUSPEND
924
922
  suspend.evaluate = evaluate
@@ -931,11 +929,11 @@ export const sync = dual<
931
929
  tag: T
932
930
  ) => (
933
931
  evaluate: LazyArg<Context.Tag.Service<T>>
934
- ) => Layer.Layer<never, never, Context.Tag.Identifier<T>>,
932
+ ) => Layer.Layer<Context.Tag.Identifier<T>>,
935
933
  <T extends Context.Tag<any, any>>(
936
934
  tag: T,
937
935
  evaluate: LazyArg<Context.Tag.Service<T>>
938
- ) => Layer.Layer<never, never, Context.Tag.Identifier<T>>
936
+ ) => Layer.Layer<Context.Tag.Identifier<T>>
939
937
  >(2, (a, b) => {
940
938
  const tagFirst = Context.isTag(a)
941
939
  const tag = (tagFirst ? a : b) as Context.Tag<unknown, unknown>
@@ -944,30 +942,30 @@ export const sync = dual<
944
942
  })
945
943
 
946
944
  /** @internal */
947
- export const syncContext = <A>(evaluate: LazyArg<Context.Context<A>>): Layer.Layer<never, never, A> => {
945
+ export const syncContext = <A>(evaluate: LazyArg<Context.Context<A>>): Layer.Layer<A> => {
948
946
  return fromEffectContext(core.sync(evaluate))
949
947
  }
950
948
 
951
949
  /** @internal */
952
950
  export const tap = dual<
953
951
  <ROut, XR extends ROut, RIn2, E2, X>(
954
- f: (context: Context.Context<XR>) => Effect.Effect<RIn2, E2, X>
955
- ) => <RIn, E>(self: Layer.Layer<RIn, E, ROut>) => Layer.Layer<RIn | RIn2, E | E2, ROut>,
952
+ f: (context: Context.Context<XR>) => Effect.Effect<X, E2, RIn2>
953
+ ) => <RIn, E>(self: Layer.Layer<ROut, E, RIn>) => Layer.Layer<ROut, E | E2, RIn | RIn2>,
956
954
  <RIn, E, ROut, XR extends ROut, RIn2, E2, X>(
957
- self: Layer.Layer<RIn, E, ROut>,
958
- f: (context: Context.Context<XR>) => Effect.Effect<RIn2, E2, X>
959
- ) => Layer.Layer<RIn | RIn2, E | E2, ROut>
955
+ self: Layer.Layer<ROut, E, RIn>,
956
+ f: (context: Context.Context<XR>) => Effect.Effect<X, E2, RIn2>
957
+ ) => Layer.Layer<ROut, E | E2, RIn | RIn2>
960
958
  >(2, (self, f) => flatMap(self, (context) => fromEffectContext(core.as(f(context), context))))
961
959
 
962
960
  /** @internal */
963
961
  export const tapError = dual<
964
962
  <E, XE extends E, RIn2, E2, X>(
965
- f: (e: XE) => Effect.Effect<RIn2, E2, X>
966
- ) => <RIn, ROut>(self: Layer.Layer<RIn, E, ROut>) => Layer.Layer<RIn | RIn2, E | E2, ROut>,
963
+ f: (e: XE) => Effect.Effect<X, E2, RIn2>
964
+ ) => <RIn, ROut>(self: Layer.Layer<ROut, E, RIn>) => Layer.Layer<ROut, E | E2, RIn | RIn2>,
967
965
  <RIn, E, XE extends E, ROut, RIn2, E2, X>(
968
- self: Layer.Layer<RIn, E, ROut>,
969
- f: (e: XE) => Effect.Effect<RIn2, E2, X>
970
- ) => Layer.Layer<RIn | RIn2, E | E2, ROut>
966
+ self: Layer.Layer<ROut, E, RIn>,
967
+ f: (e: XE) => Effect.Effect<X, E2, RIn2>
968
+ ) => Layer.Layer<ROut, E | E2, RIn | RIn2>
971
969
  >(2, (self, f) =>
972
970
  catchAll(
973
971
  self,
@@ -977,12 +975,12 @@ export const tapError = dual<
977
975
  /** @internal */
978
976
  export const tapErrorCause = dual<
979
977
  <E, XE extends E, RIn2, E2, X>(
980
- f: (cause: Cause.Cause<XE>) => Effect.Effect<RIn2, E2, X>
981
- ) => <RIn, ROut>(self: Layer.Layer<RIn, E, ROut>) => Layer.Layer<RIn | RIn2, E | E2, ROut>,
978
+ f: (cause: Cause.Cause<XE>) => Effect.Effect<X, E2, RIn2>
979
+ ) => <RIn, ROut>(self: Layer.Layer<ROut, E, RIn>) => Layer.Layer<ROut, E | E2, RIn | RIn2>,
982
980
  <RIn, E, XE extends E, ROut, RIn2, E2, X>(
983
- self: Layer.Layer<RIn, E, ROut>,
984
- f: (cause: Cause.Cause<XE>) => Effect.Effect<RIn2, E2, X>
985
- ) => Layer.Layer<RIn | RIn2, E | E2, ROut>
981
+ self: Layer.Layer<ROut, E, RIn>,
982
+ f: (cause: Cause.Cause<XE>) => Effect.Effect<X, E2, RIn2>
983
+ ) => Layer.Layer<ROut, E | E2, RIn | RIn2>
986
984
  >(2, (self, f) =>
987
985
  catchAllCause(
988
986
  self,
@@ -991,8 +989,8 @@ export const tapErrorCause = dual<
991
989
 
992
990
  /** @internal */
993
991
  export const toRuntime = <RIn, E, ROut>(
994
- self: Layer.Layer<RIn, E, ROut>
995
- ): Effect.Effect<RIn | Scope.Scope, E, Runtime.Runtime<ROut>> => {
992
+ self: Layer.Layer<ROut, E, RIn>
993
+ ): Effect.Effect<Runtime.Runtime<ROut>, E, RIn | Scope.Scope> => {
996
994
  return pipe(
997
995
  fiberRuntime.scopeWith((scope) => pipe(self, buildWithScope(scope))),
998
996
  core.flatMap((context) =>
@@ -1007,17 +1005,17 @@ export const toRuntime = <RIn, E, ROut>(
1007
1005
  /** @internal */
1008
1006
  export const provide = dual<
1009
1007
  <RIn, E, ROut>(
1010
- self: Layer.Layer<RIn, E, ROut>
1008
+ self: Layer.Layer<ROut, E, RIn>
1011
1009
  ) => <RIn2, E2, ROut2>(
1012
- that: Layer.Layer<RIn2, E2, ROut2>
1013
- ) => Layer.Layer<RIn | Exclude<RIn2, ROut>, E | E2, ROut2>,
1010
+ that: Layer.Layer<ROut2, E2, RIn2>
1011
+ ) => Layer.Layer<ROut2, E | E2, RIn | Exclude<RIn2, ROut>>,
1014
1012
  <RIn2, E2, ROut2, RIn, E, ROut>(
1015
- that: Layer.Layer<RIn2, E2, ROut2>,
1016
- self: Layer.Layer<RIn, E, ROut>
1017
- ) => Layer.Layer<RIn | Exclude<RIn2, ROut>, E | E2, ROut2>
1013
+ that: Layer.Layer<ROut2, E2, RIn2>,
1014
+ self: Layer.Layer<ROut, E, RIn>
1015
+ ) => Layer.Layer<ROut2, E | E2, RIn | Exclude<RIn2, ROut>>
1018
1016
  >(2, <RIn2, E2, ROut2, RIn, E, ROut>(
1019
- that: Layer.Layer<RIn2, E2, ROut2>,
1020
- self: Layer.Layer<RIn, E, ROut>
1017
+ that: Layer.Layer<ROut2, E2, RIn2>,
1018
+ self: Layer.Layer<ROut, E, RIn>
1021
1019
  ) =>
1022
1020
  suspend(() => {
1023
1021
  const provideTo = Object.create(proto)
@@ -1035,15 +1033,15 @@ export const provide = dual<
1035
1033
  /** @internal */
1036
1034
  export const provideMerge = dual<
1037
1035
  <RIn, E, ROut>(
1038
- self: Layer.Layer<RIn, E, ROut>
1036
+ self: Layer.Layer<ROut, E, RIn>
1039
1037
  ) => <RIn2, E2, ROut2>(
1040
- that: Layer.Layer<RIn2, E2, ROut2>
1041
- ) => Layer.Layer<RIn | Exclude<RIn2, ROut>, E2 | E, ROut | ROut2>,
1038
+ that: Layer.Layer<ROut2, E2, RIn2>
1039
+ ) => Layer.Layer<ROut | ROut2, E2 | E, RIn | Exclude<RIn2, ROut>>,
1042
1040
  <RIn2, E2, ROut2, RIn, E, ROut>(
1043
- that: Layer.Layer<RIn2, E2, ROut2>,
1044
- self: Layer.Layer<RIn, E, ROut>
1045
- ) => Layer.Layer<RIn | Exclude<RIn2, ROut>, E2 | E, ROut | ROut2>
1046
- >(2, <RIn2, E2, ROut2, RIn, E, ROut>(that: Layer.Layer<RIn2, E2, ROut2>, self: Layer.Layer<RIn, E, ROut>) => {
1041
+ that: Layer.Layer<ROut2, E2, RIn2>,
1042
+ self: Layer.Layer<ROut, E, RIn>
1043
+ ) => Layer.Layer<ROut | ROut2, E2 | E, RIn | Exclude<RIn2, ROut>>
1044
+ >(2, <RIn2, E2, ROut2, RIn, E, ROut>(that: Layer.Layer<ROut2, E2, RIn2>, self: Layer.Layer<ROut, E, RIn>) => {
1047
1045
  const zipWith = Object.create(proto)
1048
1046
  zipWith._tag = OpCodes.OP_PROVIDE_MERGE
1049
1047
  zipWith.first = self
@@ -1057,14 +1055,14 @@ export const provideMerge = dual<
1057
1055
  /** @internal */
1058
1056
  export const zipWith = dual<
1059
1057
  <R2, E2, B, A, C>(
1060
- that: Layer.Layer<R2, E2, B>,
1058
+ that: Layer.Layer<B, E2, R2>,
1061
1059
  f: (a: Context.Context<A>, b: Context.Context<B>) => Context.Context<C>
1062
- ) => <R, E>(self: Layer.Layer<R, E, A>) => Layer.Layer<R | R2, E | E2, C>,
1060
+ ) => <R, E>(self: Layer.Layer<A, E, R>) => Layer.Layer<C, E | E2, R | R2>,
1063
1061
  <R, E, R2, E2, B, A, C>(
1064
- self: Layer.Layer<R, E, A>,
1065
- that: Layer.Layer<R2, E2, B>,
1062
+ self: Layer.Layer<A, E, R>,
1063
+ that: Layer.Layer<B, E2, R2>,
1066
1064
  f: (a: Context.Context<A>, b: Context.Context<B>) => Context.Context<C>
1067
- ) => Layer.Layer<R | R2, E | E2, C>
1065
+ ) => Layer.Layer<C, E | E2, R | R2>
1068
1066
  >(3, (self, that, f) =>
1069
1067
  suspend(() => {
1070
1068
  const zipWith = Object.create(proto)
@@ -1077,17 +1075,17 @@ export const zipWith = dual<
1077
1075
 
1078
1076
  /** @internal */
1079
1077
  export const unwrapEffect = <R, E, R1, E1, A>(
1080
- self: Effect.Effect<R, E, Layer.Layer<R1, E1, A>>
1081
- ): Layer.Layer<R | R1, E | E1, A> => {
1082
- const tag = Context.Tag<Layer.Layer<R1, E1, A>>()
1078
+ self: Effect.Effect<Layer.Layer<A, E1, R1>, E, R>
1079
+ ): Layer.Layer<A, E | E1, R | R1> => {
1080
+ const tag = Context.GenericTag<Layer.Layer<A, E1, R1>>("effect/Layer/unwrapEffect/Layer.Layer<R1, E1, A>")
1083
1081
  return flatMap(fromEffect(tag, self), (context) => Context.get(context, tag))
1084
1082
  }
1085
1083
 
1086
1084
  /** @internal */
1087
1085
  export const unwrapScoped = <R, E, R1, E1, A>(
1088
- self: Effect.Effect<R, E, Layer.Layer<R1, E1, A>>
1089
- ): Layer.Layer<R1 | Exclude<R, Scope.Scope>, E | E1, A> => {
1090
- const tag = Context.Tag<Layer.Layer<R1, E1, A>>()
1086
+ self: Effect.Effect<Layer.Layer<A, E1, R1>, E, R>
1087
+ ): Layer.Layer<A, E | E1, R1 | Exclude<R, Scope.Scope>> => {
1088
+ const tag = Context.GenericTag<Layer.Layer<A, E1, R1>>("effect/Layer/unwrapScoped/Layer.Layer<R1, E1, A>")
1091
1089
  return flatMap(scoped(tag, self), (context) => Context.get(context, tag))
1092
1090
  }
1093
1091
 
@@ -1104,19 +1102,19 @@ export const withSpan = dual<
1104
1102
  readonly root?: boolean | undefined
1105
1103
  readonly context?: Context.Context<never> | undefined
1106
1104
  readonly onEnd?:
1107
- | ((span: Tracer.Span, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<never, never, void>)
1105
+ | ((span: Tracer.Span, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void>)
1108
1106
  | undefined
1109
- }) => <R, E, A>(self: Layer.Layer<R, E, A>) => Layer.Layer<Exclude<R, Tracer.ParentSpan>, E, A>,
1110
- <R, E, A>(self: Layer.Layer<R, E, A>, name: string, options?: {
1107
+ }) => <A, E, R>(self: Layer.Layer<A, E, R>) => Layer.Layer<A, E, Exclude<R, Tracer.ParentSpan>>,
1108
+ <A, E, R>(self: Layer.Layer<A, E, R>, name: string, options?: {
1111
1109
  readonly attributes?: Record<string, unknown> | undefined
1112
1110
  readonly links?: ReadonlyArray<Tracer.SpanLink> | undefined
1113
1111
  readonly parent?: Tracer.ParentSpan | undefined
1114
1112
  readonly root?: boolean | undefined
1115
1113
  readonly context?: Context.Context<never> | undefined
1116
1114
  readonly onEnd?:
1117
- | ((span: Tracer.Span, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<never, never, void>)
1115
+ | ((span: Tracer.Span, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void>)
1118
1116
  | undefined
1119
- }) => Layer.Layer<Exclude<R, Tracer.ParentSpan>, E, A>
1117
+ }) => Layer.Layer<A, E, Exclude<R, Tracer.ParentSpan>>
1120
1118
  >((args) => isLayer(args[0]), (self, name, options) =>
1121
1119
  unwrapScoped(
1122
1120
  core.map(
@@ -1134,20 +1132,20 @@ export const withSpan = dual<
1134
1132
  export const withParentSpan = dual<
1135
1133
  (
1136
1134
  span: Tracer.ParentSpan
1137
- ) => <R, E, A>(self: Layer.Layer<R, E, A>) => Layer.Layer<Exclude<R, Tracer.ParentSpan>, E, A>,
1138
- <R, E, A>(self: Layer.Layer<R, E, A>, span: Tracer.ParentSpan) => Layer.Layer<Exclude<R, Tracer.ParentSpan>, E, A>
1135
+ ) => <A, E, R>(self: Layer.Layer<A, E, R>) => Layer.Layer<A, E, Exclude<R, Tracer.ParentSpan>>,
1136
+ <A, E, R>(self: Layer.Layer<A, E, R>, span: Tracer.ParentSpan) => Layer.Layer<A, E, Exclude<R, Tracer.ParentSpan>>
1139
1137
  >(2, (self, span) => provide(self, succeedContext(Context.make(tracer.spanTag, span))))
1140
1138
 
1141
1139
  // circular with Effect
1142
1140
 
1143
1141
  const provideSomeLayer = dual<
1144
1142
  <R2, E2, A2>(
1145
- layer: Layer.Layer<R2, E2, A2>
1146
- ) => <R, E, A>(self: Effect.Effect<R, E, A>) => Effect.Effect<R2 | Exclude<R, A2>, E | E2, A>,
1143
+ layer: Layer.Layer<A2, E2, R2>
1144
+ ) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E2, R2 | Exclude<R, A2>>,
1147
1145
  <R, E, A, R2, E2, A2>(
1148
- self: Effect.Effect<R, E, A>,
1149
- layer: Layer.Layer<R2, E2, A2>
1150
- ) => Effect.Effect<R2 | Exclude<R, A2>, E | E2, A>
1146
+ self: Effect.Effect<A, E, R>,
1147
+ layer: Layer.Layer<A2, E2, R2>
1148
+ ) => Effect.Effect<A, E | E2, R2 | Exclude<R, A2>>
1151
1149
  >(2, (self, layer) =>
1152
1150
  core.acquireUseRelease(
1153
1151
  fiberRuntime.scopeMake(),
@@ -1159,12 +1157,9 @@ const provideSomeLayer = dual<
1159
1157
  (scope, exit) => core.scopeClose(scope, exit)
1160
1158
  ))
1161
1159
 
1162
- const provideSomeRuntime: {
1163
- <R>(context: Runtime.Runtime<R>): <R1, E, A>(self: Effect.Effect<R1, E, A>) => Effect.Effect<Exclude<R1, R>, E, A>
1164
- <R, R1, E, A>(self: Effect.Effect<R1, E, A>, context: Runtime.Runtime<R>): Effect.Effect<Exclude<R1, R>, E, A>
1165
- } = dual<
1166
- <R>(context: Runtime.Runtime<R>) => <R1, E, A>(self: Effect.Effect<R1, E, A>) => Effect.Effect<Exclude<R1, R>, E, A>,
1167
- <R, R1, E, A>(self: Effect.Effect<R1, E, A>, context: Runtime.Runtime<R>) => Effect.Effect<Exclude<R1, R>, E, A>
1160
+ const provideSomeRuntime = dual<
1161
+ <R>(context: Runtime.Runtime<R>) => <A, E, R1>(self: Effect.Effect<A, E, R1>) => Effect.Effect<A, E, Exclude<R1, R>>,
1162
+ <A, E, R1, R>(self: Effect.Effect<A, E, R1>, context: Runtime.Runtime<R>) => Effect.Effect<A, E, Exclude<R1, R>>
1168
1163
  >(2, (self, rt) => {
1169
1164
  const patchRefs = FiberRefsPatch.diff(runtime.defaultRuntime.fiberRefs, rt.fiberRefs)
1170
1165
  const patchFlags = runtimeFlags.diff(runtime.defaultRuntime.runtimeFlags, rt.runtimeFlags)
@@ -1193,38 +1188,38 @@ const provideSomeRuntime: {
1193
1188
  /** @internal */
1194
1189
  export const effect_provide = dual<
1195
1190
  {
1196
- <R2, E2, A2>(
1197
- layer: Layer.Layer<R2, E2, A2>
1198
- ): <R, E, A>(self: Effect.Effect<R, E, A>) => Effect.Effect<R2 | Exclude<R, A2>, E | E2, A>
1191
+ <R2, E2, R3>(
1192
+ layer: Layer.Layer<R3, E2, R2>
1193
+ ): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E2, R2 | Exclude<R, R3>>
1199
1194
  <R2>(
1200
1195
  context: Context.Context<R2>
1201
- ): <R, E, A>(self: Effect.Effect<R, E, A>) => Effect.Effect<Exclude<R, R2>, E, A>
1196
+ ): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, R2>>
1202
1197
  <R2>(
1203
1198
  runtime: Runtime.Runtime<R2>
1204
- ): <R, E, A>(self: Effect.Effect<R, E, A>) => Effect.Effect<Exclude<R, R2>, E, A>
1199
+ ): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, R2>>
1205
1200
  },
1206
1201
  {
1207
- <R, E, A, R2, E2, A2>(
1208
- self: Effect.Effect<R, E, A>,
1209
- layer: Layer.Layer<R2, E2, A2>
1210
- ): Effect.Effect<R2 | Exclude<R, A2>, E | E2, A>
1202
+ <A, E, R, R2, E2, R3>(
1203
+ self: Effect.Effect<A, E, R>,
1204
+ layer: Layer.Layer<R3, E2, R2>
1205
+ ): Effect.Effect<A, E | E2, R2 | Exclude<R, R3>>
1211
1206
  <R, E, A, R2>(
1212
- self: Effect.Effect<R, E, A>,
1207
+ self: Effect.Effect<A, E, R>,
1213
1208
  context: Context.Context<R2>
1214
- ): Effect.Effect<Exclude<R, R2>, E, A>
1209
+ ): Effect.Effect<A, E, Exclude<R, R2>>
1215
1210
  <R, E, A, R2>(
1216
- self: Effect.Effect<R, E, A>,
1211
+ self: Effect.Effect<A, E, R>,
1217
1212
  runtime: Runtime.Runtime<R2>
1218
- ): Effect.Effect<Exclude<R, R2>, E, A>
1213
+ ): Effect.Effect<A, E, Exclude<R, R2>>
1219
1214
  }
1220
1215
  >(
1221
1216
  2,
1222
- <R, E, A, R2>(
1223
- self: Effect.Effect<R, E, A>,
1224
- source: Layer.Layer<any, any, R2> | Context.Context<R2> | Runtime.Runtime<R2>
1225
- ): Effect.Effect<Exclude<R, R2>, any, any> =>
1217
+ <A, E, R, R2>(
1218
+ self: Effect.Effect<A, E, R>,
1219
+ source: Layer.Layer<R2, any, any> | Context.Context<R2> | Runtime.Runtime<R2>
1220
+ ): Effect.Effect<any, any, Exclude<R, R2>> =>
1226
1221
  isLayer(source)
1227
- ? provideSomeLayer(self, source as Layer.Layer<any, any, R2>)
1222
+ ? provideSomeLayer(self, source as Layer.Layer<R2, any, any>)
1228
1223
  : Context.isContext(source)
1229
1224
  ? core.provideSomeContext(self, source)
1230
1225
  : provideSomeRuntime(self, source as Runtime.Runtime<R2>)