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
package/src/STM.ts CHANGED
@@ -30,7 +30,7 @@ export const STMTypeId: unique symbol = core.STMTypeId
30
30
  export type STMTypeId = typeof STMTypeId
31
31
 
32
32
  /**
33
- * `STM<R, E, A>` represents an effect that can be performed transactionally,
33
+ * `STM<A, E, R>` represents an effect that can be performed transactionally,
34
34
  * resulting in a failure `E` or a value `A` that may require an environment
35
35
  * `R` to execute.
36
36
  *
@@ -66,7 +66,9 @@ export type STMTypeId = typeof STMTypeId
66
66
  * @since 2.0.0
67
67
  * @category models
68
68
  */
69
- export interface STM<out R, out E, out A> extends Effect.Effect<R, E, A>, STM.Variance<R, E, A>, Pipeable {
69
+ export interface STM<out A, out E = never, out R = never>
70
+ extends Effect.Effect<A, E, R>, STM.Variance<A, E, R>, Pipeable
71
+ {
70
72
  [Unify.typeSymbol]?: unknown
71
73
  [Unify.unifySymbol]?: STMUnify<this>
72
74
  [Unify.ignoreSymbol]?: STMUnifyIgnore
@@ -77,7 +79,7 @@ export interface STM<out R, out E, out A> extends Effect.Effect<R, E, A>, STM.Va
77
79
  * @category models
78
80
  */
79
81
  export interface STMUnify<A extends { [Unify.typeSymbol]?: any }> extends Effect.EffectUnify<A> {
80
- STM?: () => A[Unify.typeSymbol] extends STM<infer R0, infer E0, infer A0> | infer _ ? STM<R0, E0, A0> : never
82
+ STM?: () => A[Unify.typeSymbol] extends STM<infer A0, infer E0, infer R0> | infer _ ? STM<R0, E0, A0> : never
81
83
  }
82
84
 
83
85
  /**
@@ -93,7 +95,7 @@ export interface STMUnifyIgnore extends Effect.EffectUnifyIgnore {
93
95
  * @since 2.0.0
94
96
  */
95
97
  export interface STMTypeLambda extends TypeLambda {
96
- readonly type: STM<this["Out2"], this["Out1"], this["Target"]>
98
+ readonly type: STM<this["Target"], this["Out1"], this["Out2"]>
97
99
  }
98
100
 
99
101
  /**
@@ -101,7 +103,7 @@ export interface STMTypeLambda extends TypeLambda {
101
103
  * @category models
102
104
  */
103
105
  declare module "./Context.js" {
104
- interface Tag<Identifier, Service> extends STM<Identifier, never, Service> {}
106
+ interface Tag<Identifier, Service> extends STM<Service, never, Identifier> {}
105
107
  }
106
108
 
107
109
  /**
@@ -109,10 +111,10 @@ declare module "./Context.js" {
109
111
  * @category models
110
112
  */
111
113
  declare module "./Either.js" {
112
- interface Left<E, A> extends STM<never, E, A> {
114
+ interface Left<E, A> extends STM<A, E> {
113
115
  readonly _tag: "Left"
114
116
  }
115
- interface Right<E, A> extends STM<never, E, A> {
117
+ interface Right<E, A> extends STM<A, E> {
116
118
  readonly _tag: "Right"
117
119
  }
118
120
  }
@@ -122,10 +124,10 @@ declare module "./Either.js" {
122
124
  * @category models
123
125
  */
124
126
  declare module "./Option.js" {
125
- interface None<A> extends STM<never, Cause.NoSuchElementException, A> {
127
+ interface None<A> extends STM<A, Cause.NoSuchElementException> {
126
128
  readonly _tag: "None"
127
129
  }
128
- interface Some<A> extends STM<never, Cause.NoSuchElementException, A> {
130
+ interface Some<A> extends STM<A, Cause.NoSuchElementException> {
129
131
  readonly _tag: "Some"
130
132
  }
131
133
  }
@@ -138,11 +140,11 @@ export declare namespace STM {
138
140
  * @since 2.0.0
139
141
  * @category models
140
142
  */
141
- export interface Variance<out R, out E, out A> {
143
+ export interface Variance<out A, out E, out R> {
142
144
  readonly [STMTypeId]: {
143
- readonly _R: Covariant<R>
144
- readonly _E: Covariant<E>
145
145
  readonly _A: Covariant<A>
146
+ readonly _E: Covariant<E>
147
+ readonly _R: Covariant<R>
146
148
  }
147
149
  }
148
150
  }
@@ -151,12 +153,12 @@ export declare namespace STM {
151
153
  * @category models
152
154
  * @since 2.0.0
153
155
  */
154
- export interface STMGen<out R, out E, out A> {
155
- readonly _R: () => R
156
- readonly _E: () => E
156
+ export interface STMGen<out A, out E, out R> {
157
157
  readonly _A: () => A
158
- readonly value: STM<R, E, A>
159
- [Symbol.iterator](): Generator<STMGen<R, E, A>, A>
158
+ readonly _E: () => E
159
+ readonly _R: () => R
160
+ readonly value: STM<A, E, R>
161
+ [Symbol.iterator](): Generator<STMGen<A, E, R>, A>
160
162
  }
161
163
 
162
164
  /**
@@ -178,16 +180,14 @@ export const isSTM: (u: unknown) => u is STM<unknown, unknown, unknown> = core.i
178
180
  */
179
181
  export const acquireUseRelease: {
180
182
  <A, R2, E2, A2, R3, E3, A3>(
181
- use: (resource: A) => STM<R2, E2, A2>,
182
- release: (resource: A) => STM<R3, E3, A3>
183
- ): <R, E>(
184
- acquire: STM<R, E, A>
185
- ) => Effect.Effect<R2 | R3 | R, E2 | E3 | E, A2>
183
+ use: (resource: A) => STM<A2, E2, R2>,
184
+ release: (resource: A) => STM<A3, E3, R3>
185
+ ): <R, E>(acquire: STM<A, E, R>) => Effect.Effect<A2, E2 | E3 | E, R2 | R3 | R>
186
186
  <R, E, A, R2, E2, A2, R3, E3, A3>(
187
- acquire: STM<R, E, A>,
188
- use: (resource: A) => STM<R2, E2, A2>,
189
- release: (resource: A) => STM<R3, E3, A3>
190
- ): Effect.Effect<R | R2 | R3, E | E2 | E3, A2>
187
+ acquire: STM<A, E, R>,
188
+ use: (resource: A) => STM<A2, E2, R2>,
189
+ release: (resource: A) => STM<A3, E3, R3>
190
+ ): Effect.Effect<A2, E | E2 | E3, R | R2 | R3>
191
191
  } = stm.acquireUseRelease
192
192
 
193
193
  /**
@@ -198,29 +198,29 @@ export declare namespace All {
198
198
  type STMAny = STM<any, any, any>
199
199
 
200
200
  type ReturnTuple<T extends ReadonlyArray<STM<any, any, any>>, Discard extends boolean> = STM<
201
- T[number] extends never ? never
202
- : [T[number]] extends [{ [STMTypeId]: { _R: (_: never) => infer R } }] ? R
203
- : never,
201
+ Discard extends true ? void
202
+ : T[number] extends never ? []
203
+ : { -readonly [K in keyof T]: [T[K]] extends [STM<infer A, infer _E, infer _R>] ? A : never },
204
204
  T[number] extends never ? never
205
205
  : [T[number]] extends [{ [STMTypeId]: { _E: (_: never) => infer E } }] ? E
206
206
  : never,
207
- Discard extends true ? void
208
- : T[number] extends never ? []
209
- : { -readonly [K in keyof T]: [T[K]] extends [STM<infer _R, infer _E, infer A>] ? A : never }
207
+ T[number] extends never ? never
208
+ : [T[number]] extends [{ [STMTypeId]: { _R: (_: never) => infer R } }] ? R
209
+ : never
210
210
  > extends infer X ? X : never
211
211
 
212
212
  type ReturnIterable<T extends Iterable<STMAny>, Discard extends boolean> = [T] extends
213
- [Iterable<STM.Variance<infer R, infer E, infer A>>] ? STM<R, E, Discard extends true ? void : Array<A>> : never
213
+ [Iterable<STM.Variance<infer A, infer E, infer R>>] ? STM<Discard extends true ? void : Array<A>, E, R> : never
214
214
 
215
215
  type ReturnObject<T extends Record<string, STMAny>, Discard extends boolean> = STM<
216
- keyof T extends never ? never
217
- : [T[keyof T]] extends [{ [STMTypeId]: { _R: (_: never) => infer R } }] ? R
218
- : never,
216
+ Discard extends true ? void
217
+ : { -readonly [K in keyof T]: [T[K]] extends [STM.Variance<infer A, infer _E, infer _R>] ? A : never },
219
218
  keyof T extends never ? never
220
219
  : [T[keyof T]] extends [{ [STMTypeId]: { _E: (_: never) => infer E } }] ? E
221
220
  : never,
222
- Discard extends true ? void
223
- : { -readonly [K in keyof T]: [T[K]] extends [STM.Variance<infer _R, infer _E, infer A>] ? A : never }
221
+ keyof T extends never ? never
222
+ : [T[keyof T]] extends [{ [STMTypeId]: { _R: (_: never) => infer R } }] ? R
223
+ : never
224
224
  >
225
225
 
226
226
  /**
@@ -267,8 +267,8 @@ export const all: All.Signature = stm.all
267
267
  * @category mapping
268
268
  */
269
269
  export const as: {
270
- <A2>(value: A2): <R, E, A>(self: STM<R, E, A>) => STM<R, E, A2>
271
- <R, E, A, A2>(self: STM<R, E, A>, value: A2): STM<R, E, A2>
270
+ <A2>(value: A2): <A, E, R>(self: STM<A, E, R>) => STM<A2, E, R>
271
+ <R, E, A, A2>(self: STM<A, E, R>, value: A2): STM<A2, E, R>
272
272
  } = stm.as
273
273
 
274
274
  /**
@@ -277,7 +277,7 @@ export const as: {
277
277
  * @since 2.0.0
278
278
  * @category mapping
279
279
  */
280
- export const asSome: <R, E, A>(self: STM<R, E, A>) => STM<R, E, Option.Option<A>> = stm.asSome
280
+ export const asSome: <A, E, R>(self: STM<A, E, R>) => STM<Option.Option<A>, E, R> = stm.asSome
281
281
 
282
282
  /**
283
283
  * Maps the error value of this effect to an optional value.
@@ -285,7 +285,7 @@ export const asSome: <R, E, A>(self: STM<R, E, A>) => STM<R, E, Option.Option<A>
285
285
  * @since 2.0.0
286
286
  * @category mapping
287
287
  */
288
- export const asSomeError: <R, E, A>(self: STM<R, E, A>) => STM<R, Option.Option<E>, A> = stm.asSomeError
288
+ export const asSomeError: <A, E, R>(self: STM<A, E, R>) => STM<A, Option.Option<E>, R> = stm.asSomeError
289
289
 
290
290
  /**
291
291
  * This function maps the success value of an `STM` to `void`. If the original
@@ -295,7 +295,7 @@ export const asSomeError: <R, E, A>(self: STM<R, E, A>) => STM<R, Option.Option<
295
295
  * @since 2.0.0
296
296
  * @category mapping
297
297
  */
298
- export const asUnit: <R, E, A>(self: STM<R, E, A>) => STM<R, E, void> = stm.asUnit
298
+ export const asUnit: <A, E, R>(self: STM<A, E, R>) => STM<void, E, R> = stm.asUnit
299
299
 
300
300
  /**
301
301
  * Creates an `STM` value from a partial (but pure) function.
@@ -303,7 +303,7 @@ export const asUnit: <R, E, A>(self: STM<R, E, A>) => STM<R, E, void> = stm.asUn
303
303
  * @since 2.0.0
304
304
  * @category constructors
305
305
  */
306
- export const attempt: <A>(evaluate: LazyArg<A>) => STM<never, unknown, A> = stm.attempt
306
+ export const attempt: <A>(evaluate: LazyArg<A>) => STM<A, unknown> = stm.attempt
307
307
 
308
308
  /**
309
309
  * Recovers from all errors.
@@ -312,8 +312,8 @@ export const attempt: <A>(evaluate: LazyArg<A>) => STM<never, unknown, A> = stm.
312
312
  * @category error handling
313
313
  */
314
314
  export const catchAll: {
315
- <E, R1, E1, B>(f: (e: E) => STM<R1, E1, B>): <R, A>(self: STM<R, E, A>) => STM<R1 | R, E1, B | A>
316
- <R, A, E, R1, E1, B>(self: STM<R, E, A>, f: (e: E) => STM<R1, E1, B>): STM<R | R1, E1, A | B>
315
+ <E, R1, E1, B>(f: (e: E) => STM<B, E1, R1>): <R, A>(self: STM<A, E, R>) => STM<B | A, E1, R1 | R>
316
+ <R, A, E, R1, E1, B>(self: STM<A, E, R>, f: (e: E) => STM<B, E1, R1>): STM<A | B, E1, R | R1>
317
317
  } = core.catchAll
318
318
 
319
319
  /**
@@ -324,14 +324,14 @@ export const catchAll: {
324
324
  */
325
325
  export const catchSome: {
326
326
  <E, R2, E2, A2>(
327
- pf: (error: E) => Option.Option<STM<R2, E2, A2>>
327
+ pf: (error: E) => Option.Option<STM<A2, E2, R2>>
328
328
  ): <R, A>(
329
- self: STM<R, E, A>
330
- ) => STM<R2 | R, E | E2, A2 | A>
329
+ self: STM<A, E, R>
330
+ ) => STM<A2 | A, E | E2, R2 | R>
331
331
  <R, A, E, R2, E2, A2>(
332
- self: STM<R, E, A>,
333
- pf: (error: E) => Option.Option<STM<R2, E2, A2>>
334
- ): STM<R | R2, E | E2, A | A2>
332
+ self: STM<A, E, R>,
333
+ pf: (error: E) => Option.Option<STM<A2, E2, R2>>
334
+ ): STM<A | A2, E | E2, R | R2>
335
335
  } = stm.catchSome
336
336
 
337
337
  /**
@@ -343,13 +343,13 @@ export const catchSome: {
343
343
  export const catchTag: {
344
344
  <K extends E["_tag"] & string, E extends { _tag: string }, R1, E1, A1>(
345
345
  k: K,
346
- f: (e: Extract<E, { _tag: K }>) => STM<R1, E1, A1>
347
- ): <R, A>(self: STM<R, E, A>) => STM<R1 | R, E1 | Exclude<E, { _tag: K }>, A1 | A>
346
+ f: (e: Extract<E, { _tag: K }>) => STM<A1, E1, R1>
347
+ ): <R, A>(self: STM<A, E, R>) => STM<A1 | A, E1 | Exclude<E, { _tag: K }>, R1 | R>
348
348
  <R, E extends { _tag: string }, A, K extends E["_tag"] & string, R1, E1, A1>(
349
- self: STM<R, E, A>,
349
+ self: STM<A, E, R>,
350
350
  k: K,
351
- f: (e: Extract<E, { _tag: K }>) => STM<R1, E1, A1>
352
- ): STM<R | R1, E1 | Exclude<E, { _tag: K }>, A | A1>
351
+ f: (e: Extract<E, { _tag: K }>) => STM<A1, E1, R1>
352
+ ): STM<A | A1, E1 | Exclude<E, { _tag: K }>, R | R1>
353
353
  } = stm.catchTag
354
354
 
355
355
  /**
@@ -365,14 +365,14 @@ export const catchTags: {
365
365
  >(
366
366
  cases: Cases
367
367
  ): <R, A>(
368
- self: STM<R, E, A>
368
+ self: STM<A, E, R>
369
369
  ) => STM<
370
- | R
371
- | { [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => STM<infer R, any, any> ? R : never }[keyof Cases],
370
+ | A
371
+ | { [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => STM<infer A, any, any> ? A : never }[keyof Cases],
372
372
  | Exclude<E, { _tag: keyof Cases }>
373
373
  | { [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => STM<any, infer E, any> ? E : never }[keyof Cases],
374
- | A
375
- | { [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => STM<any, any, infer A> ? A : never }[keyof Cases]
374
+ | R
375
+ | { [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => STM<any, any, infer R> ? R : never }[keyof Cases]
376
376
  >
377
377
  <
378
378
  R,
@@ -380,15 +380,15 @@ export const catchTags: {
380
380
  A,
381
381
  Cases extends { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => STM<any, any, any>) }
382
382
  >(
383
- self: STM<R, E, A>,
383
+ self: STM<A, E, R>,
384
384
  cases: Cases
385
385
  ): STM<
386
- | R
387
- | { [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => STM<infer R, any, any> ? R : never }[keyof Cases],
386
+ | A
387
+ | { [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => STM<infer A, any, any> ? A : never }[keyof Cases],
388
388
  | Exclude<E, { _tag: keyof Cases }>
389
389
  | { [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => STM<any, infer E, any> ? E : never }[keyof Cases],
390
- | A
391
- | { [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => STM<any, any, infer A> ? A : never }[keyof Cases]
390
+ | R
391
+ | { [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => STM<any, any, infer R> ? R : never }[keyof Cases]
392
392
  >
393
393
  } = stm.catchTags
394
394
 
@@ -398,7 +398,7 @@ export const catchTags: {
398
398
  * @since 2.0.0
399
399
  * @category constructors
400
400
  */
401
- export const check: (predicate: LazyArg<boolean>) => STM<never, never, void> = stm.check
401
+ export const check: (predicate: LazyArg<boolean>) => STM<void> = stm.check
402
402
 
403
403
  /**
404
404
  * Simultaneously filters and maps the value produced by this effect.
@@ -407,8 +407,8 @@ export const check: (predicate: LazyArg<boolean>) => STM<never, never, void> = s
407
407
  * @category mutations
408
408
  */
409
409
  export const collect: {
410
- <A, A2>(pf: (a: A) => Option.Option<A2>): <R, E>(self: STM<R, E, A>) => STM<R, E, A2>
411
- <R, E, A, A2>(self: STM<R, E, A>, pf: (a: A) => Option.Option<A2>): STM<R, E, A2>
410
+ <A, A2>(pf: (a: A) => Option.Option<A2>): <R, E>(self: STM<A, E, R>) => STM<A2, E, R>
411
+ <R, E, A, A2>(self: STM<A, E, R>, pf: (a: A) => Option.Option<A2>): STM<A2, E, R>
412
412
  } = stm.collect
413
413
 
414
414
  /**
@@ -418,8 +418,8 @@ export const collect: {
418
418
  * @category mutations
419
419
  */
420
420
  export const collectSTM: {
421
- <A, R2, E2, A2>(pf: (a: A) => Option.Option<STM<R2, E2, A2>>): <R, E>(self: STM<R, E, A>) => STM<R2 | R, E2 | E, A2>
422
- <R, E, A, R2, E2, A2>(self: STM<R, E, A>, pf: (a: A) => Option.Option<STM<R2, E2, A2>>): STM<R | R2, E | E2, A2>
421
+ <A, R2, E2, A2>(pf: (a: A) => Option.Option<STM<A2, E2, R2>>): <R, E>(self: STM<A, E, R>) => STM<A2, E2 | E, R2 | R>
422
+ <R, E, A, R2, E2, A2>(self: STM<A, E, R>, pf: (a: A) => Option.Option<STM<A2, E2, R2>>): STM<A2, E | E2, R | R2>
423
423
  } = stm.collectSTM
424
424
 
425
425
  /**
@@ -428,7 +428,7 @@ export const collectSTM: {
428
428
  * @since 2.0.0
429
429
  * @category destructors
430
430
  */
431
- export const commit: <R, E, A>(self: STM<R, E, A>) => Effect.Effect<R, E, A> = core.commit
431
+ export const commit: <A, E, R>(self: STM<A, E, R>) => Effect.Effect<A, E, R> = core.commit
432
432
 
433
433
  /**
434
434
  * Commits this transaction atomically, regardless of whether the transaction
@@ -437,7 +437,7 @@ export const commit: <R, E, A>(self: STM<R, E, A>) => Effect.Effect<R, E, A> = c
437
437
  * @since 2.0.0
438
438
  * @category destructors
439
439
  */
440
- export const commitEither: <R, E, A>(self: STM<R, E, A>) => Effect.Effect<R, E, A> = stm.commitEither
440
+ export const commitEither: <A, E, R>(self: STM<A, E, R>) => Effect.Effect<A, E, R> = stm.commitEither
441
441
 
442
442
  /**
443
443
  * Similar to Either.cond, evaluate the predicate, return the given A as
@@ -446,8 +446,7 @@ export const commitEither: <R, E, A>(self: STM<R, E, A>) => Effect.Effect<R, E,
446
446
  * @since 2.0.0
447
447
  * @category constructors
448
448
  */
449
- export const cond: <E, A>(predicate: LazyArg<boolean>, error: LazyArg<E>, result: LazyArg<A>) => STM<never, E, A> =
450
- stm.cond
449
+ export const cond: <A, E>(predicate: LazyArg<boolean>, error: LazyArg<E>, result: LazyArg<A>) => STM<A, E> = stm.cond
451
450
 
452
451
  /**
453
452
  * Retrieves the environment inside an stm.
@@ -455,7 +454,7 @@ export const cond: <E, A>(predicate: LazyArg<boolean>, error: LazyArg<E>, result
455
454
  * @since 2.0.0
456
455
  * @category constructors
457
456
  */
458
- export const context: <R>() => STM<R, never, Context.Context<R>> = core.context
457
+ export const context: <R>() => STM<Context.Context<R>, never, R> = core.context
459
458
 
460
459
  /**
461
460
  * Accesses the environment of the transaction to perform a transaction.
@@ -463,7 +462,7 @@ export const context: <R>() => STM<R, never, Context.Context<R>> = core.context
463
462
  * @since 2.0.0
464
463
  * @category constructors
465
464
  */
466
- export const contextWith: <R0, R>(f: (environment: Context.Context<R0>) => R) => STM<R0, never, R> = core.contextWith
465
+ export const contextWith: <R0, R>(f: (environment: Context.Context<R0>) => R) => STM<R, never, R0> = core.contextWith
467
466
 
468
467
  /**
469
468
  * Accesses the environment of the transaction to perform a transaction.
@@ -472,8 +471,8 @@ export const contextWith: <R0, R>(f: (environment: Context.Context<R0>) => R) =>
472
471
  * @category constructors
473
472
  */
474
473
  export const contextWithSTM: <R0, R, E, A>(
475
- f: (environment: Context.Context<R0>) => STM<R, E, A>
476
- ) => STM<R0 | R, E, A> = core.contextWithSTM
474
+ f: (environment: Context.Context<R0>) => STM<A, E, R>
475
+ ) => STM<A, E, R0 | R> = core.contextWithSTM
477
476
 
478
477
  /**
479
478
  * Transforms the environment being provided to this effect with the specified
@@ -483,8 +482,8 @@ export const contextWithSTM: <R0, R, E, A>(
483
482
  * @category context
484
483
  */
485
484
  export const mapInputContext: {
486
- <R0, R>(f: (context: Context.Context<R0>) => Context.Context<R>): <E, A>(self: STM<R, E, A>) => STM<R0, E, A>
487
- <E, A, R0, R>(self: STM<R, E, A>, f: (context: Context.Context<R0>) => Context.Context<R>): STM<R0, E, A>
485
+ <R0, R>(f: (context: Context.Context<R0>) => Context.Context<R>): <A, E>(self: STM<A, E, R>) => STM<A, E, R0>
486
+ <A, E, R0, R>(self: STM<A, E, R>, f: (context: Context.Context<R0>) => Context.Context<R>): STM<A, E, R0>
488
487
  } = core.mapInputContext
489
488
 
490
489
  /**
@@ -493,7 +492,7 @@ export const mapInputContext: {
493
492
  * @since 2.0.0
494
493
  * @category constructors
495
494
  */
496
- export const die: (defect: unknown) => STM<never, never, never> = core.die
495
+ export const die: (defect: unknown) => STM<never> = core.die
497
496
 
498
497
  /**
499
498
  * Kills the fiber running the effect with a `Cause.RuntimeException` that
@@ -502,7 +501,7 @@ export const die: (defect: unknown) => STM<never, never, never> = core.die
502
501
  * @since 2.0.0
503
502
  * @category constructors
504
503
  */
505
- export const dieMessage: (message: string) => STM<never, never, never> = core.dieMessage
504
+ export const dieMessage: (message: string) => STM<never> = core.dieMessage
506
505
 
507
506
  /**
508
507
  * Fails the transactional effect with the specified lazily evaluated defect.
@@ -510,7 +509,7 @@ export const dieMessage: (message: string) => STM<never, never, never> = core.di
510
509
  * @since 2.0.0
511
510
  * @category constructors
512
511
  */
513
- export const dieSync: (evaluate: LazyArg<unknown>) => STM<never, never, never> = core.dieSync
512
+ export const dieSync: (evaluate: LazyArg<unknown>) => STM<never> = core.dieSync
514
513
 
515
514
  /**
516
515
  * Converts the failure channel into an `Either`.
@@ -518,7 +517,7 @@ export const dieSync: (evaluate: LazyArg<unknown>) => STM<never, never, never> =
518
517
  * @since 2.0.0
519
518
  * @category mutations
520
519
  */
521
- export const either: <R, E, A>(self: STM<R, E, A>) => STM<R, never, Either.Either<E, A>> = stm.either
520
+ export const either: <A, E, R>(self: STM<A, E, R>) => STM<Either.Either<E, A>, never, R> = stm.either
522
521
 
523
522
  /**
524
523
  * Executes the specified finalization transaction whether or not this effect
@@ -529,8 +528,8 @@ export const either: <R, E, A>(self: STM<R, E, A>) => STM<R, never, Either.Eithe
529
528
  * @category finalization
530
529
  */
531
530
  export const ensuring: {
532
- <R1, B>(finalizer: STM<R1, never, B>): <R, E, A>(self: STM<R, E, A>) => STM<R1 | R, E, A>
533
- <R, E, A, R1, B>(self: STM<R, E, A>, finalizer: STM<R1, never, B>): STM<R | R1, E, A>
531
+ <R1, B>(finalizer: STM<B, never, R1>): <A, E, R>(self: STM<A, E, R>) => STM<A, E, R1 | R>
532
+ <R, E, A, R1, B>(self: STM<A, E, R>, finalizer: STM<B, never, R1>): STM<A, E, R | R1>
534
533
  } = core.ensuring
535
534
 
536
535
  /**
@@ -540,7 +539,7 @@ export const ensuring: {
540
539
  * @since 2.0.0
541
540
  * @category mutations
542
541
  */
543
- export const eventually: <R, E, A>(self: STM<R, E, A>) => STM<R, E, A> = stm.eventually
542
+ export const eventually: <A, E, R>(self: STM<A, E, R>) => STM<A, E, R> = stm.eventually
544
543
 
545
544
  /**
546
545
  * Determines whether all elements of the `Iterable<A>` satisfy the effectual
@@ -550,8 +549,8 @@ export const eventually: <R, E, A>(self: STM<R, E, A>) => STM<R, E, A> = stm.eve
550
549
  * @category constructors
551
550
  */
552
551
  export const every: {
553
- <A, R, E>(predicate: (a: NoInfer<A>) => STM<R, E, boolean>): (iterable: Iterable<A>) => STM<R, E, boolean>
554
- <A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM<R, E, boolean>): STM<R, E, boolean>
552
+ <A, R, E>(predicate: (a: NoInfer<A>) => STM<boolean, E, R>): (iterable: Iterable<A>) => STM<boolean, E, R>
553
+ <A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM<boolean, E, R>): STM<boolean, E, R>
555
554
  } = stm.every
556
555
 
557
556
  /**
@@ -562,8 +561,8 @@ export const every: {
562
561
  * @category constructors
563
562
  */
564
563
  export const exists: {
565
- <A, R, E>(predicate: (a: NoInfer<A>) => STM<R, E, boolean>): (iterable: Iterable<A>) => STM<R, E, boolean>
566
- <A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM<R, E, boolean>): STM<R, E, boolean>
564
+ <A, R, E>(predicate: (a: NoInfer<A>) => STM<boolean, E, R>): (iterable: Iterable<A>) => STM<boolean, E, R>
565
+ <A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM<boolean, E, R>): STM<boolean, E, R>
567
566
  } = stm.exists
568
567
 
569
568
  /**
@@ -572,7 +571,7 @@ export const exists: {
572
571
  * @since 2.0.0
573
572
  * @category constructors
574
573
  */
575
- export const fail: <E>(error: E) => STM<never, E, never> = core.fail
574
+ export const fail: <E>(error: E) => STM<never, E> = core.fail
576
575
 
577
576
  /**
578
577
  * Fails the transactional effect with the specified lazily evaluated error.
@@ -580,7 +579,7 @@ export const fail: <E>(error: E) => STM<never, E, never> = core.fail
580
579
  * @since 2.0.0
581
580
  * @category constructors
582
581
  */
583
- export const failSync: <E>(evaluate: LazyArg<E>) => STM<never, E, never> = core.failSync
582
+ export const failSync: <E>(evaluate: LazyArg<E>) => STM<never, E> = core.failSync
584
583
 
585
584
  /**
586
585
  * Returns the fiber id of the fiber committing the transaction.
@@ -588,7 +587,7 @@ export const failSync: <E>(evaluate: LazyArg<E>) => STM<never, E, never> = core.
588
587
  * @since 2.0.0
589
588
  * @category constructors
590
589
  */
591
- export const fiberId: STM<never, never, FiberId.FiberId> = stm.fiberId
590
+ export const fiberId: STM<FiberId.FiberId> = stm.fiberId
592
591
 
593
592
  /**
594
593
  * Filters the collection using the specified effectual predicate.
@@ -597,8 +596,8 @@ export const fiberId: STM<never, never, FiberId.FiberId> = stm.fiberId
597
596
  * @category constructors
598
597
  */
599
598
  export const filter: {
600
- <A, R, E>(predicate: (a: NoInfer<A>) => STM<R, E, boolean>): (iterable: Iterable<A>) => STM<R, E, Array<A>>
601
- <A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM<R, E, boolean>): STM<R, E, Array<A>>
599
+ <A, R, E>(predicate: (a: NoInfer<A>) => STM<boolean, E, R>): (iterable: Iterable<A>) => STM<Array<A>, E, R>
600
+ <A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM<boolean, E, R>): STM<Array<A>, E, R>
602
601
  } = stm.filter
