effect 2.3.8 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) 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 +48 -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/Predicate.js +40 -3
  13. package/dist/cjs/Predicate.js.map +1 -1
  14. package/dist/cjs/ReadonlyArray.js +2 -2
  15. package/dist/cjs/ReadonlyArray.js.map +1 -1
  16. package/dist/cjs/ReadonlyRecord.js +71 -76
  17. package/dist/cjs/ReadonlyRecord.js.map +1 -1
  18. package/dist/cjs/STM.js.map +1 -1
  19. package/dist/cjs/Schedule.js.map +1 -1
  20. package/dist/cjs/Sink.js.map +1 -1
  21. package/dist/cjs/Stream.js +3 -23
  22. package/dist/cjs/Stream.js.map +1 -1
  23. package/dist/cjs/Struct.js +3 -1
  24. package/dist/cjs/Struct.js.map +1 -1
  25. package/dist/cjs/TestAnnotation.js.map +1 -1
  26. package/dist/cjs/internal/channel/channelExecutor.js +5 -5
  27. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  28. package/dist/cjs/internal/channel/channelState.js +5 -5
  29. package/dist/cjs/internal/channel/channelState.js.map +1 -1
  30. package/dist/cjs/internal/channel.js.map +1 -1
  31. package/dist/cjs/internal/clock.js +3 -4
  32. package/dist/cjs/internal/clock.js.map +1 -1
  33. package/dist/cjs/internal/core-effect.js +6 -23
  34. package/dist/cjs/internal/core-effect.js.map +1 -1
  35. package/dist/cjs/internal/core.js +11 -27
  36. package/dist/cjs/internal/core.js.map +1 -1
  37. package/dist/cjs/internal/effect/circular.js +4 -5
  38. package/dist/cjs/internal/effect/circular.js.map +1 -1
  39. package/dist/cjs/internal/either.js +3 -3
  40. package/dist/cjs/internal/either.js.map +1 -1
  41. package/dist/cjs/internal/groupBy.js.map +1 -1
  42. package/dist/cjs/internal/layer.js +0 -2
  43. package/dist/cjs/internal/layer.js.map +1 -1
  44. package/dist/cjs/internal/runtime.js +12 -1
  45. package/dist/cjs/internal/runtime.js.map +1 -1
  46. package/dist/cjs/internal/schedule.js +4 -4
  47. package/dist/cjs/internal/schedule.js.map +1 -1
  48. package/dist/cjs/internal/sink.js +0 -2
  49. package/dist/cjs/internal/sink.js.map +1 -1
  50. package/dist/cjs/internal/stm/stm.js +1 -0
  51. package/dist/cjs/internal/stm/stm.js.map +1 -1
  52. package/dist/cjs/internal/stream.js +51 -64
  53. package/dist/cjs/internal/stream.js.map +1 -1
  54. package/dist/cjs/internal/version.js +1 -1
  55. package/dist/dts/BigInt.d.ts +7 -0
  56. package/dist/dts/BigInt.d.ts.map +1 -1
  57. package/dist/dts/Brand.d.ts +1 -1
  58. package/dist/dts/Brand.d.ts.map +1 -1
  59. package/dist/dts/Cause.d.ts +1 -1
  60. package/dist/dts/Cause.d.ts.map +1 -1
  61. package/dist/dts/Channel.d.ts +11 -11
  62. package/dist/dts/Channel.d.ts.map +1 -1
  63. package/dist/dts/Chunk.d.ts +3 -3
  64. package/dist/dts/Config.d.ts +4 -4
  65. package/dist/dts/Config.d.ts.map +1 -1
  66. package/dist/dts/Cron.d.ts +1 -1
  67. package/dist/dts/Cron.d.ts.map +1 -1
  68. package/dist/dts/Differ.d.ts +2 -2
  69. package/dist/dts/Differ.d.ts.map +1 -1
  70. package/dist/dts/Effect.d.ts +84 -108
  71. package/dist/dts/Effect.d.ts.map +1 -1
  72. package/dist/dts/Either.d.ts +126 -83
  73. package/dist/dts/Either.d.ts.map +1 -1
  74. package/dist/dts/Encoding.d.ts +6 -6
  75. package/dist/dts/Encoding.d.ts.map +1 -1
  76. package/dist/dts/Equal.d.ts.map +1 -1
  77. package/dist/dts/Exit.d.ts +2 -2
  78. package/dist/dts/Fiber.d.ts +2 -2
  79. package/dist/dts/Fiber.d.ts.map +1 -1
  80. package/dist/dts/GroupBy.d.ts +12 -12
  81. package/dist/dts/GroupBy.d.ts.map +1 -1
  82. package/dist/dts/Layer.d.ts +26 -26
  83. package/dist/dts/Layer.d.ts.map +1 -1
  84. package/dist/dts/List.d.ts +2 -2
  85. package/dist/dts/Logger.d.ts +4 -4
  86. package/dist/dts/Match.d.ts +2 -2
  87. package/dist/dts/Match.d.ts.map +1 -1
  88. package/dist/dts/MergeDecision.d.ts +1 -1
  89. package/dist/dts/MergeState.d.ts +5 -5
  90. package/dist/dts/MergeState.d.ts.map +1 -1
  91. package/dist/dts/Metric.d.ts +13 -13
  92. package/dist/dts/Metric.d.ts.map +1 -1
  93. package/dist/dts/MetricPolling.d.ts +4 -4
  94. package/dist/dts/MetricPolling.d.ts.map +1 -1
  95. package/dist/dts/Number.d.ts +8 -0
  96. package/dist/dts/Number.d.ts.map +1 -1
  97. package/dist/dts/Option.d.ts +11 -11
  98. package/dist/dts/Predicate.d.ts +37 -2
  99. package/dist/dts/Predicate.d.ts.map +1 -1
  100. package/dist/dts/ReadonlyArray.d.ts +9 -8
  101. package/dist/dts/ReadonlyArray.d.ts.map +1 -1
  102. package/dist/dts/ReadonlyRecord.d.ts +111 -94
  103. package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
  104. package/dist/dts/Reloadable.d.ts +4 -4
  105. package/dist/dts/Reloadable.d.ts.map +1 -1
  106. package/dist/dts/RequestResolver.d.ts +13 -13
  107. package/dist/dts/RequestResolver.d.ts.map +1 -1
  108. package/dist/dts/Resource.d.ts +1 -1
  109. package/dist/dts/Resource.d.ts.map +1 -1
  110. package/dist/dts/STM.d.ts +144 -139
  111. package/dist/dts/STM.d.ts.map +1 -1
  112. package/dist/dts/Schedule.d.ts +171 -179
  113. package/dist/dts/Schedule.d.ts.map +1 -1
  114. package/dist/dts/SingleProducerAsyncInput.d.ts +1 -1
  115. package/dist/dts/SingleProducerAsyncInput.d.ts.map +1 -1
  116. package/dist/dts/Sink.d.ts +13 -13
  117. package/dist/dts/Sink.d.ts.map +1 -1
  118. package/dist/dts/Stream.d.ts +355 -366
  119. package/dist/dts/Stream.d.ts.map +1 -1
  120. package/dist/dts/Struct.d.ts +3 -3
  121. package/dist/dts/Struct.d.ts.map +1 -1
  122. package/dist/dts/SubscriptionRef.d.ts +2 -2
  123. package/dist/dts/TArray.d.ts +2 -2
  124. package/dist/dts/TDeferred.d.ts +3 -3
  125. package/dist/dts/TMap.d.ts +10 -10
  126. package/dist/dts/TSet.d.ts +4 -4
  127. package/dist/dts/Take.d.ts +2 -2
  128. package/dist/dts/TestAnnotation.d.ts +2 -2
  129. package/dist/dts/TestAnnotation.d.ts.map +1 -1
  130. package/dist/dts/Types.d.ts +7 -0
  131. package/dist/dts/Types.d.ts.map +1 -1
  132. package/dist/dts/internal/stm/stm.d.ts +2 -15
  133. package/dist/dts/internal/stm/stm.d.ts.map +1 -1
  134. package/dist/esm/BigInt.js +12 -0
  135. package/dist/esm/BigInt.js.map +1 -1
  136. package/dist/esm/Effect.js +45 -58
  137. package/dist/esm/Effect.js.map +1 -1
  138. package/dist/esm/Either.js +42 -5
  139. package/dist/esm/Either.js.map +1 -1
  140. package/dist/esm/Equal.js +1 -1
  141. package/dist/esm/Equal.js.map +1 -1
  142. package/dist/esm/Exit.js +1 -1
  143. package/dist/esm/Number.js +23 -0
  144. package/dist/esm/Number.js.map +1 -1
  145. package/dist/esm/Predicate.js +37 -2
  146. package/dist/esm/Predicate.js.map +1 -1
  147. package/dist/esm/ReadonlyArray.js +2 -2
  148. package/dist/esm/ReadonlyArray.js.map +1 -1
  149. package/dist/esm/ReadonlyRecord.js +70 -75
  150. package/dist/esm/ReadonlyRecord.js.map +1 -1
  151. package/dist/esm/STM.js.map +1 -1
  152. package/dist/esm/Schedule.js.map +1 -1
  153. package/dist/esm/Sink.js.map +1 -1
  154. package/dist/esm/Stream.js +5 -22
  155. package/dist/esm/Stream.js.map +1 -1
  156. package/dist/esm/Struct.js +3 -1
  157. package/dist/esm/Struct.js.map +1 -1
  158. package/dist/esm/TestAnnotation.js.map +1 -1
  159. package/dist/esm/internal/channel/channelExecutor.js +5 -5
  160. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  161. package/dist/esm/internal/channel/channelState.js +3 -3
  162. package/dist/esm/internal/channel/channelState.js.map +1 -1
  163. package/dist/esm/internal/channel.js.map +1 -1
  164. package/dist/esm/internal/clock.js +3 -4
  165. package/dist/esm/internal/clock.js.map +1 -1
  166. package/dist/esm/internal/core-effect.js +4 -20
  167. package/dist/esm/internal/core-effect.js.map +1 -1
  168. package/dist/esm/internal/core.js +8 -22
  169. package/dist/esm/internal/core.js.map +1 -1
  170. package/dist/esm/internal/effect/circular.js +4 -5
  171. package/dist/esm/internal/effect/circular.js.map +1 -1
  172. package/dist/esm/internal/either.js +3 -3
  173. package/dist/esm/internal/either.js.map +1 -1
  174. package/dist/esm/internal/groupBy.js.map +1 -1
  175. package/dist/esm/internal/layer.js +0 -2
  176. package/dist/esm/internal/layer.js.map +1 -1
  177. package/dist/esm/internal/runtime.js +12 -1
  178. package/dist/esm/internal/runtime.js.map +1 -1
  179. package/dist/esm/internal/schedule.js +4 -4
  180. package/dist/esm/internal/schedule.js.map +1 -1
  181. package/dist/esm/internal/sink.js +0 -2
  182. package/dist/esm/internal/sink.js.map +1 -1
  183. package/dist/esm/internal/stm/stm.js +1 -0
  184. package/dist/esm/internal/stm/stm.js.map +1 -1
  185. package/dist/esm/internal/stream.js +49 -59
  186. package/dist/esm/internal/stream.js.map +1 -1
  187. package/dist/esm/internal/version.js +1 -1
  188. package/package.json +1 -1
  189. package/src/BigInt.ts +13 -0
  190. package/src/Brand.ts +4 -4
  191. package/src/Cause.ts +1 -1
  192. package/src/Channel.ts +17 -17
  193. package/src/Chunk.ts +4 -4
  194. package/src/Config.ts +4 -4
  195. package/src/Cron.ts +2 -2
  196. package/src/Differ.ts +2 -2
  197. package/src/Effect.ts +100 -145
  198. package/src/Either.ts +215 -133
  199. package/src/Encoding.ts +3 -3
  200. package/src/Equal.ts +1 -1
  201. package/src/Exit.ts +2 -2
  202. package/src/Fiber.ts +2 -2
  203. package/src/GroupBy.ts +16 -16
  204. package/src/Layer.ts +32 -32
  205. package/src/List.ts +3 -3
  206. package/src/Logger.ts +4 -4
  207. package/src/Match.ts +3 -3
  208. package/src/MergeDecision.ts +1 -1
  209. package/src/MergeState.ts +8 -8
  210. package/src/Metric.ts +13 -13
  211. package/src/MetricPolling.ts +9 -9
  212. package/src/Number.ts +26 -0
  213. package/src/Option.ts +17 -17
  214. package/src/Predicate.ts +39 -2
  215. package/src/ReadonlyArray.ts +23 -15
  216. package/src/ReadonlyRecord.ts +421 -265
  217. package/src/Reloadable.ts +4 -4
  218. package/src/RequestResolver.ts +19 -19
  219. package/src/Resource.ts +3 -3
  220. package/src/STM.ts +166 -213
  221. package/src/Schedule.ts +331 -361
  222. package/src/SingleProducerAsyncInput.ts +1 -1
  223. package/src/Sink.ts +19 -19
  224. package/src/Stream.ts +449 -456
  225. package/src/Struct.ts +8 -5
  226. package/src/SubscriptionRef.ts +2 -2
  227. package/src/TArray.ts +2 -2
  228. package/src/TDeferred.ts +4 -4
  229. package/src/TMap.ts +10 -10
  230. package/src/TSet.ts +4 -4
  231. package/src/Take.ts +4 -4
  232. package/src/TestAnnotation.ts +5 -8
  233. package/src/Types.ts +11 -0
  234. package/src/internal/blockedRequests.ts +2 -2
  235. package/src/internal/cause.ts +2 -2
  236. package/src/internal/channel/channelExecutor.ts +26 -26
  237. package/src/internal/channel/channelState.ts +13 -13
  238. package/src/internal/channel/mergeDecision.ts +1 -1
  239. package/src/internal/channel/mergeState.ts +6 -6
  240. package/src/internal/channel/singleProducerAsyncInput.ts +5 -5
  241. package/src/internal/channel.ts +43 -43
  242. package/src/internal/clock.ts +3 -4
  243. package/src/internal/config.ts +7 -7
  244. package/src/internal/configError.ts +1 -1
  245. package/src/internal/configProvider/pathPatch.ts +2 -2
  246. package/src/internal/configProvider.ts +1 -1
  247. package/src/internal/core-effect.ts +28 -43
  248. package/src/internal/core.ts +15 -40
  249. package/src/internal/dataSource.ts +26 -26
  250. package/src/internal/differ/orPatch.ts +7 -7
  251. package/src/internal/differ.ts +2 -2
  252. package/src/internal/effect/circular.ts +9 -10
  253. package/src/internal/either.ts +25 -22
  254. package/src/internal/encoding/base64.ts +1 -1
  255. package/src/internal/encoding/base64Url.ts +1 -1
  256. package/src/internal/encoding/hex.ts +1 -1
  257. package/src/internal/fiber.ts +2 -2
  258. package/src/internal/fiberRuntime.ts +9 -9
  259. package/src/internal/groupBy.ts +40 -40
  260. package/src/internal/layer/circular.ts +4 -4
  261. package/src/internal/layer.ts +52 -54
  262. package/src/internal/matcher.ts +5 -5
  263. package/src/internal/metric/polling.ts +8 -8
  264. package/src/internal/metric.ts +6 -6
  265. package/src/internal/reloadable.ts +4 -4
  266. package/src/internal/resource.ts +2 -2
  267. package/src/internal/runtime.ts +32 -19
  268. package/src/internal/schedule.ts +430 -500
  269. package/src/internal/sink.ts +27 -29
  270. package/src/internal/stm/core.ts +23 -23
  271. package/src/internal/stm/stm.ts +158 -157
  272. package/src/internal/stm/tArray.ts +3 -3
  273. package/src/internal/stm/tDeferred.ts +5 -5
  274. package/src/internal/stm/tMap.ts +13 -13
  275. package/src/internal/stm/tSet.ts +4 -4
  276. package/src/internal/stream.ts +688 -723
  277. package/src/internal/subscriptionRef.ts +3 -3
  278. package/src/internal/take.ts +6 -6
  279. package/src/internal/version.ts +1 -1
