effect 2.2.5 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (693) hide show
  1. package/RateLimiter/package.json +6 -0
  2. package/dist/cjs/Cause.js +14 -1
  3. package/dist/cjs/Cause.js.map +1 -1
  4. package/dist/cjs/Channel.js.map +1 -1
  5. package/dist/cjs/Clock.js.map +1 -1
  6. package/dist/cjs/Console.js.map +1 -1
  7. package/dist/cjs/Context.js +23 -25
  8. package/dist/cjs/Context.js.map +1 -1
  9. package/dist/cjs/Data.js +3 -3
  10. package/dist/cjs/Data.js.map +1 -1
  11. package/dist/cjs/Deferred.js +1 -1
  12. package/dist/cjs/Deferred.js.map +1 -1
  13. package/dist/cjs/Effect.js +9 -9
  14. package/dist/cjs/Effect.js.map +1 -1
  15. package/dist/cjs/Effectable.js.map +1 -1
  16. package/dist/cjs/Either.js.map +1 -1
  17. package/dist/cjs/Exit.js +2 -2
  18. package/dist/cjs/Exit.js.map +1 -1
  19. package/dist/cjs/Fiber.js.map +1 -1
  20. package/dist/cjs/FiberMap.js +3 -3
  21. package/dist/cjs/FiberRef.js.map +1 -1
  22. package/dist/cjs/FiberRefs.js.map +1 -1
  23. package/dist/cjs/FiberSet.js +3 -3
  24. package/dist/cjs/FiberSet.js.map +1 -1
  25. package/dist/cjs/GroupBy.js.map +1 -1
  26. package/dist/cjs/Layer.js.map +1 -1
  27. package/dist/cjs/LogLevel.js.map +1 -1
  28. package/dist/cjs/Logger.js.map +1 -1
  29. package/dist/cjs/Metric.js.map +1 -1
  30. package/dist/cjs/Number.js +20 -1
  31. package/dist/cjs/Number.js.map +1 -1
  32. package/dist/cjs/Option.js.map +1 -1
  33. package/dist/cjs/Pool.js.map +1 -1
  34. package/dist/cjs/PubSub.js.map +1 -1
  35. package/dist/cjs/Queue.js.map +1 -1
  36. package/dist/cjs/Random.js.map +1 -1
  37. package/dist/cjs/RateLimiter.js +38 -0
  38. package/dist/cjs/RateLimiter.js.map +1 -0
  39. package/dist/cjs/ReadonlyRecord.js +45 -9
  40. package/dist/cjs/ReadonlyRecord.js.map +1 -1
  41. package/dist/cjs/Ref.js.map +1 -1
  42. package/dist/cjs/Request.js.map +1 -1
  43. package/dist/cjs/RequestResolver.js.map +1 -1
  44. package/dist/cjs/Resource.js.map +1 -1
  45. package/dist/cjs/Runtime.js +1 -4
  46. package/dist/cjs/Runtime.js.map +1 -1
  47. package/dist/cjs/RuntimeFlags.js.map +1 -1
  48. package/dist/cjs/STM.js.map +1 -1
  49. package/dist/cjs/Schedule.js.map +1 -1
  50. package/dist/cjs/Scope.js.map +1 -1
  51. package/dist/cjs/ScopedRef.js.map +1 -1
  52. package/dist/cjs/SingleProducerAsyncInput.js.map +1 -1
  53. package/dist/cjs/Sink.js.map +1 -1
  54. package/dist/cjs/Stream.js.map +1 -1
  55. package/dist/cjs/SubscriptionRef.js.map +1 -1
  56. package/dist/cjs/Supervisor.js.map +1 -1
  57. package/dist/cjs/SynchronizedRef.js.map +1 -1
  58. package/dist/cjs/TArray.js.map +1 -1
  59. package/dist/cjs/TDeferred.js.map +1 -1
  60. package/dist/cjs/TMap.js.map +1 -1
  61. package/dist/cjs/TPriorityQueue.js.map +1 -1
  62. package/dist/cjs/TPubSub.js.map +1 -1
  63. package/dist/cjs/TQueue.js.map +1 -1
  64. package/dist/cjs/TRandom.js.map +1 -1
  65. package/dist/cjs/TReentrantLock.js.map +1 -1
  66. package/dist/cjs/TRef.js.map +1 -1
  67. package/dist/cjs/TSemaphore.js.map +1 -1
  68. package/dist/cjs/TSet.js.map +1 -1
  69. package/dist/cjs/Take.js +6 -6
  70. package/dist/cjs/Take.js.map +1 -1
  71. package/dist/cjs/TestAnnotation.js +10 -13
  72. package/dist/cjs/TestAnnotation.js.map +1 -1
  73. package/dist/cjs/TestAnnotations.js +1 -1
  74. package/dist/cjs/TestAnnotations.js.map +1 -1
  75. package/dist/cjs/TestClock.js +1 -1
  76. package/dist/cjs/TestClock.js.map +1 -1
  77. package/dist/cjs/TestConfig.js +1 -1
  78. package/dist/cjs/TestConfig.js.map +1 -1
  79. package/dist/cjs/TestContext.js.map +1 -1
  80. package/dist/cjs/TestLive.js +1 -1
  81. package/dist/cjs/TestLive.js.map +1 -1
  82. package/dist/cjs/TestServices.js.map +1 -1
  83. package/dist/cjs/TestSized.js +1 -1
  84. package/dist/cjs/TestSized.js.map +1 -1
  85. package/dist/cjs/Utils.js +0 -1
  86. package/dist/cjs/Utils.js.map +1 -1
  87. package/dist/cjs/index.js +4 -2
  88. package/dist/cjs/index.js.map +1 -1
  89. package/dist/cjs/internal/cache.js.map +1 -1
  90. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  91. package/dist/cjs/internal/channel/mergeDecision.js +2 -6
  92. package/dist/cjs/internal/channel/mergeDecision.js.map +1 -1
  93. package/dist/cjs/internal/channel/singleProducerAsyncInput.js.map +1 -1
  94. package/dist/cjs/internal/channel.js +1 -1
  95. package/dist/cjs/internal/channel.js.map +1 -1
  96. package/dist/cjs/internal/clock.js +1 -1
  97. package/dist/cjs/internal/clock.js.map +1 -1
  98. package/dist/cjs/internal/configProvider.js +2 -4
  99. package/dist/cjs/internal/configProvider.js.map +1 -1
  100. package/dist/cjs/internal/console.js.map +1 -1
  101. package/dist/cjs/internal/context.js +31 -22
  102. package/dist/cjs/internal/context.js.map +1 -1
  103. package/dist/cjs/internal/core-effect.js +13 -27
  104. package/dist/cjs/internal/core-effect.js.map +1 -1
  105. package/dist/cjs/internal/core-stream.js.map +1 -1
  106. package/dist/cjs/internal/core.js +61 -130
  107. package/dist/cjs/internal/core.js.map +1 -1
  108. package/dist/cjs/internal/data.js.map +1 -1
  109. package/dist/cjs/internal/defaultServices/console.js +1 -1
  110. package/dist/cjs/internal/defaultServices/console.js.map +1 -1
  111. package/dist/cjs/internal/defaultServices.js.map +1 -1
  112. package/dist/cjs/internal/deferred.js.map +1 -1
  113. package/dist/cjs/internal/differ/contextPatch.js +9 -9
  114. package/dist/cjs/internal/differ/contextPatch.js.map +1 -1
  115. package/dist/cjs/internal/effect/circular.js +7 -10
  116. package/dist/cjs/internal/effect/circular.js.map +1 -1
  117. package/dist/cjs/internal/effectable.js +4 -4
  118. package/dist/cjs/internal/effectable.js.map +1 -1
  119. package/dist/cjs/internal/fiber.js +2 -6
  120. package/dist/cjs/internal/fiber.js.map +1 -1
  121. package/dist/cjs/internal/fiberRuntime.js +10 -19
  122. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  123. package/dist/cjs/internal/groupBy.js.map +1 -1
  124. package/dist/cjs/internal/keyedPool.js.map +1 -1
  125. package/dist/cjs/internal/layer/circular.js.map +1 -1
  126. package/dist/cjs/internal/layer.js +3 -3
  127. package/dist/cjs/internal/layer.js.map +1 -1
  128. package/dist/cjs/internal/logSpan.js +3 -5
  129. package/dist/cjs/internal/logSpan.js.map +1 -1
  130. package/dist/cjs/internal/metric.js.map +1 -1
  131. package/dist/cjs/internal/pool.js.map +1 -1
  132. package/dist/cjs/internal/pubsub.js +2 -6
  133. package/dist/cjs/internal/pubsub.js.map +1 -1
  134. package/dist/cjs/internal/query.js.map +1 -1
  135. package/dist/cjs/internal/queue.js.map +1 -1
  136. package/dist/cjs/internal/random.js +1 -1
  137. package/dist/cjs/internal/random.js.map +1 -1
  138. package/dist/cjs/internal/rateLimiter.js +44 -0
  139. package/dist/cjs/internal/rateLimiter.js.map +1 -0
  140. package/dist/cjs/internal/ref.js.map +1 -1
  141. package/dist/cjs/internal/reloadable.js +1 -9
  142. package/dist/cjs/internal/reloadable.js.map +1 -1
  143. package/dist/cjs/internal/runtime.js +0 -1
  144. package/dist/cjs/internal/runtime.js.map +1 -1
  145. package/dist/cjs/internal/schedule.js.map +1 -1
  146. package/dist/cjs/internal/scopedCache.js.map +1 -1
  147. package/dist/cjs/internal/scopedRef.js.map +1 -1
  148. package/dist/cjs/internal/sink.js +7 -7
  149. package/dist/cjs/internal/sink.js.map +1 -1
  150. package/dist/cjs/internal/stm/core.js.map +1 -1
  151. package/dist/cjs/internal/stm/stm/stmState.js.map +1 -1
  152. package/dist/cjs/internal/stm/stm/tExit.js +2 -2
  153. package/dist/cjs/internal/stm/stm/tExit.js.map +1 -1
  154. package/dist/cjs/internal/stm/stm/tryCommit.js.map +1 -1
  155. package/dist/cjs/internal/stm/stm.js.map +1 -1
  156. package/dist/cjs/internal/stm/tArray.js.map +1 -1
  157. package/dist/cjs/internal/stm/tDeferred.js +4 -2
  158. package/dist/cjs/internal/stm/tDeferred.js.map +1 -1
  159. package/dist/cjs/internal/stm/tMap.js.map +1 -1
  160. package/dist/cjs/internal/stm/tPriorityQueue.js.map +1 -1
  161. package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
  162. package/dist/cjs/internal/stm/tQueue.js.map +1 -1
  163. package/dist/cjs/internal/stm/tRandom.js +1 -1
  164. package/dist/cjs/internal/stm/tRandom.js.map +1 -1
  165. package/dist/cjs/internal/stm/tReentrantLock.js.map +1 -1
  166. package/dist/cjs/internal/stm/tRef.js.map +1 -1
  167. package/dist/cjs/internal/stm/tSemaphore.js.map +1 -1
  168. package/dist/cjs/internal/stm/tSet.js.map +1 -1
  169. package/dist/cjs/internal/stream/debounceState.js.map +1 -1
  170. package/dist/cjs/internal/stream/handoff.js.map +1 -1
  171. package/dist/cjs/internal/stream/handoffSignal.js.map +1 -1
  172. package/dist/cjs/internal/stream/pull.js.map +1 -1
  173. package/dist/cjs/internal/stream.js +0 -2
  174. package/dist/cjs/internal/stream.js.map +1 -1
  175. package/dist/cjs/internal/subscriptionRef.js.map +1 -1
  176. package/dist/cjs/internal/supervisor.js.map +1 -1
  177. package/dist/cjs/internal/take.js +2 -2
  178. package/dist/cjs/internal/take.js.map +1 -1
  179. package/dist/cjs/internal/testing/sleep.js.map +1 -1
  180. package/dist/cjs/internal/tracer.js +2 -2
  181. package/dist/cjs/internal/tracer.js.map +1 -1
  182. package/dist/cjs/internal/version.js +1 -1
  183. package/dist/dts/Cache.d.ts +20 -20
  184. package/dist/dts/Cache.d.ts.map +1 -1
  185. package/dist/dts/Cause.d.ts +33 -5
  186. package/dist/dts/Cause.d.ts.map +1 -1
  187. package/dist/dts/Channel.d.ts +197 -194
  188. package/dist/dts/Channel.d.ts.map +1 -1
  189. package/dist/dts/Clock.d.ts +7 -7
  190. package/dist/dts/Clock.d.ts.map +1 -1
  191. package/dist/dts/Config.d.ts +1 -1
  192. package/dist/dts/Config.d.ts.map +1 -1
  193. package/dist/dts/ConfigProvider.d.ts +6 -6
  194. package/dist/dts/ConfigProvider.d.ts.map +1 -1
  195. package/dist/dts/Console.d.ts +43 -43
  196. package/dist/dts/Console.d.ts.map +1 -1
  197. package/dist/dts/Context.d.ts +44 -29
  198. package/dist/dts/Context.d.ts.map +1 -1
  199. package/dist/dts/Data.d.ts +38 -57
  200. package/dist/dts/Data.d.ts.map +1 -1
  201. package/dist/dts/Deferred.d.ts +36 -36
  202. package/dist/dts/Deferred.d.ts.map +1 -1
  203. package/dist/dts/Effect.d.ts +732 -729
  204. package/dist/dts/Effect.d.ts.map +1 -1
  205. package/dist/dts/Effectable.d.ts +8 -8
  206. package/dist/dts/Effectable.d.ts.map +1 -1
  207. package/dist/dts/Either.d.ts +2 -3
  208. package/dist/dts/Either.d.ts.map +1 -1
  209. package/dist/dts/Exit.d.ts +74 -74
  210. package/dist/dts/Exit.d.ts.map +1 -1
  211. package/dist/dts/Fiber.d.ts +75 -75
  212. package/dist/dts/Fiber.d.ts.map +1 -1
  213. package/dist/dts/FiberMap.d.ts +22 -22
  214. package/dist/dts/FiberMap.d.ts.map +1 -1
  215. package/dist/dts/FiberRef.d.ts +28 -28
  216. package/dist/dts/FiberRef.d.ts.map +1 -1
  217. package/dist/dts/FiberRefs.d.ts +1 -1
  218. package/dist/dts/FiberRefs.d.ts.map +1 -1
  219. package/dist/dts/FiberSet.d.ts +16 -16
  220. package/dist/dts/FiberSet.d.ts.map +1 -1
  221. package/dist/dts/GroupBy.d.ts +6 -6
  222. package/dist/dts/GroupBy.d.ts.map +1 -1
  223. package/dist/dts/KeyedPool.d.ts +22 -22
  224. package/dist/dts/KeyedPool.d.ts.map +1 -1
  225. package/dist/dts/Layer.d.ts +126 -126
  226. package/dist/dts/Layer.d.ts.map +1 -1
  227. package/dist/dts/LogLevel.d.ts +2 -2
  228. package/dist/dts/LogLevel.d.ts.map +1 -1
  229. package/dist/dts/Logger.d.ts +14 -14
  230. package/dist/dts/Logger.d.ts.map +1 -1
  231. package/dist/dts/MergeDecision.d.ts +7 -7
  232. package/dist/dts/MergeState.d.ts +13 -13
  233. package/dist/dts/MergeState.d.ts.map +1 -1
  234. package/dist/dts/Metric.d.ts +32 -32
  235. package/dist/dts/Metric.d.ts.map +1 -1
  236. package/dist/dts/MetricPolling.d.ts +6 -6
  237. package/dist/dts/MetricPolling.d.ts.map +1 -1
  238. package/dist/dts/Number.d.ts +15 -0
  239. package/dist/dts/Number.d.ts.map +1 -1
  240. package/dist/dts/Option.d.ts +2 -3
  241. package/dist/dts/Option.d.ts.map +1 -1
  242. package/dist/dts/Pool.d.ts +15 -16
  243. package/dist/dts/Pool.d.ts.map +1 -1
  244. package/dist/dts/PubSub.d.ts +18 -18
  245. package/dist/dts/PubSub.d.ts.map +1 -1
  246. package/dist/dts/Queue.d.ts +40 -40
  247. package/dist/dts/Queue.d.ts.map +1 -1
  248. package/dist/dts/Random.d.ts +13 -13
  249. package/dist/dts/Random.d.ts.map +1 -1
  250. package/dist/dts/RateLimiter.d.ts +31 -0
  251. package/dist/dts/RateLimiter.d.ts.map +1 -0
  252. package/dist/dts/ReadonlyArray.d.ts +3 -3
  253. package/dist/dts/ReadonlyRecord.d.ts +37 -8
  254. package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
  255. package/dist/dts/Ref.d.ts +25 -25
  256. package/dist/dts/Ref.d.ts.map +1 -1
  257. package/dist/dts/Reloadable.d.ts +9 -9
  258. package/dist/dts/Reloadable.d.ts.map +1 -1
  259. package/dist/dts/Request.d.ts +27 -28
  260. package/dist/dts/Request.d.ts.map +1 -1
  261. package/dist/dts/RequestBlock.d.ts +3 -3
  262. package/dist/dts/RequestBlock.d.ts.map +1 -1
  263. package/dist/dts/RequestResolver.d.ts +16 -16
  264. package/dist/dts/RequestResolver.d.ts.map +1 -1
  265. package/dist/dts/Resource.d.ts +7 -7
  266. package/dist/dts/Resource.d.ts.map +1 -1
  267. package/dist/dts/Runtime.d.ts +13 -16
  268. package/dist/dts/Runtime.d.ts.map +1 -1
  269. package/dist/dts/RuntimeFlags.d.ts +10 -10
  270. package/dist/dts/RuntimeFlags.d.ts.map +1 -1
  271. package/dist/dts/STM.d.ts +303 -303
  272. package/dist/dts/STM.d.ts.map +1 -1
  273. package/dist/dts/Schedule.d.ts +19 -19
  274. package/dist/dts/Schedule.d.ts.map +1 -1
  275. package/dist/dts/Scope.d.ts +10 -10
  276. package/dist/dts/Scope.d.ts.map +1 -1
  277. package/dist/dts/ScopedCache.d.ts +14 -14
  278. package/dist/dts/ScopedCache.d.ts.map +1 -1
  279. package/dist/dts/ScopedRef.d.ts +5 -5
  280. package/dist/dts/ScopedRef.d.ts.map +1 -1
  281. package/dist/dts/SingleProducerAsyncInput.d.ts +8 -8
  282. package/dist/dts/SingleProducerAsyncInput.d.ts.map +1 -1
  283. package/dist/dts/Sink.d.ts +214 -205
  284. package/dist/dts/Sink.d.ts.map +1 -1
  285. package/dist/dts/Stream.d.ts +595 -592
  286. package/dist/dts/Stream.d.ts.map +1 -1
  287. package/dist/dts/StreamEmit.d.ts +5 -5
  288. package/dist/dts/StreamEmit.d.ts.map +1 -1
  289. package/dist/dts/Streamable.d.ts +2 -2
  290. package/dist/dts/Streamable.d.ts.map +1 -1
  291. package/dist/dts/SubscriptionRef.d.ts +41 -41
  292. package/dist/dts/SubscriptionRef.d.ts.map +1 -1
  293. package/dist/dts/Supervisor.d.ts +17 -17
  294. package/dist/dts/Supervisor.d.ts.map +1 -1
  295. package/dist/dts/SynchronizedRef.d.ts +41 -41
  296. package/dist/dts/SynchronizedRef.d.ts.map +1 -1
  297. package/dist/dts/TArray.d.ts +72 -72
  298. package/dist/dts/TArray.d.ts.map +1 -1
  299. package/dist/dts/TDeferred.d.ts +12 -12
  300. package/dist/dts/TDeferred.d.ts.map +1 -1
  301. package/dist/dts/TMap.d.ts +67 -67
  302. package/dist/dts/TMap.d.ts.map +1 -1
  303. package/dist/dts/TPriorityQueue.d.ts +23 -23
  304. package/dist/dts/TPriorityQueue.d.ts.map +1 -1
  305. package/dist/dts/TPubSub.d.ts +15 -15
  306. package/dist/dts/TPubSub.d.ts.map +1 -1
  307. package/dist/dts/TQueue.d.ts +40 -40
  308. package/dist/dts/TQueue.d.ts.map +1 -1
  309. package/dist/dts/TRandom.d.ts +13 -13
  310. package/dist/dts/TRandom.d.ts.map +1 -1
  311. package/dist/dts/TReentrantLock.d.ts +21 -21
  312. package/dist/dts/TReentrantLock.d.ts.map +1 -1
  313. package/dist/dts/TRef.d.ts +25 -25
  314. package/dist/dts/TRef.d.ts.map +1 -1
  315. package/dist/dts/TSemaphore.d.ts +15 -15
  316. package/dist/dts/TSemaphore.d.ts.map +1 -1
  317. package/dist/dts/TSet.d.ts +49 -49
  318. package/dist/dts/TSet.d.ts.map +1 -1
  319. package/dist/dts/Take.d.ts +41 -41
  320. package/dist/dts/Take.d.ts.map +1 -1
  321. package/dist/dts/TestAnnotation.d.ts +1 -3
  322. package/dist/dts/TestAnnotation.d.ts.map +1 -1
  323. package/dist/dts/TestAnnotations.d.ts +3 -3
  324. package/dist/dts/TestAnnotations.d.ts.map +1 -1
  325. package/dist/dts/TestClock.d.ts +18 -18
  326. package/dist/dts/TestClock.d.ts.map +1 -1
  327. package/dist/dts/TestConfig.d.ts.map +1 -1
  328. package/dist/dts/TestContext.d.ts +2 -2
  329. package/dist/dts/TestContext.d.ts.map +1 -1
  330. package/dist/dts/TestLive.d.ts +1 -1
  331. package/dist/dts/TestLive.d.ts.map +1 -1
  332. package/dist/dts/TestServices.d.ts +31 -31
  333. package/dist/dts/TestServices.d.ts.map +1 -1
  334. package/dist/dts/TestSized.d.ts +2 -2
  335. package/dist/dts/TestSized.d.ts.map +1 -1
  336. package/dist/dts/Tracer.d.ts +1 -1
  337. package/dist/dts/Utils.d.ts.map +1 -1
  338. package/dist/dts/index.d.ts +12 -2
  339. package/dist/dts/index.d.ts.map +1 -1
  340. package/dist/dts/internal/channel/channelExecutor.d.ts +1 -1
  341. package/dist/dts/internal/channel/channelExecutor.d.ts.map +1 -1
  342. package/dist/dts/internal/core-stream.d.ts +1 -1
  343. package/dist/dts/internal/core-stream.d.ts.map +1 -1
  344. package/dist/dts/internal/rateLimiter.d.ts +2 -0
  345. package/dist/dts/internal/rateLimiter.d.ts.map +1 -0
  346. package/dist/dts/internal/stm/stm.d.ts +6 -6
  347. package/dist/dts/internal/stm/stm.d.ts.map +1 -1
  348. package/dist/dts/internal/version.d.ts +1 -1
  349. package/dist/esm/Cause.js +13 -0
  350. package/dist/esm/Cause.js.map +1 -1
  351. package/dist/esm/Channel.js.map +1 -1
  352. package/dist/esm/Clock.js.map +1 -1
  353. package/dist/esm/Console.js.map +1 -1
  354. package/dist/esm/Context.js +22 -24
  355. package/dist/esm/Context.js.map +1 -1
  356. package/dist/esm/Data.js +4 -5
  357. package/dist/esm/Data.js.map +1 -1
  358. package/dist/esm/Deferred.js +1 -1
  359. package/dist/esm/Deferred.js.map +1 -1
  360. package/dist/esm/Effect.js +9 -9
  361. package/dist/esm/Effect.js.map +1 -1
  362. package/dist/esm/Effectable.js.map +1 -1
  363. package/dist/esm/Either.js.map +1 -1
  364. package/dist/esm/Exit.js +2 -2
  365. package/dist/esm/Exit.js.map +1 -1
  366. package/dist/esm/Fiber.js.map +1 -1
  367. package/dist/esm/FiberMap.js +3 -3
  368. package/dist/esm/FiberRef.js.map +1 -1
  369. package/dist/esm/FiberRefs.js.map +1 -1
  370. package/dist/esm/FiberSet.js +3 -3
  371. package/dist/esm/FiberSet.js.map +1 -1
  372. package/dist/esm/GroupBy.js.map +1 -1
  373. package/dist/esm/Layer.js.map +1 -1
  374. package/dist/esm/LogLevel.js.map +1 -1
  375. package/dist/esm/Logger.js.map +1 -1
  376. package/dist/esm/Metric.js.map +1 -1
  377. package/dist/esm/Number.js +18 -0
  378. package/dist/esm/Number.js.map +1 -1
  379. package/dist/esm/Option.js.map +1 -1
  380. package/dist/esm/Pool.js.map +1 -1
  381. package/dist/esm/PubSub.js.map +1 -1
  382. package/dist/esm/Queue.js.map +1 -1
  383. package/dist/esm/Random.js.map +1 -1
  384. package/dist/esm/RateLimiter.js +7 -0
  385. package/dist/esm/RateLimiter.js.map +1 -0
  386. package/dist/esm/ReadonlyRecord.js +44 -8
  387. package/dist/esm/ReadonlyRecord.js.map +1 -1
  388. package/dist/esm/Ref.js.map +1 -1
  389. package/dist/esm/Request.js.map +1 -1
  390. package/dist/esm/RequestResolver.js.map +1 -1
  391. package/dist/esm/Resource.js.map +1 -1
  392. package/dist/esm/Runtime.js +1 -4
  393. package/dist/esm/Runtime.js.map +1 -1
  394. package/dist/esm/RuntimeFlags.js.map +1 -1
  395. package/dist/esm/STM.js.map +1 -1
  396. package/dist/esm/Schedule.js.map +1 -1
  397. package/dist/esm/Scope.js.map +1 -1
  398. package/dist/esm/ScopedRef.js.map +1 -1
  399. package/dist/esm/SingleProducerAsyncInput.js.map +1 -1
  400. package/dist/esm/Sink.js.map +1 -1
  401. package/dist/esm/Stream.js.map +1 -1
  402. package/dist/esm/SubscriptionRef.js.map +1 -1
  403. package/dist/esm/Supervisor.js.map +1 -1
  404. package/dist/esm/SynchronizedRef.js.map +1 -1
  405. package/dist/esm/TArray.js.map +1 -1
  406. package/dist/esm/TDeferred.js.map +1 -1
  407. package/dist/esm/TMap.js.map +1 -1
  408. package/dist/esm/TPriorityQueue.js.map +1 -1
  409. package/dist/esm/TPubSub.js.map +1 -1
  410. package/dist/esm/TQueue.js.map +1 -1
  411. package/dist/esm/TRandom.js.map +1 -1
  412. package/dist/esm/TReentrantLock.js.map +1 -1
  413. package/dist/esm/TRef.js.map +1 -1
  414. package/dist/esm/TSemaphore.js.map +1 -1
  415. package/dist/esm/TSet.js.map +1 -1
  416. package/dist/esm/Take.js +6 -6
  417. package/dist/esm/Take.js.map +1 -1
  418. package/dist/esm/TestAnnotation.js +10 -13
  419. package/dist/esm/TestAnnotation.js.map +1 -1
  420. package/dist/esm/TestAnnotations.js +1 -1
  421. package/dist/esm/TestAnnotations.js.map +1 -1
  422. package/dist/esm/TestClock.js +1 -1
  423. package/dist/esm/TestClock.js.map +1 -1
  424. package/dist/esm/TestConfig.js +1 -1
  425. package/dist/esm/TestConfig.js.map +1 -1
  426. package/dist/esm/TestContext.js.map +1 -1
  427. package/dist/esm/TestLive.js +1 -1
  428. package/dist/esm/TestLive.js.map +1 -1
  429. package/dist/esm/TestServices.js.map +1 -1
  430. package/dist/esm/TestSized.js +1 -1
  431. package/dist/esm/TestSized.js.map +1 -1
  432. package/dist/esm/Utils.js +1 -1
  433. package/dist/esm/Utils.js.map +1 -1
  434. package/dist/esm/index.js +12 -2
  435. package/dist/esm/index.js.map +1 -1
  436. package/dist/esm/internal/cache.js.map +1 -1
  437. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  438. package/dist/esm/internal/channel/mergeDecision.js +2 -6
  439. package/dist/esm/internal/channel/mergeDecision.js.map +1 -1
  440. package/dist/esm/internal/channel/singleProducerAsyncInput.js.map +1 -1
  441. package/dist/esm/internal/channel.js +1 -1
  442. package/dist/esm/internal/channel.js.map +1 -1
  443. package/dist/esm/internal/clock.js +1 -1
  444. package/dist/esm/internal/clock.js.map +1 -1
  445. package/dist/esm/internal/configProvider.js +2 -4
  446. package/dist/esm/internal/configProvider.js.map +1 -1
  447. package/dist/esm/internal/console.js.map +1 -1
  448. package/dist/esm/internal/context.js +28 -20
  449. package/dist/esm/internal/context.js.map +1 -1
  450. package/dist/esm/internal/core-effect.js +12 -26
  451. package/dist/esm/internal/core-effect.js.map +1 -1
  452. package/dist/esm/internal/core-stream.js.map +1 -1
  453. package/dist/esm/internal/core.js +57 -127
  454. package/dist/esm/internal/core.js.map +1 -1
  455. package/dist/esm/internal/data.js.map +1 -1
  456. package/dist/esm/internal/defaultServices/console.js +1 -1
  457. package/dist/esm/internal/defaultServices/console.js.map +1 -1
  458. package/dist/esm/internal/defaultServices.js.map +1 -1
  459. package/dist/esm/internal/deferred.js.map +1 -1
  460. package/dist/esm/internal/differ/contextPatch.js +9 -9
  461. package/dist/esm/internal/differ/contextPatch.js.map +1 -1
  462. package/dist/esm/internal/effect/circular.js +5 -8
  463. package/dist/esm/internal/effect/circular.js.map +1 -1
  464. package/dist/esm/internal/effectable.js +4 -4
  465. package/dist/esm/internal/effectable.js.map +1 -1
  466. package/dist/esm/internal/fiber.js +2 -6
  467. package/dist/esm/internal/fiber.js.map +1 -1
  468. package/dist/esm/internal/fiberRuntime.js +10 -19
  469. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  470. package/dist/esm/internal/groupBy.js.map +1 -1
  471. package/dist/esm/internal/keyedPool.js.map +1 -1
  472. package/dist/esm/internal/layer/circular.js.map +1 -1
  473. package/dist/esm/internal/layer.js +3 -3
  474. package/dist/esm/internal/layer.js.map +1 -1
  475. package/dist/esm/internal/logSpan.js +3 -5
  476. package/dist/esm/internal/logSpan.js.map +1 -1
  477. package/dist/esm/internal/metric.js.map +1 -1
  478. package/dist/esm/internal/pool.js.map +1 -1
  479. package/dist/esm/internal/pubsub.js +1 -5
  480. package/dist/esm/internal/pubsub.js.map +1 -1
  481. package/dist/esm/internal/query.js.map +1 -1
  482. package/dist/esm/internal/queue.js.map +1 -1
  483. package/dist/esm/internal/random.js +1 -1
  484. package/dist/esm/internal/random.js.map +1 -1
  485. package/dist/esm/internal/rateLimiter.js +12 -0
  486. package/dist/esm/internal/rateLimiter.js.map +1 -0
  487. package/dist/esm/internal/ref.js.map +1 -1
  488. package/dist/esm/internal/reloadable.js +1 -9
  489. package/dist/esm/internal/reloadable.js.map +1 -1
  490. package/dist/esm/internal/runtime.js +0 -1
  491. package/dist/esm/internal/runtime.js.map +1 -1
  492. package/dist/esm/internal/schedule.js.map +1 -1
  493. package/dist/esm/internal/scopedCache.js.map +1 -1
  494. package/dist/esm/internal/scopedRef.js.map +1 -1
  495. package/dist/esm/internal/sink.js +7 -7
  496. package/dist/esm/internal/sink.js.map +1 -1
  497. package/dist/esm/internal/stm/core.js.map +1 -1
  498. package/dist/esm/internal/stm/stm/stmState.js.map +1 -1
  499. package/dist/esm/internal/stm/stm/tExit.js +2 -2
  500. package/dist/esm/internal/stm/stm/tExit.js.map +1 -1
  501. package/dist/esm/internal/stm/stm/tryCommit.js.map +1 -1
  502. package/dist/esm/internal/stm/stm.js.map +1 -1
  503. package/dist/esm/internal/stm/tArray.js.map +1 -1
  504. package/dist/esm/internal/stm/tDeferred.js +4 -2
  505. package/dist/esm/internal/stm/tDeferred.js.map +1 -1
  506. package/dist/esm/internal/stm/tMap.js.map +1 -1
  507. package/dist/esm/internal/stm/tPriorityQueue.js.map +1 -1
  508. package/dist/esm/internal/stm/tPubSub.js.map +1 -1
  509. package/dist/esm/internal/stm/tQueue.js.map +1 -1
  510. package/dist/esm/internal/stm/tRandom.js +1 -1
  511. package/dist/esm/internal/stm/tRandom.js.map +1 -1
  512. package/dist/esm/internal/stm/tReentrantLock.js.map +1 -1
  513. package/dist/esm/internal/stm/tRef.js.map +1 -1
  514. package/dist/esm/internal/stm/tSemaphore.js.map +1 -1
  515. package/dist/esm/internal/stm/tSet.js.map +1 -1
  516. package/dist/esm/internal/stream/debounceState.js.map +1 -1
  517. package/dist/esm/internal/stream/handoff.js.map +1 -1
  518. package/dist/esm/internal/stream/handoffSignal.js.map +1 -1
  519. package/dist/esm/internal/stream/pull.js.map +1 -1
  520. package/dist/esm/internal/stream.js +0 -2
  521. package/dist/esm/internal/stream.js.map +1 -1
  522. package/dist/esm/internal/subscriptionRef.js.map +1 -1
  523. package/dist/esm/internal/supervisor.js.map +1 -1
  524. package/dist/esm/internal/take.js +2 -2
  525. package/dist/esm/internal/take.js.map +1 -1
  526. package/dist/esm/internal/testing/sleep.js.map +1 -1
  527. package/dist/esm/internal/tracer.js +2 -2
  528. package/dist/esm/internal/tracer.js.map +1 -1
  529. package/dist/esm/internal/version.js +1 -1
  530. package/package.json +9 -1
  531. package/src/Cache.ts +20 -20
  532. package/src/Cause.ts +37 -13
  533. package/src/Channel.ts +802 -794
  534. package/src/Clock.ts +7 -7
  535. package/src/Config.ts +1 -1
  536. package/src/ConfigProvider.ts +6 -6
  537. package/src/Console.ts +44 -48
  538. package/src/Context.ts +52 -30
  539. package/src/Data.ts +38 -61
  540. package/src/Deferred.ts +39 -41
  541. package/src/Effect.ts +1187 -1206
  542. package/src/Effectable.ts +8 -8
  543. package/src/Either.ts +2 -3
  544. package/src/Exit.ts +88 -105
  545. package/src/Fiber.ts +77 -83
  546. package/src/FiberMap.ts +77 -77
  547. package/src/FiberRef.ts +28 -28
  548. package/src/FiberRefs.ts +1 -1
  549. package/src/FiberSet.ts +61 -62
  550. package/src/GroupBy.ts +8 -12
  551. package/src/KeyedPool.ts +22 -22
  552. package/src/Layer.ts +187 -181
  553. package/src/LogLevel.ts +7 -6
  554. package/src/Logger.ts +18 -18
  555. package/src/MergeDecision.ts +7 -7
  556. package/src/MergeState.ts +16 -16
  557. package/src/Metric.ts +39 -39
  558. package/src/MetricPolling.ts +6 -6
  559. package/src/Number.ts +19 -0
  560. package/src/Option.ts +2 -3
  561. package/src/Pool.ts +15 -16
  562. package/src/PubSub.ts +18 -18
  563. package/src/Queue.ts +43 -46
  564. package/src/Random.ts +13 -15
  565. package/src/RateLimiter.ts +37 -0
  566. package/src/ReadonlyRecord.ts +49 -8
  567. package/src/Ref.ts +25 -25
  568. package/src/Reloadable.ts +10 -10
  569. package/src/Request.ts +31 -31
  570. package/src/RequestBlock.ts +3 -3
  571. package/src/RequestResolver.ts +21 -21
  572. package/src/Resource.ts +13 -13
  573. package/src/Runtime.ts +16 -19
  574. package/src/RuntimeFlags.ts +10 -10
  575. package/src/STM.ts +361 -362
  576. package/src/Schedule.ts +19 -19
  577. package/src/Scheduler.ts +2 -2
  578. package/src/Scope.ts +14 -15
  579. package/src/ScopedCache.ts +14 -14
  580. package/src/ScopedRef.ts +7 -7
  581. package/src/SingleProducerAsyncInput.ts +8 -9
  582. package/src/Sink.ts +357 -381
  583. package/src/Stream.ts +935 -1033
  584. package/src/StreamEmit.ts +5 -5
  585. package/src/Streamable.ts +2 -2
  586. package/src/SubscriptionRef.ts +51 -51
  587. package/src/Supervisor.ts +26 -26
  588. package/src/SynchronizedRef.ts +44 -44
  589. package/src/TArray.ts +74 -74
  590. package/src/TDeferred.ts +14 -14
  591. package/src/TMap.ts +72 -72
  592. package/src/TPriorityQueue.ts +23 -24
  593. package/src/TPubSub.ts +15 -15
  594. package/src/TQueue.ts +40 -40
  595. package/src/TRandom.ts +13 -13
  596. package/src/TReentrantLock.ts +21 -21
  597. package/src/TRef.ts +25 -25
  598. package/src/TSemaphore.ts +15 -15
  599. package/src/TSet.ts +49 -49
  600. package/src/Take.ts +51 -51
  601. package/src/TestAnnotation.ts +6 -17
  602. package/src/TestAnnotations.ts +7 -9
  603. package/src/TestClock.ts +39 -45
  604. package/src/TestConfig.ts +1 -3
  605. package/src/TestContext.ts +3 -3
  606. package/src/TestLive.ts +3 -5
  607. package/src/TestServices.ts +45 -47
  608. package/src/TestSized.ts +5 -5
  609. package/src/Tracer.ts +1 -1
  610. package/src/Utils.ts +8 -10
  611. package/src/index.ts +13 -2
  612. package/src/internal/blockedRequests.ts +2 -2
  613. package/src/internal/cache.ts +38 -38
  614. package/src/internal/channel/channelExecutor.ts +65 -73
  615. package/src/internal/channel/channelState.ts +11 -11
  616. package/src/internal/channel/continuation.ts +10 -10
  617. package/src/internal/channel/mergeDecision.ts +14 -16
  618. package/src/internal/channel/mergeState.ts +12 -12
  619. package/src/internal/channel/singleProducerAsyncInput.ts +15 -17
  620. package/src/internal/channel/subexecutor.ts +7 -7
  621. package/src/internal/channel.ts +901 -980
  622. package/src/internal/clock.ts +6 -6
  623. package/src/internal/concurrency.ts +9 -9
  624. package/src/internal/configProvider.ts +29 -36
  625. package/src/internal/console.ts +12 -12
  626. package/src/internal/context.ts +32 -23
  627. package/src/internal/core-effect.ts +655 -616
  628. package/src/internal/core-stream.ts +317 -325
  629. package/src/internal/core.ts +856 -790
  630. package/src/internal/data.ts +2 -3
  631. package/src/internal/dataSource.ts +14 -14
  632. package/src/internal/defaultServices/console.ts +3 -1
  633. package/src/internal/defaultServices.ts +21 -21
  634. package/src/internal/deferred.ts +9 -9
  635. package/src/internal/differ/contextPatch.ts +17 -17
  636. package/src/internal/effect/circular.ts +154 -159
  637. package/src/internal/effectable.ts +7 -7
  638. package/src/internal/fiber.ts +55 -59
  639. package/src/internal/fiberRefs.ts +1 -1
  640. package/src/internal/fiberRuntime.ts +426 -463
  641. package/src/internal/groupBy.ts +59 -62
  642. package/src/internal/keyedPool.ts +37 -37
  643. package/src/internal/layer/circular.ts +37 -37
  644. package/src/internal/layer.ts +235 -240
  645. package/src/internal/logSpan.ts +3 -5
  646. package/src/internal/metric/polling.ts +5 -5
  647. package/src/internal/metric.ts +54 -55
  648. package/src/internal/pool.ts +72 -72
  649. package/src/internal/pubsub.ts +75 -84
  650. package/src/internal/query.ts +25 -27
  651. package/src/internal/queue.ts +65 -70
  652. package/src/internal/random.ts +9 -9
  653. package/src/internal/rateLimiter.ts +30 -0
  654. package/src/internal/ref.ts +24 -24
  655. package/src/internal/reloadable.ts +11 -31
  656. package/src/internal/request.ts +14 -14
  657. package/src/internal/resource.ts +8 -8
  658. package/src/internal/runtime.ts +21 -22
  659. package/src/internal/schedule.ts +131 -134
  660. package/src/internal/scopedCache.ts +35 -32
  661. package/src/internal/scopedRef.ts +14 -14
  662. package/src/internal/sink.ts +507 -565
  663. package/src/internal/stm/core.ts +101 -102
  664. package/src/internal/stm/stm/stmState.ts +10 -10
  665. package/src/internal/stm/stm/tExit.ts +18 -18
  666. package/src/internal/stm/stm/tryCommit.ts +5 -5
  667. package/src/internal/stm/stm.ts +363 -374
  668. package/src/internal/stm/tArray.ts +92 -92
  669. package/src/internal/stm/tDeferred.ts +16 -14
  670. package/src/internal/stm/tMap.ts +83 -84
  671. package/src/internal/stm/tPriorityQueue.ts +24 -25
  672. package/src/internal/stm/tPubSub.ts +37 -38
  673. package/src/internal/stm/tQueue.ts +44 -48
  674. package/src/internal/stm/tRandom.ts +18 -18
  675. package/src/internal/stm/tReentrantLock.ts +28 -28
  676. package/src/internal/stm/tRef.ts +25 -25
  677. package/src/internal/stm/tSemaphore.ts +16 -16
  678. package/src/internal/stm/tSet.ts +51 -52
  679. package/src/internal/stream/debounceState.ts +7 -7
  680. package/src/internal/stream/emit.ts +4 -4
  681. package/src/internal/stream/handoff.ts +19 -19
  682. package/src/internal/stream/handoffSignal.ts +4 -4
  683. package/src/internal/stream/pull.ts +10 -11
  684. package/src/internal/stream.ts +1770 -1788
  685. package/src/internal/subscriptionRef.ts +17 -17
  686. package/src/internal/supervisor.ts +49 -56
  687. package/src/internal/synchronizedRef.ts +27 -27
  688. package/src/internal/take.ts +61 -61
  689. package/src/internal/testing/sleep.ts +2 -2
  690. package/src/internal/testing/suspendedWarningData.ts +2 -2
  691. package/src/internal/testing/warningData.ts +2 -2
  692. package/src/internal/tracer.ts +2 -6
  693. package/src/internal/version.ts +1 -1