603
602
 
604
603
  /**
@@ -609,8 +608,8 @@ export const filter: {
609
608
  * @category constructors
610
609
  */
611
610
  export const filterNot: {
612
- <A, R, E>(predicate: (a: NoInfer<A>) => STM<R, E, boolean>): (iterable: Iterable<A>) => STM<R, E, Array<A>>
613
- <A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM<R, E, boolean>): STM<R, E, Array<A>>
611
+ <A, R, E>(predicate: (a: NoInfer<A>) => STM<boolean, E, R>): (iterable: Iterable<A>) => STM<Array<A>, E, R>
612
+ <A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM<boolean, E, R>): STM<Array<A>, E, R>
614
613
  } = stm.filterNot
615
614
 
616
615
  /**
@@ -623,10 +622,10 @@ export const filterOrDie: {
623
622
  <A, B extends A>(
624
623
  refinement: Refinement<NoInfer<A>, B>,
625
624
  defect: LazyArg<unknown>
626
- ): <R, E>(self: STM<R, E, A>) => STM<R, E, B>
627
- <A>(predicate: Predicate<NoInfer<A>>, defect: LazyArg<unknown>): <R, E>(self: STM<R, E, A>) => STM<R, E, A>
628
- <R, E, A, B extends A>(self: STM<R, E, A>, refinement: Refinement<A, B>, defect: LazyArg<unknown>): STM<R, E, B>
629
- <R, E, A>(self: STM<R, E, A>, predicate: Predicate<A>, defect: LazyArg<unknown>): STM<R, E, A>
625
+ ): <R, E>(self: STM<A, E, R>) => STM<B, E, R>
626
+ <A>(predicate: Predicate<NoInfer<A>>, defect: LazyArg<unknown>): <R, E>(self: STM<A, E, R>) => STM<A, E, R>
627
+ <R, E, A, B extends A>(self: STM<A, E, R>, refinement: Refinement<A, B>, defect: LazyArg<unknown>): STM<B, E, R>
628
+ <A, E, R>(self: STM<A, E, R>, predicate: Predicate<A>, defect: LazyArg<unknown>): STM<A, E, R>
630
629
  } = stm.filterOrDie
631
630
 
632
631
  /**
@@ -637,10 +636,10 @@ export const filterOrDie: {
637
636
  * @category filtering
638
637
  */