package/src/Struct.ts CHANGED
@@ -23,12 +23,14 @@ import type { MatchRecord, Simplify } from "./Types.js"
23
23
  export const pick = <Keys extends Array<PropertyKey>>(
24
24
  ...keys: Keys
25
25
  ) =>
26
- <S extends Record<Keys[number], any>>(
26
+ <S extends { [K in Keys[number]]?: any }>(
27
27
  s: S
28
- ): MatchRecord<S, { [K in Keys[number]]: S[K] | undefined }, { [K in Keys[number]]: S[K] }> => {
28
+ ): MatchRecord<S, { [K in Keys[number]]?: S[K] }, Simplify<Pick<S, Keys[number]>>> => {
29
29
  const out: any = {}
30
30
  for (const k of keys) {
31
- out[k] = (s as any)[k]
31
+ if (k in s) {
32
+ out[k] = (s as any)[k]
33
+ }
32
34
  }
33
35
  return out
34
36
  }
@@ -47,7 +49,7 @@ export const pick = <Keys extends Array<PropertyKey>>(
47
49
  export const omit = <Keys extends Array<PropertyKey>>(
48
50
  ...keys: Keys
49
51
  ) =>
50
- <S extends Record<Keys[number], any>>(s: S): Simplify<Omit<S, Keys[number]>> => {
52
+ <S extends { [K in Keys[number]]?: any }>(s: S): Simplify<Omit<S, Keys[number]>> => {
51
53
  const out: any = { ...s }
52
54
  for (const k of keys) {
53
55
  delete out[k]
@@ -167,4 +169,5 @@ export const evolve: {
167
169
  * @since 2.0.0
168
170
  */
169
171
  export const get =
170
- <K extends PropertyKey>(key: K) => <S extends Record<K, any>>(s: S): MatchRecord<S, S[K] | undefined, S[K]> => s[key]
172
+ <K extends PropertyKey>(key: K) => <S extends { [P in K]?: any }>(s: S): MatchRecord<S, S[K] | undefined, S[K]> =>
173
+ s[key]
@@ -139,8 +139,8 @@ export const modify: {
139
139
  * @category utils
140
140
  */
141
141
  export const modifyEffect: {
142
- <A, R, E, B>(f: (a: A) => Effect.Effect<readonly [B, A], E, R>): (self: SubscriptionRef<A>) => Effect.Effect<B, E, R>
143
- <A, R, E, B>(self: SubscriptionRef<A>, f: (a: A) => Effect.Effect<readonly [B, A], E, R>): Effect.Effect<B, E, R>
142
+ <B, A, E, R>(f: (a: A) => Effect.Effect<readonly [B, A], E, R>): (self: SubscriptionRef<A>) => Effect.Effect<B, E, R>
143
+ <A, B, E, R>(self: SubscriptionRef<A>, f: (a: A) => Effect.Effect<readonly [B, A], E, R>): Effect.Effect<B, E, R>
144
144
  } = internal.modifyEffect
145
145
 
146
146
  /**
package/src/TArray.ts CHANGED
@@ -70,8 +70,8 @@ export const collectFirst: {
70
70
  * @category elements
71
71
  */
72
72
  export const collectFirstSTM: {
73
- <A, R, E, B>(pf: (a: A) => Option.Option<STM.STM<B, E, R>>): (self: TArray<A>) => STM.STM<Option.Option<B>, E, R>
74
- <A, R, E, B>(self: TArray<A>, pf: (a: A) => Option.Option<STM.STM<B, E, R>>): STM.STM<Option.Option<B>, E, R>
73
+ <A, B, E, R>(pf: (a: A) => Option.Option<STM.STM<B, E, R>>): (self: TArray<A>) => STM.STM<Option.Option<B>, E, R>
74
+ <A, B, E, R>(self: TArray<A>, pf: (a: A) => Option.Option<STM.STM<B, E, R>>): STM.STM<Option.Option<B>, E, R>
75
75
  } = internal.collectFirstSTM
76
76
 
77
77
  /**
package/src/TDeferred.ts CHANGED
@@ -31,7 +31,7 @@ export interface TDeferred<in out A, in out E = never> extends TDeferred.Varianc
31
31
  */
32
32
  export interface TDeferred<in out A, in out E> {
33
33
  /** @internal */
34
- readonly ref: TRef.TRef<Option.Option<Either.Either<E, A>>>
34
+ readonly ref: TRef.TRef<Option.Option<Either.Either<A, E>>>
35
35
  }
36
36
 
37
37
  /**
@@ -65,8 +65,8 @@ export {
65
65
  * @category mutations
66
66
  */
67
67
  export const done: {
68
- <E, A>(either: Either.Either<E, A>): (self: TDeferred<A, E>) => STM.STM<boolean>
69
- <A, E>(self: TDeferred<A, E>, either: Either.Either<E, A>): STM.STM<boolean>
68
+ <A, E>(either: Either.Either<A, E>): (self: TDeferred<A, E>) => STM.STM<boolean>
69
+ <A, E>(self: TDeferred<A, E>, either: Either.Either<A, E>): STM.STM<boolean>
70
70
  } = internal.done
71
71
 
72
72
  /**
@@ -88,7 +88,7 @@ export const make: <A, E = never>() => STM.STM<TDeferred<A, E>> = internal.make
88
88
  * @since 2.0.0
89
89
  * @category getters
90
90
  */
91
- export const poll: <A, E>(self: TDeferred<A, E>) => STM.STM<Option.Option<Either.Either<E, A>>> = internal.poll
91
+ export const poll: <A, E>(self: TDeferred<A, E>) => STM.STM<Option.Option<Either.Either<A, E>>> = internal.poll
92
92
 
93
93
  /**
94
94
  * @since 2.0.0
package/src/TMap.ts CHANGED
@@ -86,10 +86,10 @@ export const find: {
86
86
  * @category elements
87
87
  */
88
88
  export const findSTM: {
89
- <K, V, R, E, A>(
89
+ <K, V, A, E, R>(
90
90
  f: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>
91
91
  ): (self: TMap<K, V>) => STM.STM<Option.Option<A>, E, R>
92
- <K, V, R, E, A>(
92
+ <K, V, A, E, R>(
93
93
  self: TMap<K, V>,
94
94
  f: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>
95
95
  ): STM.STM<Option.Option<A>, E, R>
@@ -115,10 +115,10 @@ export const findAll: {
115
115
  * @category elements
116
116
  */
117
117
  export const findAllSTM: {
118
- <K, V, R, E, A>(
118
+ <K, V, A, E, R>(
119
119
  pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>
120
120
  ): (self: TMap<K, V>) => STM.STM<Array<A>, E, R>
121
- <K, V, R, E, A>(self: TMap<K, V>, pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>): STM.STM<Array<A>, E, R>
121
+ <K, V, A, E, R>(self: TMap<K, V>, pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>): STM.STM<Array<A>, E, R>
122
122
  } = internal.findAllSTM
123
123
 
124
124
  /**
@@ -128,8 +128,8 @@ export const findAllSTM: {
128
128
  * @category elements
129
129
  */
130
130
  export const forEach: {
131
- <K, V, R, E, _>(f: (key: K, value: V) => STM.STM<_, E, R>): (self: TMap<K, V>) => STM.STM<void, E, R>
132
- <K, V, R, E, _>(self: TMap<K, V>, f: (key: K, value: V) => STM.STM<_, E, R>): STM.STM<void, E, R>
131
+ <K, V, X, E, R>(f: (key: K, value: V) => STM.STM<X, E, R>): (self: TMap<K, V>) => STM.STM<void, E, R>
132
+ <K, V, X, E, R>(self: TMap<K, V>, f: (key: K, value: V) => STM.STM<X, E, R>): STM.STM<void, E, R>
133
133
  } = internal.forEach
134
134
 
135
135
  /**
@@ -377,8 +377,8 @@ export const takeFirst: {
377
377
  * @category mutations
378
378
  */
379
379
  export const takeFirstSTM: {
380
- <K, V, R, E, A>(pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>): (self: TMap<K, V>) => STM.STM<A, E, R>
381
- <K, V, R, E, A>(self: TMap<K, V>, pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>): STM.STM<A, E, R>
380
+ <K, V, A, E, R>(pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>): (self: TMap<K, V>) => STM.STM<A, E, R>
381
+ <K, V, A, E, R>(self: TMap<K, V>, pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>): STM.STM<A, E, R>
382
382
  } = internal.takeFirstSTM
383
383
 
384
384
  /**
@@ -399,10 +399,10 @@ export const takeSome: {
399
399
  * @category mutations
400
400
  */
401
401
  export const takeSomeSTM: {
402
- <K, V, R, E, A>(
402
+ <K, V, A, E, R>(
403
403
  pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>
404
404
  ): (self: TMap<K, V>) => STM.STM<[A, ...Array<A>], E, R>
405
- <K, V, R, E, A>(
405
+ <K, V, A, E, R>(
406
406
  self: TMap<K, V>,
407
407
  pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>
408
408
  ): STM.STM<[A, ...Array<A>], E, R>
package/src/TSet.ts CHANGED
@@ -272,8 +272,8 @@ export const takeFirst: {
272
272
  * @category mutations
273
273
  */
274
274
  export const takeFirstSTM: {
275
- <A, R, E, B>(pf: (a: A) => STM.STM<B, Option.Option<E>, R>): (self: TSet<A>) => STM.STM<B, E, R>
276
- <A, R, E, B>(self: TSet<A>, pf: (a: A) => STM.STM<B, Option.Option<E>, R>): STM.STM<B, E, R>
275
+ <A, B, E, R>(pf: (a: A) => STM.STM<B, Option.Option<E>, R>): (self: TSet<A>) => STM.STM<B, E, R>
276
+ <A, B, E, R>(self: TSet<A>, pf: (a: A) => STM.STM<B, Option.Option<E>, R>): STM.STM<B, E, R>
277
277
  } = internal.takeFirstSTM
278
278
 
279
279
  /**
@@ -294,8 +294,8 @@ export const takeSome: {
294
294
  * @category mutations
295
295
  */
296
296
  export const takeSomeSTM: {
297
- <A, R, E, B>(pf: (a: A) => STM.STM<B, Option.Option<E>, R>): (self: TSet<A>) => STM.STM<[B, ...Array<B>], E, R>
298
- <A, R, E, B>(self: TSet<A>, pf: (a: A) => STM.STM<B, Option.Option<E>, R>): STM.STM<[B, ...Array<B>], E, R>
297
+ <A, B, E, R>(pf: (a: A) => STM.STM<B, Option.Option<E>, R>): (self: TSet<A>) => STM.STM<[B, ...Array<B>], E, R>
298
+ <A, B, E, R>(self: TSet<A>, pf: (a: A) => STM.STM<B, Option.Option<E>, R>): STM.STM<[B, ...Array<B>], E, R>
299
299
  } = internal.takeSomeSTM
300
300
 
301
301
  /**
package/src/Take.ts CHANGED
@@ -248,11 +248,11 @@ export const of: <A>(value: A) => Take<A> = internal.of
248
248
  * @category sequencing
249
249
  */
250
250
  export const tap: {
251
- <A, _, E2, R>(
252
- f: (chunk: Chunk.Chunk<A>) => Effect.Effect<_, E2, R>
251
+ <A, X, E2, R>(
252
+ f: (chunk: Chunk.Chunk<A>) => Effect.Effect<X, E2, R>
253
253
  ): <E>(self: Take<A, E>) => Effect.Effect<void, E2 | E, R>
254
- <A, E, _, E2, R>(
254
+ <A, E, X, E2, R>(
255
255
  self: Take<A, E>,
256
- f: (chunk: Chunk.Chunk<A>) => Effect.Effect<_, E2, R>
256
+ f: (chunk: Chunk.Chunk<A>) => Effect.Effect<X, E2, R>
257
257
  ): Effect.Effect<void, E | E2, R>
258
258
  } = internal.tap
@@ -81,9 +81,9 @@ export const make = <A>(
81
81
  * @since 2.0.0
82
82
  */
83
83
  export const compose = <A>(
84
- left: Either.Either<number, Chunk.Chunk<A>>,
85
- right: Either.Either<number, Chunk.Chunk<A>>
86
- ): Either.Either<number, Chunk.Chunk<A>> => {
84
+ left: Either.Either<Chunk.Chunk<A>, number>,
85
+ right: Either.Either<Chunk.Chunk<A>, number>
86
+ ): Either.Either<Chunk.Chunk<A>, number> => {
87
87
  if (Either.isLeft(left) && Either.isLeft(right)) {
88
88
  return Either.left(left.left + right.left)
89
89
  }
@@ -103,12 +103,9 @@ export const compose = <A>(
103
103
  * @since 2.0.0
104
104
  */
105
105
  export const fibers: TestAnnotation<
106
- Either.Either<
107
- number,
108
- Chunk.Chunk<MutableRef.MutableRef<SortedSet.SortedSet<Fiber.RuntimeFiber<unknown, unknown>>>>
109
- >
106
+ Either.Either<Chunk.Chunk<MutableRef.MutableRef<SortedSet.SortedSet<Fiber.RuntimeFiber<unknown, unknown>>>>, number>
110
107
  > = make<
111
- Either.Either<number, Chunk.Chunk<MutableRef.MutableRef<SortedSet.SortedSet<Fiber.RuntimeFiber<unknown, unknown>>>>>
108
+ Either.Either<Chunk.Chunk<MutableRef.MutableRef<SortedSet.SortedSet<Fiber.RuntimeFiber<unknown, unknown>>>>, number>
112
109
  >(
113
110
  "fibers",
114
111
  Either.left(0),
package/src/Types.ts CHANGED
@@ -114,6 +114,17 @@ export type MergeRight<K, H> = Simplify<
114
114
  }
115
115
  >
116
116
 
117
+ /**
118
+ * @since 2.0.0
119
+ * @category models
120
+ */
121
+ export type MergeRecord<K, H> = {
122
+ [k in keyof K | keyof H]: k extends keyof K ? K[k]
123
+ : k extends keyof H ? H[k]
124
+ : never
125
+ } extends infer X ? X
126
+ : never
127
+
117
128
  /**
118
129
  * Describes the concurrency to use when executing multiple Effect's.
119
130
  *
@@ -103,7 +103,7 @@ export const reduce = <Z>(
103
103
  reducer: RequestBlock.RequestBlock.Reducer<Z>
104
104
  ): Z => {
105
105
  let input: List.List<RequestBlock.RequestBlock> = List.of(self)
106
- let output = List.empty<Either.Either<BlockedRequestsCase, Z>>()
106
+ let output = List.empty<Either.Either<Z, BlockedRequestsCase>>()
107
107
  while (List.isCons(input)) {
108
108
  const current: RequestBlock.RequestBlock = input.head
109
109
  switch (current._tag) {
@@ -429,7 +429,7 @@ class SequentialImpl implements SequentialCollection {
429
429
  }
430
430
 
431
431
  /** @internal */
432
- export const sequentialCollectionMake = <R, A>(
432
+ export const sequentialCollectionMake = <A, R>(
433
433
  map: HashMap.HashMap<
434
434
  RequestResolver.RequestResolver<A, R>,
435
435
  Array<Array<Request.Entry<A>>>
@@ -234,7 +234,7 @@ export const failureOption = <E>(self: Cause.Cause<E>): Option.Option<E> =>
234
234
  Option.none())
235
235
 
236
236
  /** @internal */
237
- export const failureOrCause = <E>(self: Cause.Cause<E>): Either.Either<E, Cause.Cause<never>> => {
237
+ export const failureOrCause = <E>(self: Cause.Cause<E>): Either.Either<Cause.Cause<never>, E> => {
238
238
  const option = failureOption(self)
239
239
  switch (option._tag) {
240
240
  case "None": {
@@ -892,7 +892,7 @@ export const reduceWithContext = dual<
892
892
  <C, E, Z>(self: Cause.Cause<E>, context: C, reducer: Cause.CauseReducer<C, E, Z>) => Z
893
893
  >(3, <C, E, Z>(self: Cause.Cause<E>, context: C, reducer: Cause.CauseReducer<C, E, Z>) => {
894
894
  const input: Array<Cause.Cause<E>> = [self]
895
- const output: Array<Either.Either<CauseCase, Z>> = []
895
+ const output: Array<Either.Either<Z, CauseCase>> = []
896
896
  while (input.length > 0) {
897
897
  const cause = input.pop()!
898
898
  switch (cause._tag) {
@@ -87,8 +87,8 @@ export class ChannelExecutor<
87
87
  this._providedEnv = providedEnv
88
88
  }
89
89
 
90
- run(): ChannelState.ChannelState<Env, unknown> {
91
- let result: ChannelState.ChannelState<Env, unknown> | undefined = undefined
90
+ run(): ChannelState.ChannelState<unknown, Env> {
91
+ let result: ChannelState.ChannelState<unknown, Env> | undefined = undefined
92
92
  while (result === undefined) {
93
93
  if (this._cancelled !== undefined) {
94
94
  result = this.processCancellation()
@@ -153,7 +153,7 @@ export class ChannelExecutor<
153
153
  }
154
154
  })) as Effect.Effect<unknown, never, Env>
155
155
 
156
- result = ChannelState.FromEffect(
156
+ result = ChannelState.fromEffect(
157
157
  Effect.flatMap(
158
158
  Effect.forkDaemon(drainer()),
159
159
  (fiber) =>
@@ -246,7 +246,7 @@ export class ChannelExecutor<
246
246
  Effect.provide(this._providedEnv)
247
247
  )
248
248
 
249
- result = ChannelState.FromEffect(
249
+ result = ChannelState.fromEffect(
250
250
  Effect.matchCauseEffect(effect, {
251
251
  onFailure: (cause) => {
252
252
  const state = this.doneHalt(cause)
@@ -261,7 +261,7 @@ export class ChannelExecutor<
261
261
  Effect.unit
262
262
  }
263
263
  })
264
- ) as ChannelState.ChannelState<Env, unknown> | undefined
264
+ ) as ChannelState.ChannelState<unknown, Env> | undefined
265
265
 
266
266
  break
267
267
  }
@@ -459,7 +459,7 @@ export class ChannelExecutor<
459
459
  )
460
460
  }
461
461
 
462
- doneSucceed(value: unknown): ChannelState.ChannelState<Env, unknown> | undefined {
462
+ doneSucceed(value: unknown): ChannelState.ChannelState<unknown, Env> | undefined {
463
463
  if (this._doneStack.length === 0) {
464
464
  this._done = Exit.succeed(value)
465
465
  this._currentChannel = undefined
@@ -491,10 +491,10 @@ export class ChannelExecutor<
491
491
  Effect.flatMap(() => Effect.sync(() => this.doneSucceed(value)))
492
492
  )
493
493
 
494
- return ChannelState.FromEffect(effect)
494
+ return ChannelState.fromEffect(effect)
495
495
  }
496
496
 
497
- doneHalt(cause: Cause.Cause<unknown>): ChannelState.ChannelState<Env, unknown> | undefined {
497
+ doneHalt(cause: Cause.Cause<unknown>): ChannelState.ChannelState<unknown, Env> | undefined {
498
498
  if (this._doneStack.length === 0) {
499
499
  this._done = Exit.failCause(cause)
500
500
  this._currentChannel = undefined
@@ -526,17 +526,17 @@ export class ChannelExecutor<
526
526
  Effect.flatMap(() => Effect.sync(() => this.doneHalt(cause)))
527
527
  )
528
528
 
529
- return ChannelState.FromEffect(effect)
529
+ return ChannelState.fromEffect(effect)
530
530
  }
531
531
 
532
- processCancellation(): ChannelState.ChannelState<Env, unknown> {
532
+ processCancellation(): ChannelState.ChannelState<unknown, Env> {
533
533
  this._currentChannel = undefined
534
534
  this._done = this._cancelled
535
535
  this._cancelled = undefined
536
536
  return ChannelState.Done()
537
537
  }
538
538
 
539
- runBracketOut(bracketOut: core.BracketOut): ChannelState.ChannelState<Env, unknown> {
539
+ runBracketOut(bracketOut: core.BracketOut): ChannelState.ChannelState<unknown, Env> {
540
540
  const effect = Effect.uninterruptible(
541
541
  Effect.matchCauseEffect(this.provide(bracketOut.acquire() as Effect.Effect<OutDone, OutErr, Env>), {
542
542
  onFailure: (cause) =>
@@ -552,7 +552,7 @@ export class ChannelExecutor<
552
552
  })
553
553
  })
554
554
  )
555
- return ChannelState.FromEffect(effect) as ChannelState.ChannelState<Env, unknown>
555
+ return ChannelState.fromEffect(effect) as ChannelState.ChannelState<unknown, Env>
556
556
  }
557
557
 
558
558
  provide(effect: Effect.Effect<unknown, unknown, unknown>): Effect.Effect<unknown, unknown, unknown> {
@@ -571,7 +571,7 @@ export class ChannelExecutor<
571
571
  this._doneStack.push(new Continuation.ContinuationFinalizerImpl(f))
572
572
  }
573
573
 
574
- runSubexecutor(): ChannelState.ChannelState<Env, unknown> | undefined {
574
+ runSubexecutor(): ChannelState.ChannelState<unknown, Env> | undefined {
575
575
  const subexecutor = this._activeSubexecutor as Subexecutor.Primitive<Env>
576
576
  switch (subexecutor._tag) {
577
577
  case Subexecutor.OP_PULL_FROM_CHILD: {
@@ -615,7 +615,7 @@ export class ChannelExecutor<
615
615
  finishSubexecutorWithCloseEffect(
616
616
  subexecutorDone: Exit.Exit<unknown, unknown>,
617
617
  ...closeFuncs: Array<(exit: Exit.Exit<unknown, unknown>) => Effect.Effect<unknown, never, Env> | undefined>
618
- ): ChannelState.ChannelState<Env, unknown> | undefined {
618
+ ): ChannelState.ChannelState<unknown, Env> | undefined {
619
619
  this.addFinalizer(() =>
620
620
  pipe(
621
621
  closeFuncs,
@@ -659,7 +659,7 @@ export class ChannelExecutor<
659
659
  parentSubexecutor: Subexecutor.Subexecutor<Env>,
660
660
  onEmitted: (emitted: unknown) => ChildExecutorDecision.ChildExecutorDecision,
661
661
  subexecutor: Subexecutor.PullFromChild<Env>
662
- ): ChannelState.ChannelState<Env, unknown> | undefined {
662
+ ): ChannelState.ChannelState<unknown, Env> | undefined {
663
663
  return ChannelState.Read(
664
664
  childExecutor,
665
665
  identity,
@@ -753,7 +753,7 @@ export class ChannelExecutor<
753
753
  childExecutor: ErasedExecutor<Env>,
754
754
  parentSubexecutor: Subexecutor.Subexecutor<Env>,
755
755
  cause: Cause.Cause<unknown>
756
- ): ChannelState.ChannelState<Env, unknown> | undefined {
756
+ ): ChannelState.ChannelState<unknown, Env> | undefined {
757
757
  return this.finishSubexecutorWithCloseEffect(
758
758
  Exit.failCause(cause),
759
759
  (exit) => parentSubexecutor.close(exit),
@@ -763,7 +763,7 @@ export class ChannelExecutor<
763
763
 
764
764
  pullFromUpstream(
765
765
  subexecutor: Subexecutor.PullFromUpstream<Env>
766
- ): ChannelState.ChannelState<Env, unknown> | undefined {
766
+ ): ChannelState.ChannelState<unknown, Env> | undefined {
767
767
  if (subexecutor.activeChildExecutors.length === 0) {
768
768
  return this.performPullFromUpstream(subexecutor)
769
769
  }
@@ -798,7 +798,7 @@ export class ChannelExecutor<
798
798
 
799
799
  performPullFromUpstream(
800
800
  subexecutor: Subexecutor.PullFromUpstream<Env>
801
- ): ChannelState.ChannelState<Env, unknown> | undefined {
801
+ ): ChannelState.ChannelState<unknown, Env> | undefined {
802
802
  return ChannelState.Read(
803
803
  subexecutor.upstreamExecutor,
804
804
  (effect) => {
@@ -924,14 +924,14 @@ export class ChannelExecutor<
924
924
  return state === undefined ?
925
925
  undefined :
926
926
  // NOTE: assuming finalizers cannot fail
927
- ChannelState.effectOrUndefinedIgnored(state as ChannelState.ChannelState<Env, never>)
927
+ ChannelState.effectOrUndefinedIgnored(state as ChannelState.ChannelState<never, Env>)
928
928
  }
929
929
  )
930
930
  }
931
931
 
932
932
  drainChildExecutors(
933
933
  subexecutor: Subexecutor.DrainChildExecutors<Env>
934
- ): ChannelState.ChannelState<Env, unknown> | undefined {
934
+ ): ChannelState.ChannelState<unknown, Env> | undefined {
935
935
  if (subexecutor.activeChildExecutors.length === 0) {
936
936
  const lastClose = this._closeLastSubstream
937
937
  if (lastClose !== undefined) {
@@ -1015,7 +1015,7 @@ const runFinalizers = <Env>(
1015
1015
  /**
1016
1016
  * @internal
1017
1017
  */
1018
- export const readUpstream = <R, E, E2, A>(
1018
+ export const readUpstream = <A, E2, R, E>(
1019
1019
  r: ChannelState.Read,
1020
1020
  onSuccess: () => Effect.Effect<A, E2, R>,
1021
1021
  onFailure: (cause: Cause.Cause<E>) => Effect.Effect<A, E2, R>
@@ -1111,7 +1111,7 @@ export const runScoped = <Env, InErr, InDone, OutErr, OutDone>(
1111
1111
  (exec) =>
1112
1112
  Effect.suspend(() =>
1113
1113
  pipe(
1114
- runScopedInterpret(exec.run() as ChannelState.ChannelState<Env, OutErr>, exec),
1114
+ runScopedInterpret(exec.run() as ChannelState.ChannelState<OutErr, Env>, exec),
1115
1115
  Effect.intoDeferred(channelDeferred),
1116
1116
  Effect.zipRight(Deferred.await(channelDeferred)),
1117
1117
  Effect.zipLeft(Deferred.await(scopeDeferred))
@@ -1154,7 +1154,7 @@ export const runScoped = <Env, InErr, InDone, OutErr, OutDone>(
1154
1154
 
1155
1155
  /** @internal */
1156
1156
  const runScopedInterpret = <Env, InErr, InDone, OutErr, OutDone>(
1157
- channelState: ChannelState.ChannelState<Env, OutErr>,
1157
+ channelState: ChannelState.ChannelState<OutErr, Env>,
1158
1158
  exec: ChannelExecutor<never, unknown, OutErr, InErr, OutDone, InDone, Env>
1159
1159
  ): Effect.Effect<OutDone, OutErr, Env> => {
1160
1160
  const op = channelState as ChannelState.Primitive
@@ -1162,13 +1162,13 @@ const runScopedInterpret = <Env, InErr, InDone, OutErr, OutDone>(
1162
1162
  case ChannelStateOpCodes.OP_FROM_EFFECT: {
1163
1163
  return pipe(
1164
1164
  op.effect as Effect.Effect<OutDone, OutErr, Env>,
1165
- Effect.flatMap(() => runScopedInterpret(exec.run() as ChannelState.ChannelState<Env, OutErr>, exec))
1165
+ Effect.flatMap(() => runScopedInterpret(exec.run() as ChannelState.ChannelState<OutErr, Env>, exec))
1166
1166
  )
1167
1167
  }
1168
1168
  case ChannelStateOpCodes.OP_EMIT: {
1169
1169
  // Can't really happen because Out <:< Nothing. So just skip ahead.
1170
1170
  return runScopedInterpret<Env, InErr, InDone, OutErr, OutDone>(
1171
- exec.run() as ChannelState.ChannelState<Env, OutErr>,
1171
+ exec.run() as ChannelState.ChannelState<OutErr, Env>,
1172
1172
  exec
1173
1173
  )
1174
1174
  }
@@ -1178,7 +1178,7 @@ const runScopedInterpret = <Env, InErr, InDone, OutErr, OutDone>(
1178
1178
  case ChannelStateOpCodes.OP_READ: {
1179
1179
  return readUpstream(
1180
1180
  op,
1181
- () => runScopedInterpret(exec.run() as ChannelState.ChannelState<Env, OutErr>, exec),
1181
+ () => runScopedInterpret(exec.run() as ChannelState.ChannelState<OutErr, Env>, exec),
1182
1182
  Effect.failCause
1183
1183
  ) as Effect.Effect<OutDone, OutErr, Env>
1184
1184
  }
@@ -12,23 +12,23 @@ export const ChannelStateTypeId = Symbol.for("effect/ChannelState")
12
12
  export type ChannelStateTypeId = typeof ChannelStateTypeId
13
13
 
14
14
  /** @internal */
15
- export interface ChannelState<out R, out E> extends ChannelState.Variance<R, E> {}
15
+ export interface ChannelState<out E, out R> extends ChannelState.Variance<E, R> {}
16
16
 
17
17
  /** @internal */
18
18
  export declare namespace ChannelState {
19
- export interface Variance<out R, out E> {
19
+ export interface Variance<out E, out R> {
20
20
  readonly [ChannelStateTypeId]: {
21
- readonly _R: Types.Covariant<R>
22
21
  readonly _E: Types.Covariant<E>
22
+ readonly _R: Types.Covariant<R>
23
23
  }
24
24
  }
25
25
  }
26
26
 
27
27
  const channelStateVariance = {
28
28
  /* c8 ignore next */
29
- _R: (_: never) => _,
29
+ _E: (_: never) => _,
30
30
  /* c8 ignore next */
31
- _E: (_: never) => _
31
+ _R: (_: never) => _
32
32
  }
33
33
 
34
34
  /** @internal */
@@ -86,7 +86,7 @@ export const Emit = (): ChannelState<never, never> => {
86
86
  }
87
87
 
88
88
  /** @internal */
89
- export const FromEffect = <R, E, _>(effect: Effect.Effect<_, E, R>): ChannelState<R, E> => {
89
+ export const fromEffect = <X, E, R>(effect: Effect.Effect<X, E, R>): ChannelState<E, R> => {
90
90
  const op = Object.create(proto)
91
91
  op._tag = OpCodes.OP_FROM_EFFECT
92
92
  op.effect = effect
@@ -99,7 +99,7 @@ export const Read = <R>(
99
99
  onEffect: (effect: Effect.Effect<void, never, R>) => Effect.Effect<void, never, R>,
100
100
  onEmit: (value: unknown) => Effect.Effect<void, never, R> | undefined,
101
101
  onDone: (exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void, never, R> | undefined
102
- ): ChannelState<R, never> => {
102
+ ): ChannelState<never, R> => {
103
103
  const op = Object.create(proto)
104
104
  op._tag = OpCodes.OP_READ
105
105
  op.upstream = upstream
@@ -113,22 +113,22 @@ export const Read = <R>(
113
113
  export const isChannelState = (u: unknown): u is ChannelState<unknown, unknown> => hasProperty(u, ChannelStateTypeId)
114
114
 
115
115
  /** @internal */
116
- export const isDone = <R, E>(self: ChannelState<R, E>): self is Done => (self as Primitive)._tag === OpCodes.OP_DONE
116
+ export const isDone = <E, R>(self: ChannelState<E, R>): self is Done => (self as Primitive)._tag === OpCodes.OP_DONE
117
117
 
118
118
  /** @internal */
119
- export const isEmit = <R, E>(self: ChannelState<R, E>): self is Emit => (self as Primitive)._tag === OpCodes.OP_EMIT
119
+ export const isEmit = <E, R>(self: ChannelState<E, R>): self is Emit => (self as Primitive)._tag === OpCodes.OP_EMIT
120
120
 
121
121
  /** @internal */
122
- export const isFromEffect = <R, E>(self: ChannelState<R, E>): self is FromEffect =>
122
+ export const isFromEffect = <E, R>(self: ChannelState<E, R>): self is FromEffect =>
123
123
  (self as Primitive)._tag === OpCodes.OP_FROM_EFFECT
124
124
 
125
125
  /** @internal */
126
- export const isRead = <R, E>(self: ChannelState<R, E>): self is Read => (self as Primitive)._tag === OpCodes.OP_READ
126
+ export const isRead = <E, R>(self: ChannelState<E, R>): self is Read => (self as Primitive)._tag === OpCodes.OP_READ
127
127
 
128
128
  /** @internal */
129
- export const effect = <R, E>(self: ChannelState<R, E>): Effect.Effect<void, E, R> =>
129
+ export const effect = <E, R>(self: ChannelState<E, R>): Effect.Effect<void, E, R> =>
130
130
  isFromEffect(self) ? self.effect as Effect.Effect<void, E, R> : Effect.unit
131
131
 
132
132
  /** @internal */
133
- export const effectOrUndefinedIgnored = <R, E>(self: ChannelState<R, E>): Effect.Effect<void, E, R> | undefined =>
133
+ export const effectOrUndefinedIgnored = <E, R>(self: ChannelState<E, R>): Effect.Effect<void, E, R> | undefined =>
134
134
  isFromEffect(self) ? Effect.ignore(self.effect as Effect.Effect<void, E, R>) : undefined
@@ -72,7 +72,7 @@ export const Await = <R, E0, Z0, E, Z>(
72
72
  }
73
73
 
74
74
  /** @internal */
75
- export const AwaitConst = <R, E, Z>(
75
+ export const AwaitConst = <Z, E, R>(
76
76
  effect: Effect.Effect<Z, E, R>
77
77
  ): MergeDecision.MergeDecision<R, unknown, unknown, E, Z> => Await(() => effect)
78
78
 
@@ -22,8 +22,8 @@ const proto = {
22
22
 
23
23
  /** @internal */
24
24
  export const BothRunning = <Env, Err, Err1, Err2, Elem, Done, Done1, Done2>(
25
- left: Fiber.Fiber<Either.Either<Done, Elem>, Err>,
26
- right: Fiber.Fiber<Either.Either<Done1, Elem>, Err1>
25
+ left: Fiber.Fiber<Either.Either<Elem, Done>, Err>,
26
+ right: Fiber.Fiber<Either.Either<Elem, Done1>, Err1>
27
27
  ): MergeState.MergeState<Env, Err, Err1, Err2, Elem, Done, Done1, Done2> => {
28
28
  const op = Object.create(proto)
29
29
  op._tag = OpCodes.OP_BOTH_RUNNING
@@ -84,8 +84,8 @@ export const match = dual<
84
84
  <Env, Err, Err1, Err2, Elem, Done, Done1, Done2, Z>(
85
85
  options: {
86
86
  readonly onBothRunning: (
87
- left: Fiber.Fiber<Either.Either<Done, Elem>, Err>,
88
- right: Fiber.Fiber<Either.Either<Done1, Elem>, Err1>
87
+ left: Fiber.Fiber<Either.Either<Elem, Done>, Err>,
88
+ right: Fiber.Fiber<Either.Either<Elem, Done1>, Err1>
89
89
  ) => Z
90
90
  readonly onLeftDone: (f: (exit: Exit.Exit<Done1, Err1>) => Effect.Effect<Done2, Err2, Env>) => Z
91
91
  readonly onRightDone: (f: (exit: Exit.Exit<Done, Err>) => Effect.Effect<Done2, Err2, Env>) => Z
@@ -95,8 +95,8 @@ export const match = dual<
95
95
  self: MergeState.MergeState<Env, Err, Err1, Err2, Elem, Done, Done1, Done2>,
96
96
  options: {
97
97
  readonly onBothRunning: (
98
- left: Fiber.Fiber<Either.Either<Done, Elem>, Err>,
99
- right: Fiber.Fiber<Either.Either<Done1, Elem>, Err1>
98
+ left: Fiber.Fiber<Either.Either<Elem, Done>, Err>,
99
+ right: Fiber.Fiber<Either.Either<Elem, Done1>, Err1>
100
100
  ) => Z
101
101
  readonly onLeftDone: (f: (exit: Exit.Exit<Done1, Err1>) => Effect.Effect<Done2, Err2, Env>) => Z
102
102
  readonly onRightDone: (f: (exit: Exit.Exit<Done, Err>) => Effect.Effect<Done2, Err2, Env>) => Z
@@ -47,7 +47,7 @@ interface Empty {
47
47
  /** @internal */
48
48
  interface Emit<Err, Elem, Done> {
49
49
  readonly _tag: OP_STATE_EMIT
50
- readonly notifyConsumers: ReadonlyArray<Deferred.Deferred<Either.Either<Done, Elem>, Err>>
50
+ readonly notifyConsumers: ReadonlyArray<Deferred.Deferred<Either.Either<Elem, Done>, Err>>
51
51
  }
52
52
 
53
53
  /** @internal */
@@ -70,7 +70,7 @@ const stateEmpty = (notifyProducer: Deferred.Deferred<void>): State<never, never
70
70
 
71
71
  /** @internal */
72
72
  const stateEmit = <Err, Elem, Done>(
73
- notifyConsumers: ReadonlyArray<Deferred.Deferred<Either.Either<Done, Elem>, Err>>
73
+ notifyConsumers: ReadonlyArray<Deferred.Deferred<Either.Either<Elem, Done>, Err>>
74
74
  ): State<Err, Elem, Done> => ({
75
75
  _tag: OP_STATE_EMIT,
76
76
  notifyConsumers
@@ -198,10 +198,10 @@ class SingleProducerAsyncInputImpl<in out Err, in out Elem, in out Done>
198
198
  )
199
199
  }
200
200
 
201
- get take(): Effect.Effect<Exit.Exit<Elem, Either.Either<Err, Done>>> {
201
+ get take(): Effect.Effect<Exit.Exit<Elem, Either.Either<Done, Err>>> {
202
202
  return this.takeWith(
203
203
  (cause) => Exit.failCause(Cause.map(cause, Either.left)),
204
- (elem) => Exit.succeed(elem) as Exit.Exit<Elem, Either.Either<Err, Done>>,
204
+ (elem) => Exit.succeed(elem) as Exit.Exit<Elem, Either.Either<Done, Err>>,
205
205
  (done) => Exit.fail(Either.right(done))
206
206
  )
207
207
  }
@@ -211,7 +211,7 @@ class SingleProducerAsyncInputImpl<in out Err, in out Elem, in out Done>
211
211
  onElement: (element: Elem) => A,
212
212
  onDone: (value: Done) => A
213
213
  ): Effect.Effect<A> {
214
- return Effect.flatMap(Deferred.make<Either.Either<Done, Elem>, Err>(), (deferred) =>
214
+ return Effect.flatMap(Deferred.make<Either.Either<Elem, Done>, Err>(), (deferred) =>
215
215
  Effect.flatten(
216
216
  Ref.modify(this.ref, (state) => {
217
217
  switch (state._tag) {