effect 2.3.8 → 2.4.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 (272) hide show
  1. package/dist/cjs/BigInt.js +14 -1
  2. package/dist/cjs/BigInt.js.map +1 -1
  3. package/dist/cjs/Effect.js +16 -61
  4. package/dist/cjs/Effect.js.map +1 -1
  5. package/dist/cjs/Either.js +35 -6
  6. package/dist/cjs/Either.js.map +1 -1
  7. package/dist/cjs/Equal.js +1 -1
  8. package/dist/cjs/Equal.js.map +1 -1
  9. package/dist/cjs/Exit.js +1 -1
  10. package/dist/cjs/Number.js +25 -1
  11. package/dist/cjs/Number.js.map +1 -1
  12. package/dist/cjs/ReadonlyArray.js +2 -2
  13. package/dist/cjs/ReadonlyArray.js.map +1 -1
  14. package/dist/cjs/ReadonlyRecord.js +71 -76
  15. package/dist/cjs/ReadonlyRecord.js.map +1 -1
  16. package/dist/cjs/STM.js.map +1 -1
  17. package/dist/cjs/Schedule.js.map +1 -1
  18. package/dist/cjs/Sink.js.map +1 -1
  19. package/dist/cjs/Stream.js +3 -23
  20. package/dist/cjs/Stream.js.map +1 -1
  21. package/dist/cjs/Struct.js +3 -1
  22. package/dist/cjs/Struct.js.map +1 -1
  23. package/dist/cjs/TestAnnotation.js.map +1 -1
  24. package/dist/cjs/internal/channel/channelExecutor.js +5 -5
  25. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  26. package/dist/cjs/internal/channel/channelState.js +5 -5
  27. package/dist/cjs/internal/channel/channelState.js.map +1 -1
  28. package/dist/cjs/internal/channel.js.map +1 -1
  29. package/dist/cjs/internal/clock.js +3 -4
  30. package/dist/cjs/internal/clock.js.map +1 -1
  31. package/dist/cjs/internal/core-effect.js +6 -23
  32. package/dist/cjs/internal/core-effect.js.map +1 -1
  33. package/dist/cjs/internal/core.js +11 -27
  34. package/dist/cjs/internal/core.js.map +1 -1
  35. package/dist/cjs/internal/effect/circular.js +4 -5
  36. package/dist/cjs/internal/effect/circular.js.map +1 -1
  37. package/dist/cjs/internal/either.js +3 -3
  38. package/dist/cjs/internal/either.js.map +1 -1
  39. package/dist/cjs/internal/groupBy.js.map +1 -1
  40. package/dist/cjs/internal/layer.js +0 -2
  41. package/dist/cjs/internal/layer.js.map +1 -1
  42. package/dist/cjs/internal/runtime.js +12 -1
  43. package/dist/cjs/internal/runtime.js.map +1 -1
  44. package/dist/cjs/internal/schedule.js +4 -4
  45. package/dist/cjs/internal/schedule.js.map +1 -1
  46. package/dist/cjs/internal/sink.js +0 -2
  47. package/dist/cjs/internal/sink.js.map +1 -1
  48. package/dist/cjs/internal/stm/stm.js +1 -0
  49. package/dist/cjs/internal/stm/stm.js.map +1 -1
  50. package/dist/cjs/internal/stream.js +51 -64
  51. package/dist/cjs/internal/stream.js.map +1 -1
  52. package/dist/cjs/internal/version.js +1 -1
  53. package/dist/dts/BigInt.d.ts +7 -0
  54. package/dist/dts/BigInt.d.ts.map +1 -1
  55. package/dist/dts/Brand.d.ts +1 -1
  56. package/dist/dts/Brand.d.ts.map +1 -1
  57. package/dist/dts/Cause.d.ts +1 -1
  58. package/dist/dts/Cause.d.ts.map +1 -1
  59. package/dist/dts/Channel.d.ts +11 -11
  60. package/dist/dts/Channel.d.ts.map +1 -1
  61. package/dist/dts/Chunk.d.ts +3 -3
  62. package/dist/dts/Config.d.ts +4 -4
  63. package/dist/dts/Config.d.ts.map +1 -1
  64. package/dist/dts/Cron.d.ts +1 -1
  65. package/dist/dts/Cron.d.ts.map +1 -1
  66. package/dist/dts/Differ.d.ts +2 -2
  67. package/dist/dts/Differ.d.ts.map +1 -1
  68. package/dist/dts/Effect.d.ts +52 -108
  69. package/dist/dts/Effect.d.ts.map +1 -1
  70. package/dist/dts/Either.d.ts +126 -83
  71. package/dist/dts/Either.d.ts.map +1 -1
  72. package/dist/dts/Encoding.d.ts +6 -6
  73. package/dist/dts/Encoding.d.ts.map +1 -1
  74. package/dist/dts/Equal.d.ts.map +1 -1
  75. package/dist/dts/Exit.d.ts +2 -2
  76. package/dist/dts/Fiber.d.ts +2 -2
  77. package/dist/dts/Fiber.d.ts.map +1 -1
  78. package/dist/dts/GroupBy.d.ts +12 -12
  79. package/dist/dts/GroupBy.d.ts.map +1 -1
  80. package/dist/dts/Layer.d.ts +26 -26
  81. package/dist/dts/Layer.d.ts.map +1 -1
  82. package/dist/dts/List.d.ts +2 -2
  83. package/dist/dts/Logger.d.ts +4 -4
  84. package/dist/dts/Match.d.ts +2 -2
  85. package/dist/dts/Match.d.ts.map +1 -1
  86. package/dist/dts/MergeDecision.d.ts +1 -1
  87. package/dist/dts/MergeState.d.ts +5 -5
  88. package/dist/dts/MergeState.d.ts.map +1 -1
  89. package/dist/dts/Metric.d.ts +13 -13
  90. package/dist/dts/Metric.d.ts.map +1 -1
  91. package/dist/dts/MetricPolling.d.ts +4 -4
  92. package/dist/dts/MetricPolling.d.ts.map +1 -1
  93. package/dist/dts/Number.d.ts +8 -0
  94. package/dist/dts/Number.d.ts.map +1 -1
  95. package/dist/dts/Option.d.ts +11 -11
  96. package/dist/dts/ReadonlyArray.d.ts +9 -8
  97. package/dist/dts/ReadonlyArray.d.ts.map +1 -1
  98. package/dist/dts/ReadonlyRecord.d.ts +111 -94
  99. package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
  100. package/dist/dts/Reloadable.d.ts +4 -4
  101. package/dist/dts/Reloadable.d.ts.map +1 -1
  102. package/dist/dts/RequestResolver.d.ts +13 -13
  103. package/dist/dts/RequestResolver.d.ts.map +1 -1
  104. package/dist/dts/Resource.d.ts +1 -1
  105. package/dist/dts/Resource.d.ts.map +1 -1
  106. package/dist/dts/STM.d.ts +144 -139
  107. package/dist/dts/STM.d.ts.map +1 -1
  108. package/dist/dts/Schedule.d.ts +171 -179
  109. package/dist/dts/Schedule.d.ts.map +1 -1
  110. package/dist/dts/SingleProducerAsyncInput.d.ts +1 -1
  111. package/dist/dts/SingleProducerAsyncInput.d.ts.map +1 -1
  112. package/dist/dts/Sink.d.ts +13 -13
  113. package/dist/dts/Sink.d.ts.map +1 -1
  114. package/dist/dts/Stream.d.ts +355 -366
  115. package/dist/dts/Stream.d.ts.map +1 -1
  116. package/dist/dts/Struct.d.ts +3 -3
  117. package/dist/dts/Struct.d.ts.map +1 -1
  118. package/dist/dts/SubscriptionRef.d.ts +2 -2
  119. package/dist/dts/TArray.d.ts +2 -2
  120. package/dist/dts/TDeferred.d.ts +3 -3
  121. package/dist/dts/TMap.d.ts +10 -10
  122. package/dist/dts/TSet.d.ts +4 -4
  123. package/dist/dts/Take.d.ts +2 -2
  124. package/dist/dts/TestAnnotation.d.ts +2 -2
  125. package/dist/dts/TestAnnotation.d.ts.map +1 -1
  126. package/dist/dts/Types.d.ts +7 -0
  127. package/dist/dts/Types.d.ts.map +1 -1
  128. package/dist/dts/internal/stm/stm.d.ts +2 -15
  129. package/dist/dts/internal/stm/stm.d.ts.map +1 -1
  130. package/dist/esm/BigInt.js +12 -0
  131. package/dist/esm/BigInt.js.map +1 -1
  132. package/dist/esm/Effect.js +13 -58
  133. package/dist/esm/Effect.js.map +1 -1
  134. package/dist/esm/Either.js +42 -5
  135. package/dist/esm/Either.js.map +1 -1
  136. package/dist/esm/Equal.js +1 -1
  137. package/dist/esm/Equal.js.map +1 -1
  138. package/dist/esm/Exit.js +1 -1
  139. package/dist/esm/Number.js +23 -0
  140. package/dist/esm/Number.js.map +1 -1
  141. package/dist/esm/ReadonlyArray.js +2 -2
  142. package/dist/esm/ReadonlyArray.js.map +1 -1
  143. package/dist/esm/ReadonlyRecord.js +70 -75
  144. package/dist/esm/ReadonlyRecord.js.map +1 -1
  145. package/dist/esm/STM.js.map +1 -1
  146. package/dist/esm/Schedule.js.map +1 -1
  147. package/dist/esm/Sink.js.map +1 -1
  148. package/dist/esm/Stream.js +5 -22
  149. package/dist/esm/Stream.js.map +1 -1
  150. package/dist/esm/Struct.js +3 -1
  151. package/dist/esm/Struct.js.map +1 -1
  152. package/dist/esm/TestAnnotation.js.map +1 -1
  153. package/dist/esm/internal/channel/channelExecutor.js +5 -5
  154. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  155. package/dist/esm/internal/channel/channelState.js +3 -3
  156. package/dist/esm/internal/channel/channelState.js.map +1 -1
  157. package/dist/esm/internal/channel.js.map +1 -1
  158. package/dist/esm/internal/clock.js +3 -4
  159. package/dist/esm/internal/clock.js.map +1 -1
  160. package/dist/esm/internal/core-effect.js +4 -20
  161. package/dist/esm/internal/core-effect.js.map +1 -1
  162. package/dist/esm/internal/core.js +8 -22
  163. package/dist/esm/internal/core.js.map +1 -1
  164. package/dist/esm/internal/effect/circular.js +4 -5
  165. package/dist/esm/internal/effect/circular.js.map +1 -1
  166. package/dist/esm/internal/either.js +3 -3
  167. package/dist/esm/internal/either.js.map +1 -1
  168. package/dist/esm/internal/groupBy.js.map +1 -1
  169. package/dist/esm/internal/layer.js +0 -2
  170. package/dist/esm/internal/layer.js.map +1 -1
  171. package/dist/esm/internal/runtime.js +12 -1
  172. package/dist/esm/internal/runtime.js.map +1 -1
  173. package/dist/esm/internal/schedule.js +4 -4
  174. package/dist/esm/internal/schedule.js.map +1 -1
  175. package/dist/esm/internal/sink.js +0 -2
  176. package/dist/esm/internal/sink.js.map +1 -1
  177. package/dist/esm/internal/stm/stm.js +1 -0
  178. package/dist/esm/internal/stm/stm.js.map +1 -1
  179. package/dist/esm/internal/stream.js +49 -59
  180. package/dist/esm/internal/stream.js.map +1 -1
  181. package/dist/esm/internal/version.js +1 -1
  182. package/package.json +1 -1
  183. package/src/BigInt.ts +13 -0
  184. package/src/Brand.ts +4 -4
  185. package/src/Cause.ts +1 -1
  186. package/src/Channel.ts +17 -17
  187. package/src/Chunk.ts +4 -4
  188. package/src/Config.ts +4 -4
  189. package/src/Cron.ts +2 -2
  190. package/src/Differ.ts +2 -2
  191. package/src/Effect.ts +68 -145
  192. package/src/Either.ts +215 -133
  193. package/src/Encoding.ts +3 -3
  194. package/src/Equal.ts +1 -1
  195. package/src/Exit.ts +2 -2
  196. package/src/Fiber.ts +2 -2
  197. package/src/GroupBy.ts +16 -16
  198. package/src/Layer.ts +32 -32
  199. package/src/List.ts +3 -3
  200. package/src/Logger.ts +4 -4
  201. package/src/Match.ts +3 -3
  202. package/src/MergeDecision.ts +1 -1
  203. package/src/MergeState.ts +8 -8
  204. package/src/Metric.ts +13 -13
  205. package/src/MetricPolling.ts +9 -9
  206. package/src/Number.ts +26 -0
  207. package/src/Option.ts +17 -17
  208. package/src/ReadonlyArray.ts +23 -15
  209. package/src/ReadonlyRecord.ts +421 -265
  210. package/src/Reloadable.ts +4 -4
  211. package/src/RequestResolver.ts +19 -19
  212. package/src/Resource.ts +3 -3
  213. package/src/STM.ts +166 -213
  214. package/src/Schedule.ts +331 -361
  215. package/src/SingleProducerAsyncInput.ts +1 -1
  216. package/src/Sink.ts +19 -19
  217. package/src/Stream.ts +449 -456
  218. package/src/Struct.ts +8 -5
  219. package/src/SubscriptionRef.ts +2 -2
  220. package/src/TArray.ts +2 -2
  221. package/src/TDeferred.ts +4 -4
  222. package/src/TMap.ts +10 -10
  223. package/src/TSet.ts +4 -4
  224. package/src/Take.ts +4 -4
  225. package/src/TestAnnotation.ts +5 -8
  226. package/src/Types.ts +11 -0
  227. package/src/internal/blockedRequests.ts +2 -2
  228. package/src/internal/cause.ts +2 -2
  229. package/src/internal/channel/channelExecutor.ts +26 -26
  230. package/src/internal/channel/channelState.ts +13 -13
  231. package/src/internal/channel/mergeDecision.ts +1 -1
  232. package/src/internal/channel/mergeState.ts +6 -6
  233. package/src/internal/channel/singleProducerAsyncInput.ts +5 -5
  234. package/src/internal/channel.ts +43 -43
  235. package/src/internal/clock.ts +3 -4
  236. package/src/internal/config.ts +7 -7
  237. package/src/internal/configError.ts +1 -1
  238. package/src/internal/configProvider/pathPatch.ts +2 -2
  239. package/src/internal/configProvider.ts +1 -1
  240. package/src/internal/core-effect.ts +28 -43
  241. package/src/internal/core.ts +15 -40
  242. package/src/internal/dataSource.ts +26 -26
  243. package/src/internal/differ/orPatch.ts +7 -7
  244. package/src/internal/differ.ts +2 -2
  245. package/src/internal/effect/circular.ts +9 -10
  246. package/src/internal/either.ts +25 -22
  247. package/src/internal/encoding/base64.ts +1 -1
  248. package/src/internal/encoding/base64Url.ts +1 -1
  249. package/src/internal/encoding/hex.ts +1 -1
  250. package/src/internal/fiber.ts +2 -2
  251. package/src/internal/fiberRuntime.ts +9 -9
  252. package/src/internal/groupBy.ts +40 -40
  253. package/src/internal/layer/circular.ts +4 -4
  254. package/src/internal/layer.ts +52 -54
  255. package/src/internal/matcher.ts +5 -5
  256. package/src/internal/metric/polling.ts +8 -8
  257. package/src/internal/metric.ts +6 -6
  258. package/src/internal/reloadable.ts +4 -4
  259. package/src/internal/resource.ts +2 -2
  260. package/src/internal/runtime.ts +32 -19
  261. package/src/internal/schedule.ts +430 -500
  262. package/src/internal/sink.ts +27 -29
  263. package/src/internal/stm/core.ts +23 -23
  264. package/src/internal/stm/stm.ts +158 -157
  265. package/src/internal/stm/tArray.ts +3 -3
  266. package/src/internal/stm/tDeferred.ts +5 -5
  267. package/src/internal/stm/tMap.ts +13 -13
  268. package/src/internal/stm/tSet.ts +4 -4
  269. package/src/internal/stream.ts +688 -723
  270. package/src/internal/subscriptionRef.ts +3 -3
  271. package/src/internal/take.ts +6 -6
  272. package/src/internal/version.ts +1 -1