639
638
  export const filterOrDieMessage: {
640
- <A, B extends A>(refinement: Refinement<NoInfer<A>, B>, message: string): <R, E>(self: STM<R, E, A>) => STM<R, E, B>
641
- <A>(predicate: Predicate<NoInfer<A>>, message: string): <R, E>(self: STM<R, E, A>) => STM<R, E, A>
642
- <R, E, A, B extends A>(self: STM<R, E, A>, refinement: Refinement<A, B>, message: string): STM<R, E, B>
643
- <R, E, A>(self: STM<R, E, A>, predicate: Predicate<A>, message: string): STM<R, E, A>
639
+ <A, B extends A>(refinement: Refinement<NoInfer<A>, B>, message: string): <R, E>(self: STM<A, E, R>) => STM<B, E, R>
640
+ <A>(predicate: Predicate<NoInfer<A>>, message: string): <R, E>(self: STM<A, E, R>) => STM<A, E, R>
641
+ <R, E, A, B extends A>(self: STM<A, E, R>, refinement: Refinement<A, B>, message: string): STM<B, E, R>
642
+ <A, E, R>(self: STM<A, E, R>, predicate: Predicate<A>, message: string): STM<A, E, R>
644
643
  } = stm.filterOrDieMessage
645
644
 
646
645
  /**
@@ -652,22 +651,22 @@ export const filterOrDieMessage: {
652
651
  export const filterOrElse: {
653
652
  <A, B extends A, R2, E2, C>(
654
653
  refinement: Refinement<NoInfer<A>, B>,
655
- orElse: (a: NoInfer<A>) => STM<R2, E2, C>
656
- ): <R, E>(self: STM<R, E, A>) => STM<R2 | R, E2 | E, B | C>
654
+ orElse: (a: NoInfer<A>) => STM<C, E2, R2>
655
+ ): <R, E>(self: STM<A, E, R>) => STM<B | C, E2 | E, R2 | R>
657
656
  <A, R2, E2, B>(
658
657
  predicate: Predicate<NoInfer<A>>,
659
- orElse: (a: NoInfer<A>) => STM<R2, E2, B>
660
- ): <R, E>(self: STM<R, E, A>) => STM<R2 | R, E2 | E, A | B>
658
+ orElse: (a: NoInfer<A>) => STM<B, E2, R2>
659
+ ): <R, E>(self: STM<A, E, R>) => STM<A | B, E2 | E, R2 | R>
661
660
  <R, E, A, B extends A, R2, E2, C>(
662
- self: STM<R, E, A>,
661
+ self: STM<A, E, R>,
663
662
  refinement: Refinement<A, B>,
664
- orElse: (a: A) => STM<R2, E2, C>
665
- ): STM<R | R2, E | E2, B | C>
663
+ orElse: (a: A) => STM<C, E2, R2>
664
+ ): STM<B | C, E | E2, R | R2>
666
665
  <R, E, A, R2, E2, B>(
667
- self: STM<R, E, A>,
666
+ self: STM<A, E, R>,
668
667
  predicate: Predicate<A>,
669
- orElse: (a: A) => STM<R2, E2, B>
670
- ): STM<R | R2, E | E2, A | B>
668
+ orElse: (a: A) => STM<B, E2, R2>
669
+ ): STM<A | B, E | E2, R | R2>
671
670
  } = stm.filterOrElse
672
671
 
673
672
  /**
@@ -680,17 +679,17 @@ export const filterOrFail: {
680
679
  <A, B extends A, E2>(
681
680
  refinement: Refinement<NoInfer<A>, B>,
682
681
  orFailWith: (a: NoInfer<A>) => E2
683
- ): <R, E>(self: STM<R, E, A>) => STM<R, E2 | E, B>
682
+ ): <R, E>(self: STM<A, E, R>) => STM<B, E2 | E, R>
684
683
  <A, E2>(
685
684
  predicate: Predicate<NoInfer<A>>,
686
685
  orFailWith: (a: NoInfer<A>) => E2
687
- ): <R, E>(self: STM<R, E, A>) => STM<R, E2 | E, A>
686
+ ): <R, E>(self: STM<A, E, R>) => STM<A, E2 | E, R>
688
687
  <R, E, A, B extends A, E2>(
689
- self: STM<R, E, A>,
688
+ self: STM<A, E, R>,
690
689
  refinement: Refinement<A, B>,
691
690
  orFailWith: (a: A) => E2
692
- ): STM<R, E | E2, B>
693
- <R, E, A, E2>(self: STM<R, E, A>, predicate: Predicate<A>, orFailWith: (a: A) => E2): STM<R, E | E2, A>
691
+ ): STM<B, E | E2, R>
692
+ <R, E, A, E2>(self: STM<A, E, R>, predicate: Predicate<A>, orFailWith: (a: A) => E2): STM<A, E | E2, R>
694
693
  } = stm.filterOrFail
695
694
 
696
695
  /**
@@ -701,8 +700,8 @@ export const filterOrFail: {
701
700
  * @category sequencing
702
701
  */
703
702
  export const flatMap: {
704
- <A, R1, E1, A2>(f: (a: A) => STM<R1, E1, A2>): <R, E>(self: STM<R, E, A>) => STM<R1 | R, E1 | E, A2>
705
- <R, E, A, R1, E1, A2>(self: STM<R, E, A>, f: (a: A) => STM<R1, E1, A2>): STM<R | R1, E | E1, A2>
703
+ <A, R1, E1, A2>(f: (a: A) => STM<A2, E1, R1>): <R, E>(self: STM<A, E, R>) => STM<A2, E1 | E, R1 | R>
704
+ <R, E, A, R1, E1, A2>(self: STM<A, E, R>, f: (a: A) => STM<A2, E1, R1>): STM<A2, E | E1, R | R1>
706
705
  } = core.flatMap
707
706
 
708
707
  /**
@@ -711,7 +710,7 @@ export const flatMap: {
711
710
  * @since 2.0.0
712
711
  * @category sequencing
713
712
  */
714
- export const flatten: <R, E, R2, E2, A>(self: STM<R, E, STM<R2, E2, A>>) => STM<R | R2, E | E2, A> = stm.flatten
713
+ export const flatten: <R, E, R2, E2, A>(self: STM<STM<A, E2, R2>, E, R>) => STM<A, E | E2, R | R2> = stm.flatten
715
714
 
716
715
  /**
717
716
  * Flips the success and failure channels of this transactional effect. This
@@ -721,7 +720,7 @@ export const flatten: <R, E, R2, E2, A>(self: STM<R, E, STM<R2, E2, A>>) => STM<
721
720
  * @since 2.0.0
722
721
  * @category mutations
723
722
  */
724
- export const flip: <R, E, A>(self: STM<R, E, A>) => STM<R, A, E> = stm.flip
723
+ export const flip: <A, E, R>(self: STM<A, E, R>) => STM<E, A, R> = stm.flip
725
724
 
726
725
  /**
727
726
  * Swaps the error/value parameters, applies the function `f` and flips the
@@ -731,8 +730,8 @@ export const flip: <R, E, A>(self: STM<R, E, A>) => STM<R, A, E> = stm.flip
731
730
  * @category mutations
732
731
  */
733
732
  export const flipWith: {
734
- <R, A, E, R2, A2, E2>(f: (stm: STM<R, A, E>) => STM<R2, A2, E2>): (self: STM<R, E, A>) => STM<R | R2, E | E2, A | A2>
735
- <R, A, E, R2, A2, E2>(self: STM<R, E, A>, f: (stm: STM<R, A, E>) => STM<R2, A2, E2>): STM<R | R2, E | E2, A | A2>
733
+ <R, A, E, R2, A2, E2>(f: (stm: STM<E, A, R>) => STM<E2, A2, R2>): (self: STM<A, E, R>) => STM<A | A2, E | E2, R | R2>
734
+ <R, A, E, R2, A2, E2>(self: STM<A, E, R>, f: (stm: STM<E, A, R>) => STM<E2, A2, R2>): STM<A | A2, E | E2, R | R2>
736
735
  } = stm.flipWith
737
736
 
738
737
  /**
@@ -748,14 +747,14 @@ export const match: {
748
747
  readonly onFailure: (error: E) => A2
749
748
  readonly onSuccess: (value: A) => A3
750
749
  }
751
- ): <R>(self: STM<R, E, A>) => STM<R, never, A2 | A3>
750
+ ): <R>(self: STM<A, E, R>) => STM<A2 | A3, never, R>
752
751
  <R, E, A2, A, A3>(
753
- self: STM<R, E, A>,
752
+ self: STM<A, E, R>,
754
753
  options: {
755
754
  readonly onFailure: (error: E) => A2
756
755
  readonly onSuccess: (value: A) => A3
757
756
  }
758
- ): STM<R, never, A2 | A3>
757
+ ): STM<A2 | A3, never, R>
759
758
  } = stm.match
760
759
 
761
760
  /**
@@ -767,17 +766,17 @@ export const match: {
767
766
  export const matchSTM: {
768
767
  <E, R1, E1, A1, A, R2, E2, A2>(
769
768
  options: {
770
- readonly onFailure: (e: E) => STM<R1, E1, A1>
771
- readonly onSuccess: (a: A) => STM<R2, E2, A2>
769
+ readonly onFailure: (e: E) => STM<A1, E1, R1>
770
+ readonly onSuccess: (a: A) => STM<A2, E2, R2>
772
771
  }
773
- ): <R>(self: STM<R, E, A>) => STM<R1 | R2 | R, E1 | E2, A1 | A2>
772
+ ): <R>(self: STM<A, E, R>) => STM<A1 | A2, E1 | E2, R1 | R2 | R>
774
773
  <R, E, R1, E1, A1, A, R2, E2, A2>(
775
- self: STM<R, E, A>,
774
+ self: STM<A, E, R>,
776
775
  options: {
777
- readonly onFailure: (e: E) => STM<R1, E1, A1>
778
- readonly onSuccess: (a: A) => STM<R2, E2, A2>
776
+ readonly onFailure: (e: E) => STM<A1, E1, R1>
777
+ readonly onSuccess: (a: A) => STM<A2, E2, R2>
779
778
  }
780
- ): STM<R | R1 | R2, E1 | E2, A1 | A2>
779
+ ): STM<A1 | A2, E1 | E2, R | R1 | R2>
781
780
  } = core.matchSTM
782
781
 
783
782
  /**
@@ -789,27 +788,27 @@ export const matchSTM: {
789
788
  */
790
789
  export const forEach: {
791
790
  <A, R, E, A2>(
792
- f: (a: A) => STM<R, E, A2>,
791
+ f: (a: A) => STM<A2, E, R>,
793
792
  options?: {
794
793
  readonly discard?: false | undefined
795
794
  }
796
- ): (elements: Iterable<A>) => STM<R, E, Array<A2>>
795
+ ): (elements: Iterable<A>) => STM<Array<A2>, E, R>
797
796
  <A, R, E, A2>(
798
- f: (a: A) => STM<R, E, A2>,
797
+ f: (a: A) => STM<A2, E, R>,
799
798
  options: {
800
799
  readonly discard: true
801
800
  }
802
- ): (elements: Iterable<A>) => STM<R, E, void>
801
+ ): (elements: Iterable<A>) => STM<void, E, R>
803
802
  <A, R, E, A2>(
804
803
  elements: Iterable<A>,
805
- f: (a: A) => STM<R, E, A2>,
804
+ f: (a: A) => STM<A2, E, R>,
806
805
  options?: {
807
806
  readonly discard?: false | undefined
808
807
  }
809
- ): STM<R, E, Array<A2>>
810
- <A, R, E, A2>(elements: Iterable<A>, f: (a: A) => STM<R, E, A2>, options: {
808
+ ): STM<Array<A2>, E, R>
809
+ <A, R, E, A2>(elements: Iterable<A>, f: (a: A) => STM<A2, E, R>, options: {
811
810
  readonly discard: true
812
- }): STM<R, E, void>
811
+ }): STM<void, E, R>
813
812
  } = stm.forEach