@@ -52,7 +52,7 @@ export type Primitive =
52
52
  | STMInterrupt
53
53
 
54
54
  /** @internal */
55
- type Op<Tag extends string, Body = {}> = STM.STM<never, never, never> & Body & {
55
+ type Op<Tag extends string, Body = {}> = STM.STM<never> & Body & {
56
56
  readonly _tag: OP_COMMIT
57
57
  readonly i0: Tag
58
58
  }
@@ -182,16 +182,16 @@ class STMPrimitive implements STM.STM<any, any, any> {
182
182
  export const isSTM = (u: unknown): u is STM.STM<unknown, unknown, unknown> => hasProperty(u, STMTypeId)
183
183
 
184
184
  /** @internal */
185
- export const commit = <R, E, A>(self: STM.STM<R, E, A>): Effect.Effect<R, E, A> =>
185
+ export const commit = <A, E, R>(self: STM.STM<A, E, R>): Effect.Effect<A, E, R> =>
186
186
  unsafeAtomically(self, constVoid, constVoid)
187
187
 
188
188
  /** @internal */
189
- export const unsafeAtomically = <R, E, A>(
190
- self: STM.STM<R, E, A>,
191
- onDone: (exit: Exit.Exit<E, A>) => unknown,
189
+ export const unsafeAtomically = <A, E, R>(
190
+ self: STM.STM<A, E, R>,
191
+ onDone: (exit: Exit.Exit<A, E>) => unknown,
192
192
  onInterrupt: LazyArg<unknown>
193
- ): Effect.Effect<R, E, A> =>
194
- withFiberRuntime<R, E, A>((state) => {
193
+ ): Effect.Effect<A, E, R> =>
194
+ withFiberRuntime((state) => {
195
195
  const fiberId = state.id()
196
196
  const env = state.getFiberRef(FiberRef.currentContext) as Context.Context<R>
197
197
  const scheduler = state.getFiberRef(FiberRef.currentScheduler)
@@ -204,9 +204,9 @@ export const unsafeAtomically = <R, E, A>(
204
204
  }
205
205
  case TryCommitOpCodes.OP_SUSPEND: {
206
206
  const txnId = TxnId.make()
207
- const state: { value: STMState.STMState<E, A> } = { value: STMState.running }
207
+ const state: { value: STMState.STMState<A, E> } = { value: STMState.running }
208
208
  const effect = Effect.async(
209
- (k: (effect: Effect.Effect<R, E, A>) => unknown): void =>
209
+ (k: (effect: Effect.Effect<A, E, R>) => unknown): void =>
210
210
  tryCommitAsync(fiberId, self, txnId, state, env, scheduler, priority, k)
211
211
  )
212
212
  return Effect.uninterruptibleMask((restore) =>
@@ -232,14 +232,14 @@ export const unsafeAtomically = <R, E, A>(
232
232
  })
233
233
 
234
234
  /** @internal */
235
- const tryCommit = <R, E, A>(
235
+ const tryCommit = <A, E, R>(
236
236
  fiberId: FiberId.FiberId,
237
- stm: STM.STM<R, E, A>,
238
- state: { value: STMState.STMState<E, A> },
237
+ stm: STM.STM<A, E, R>,
238
+ state: { value: STMState.STMState<A, E> },
239
239
  env: Context.Context<R>,
240
240
  scheduler: Scheduler.Scheduler,
241
241
  priority: number
242
- ): TryCommit.TryCommit<E, A> => {
242
+ ): TryCommit.TryCommit<A, E> => {
243
243
  const journal: Journal.Journal = new Map()
244
244
  const tExit = new STMDriver(stm, journal, fiberId, env).run()
245
245
  const analysis = Journal.analyzeJournal(journal)
@@ -294,13 +294,13 @@ const tryCommit = <R, E, A>(
294
294
  }
295
295
 
296
296
  /** @internal */
297
- const tryCommitSync = <R, E, A>(
297
+ const tryCommitSync = <A, E, R>(
298
298
  fiberId: FiberId.FiberId,
299
- stm: STM.STM<R, E, A>,
299
+ stm: STM.STM<A, E, R>,
300
300
  env: Context.Context<R>,
301
301
  scheduler: Scheduler.Scheduler,
302
302
  priority: number
303
- ): TryCommit.TryCommit<E, A> => {
303
+ ): TryCommit.TryCommit<A, E> => {
304
304
  const journal: Journal.Journal = new Map()
305
305
  const tExit = new STMDriver(stm, journal, fiberId, env).run()
306
306
  const analysis = Journal.analyzeJournal(journal)
@@ -351,15 +351,15 @@ const tryCommitSync = <R, E, A>(
351
351
  }
352
352
 
353
353
  /** @internal */
354
- const tryCommitAsync = <R, E, A>(
354
+ const tryCommitAsync = <A, E, R>(
355
355
  fiberId: FiberId.FiberId,
356
- self: STM.STM<R, E, A>,
356
+ self: STM.STM<A, E, R>,
357
357
  txnId: TxnId.TxnId,
358
- state: { value: STMState.STMState<E, A> },
358
+ state: { value: STMState.STMState<A, E> },
359
359
  context: Context.Context<R>,
360
360
  scheduler: Scheduler.Scheduler,
361
361
  priority: number,
362
- k: (effect: Effect.Effect<R, E, A>) => unknown
362
+ k: (effect: Effect.Effect<A, E, R>) => unknown
363
363
  ) => {
364
364
  if (STMState.isRunning(state.value)) {
365
365
  const result = tryCommit(fiberId, self, state, context, scheduler, priority)
@@ -381,12 +381,12 @@ const tryCommitAsync = <R, E, A>(
381
381
  }
382
382
 
383
383
  /** @internal */
384
- const completeTodos = <E, A>(
385
- exit: Exit.Exit<E, A>,
384
+ const completeTodos = <A, E>(
385
+ exit: Exit.Exit<A, E>,
386
386
  journal: Journal.Journal,
387
387
  scheduler: Scheduler.Scheduler,
388
388
  priority: number
389
- ): TryCommit.TryCommit<E, A> => {
389
+ ): TryCommit.TryCommit<A, E> => {
390
390
  const todos = Journal.collectTodos(journal)
391
391
  if (todos.size > 0) {
392
392
  scheduler.scheduleTask(() => Journal.execTodos(todos), priority)
@@ -395,9 +395,9 @@ const completeTodos = <E, A>(
395
395
  }
396
396
 
397
397
  /** @internal */
398
- const completeTryCommit = <R, E, A>(
399
- exit: Exit.Exit<E, A>,
400
- k: (effect: Effect.Effect<R, E, A>) => unknown
398
+ const completeTryCommit = <A, E, R>(
399
+ exit: Exit.Exit<A, E>,
400
+ k: (effect: Effect.Effect<A, E, R>) => unknown
401
401
  ): void => {
402
402
  k(exit)
403
403
  }
@@ -406,17 +406,17 @@ const completeTryCommit = <R, E, A>(
406
406
  type Continuation = STMOnFailure | STMOnSuccess | STMOnRetry
407
407
 
408
408
  /** @internal */
409
- export const context = <R>(): STM.STM<R, never, Context.Context<R>> =>
409
+ export const context = <R>(): STM.STM<Context.Context<R>, never, R> =>
410
410
  effect<R, Context.Context<R>>((_, __, env) => env)
411
411
 
412
412
  /** @internal */
413
- export const contextWith = <R0, R>(f: (environment: Context.Context<R0>) => R): STM.STM<R0, never, R> =>
413
+ export const contextWith = <R0, R>(f: (environment: Context.Context<R0>) => R): STM.STM<R, never, R0> =>
414
414
  map(context<R0>(), f)
415
415
 
416
416
  /** @internal */
417
417
  export const contextWithSTM = <R0, R, E, A>(
418
- f: (environment: Context.Context<R0>) => STM.STM<R, E, A>
419
- ): STM.STM<R0 | R, E, A> => flatMap(context<R0>(), f)
418
+ f: (environment: Context.Context<R0>) => STM.STM<A, E, R>
419
+ ): STM.STM<A, E, R0 | R> => flatMap(context<R0>(), f)
420
420
 
421
421
  /** @internal */
422
422
  export class STMDriver<in out R, out E, out A> {
@@ -424,7 +424,7 @@ export class STMDriver<in out R, out E, out A> {
424
424
  private env: Context.Context<unknown>
425
425
 
426
426
  constructor(
427
- readonly self: STM.STM<R, E, A>,
427
+ readonly self: STM.STM<A, E, R>,
428
428
  readonly journal: Journal.Journal,
429
429
  readonly fiberId: FiberId.FiberId,
430
430
  r0: Context.Context<R>
@@ -468,7 +468,7 @@ export class STMDriver<in out R, out E, out A> {
468
468
  return current
469
469
  }
470
470
 
471
- run(): TExit.TExit<E, A> {
471
+ run(): TExit.TExit<A, E> {
472
472
  let curr = this.self as Primitive | Context.Tag<any, any> | Either.Either<any, any> | Option.Option<any> | undefined
473
473
  let exit: TExit.TExit<unknown, unknown> | undefined = undefined
474
474
  while (exit === undefined && curr !== undefined) {
@@ -573,21 +573,21 @@ export class STMDriver<in out R, out E, out A> {
573
573
  curr = die(e) as Primitive
574
574
  }
575
575
  }
576
- return exit as TExit.TExit<E, A>
576
+ return exit as TExit.TExit<A, E>
577
577
  }
578
578
  }
579
579
 
580
580
  /** @internal */
581
581
  export const catchAll = dual<
582
582
  <E, R1, E1, B>(
583
- f: (e: E) => STM.STM<R1, E1, B>
583
+ f: (e: E) => STM.STM<B, E1, R1>
584
584
  ) => <R, A>(
585
- self: STM.STM<R, E, A>
586
- ) => STM.STM<R1 | R, E1, B | A>,
585
+ self: STM.STM<A, E, R>
586
+ ) => STM.STM<B | A, E1, R1 | R>,
587
587
  <R, A, E, R1, E1, B>(
588
- self: STM.STM<R, E, A>,
589
- f: (e: E) => STM.STM<R1, E1, B>
590
- ) => STM.STM<R1 | R, E1, B | A>
588
+ self: STM.STM<A, E, R>,
589
+ f: (e: E) => STM.STM<B, E1, R1>
590
+ ) => STM.STM<B | A, E1, R1 | R>
591
591
  >(2, (self, f) => {
592
592
  const stm = new STMPrimitive(OpCodes.OP_ON_FAILURE)
593
593
  stm.i1 = self
@@ -599,13 +599,13 @@ export const catchAll = dual<
599
599
  export const mapInputContext = dual<
600
600
  <R0, R>(
601
601
  f: (context: Context.Context<R0>) => Context.Context<R>
602
- ) => <E, A>(
603
- self: STM.STM<R, E, A>
604
- ) => STM.STM<R0, E, A>,
605
- <E, A, R0, R>(
606
- self: STM.STM<R, E, A>,
602
+ ) => <A, E>(
603
+ self: STM.STM<A, E, R>
604
+ ) => STM.STM<A, E, R0>,
605
+ <A, E, R0, R>(
606
+ self: STM.STM<A, E, R>,
607
607
  f: (context: Context.Context<R0>) => Context.Context<R>
608
- ) => STM.STM<R0, E, A>
608
+ ) => STM.STM<A, E, R0>
609
609
  >(2, (self, f) => {
610
610
  const stm = new STMPrimitive(OpCodes.OP_PROVIDE)
611
611
  stm.i1 = self
@@ -614,14 +614,13 @@ export const mapInputContext = dual<
614
614
  })
615
615
 
616
616
  /** @internal */
617
- export const die = (defect: unknown): STM.STM<never, never, never> => dieSync(() => defect)
617
+ export const die = (defect: unknown): STM.STM<never> => dieSync(() => defect)
618
618
 
619
619
  /** @internal */
620
- export const dieMessage = (message: string): STM.STM<never, never, never> =>
621
- dieSync(() => new Cause.RuntimeException(message))
620
+ export const dieMessage = (message: string): STM.STM<never> => dieSync(() => new Cause.RuntimeException(message))
622
621
 
623
622
  /** @internal */
624
- export const dieSync = (evaluate: LazyArg<unknown>): STM.STM<never, never, never> => {
623
+ export const dieSync = (evaluate: LazyArg<unknown>): STM.STM<never> => {
625
624
  const stm = new STMPrimitive(OpCodes.OP_DIE)
626
625
  stm.i1 = evaluate
627
626
  return stm as any
@@ -630,12 +629,12 @@ export const dieSync = (evaluate: LazyArg<unknown>): STM.STM<never, never, never
630
629
  /** @internal */
631
630
  export const effect = <R, A>(
632
631
  f: (journal: Journal.Journal, fiberId: FiberId.FiberId, environment: Context.Context<R>) => A
633
- ): STM.STM<R, never, A> => withSTMRuntime((_) => succeed(f(_.journal, _.fiberId, _.getEnv())))
632
+ ): STM.STM<A, never, R> => withSTMRuntime((_) => succeed(f(_.journal, _.fiberId, _.getEnv())))
634
633
 
635
634
  /** @internal */
636
635
  export const ensuring = dual<
637
- <R1, B>(finalizer: STM.STM<R1, never, B>) => <R, E, A>(self: STM.STM<R, E, A>) => STM.STM<R1 | R, E, A>,
638
- <R, E, A, R1, B>(self: STM.STM<R, E, A>, finalizer: STM.STM<R1, never, B>) => STM.STM<R1 | R, E, A>
636
+ <R1, B>(finalizer: STM.STM<B, never, R1>) => <A, E, R>(self: STM.STM<A, E, R>) => STM.STM<A, E, R1 | R>,
637
+ <R, E, A, R1, B>(self: STM.STM<A, E, R>, finalizer: STM.STM<B, never, R1>) => STM.STM<A, E, R1 | R>
639
638
  >(2, (self, finalizer) =>
640
639
  matchSTM(self, {
641
640
  onFailure: (e) => zipRight(finalizer, fail(e)),
@@ -643,10 +642,10 @@ export const ensuring = dual<
643
642
  }))
644
643
 
645
644
  /** @internal */
646
- export const fail = <E>(error: E): STM.STM<never, E, never> => failSync(() => error)
645
+ export const fail = <E>(error: E): STM.STM<never, E> => failSync(() => error)
647
646
 
648
647
  /** @internal */
649
- export const failSync = <E>(evaluate: LazyArg<E>): STM.STM<never, E, never> => {
648
+ export const failSync = <E>(evaluate: LazyArg<E>): STM.STM<never, E> => {
650
649
  const stm = new STMPrimitive(OpCodes.OP_FAIL)
651
650
  stm.i1 = evaluate
652
651
  return stm as any
@@ -654,8 +653,8 @@ export const failSync = <E>(evaluate: LazyArg<E>): STM.STM<never, E, never> => {
654
653
 
655
654
  /** @internal */
656
655
  export const flatMap = dual<
657
- <A, R1, E1, A2>(f: (a: A) => STM.STM<R1, E1, A2>) => <R, E>(self: STM.STM<R, E, A>) => STM.STM<R1 | R, E1 | E, A2>,
658
- <R, E, A, R1, E1, A2>(self: STM.STM<R, E, A>, f: (a: A) => STM.STM<R1, E1, A2>) => STM.STM<R1 | R, E1 | E, A2>
656
+ <A, R1, E1, A2>(f: (a: A) => STM.STM<A2, E1, R1>) => <R, E>(self: STM.STM<A, E, R>) => STM.STM<A2, E1 | E, R1 | R>,
657
+ <R, E, A, R1, E1, A2>(self: STM.STM<A, E, R>, f: (a: A) => STM.STM<A2, E1, R1>) => STM.STM<A2, E1 | E, R1 | R>
659
658
  >(2, (self, f) => {
660
659
  const stm = new STMPrimitive(OpCodes.OP_ON_SUCCESS)
661
660
  stm.i1 = self
@@ -667,29 +666,29 @@ export const flatMap = dual<
667
666
  export const matchSTM = dual<
668
667
  <E, R1, E1, A1, A, R2, E2, A2>(
669
668
  options: {
670
- readonly onFailure: (e: E) => STM.STM<R1, E1, A1>
671
- readonly onSuccess: (a: A) => STM.STM<R2, E2, A2>
669
+ readonly onFailure: (e: E) => STM.STM<A1, E1, R1>
670
+ readonly onSuccess: (a: A) => STM.STM<A2, E2, R2>
672
671
  }
673
- ) => <R>(self: STM.STM<R, E, A>) => STM.STM<R1 | R2 | R, E1 | E2, A1 | A2>,
672
+ ) => <R>(self: STM.STM<A, E, R>) => STM.STM<A1 | A2, E1 | E2, R1 | R2 | R>,
674
673
  <R, E, R1, E1, A1, A, R2, E2, A2>(
675
- self: STM.STM<R, E, A>,
674
+ self: STM.STM<A, E, R>,
676
675
  options: {
677
- readonly onFailure: (e: E) => STM.STM<R1, E1, A1>
678
- readonly onSuccess: (a: A) => STM.STM<R2, E2, A2>
676
+ readonly onFailure: (e: E) => STM.STM<A1, E1, R1>
677
+ readonly onSuccess: (a: A) => STM.STM<A2, E2, R2>
679
678
  }
680
- ) => STM.STM<R1 | R2 | R, E1 | E2, A1 | A2>
679
+ ) => STM.STM<A1 | A2, E1 | E2, R1 | R2 | R>
681
680
  >(2, <R, E, R1, E1, A1, A, R2, E2, A2>(
682
- self: STM.STM<R, E, A>,
681
+ self: STM.STM<A, E, R>,
683
682
  { onFailure, onSuccess }: {
684
- readonly onFailure: (e: E) => STM.STM<R1, E1, A1>
685
- readonly onSuccess: (a: A) => STM.STM<R2, E2, A2>
683
+ readonly onFailure: (e: E) => STM.STM<A1, E1, R1>
684
+ readonly onSuccess: (a: A) => STM.STM<A2, E2, R2>
686
685
  }
687
- ): STM.STM<R1 | R2 | R, E1 | E2, A1 | A2> =>
686
+ ): STM.STM<A1 | A2, E1 | E2, R1 | R2 | R> =>
688
687
  pipe(
689
688
  self,
690
689
  map(Either.right),
691
690
  catchAll((e) => pipe(onFailure(e), map(Either.left))),
692
- flatMap((either): STM.STM<R | R1 | R2, E1 | E2, A1 | A2> => {
691
+ flatMap((either): STM.STM<A1 | A2, E1 | E2, R | R1 | R2> => {
693
692
  switch (either._tag) {
694
693
  case "Left": {
695
694
  return succeed(either.left)
@@ -702,23 +701,23 @@ export const matchSTM = dual<
702
701
  ))
703
702
 
704
703
  /** @internal */
705
- export const withSTMRuntime = <R, E, A>(
706
- f: (runtime: STMDriver<unknown, unknown, unknown>) => STM.STM<R, E, A>
707
- ): STM.STM<R, E, A> => {
704
+ export const withSTMRuntime = <A, E = never, R = never>(
705
+ f: (runtime: STMDriver<unknown, unknown, unknown>) => STM.STM<A, E, R>
706
+ ): STM.STM<A, E, R> => {
708
707
  const stm = new STMPrimitive(OpCodes.OP_WITH_STM_RUNTIME)
709
708
  stm.i1 = f
710
709
  return stm
711
710
  }
712
711
 
713
712
  /** @internal */
714
- export const interrupt: STM.STM<never, never, never> = withSTMRuntime((_) => {
713
+ export const interrupt: STM.STM<never> = withSTMRuntime((_) => {
715
714
  const stm = new STMPrimitive(OpCodes.OP_INTERRUPT)
716
715
  stm.i1 = _.fiberId
717
716
  return stm as any
718
717
  })
719
718
 
720
719
  /** @internal */
721
- export const interruptAs = (fiberId: FiberId.FiberId): STM.STM<never, never, never> => {
720
+ export const interruptAs = (fiberId: FiberId.FiberId): STM.STM<never> => {
722
721
  const stm = new STMPrimitive(OpCodes.OP_INTERRUPT)
723
722
  stm.i1 = fiberId
724
723
  return stm as any
@@ -726,21 +725,21 @@ export const interruptAs = (fiberId: FiberId.FiberId): STM.STM<never, never, nev
726
725
 
727
726
  /** @internal */
728
727
  export const map = dual<
729
- <A, B>(f: (a: A) => B) => <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E, B>,
730
- <R, E, A, B>(self: STM.STM<R, E, A>, f: (a: A) => B) => STM.STM<R, E, B>
728
+ <A, B>(f: (a: A) => B) => <R, E>(self: STM.STM<A, E, R>) => STM.STM<B, E, R>,
729
+ <R, E, A, B>(self: STM.STM<A, E, R>, f: (a: A) => B) => STM.STM<B, E, R>
731
730
  >(2, (self, f) => pipe(self, flatMap((a) => sync(() => f(a)))))
732
731
 
733
732
  /** @internal */
734
733
  export const orTry = dual<
735
734
  <R1, E1, A1>(
736
- that: LazyArg<STM.STM<R1, E1, A1>>
737
- ) => <R, E, A>(
738
- self: STM.STM<R, E, A>
739
- ) => STM.STM<R1 | R, E1 | E, A1 | A>,
735
+ that: LazyArg<STM.STM<A1, E1, R1>>
736
+ ) => <A, E, R>(
737
+ self: STM.STM<A, E, R>
738
+ ) => STM.STM<A1 | A, E1 | E, R1 | R>,
740
739
  <R, E, A, R1, E1, A1>(
741
- self: STM.STM<R, E, A>,
742
- that: LazyArg<STM.STM<R1, E1, A1>>
743
- ) => STM.STM<R1 | R, E1 | E, A1 | A>
740
+ self: STM.STM<A, E, R>,
741
+ that: LazyArg<STM.STM<A1, E1, R1>>
742
+ ) => STM.STM<A1 | A, E1 | E, R1 | R>
744
743
  >(2, (self, that) => {
745
744
  const stm = new STMPrimitive(OpCodes.OP_ON_RETRY)
746
745
  stm.i1 = self
@@ -749,17 +748,17 @@ export const orTry = dual<
749
748
  })
750
749
 
751
750
  /** @internal */
752
- export const retry: STM.STM<never, never, never> = new STMPrimitive(OpCodes.OP_RETRY)
751
+ export const retry: STM.STM<never> = new STMPrimitive(OpCodes.OP_RETRY)
753
752
 
754
753
  /** @internal */
755
- export const succeed = <A>(value: A): STM.STM<never, never, A> => {
754
+ export const succeed = <A>(value: A): STM.STM<A> => {
756
755
  const stm = new STMPrimitive(OpCodes.OP_SUCCEED)
757
756
  stm.i1 = value
758
757
  return stm as any
759
758
  }
760
759
 
761
760
  /** @internal */
762
- export const sync = <A>(evaluate: () => A): STM.STM<never, never, A> => {
761
+ export const sync = <A>(evaluate: () => A): STM.STM<A> => {
763
762
  const stm = new STMPrimitive(OpCodes.OP_SYNC)
764
763
  stm.i1 = evaluate
765
764
  return stm as any
@@ -768,41 +767,41 @@ export const sync = <A>(evaluate: () => A): STM.STM<never, never, A> => {
768
767
  /** @internal */
769
768
  export const zip = dual<
770
769
  <R1, E1, A1>(
771
- that: STM.STM<R1, E1, A1>
772
- ) => <R, E, A>(
773
- self: STM.STM<R, E, A>
774
- ) => STM.STM<R1 | R, E1 | E, [A, A1]>,
770
+ that: STM.STM<A1, E1, R1>
771
+ ) => <A, E, R>(
772
+ self: STM.STM<A, E, R>
773
+ ) => STM.STM<[A, A1], E1 | E, R1 | R>,
775
774
  <R, E, A, R1, E1, A1>(
776
- self: STM.STM<R, E, A>,
777
- that: STM.STM<R1, E1, A1>
778
- ) => STM.STM<R1 | R, E1 | E, [A, A1]>
775
+ self: STM.STM<A, E, R>,
776
+ that: STM.STM<A1, E1, R1>
777
+ ) => STM.STM<[A, A1], E1 | E, R1 | R>
779
778
  >(2, (self, that) => pipe(self, zipWith(that, (a, a1) => [a, a1])))
780
779
 
781
780
  /** @internal */
782
781
  export const zipLeft = dual<
783
- <R1, E1, A1>(that: STM.STM<R1, E1, A1>) => <R, E, A>(self: STM.STM<R, E, A>) => STM.STM<R1 | R, E1 | E, A>,
784
- <R, E, A, R1, E1, A1>(self: STM.STM<R, E, A>, that: STM.STM<R1, E1, A1>) => STM.STM<R1 | R, E1 | E, A>
782
+ <R1, E1, A1>(that: STM.STM<A1, E1, R1>) => <A, E, R>(self: STM.STM<A, E, R>) => STM.STM<A, E1 | E, R1 | R>,
783
+ <R, E, A, R1, E1, A1>(self: STM.STM<A, E, R>, that: STM.STM<A1, E1, R1>) => STM.STM<A, E1 | E, R1 | R>
785
784
  >(2, (self, that) => pipe(self, flatMap((a) => pipe(that, map(() => a)))))
786
785
 
787
786
  /** @internal */
788
787
  export const zipRight = dual<
789
- <R1, E1, A1>(that: STM.STM<R1, E1, A1>) => <R, E, A>(self: STM.STM<R, E, A>) => STM.STM<R1 | R, E1 | E, A1>,
790
- <R, E, A, R1, E1, A1>(self: STM.STM<R, E, A>, that: STM.STM<R1, E1, A1>) => STM.STM<R1 | R, E1 | E, A1>
788
+ <R1, E1, A1>(that: STM.STM<A1, E1, R1>) => <A, E, R>(self: STM.STM<A, E, R>) => STM.STM<A1, E1 | E, R1 | R>,
789
+ <R, E, A, R1, E1, A1>(self: STM.STM<A, E, R>, that: STM.STM<A1, E1, R1>) => STM.STM<A1, E1 | E, R1 | R>
791
790
  >(2, (self, that) => pipe(self, flatMap(() => that)))
792
791
 
793
792
  /** @internal */
794
793
  export const zipWith = dual<
795
794
  <R1, E1, A1, A, A2>(
796
- that: STM.STM<R1, E1, A1>,
795
+ that: STM.STM<A1, E1, R1>,
797
796
  f: (a: A, b: A1) => A2
798
797
  ) => <R, E>(
799
- self: STM.STM<R, E, A>
800
- ) => STM.STM<R1 | R, E1 | E, A2>,
798
+ self: STM.STM<A, E, R>
799
+ ) => STM.STM<A2, E1 | E, R1 | R>,
801
800
  <R, E, R1, E1, A1, A, A2>(
802
- self: STM.STM<R, E, A>,
803
- that: STM.STM<R1, E1, A1>,
801
+ self: STM.STM<A, E, R>,
802
+ that: STM.STM<A1, E1, R1>,
804
803
  f: (a: A, b: A1) => A2
805
- ) => STM.STM<R1 | R, E1 | E, A2>
804
+ ) => STM.STM<A2, E1 | E, R1 | R>
806
805
  >(
807
806
  3,
808
807
  (self, that, f) => pipe(self, flatMap((a) => pipe(that, map((b) => f(a, b)))))
@@ -17,13 +17,13 @@ export const STMStateTypeId = Symbol.for(STMStateSymbolKey)
17
17
  export type STMStateTypeId = typeof STMStateTypeId
18
18
 
19
19
  /** @internal */
20
- export type STMState<E, A> = Done<E, A> | Interrupted | Running
20
+ export type STMState<A, E = never> = Done<A, E> | Interrupted | Running
21
21
 
22
22
  /** @internal */
23
- export interface Done<out E, out A> extends Equal.Equal {
23
+ export interface Done<out A, out E = never> extends Equal.Equal {
24
24
  readonly [STMStateTypeId]: STMStateTypeId
25
25
  readonly _tag: OpCodes.OP_DONE
26
- readonly exit: Exit.Exit<E, A>
26
+ readonly exit: Exit.Exit<A, E>
27
27
  }
28
28
 
29
29
  /** @internal */
@@ -42,22 +42,22 @@ export interface Running extends Equal.Equal {
42
42
  export const isSTMState = (u: unknown): u is STMState<unknown, unknown> => hasProperty(u, STMStateTypeId)
43
43
 
44
44
  /** @internal */
45
- export const isRunning = <E, A>(self: STMState<E, A>): self is Running => {
45
+ export const isRunning = <A, E>(self: STMState<A, E>): self is Running => {
46
46
  return self._tag === OpCodes.OP_RUNNING
47
47
  }
48
48
 
49
49
  /** @internal */
50
- export const isDone = <E, A>(self: STMState<E, A>): self is Done<E, A> => {
50
+ export const isDone = <A, E>(self: STMState<A, E>): self is Done<A, E> => {
51
51
  return self._tag === OpCodes.OP_DONE
52
52
  }
53
53
 
54
54
  /** @internal */
55
- export const isInterrupted = <E, A>(self: STMState<E, A>): self is Interrupted => {
55
+ export const isInterrupted = <A, E>(self: STMState<A, E>): self is Interrupted => {
56
56
  return self._tag === OpCodes.OP_INTERRUPTED
57
57
  }
58
58
 
59
59
  /** @internal */
60
- export const done = <E, A>(exit: Exit.Exit<E, A>): STMState<E, A> => {
60
+ export const done = <A, E>(exit: Exit.Exit<A, E>): STMState<A, E> => {
61
61
  return {
62
62
  [STMStateTypeId]: STMStateTypeId,
63
63
  _tag: OpCodes.OP_DONE,
@@ -76,7 +76,7 @@ export const done = <E, A>(exit: Exit.Exit<E, A>): STMState<E, A> => {
76
76
  }
77
77
 
78
78
  /** @internal */
79
- export const interrupted: STMState<never, never> = {
79
+ export const interrupted: STMState<never> = {
80
80
  [STMStateTypeId]: STMStateTypeId,
81
81
  _tag: OpCodes.OP_INTERRUPTED,
82
82
  [Hash.symbol](): number {
@@ -92,7 +92,7 @@ export const interrupted: STMState<never, never> = {
92
92
  }
93
93
 
94
94
  /** @internal */
95
- export const running: STMState<never, never> = {
95
+ export const running: STMState<never> = {
96
96
  [STMStateTypeId]: STMStateTypeId,
97
97
  _tag: OpCodes.OP_RUNNING,
98
98
  [Hash.symbol](): number {
@@ -108,7 +108,7 @@ export const running: STMState<never, never> = {
108
108
  }
109
109
 
110
110
  /** @internal */
111
- export const fromTExit = <E, A>(tExit: TExit.TExit<E, A>): STMState<E, A> => {
111
+ export const fromTExit = <A, E>(tExit: TExit.TExit<A, E>): STMState<A, E> => {
112
112
  switch (tExit._tag) {
113
113
  case TExitOpCodes.OP_FAIL: {
114
114
  return done(Exit.fail(tExit.error))
@@ -16,28 +16,28 @@ export const TExitTypeId = Symbol.for(TExitSymbolKey)
16
16
  export type TExitTypeId = typeof TExitTypeId
17
17
 
18
18
  /** @internal */
19
- export type TExit<E, A> = Fail<E> | Die | Interrupt | Succeed<A> | Retry
19
+ export type TExit<A, E = never> = Fail<E> | Die | Interrupt | Succeed<A> | Retry
20
20
 
21
21
  /** @internal */
22
22
  export declare namespace TExit {
23
23
  /** @internal */
24
- export interface Variance<out E, out A> {
24
+ export interface Variance<out A, out E> {
25
25
  readonly [TExitTypeId]: {
26
- readonly _E: Types.Covariant<E>
27
26
  readonly _A: Types.Covariant<A>
27
+ readonly _E: Types.Covariant<E>
28
28
  }
29
29
  }
30
30
  }
31
31
 
32
32
  const variance = {
33
33
  /* c8 ignore next */
34
- _E: (_: never) => _,
34
+ _A: (_: never) => _,
35
35
  /* c8 ignore next */
36
- _A: (_: never) => _
36
+ _E: (_: never) => _
37
37
  }
38
38
 
39
39
  /** @internal */
40
- export interface Fail<out E> extends TExit.Variance<E, never>, Equal.Equal {
40
+ export interface Fail<out E> extends TExit.Variance<never, E>, Equal.Equal {
41
41
  readonly _tag: OpCodes.OP_FAIL
42
42
  readonly error: E
43
43
  }
@@ -55,7 +55,7 @@ export interface Interrupt extends TExit.Variance<never, never>, Equal.Equal {
55
55
  }
56
56
 
57
57
  /** @internal */
58
- export interface Succeed<out A> extends TExit.Variance<never, A>, Equal.Equal {
58
+ export interface Succeed<out A> extends TExit.Variance<A, never>, Equal.Equal {
59
59
  readonly _tag: OpCodes.OP_SUCCEED
60
60
  readonly value: A
61
61
  }
@@ -69,32 +69,32 @@ export interface Retry extends TExit.Variance<never, never>, Equal.Equal {
69
69
  export const isExit = (u: unknown): u is TExit<unknown, unknown> => hasProperty(u, TExitTypeId)
70
70
 
71
71
  /** @internal */
72
- export const isFail = <E, A>(self: TExit<E, A>): self is Fail<E> => {
72
+ export const isFail = <A, E>(self: TExit<A, E>): self is Fail<E> => {
73
73
  return self._tag === OpCodes.OP_FAIL
74
74
  }
75
75
 
76
76
  /** @internal */
77
- export const isDie = <E, A>(self: TExit<E, A>): self is Die => {
77
+ export const isDie = <A, E>(self: TExit<A, E>): self is Die => {
78
78
  return self._tag === OpCodes.OP_DIE
79
79
  }
80
80
 
81
81
  /** @internal */
82
- export const isInterrupt = <E, A>(self: TExit<E, A>): self is Interrupt => {
82
+ export const isInterrupt = <A, E>(self: TExit<A, E>): self is Interrupt => {
83
83
  return self._tag === OpCodes.OP_INTERRUPT
84
84
  }
85
85
 
86
86
  /** @internal */
87
- export const isSuccess = <E, A>(self: TExit<E, A>): self is Succeed<A> => {
87
+ export const isSuccess = <A, E>(self: TExit<A, E>): self is Succeed<A> => {
88
88
  return self._tag === OpCodes.OP_SUCCEED
89
89
  }
90
90
 
91
91
  /** @internal */
92
- export const isRetry = <E, A>(self: TExit<E, A>): self is Retry => {
92
+ export const isRetry = <A, E>(self: TExit<A, E>): self is Retry => {
93
93
  return self._tag === OpCodes.OP_RETRY
94
94
  }
95
95
 
96
96
  /** @internal */
97
- export const fail = <E>(error: E): TExit<E, never> => ({
97
+ export const fail = <E>(error: E): TExit<never, E> => ({
98
98
  [TExitTypeId]: variance,
99
99
  _tag: OpCodes.OP_FAIL,
100
100
  error,
@@ -111,7 +111,7 @@ export const fail = <E>(error: E): TExit<E, never> => ({
111
111
  })
112
112
 
113
113
  /** @internal */
114
- export const die = (defect: unknown): TExit<never, never> => ({
114
+ export const die = (defect: unknown): TExit<never> => ({
115
115
  [TExitTypeId]: variance,
116
116
  _tag: OpCodes.OP_DIE,
117
117
  defect,
@@ -128,7 +128,7 @@ export const die = (defect: unknown): TExit<never, never> => ({
128
128
  })
129
129
 
130
130
  /** @internal */
131
- export const interrupt = (fiberId: FiberId.FiberId): TExit<never, never> => ({
131
+ export const interrupt = (fiberId: FiberId.FiberId): TExit<never> => ({
132
132
  [TExitTypeId]: variance,
133
133
  _tag: OpCodes.OP_INTERRUPT,
134
134
  fiberId,
@@ -145,7 +145,7 @@ export const interrupt = (fiberId: FiberId.FiberId): TExit<never, never> => ({
145
145
  })
146
146
 
147
147
  /** @internal */
148
- export const succeed = <A>(value: A): TExit<never, A> => ({
148
+ export const succeed = <A>(value: A): TExit<A> => ({
149
149
  [TExitTypeId]: variance,
150
150
  _tag: OpCodes.OP_SUCCEED,
151
151
  value,
@@ -162,7 +162,7 @@ export const succeed = <A>(value: A): TExit<never, A> => ({
162
162
  })
163
163
 
164
164
  /** @internal */
165
- export const retry: TExit<never, never> = {
165
+ export const retry: TExit<never> = {
166
166
  [TExitTypeId]: variance,
167
167
  _tag: OpCodes.OP_RETRY,
168
168
  [Hash.symbol](): number {
@@ -178,4 +178,4 @@ export const retry: TExit<never, never> = {
178
178
  }
179
179
 
180
180
  /** @internal */
181
- export const unit = (): TExit<never, void> => succeed(undefined)
181
+ export const unit = (): TExit<void> => succeed(undefined)