package/src/STM.ts CHANGED
@@ -14,7 +14,7 @@ import * as stm from "./internal/stm/stm.js"
14
14
  import type * as Option from "./Option.js"
15
15
  import type { Pipeable } from "./Pipeable.js"
16
16
  import type { Predicate, Refinement } from "./Predicate.js"
17
- import type { Covariant, NoInfer } from "./Types.js"
17
+ import type { Covariant, MergeRecord, NoInfer } from "./Types.js"
18
18
  import type * as Unify from "./Unify.js"
19
19
 
20
20
  /**
@@ -111,10 +111,10 @@ declare module "./Context.js" {
111
111
  * @category models
112
112
  */
113
113
  declare module "./Either.js" {
114
- interface Left<E, A> extends STM<A, E> {
114
+ interface Left<L, R> extends STM<R, L> {
115
115
  readonly _tag: "Left"
116
116
  }
117
- interface Right<E, A> extends STM<A, E> {
117
+ interface Right<L, R> extends STM<R, L> {
118
118
  readonly _tag: "Right"
119
119
  }
120
120
  }
@@ -179,11 +179,11 @@ export const isSTM: (u: unknown) => u is STM<unknown, unknown, unknown> = core.i
179
179
  * @category constructors
180
180
  */
181
181
  export const acquireUseRelease: {
182
- <A, R2, E2, A2, R3, E3, A3>(
182
+ <A, A2, E2, R2, A3, E3, R3>(
183
183
  use: (resource: A) => STM<A2, E2, R2>,
184
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
- <R, E, A, R2, E2, A2, R3, E3, A3>(
185
+ ): <E, R>(acquire: STM<A, E, R>) => Effect.Effect<A2, E2 | E3 | E, R2 | R3 | R>
186
+ <A, E, R, A2, E2, R2, A3, E3, R3>(
187
187
  acquire: STM<A, E, R>,
188
188
  use: (resource: A) => STM<A2, E2, R2>,
189
189
  release: (resource: A) => STM<A3, E3, R3>
@@ -268,7 +268,7 @@ export const all: All.Signature = stm.all
268
268
  */
269
269
  export const as: {
270
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>
271
+ <A, E, R, A2>(self: STM<A, E, R>, value: A2): STM<A2, E, R>
272
272
  } = stm.as
273
273
 
274
274
  /**
@@ -312,8 +312,8 @@ export const attempt: <A>(evaluate: LazyArg<A>) => STM<A, unknown> = stm.attempt
312
312
  * @category error handling
313
313
  */
314
314
  export const catchAll: {
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>
315
+ <E, B, E1, R1>(f: (e: E) => STM<B, E1, R1>): <A, R>(self: STM<A, E, R>) => STM<B | A, E1, R1 | R>
316
+ <A, E, R, B, E1, R1>(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
  /**
@@ -323,12 +323,10 @@ export const catchAll: {
323
323
  * @category error handling
324
324
  */
325
325
  export const catchSome: {
326
- <E, R2, E2, A2>(
326
+ <E, A2, E2, R2>(
327
327
  pf: (error: E) => Option.Option<STM<A2, E2, R2>>
328
- ): <R, A>(
329
- self: STM<A, E, R>
330
- ) => STM<A2 | A, E | E2, R2 | R>
331
- <R, A, E, R2, E2, A2>(
328
+ ): <A, R>(self: STM<A, E, R>) => STM<A2 | A, E | E2, R2 | R>
329
+ <A, E, R, A2, E2, R2>(
332
330
  self: STM<A, E, R>,
333
331
  pf: (error: E) => Option.Option<STM<A2, E2, R2>>
334
332
  ): STM<A | A2, E | E2, R | R2>
@@ -341,11 +339,11 @@ export const catchSome: {
341
339
  * @category error handling
342
340
  */
343
341
  export const catchTag: {
344
- <K extends E["_tag"] & string, E extends { _tag: string }, R1, E1, A1>(
342
+ <K extends E["_tag"] & string, E extends { _tag: string }, A1, E1, R1>(
345
343
  k: K,
346
344
  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
- <R, E extends { _tag: string }, A, K extends E["_tag"] & string, R1, E1, A1>(
345
+ ): <A, R>(self: STM<A, E, R>) => STM<A1 | A, E1 | Exclude<E, { _tag: K }>, R1 | R>
346
+ <A, E extends { _tag: string }, R, K extends E["_tag"] & string, A1, E1, R1>(
349
347
  self: STM<A, E, R>,
350
348
  k: K,
351
349
  f: (e: Extract<E, { _tag: K }>) => STM<A1, E1, R1>
@@ -364,7 +362,7 @@ export const catchTags: {
364
362
  Cases extends { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => STM<any, any, any>) }
365
363
  >(
366
364
  cases: Cases
367
- ): <R, A>(
365
+ ): <A, R>(
368
366
  self: STM<A, E, R>
369
367
  ) => STM<
370
368
  | A
@@ -407,8 +405,8 @@ export const check: (predicate: LazyArg<boolean>) => STM<void> = stm.check
407
405
  * @category mutations
408
406
  */
409
407
  export const collect: {
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>
408
+ <A, A2>(pf: (a: A) => Option.Option<A2>): <E, R>(self: STM<A, E, R>) => STM<A2, E, R>
409
+ <A, E, R, A2>(self: STM<A, E, R>, pf: (a: A) => Option.Option<A2>): STM<A2, E, R>
412
410
  } = stm.collect
413
411
 
414
412
  /**
@@ -418,8 +416,8 @@ export const collect: {
418
416
  * @category mutations
419
417
  */
420
418
  export const collectSTM: {
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>
419
+ <A, A2, E2, R2>(pf: (a: A) => Option.Option<STM<A2, E2, R2>>): <E, R>(self: STM<A, E, R>) => STM<A2, E2 | E, R2 | R>
420
+ <A, E, R, A2, E2, R2>(self: STM<A, E, R>, pf: (a: A) => Option.Option<STM<A2, E2, R2>>): STM<A2, E | E2, R | R2>
423
421
  } = stm.collectSTM
424
422
 
425
423
  /**
@@ -470,7 +468,7 @@ export const contextWith: <R0, R>(f: (environment: Context.Context<R0>) => R) =>
470
468
  * @since 2.0.0
471
469
  * @category constructors
472
470
  */
473
- export const contextWithSTM: <R0, R, E, A>(
471
+ export const contextWithSTM: <R0, A, E, R>(
474
472
  f: (environment: Context.Context<R0>) => STM<A, E, R>
475
473
  ) => STM<A, E, R0 | R> = core.contextWithSTM
476
474
 
@@ -517,7 +515,7 @@ export const dieSync: (evaluate: LazyArg<unknown>) => STM<never> = core.dieSync
517
515
  * @since 2.0.0
518
516
  * @category mutations
519
517
  */
520
- export const either: <A, E, R>(self: STM<A, E, R>) => STM<Either.Either<E, A>, never, R> = stm.either
518
+ export const either: <A, E, R>(self: STM<A, E, R>) => STM<Either.Either<A, E>, never, R> = stm.either
521
519
 
522
520
  /**
523
521
  * Executes the specified finalization transaction whether or not this effect
@@ -529,7 +527,7 @@ export const either: <A, E, R>(self: STM<A, E, R>) => STM<Either.Either<E, A>, n
529
527
  */
530
528
  export const ensuring: {
531
529
  <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>
530
+ <A, E, R, R1, B>(self: STM<A, E, R>, finalizer: STM<B, never, R1>): STM<A, E, R | R1>
533
531
  } = core.ensuring
534
532
 
535
533
  /**
@@ -622,9 +620,9 @@ export const filterOrDie: {
622
620
  <A, B extends A>(
623
621
  refinement: Refinement<NoInfer<A>, B>,
624
622
  defect: LazyArg<unknown>
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>
623
+ ): <E, R>(self: STM<A, E, R>) => STM<B, E, R>
624
+ <A>(predicate: Predicate<NoInfer<A>>, defect: LazyArg<unknown>): <E, R>(self: STM<A, E, R>) => STM<A, E, R>
625
+ <A, E, R, B extends A>(self: STM<A, E, R>, refinement: Refinement<A, B>, defect: LazyArg<unknown>): STM<B, E, R>
628
626
  <A, E, R>(self: STM<A, E, R>, predicate: Predicate<A>, defect: LazyArg<unknown>): STM<A, E, R>
629
627
  } = stm.filterOrDie
630
628
 
@@ -636,9 +634,9 @@ export const filterOrDie: {
636
634
  * @category filtering
637
635
  */
638
636
  export const filterOrDieMessage: {
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>
637
+ <A, B extends A>(refinement: Refinement<NoInfer<A>, B>, message: string): <E, R>(self: STM<A, E, R>) => STM<B, E, R>
638
+ <A>(predicate: Predicate<NoInfer<A>>, message: string): <E, R>(self: STM<A, E, R>) => STM<A, E, R>
639
+ <A, E, R, B extends A>(self: STM<A, E, R>, refinement: Refinement<A, B>, message: string): STM<B, E, R>
642
640
  <A, E, R>(self: STM<A, E, R>, predicate: Predicate<A>, message: string): STM<A, E, R>
643
641
  } = stm.filterOrDieMessage
644
642
 
@@ -649,20 +647,20 @@ export const filterOrDieMessage: {
649
647
  * @category filtering
650
648
  */
651
649
  export const filterOrElse: {
652
- <A, B extends A, R2, E2, C>(
650
+ <A, B extends A, C, E2, R2>(
653
651
  refinement: Refinement<NoInfer<A>, B>,
654
652
  orElse: (a: NoInfer<A>) => STM<C, E2, R2>
655
- ): <R, E>(self: STM<A, E, R>) => STM<B | C, E2 | E, R2 | R>
656
- <A, R2, E2, B>(
653
+ ): <E, R>(self: STM<A, E, R>) => STM<B | C, E2 | E, R2 | R>
654
+ <A, B, E2, R2>(
657
655
  predicate: Predicate<NoInfer<A>>,
658
656
  orElse: (a: NoInfer<A>) => STM<B, E2, R2>
659
- ): <R, E>(self: STM<A, E, R>) => STM<A | B, E2 | E, R2 | R>
660
- <R, E, A, B extends A, R2, E2, C>(
657
+ ): <E, R>(self: STM<A, E, R>) => STM<A | B, E2 | E, R2 | R>
658
+ <A, E, R, B extends A, C, E2, R2>(
661
659
  self: STM<A, E, R>,
662
660
  refinement: Refinement<A, B>,
663
661
  orElse: (a: A) => STM<C, E2, R2>
664
662
  ): STM<B | C, E | E2, R | R2>
665
- <R, E, A, R2, E2, B>(
663
+ <A, E, R, B, E2, R2>(
666
664
  self: STM<A, E, R>,
667
665
  predicate: Predicate<A>,
668
666
  orElse: (a: A) => STM<B, E2, R2>
@@ -679,17 +677,17 @@ export const filterOrFail: {
679
677
  <A, B extends A, E2>(
680
678
  refinement: Refinement<NoInfer<A>, B>,
681
679
  orFailWith: (a: NoInfer<A>) => E2
682
- ): <R, E>(self: STM<A, E, R>) => STM<B, E2 | E, R>
680
+ ): <E, R>(self: STM<A, E, R>) => STM<B, E2 | E, R>
683
681
  <A, E2>(
684
682
  predicate: Predicate<NoInfer<A>>,
685
683
  orFailWith: (a: NoInfer<A>) => E2
686
- ): <R, E>(self: STM<A, E, R>) => STM<A, E2 | E, R>
687
- <R, E, A, B extends A, E2>(
684
+ ): <E, R>(self: STM<A, E, R>) => STM<A, E2 | E, R>
685
+ <A, E, R, B extends A, E2>(
688
686
  self: STM<A, E, R>,
689
687
  refinement: Refinement<A, B>,
690
688
  orFailWith: (a: A) => E2
691
689
  ): 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>
690
+ <A, E, R, E2>(self: STM<A, E, R>, predicate: Predicate<A>, orFailWith: (a: A) => E2): STM<A, E | E2, R>
693
691
  } = stm.filterOrFail
694
692
 
695
693
  /**
@@ -700,8 +698,8 @@ export const filterOrFail: {
700
698
  * @category sequencing
701
699
  */
702
700
  export const flatMap: {
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>
701
+ <A, A2, E1, R1>(f: (a: A) => STM<A2, E1, R1>): <E, R>(self: STM<A, E, R>) => STM<A2, E1 | E, R1 | R>
702
+ <A, E, R, A2, E1, R1>(self: STM<A, E, R>, f: (a: A) => STM<A2, E1, R1>): STM<A2, E | E1, R | R1>
705
703
  } = core.flatMap
706
704
 
707
705
  /**
@@ -710,7 +708,7 @@ export const flatMap: {
710
708
  * @since 2.0.0
711
709
  * @category sequencing
712
710
  */
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
711
+ export const flatten: <A, E2, R2, E, R>(self: STM<STM<A, E2, R2>, E, R>) => STM<A, E2 | E, R2 | R> = stm.flatten
714
712
 
715
713
  /**
716
714
  * Flips the success and failure channels of this transactional effect. This
@@ -730,8 +728,8 @@ export const flip: <A, E, R>(self: STM<A, E, R>) => STM<E, A, R> = stm.flip
730
728
  * @category mutations
731
729
  */
732
730
  export const flipWith: {
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>
731
+ <E, A, R, E2, A2, R2>(f: (stm: STM<E, A, R>) => STM<E2, A2, R2>): (self: STM<A, E, R>) => STM<A | A2, E | E2, R | R2>
732
+ <A, E, R, E2, A2, R2>(self: STM<A, E, R>, f: (stm: STM<E, A, R>) => STM<E2, A2, R2>): STM<A | A2, E | E2, R | R2>
735
733
  } = stm.flipWith
736
734
 
737
735
  /**
@@ -743,17 +741,11 @@ export const flipWith: {
743
741
  */
744
742
  export const match: {
745
743
  <E, A2, A, A3>(
746
- options: {
747
- readonly onFailure: (error: E) => A2
748
- readonly onSuccess: (value: A) => A3
749
- }
744
+ options: { readonly onFailure: (error: E) => A2; readonly onSuccess: (value: A) => A3 }
750
745
  ): <R>(self: STM<A, E, R>) => STM<A2 | A3, never, R>
751
- <R, E, A2, A, A3>(
746
+ <A, E, R, A2, A3>(
752
747
  self: STM<A, E, R>,
753
- options: {
754
- readonly onFailure: (error: E) => A2
755
- readonly onSuccess: (value: A) => A3
756
- }
748
+ options: { readonly onFailure: (error: E) => A2; readonly onSuccess: (value: A) => A3 }
757
749
  ): STM<A2 | A3, never, R>
758
750
  } = stm.match
759
751
 
@@ -764,18 +756,12 @@ export const match: {
764
756
  * @category folding
765
757
  */
766
758
  export const matchSTM: {
767
- <E, R1, E1, A1, A, R2, E2, A2>(
768
- options: {
769
- readonly onFailure: (e: E) => STM<A1, E1, R1>
770
- readonly onSuccess: (a: A) => STM<A2, E2, R2>
771
- }
759
+ <E, A1, E1, R1, A, A2, E2, R2>(
760
+ options: { readonly onFailure: (e: E) => STM<A1, E1, R1>; readonly onSuccess: (a: A) => STM<A2, E2, R2> }
772
761
  ): <R>(self: STM<A, E, R>) => STM<A1 | A2, E1 | E2, R1 | R2 | R>
773
- <R, E, R1, E1, A1, A, R2, E2, A2>(
762
+ <A, E, R, A1, E1, R1, A2, E2, R2>(
774
763
  self: STM<A, E, R>,
775
- options: {
776
- readonly onFailure: (e: E) => STM<A1, E1, R1>
777
- readonly onSuccess: (a: A) => STM<A2, E2, R2>
778
- }
764
+ options: { readonly onFailure: (e: E) => STM<A1, E1, R1>; readonly onSuccess: (a: A) => STM<A2, E2, R2> }
779
765
  ): STM<A1 | A2, E1 | E2, R | R1 | R2>
780
766
  } = core.matchSTM
781
767
 
@@ -787,28 +773,20 @@ export const matchSTM: {
787
773
  * @category traversing
788
774
  */
789
775
  export const forEach: {
790
- <A, R, E, A2>(
776
+ <A, A2, E, R>(
791
777
  f: (a: A) => STM<A2, E, R>,
792
- options?: {
793
- readonly discard?: false | undefined
794
- }
778
+ options?: { readonly discard?: false | undefined } | undefined
795
779
  ): (elements: Iterable<A>) => STM<Array<A2>, E, R>
796
- <A, R, E, A2>(
780
+ <A, A2, E, R>(
797
781
  f: (a: A) => STM<A2, E, R>,
798
- options: {
799
- readonly discard: true
800
- }
782
+ options: { readonly discard: true }
801
783
  ): (elements: Iterable<A>) => STM<void, E, R>
802
- <A, R, E, A2>(
784
+ <A, A2, E, R>(
803
785
  elements: Iterable<A>,
804
786
  f: (a: A) => STM<A2, E, R>,
805
- options?: {
806
- readonly discard?: false | undefined
807
- }
787
+ options?: { readonly discard?: false | undefined } | undefined
808
788
  ): STM<Array<A2>, E, R>
809
- <A, R, E, A2>(elements: Iterable<A>, f: (a: A) => STM<A2, E, R>, options: {
810
- readonly discard: true
811
- }): STM<void, E, R>
789
+ <A, A2, E, R>(elements: Iterable<A>, f: (a: A) => STM<A2, E, R>, options: { readonly discard: true }): STM<void, E, R>
812
790
  } = stm.forEach
813
791
 
814
792
  /**
@@ -817,7 +795,7 @@ export const forEach: {
817
795
  * @since 2.0.0
818
796
  * @category constructors
819
797
  */
820
- export const fromEither: <E, A>(either: Either.Either<E, A>) => STM<A, E> = stm.fromEither
798
+ export const fromEither: <A, E>(either: Either.Either<A, E>) => STM<A, E> = stm.fromEither
821
799
 
822
800
  /**
823
801
  * Lifts an `Option` into a `STM`.
@@ -1115,26 +1093,23 @@ export const gen: <Eff extends STMGen<any, any, any>, AEff>(
1115
1093
  export const head: <A, E, R>(self: STM<Iterable<A>, E, R>) => STM<A, Option.Option<E>, R> = stm.head
1116
1094
 
1117
1095
  const if_: {
1118
- <R1, R2, E1, E2, A, A1>(
1119
- options: {
1120
- readonly onTrue: STM<A, E1, R1>
1121
- readonly onFalse: STM<A1, E2, R2>
1122
- }
1123
- ): <R = never, E = never>(self: boolean | STM<boolean, E, R>) => STM<A | A1, E1 | E2 | E, R1 | R2 | R>
1124
- <R, E, R1, R2, E1, E2, A, A1>(
1096
+ <A, E1, R1, A2, E2, R2>(options: {
1097
+ readonly onTrue: STM<A, E1, R1>
1098
+ readonly onFalse: STM<A2, E2, R2> /**
1099
+ * Flattens out a nested `STM` effect.
1100
+ *
1101
+ * @since 2.0.0
1102
+ * @category sequencing
1103
+ */
1104
+ }): <E = never, R = never>(self: boolean | STM<boolean, E, R>) => STM<A | A2, E1 | E2 | E, R1 | R2 | R>
1105
+ <A, E1, R1, A2, E2, R2, E = never, R = never>(
1125
1106
  self: boolean,
1126
- options: {
1127
- readonly onTrue: STM<A, E1, R1>
1128
- readonly onFalse: STM<A1, E2, R2>
1129
- }
1130
- ): STM<A | A1, E | E1 | E2, R | R1 | R2>
1131
- <R, E, R1, R2, E1, E2, A, A1>(
1107
+ options: { readonly onTrue: STM<A, E1, R1>; readonly onFalse: STM<A2, E2, R2> }
1108
+ ): STM<A | A2, E1 | E2 | E, R1 | R2 | R>
1109
+ <E, R, A, E1, R1, A2, E2, R2>(
1132
1110
  self: STM<boolean, E, R>,
1133
- options: {
1134
- readonly onTrue: STM<A, E1, R1>
1135
- readonly onFalse: STM<A1, E2, R2>
1136
- }
1137
- ): STM<A | A1, E | E1 | E2, R | R1 | R2>
1111
+ options: { readonly onTrue: STM<A, E1, R1>; readonly onFalse: STM<A2, E2, R2> }
1112
+ ): STM<A | A2, E | E1 | E2, R | R1 | R2>
1138
1113
  } = stm.if_
1139
1114
 
1140
1115
  export {
@@ -1204,7 +1179,7 @@ export const isSuccess: <A, E, R>(self: STM<A, E, R>) => STM<boolean, never, R>
1204
1179
  * @since 2.0.0
1205
1180
  * @category constructors
1206
1181
  */
1207
- export const iterate: <R, E, Z>(
1182
+ export const iterate: <Z, E, R>(
1208
1183
  initial: Z,
1209
1184
  options: {
1210
1185
  readonly while: Predicate<Z>
@@ -1232,19 +1207,19 @@ export const iterate: <R, E, Z>(
1232
1207
  * @category constructors
1233
1208
  */
1234
1209
  export const loop: {
1235
- <Z, R, E, A>(
1210
+ <Z, A, E, R>(
1236
1211
  initial: Z,
1237
1212
  options: {
1238
- readonly while: Predicate<Z>
1213
+ readonly while: (z: Z) => boolean
1239
1214
  readonly step: (z: Z) => Z
1240
1215
  readonly body: (z: Z) => STM<A, E, R>
1241
1216
  readonly discard?: false | undefined
1242
1217
  }
1243
1218
  ): STM<Array<A>, E, R>
1244
- <Z, R, E, A>(
1219
+ <Z, A, E, R>(
1245
1220
  initial: Z,
1246
1221
  options: {
1247
- readonly while: Predicate<Z>
1222
+ readonly while: (z: Z) => boolean
1248
1223
  readonly step: (z: Z) => Z
1249
1224
  readonly body: (z: Z) => STM<A, E, R>
1250
1225
  readonly discard: true
@@ -1259,8 +1234,8 @@ export const loop: {
1259
1234
  * @category mapping
1260
1235
  */
1261
1236
  export const map: {
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>
1237
+ <A, B>(f: (a: A) => B): <E, R>(self: STM<A, E, R>) => STM<B, E, R>
1238
+ <A, E, R, B>(self: STM<A, E, R>, f: (a: A) => B): STM<B, E, R>
1264
1239
  } = core.map
1265
1240
 
1266
1241
  /**
@@ -1272,8 +1247,8 @@ export const map: {
1272
1247
  * @category mapping
1273
1248
  */
1274
1249
  export const mapAttempt: {
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>
1250
+ <A, B>(f: (a: A) => B): <E, R>(self: STM<A, E, R>) => STM<B, unknown, R>
1251
+ <A, E, R, B>(self: STM<A, E, R>, f: (a: A) => B): STM<B, unknown, R>
1277
1252
  } = stm.mapAttempt
1278
1253
 
1279
1254
  /**
@@ -1285,17 +1260,11 @@ export const mapAttempt: {
1285
1260
  */
1286
1261
  export const mapBoth: {
1287
1262
  <E, E2, A, A2>(
1288
- options: {
1289
- readonly onFailure: (error: E) => E2
1290
- readonly onSuccess: (value: A) => A2
1291
- }
1263
+ options: { readonly onFailure: (error: E) => E2; readonly onSuccess: (value: A) => A2 }
1292
1264
  ): <R>(self: STM<A, E, R>) => STM<A2, E2, R>
1293
- <R, E, E2, A, A2>(
1265
+ <A, E, R, E2, A2>(
1294
1266
  self: STM<A, E, R>,
1295
- options: {
1296
- readonly onFailure: (error: E) => E2
1297
- readonly onSuccess: (value: A) => A2
1298
- }
1267
+ options: { readonly onFailure: (error: E) => E2; readonly onSuccess: (value: A) => A2 }
1299
1268
  ): STM<A2, E2, R>
1300
1269
  } = stm.mapBoth
1301
1270
 
@@ -1306,8 +1275,8 @@ export const mapBoth: {
1306
1275
  * @category mapping
1307
1276
  */
1308
1277
  export const mapError: {
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>
1278
+ <E, E2>(f: (error: E) => E2): <A, R>(self: STM<A, E, R>) => STM<A, E2, R>
1279
+ <A, E, R, E2>(self: STM<A, E, R>, f: (error: E) => E2): STM<A, E2, R>
1311
1280
  } = stm.mapError
1312
1281
 
1313
1282
  /**
@@ -1326,8 +1295,8 @@ export const merge: <A, E, R>(self: STM<A, E, R>) => STM<E | A, never, R> = stm.
1326
1295
  * @category constructors
1327
1296
  */
1328
1297
  export const mergeAll: {
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>
1298
+ <A2, A>(zero: A2, f: (a2: A2, a: A) => A2): <E, R>(iterable: Iterable<STM<A, E, R>>) => STM<A2, E, R>
1299
+ <A, E, R, A2>(iterable: Iterable<STM<A, E, R>>, zero: A2, f: (a2: A2, a: A) => A2): STM<A2, E, R>
1331
1300
  } = stm.mergeAll
1332
1301
 
1333
1302
  /**
@@ -1336,7 +1305,7 @@ export const mergeAll: {
1336
1305
  * @since 2.0.0
1337
1306
  * @category mutations
1338
1307
  */
1339
- export const negate: <R, E>(self: STM<boolean, E, R>) => STM<boolean, E, R> = stm.negate
1308
+ export const negate: <E, R>(self: STM<boolean, E, R>) => STM<boolean, E, R> = stm.negate
1340
1309
 
1341
1310
  /**
1342
1311
  * Requires the option produced by this value to be `None`.
@@ -1371,8 +1340,8 @@ export const orDie: <A, E, R>(self: STM<A, E, R>) => STM<A, never, R> = stm.orDi
1371
1340
  * @category error handling
1372
1341
  */
1373
1342
  export const orDieWith: {
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>
1343
+ <E>(f: (error: E) => unknown): <A, R>(self: STM<A, E, R>) => STM<A, never, R>
1344
+ <A, E, R>(self: STM<A, E, R>, f: (error: E) => unknown): STM<A, never, R>
1376
1345
  } = stm.orDieWith
1377
1346
 
1378
1347
  /**
@@ -1383,8 +1352,8 @@ export const orDieWith: {
1383
1352
  * @category error handling
1384
1353
  */
1385
1354
  export const orElse: {
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>
1355
+ <A2, E2, R2>(that: LazyArg<STM<A2, E2, R2>>): <A, E, R>(self: STM<A, E, R>) => STM<A2 | A, E2, R2 | R>
1356
+ <A, E, R, A2, E2, R2>(self: STM<A, E, R>, that: LazyArg<STM<A2, E2, R2>>): STM<A | A2, E2, R | R2>
1388
1357
  } = stm.orElse
1389
1358
 
1390
1359
  /**
@@ -1396,8 +1365,8 @@ export const orElse: {
1396
1365
  * @category error handling
1397
1366
  */
1398
1367
  export const orElseEither: {
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>
1368
+ <A2, E2, R2>(that: LazyArg<STM<A2, E2, R2>>): <A, E, R>(self: STM<A, E, R>) => STM<Either.Either<A2, A>, E2, R2 | R>
1369
+ <A, E, R, A2, E2, R2>(self: STM<A, E, R>, that: LazyArg<STM<A2, E2, R2>>): STM<Either.Either<A2, A>, E2, R | R2>
1401
1370
  } = stm.orElseEither
1402
1371
 
1403
1372
  /**
@@ -1409,7 +1378,7 @@ export const orElseEither: {
1409
1378
  */
1410
1379
  export const orElseFail: {
1411
1380
  <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>
1381
+ <A, E, R, E2>(self: STM<A, E, R>, error: LazyArg<E2>): STM<A, E2, R>
1413
1382
  } = stm.orElseFail
1414
1383
 
1415
1384
  /**
@@ -1421,12 +1390,10 @@ export const orElseFail: {
1421
1390
  * @category error handling
1422
1391
  */
1423
1392
  export const orElseOptional: {
1424
- <R2, E2, A2>(
1393
+ <A2, E2, R2>(
1425
1394
  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>
1429
- <R, E, A, R2, E2, A2>(
1395
+ ): <A, E, R>(self: STM<A, Option.Option<E>, R>) => STM<A2 | A, Option.Option<E2 | E>, R2 | R>
1396
+ <A, E, R, A2, E2, R2>(
1430
1397
  self: STM<A, Option.Option<E>, R>,
1431
1398
  that: LazyArg<STM<A2, Option.Option<E2>, R2>>
1432
1399
  ): STM<A | A2, Option.Option<E | E2>, R | R2>
@@ -1441,7 +1408,7 @@ export const orElseOptional: {
1441
1408
  */
1442
1409
  export const orElseSucceed: {
1443
1410
  <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>
1411
+ <A, E, R, A2>(self: STM<A, E, R>, value: LazyArg<A2>): STM<A | A2, never, R>
1445
1412
  } = stm.orElseSucceed
1446
1413
 
1447
1414
  /**
@@ -1452,8 +1419,8 @@ export const orElseSucceed: {
1452
1419
  * @category error handling
1453
1420
  */
1454
1421
  export const orTry: {
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>
1422
+ <A1, E1, R1>(that: LazyArg<STM<A1, E1, R1>>): <A, E, R>(self: STM<A, E, R>) => STM<A1 | A, E1 | E, R1 | R>
1423
+ <A, E, R, A1, E1, R1>(self: STM<A, E, R>, that: LazyArg<STM<A1, E1, R1>>): STM<A | A1, E | E1, R | R1>
1457
1424
  } = core.orTry
1458
1425
 
1459
1426
  /**
@@ -1464,10 +1431,10 @@ export const orTry: {
1464
1431
  * @category traversing
1465
1432
  */
1466
1433
  export const partition: {
1467
- <R, E, A, A2>(
1434
+ <A, A2, E, R>(
1468
1435
  f: (a: A) => STM<A2, E, R>
1469
1436
  ): (elements: Iterable<A>) => STM<[excluded: Array<E>, satisfying: Array<A2>], never, R>
1470
- <R, E, A, A2>(
1437
+ <A, A2, E, R>(
1471
1438
  elements: Iterable<A>,
1472
1439
  f: (a: A) => STM<A2, E, R>
1473
1440
  ): STM<[excluded: Array<E>, satisfying: Array<A2>], never, R>
@@ -1509,7 +1476,7 @@ export const provideService: {
1509
1476
  tag: T,
1510
1477
  resource: Context.Tag.Service<T>
1511
1478
  ): <A, E, R>(self: STM<A, E, R>) => STM<A, E, Exclude<R, Context.Tag.Identifier<T>>>
1512
- <R, E, A, T extends Context.Tag<any, any>>(
1479
+ <A, E, R, T extends Context.Tag<any, any>>(
1513
1480
  self: STM<A, E, R>,
1514
1481
  tag: T,
1515
1482
  resource: Context.Tag.Service<T>
@@ -1524,11 +1491,11 @@ export const provideService: {
1524
1491
  * @category context
1525
1492
  */
1526
1493
  export const provideServiceSTM: {
1527
- <T extends Context.Tag<any, any>, R1, E1>(
1494
+ <T extends Context.Tag<any, any>, E1, R1>(
1528
1495
  tag: T,
1529
1496
  stm: STM<Context.Tag.Service<T>, E1, R1>
1530
1497
  ): <A, E, R>(self: STM<A, E, R>) => STM<A, E1 | E, R1 | Exclude<R, Context.Tag.Identifier<T>>>
1531
- <R, E, A, T extends Context.Tag<any, any>, R1, E1>(
1498
+ <A, E, R, T extends Context.Tag<any, any>, E1, R1>(
1532
1499
  self: STM<A, E, R>,
1533
1500
  tag: T,
1534
1501
  stm: STM<Context.Tag.Service<T>, E1, R1>
@@ -1543,8 +1510,8 @@ export const provideServiceSTM: {
1543
1510
  * @category constructors
1544
1511
  */
1545
1512
  export const reduce: {
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>
1513
+ <S, A, E, R>(zero: S, f: (s: S, a: A) => STM<S, E, R>): (iterable: Iterable<A>) => STM<S, E, R>
1514
+ <S, A, E, R>(iterable: Iterable<A>, zero: S, f: (s: S, a: A) => STM<S, E, R>): STM<S, E, R>
1548
1515
  } = stm.reduce
1549
1516
 
1550
1517
  /**
@@ -1554,13 +1521,11 @@ export const reduce: {
1554
1521
  * @category constructors
1555
1522
  */
1556
1523
  export const reduceAll: {
1557
- <R2, E2, A>(
1524
+ <A, E2, R2>(
1558
1525
  initial: STM<A, E2, R2>,
1559
1526
  f: (x: A, y: A) => A
1560
- ): <R, E>(
1561
- iterable: Iterable<STM<A, E, R>>
1562
- ) => STM<A, E2 | E, R2 | R>
1563
- <R, E, R2, E2, A>(
1527
+ ): <E, R>(iterable: Iterable<STM<A, E, R>>) => STM<A, E2 | E, R2 | R>
1528
+ <A, E, R, E2, R2>(
1564
1529
  iterable: Iterable<STM<A, E, R>>,
1565
1530
  initial: STM<A, E2, R2>,
1566
1531
  f: (x: A, y: A) => A
@@ -1586,8 +1551,8 @@ export const reduceRight: {
1586
1551
  * @category mutations
1587
1552
  */
1588
1553
  export const refineOrDie: {
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>
1554
+ <E, E2>(pf: (error: E) => Option.Option<E2>): <A, R>(self: STM<A, E, R>) => STM<A, E2, R>
1555
+ <A, E, R, E2>(self: STM<A, E, R>, pf: (error: E) => Option.Option<E2>): STM<A, E2, R>
1591
1556
  } = stm.refineOrDie
1592
1557
 
1593
1558
  /**
@@ -1598,8 +1563,8 @@ export const refineOrDie: {
1598
1563
  * @category mutations
1599
1564
  */
1600
1565
  export const refineOrDieWith: {
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>
1566
+ <E, E2>(pf: (error: E) => Option.Option<E2>, f: (error: E) => unknown): <A, R>(self: STM<A, E, R>) => STM<A, E2, R>
1567
+ <A, E, R, E2>(self: STM<A, E, R>, pf: (error: E) => Option.Option<E2>, f: (error: E) => unknown): STM<A, E2, R>
1603
1568
  } = stm.refineOrDieWith
1604
1569
 
1605
1570
  /**
@@ -1610,8 +1575,8 @@ export const refineOrDieWith: {
1610
1575
  * @category mutations
1611
1576
  */
1612
1577
  export const reject: {
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>
1578
+ <A, E2>(pf: (a: A) => Option.Option<E2>): <E, R>(self: STM<A, E, R>) => STM<A, E2 | E, R>
1579
+ <A, E, R, E2>(self: STM<A, E, R>, pf: (a: A) => Option.Option<E2>): STM<A, E | E2, R>
1615
1580
  } = stm.reject
1616
1581
 
1617
1582
  /**
@@ -1623,8 +1588,8 @@ export const reject: {
1623
1588
  * @category mutations
1624
1589
  */
1625
1590
  export const rejectSTM: {
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>
1591
+ <A, E2, R2>(pf: (a: A) => Option.Option<STM<E2, E2, R2>>): <E, R>(self: STM<A, E, R>) => STM<A, E2 | E, R2 | R>
1592
+ <A, E, R, E2, R2>(self: STM<A, E, R>, pf: (a: A) => Option.Option<STM<E2, E2, R2>>): STM<A, E | E2, R | R2>
1628
1593
  } = stm.rejectSTM
1629
1594
 
1630
1595
  /**
@@ -1643,7 +1608,7 @@ export const rejectSTM: {
1643
1608
  * @category mutations
1644
1609
  */
1645
1610
  export const repeatUntil: {
1646
- <A>(predicate: Predicate<A>): <R, E>(self: STM<A, E, R>) => STM<A, E, R>
1611
+ <A>(predicate: Predicate<A>): <E, R>(self: STM<A, E, R>) => STM<A, E, R>
1647
1612
  <A, E, R>(self: STM<A, E, R>, predicate: Predicate<A>): STM<A, E, R>
1648
1613
  } = stm.repeatUntil
1649
1614
 
@@ -1664,7 +1629,7 @@ export const repeatUntil: {
1664
1629
  * @category mutations
1665
1630
  */
1666
1631
  export const repeatWhile: {
1667
- <A>(predicate: Predicate<A>): <R, E>(self: STM<A, E, R>) => STM<A, E, R>
1632
+ <A>(predicate: Predicate<A>): <E, R>(self: STM<A, E, R>) => STM<A, E, R>
1668
1633
  <A, E, R>(self: STM<A, E, R>, predicate: Predicate<A>): STM<A, E, R>
1669
1634
  } = stm.repeatWhile
1670
1635
 
@@ -1721,9 +1686,9 @@ export const retry: STM<never> = core.retry
1721
1686
  * @category mutations
1722
1687
  */
1723
1688
  export const retryUntil: {
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>
1689
+ <A, B extends A>(refinement: Refinement<NoInfer<A>, B>): <E, R>(self: STM<A, E, R>) => STM<B, E, R>
1690
+ <A>(predicate: Predicate<A>): <E, R>(self: STM<A, E, R>) => STM<A, E, R>
1691
+ <A, E, R, B extends A>(self: STM<A, E, R>, refinement: Refinement<A, B>): STM<B, E, R>
1727
1692
  <A, E, R>(self: STM<A, E, R>, predicate: Predicate<A>): STM<A, E, R>
1728
1693
  } = stm.retryUntil
1729
1694
 
@@ -1735,7 +1700,7 @@ export const retryUntil: {
1735
1700
  * @category mutations
1736
1701
  */
1737
1702
  export const retryWhile: {
1738
- <A>(predicate: Predicate<A>): <R, E>(self: STM<A, E, R>) => STM<A, E, R>
1703
+ <A>(predicate: Predicate<A>): <E, R>(self: STM<A, E, R>) => STM<A, E, R>
1739
1704
  <A, E, R>(self: STM<A, E, R>, predicate: Predicate<A>): STM<A, E, R>
1740
1705
  } = stm.retryWhile
1741
1706
 
@@ -1780,13 +1745,11 @@ export const succeedSome: <A>(value: A) => STM<Option.Option<A>> = stm.succeedSo
1780
1745
  * @category mutations
1781
1746
  */
1782
1747
  export const summarized: {
1783
- <R2, E2, A2, A3>(
1748
+ <A2, E2, R2, A3>(
1784
1749
  summary: STM<A2, E2, R2>,
1785
1750
  f: (before: A2, after: A2) => A3
1786
- ): <A, E, R>(
1787
- self: STM<A, E, R>
1788
- ) => STM<[A3, A], E2 | E, R2 | R>
1789
- <R, E, A, R2, E2, A2, A3>(
1751
+ ): <A, E, R>(self: STM<A, E, R>) => STM<[A3, A], E2 | E, R2 | R>
1752
+ <A, E, R, A2, E2, R2, A3>(
1790
1753
  self: STM<A, E, R>,
1791
1754
  summary: STM<A2, E2, R2>,
1792
1755
  f: (before: A2, after: A2) => A3
@@ -1817,8 +1780,8 @@ export const sync: <A>(evaluate: () => A) => STM<A> = core.sync
1817
1780
  * @category sequencing
1818
1781
  */
1819
1782
  export const tap: {
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>
1783
+ <A, X, E2, R2>(f: (a: A) => STM<X, E2, R2>): <E, R>(self: STM<A, E, R>) => STM<A, E2 | E, R2 | R>
1784
+ <A, E, R, X, E2, R2>(self: STM<A, E, R>, f: (a: A) => STM<X, E2, R2>): STM<A, E | E2, R | R2>
1822
1785
  } = stm.tap
1823
1786
 
1824
1787
  /**
@@ -1828,18 +1791,12 @@ export const tap: {
1828
1791
  * @category sequencing
1829
1792
  */
1830
1793
  export const tapBoth: {
1831
- <E, XE extends E, R2, E2, A2, A, XA extends A, R3, E3, A3>(
1832
- options: {
1833
- readonly onFailure: (error: XE) => STM<A2, E2, R2>
1834
- readonly onSuccess: (value: XA) => STM<A3, E3, R3>
1835
- }
1794
+ <XE extends E, A2, E2, R2, XA extends A, A3, E3, R3, A, E>(
1795
+ options: { readonly onFailure: (error: XE) => STM<A2, E2, R2>; readonly onSuccess: (value: XA) => STM<A3, E3, R3> }
1836
1796
  ): <R>(self: STM<A, E, R>) => STM<A, E | E2 | E3, R2 | R3 | R>
1837
- <R, E, XE extends E, R2, E2, A2, A, XA extends A, R3, E3, A3>(
1797
+ <A, E, R, XE extends E, A2, E2, R2, XA extends A, A3, E3, R3>(
1838
1798
  self: STM<A, E, R>,
1839
- options: {
1840
- readonly onFailure: (error: XE) => STM<A2, E2, R2>
1841
- readonly onSuccess: (value: XA) => STM<A3, E3, R3>
1842
- }
1799
+ options: { readonly onFailure: (error: XE) => STM<A2, E2, R2>; readonly onSuccess: (value: XA) => STM<A3, E3, R3> }
1843
1800
  ): STM<A, E | E2 | E3, R | R2 | R3>
1844
1801
  } = stm.tapBoth
1845
1802
 
@@ -1850,8 +1807,8 @@ export const tapBoth: {
1850
1807
  * @category sequencing
1851
1808
  */
1852
1809
  export const tapError: {
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>
1810
+ <E, X, E2, R2>(f: (error: NoInfer<E>) => STM<X, E2, R2>): <A, R>(self: STM<A, E, R>) => STM<A, E | E2, R2 | R>
1811
+ <A, E, R, X, E2, R2>(self: STM<A, E, R>, f: (error: E) => STM<X, E2, R2>): STM<A, E | E2, R | R2>
1855
1812
  } = stm.tapError
1856
1813
 
1857
1814
  const try_: {
@@ -1861,6 +1818,7 @@ const try_: {
1861
1818
  }): STM<A, E>
1862
1819
  <A>(try_: LazyArg<A>): STM<A, unknown>
1863
1820
  } = stm.try_
1821
+
1864
1822
  export {
1865
1823
  /**
1866
1824
  * Imports a synchronous side-effect into a pure value, translating any thrown
@@ -1890,8 +1848,8 @@ export const unless: {
1890
1848
  * @category mutations
1891
1849
  */
1892
1850
  export const unlessSTM: {
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>
1851
+ <E2, R2>(predicate: STM<boolean, E2, R2>): <A, E, R>(self: STM<A, E, R>) => STM<Option.Option<A>, E2 | E, R2 | R>
1852
+ <A, E, R, E2, R2>(self: STM<A, E, R>, predicate: STM<boolean, E2, R2>): STM<Option.Option<A>, E | E2, R | R2>
1895
1853
  } = stm.unlessSTM
1896
1854
 
1897
1855
  /**
@@ -1921,8 +1879,8 @@ export const unit: STM<void> = stm.unit
1921
1879
  * @category mutations
1922
1880
  */
1923
1881
  export const validateAll: {
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>
1882
+ <A, B, E, R>(f: (a: A) => STM<B, E, R>): (elements: Iterable<A>) => STM<Array<B>, [E, ...Array<E>], R>
1883
+ <A, B, E, R>(elements: Iterable<A>, f: (a: A) => STM<B, E, R>): STM<Array<B>, [E, ...Array<E>], R>
1926
1884
  } = stm.validateAll
1927
1885
 
1928
1886
  /**
@@ -1933,8 +1891,8 @@ export const validateAll: {
1933
1891
  * @category mutations
1934
1892
  */
1935
1893
  export const validateFirst: {
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>
1894
+ <A, B, E, R>(f: (a: A) => STM<B, E, R>): (elements: Iterable<A>) => STM<B, Array<E>, R>
1895
+ <A, B, E, R>(elements: Iterable<A>, f: (a: A) => STM<B, E, R>): STM<B, Array<E>, R>
1938
1896
  } = stm.validateFirst
1939
1897
 
1940
1898
  /**
@@ -1955,8 +1913,8 @@ export const when: {
1955
1913
  * @category mutations
1956
1914
  */
1957
1915
  export const whenSTM: {
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>
1916
+ <E2, R2>(predicate: STM<boolean, E2, R2>): <A, E, R>(self: STM<A, E, R>) => STM<Option.Option<A>, E2 | E, R2 | R>
1917
+ <A, E, R, E2, R2>(self: STM<A, E, R>, predicate: STM<boolean, E2, R2>): STM<Option.Option<A>, E | E2, R | R2>
1960
1918
  } = stm.whenSTM
1961
1919
 
1962
1920
  /**
@@ -1966,8 +1924,8 @@ export const whenSTM: {
1966
1924
  * @category zipping
1967
1925
  */
1968
1926
  export const zip: {
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>
1927
+ <A1, E1, R1>(that: STM<A1, E1, R1>): <A, E, R>(self: STM<A, E, R>) => STM<[A, A1], E1 | E, R1 | R>
1928
+ <A, E, R, A1, E1, R1>(self: STM<A, E, R>, that: STM<A1, E1, R1>): STM<[A, A1], E | E1, R | R1>
1971
1929
  } = core.zip
1972
1930
 
1973
1931
  /**
@@ -1978,8 +1936,8 @@ export const zip: {
1978
1936
  * @category zipping
1979
1937
  */
1980
1938
  export const zipLeft: {
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>
1939
+ <A1, E1, R1>(that: STM<A1, E1, R1>): <A, E, R>(self: STM<A, E, R>) => STM<A, E1 | E, R1 | R>
1940
+ <A, E, R, A1, E1, R1>(self: STM<A, E, R>, that: STM<A1, E1, R1>): STM<A, E | E1, R | R1>
1983
1941
  } = core.zipLeft
1984
1942
 
1985
1943
  /**
@@ -1990,8 +1948,8 @@ export const zipLeft: {
1990
1948
  * @category zipping
1991
1949
  */
1992
1950
  export const zipRight: {
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>
1951
+ <A1, E1, R1>(that: STM<A1, E1, R1>): <A, E, R>(self: STM<A, E, R>) => STM<A1, E1 | E, R1 | R>
1952
+ <A, E, R, A1, E1, R1>(self: STM<A, E, R>, that: STM<A1, E1, R1>): STM<A1, E | E1, R | R1>
1995
1953
  } = core.zipRight
1996
1954
 
1997
1955
  /**
@@ -2002,17 +1960,11 @@ export const zipRight: {
2002
1960
  * @category zipping
2003
1961
  */
2004
1962
  export const zipWith: {
2005
- <R1, E1, A1, A, A2>(
1963
+ <A1, E1, R1, A, A2>(
2006
1964
  that: STM<A1, E1, R1>,
2007
1965
  f: (a: A, b: A1) => A2
2008
- ): <R, E>(
2009
- self: STM<A, E, R>
2010
- ) => STM<A2, E1 | E, R1 | R>
2011
- <R, E, R1, E1, A1, A, A2>(
2012
- self: STM<A, E, R>,
2013
- that: STM<A1, E1, R1>,
2014
- f: (a: A, b: A1) => A2
2015
- ): STM<A2, E | E1, R | R1>
1966
+ ): <E, R>(self: STM<A, E, R>) => STM<A2, E1 | E, R1 | R>
1967
+ <A, E, R, A1, E1, R1, A2>(self: STM<A, E, R>, that: STM<A1, E1, R1>, f: (a: A, b: A1) => A2): STM<A2, E | E1, R | R1>
2016
1968
  } = core.zipWith
2017
1969
 
2018
1970
  /**
@@ -2058,28 +2010,29 @@ export const Do: STM<{}> = succeed({})
2058
2010
  * @since 2.0.0
2059
2011
  */
2060
2012
  export const bind: {
2061
- <N extends string, K, R2, E2, A>(
2013
+ <N extends string, K, A, E2, R2>(
2062
2014
  tag: Exclude<N, keyof K>,
2063
2015
  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>
2065
- <R, E, N extends string, K, R2, E2, A>(
2016
+ ): <E, R>(self: STM<K, E, R>) => STM<MergeRecord<K, { [k in N]: A }>, E2 | E, R2 | R>
2017
+ <K, E, R, N extends string, A, E2, R2>(
2066
2018
  self: STM<K, E, R>,
2067
2019
  tag: Exclude<N, keyof K>,
2068
2020
  f: (_: K) => STM<A, E2, R2>
2069
- ): STM<Effect.MergeRecord<K, { [k in N]: A }>, E | E2, R | R2>
2021
+ ): STM<MergeRecord<K, { [k in N]: A }>, E | E2, R | R2>
2070
2022
  } = stm.bind
2071
2023
 
2072
2024
  const let_: {
2073
2025
  <N extends string, K, A>(
2074
2026
  tag: Exclude<N, keyof K>,
2075
2027
  f: (_: K) => A
2076
- ): <R, E>(self: STM<K, E, R>) => STM<Effect.MergeRecord<K, { [k in N]: A }>, E, R>
2077
- <R, E, K, N extends string, A>(
2028
+ ): <E, R>(self: STM<K, E, R>) => STM<MergeRecord<K, { [k in N]: A }>, E, R>
2029
+ <K, E, R, N extends string, A>(
2078
2030
  self: STM<K, E, R>,
2079
2031
  tag: Exclude<N, keyof K>,
2080
2032
  f: (_: K) => A
2081
- ): STM<Effect.MergeRecord<K, { [k in N]: A }>, E, R>
2033
+ ): STM<MergeRecord<K, { [k in N]: A }>, E, R>
2082
2034
  } = stm.let_
2035
+
2083
2036
  export {
2084
2037
  /**
2085
2038
  * @category do notation
@@ -2094,5 +2047,5 @@ export {
2094
2047
  */
2095
2048
  export const bindTo: {
2096
2049
  <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>
2050
+ <A, E, R, N extends string>(self: STM<A, E, R>, tag: N): STM<Record<N, A>, E, R>
2098
2051
  } = stm.bindTo