814
813
 
815
814
  /**
@@ -818,7 +817,7 @@ export const forEach: {
818
817
  * @since 2.0.0
819
818
  * @category constructors
820
819
  */
821
- export const fromEither: <E, A>(either: Either.Either<E, A>) => STM<never, E, A> = stm.fromEither
820
+ export const fromEither: <E, A>(either: Either.Either<E, A>) => STM<A, E> = stm.fromEither
822
821
 
823
822
  /**
824
823
  * Lifts an `Option` into a `STM`.
@@ -826,32 +825,32 @@ export const fromEither: <E, A>(either: Either.Either<E, A>) => STM<never, E, A>
826
825
  * @since 2.0.0
827
826
  * @category constructors
828
827
  */
829
- export const fromOption: <A>(option: Option.Option<A>) => STM<never, Option.Option<never>, A> = stm.fromOption
828
+ export const fromOption: <A>(option: Option.Option<A>) => STM<A, Option.Option<never>> = stm.fromOption
830
829
 
831
830
  /**
832
831
  * @since 2.0.0
833
832
  * @category models
834
833
  */
835
834
  export interface Adapter {
836
- <R, E, A>(self: STM<R, E, A>): STMGen<R, E, A>
837
- <A, _R, _E, _A>(a: A, ab: (a: A) => STM<_R, _E, _A>): STMGen<_R, _E, _A>
838
- <A, B, _R, _E, _A>(a: A, ab: (a: A) => B, bc: (b: B) => STM<_R, _E, _A>): STMGen<_R, _E, _A>
839
- <A, B, C, _R, _E, _A>(a: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => STM<_R, _E, _A>): STMGen<_R, _E, _A>
835
+ <A, E, R>(self: STM<A, E, R>): STMGen<A, E, R>
836
+ <A, _R, _E, _A>(a: A, ab: (a: A) => STM<_A, _E, _R>): STMGen<_A, _E, _R>
837
+ <A, B, _R, _E, _A>(a: A, ab: (a: A) => B, bc: (b: B) => STM<_A, _E, _R>): STMGen<_A, _E, _R>
838
+ <A, B, C, _R, _E, _A>(a: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => STM<_A, _E, _R>): STMGen<_A, _E, _R>
840
839
  <A, B, C, D, _R, _E, _A>(
841
840
  a: A,
842
841
  ab: (a: A) => B,
843
842
  bc: (b: B) => C,
844
843
  cd: (c: C) => D,
845
- de: (d: D) => STM<_R, _E, _A>
846
- ): STMGen<_R, _E, _A>
844
+ de: (d: D) => STM<_A, _E, _R>
845
+ ): STMGen<_A, _E, _R>
847
846
  <A, B, C, D, E, _R, _E, _A>(
848
847
  a: A,
849
848
  ab: (a: A) => B,
850
849
  bc: (b: B) => C,
851
850
  cd: (c: C) => D,
852
851
  de: (d: D) => E,
853
- ef: (e: E) => STM<_R, _E, _A>
854
- ): STMGen<_R, _E, _A>
852
+ ef: (e: E) => STM<_A, _E, _R>
853
+ ): STMGen<_A, _E, _R>
855
854
  <A, B, C, D, E, F, _R, _E, _A>(
856
855
  a: A,
857
856
  ab: (a: A) => B,
@@ -859,8 +858,8 @@ export interface Adapter {
859
858
  cd: (c: C) => D,
860
859
  de: (d: D) => E,
861
860
  ef: (e: E) => F,
862
- fg: (f: F) => STM<_R, _E, _A>
863
- ): STMGen<_R, _E, _A>
861
+ fg: (f: F) => STM<_A, _E, _R>
862
+ ): STMGen<_A, _E, _R>
864
863
  <A, B, C, D, E, F, G, _R, _E, _A>(
865
864
  a: A,
866
865
  ab: (a: A) => B,
@@ -869,8 +868,8 @@ export interface Adapter {
869
868
  de: (d: D) => E,
870
869
  ef: (e: E) => F,
871
870
  fg: (f: F) => G,
872
- gh: (g: F) => STM<_R, _E, _A>
873
- ): STMGen<_R, _E, _A>
871
+ gh: (g: F) => STM<_A, _E, _R>
872
+ ): STMGen<_A, _E, _R>
874
873
  <A, B, C, D, E, F, G, H, _R, _E, _A>(
875
874
  a: A,
876
875
  ab: (a: A) => B,
@@ -880,8 +879,8 @@ export interface Adapter {
880
879
  ef: (e: E) => F,
881
880
  fg: (f: F) => G,
882
881
  gh: (g: G) => H,
883
- hi: (g: H) => STM<_R, _E, _A>
884
- ): STMGen<_R, _E, _A>
882
+ hi: (g: H) => STM<_A, _E, _R>
883
+ ): STMGen<_A, _E, _R>
885
884
  <A, B, C, D, E, F, G, H, I, _R, _E, _A>(
886
885
  a: A,
887
886
  ab: (a: A) => B,
@@ -892,8 +891,8 @@ export interface Adapter {
892
891
  fg: (f: F) => G,
893
892
  gh: (g: G) => H,
894
893
  hi: (h: H) => I,
895
- ij: (i: I) => STM<_R, _E, _A>
896
- ): STMGen<_R, _E, _A>
894
+ ij: (i: I) => STM<_A, _E, _R>
895
+ ): STMGen<_A, _E, _R>
897
896
  <A, B, C, D, E, F, G, H, I, J, _R, _E, _A>(
898
897
  a: A,
899
898
  ab: (a: A) => B,
@@ -905,8 +904,8 @@ export interface Adapter {
905
904
  gh: (g: G) => H,
906
905
  hi: (h: H) => I,
907
906
  ij: (i: I) => J,
908
- jk: (j: J) => STM<_R, _E, _A>
909
- ): STMGen<_R, _E, _A>
907
+ jk: (j: J) => STM<_A, _E, _R>
908
+ ): STMGen<_A, _E, _R>
910
909
  <A, B, C, D, E, F, G, H, I, J, K, _R, _E, _A>(
911
910
  a: A,
912
911
  ab: (a: A) => B,
@@ -919,8 +918,8 @@ export interface Adapter {
919
918
  hi: (h: H) => I,
920
919
  ij: (i: I) => J,
921
920
  jk: (j: J) => K,
922
- kl: (k: K) => STM<_R, _E, _A>
923
- ): STMGen<_R, _E, _A>
921
+ kl: (k: K) => STM<_A, _E, _R>
922
+ ): STMGen<_A, _E, _R>
924
923
  <A, B, C, D, E, F, G, H, I, J, K, L, _R, _E, _A>(
925
924
  a: A,
926
925
  ab: (a: A) => B,
@@ -934,8 +933,8 @@ export interface Adapter {
934
933
  ij: (i: I) => J,
935
934
  jk: (j: J) => K,
936
935
  kl: (k: K) => L,
937
- lm: (l: L) => STM<_R, _E, _A>
938
- ): STMGen<_R, _E, _A>
936
+ lm: (l: L) => STM<_A, _E, _R>
937
+ ): STMGen<_A, _E, _R>
939
938
  <A, B, C, D, E, F, G, H, I, J, K, L, M, _R, _E, _A>(
940
939
  a: A,
941
940
  ab: (a: A) => B,
@@ -950,8 +949,8 @@ export interface Adapter {
950
949
  jk: (j: J) => K,
951
950
  kl: (k: K) => L,
952
951
  lm: (l: L) => M,
953
- mn: (m: M) => STM<_R, _E, _A>
954
- ): STMGen<_R, _E, _A>
952
+ mn: (m: M) => STM<_A, _E, _R>
953
+ ): STMGen<_A, _E, _R>
955
954
  <A, B, C, D, E, F, G, H, I, J, K, L, M, N, _R, _E, _A>(
956
955
  a: A,
957
956
  ab: (a: A) => B,
@@ -967,8 +966,8 @@ export interface Adapter {
967
966
  kl: (k: K) => L,
968
967
  lm: (l: L) => M,
969
968
  mn: (m: M) => N,
970
- no: (n: N) => STM<_R, _E, _A>
971
- ): STMGen<_R, _E, _A>
969
+ no: (n: N) => STM<_A, _E, _R>
970
+ ): STMGen<_A, _E, _R>
972
971
  <A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, _R, _E, _A>(
973
972
  a: A,
974
973
  ab: (a: A) => B,
@@ -985,8 +984,8 @@ export interface Adapter {
985
984
  lm: (l: L) => M,
986
985
  mn: (m: M) => N,
987
986
  no: (n: N) => O,
988
- op: (o: O) => STM<_R, _E, _A>
989
- ): STMGen<_R, _E, _A>
987
+ op: (o: O) => STM<_A, _E, _R>
988
+ ): STMGen<_A, _E, _R>
990
989
  <A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, _R, _E, _A>(
991
990
  a: A,
992
991
  ab: (a: A) => B,
@@ -1004,8 +1003,8 @@ export interface Adapter {
1004
1003
  mn: (m: M) => N,
1005
1004
  no: (n: N) => O,
1006
1005
  op: (o: O) => P,
1007
- pq: (p: P) => STM<_R, _E, _A>
1008
- ): STMGen<_R, _E, _A>
1006
+ pq: (p: P) => STM<_A, _E, _R>
1007
+ ): STMGen<_A, _E, _R>
1009
1008
  <A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, _R, _E, _A>(
1010
1009
  a: A,
1011
1010
  ab: (a: A) => B,
@@ -1024,8 +1023,8 @@ export interface Adapter {
1024
1023
  no: (n: N) => O,
1025
1024
  op: (o: O) => P,
1026
1025
  pq: (p: P) => Q,
1027
- qr: (q: Q) => STM<_R, _E, _A>
1028
- ): STMGen<_R, _E, _A>
1026
+ qr: (q: Q) => STM<_A, _E, _R>
1027
+ ): STMGen<_A, _E, _R>
1029
1028
  <A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, _R, _E, _A>(
1030
1029
  a: A,
1031
1030
  ab: (a: A) => B,
@@ -1045,8 +1044,8 @@ export interface Adapter {
1045
1044
  op: (o: O) => P,
1046
1045
  pq: (p: P) => Q,
1047
1046
  qr: (q: Q) => R,
1048
- rs: (r: R) => STM<_R, _E, _A>
1049
- ): STMGen<_R, _E, _A>
1047
+ rs: (r: R) => STM<_A, _E, _R>
1048
+ ): STMGen<_A, _E, _R>
1050
1049
  <A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, _R, _E, _A>(
1051
1050
  a: A,
1052
1051
  ab: (a: A) => B,
@@ -1067,8 +1066,8 @@ export interface Adapter {
1067
1066
  pq: (p: P) => Q,
1068
1067
  qr: (q: Q) => R,
1069
1068
  rs: (r: R) => S,
1070
- st: (s: S) => STM<_R, _E, _A>
1071
- ): STMGen<_R, _E, _A>
1069
+ st: (s: S) => STM<_A, _E, _R>
1070
+ ): STMGen<_A, _E, _R>
1072
1071
  <A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, _R, _E, _A>(
1073
1072
  a: A,
1074
1073
  ab: (a: A) => B,
@@ -1090,8 +1089,8 @@ export interface Adapter {
1090
1089
  qr: (q: Q) => R,
1091
1090
  rs: (r: R) => S,
1092
1091
  st: (s: S) => T,
1093
- tu: (s: T) => STM<_R, _E, _A>
1094
- ): STMGen<_R, _E, _A>
1092
+ tu: (s: T) => STM<_A, _E, _R>
1093
+ ): STMGen<_A, _E, _R>
1095
1094
  }
1096
1095
 
1097
1096
  /**
@@ -1101,9 +1100,9 @@ export interface Adapter {
1101
1100
  export const gen: <Eff extends STMGen<any, any, any>, AEff>(
1102
1101
  f: (resume: Adapter) => Generator<Eff, AEff, any>
1103
1102
  ) => STM<
1104
- [Eff] extends [never] ? never : [Eff] extends [STMGen<infer R, any, any>] ? R : never,
1103
+ AEff,
1105
1104
  [Eff] extends [never] ? never : [Eff] extends [STMGen<any, infer E, any>] ? E : never,
1106
- AEff
1105
+ [Eff] extends [never] ? never : [Eff] extends [STMGen<any, any, infer R>] ? R : never
1107
1106
  > = stm.gen
1108
1107
 
1109
1108
  /**
@@ -1113,29 +1112,29 @@ export const gen: <Eff extends STMGen<any, any, any>, AEff>(
1113
1112
  * @since 2.0.0
1114
1113
  * @category getters
1115
1114
  */
1116
- export const head: <R, E, A>(self: STM<R, E, Iterable<A>>) => STM<R, Option.Option<E>, A> = stm.head
1115
+ export const head: <A, E, R>(self: STM<Iterable<A>, E, R>) => STM<A, Option.Option<E>, R> = stm.head
1117
1116
 
1118
1117
  const if_: {
1119
1118
  <R1, R2, E1, E2, A, A1>(
1120
1119
  options: {
1121
- readonly onTrue: STM<R1, E1, A>
1122
- readonly onFalse: STM<R2, E2, A1>
1120
+ readonly onTrue: STM<A, E1, R1>
1121
+ readonly onFalse: STM<A1, E2, R2>
1123
1122
  }
1124
- ): <R = never, E = never>(self: boolean | STM<R, E, boolean>) => STM<R1 | R2 | R, E1 | E2 | E, A | A1>
1123
+ ): <R = never, E = never>(self: boolean | STM<boolean, E, R>) => STM<A | A1, E1 | E2 | E, R1 | R2 | R>
1125
1124
  <R, E, R1, R2, E1, E2, A, A1>(
1126
1125
  self: boolean,
1127
1126
  options: {
1128
- readonly onTrue: STM<R1, E1, A>
1129
- readonly onFalse: STM<R2, E2, A1>
1127
+ readonly onTrue: STM<A, E1, R1>
1128
+ readonly onFalse: STM<A1, E2, R2>
1130
1129
  }
1131
- ): STM<R | R1 | R2, E | E1 | E2, A | A1>
1130
+ ): STM<A | A1, E | E1 | E2, R | R1 | R2>
1132
1131
  <R, E, R1, R2, E1, E2, A, A1>(
1133
- self: STM<R, E, boolean>,
1132
+ self: STM<boolean, E, R>,
1134
1133
  options: {
1135
- readonly onTrue: STM<R1, E1, A>
1136
- readonly onFalse: STM<R2, E2, A1>
1134
+ readonly onTrue: STM<A, E1, R1>
1135
+ readonly onFalse: STM<A1, E2, R2>
1137
1136
  }
1138
- ): STM<R | R1 | R2, E | E1 | E2, A | A1>
1137
+ ): STM<A | A1, E | E1 | E2, R | R1 | R2>
1139
1138
  } = stm.if_
1140
1139
 
1141
1140
  export {
@@ -1154,7 +1153,7 @@ export {
1154
1153
  * @since 2.0.0
1155
1154
  * @category mutations
1156
1155
  */
1157
- export const ignore: <R, E, A>(self: STM<R, E, A>) => STM<R, never, void> = stm.ignore
1156
+ export const ignore: <A, E, R>(self: STM<A, E, R>) => STM<void, never, R> = stm.ignore
1158
1157
 
1159
1158
  /**
1160
1159
  * Interrupts the fiber running the effect.
@@ -1162,7 +1161,7 @@ export const ignore: <R, E, A>(self: STM<R, E, A>) => STM<R, never, void> = stm.
1162
1161
  * @since 2.0.0
1163
1162
  * @category constructors
1164
1163
  */
1165
- export const interrupt: STM<never, never, never> = core.interrupt
1164
+ export const interrupt: STM<never> = core.interrupt
1166
1165
 
1167
1166
  /**
1168
1167
  * Interrupts the fiber running the effect with the specified `FiberId`.
@@ -1170,7 +1169,7 @@ export const interrupt: STM<never, never, never> = core.interrupt
1170
1169
  * @since 2.0.0
1171
1170
  * @category constructors
1172
1171
  */
1173
- export const interruptAs: (fiberId: FiberId.FiberId) => STM<never, never, never> = core.interruptAs
1172
+ export const interruptAs: (fiberId: FiberId.FiberId) => STM<never> = core.interruptAs
1174
1173
 
1175
1174
  /**
1176
1175
  * Returns whether this transactional effect is a failure.
@@ -1178,7 +1177,7 @@ export const interruptAs: (fiberId: FiberId.FiberId) => STM<never, never, never>
1178
1177
  * @since 2.0.0
1179
1178
  * @category getters
1180
1179
  */
1181
- export const isFailure: <R, E, A>(self: STM<R, E, A>) => STM<R, never, boolean> = stm.isFailure
1180
+ export const isFailure: <A, E, R>(self: STM<A, E, R>) => STM<boolean, never, R> = stm.isFailure
1182
1181
 
1183
1182
  /**
1184
1183
  * Returns whether this transactional effect is a success.
@@ -1186,7 +1185,7 @@ export const isFailure: <R, E, A>(self: STM<R, E, A>) => STM<R, never, boolean>
1186
1185
  * @since 2.0.0
1187
1186
  * @category getters
1188
1187
  */
1189
- export const isSuccess: <R, E, A>(self: STM<R, E, A>) => STM<R, never, boolean> = stm.isSuccess
1188
+ export const isSuccess: <A, E, R>(self: STM<A, E, R>) => STM<boolean, never, R> = stm.isSuccess
1190
1189
 
1191
1190
  /**
1192
1191
  * Iterates with the specified transactional function. The moral equivalent
@@ -1209,9 +1208,9 @@ export const iterate: <R, E, Z>(
1209
1208
  initial: Z,
1210
1209
  options: {
1211
1210
  readonly while: Predicate<Z>
1212
- readonly body: (z: Z) => STM<R, E, Z>
1211
+ readonly body: (z: Z) => STM<Z, E, R>
1213
1212
  }
1214
- ) => STM<R, E, Z> = stm.iterate
1213
+ ) => STM<Z, E, R> = stm.iterate
1215
1214
 
1216
1215
  /**
1217
1216
  * Loops with the specified transactional function, collecting the results
@@ -1238,19 +1237,19 @@ export const loop: {
1238
1237
  options: {
1239
1238
  readonly while: Predicate<Z>
1240
1239
  readonly step: (z: Z) => Z
1241
- readonly body: (z: Z) => STM<R, E, A>
1240
+ readonly body: (z: Z) => STM<A, E, R>
1242
1241
  readonly discard?: false | undefined
1243
1242
  }
1244
- ): STM<R, E, Array<A>>
1243
+ ): STM<Array<A>, E, R>
1245
1244
  <Z, R, E, A>(
1246
1245
  initial: Z,
1247
1246
  options: {
1248
1247
  readonly while: Predicate<Z>
1249
1248
  readonly step: (z: Z) => Z
1250
- readonly body: (z: Z) => STM<R, E, A>
1249
+ readonly body: (z: Z) => STM<A, E, R>
1251
1250
  readonly discard: true
1252
1251
  }
1253
- ): STM<R, E, void>
1252
+ ): STM<void, E, R>
1254
1253
  } = stm.loop
1255
1254
 
1256
1255
  /**
@@ -1260,8 +1259,8 @@ export const loop: {
1260
1259
  * @category mapping
1261
1260
  */
1262
1261
  export const map: {
1263
- <A, B>(f: (a: A) => B): <R, E>(self: STM<R, E, A>) => STM<R, E, B>
1264
- <R, E, A, B>(self: STM<R, E, A>, f: (a: A) => B): STM<R, E, B>
1262
+ <A, B>(f: (a: A) => B): <R, E>(self: STM<A, E, R>) => STM<B, E, R>
1263
+ <R, E, A, B>(self: STM<A, E, R>, f: (a: A) => B): STM<B, E, R>
1265
1264
  } = core.map
1266
1265
 
1267
1266
  /**
@@ -1273,8 +1272,8 @@ export const map: {
1273
1272
  * @category mapping
1274
1273
  */
1275
1274
  export const mapAttempt: {
1276
- <A, B>(f: (a: A) => B): <R, E>(self: STM<R, E, A>) => STM<R, unknown, B>
1277
- <R, E, A, B>(self: STM<R, E, A>, f: (a: A) => B): STM<R, unknown, B>
1275
+ <A, B>(f: (a: A) => B): <R, E>(self: STM<A, E, R>) => STM<B, unknown, R>
1276
+ <R, E, A, B>(self: STM<A, E, R>, f: (a: A) => B): STM<B, unknown, R>
1278
1277
  } = stm.mapAttempt
1279
1278
 
1280
1279
  /**
@@ -1290,14 +1289,14 @@ export const mapBoth: {
1290
1289
  readonly onFailure: (error: E) => E2
1291
1290
  readonly onSuccess: (value: A) => A2
1292
1291
  }
1293
- ): <R>(self: STM<R, E, A>) => STM<R, E2, A2>
1292
+ ): <R>(self: STM<A, E, R>) => STM<A2, E2, R>
1294
1293
  <R, E, E2, A, A2>(
1295
- self: STM<R, E, A>,
1294
+ self: STM<A, E, R>,
1296
1295
  options: {
1297
1296
  readonly onFailure: (error: E) => E2
1298
1297
  readonly onSuccess: (value: A) => A2
1299
1298
  }
1300
- ): STM<R, E2, A2>
1299
+ ): STM<A2, E2, R>
1301
1300
  } = stm.mapBoth
1302
1301
 
1303
1302
  /**
@@ -1307,8 +1306,8 @@ export const mapBoth: {
1307
1306
  * @category mapping
1308
1307
  */
1309
1308
  export const mapError: {
1310
- <E, E2>(f: (error: E) => E2): <R, A>(self: STM<R, E, A>) => STM<R, E2, A>
1311
- <R, A, E, E2>(self: STM<R, E, A>, f: (error: E) => E2): STM<R, E2, A>
1309
+ <E, E2>(f: (error: E) => E2): <R, A>(self: STM<A, E, R>) => STM<A, E2, R>
1310
+ <R, A, E, E2>(self: STM<A, E, R>, f: (error: E) => E2): STM<A, E2, R>
1312
1311
  } = stm.mapError
1313
1312
 
1314
1313
  /**
@@ -1318,7 +1317,7 @@ export const mapError: {
1318
1317
  * @since 2.0.0
1319
1318
  * @category mutations
1320
1319
  */
1321
- export const merge: <R, E, A>(self: STM<R, E, A>) => STM<R, never, E | A> = stm.merge
1320
+ export const merge: <A, E, R>(self: STM<A, E, R>) => STM<E | A, never, R> = stm.merge
1322
1321
 
1323
1322
  /**
1324
1323
  * Merges an `Iterable<STM>` to a single `STM`, working sequentially.
@@ -1327,8 +1326,8 @@ export const merge: <R, E, A>(self: STM<R, E, A>) => STM<R, never, E | A> = stm.
1327
1326
  * @category constructors
1328
1327
  */
1329
1328
  export const mergeAll: {
1330
- <A2, A>(zero: A2, f: (a2: A2, a: A) => A2): <R, E>(iterable: Iterable<STM<R, E, A>>) => STM<R, E, A2>
1331
- <R, E, A2, A>(iterable: Iterable<STM<R, E, A>>, zero: A2, f: (a2: A2, a: A) => A2): STM<R, E, A2>
1329
+ <A2, A>(zero: A2, f: (a2: A2, a: A) => A2): <R, E>(iterable: Iterable<STM<A, E, R>>) => STM<A2, E, R>
1330
+ <R, E, A2, A>(iterable: Iterable<STM<A, E, R>>, zero: A2, f: (a2: A2, a: A) => A2): STM<A2, E, R>
1332
1331
  } = stm.mergeAll
1333
1332
 
1334
1333
  /**
@@ -1337,7 +1336,7 @@ export const mergeAll: {
1337
1336
  * @since 2.0.0
1338
1337
  * @category mutations
1339
1338
  */
1340
- export const negate: <R, E>(self: STM<R, E, boolean>) => STM<R, E, boolean> = stm.negate
1339
+ export const negate: <R, E>(self: STM<boolean, E, R>) => STM<boolean, E, R> = stm.negate
1341
1340
 
1342
1341
  /**
1343
1342
  * Requires the option produced by this value to be `None`.
@@ -1345,7 +1344,7 @@ export const negate: <R, E>(self: STM<R, E, boolean>) => STM<R, E, boolean> = st
1345
1344
  * @since 2.0.0
1346
1345
  * @category mutations
1347
1346
  */
1348
- export const none: <R, E, A>(self: STM<R, E, Option.Option<A>>) => STM<R, Option.Option<E>, void> = stm.none
1347
+ export const none: <A, E, R>(self: STM<Option.Option<A>, E, R>) => STM<void, Option.Option<E>, R> = stm.none
1349
1348
 
1350
1349
  /**
1351
1350
  * Converts the failure channel into an `Option`.
@@ -1353,7 +1352,7 @@ export const none: <R, E, A>(self: STM<R, E, Option.Option<A>>) => STM<R, Option
1353
1352
  * @since 2.0.0
1354
1353
  * @category mutations
1355
1354
  */
1356
- export const option: <R, E, A>(self: STM<R, E, A>) => STM<R, never, Option.Option<A>> = stm.option
1355
+ export const option: <A, E, R>(self: STM<A, E, R>) => STM<Option.Option<A>, never, R> = stm.option
1357
1356
 
1358
1357
  /**
1359
1358
  * Translates `STM` effect failure into death of the fiber, making all
@@ -1362,7 +1361,7 @@ export const option: <R, E, A>(self: STM<R, E, A>) => STM<R, never, Option.Optio
1362
1361
  * @since 2.0.0
1363
1362
  * @category error handling
1364
1363
  */
1365
- export const orDie: <R, E, A>(self: STM<R, E, A>) => STM<R, never, A> = stm.orDie
1364
+ export const orDie: <A, E, R>(self: STM<A, E, R>) => STM<A, never, R> = stm.orDie
1366
1365
 
1367
1366
  /**
1368
1367
  * Keeps none of the errors, and terminates the fiber running the `STM` effect
@@ -1372,8 +1371,8 @@ export const orDie: <R, E, A>(self: STM<R, E, A>) => STM<R, never, A> = stm.orDi
1372
1371
  * @category error handling
1373
1372
  */
1374
1373
  export const orDieWith: {
1375
- <E>(f: (error: E) => unknown): <R, A>(self: STM<R, E, A>) => STM<R, never, A>
1376
- <R, A, E>(self: STM<R, E, A>, f: (error: E) => unknown): STM<R, never, A>
1374
+ <E>(f: (error: E) => unknown): <R, A>(self: STM<A, E, R>) => STM<A, never, R>
1375
+ <R, A, E>(self: STM<A, E, R>, f: (error: E) => unknown): STM<A, never, R>
1377
1376
  } = stm.orDieWith
1378
1377
 
1379
1378
  /**
@@ -1384,8 +1383,8 @@ export const orDieWith: {
1384
1383
  * @category error handling
1385
1384
  */
1386
1385
  export const orElse: {
1387
- <R2, E2, A2>(that: LazyArg<STM<R2, E2, A2>>): <R, E, A>(self: STM<R, E, A>) => STM<R2 | R, E2, A2 | A>
1388
- <R, E, A, R2, E2, A2>(self: STM<R, E, A>, that: LazyArg<STM<R2, E2, A2>>): STM<R | R2, E2, A | A2>
1386
+ <R2, E2, A2>(that: LazyArg<STM<A2, E2, R2>>): <A, E, R>(self: STM<A, E, R>) => STM<A2 | A, E2, R2 | R>
1387
+ <R, E, A, R2, E2, A2>(self: STM<A, E, R>, that: LazyArg<STM<A2, E2, R2>>): STM<A | A2, E2, R | R2>
1389
1388
  } = stm.orElse
1390
1389
 
1391
1390
  /**
@@ -1397,8 +1396,8 @@ export const orElse: {
1397
1396
  * @category error handling
1398
1397
  */
1399
1398
  export const orElseEither: {
1400
- <R2, E2, A2>(that: LazyArg<STM<R2, E2, A2>>): <R, E, A>(self: STM<R, E, A>) => STM<R2 | R, E2, Either.Either<A, A2>>
1401
- <R, E, A, R2, E2, A2>(self: STM<R, E, A>, that: LazyArg<STM<R2, E2, A2>>): STM<R | R2, E2, Either.Either<A, A2>>
1399
+ <R2, E2, A2>(that: LazyArg<STM<A2, E2, R2>>): <A, E, R>(self: STM<A, E, R>) => STM<Either.Either<A, A2>, E2, R2 | R>
1400
+ <R, E, A, R2, E2, A2>(self: STM<A, E, R>, that: LazyArg<STM<A2, E2, R2>>): STM<Either.Either<A, A2>, E2, R | R2>
1402
1401
  } = stm.orElseEither
1403
1402
 
1404
1403
  /**
@@ -1409,8 +1408,8 @@ export const orElseEither: {
1409
1408
  * @category error handling
1410
1409
  */
1411
1410
  export const orElseFail: {
1412
- <E2>(error: LazyArg<E2>): <R, E, A>(self: STM<R, E, A>) => STM<R, E2, A>
1413
- <R, E, A, E2>(self: STM<R, E, A>, error: LazyArg<E2>): STM<R, E2, A>
1411
+ <E2>(error: LazyArg<E2>): <A, E, R>(self: STM<A, E, R>) => STM<A, E2, R>
1412
+ <R, E, A, E2>(self: STM<A, E, R>, error: LazyArg<E2>): STM<A, E2, R>
1414
1413
  } = stm.orElseFail
1415
1414
 
1416
1415
  /**
@@ -1423,14 +1422,14 @@ export const orElseFail: {
1423
1422
  */
1424
1423
  export const orElseOptional: {
1425
1424
  <R2, E2, A2>(
1426
- that: LazyArg<STM<R2, Option.Option<E2>, A2>>
1427
- ): <R, E, A>(
1428
- self: STM<R, Option.Option<E>, A>
1429
- ) => STM<R2 | R, Option.Option<E2 | E>, A2 | A>
1425
+ that: LazyArg<STM<A2, Option.Option<E2>, R2>>
1426
+ ): <A, E, R>(
1427
+ self: STM<A, Option.Option<E>, R>
1428
+ ) => STM<A2 | A, Option.Option<E2 | E>, R2 | R>
1430
1429
  <R, E, A, R2, E2, A2>(
1431
- self: STM<R, Option.Option<E>, A>,
1432
- that: LazyArg<STM<R2, Option.Option<E2>, A2>>
1433
- ): STM<R | R2, Option.Option<E | E2>, A | A2>
1430
+ self: STM<A, Option.Option<E>, R>,
1431
+ that: LazyArg<STM<A2, Option.Option<E2>, R2>>
1432
+ ): STM<A | A2, Option.Option<E | E2>, R | R2>
1434
1433
  } = stm.orElseOptional
1435
1434
 
1436
1435
  /**
@@ -1441,8 +1440,8 @@ export const orElseOptional: {
1441
1440
  * @category error handling
1442
1441
  */
1443
1442
  export const orElseSucceed: {
1444
- <A2>(value: LazyArg<A2>): <R, E, A>(self: STM<R, E, A>) => STM<R, never, A2 | A>
1445
- <R, E, A, A2>(self: STM<R, E, A>, value: LazyArg<A2>): STM<R, never, A | A2>
1443
+ <A2>(value: LazyArg<A2>): <A, E, R>(self: STM<A, E, R>) => STM<A2 | A, never, R>
1444
+ <R, E, A, A2>(self: STM<A, E, R>, value: LazyArg<A2>): STM<A | A2, never, R>
1446
1445
  } = stm.orElseSucceed
1447
1446
 
1448
1447
  /**
@@ -1453,8 +1452,8 @@ export const orElseSucceed: {
1453
1452
  * @category error handling
1454
1453
  */
1455
1454
  export const orTry: {
1456
- <R1, E1, A1>(that: LazyArg<STM<R1, E1, A1>>): <R, E, A>(self: STM<R, E, A>) => STM<R1 | R, E1 | E, A1 | A>
1457
- <R, E, A, R1, E1, A1>(self: STM<R, E, A>, that: LazyArg<STM<R1, E1, A1>>): STM<R | R1, E | E1, A | A1>
1455
+ <R1, E1, A1>(that: LazyArg<STM<A1, E1, R1>>): <A, E, R>(self: STM<A, E, R>) => STM<A1 | A, E1 | E, R1 | R>
1456
+ <R, E, A, R1, E1, A1>(self: STM<A, E, R>, that: LazyArg<STM<A1, E1, R1>>): STM<A | A1, E | E1, R | R1>
1458
1457
  } = core.orTry
1459
1458
 
1460
1459
  /**
@@ -1466,12 +1465,12 @@ export const orTry: {
1466
1465
  */
1467
1466
  export const partition: {
1468
1467
  <R, E, A, A2>(
1469
- f: (a: A) => STM<R, E, A2>
1470
- ): (elements: Iterable<A>) => STM<R, never, [excluded: Array<E>, satisfying: Array<A2>]>
1468
+ f: (a: A) => STM<A2, E, R>
1469
+ ): (elements: Iterable<A>) => STM<[excluded: Array<E>, satisfying: Array<A2>], never, R>
1471
1470
  <R, E, A, A2>(
1472
1471
  elements: Iterable<A>,
1473
- f: (a: A) => STM<R, E, A2>
1474
- ): STM<R, never, [excluded: Array<E>, satisfying: Array<A2>]>
1472
+ f: (a: A) => STM<A2, E, R>
1473
+ ): STM<[excluded: Array<E>, satisfying: Array<A2>], never, R>
1475
1474
  } = stm.partition
1476
1475
 
1477
1476
  /**
@@ -1482,8 +1481,8 @@ export const partition: {
1482
1481
  * @category context
1483
1482
  */
1484
1483
  export const provideContext: {
1485
- <R>(env: Context.Context<R>): <E, A>(self: STM<R, E, A>) => STM<never, E, A>
1486
- <E, A, R>(self: STM<R, E, A>, env: Context.Context<R>): STM<never, E, A>
1484
+ <R>(env: Context.Context<R>): <A, E>(self: STM<A, E, R>) => STM<A, E>
1485
+ <A, E, R>(self: STM<A, E, R>, env: Context.Context<R>): STM<A, E>
1487
1486
  } = stm.provideContext
1488
1487
 
1489
1488
  /**
@@ -1494,8 +1493,8 @@ export const provideContext: {
1494
1493
  * @category context
1495
1494
  */
1496
1495
  export const provideSomeContext: {
1497
- <R>(context: Context.Context<R>): <R1, E, A>(self: STM<R1, E, A>) => STM<Exclude<R1, R>, E, A>
1498
- <R, R1, E, A>(self: STM<R1, E, A>, context: Context.Context<R>): STM<Exclude<R1, R>, E, A>
1496
+ <R>(context: Context.Context<R>): <R1, E, A>(self: STM<A, E, R1>) => STM<A, E, Exclude<R1, R>>
1497
+ <R, R1, E, A>(self: STM<A, E, R1>, context: Context.Context<R>): STM<A, E, Exclude<R1, R>>
1499
1498
  } = stm.provideSomeContext
1500
1499
 
1501
1500
  /**
@@ -1509,12 +1508,12 @@ export const provideService: {
1509
1508
  <T extends Context.Tag<any, any>>(
1510
1509
  tag: T,
1511
1510
  resource: Context.Tag.Service<T>
1512
- ): <R, E, A>(self: STM<R, E, A>) => STM<Exclude<R, Context.Tag.Identifier<T>>, E, A>
1511
+ ): <A, E, R>(self: STM<A, E, R>) => STM<A, E, Exclude<R, Context.Tag.Identifier<T>>>
1513
1512
  <R, E, A, T extends Context.Tag<any, any>>(
1514
- self: STM<R, E, A>,
1513
+ self: STM<A, E, R>,
1515
1514
  tag: T,
1516
1515
  resource: Context.Tag.Service<T>
1517
- ): STM<Exclude<R, Context.Tag.Identifier<T>>, E, A>
1516
+ ): STM<A, E, Exclude<R, Context.Tag.Identifier<T>>>
1518
1517
  } = stm.provideService
1519
1518
 
1520
1519
  /**
@@ -1527,13 +1526,13 @@ export const provideService: {
1527
1526
  export const provideServiceSTM: {
1528
1527
  <T extends Context.Tag<any, any>, R1, E1>(
1529
1528
  tag: T,
1530
- stm: STM<R1, E1, Context.Tag.Service<T>>
1531
- ): <R, E, A>(self: STM<R, E, A>) => STM<R1 | Exclude<R, Context.Tag.Identifier<T>>, E1 | E, A>
1529
+ stm: STM<Context.Tag.Service<T>, E1, R1>
1530
+ ): <A, E, R>(self: STM<A, E, R>) => STM<A, E1 | E, R1 | Exclude<R, Context.Tag.Identifier<T>>>
1532
1531
  <R, E, A, T extends Context.Tag<any, any>, R1, E1>(
1533
- self: STM<R, E, A>,
1532
+ self: STM<A, E, R>,
1534
1533
  tag: T,
1535
- stm: STM<R1, E1, Context.Tag.Service<T>>
1536
- ): STM<R1 | Exclude<R, Context.Tag.Identifier<T>>, E | E1, A>
1534
+ stm: STM<Context.Tag.Service<T>, E1, R1>
1535
+ ): STM<A, E | E1, R1 | Exclude<R, Context.Tag.Identifier<T>>>
1537
1536
  } = stm.provideServiceSTM
1538
1537
 
1539
1538
  /**
@@ -1544,8 +1543,8 @@ export const provideServiceSTM: {
1544
1543
  * @category constructors
1545
1544
  */
1546
1545
  export const reduce: {
1547
- <S, A, R, E>(zero: S, f: (s: S, a: A) => STM<R, E, S>): (iterable: Iterable<A>) => STM<R, E, S>
1548
- <S, A, R, E>(iterable: Iterable<A>, zero: S, f: (s: S, a: A) => STM<R, E, S>): STM<R, E, S>
1546
+ <S, A, R, E>(zero: S, f: (s: S, a: A) => STM<S, E, R>): (iterable: Iterable<A>) => STM<S, E, R>
1547
+ <S, A, R, E>(iterable: Iterable<A>, zero: S, f: (s: S, a: A) => STM<S, E, R>): STM<S, E, R>
1549
1548
  } = stm.reduce
1550
1549
 
1551
1550
  /**
@@ -1556,16 +1555,16 @@ export const reduce: {
1556
1555
  */
1557
1556
  export const reduceAll: {
1558
1557
  <R2, E2, A>(
1559
- initial: STM<R2, E2, A>,
1558
+ initial: STM<A, E2, R2>,
1560
1559
  f: (x: A, y: A) => A
1561
1560
  ): <R, E>(
1562
- iterable: Iterable<STM<R, E, A>>
1563
- ) => STM<R2 | R, E2 | E, A>
1561
+ iterable: Iterable<STM<A, E, R>>
1562
+ ) => STM<A, E2 | E, R2 | R>
1564
1563
  <R, E, R2, E2, A>(
1565
- iterable: Iterable<STM<R, E, A>>,
1566
- initial: STM<R2, E2, A>,
1564
+ iterable: Iterable<STM<A, E, R>>,
1565
+ initial: STM<A, E2, R2>,
1567
1566
  f: (x: A, y: A) => A
1568
- ): STM<R | R2, E | E2, A>
1567
+ ): STM<A, E | E2, R | R2>
1569
1568
  } = stm.reduceAll
1570
1569
 
1571
1570
  /**
@@ -1576,8 +1575,8 @@ export const reduceAll: {
1576
1575
  * @category constructors
1577
1576
  */
1578
1577
  export const reduceRight: {
1579
- <S, A, R, E>(zero: S, f: (s: S, a: A) => STM<R, E, S>): (iterable: Iterable<A>) => STM<R, E, S>
1580
- <S, A, R, E>(iterable: Iterable<A>, zero: S, f: (s: S, a: A) => STM<R, E, S>): STM<R, E, S>
1578
+ <S, A, R, E>(zero: S, f: (s: S, a: A) => STM<S, E, R>): (iterable: Iterable<A>) => STM<S, E, R>
1579
+ <S, A, R, E>(iterable: Iterable<A>, zero: S, f: (s: S, a: A) => STM<S, E, R>): STM<S, E, R>
1581
1580
  } = stm.reduceRight
1582
1581
 
1583
1582
  /**
@@ -1587,8 +1586,8 @@ export const reduceRight: {
1587
1586
  * @category mutations
1588
1587
  */
1589
1588
  export const refineOrDie: {
1590
- <E, E2>(pf: (error: E) => Option.Option<E2>): <R, A>(self: STM<R, E, A>) => STM<R, E2, A>
1591
- <R, A, E, E2>(self: STM<R, E, A>, pf: (error: E) => Option.Option<E2>): STM<R, E2, A>
1589
+ <E, E2>(pf: (error: E) => Option.Option<E2>): <R, A>(self: STM<A, E, R>) => STM<A, E2, R>
1590
+ <R, A, E, E2>(self: STM<A, E, R>, pf: (error: E) => Option.Option<E2>): STM<A, E2, R>
1592
1591
  } = stm.refineOrDie
1593
1592
 
1594
1593
  /**
@@ -1599,8 +1598,8 @@ export const refineOrDie: {
1599
1598
  * @category mutations
1600
1599
  */
1601
1600
  export const refineOrDieWith: {
1602
- <E, E2>(pf: (error: E) => Option.Option<E2>, f: (error: E) => unknown): <R, A>(self: STM<R, E, A>) => STM<R, E2, A>
1603
- <R, A, E, E2>(self: STM<R, E, A>, pf: (error: E) => Option.Option<E2>, f: (error: E) => unknown): STM<R, E2, A>
1601
+ <E, E2>(pf: (error: E) => Option.Option<E2>, f: (error: E) => unknown): <R, A>(self: STM<A, E, R>) => STM<A, E2, R>
1602
+ <R, A, E, E2>(self: STM<A, E, R>, pf: (error: E) => Option.Option<E2>, f: (error: E) => unknown): STM<A, E2, R>
1604
1603
  } = stm.refineOrDieWith
1605
1604
 
1606
1605
  /**
@@ -1611,8 +1610,8 @@ export const refineOrDieWith: {
1611
1610
  * @category mutations
1612
1611
  */
1613
1612
  export const reject: {
1614
- <A, E2>(pf: (a: A) => Option.Option<E2>): <R, E>(self: STM<R, E, A>) => STM<R, E2 | E, A>
1615
- <R, E, A, E2>(self: STM<R, E, A>, pf: (a: A) => Option.Option<E2>): STM<R, E | E2, A>
1613
+ <A, E2>(pf: (a: A) => Option.Option<E2>): <R, E>(self: STM<A, E, R>) => STM<A, E2 | E, R>
1614
+ <R, E, A, E2>(self: STM<A, E, R>, pf: (a: A) => Option.Option<E2>): STM<A, E | E2, R>
1616
1615
  } = stm.reject
1617
1616
 
1618
1617
  /**
@@ -1624,8 +1623,8 @@ export const reject: {
1624
1623
  * @category mutations
1625
1624
  */
1626
1625
  export const rejectSTM: {
1627
- <A, R2, E2>(pf: (a: A) => Option.Option<STM<R2, E2, E2>>): <R, E>(self: STM<R, E, A>) => STM<R2 | R, E2 | E, A>
1628
- <R, E, A, R2, E2>(self: STM<R, E, A>, pf: (a: A) => Option.Option<STM<R2, E2, E2>>): STM<R | R2, E | E2, A>
1626
+ <A, R2, E2>(pf: (a: A) => Option.Option<STM<E2, E2, R2>>): <R, E>(self: STM<A, E, R>) => STM<A, E2 | E, R2 | R>
1627
+ <R, E, A, R2, E2>(self: STM<A, E, R>, pf: (a: A) => Option.Option<STM<E2, E2, R2>>): STM<A, E | E2, R | R2>
1629
1628
  } = stm.rejectSTM
1630
1629
 
1631
1630
  /**
@@ -1644,8 +1643,8 @@ export const rejectSTM: {
1644
1643
  * @category mutations
1645
1644
  */
1646
1645
  export const repeatUntil: {
1647
- <A>(predicate: Predicate<A>): <R, E>(self: STM<R, E, A>) => STM<R, E, A>
1648
- <R, E, A>(self: STM<R, E, A>, predicate: Predicate<A>): STM<R, E, A>
1646
+ <A>(predicate: Predicate<A>): <R, E>(self: STM<A, E, R>) => STM<A, E, R>
1647
+ <A, E, R>(self: STM<A, E, R>, predicate: Predicate<A>): STM<A, E, R>
1649
1648
  } = stm.repeatUntil
1650
1649
 
1651
1650
  /**
@@ -1665,8 +1664,8 @@ export const repeatUntil: {
1665
1664
  * @category mutations
1666
1665
  */
1667
1666
  export const repeatWhile: {
1668
- <A>(predicate: Predicate<A>): <R, E>(self: STM<R, E, A>) => STM<R, E, A>
1669
- <R, E, A>(self: STM<R, E, A>, predicate: Predicate<A>): STM<R, E, A>
1667
+ <A>(predicate: Predicate<A>): <R, E>(self: STM<A, E, R>) => STM<A, E, R>
1668
+ <A, E, R>(self: STM<A, E, R>, predicate: Predicate<A>): STM<A, E, R>
1670
1669
  } = stm.repeatWhile
1671
1670
 
1672
1671
  /**
@@ -1677,8 +1676,8 @@ export const repeatWhile: {
1677
1676
  * @category constructors
1678
1677
  */
1679
1678
  export const replicate: {
1680
- (n: number): <R, E, A>(self: STM<R, E, A>) => Array<STM<R, E, A>>
1681
- <R, E, A>(self: STM<R, E, A>, n: number): Array<STM<R, E, A>>
1679
+ (n: number): <A, E, R>(self: STM<A, E, R>) => Array<STM<A, E, R>>
1680
+ <A, E, R>(self: STM<A, E, R>, n: number): Array<STM<A, E, R>>
1682
1681
  } = stm.replicate
1683
1682
 
1684
1683
  /**
@@ -1689,8 +1688,8 @@ export const replicate: {
1689
1688
  * @category constructors
1690
1689
  */
1691
1690
  export const replicateSTM: {
1692
- (n: number): <R, E, A>(self: STM<R, E, A>) => STM<R, E, Array<A>>
1693
- <R, E, A>(self: STM<R, E, A>, n: number): STM<R, E, Array<A>>
1691
+ (n: number): <A, E, R>(self: STM<A, E, R>) => STM<Array<A>, E, R>
1692
+ <A, E, R>(self: STM<A, E, R>, n: number): STM<Array<A>, E, R>
1694
1693
  } = stm.replicateSTM
1695
1694
 
1696
1695
  /**
@@ -1701,8 +1700,8 @@ export const replicateSTM: {
1701
1700
  * @category constructors
1702
1701
  */
1703
1702
  export const replicateSTMDiscard: {
1704
- (n: number): <R, E, A>(self: STM<R, E, A>) => STM<R, E, void>
1705
- <R, E, A>(self: STM<R, E, A>, n: number): STM<R, E, void>
1703
+ (n: number): <A, E, R>(self: STM<A, E, R>) => STM<void, E, R>
1704
+ <A, E, R>(self: STM<A, E, R>, n: number): STM<void, E, R>
1706
1705
  } = stm.replicateSTMDiscard
1707
1706
 
1708
1707
  /**
@@ -1712,7 +1711,7 @@ export const replicateSTMDiscard: {
1712
1711
  * @since 2.0.0
1713
1712
  * @category error handling
1714
1713
  */
1715
- export const retry: STM<never, never, never> = core.retry
1714
+ export const retry: STM<never> = core.retry
1716
1715
 
1717
1716
  /**
1718
1717
  * Filters the value produced by this effect, retrying the transaction until
@@ -1722,10 +1721,10 @@ export const retry: STM<never, never, never> = core.retry
1722
1721
  * @category mutations
1723
1722
  */
1724
1723
  export const retryUntil: {
1725
- <A, B extends A>(refinement: Refinement<NoInfer<A>, B>): <R, E>(self: STM<R, E, A>) => STM<R, E, B>
1726
- <A>(predicate: Predicate<A>): <R, E>(self: STM<R, E, A>) => STM<R, E, A>
1727
- <R, E, A, B extends A>(self: STM<R, E, A>, refinement: Refinement<A, B>): STM<R, E, B>
1728
- <R, E, A>(self: STM<R, E, A>, predicate: Predicate<A>): STM<R, E, A>
1724
+ <A, B extends A>(refinement: Refinement<NoInfer<A>, B>): <R, E>(self: STM<A, E, R>) => STM<B, E, R>
1725
+ <A>(predicate: Predicate<A>): <R, E>(self: STM<A, E, R>) => STM<A, E, R>
1726
+ <R, E, A, B extends A>(self: STM<A, E, R>, refinement: Refinement<A, B>): STM<B, E, R>
1727
+ <A, E, R>(self: STM<A, E, R>, predicate: Predicate<A>): STM<A, E, R>
1729
1728
  } = stm.retryUntil
1730
1729
 
1731
1730
  /**
@@ -1736,8 +1735,8 @@ export const retryUntil: {
1736
1735
  * @category mutations
1737
1736
  */
1738
1737
  export const retryWhile: {
1739
- <A>(predicate: Predicate<A>): <R, E>(self: STM<R, E, A>) => STM<R, E, A>
1740
- <R, E, A>(self: STM<R, E, A>, predicate: Predicate<A>): STM<R, E, A>
1738
+ <A>(predicate: Predicate<A>): <R, E>(self: STM<A, E, R>) => STM<A, E, R>
1739
+ <A, E, R>(self: STM<A, E, R>, predicate: Predicate<A>): STM<A, E, R>
1741
1740
  } = stm.retryWhile
1742
1741
 
1743
1742
  /**
@@ -1746,7 +1745,7 @@ export const retryWhile: {
1746
1745
  * @since 2.0.0
1747
1746
  * @category getters
1748
1747
  */
1749
- export const some: <R, E, A>(self: STM<R, E, Option.Option<A>>) => STM<R, Option.Option<E>, A> = stm.some
1748
+ export const some: <A, E, R>(self: STM<Option.Option<A>, E, R>) => STM<A, Option.Option<E>, R> = stm.some
1750
1749
 
1751
1750
  /**
1752
1751
  * Returns an `STM` effect that succeeds with the specified value.
@@ -1754,7 +1753,7 @@ export const some: <R, E, A>(self: STM<R, E, Option.Option<A>>) => STM<R, Option
1754
1753
  * @since 2.0.0
1755
1754
  * @category constructors
1756
1755
  */
1757
- export const succeed: <A>(value: A) => STM<never, never, A> = core.succeed
1756
+ export const succeed: <A>(value: A) => STM<A> = core.succeed
1758
1757
 
1759
1758
  /**
1760
1759
  * Returns an effect with the empty value.
@@ -1762,7 +1761,7 @@ export const succeed: <A>(value: A) => STM<never, never, A> = core.succeed
1762
1761
  * @since 2.0.0
1763
1762
  * @category constructors
1764
1763
  */
1765
- export const succeedNone: STM<never, never, Option.Option<never>> = stm.succeedNone
1764
+ export const succeedNone: STM<Option.Option<never>> = stm.succeedNone
1766
1765
 
1767
1766
  /**
1768
1767
  * Returns an effect with the optional value.
@@ -1770,7 +1769,7 @@ export const succeedNone: STM<never, never, Option.Option<never>> = stm.succeedN
1770
1769
  * @since 2.0.0
1771
1770
  * @category constructors
1772
1771
  */
1773
- export const succeedSome: <A>(value: A) => STM<never, never, Option.Option<A>> = stm.succeedSome
1772
+ export const succeedSome: <A>(value: A) => STM<Option.Option<A>> = stm.succeedSome
1774
1773
 
1775
1774
  /**
1776
1775
  * Summarizes a `STM` effect by computing a provided value before and after
@@ -1782,16 +1781,16 @@ export const succeedSome: <A>(value: A) => STM<never, never, Option.Option<A>> =
1782
1781
  */
1783
1782
  export const summarized: {
1784
1783
  <R2, E2, A2, A3>(
1785
- summary: STM<R2, E2, A2>,
1784
+ summary: STM<A2, E2, R2>,
1786
1785
  f: (before: A2, after: A2) => A3
1787
- ): <R, E, A>(
1788
- self: STM<R, E, A>
1789
- ) => STM<R2 | R, E2 | E, [A3, A]>
1786
+ ): <A, E, R>(
1787
+ self: STM<A, E, R>
1788
+ ) => STM<[A3, A], E2 | E, R2 | R>
1790
1789
  <R, E, A, R2, E2, A2, A3>(
1791
- self: STM<R, E, A>,
1792
- summary: STM<R2, E2, A2>,
1790
+ self: STM<A, E, R>,
1791
+ summary: STM<A2, E2, R2>,
1793
1792
  f: (before: A2, after: A2) => A3
1794
- ): STM<R | R2, E | E2, [A3, A]>
1793
+ ): STM<[A3, A], E | E2, R | R2>
1795
1794
  } = stm.summarized
1796
1795
 
1797
1796
  /**
@@ -1800,7 +1799,7 @@ export const summarized: {
1800
1799
  * @since 2.0.0
1801
1800
  * @category constructors
1802
1801
  */
1803
- export const suspend: <R, E, A>(evaluate: LazyArg<STM<R, E, A>>) => STM<R, E, A> = stm.suspend
1802
+ export const suspend: <A, E, R>(evaluate: LazyArg<STM<A, E, R>>) => STM<A, E, R> = stm.suspend
1804
1803
 
1805
1804
  /**
1806
1805
  * Returns an `STM` effect that succeeds with the specified lazily evaluated
@@ -1809,7 +1808,7 @@ export const suspend: <R, E, A>(evaluate: LazyArg<STM<R, E, A>>) => STM<R, E, A>
1809
1808
  * @since 2.0.0
1810
1809
  * @category constructors
1811
1810
  */
1812
- export const sync: <A>(evaluate: () => A) => STM<never, never, A> = core.sync
1811
+ export const sync: <A>(evaluate: () => A) => STM<A> = core.sync
1813
1812
 
1814
1813
  /**
1815
1814
  * "Peeks" at the success of transactional effect.
@@ -1818,8 +1817,8 @@ export const sync: <A>(evaluate: () => A) => STM<never, never, A> = core.sync
1818
1817
  * @category sequencing
1819
1818
  */
1820
1819
  export const tap: {
1821
- <A, R2, E2, _>(f: (a: A) => STM<R2, E2, _>): <R, E>(self: STM<R, E, A>) => STM<R2 | R, E2 | E, A>
1822
- <R, E, A, R2, E2, _>(self: STM<R, E, A>, f: (a: A) => STM<R2, E2, _>): STM<R | R2, E | E2, A>
1820
+ <A, R2, E2, _>(f: (a: A) => STM<_, E2, R2>): <R, E>(self: STM<A, E, R>) => STM<A, E2 | E, R2 | R>
1821
+ <R, E, A, R2, E2, _>(self: STM<A, E, R>, f: (a: A) => STM<_, E2, R2>): STM<A, E | E2, R | R2>
1823
1822
  } = stm.tap
1824
1823
 
1825
1824
  /**
@@ -1831,17 +1830,17 @@ export const tap: {
1831
1830
  export const tapBoth: {
1832
1831
  <E, XE extends E, R2, E2, A2, A, XA extends A, R3, E3, A3>(
1833
1832
  options: {
1834
- readonly onFailure: (error: XE) => STM<R2, E2, A2>
1835
- readonly onSuccess: (value: XA) => STM<R3, E3, A3>
1833
+ readonly onFailure: (error: XE) => STM<A2, E2, R2>
1834
+ readonly onSuccess: (value: XA) => STM<A3, E3, R3>
1836
1835
  }
1837
- ): <R>(self: STM<R, E, A>) => STM<R2 | R3 | R, E | E2 | E3, A>
1836
+ ): <R>(self: STM<A, E, R>) => STM<A, E | E2 | E3, R2 | R3 | R>
1838
1837
  <R, E, XE extends E, R2, E2, A2, A, XA extends A, R3, E3, A3>(
1839
- self: STM<R, E, A>,
1838
+ self: STM<A, E, R>,
1840
1839
  options: {
1841
- readonly onFailure: (error: XE) => STM<R2, E2, A2>
1842
- readonly onSuccess: (value: XA) => STM<R3, E3, A3>
1840
+ readonly onFailure: (error: XE) => STM<A2, E2, R2>
1841
+ readonly onSuccess: (value: XA) => STM<A3, E3, R3>
1843
1842
  }
1844
- ): STM<R | R2 | R3, E | E2 | E3, A>
1843
+ ): STM<A, E | E2 | E3, R | R2 | R3>
1845
1844
  } = stm.tapBoth
1846
1845
 
1847
1846
  /**
@@ -1851,16 +1850,16 @@ export const tapBoth: {
1851
1850
  * @category sequencing
1852
1851
  */
1853
1852
  export const tapError: {
1854
- <E, R2, E2, _>(f: (error: NoInfer<E>) => STM<R2, E2, _>): <R, A>(self: STM<R, E, A>) => STM<R2 | R, E | E2, A>
1855
- <R, A, E, R2, E2, _>(self: STM<R, E, A>, f: (error: E) => STM<R2, E2, _>): STM<R | R2, E | E2, A>
1853
+ <E, R2, E2, _>(f: (error: NoInfer<E>) => STM<_, E2, R2>): <R, A>(self: STM<A, E, R>) => STM<A, E | E2, R2 | R>
1854
+ <R, A, E, R2, E2, _>(self: STM<A, E, R>, f: (error: E) => STM<_, E2, R2>): STM<A, E | E2, R | R2>
1856
1855
  } = stm.tapError
1857
1856
 
1858
1857
  const try_: {
1859
1858
  <A, E>(options: {
1860
1859
  readonly try: LazyArg<A>
1861
1860
  readonly catch: (u: unknown) => E
1862
- }): STM<never, E, A>
1863
- <A>(try_: LazyArg<A>): STM<never, unknown, A>
1861
+ }): STM<A, E>
1862
+ <A>(try_: LazyArg<A>): STM<A, unknown>
1864
1863
  } = stm.try_
1865
1864
  export {
1866
1865
  /**
@@ -1880,8 +1879,8 @@ export {
1880
1879
  * @category mutations
1881
1880
  */
1882
1881
  export const unless: {
1883
- (predicate: LazyArg<boolean>): <R, E, A>(self: STM<R, E, A>) => STM<R, E, Option.Option<A>>
1884
- <R, E, A>(self: STM<R, E, A>, predicate: LazyArg<boolean>): STM<R, E, Option.Option<A>>
1882
+ (predicate: LazyArg<boolean>): <A, E, R>(self: STM<A, E, R>) => STM<Option.Option<A>, E, R>
1883
+ <A, E, R>(self: STM<A, E, R>, predicate: LazyArg<boolean>): STM<Option.Option<A>, E, R>
1885
1884
  } = stm.unless
1886
1885
 
1887
1886
  /**
@@ -1891,8 +1890,8 @@ export const unless: {
1891
1890
  * @category mutations
1892
1891
  */
1893
1892
  export const unlessSTM: {
1894
- <R2, E2>(predicate: STM<R2, E2, boolean>): <R, E, A>(self: STM<R, E, A>) => STM<R2 | R, E2 | E, Option.Option<A>>
1895
- <R, E, A, R2, E2>(self: STM<R, E, A>, predicate: STM<R2, E2, boolean>): STM<R | R2, E | E2, Option.Option<A>>
1893
+ <R2, E2>(predicate: STM<boolean, E2, R2>): <A, E, R>(self: STM<A, E, R>) => STM<Option.Option<A>, E2 | E, R2 | R>
1894
+ <R, E, A, R2, E2>(self: STM<A, E, R>, predicate: STM<boolean, E2, R2>): STM<Option.Option<A>, E | E2, R | R2>
1896
1895
  } = stm.unlessSTM
1897
1896
 
1898
1897
  /**
@@ -1901,7 +1900,7 @@ export const unlessSTM: {
1901
1900
  * @since 2.0.0
1902
1901
  * @category getters
1903
1902
  */
1904
- export const unsome: <R, E, A>(self: STM<R, Option.Option<E>, A>) => STM<R, E, Option.Option<A>> = stm.unsome
1903
+ export const unsome: <A, E, R>(self: STM<A, Option.Option<E>, R>) => STM<Option.Option<A>, E, R> = stm.unsome
1905
1904
 
1906
1905
  /**
1907
1906
  * Returns an `STM` effect that succeeds with `Unit`.
@@ -1909,7 +1908,7 @@ export const unsome: <R, E, A>(self: STM<R, Option.Option<E>, A>) => STM<R, E, O
1909
1908
  * @since 2.0.0
1910
1909
  * @category constructors
1911
1910
  */
1912
- export const unit: STM<never, never, void> = stm.unit
1911
+ export const unit: STM<void> = stm.unit
1913
1912
 
1914
1913
  /**
1915
1914
  * Feeds elements of type `A` to `f` and accumulates all errors in error
@@ -1922,8 +1921,8 @@ export const unit: STM<never, never, void> = stm.unit
1922
1921
  * @category mutations
1923
1922
  */
1924
1923
  export const validateAll: {
1925
- <R, E, A, B>(f: (a: A) => STM<R, E, B>): (elements: Iterable<A>) => STM<R, [E, ...Array<E>], Array<B>>
1926
- <R, E, A, B>(elements: Iterable<A>, f: (a: A) => STM<R, E, B>): STM<R, [E, ...Array<E>], Array<B>>
1924
+ <R, E, A, B>(f: (a: A) => STM<B, E, R>): (elements: Iterable<A>) => STM<Array<B>, [E, ...Array<E>], R>
1925
+ <R, E, A, B>(elements: Iterable<A>, f: (a: A) => STM<B, E, R>): STM<Array<B>, [E, ...Array<E>], R>
1927
1926
  } = stm.validateAll
1928
1927
 
1929
1928
  /**
@@ -1934,8 +1933,8 @@ export const validateAll: {
1934
1933
  * @category mutations
1935
1934
  */
1936
1935
  export const validateFirst: {
1937
- <R, E, A, B>(f: (a: A) => STM<R, E, B>): (elements: Iterable<A>) => STM<R, Array<E>, B>
1938
- <R, E, A, B>(elements: Iterable<A>, f: (a: A) => STM<R, E, B>): STM<R, Array<E>, B>
1936
+ <R, E, A, B>(f: (a: A) => STM<B, E, R>): (elements: Iterable<A>) => STM<B, Array<E>, R>
1937
+ <R, E, A, B>(elements: Iterable<A>, f: (a: A) => STM<B, E, R>): STM<B, Array<E>, R>
1939
1938
  } = stm.validateFirst
1940
1939
 
1941
1940
  /**
@@ -1945,8 +1944,8 @@ export const validateFirst: {
1945
1944
  * @category mutations
1946
1945
  */
1947
1946
  export const when: {
1948
- (predicate: LazyArg<boolean>): <R, E, A>(self: STM<R, E, A>) => STM<R, E, Option.Option<A>>
1949
- <R, E, A>(self: STM<R, E, A>, predicate: LazyArg<boolean>): STM<R, E, Option.Option<A>>
1947
+ (predicate: LazyArg<boolean>): <A, E, R>(self: STM<A, E, R>) => STM<Option.Option<A>, E, R>
1948
+ <A, E, R>(self: STM<A, E, R>, predicate: LazyArg<boolean>): STM<Option.Option<A>, E, R>
1950
1949
  } = stm.when
1951
1950
 
1952
1951
  /**
@@ -1956,8 +1955,8 @@ export const when: {
1956
1955
  * @category mutations
1957
1956
  */
1958
1957
  export const whenSTM: {
1959
- <R2, E2>(predicate: STM<R2, E2, boolean>): <R, E, A>(self: STM<R, E, A>) => STM<R2 | R, E2 | E, Option.Option<A>>
1960
- <R, E, A, R2, E2>(self: STM<R, E, A>, predicate: STM<R2, E2, boolean>): STM<R | R2, E | E2, Option.Option<A>>
1958
+ <R2, E2>(predicate: STM<boolean, E2, R2>): <A, E, R>(self: STM<A, E, R>) => STM<Option.Option<A>, E2 | E, R2 | R>
1959
+ <R, E, A, R2, E2>(self: STM<A, E, R>, predicate: STM<boolean, E2, R2>): STM<Option.Option<A>, E | E2, R | R2>
1961
1960
  } = stm.whenSTM
1962
1961
 
1963
1962
  /**
@@ -1967,8 +1966,8 @@ export const whenSTM: {
1967
1966
  * @category zipping
1968
1967
  */
1969
1968
  export const zip: {
1970
- <R1, E1, A1>(that: STM<R1, E1, A1>): <R, E, A>(self: STM<R, E, A>) => STM<R1 | R, E1 | E, [A, A1]>
1971
- <R, E, A, R1, E1, A1>(self: STM<R, E, A>, that: STM<R1, E1, A1>): STM<R | R1, E | E1, [A, A1]>
1969
+ <R1, E1, A1>(that: STM<A1, E1, R1>): <A, E, R>(self: STM<A, E, R>) => STM<[A, A1], E1 | E, R1 | R>
1970
+ <R, E, A, R1, E1, A1>(self: STM<A, E, R>, that: STM<A1, E1, R1>): STM<[A, A1], E | E1, R | R1>
1972
1971
  } = core.zip
1973
1972
 
1974
1973
  /**
@@ -1979,8 +1978,8 @@ export const zip: {
1979
1978
  * @category zipping
1980
1979
  */
1981
1980
  export const zipLeft: {
1982
- <R1, E1, A1>(that: STM<R1, E1, A1>): <R, E, A>(self: STM<R, E, A>) => STM<R1 | R, E1 | E, A>
1983
- <R, E, A, R1, E1, A1>(self: STM<R, E, A>, that: STM<R1, E1, A1>): STM<R | R1, E | E1, A>
1981
+ <R1, E1, A1>(that: STM<A1, E1, R1>): <A, E, R>(self: STM<A, E, R>) => STM<A, E1 | E, R1 | R>
1982
+ <R, E, A, R1, E1, A1>(self: STM<A, E, R>, that: STM<A1, E1, R1>): STM<A, E | E1, R | R1>
1984
1983
  } = core.zipLeft
1985
1984
 
1986
1985
  /**
@@ -1991,8 +1990,8 @@ export const zipLeft: {
1991
1990
  * @category zipping
1992
1991
  */
1993
1992
  export const zipRight: {
1994
- <R1, E1, A1>(that: STM<R1, E1, A1>): <R, E, A>(self: STM<R, E, A>) => STM<R1 | R, E1 | E, A1>
1995
- <R, E, A, R1, E1, A1>(self: STM<R, E, A>, that: STM<R1, E1, A1>): STM<R | R1, E | E1, A1>
1993
+ <R1, E1, A1>(that: STM<A1, E1, R1>): <A, E, R>(self: STM<A, E, R>) => STM<A1, E1 | E, R1 | R>
1994
+ <R, E, A, R1, E1, A1>(self: STM<A, E, R>, that: STM<A1, E1, R1>): STM<A1, E | E1, R | R1>
1996
1995
  } = core.zipRight
1997
1996
 
1998
1997
  /**
@@ -2004,16 +2003,16 @@ export const zipRight: {
2004
2003
  */
2005
2004
  export const zipWith: {
2006
2005
  <R1, E1, A1, A, A2>(
2007
- that: STM<R1, E1, A1>,
2006
+ that: STM<A1, E1, R1>,
2008
2007
  f: (a: A, b: A1) => A2
2009
2008
  ): <R, E>(
2010
- self: STM<R, E, A>
2011
- ) => STM<R1 | R, E1 | E, A2>
2009
+ self: STM<A, E, R>
2010
+ ) => STM<A2, E1 | E, R1 | R>
2012
2011
  <R, E, R1, E1, A1, A, A2>(
2013
- self: STM<R, E, A>,
2014
- that: STM<R1, E1, A1>,
2012
+ self: STM<A, E, R>,
2013
+ that: STM<A1, E1, R1>,
2015
2014
  f: (a: A, b: A1) => A2
2016
- ): STM<R | R1, E | E1, A2>
2015
+ ): STM<A2, E | E1, R | R1>
2017
2016
  } = core.zipWith
2018
2017
 
2019
2018
  /**
@@ -2035,8 +2034,8 @@ export const zipWith: {
2035
2034
  * @since 2.0.0
2036
2035
  * @category elements
2037
2036
  */
2038
- export const firstSuccessOf = <R, E, A>(effects: Iterable<STM<R, E, A>>): STM<R, E, A> =>
2039
- suspend<R, E, A>(() => {
2037
+ export const firstSuccessOf = <A, E, R>(effects: Iterable<STM<A, E, R>>): STM<A, E, R> =>
2038
+ suspend<A, E, R>(() => {
2040
2039
  const list = Chunk.fromIterable(effects)
2041
2040
  if (!Chunk.isNonEmpty(list)) {
2042
2041
  return dieSync(() => new Cause.IllegalArgumentException(`Received an empty collection of effects`))
@@ -2052,7 +2051,7 @@ export const firstSuccessOf = <R, E, A>(effects: Iterable<STM<R, E, A>>): STM<R,
2052
2051
  * @category do notation
2053
2052
  * @since 2.0.0
2054
2053
  */
2055
- export const Do: STM<never, never, {}> = succeed({})
2054
+ export const Do: STM<{}> = succeed({})
2056
2055
 
2057
2056
  /**
2058
2057
  * @category do notation
@@ -2061,25 +2060,25 @@ export const Do: STM<never, never, {}> = succeed({})
2061
2060
  export const bind: {
2062
2061
  <N extends string, K, R2, E2, A>(
2063
2062
  tag: Exclude<N, keyof K>,
2064
- f: (_: K) => STM<R2, E2, A>
2065
- ): <R, E>(self: STM<R, E, K>) => STM<R2 | R, E2 | E, Effect.MergeRecord<K, { [k in N]: A }>>
2063
+ f: (_: K) => STM<A, E2, R2>
2064
+ ): <R, E>(self: STM<K, E, R>) => STM<Effect.MergeRecord<K, { [k in N]: A }>, E2 | E, R2 | R>
2066
2065
  <R, E, N extends string, K, R2, E2, A>(
2067
- self: STM<R, E, K>,
2066
+ self: STM<K, E, R>,
2068
2067
  tag: Exclude<N, keyof K>,
2069
- f: (_: K) => STM<R2, E2, A>
2070
- ): STM<R | R2, E | E2, Effect.MergeRecord<K, { [k in N]: A }>>
2068
+ f: (_: K) => STM<A, E2, R2>
2069
+ ): STM<Effect.MergeRecord<K, { [k in N]: A }>, E | E2, R | R2>
2071
2070
  } = stm.bind
2072
2071
 
2073
2072
  const let_: {
2074
2073
  <N extends string, K, A>(
2075
2074
  tag: Exclude<N, keyof K>,
2076
2075
  f: (_: K) => A
2077
- ): <R, E>(self: STM<R, E, K>) => STM<R, E, Effect.MergeRecord<K, { [k in N]: A }>>
2076
+ ): <R, E>(self: STM<K, E, R>) => STM<Effect.MergeRecord<K, { [k in N]: A }>, E, R>
2078
2077
  <R, E, K, N extends string, A>(
2079
- self: STM<R, E, K>,
2078
+ self: STM<K, E, R>,
2080
2079
  tag: Exclude<N, keyof K>,
2081
2080
  f: (_: K) => A
2082
- ): STM<R, E, Effect.MergeRecord<K, { [k in N]: A }>>
2081
+ ): STM<Effect.MergeRecord<K, { [k in N]: A }>, E, R>
2083
2082
  } = stm.let_
2084
2083
  export {
2085
2084
  /**
@@ -2094,6 +2093,6 @@ export {
2094
2093
  * @since 2.0.0
2095
2094
  */
2096
2095
  export const bindTo: {
2097
- <N extends string>(tag: N): <R, E, A>(self: STM<R, E, A>) => STM<R, E, Record<N, A>>
2098
- <R, E, A, N extends string>(self: STM<R, E, A>, tag: N): STM<R, E, Record<N, A>>
2096
+ <N extends string>(tag: N): <A, E, R>(self: STM<A, E, R>) => STM<Record<N, A>, E, R>
2097
+ <R, E, A, N extends string>(self: STM<A, E, R>, tag: N): STM<Record<N, A>, E, R>
2099
2098
  } = stm.bindTo