@typed/fx 1.22.2 → 1.23.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 (112) hide show
  1. package/dist/cjs/Form.js.map +1 -1
  2. package/dist/cjs/Fx.js.map +1 -1
  3. package/dist/cjs/Idle.js.map +1 -1
  4. package/dist/cjs/Match.js.map +1 -1
  5. package/dist/cjs/Pull.js.map +1 -1
  6. package/dist/cjs/Subject.js.map +1 -1
  7. package/dist/cjs/internal/core.js.map +1 -1
  8. package/dist/cjs/internal/helpers.js.map +1 -1
  9. package/dist/cjs/internal/keyed.js +1 -1
  10. package/dist/cjs/internal/keyed.js.map +1 -1
  11. package/dist/cjs/internal/share.js.map +1 -1
  12. package/dist/cjs/internal/sync-producer.js.map +1 -1
  13. package/dist/dts/AsyncData.d.ts +33 -33
  14. package/dist/dts/AsyncData.d.ts.map +1 -1
  15. package/dist/dts/Emitter.d.ts +6 -6
  16. package/dist/dts/Emitter.d.ts.map +1 -1
  17. package/dist/dts/Form.d.ts +12 -12
  18. package/dist/dts/Form.d.ts.map +1 -1
  19. package/dist/dts/FormEntry.d.ts +9 -9
  20. package/dist/dts/FormEntry.d.ts.map +1 -1
  21. package/dist/dts/Fx.d.ts +113 -113
  22. package/dist/dts/Fx.d.ts.map +1 -1
  23. package/dist/dts/Guard.d.ts +5 -5
  24. package/dist/dts/Guard.d.ts.map +1 -1
  25. package/dist/dts/Idle.d.ts +12 -12
  26. package/dist/dts/Idle.d.ts.map +1 -1
  27. package/dist/dts/Pull.d.ts +5 -5
  28. package/dist/dts/Pull.d.ts.map +1 -1
  29. package/dist/dts/Push.d.ts +20 -20
  30. package/dist/dts/Push.d.ts.map +1 -1
  31. package/dist/dts/RefArray.d.ts +33 -33
  32. package/dist/dts/RefArray.d.ts.map +1 -1
  33. package/dist/dts/RefChunk.d.ts +27 -27
  34. package/dist/dts/RefChunk.d.ts.map +1 -1
  35. package/dist/dts/RefHashMap.d.ts +17 -17
  36. package/dist/dts/RefHashMap.d.ts.map +1 -1
  37. package/dist/dts/RefHashSet.d.ts +5 -5
  38. package/dist/dts/RefHashSet.d.ts.map +1 -1
  39. package/dist/dts/RefSubject.d.ts +53 -53
  40. package/dist/dts/RefSubject.d.ts.map +1 -1
  41. package/dist/dts/Sink.d.ts +31 -31
  42. package/dist/dts/Sink.d.ts.map +1 -1
  43. package/dist/dts/Stream.d.ts +11 -11
  44. package/dist/dts/Stream.d.ts.map +1 -1
  45. package/dist/dts/Subject.d.ts +5 -5
  46. package/dist/dts/Subject.d.ts.map +1 -1
  47. package/dist/dts/Versioned.d.ts +11 -11
  48. package/dist/dts/Versioned.d.ts.map +1 -1
  49. package/dist/dts/internal/DeferredRef.d.ts +7 -7
  50. package/dist/dts/internal/core.d.ts +51 -51
  51. package/dist/dts/internal/core.d.ts.map +1 -1
  52. package/dist/dts/internal/effect-loop-operator.d.ts +4 -4
  53. package/dist/dts/internal/effect-loop-operator.d.ts.map +1 -1
  54. package/dist/dts/internal/effect-operator.d.ts +11 -11
  55. package/dist/dts/internal/effect-operator.d.ts.map +1 -1
  56. package/dist/dts/internal/effect-producer.d.ts +9 -9
  57. package/dist/dts/internal/effect-producer.d.ts.map +1 -1
  58. package/dist/dts/internal/helpers.d.ts +25 -25
  59. package/dist/dts/internal/helpers.d.ts.map +1 -1
  60. package/dist/dts/internal/protos.d.ts +9 -9
  61. package/dist/dts/internal/protos.d.ts.map +1 -1
  62. package/dist/dts/internal/provide.d.ts +10 -10
  63. package/dist/dts/internal/provide.d.ts.map +1 -1
  64. package/dist/dts/internal/share.d.ts +2 -2
  65. package/dist/dts/internal/share.d.ts.map +1 -1
  66. package/dist/dts/internal/sync-producer.d.ts +6 -6
  67. package/dist/dts/internal/sync-producer.d.ts.map +1 -1
  68. package/dist/esm/Form.js.map +1 -1
  69. package/dist/esm/FormEntry.js.map +1 -1
  70. package/dist/esm/Fx.js.map +1 -1
  71. package/dist/esm/Idle.js.map +1 -1
  72. package/dist/esm/Match.js.map +1 -1
  73. package/dist/esm/Pull.js.map +1 -1
  74. package/dist/esm/RefSubject.js.map +1 -1
  75. package/dist/esm/Subject.js.map +1 -1
  76. package/dist/esm/internal/core.js.map +1 -1
  77. package/dist/esm/internal/helpers.js.map +1 -1
  78. package/dist/esm/internal/keyed.js +1 -1
  79. package/dist/esm/internal/keyed.js.map +1 -1
  80. package/dist/esm/internal/share.js.map +1 -1
  81. package/dist/esm/internal/sync-producer.js.map +1 -1
  82. package/package.json +6 -6
  83. package/src/AsyncData.ts +86 -86
  84. package/src/Emitter.ts +9 -9
  85. package/src/Form.ts +39 -39
  86. package/src/FormEntry.ts +25 -25
  87. package/src/Fx.ts +122 -124
  88. package/src/Guard.ts +7 -7
  89. package/src/Idle.ts +23 -23
  90. package/src/Match.ts +3 -3
  91. package/src/Pull.ts +10 -10
  92. package/src/Push.ts +33 -33
  93. package/src/RefArray.ts +36 -36
  94. package/src/RefChunk.ts +30 -30
  95. package/src/RefHashMap.ts +24 -24
  96. package/src/RefHashSet.ts +6 -6
  97. package/src/RefSubject.ts +184 -184
  98. package/src/Sink.ts +91 -91
  99. package/src/Stream.ts +19 -19
  100. package/src/Subject.ts +21 -21
  101. package/src/Versioned.ts +23 -23
  102. package/src/internal/DeferredRef.ts +6 -6
  103. package/src/internal/core.ts +132 -132
  104. package/src/internal/effect-loop-operator.ts +4 -4
  105. package/src/internal/effect-operator.ts +13 -13
  106. package/src/internal/effect-producer.ts +14 -14
  107. package/src/internal/helpers.ts +36 -36
  108. package/src/internal/keyed.ts +3 -3
  109. package/src/internal/protos.ts +12 -12
  110. package/src/internal/provide.ts +10 -10
  111. package/src/internal/share.ts +4 -4
  112. package/src/internal/sync-producer.ts +12 -12
@@ -63,11 +63,11 @@ const UNBOUNDED = { concurrency: "unbounded" } as const
63
63
  // TODO: expose FxBase and FxEffectBase
64
64
 
65
65
  export function make<A>(
66
- run: (sink: Sink.Sink<never, never, A>) => Effect.Effect<never, never, unknown>
66
+ run: (sink: Sink.Sink<never, never, A>) => Effect.Effect<unknown>
67
67
  ): Fx<never, never, A>
68
- export function make<E, A>(run: (sink: Sink.Sink<never, E, A>) => Effect.Effect<never, never, unknown>): Fx<never, E, A>
69
- export function make<R, E, A>(run: (sink: Sink.Sink<never, E, A>) => Effect.Effect<R, never, unknown>): Fx<R, E, A>
70
- export function make<R, E, A>(run: (sink: Sink.Sink<never, E, A>) => Effect.Effect<R, never, unknown>): Fx<R, E, A> {
68
+ export function make<E, A>(run: (sink: Sink.Sink<never, E, A>) => Effect.Effect<unknown>): Fx<never, E, A>
69
+ export function make<R, E, A>(run: (sink: Sink.Sink<never, E, A>) => Effect.Effect<unknown, never, R>): Fx<R, E, A>
70
+ export function make<R, E, A>(run: (sink: Sink.Sink<never, E, A>) => Effect.Effect<unknown, never, R>): Fx<R, E, A> {
71
71
  return new Make(run)
72
72
  }
73
73
 
@@ -76,7 +76,7 @@ class Make<R, E, A> extends FxBase<R, E, A> {
76
76
  super()
77
77
  }
78
78
 
79
- run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<R | R2, never, unknown> {
79
+ run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<unknown, never, R | R2> {
80
80
  return Effect.contextWithEffect((ctx) => this._run(Sink.provide(sink, ctx)))
81
81
  }
82
82
  }
@@ -86,7 +86,7 @@ class Producer<A> extends FxBase<never, never, A> {
86
86
  super()
87
87
  }
88
88
 
89
- run<R2>(sink: Sink.Sink<R2, never, A>): Effect.Effect<R2, never, unknown> {
89
+ run<R2>(sink: Sink.Sink<R2, never, A>): Effect.Effect<unknown, never, R2> {
90
90
  return SyncProducer.runSink(this.i0, sink)
91
91
  }
92
92
  }
@@ -112,7 +112,7 @@ class ProducerEffect<R, E, A> extends FxBase<R, E, A> {
112
112
  super()
113
113
  }
114
114
 
115
- run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<R | R2, never, unknown> {
115
+ run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<unknown, never, R | R2> {
116
116
  return EffectProducer.runSink(this.i0, sink)
117
117
  }
118
118
  }
@@ -124,7 +124,7 @@ export function isProducerEffect<R, E, A>(fx: Fx<R, E, A>): fx is ProducerEffect
124
124
  return fx.constructor === ProducerEffect
125
125
  }
126
126
 
127
- export const fromEffect = <R, E, A>(effect: Effect.Effect<R, E, A>): Fx<R, E, A> =>
127
+ export const fromEffect = <R, E, A>(effect: Effect.Effect<A, E, R>): Fx<R, E, A> =>
128
128
  matchEffectPrimitive<R, E, A, Fx<R, E, A>>(effect, {
129
129
  // Match over Effect primitives and return Fx primitives to allow fusion to take place
130
130
  Success: succeed,
@@ -138,12 +138,12 @@ export const fromEffect = <R, E, A>(effect: Effect.Effect<R, E, A>): Fx<R, E, A>
138
138
  })
139
139
 
140
140
  export const fromScheduled = <R, E, I, R2, O>(
141
- input: Effect.Effect<R, E, I>,
141
+ input: Effect.Effect<I, E, R>,
142
142
  schedule: Schedule.Schedule<R2, I, O>
143
143
  ): Fx<R | R2, E, O> => new ProducerEffect(EffectProducer.FromScheduled(input, schedule))
144
144
 
145
145
  export const schedule = <R, E, A, R2, O>(
146
- input: Effect.Effect<R, E, A>,
146
+ input: Effect.Effect<A, E, R>,
147
147
  schedule: Schedule.Schedule<R2, unknown, O>
148
148
  ): Fx<R | R2, E, A> => new ProducerEffect(EffectProducer.Scheduled(input, schedule))
149
149
 
@@ -152,7 +152,7 @@ class FailCause<E> extends FxBase<never, E, never> {
152
152
  super()
153
153
  }
154
154
 
155
- run<R2>(sink: Sink.Sink<R2, E, never>): Effect.Effect<R2, never, unknown> {
155
+ run<R2>(sink: Sink.Sink<R2, E, never>): Effect.Effect<unknown, never, R2> {
156
156
  return sink.onFailure(this.i0)
157
157
  }
158
158
  }
@@ -175,7 +175,7 @@ class Transformer<R, E, A> extends FxBase<R, E, A> {
175
175
  super()
176
176
  }
177
177
 
178
- run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<R | R2, never, unknown> {
178
+ run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<unknown, never, R | R2> {
179
179
  return this.i0.run(Op.compileOperatorSink(this.i1, sink))
180
180
  }
181
181
 
@@ -215,7 +215,7 @@ class ProducerSyncTransformer<R, E, A> extends FxBase<R, E, A> implements Fx<R,
215
215
  super()
216
216
  }
217
217
 
218
- run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<R | R2, never, unknown> {
218
+ run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<unknown, never, R | R2> {
219
219
  return SyncProducer.runSink(this.i0, Op.compileOperatorSink(this.i1, sink))
220
220
  }
221
221
  }
@@ -237,22 +237,22 @@ export const filterMap = <R, E, A, B>(fx: Fx<R, E, A>, f: (a: A) => Option.Optio
237
237
 
238
238
  export const mapEffect = <R, E, A, R2, E2, B>(
239
239
  fx: Fx<R, E, A>,
240
- f: (a: A) => Effect.Effect<R2, E2, B>
240
+ f: (a: A) => Effect.Effect<B, E2, R2>
241
241
  ): Fx<R | R2, E | E2, B> => Transformer.make(fx, EffectOp.MapEffect(f))
242
242
 
243
243
  export const filterMapEffect = <R, E, A, R2, E2, B>(
244
244
  fx: Fx<R, E, A>,
245
- f: (a: A) => Effect.Effect<R2, E2, Option.Option<B>>
245
+ f: (a: A) => Effect.Effect<Option.Option<B>, E2, R2>
246
246
  ): Fx<R | R2, E | E2, B> => Transformer.make(fx, EffectOp.FilterMapEffect(f))
247
247
 
248
248
  export const filterEffect = <R, E, A, R2, E2>(
249
249
  fx: Fx<R, E, A>,
250
- f: (a: A) => Effect.Effect<R2, E2, boolean>
250
+ f: (a: A) => Effect.Effect<boolean, E2, R2>
251
251
  ): Fx<R | R2, E | E2, A> => Transformer.make(fx, EffectOp.FilterEffect(f))
252
252
 
253
253
  export const tapEffect = <R, E, A, R2, E2>(
254
254
  fx: Fx<R, E, A>,
255
- f: (a: A) => Effect.Effect<R2, E2, unknown>
255
+ f: (a: A) => Effect.Effect<unknown, E2, R2>
256
256
  ): Fx<R | R2, E | E2, A> => Transformer.make(fx, EffectOp.TapEffect(f))
257
257
 
258
258
  export const loop = <R, E, A, B, C>(fx: Fx<R, E, A>, seed: B, f: (acc: B, a: A) => readonly [C, B]): Fx<R, E, C> =>
@@ -270,33 +270,33 @@ export const filterMapLoop = <R, E, A, B, C>(
270
270
  export const loopEffect = <R, E, A, R2, E2, B, C>(
271
271
  fx: Fx<R, E, A>,
272
272
  seed: B,
273
- f: (acc: B, a: A) => Effect.Effect<R2, E2, readonly [C, B]>
273
+ f: (acc: B, a: A) => Effect.Effect<readonly [C, B], E2, R2>
274
274
  ): Fx<R | R2, E | E2, C> => Transformer.make(fx, EffectLoopOp.LoopEffectOperator(seed, f))
275
275
 
276
276
  export const filterMapLoopEffect = <R, E, A, R2, E2, B, C>(
277
277
  fx: Fx<R, E, A>,
278
278
  seed: B,
279
- f: (acc: B, a: A) => Effect.Effect<R2, E2, readonly [Option.Option<C>, B]>
279
+ f: (acc: B, a: A) => Effect.Effect<readonly [Option.Option<C>, B], E2, R2>
280
280
  ): Fx<R | R2, E | E2, C> => Transformer.make(fx, EffectLoopOp.FilterMapLoopEffectOperator(seed, f))
281
281
 
282
282
  export const observe = <R, E, A, R2, E2, B>(
283
283
  fx: Fx<R, E, A>,
284
- f: (a: A) => Effect.Effect<R2, E2, B>
285
- ): Effect.Effect<R | R2, E | E2, void> => Observe.make(fx, f)
284
+ f: (a: A) => Effect.Effect<B, E2, R2>
285
+ ): Effect.Effect<void, E | E2, R | R2> => Observe.make(fx, f)
286
286
 
287
287
  const constUnit = () => Effect.unit
288
288
 
289
- export const drain = <R, E, A>(fx: Fx<R, E, A>): Effect.Effect<R, E, void> => Observe.make(fx, constUnit)
289
+ export const drain = <R, E, A>(fx: Fx<R, E, A>): Effect.Effect<void, E, R> => Observe.make(fx, constUnit)
290
290
 
291
291
  class Observe<R, E, A, R2, E2, B> extends EffectBase<R | R2, E | E2, void> {
292
292
  constructor(
293
293
  readonly i0: Fx<R, E, A>,
294
- readonly i1: (a: A) => Effect.Effect<R2, E2, B>
294
+ readonly i1: (a: A) => Effect.Effect<B, E2, R2>
295
295
  ) {
296
296
  super()
297
297
  }
298
298
 
299
- toEffect(): Effect.Effect<R | R2, E | E2, void> {
299
+ toEffect(): Effect.Effect<void, E | E2, R | R2> {
300
300
  return Effect.asyncEffect((resume) => {
301
301
  const { i0: fx, i1: f } = this
302
302
  const onFailure = (cause: Cause.Cause<E | E2>) => Effect.sync(() => resume(Effect.failCause(cause)))
@@ -310,8 +310,8 @@ class Observe<R, E, A, R2, E2, B> extends EffectBase<R | R2, E | E2, void> {
310
310
 
311
311
  static make<R, E, A, R2, E2, B>(
312
312
  fx: Fx<R, E, A>,
313
- f: (a: A) => Effect.Effect<R2, E2, B>
314
- ): Effect.Effect<R | R2, E | E2, void> {
313
+ f: (a: A) => Effect.Effect<B, E2, R2>
314
+ ): Effect.Effect<void, E | E2, R | R2> {
315
315
  if (isEmpty(fx)) {
316
316
  return Effect.unit
317
317
  } else if (isNever(fx)) {
@@ -320,9 +320,9 @@ class Observe<R, E, A, R2, E2, B> extends EffectBase<R | R2, E | E2, void> {
320
320
  return SyncProducer.runEffect(fx.i0, f)
321
321
  } else if (isProducerSyncTransformer(fx)) {
322
322
  return Op.matchOperator(fx.i1, {
323
- SyncOperator: (op): Effect.Effect<R | R2, E | E2, void> =>
323
+ SyncOperator: (op): Effect.Effect<void, E | E2, R | R2> =>
324
324
  SyncOp.matchSyncOperator(op, {
325
- Map: (op): Effect.Effect<R | R2, E | E2, void> =>
325
+ Map: (op): Effect.Effect<void, E | E2, R | R2> =>
326
326
  SyncProducer.effectOnce(() => SyncProducer.runEffect(fx.i0, (a) => f(op.f(a)))),
327
327
  Filter: (op) =>
328
328
  SyncProducer.effectOnce(() =>
@@ -338,7 +338,7 @@ class Observe<R, E, A, R2, E2, B> extends EffectBase<R | R2, E | E2, void> {
338
338
  }),
339
339
  EffectOperator: (op) =>
340
340
  EffectOp.matchEffectOperator(op, {
341
- MapEffect: (op): Effect.Effect<R | R2, E | E2, void> =>
341
+ MapEffect: (op): Effect.Effect<void, E | E2, R | R2> =>
342
342
  SyncProducer.runEffect(fx.i0, (a) => Effect.flatMap(op.f(a), f)),
343
343
  FilterMapEffect: (op) =>
344
344
  SyncProducer.runEffect(fx.i0, (a) =>
@@ -394,9 +394,9 @@ class Observe<R, E, A, R2, E2, B> extends EffectBase<R | R2, E | E2, void> {
394
394
  return EffectProducer.runEffect(fx.i0, f)
395
395
  } else if (isProducerEffectTransformer(fx)) {
396
396
  return Op.matchOperator(fx.i1, {
397
- SyncOperator: (op): Effect.Effect<R | R2, E | E2, void> =>
397
+ SyncOperator: (op): Effect.Effect<void, E | E2, R | R2> =>
398
398
  SyncOp.matchSyncOperator(op, {
399
- Map: (op): Effect.Effect<R | R2, E | E2, void> =>
399
+ Map: (op): Effect.Effect<void, E | E2, R | R2> =>
400
400
  SyncProducer.effectOnce(() => EffectProducer.runEffect(fx.i0, (a) => f(op.f(a)))),
401
401
  Filter: (op) =>
402
402
  SyncProducer.effectOnce(() =>
@@ -412,7 +412,7 @@ class Observe<R, E, A, R2, E2, B> extends EffectBase<R | R2, E | E2, void> {
412
412
  }),
413
413
  EffectOperator: (op) =>
414
414
  EffectOp.matchEffectOperator(op, {
415
- MapEffect: (op): Effect.Effect<R | R2, E | E2, void> =>
415
+ MapEffect: (op): Effect.Effect<void, E | E2, R | R2> =>
416
416
  EffectProducer.runEffect(fx.i0, (a) => Effect.flatMap(op.f(a), f)),
417
417
  FilterMapEffect: (op) =>
418
418
  EffectProducer.runEffect(fx.i0, (a) =>
@@ -472,7 +472,7 @@ class Observe<R, E, A, R2, E2, B> extends EffectBase<R | R2, E | E2, void> {
472
472
  }
473
473
  }
474
474
 
475
- export const reduce = <R, E, A, B>(fx: Fx<R, E, A>, seed: B, f: (acc: B, a: A) => B): Effect.Effect<R, E, B> =>
475
+ export const reduce = <R, E, A, B>(fx: Fx<R, E, A>, seed: B, f: (acc: B, a: A) => B): Effect.Effect<B, E, R> =>
476
476
  Reduce.make(fx, seed, f)
477
477
 
478
478
  class Reduce<R, E, A, B> extends EffectBase<R, E, B> {
@@ -480,7 +480,7 @@ class Reduce<R, E, A, B> extends EffectBase<R, E, B> {
480
480
  super()
481
481
  }
482
482
 
483
- toEffect(): Effect.Effect<R, E, B> {
483
+ toEffect(): Effect.Effect<B, E, R> {
484
484
  return Effect.suspend(() => {
485
485
  let acc = this.i1
486
486
 
@@ -557,7 +557,7 @@ class Reduce<R, E, A, B> extends EffectBase<R, E, B> {
557
557
  }
558
558
  }
559
559
 
560
- export const toReadonlyArray = <R, E, A>(fx: Fx<R, E, A>): Effect.Effect<R, E, ReadonlyArray<A>> =>
560
+ export const toReadonlyArray = <R, E, A>(fx: Fx<R, E, A>): Effect.Effect<ReadonlyArray<A>, E, R> =>
561
561
  Effect.suspend(() => {
562
562
  const init = [] as Array<A>
563
563
  return Reduce.make(fx, init, (acc, a) => {
@@ -578,7 +578,7 @@ class Slice<R, E, A> extends FxBase<R, E, A> {
578
578
  super()
579
579
  }
580
580
 
581
- run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<R | R2, never, unknown> {
581
+ run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<unknown, never, R | R2> {
582
582
  return Sink.slice(sink, this.i1, (s) => this.i0.run(s))
583
583
  }
584
584
 
@@ -628,7 +628,7 @@ class ProducerEffectTransformer<R, E, A, R2, E2, B> extends FxBase<R | R2, E | E
628
628
  super()
629
629
  }
630
630
 
631
- run<R3>(sink: Sink.Sink<R3, E | E2, B>): Effect.Effect<R | R2 | R3, never, unknown> {
631
+ run<R3>(sink: Sink.Sink<R3, E | E2, B>): Effect.Effect<unknown, never, R | R2 | R3> {
632
632
  return EffectProducer.runSink(this.i0, Op.compileOperatorSink(this.i1, sink))
633
633
  }
634
634
  }
@@ -643,7 +643,7 @@ export function isProducerEffectTransformer<R, E, A>(
643
643
  }
644
644
 
645
645
  class Empty extends FxBase<never, never, never> {
646
- run<R2>(): Effect.Effect<R2, never, unknown> {
646
+ run<R2>(): Effect.Effect<unknown, never, R2> {
647
647
  return Effect.unit
648
648
  }
649
649
  }
@@ -658,7 +658,7 @@ export function isEmpty<R, E, A>(fx: Fx<R, E, A>): fx is Empty {
658
658
  export const empty: Fx<never, never, never> = new Empty()
659
659
 
660
660
  class Never extends FxBase<never, never, never> {
661
- run<R2>(): Effect.Effect<R2, never, unknown> {
661
+ run<R2>(): Effect.Effect<unknown, never, R2> {
662
662
  return Effect.never
663
663
  }
664
664
  }
@@ -723,7 +723,7 @@ class PadWith<
723
723
  super()
724
724
  }
725
725
 
726
- run<R2>(sink: Sink.Sink<R2, E, A | B | C>): Effect.Effect<R | R2, never, unknown> {
726
+ run<R2>(sink: Sink.Sink<R2, E, A | B | C>): Effect.Effect<unknown, never, R | R2> {
727
727
  const onSuccess = (a: A | B | C) => sink.onSuccess(a)
728
728
 
729
729
  return Effect.forEach(this.i1, onSuccess, DISCARD).pipe(
@@ -783,7 +783,7 @@ export function switchMap<R, E, A, R2, E2, B>(
783
783
 
784
784
  export function switchMapEffect<R, E, A, R2, E2, B>(
785
785
  fx: Fx<R, E, A>,
786
- f: (a: A) => Effect.Effect<R2, E2, B>,
786
+ f: (a: A) => Effect.Effect<B, E2, R2>,
787
787
  executionStrategy?: ExecutionStrategy.ExecutionStrategy
788
788
  ): Fx<R | R2 | Scope.Scope, E | E2, B> {
789
789
  return switchMap(fx, (a) => fromEffect(f(a)), executionStrategy)
@@ -799,7 +799,7 @@ export function exhaustMap<R, E, A, R2, E2, B>(
799
799
 
800
800
  export function exhaustMapEffect<R, E, A, R2, E2, B>(
801
801
  fx: Fx<R, E, A>,
802
- f: (a: A) => Effect.Effect<R2, E2, B>,
802
+ f: (a: A) => Effect.Effect<B, E2, R2>,
803
803
  executionStrategy?: ExecutionStrategy.ExecutionStrategy
804
804
  ): Fx<R | R2 | Scope.Scope, E | E2, B> {
805
805
  return exhaustMap(fx, (a) => fromEffect(f(a)), executionStrategy)
@@ -815,7 +815,7 @@ export function exhaustMapLatest<R, E, A, R2, E2, B>(
815
815
 
816
816
  export function exhaustMapLatestEffect<R, E, A, R2, E2, B>(
817
817
  fx: Fx<R, E, A>,
818
- f: (a: A) => Effect.Effect<R2, E2, B>,
818
+ f: (a: A) => Effect.Effect<B, E2, R2>,
819
819
  executionStrategy?: ExecutionStrategy.ExecutionStrategy
820
820
  ): Fx<R | R2 | Scope.Scope, E | E2, B> {
821
821
  return exhaustMapLatest(fx, (a) => fromEffect(f(a)), executionStrategy)
@@ -823,7 +823,7 @@ export function exhaustMapLatestEffect<R, E, A, R2, E2, B>(
823
823
 
824
824
  export function exhaustFilterMapLatestEffect<R, E, A, R2, E2, B>(
825
825
  fx: Fx<R, E, A>,
826
- f: (a: A) => Effect.Effect<R2, E2, Option.Option<B>>,
826
+ f: (a: A) => Effect.Effect<Option.Option<B>, E2, R2>,
827
827
  executionStrategy?: ExecutionStrategy.ExecutionStrategy
828
828
  ): Fx<R | R2 | Scope.Scope, E | E2, B> {
829
829
  return exhaustMapLatest(fx, (a) =>
@@ -855,7 +855,7 @@ export function concatMap<R, E, A, R2, E2, B>(
855
855
 
856
856
  export function flatMapConcurrentlyEffect<R, E, A, R2, E2, B>(
857
857
  fx: Fx<R, E, A>,
858
- f: (a: A) => Effect.Effect<R2, E2, B>,
858
+ f: (a: A) => Effect.Effect<B, E2, R2>,
859
859
  capacity: number,
860
860
  executionStrategy?: ExecutionStrategy.ExecutionStrategy
861
861
  ): Fx<R | R2 | Scope.Scope, E | E2, B> {
@@ -872,7 +872,7 @@ export function flatMap<R, E, A, R2, E2, B>(
872
872
 
873
873
  export function flatMapEffect<R, E, A, R2, E2, B>(
874
874
  fx: Fx<R, E, A>,
875
- f: (a: A) => Effect.Effect<R2, E2, B>,
875
+ f: (a: A) => Effect.Effect<B, E2, R2>,
876
876
  executionStrategy?: ExecutionStrategy.ExecutionStrategy
877
877
  ): Fx<R | R2 | Scope.Scope, E | E2, B> {
878
878
  return flatMap(fx, (a) => fromEffect(f(a)), executionStrategy)
@@ -890,9 +890,9 @@ class FlatMapWithStrategy<
890
890
  f: (
891
891
  fork: FxFork,
892
892
  scope: Scope.Scope
893
- ) => Effect.Effect<R, E, A>,
893
+ ) => Effect.Effect<A, E, R>,
894
894
  executionStrategy: ExecutionStrategy.ExecutionStrategy
895
- ) => Effect.Effect<Scope.Scope | R, E, void>
895
+ ) => Effect.Effect<void, E, Scope.Scope | R>
896
896
 
897
897
  constructor(
898
898
  readonly i0: Fx<R, E, A>,
@@ -905,7 +905,7 @@ class FlatMapWithStrategy<
905
905
  this.withFork = withFlattenStrategy(i2)
906
906
  }
907
907
 
908
- run<R3>(sink: Sink.Sink<R3, E | E2, B>): Effect.Effect<R | R2 | R3 | Scope.Scope, never, unknown> {
908
+ run<R3>(sink: Sink.Sink<R3, E | E2, B>): Effect.Effect<unknown, never, R | R2 | R3 | Scope.Scope> {
909
909
  return this.withFork(
910
910
  (fork) =>
911
911
  Sink.withEarlyExit(sink, (sink) =>
@@ -959,7 +959,7 @@ class FlatMapWithStrategy<
959
959
  }
960
960
 
961
961
  export function fromFxEffect<R, E, R2, E2, B>(
962
- effect: Effect.Effect<R, E, Fx<R2, E2, B>>
962
+ effect: Effect.Effect<Fx<R2, E2, B>, E, R>
963
963
  ): Fx<R | R2, E | E2, B> {
964
964
  return new FromFxEffect(effect)
965
965
  }
@@ -971,11 +971,11 @@ class FromFxEffect<
971
971
  E2,
972
972
  B
973
973
  > extends FxBase<R | R2, E | E2, B> {
974
- constructor(readonly i0: Effect.Effect<R, E, Fx<R2, E2, B>>) {
974
+ constructor(readonly i0: Effect.Effect<Fx<R2, E2, B>, E, R>) {
975
975
  super()
976
976
  }
977
977
 
978
- run<R3>(sink: Sink.Sink<R3, E | E2, B>): Effect.Effect<R | R2 | R3, never, unknown> {
978
+ run<R3>(sink: Sink.Sink<R3, E | E2, B>): Effect.Effect<unknown, never, R | R2 | R3> {
979
979
  return Effect.matchCauseEffect(this.i0, {
980
980
  onFailure: (cause) => sink.onFailure(cause),
981
981
  onSuccess: (fx) => fx.run(sink)
@@ -1022,7 +1022,7 @@ class ContinueWith<
1022
1022
  super()
1023
1023
  }
1024
1024
 
1025
- run<R3>(sink: Sink.Sink<R3, E | E2, A | B>): Effect.Effect<R | R2 | R3, never, unknown> {
1025
+ run<R3>(sink: Sink.Sink<R3, E | E2, A | B>): Effect.Effect<unknown, never, R | R2 | R3> {
1026
1026
  return Effect.flatMap(this.i0.run(sink), () => this.i1().run(sink))
1027
1027
  }
1028
1028
 
@@ -1064,7 +1064,7 @@ class OrElseCause<
1064
1064
  super()
1065
1065
  }
1066
1066
 
1067
- run<R3>(sink: Sink.Sink<R3, E | E2, A | B>): Effect.Effect<R | R2 | R3, never, unknown> {
1067
+ run<R3>(sink: Sink.Sink<R3, E | E2, A | B>): Effect.Effect<unknown, never, R | R2 | R3> {
1068
1068
  return Effect.catchAllCause(observe(this.i0, sink.onSuccess), (cause) => this.i1(cause).run(sink))
1069
1069
  }
1070
1070
 
@@ -1099,9 +1099,9 @@ class OrElse<
1099
1099
  super()
1100
1100
  }
1101
1101
 
1102
- run<R3>(sink: Sink.Sink<R3, E | E2, A | B>): Effect.Effect<R | R2 | R3, never, unknown> {
1102
+ run<R3>(sink: Sink.Sink<R3, E | E2, A | B>): Effect.Effect<unknown, never, R | R2 | R3> {
1103
1103
  return Effect.catchAll(
1104
- Effect.asyncEffect<never, E, void, R | R2 | R3, never, unknown>((resume) =>
1104
+ Effect.asyncEffect<unknown, E, never, void, never, R | R2 | R3>((resume) =>
1105
1105
  Effect.zipRight(
1106
1106
  this.i0.run(
1107
1107
  Sink.make(
@@ -1116,7 +1116,7 @@ class OrElse<
1116
1116
  Effect.sync(() => resume(Effect.unit))
1117
1117
  )
1118
1118
  ),
1119
- (error) => this.i1(error).run(sink)
1119
+ (error: E) => this.i1(error).run(sink)
1120
1120
  )
1121
1121
  }
1122
1122
 
@@ -1141,7 +1141,7 @@ class Suspend<R, E, A> extends FxBase<R, E, A> {
1141
1141
  super()
1142
1142
  }
1143
1143
 
1144
- run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<R | R2, never, unknown> {
1144
+ run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<unknown, never, R | R2> {
1145
1145
  return this.i0().run(sink)
1146
1146
  }
1147
1147
  }
@@ -1155,7 +1155,7 @@ class SuspendedTransformer<R, E, A, R2, E2, B> extends FxBase<R | R2, E2, B> {
1155
1155
  super()
1156
1156
  }
1157
1157
 
1158
- run<R3>(sink: Sink.Sink<R3, E2, B>): Effect.Effect<R | R2 | R3, never, unknown> {
1158
+ run<R3>(sink: Sink.Sink<R3, E2, B>): Effect.Effect<unknown, never, R | R2 | R3> {
1159
1159
  return this.i0().run(Op.compileOperatorSink(this.i1, sink))
1160
1160
  }
1161
1161
  }
@@ -1220,7 +1220,7 @@ class MergeWithStrategy<
1220
1220
 
1221
1221
  run<R2>(
1222
1222
  sink: Sink.Sink<R2, Fx.Error<FX[number]>, Fx.Success<FX[number]>>
1223
- ): Effect.Effect<Fx.Context<FX[number]> | R2, never, unknown> {
1223
+ ): Effect.Effect<unknown, never, Fx.Context<FX[number]> | R2> {
1224
1224
  switch (this.i1._tag) {
1225
1225
  case "Unordered":
1226
1226
  return runUnordered(this.i0, sink, this.i1.concurrency === Infinity ? "unbounded" : this.i1.concurrency)
@@ -1252,7 +1252,7 @@ function runUnordered<
1252
1252
  fx: FX,
1253
1253
  sink: Sink.Sink<R2, any, any>,
1254
1254
  concurrency: number | "unbounded"
1255
- ): Effect.Effect<R2 | Fx.Context<FX[number]>, never, unknown> {
1255
+ ): Effect.Effect<unknown, never, R2 | Fx.Context<FX[number]>> {
1256
1256
  return Effect.forEach(fx, (fx) => fx.run(sink), { concurrency, discard: true })
1257
1257
  }
1258
1258
 
@@ -1263,7 +1263,7 @@ function runOrdered<
1263
1263
  fx: FX,
1264
1264
  sink: Sink.Sink<R2, any, any>,
1265
1265
  concurrency: number | "unbounded"
1266
- ): Effect.Effect<R2 | Fx.Context<FX[number]>, never, unknown> {
1266
+ ): Effect.Effect<unknown, never, R2 | Fx.Context<FX[number]>> {
1267
1267
  return Effect.suspend(
1268
1268
  () => {
1269
1269
  const buffers = withBuffers(fx.length, sink)
@@ -1293,7 +1293,7 @@ function runSwitch<
1293
1293
  >(
1294
1294
  fx: FX,
1295
1295
  sink: Sink.Sink<R2, any, any>
1296
- ): Effect.Effect<R2 | Fx.Context<FX[number]>, never, unknown> {
1296
+ ): Effect.Effect<unknown, never, R2 | Fx.Context<FX[number]>> {
1297
1297
  return Effect.forEach(fx, (fx) => fx.run(sink), { concurrency: 1, discard: true })
1298
1298
  }
1299
1299
 
@@ -1316,7 +1316,7 @@ class TakeWhile<R, E, A> extends FxBase<R, E, A> {
1316
1316
  super()
1317
1317
  }
1318
1318
 
1319
- run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<R | R2, never, unknown> {
1319
+ run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<unknown, never, R | R2> {
1320
1320
  return Sink.takeWhile(sink, this.i1, (s) => this.i0.run(s))
1321
1321
  }
1322
1322
 
@@ -1347,7 +1347,7 @@ class DropUntil<R, E, A> extends FxBase<R, E, A> {
1347
1347
  super()
1348
1348
  }
1349
1349
 
1350
- run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<R | R2, never, unknown> {
1350
+ run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<unknown, never, R | R2> {
1351
1351
  return this.i0.run(Sink.dropWhile(sink, this.i1))
1352
1352
  }
1353
1353
 
@@ -1371,7 +1371,7 @@ class DropAfter<R, E, A> extends FxBase<R, E, A> {
1371
1371
  super()
1372
1372
  }
1373
1373
 
1374
- run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<R | R2, never, unknown> {
1374
+ run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<unknown, never, R | R2> {
1375
1375
  return this.i0.run(Sink.dropAfter(sink, this.i1))
1376
1376
  }
1377
1377
 
@@ -1385,30 +1385,30 @@ class DropAfter<R, E, A> extends FxBase<R, E, A> {
1385
1385
 
1386
1386
  export function takeWhileEffect<R, E, A, R2, E2>(
1387
1387
  fx: Fx<R, E, A>,
1388
- f: (a: A) => Effect.Effect<R2, E2, boolean>
1388
+ f: (a: A) => Effect.Effect<boolean, E2, R2>
1389
1389
  ): Fx<R | R2, E | E2, A> {
1390
1390
  return TakeWhileEffect.make(fx, f)
1391
1391
  }
1392
1392
 
1393
1393
  export function takeUntilEffect<R, E, A, R2, E2>(
1394
1394
  fx: Fx<R, E, A>,
1395
- f: (a: A) => Effect.Effect<R2, E2, boolean>
1395
+ f: (a: A) => Effect.Effect<boolean, E2, R2>
1396
1396
  ): Fx<R | R2, E | E2, A> {
1397
1397
  return TakeWhileEffect.make(fx, (a) => Effect.map(f(a), Boolean.not))
1398
1398
  }
1399
1399
 
1400
1400
  class TakeWhileEffect<R, E, A, R2, E2> extends FxBase<R | R2, E | E2, A> {
1401
- constructor(readonly i0: Fx<R, E, A>, readonly i1: (a: A) => Effect.Effect<R2, E2, boolean>) {
1401
+ constructor(readonly i0: Fx<R, E, A>, readonly i1: (a: A) => Effect.Effect<boolean, E2, R2>) {
1402
1402
  super()
1403
1403
  }
1404
1404
 
1405
- run<R3>(sink: Sink.Sink<R3, E | E2, A>): Effect.Effect<R | R2 | R3, never, unknown> {
1405
+ run<R3>(sink: Sink.Sink<R3, E | E2, A>): Effect.Effect<unknown, never, R | R2 | R3> {
1406
1406
  return Sink.takeWhileEffect(sink, this.i1, (s) => this.i0.run(s))
1407
1407
  }
1408
1408
 
1409
1409
  static make<R, E, A, R2, E2>(
1410
1410
  fx: Fx<R, E, A>,
1411
- f: (a: A) => Effect.Effect<R2, E2, boolean>
1411
+ f: (a: A) => Effect.Effect<boolean, E2, R2>
1412
1412
  ): Fx<R | R2, E | E2, A> {
1413
1413
  if (isEmpty(fx) || isNever(fx)) return fx
1414
1414
  else {
@@ -1419,30 +1419,30 @@ class TakeWhileEffect<R, E, A, R2, E2> extends FxBase<R | R2, E | E2, A> {
1419
1419
 
1420
1420
  export function dropWhileEffect<R, E, A>(
1421
1421
  fx: Fx<R, E, A>,
1422
- f: (a: A) => Effect.Effect<R, E, boolean>
1422
+ f: (a: A) => Effect.Effect<boolean, E, R>
1423
1423
  ): Fx<R, E, A> {
1424
1424
  return DropWhileEffect.make(fx, f)
1425
1425
  }
1426
1426
 
1427
1427
  export function dropUntilEffect<R, E, A>(
1428
1428
  fx: Fx<R, E, A>,
1429
- f: (a: A) => Effect.Effect<R, E, boolean>
1429
+ f: (a: A) => Effect.Effect<boolean, E, R>
1430
1430
  ): Fx<R, E, A> {
1431
1431
  return DropWhileEffect.make(fx, (a) => Effect.map(f(a), Boolean.not))
1432
1432
  }
1433
1433
 
1434
1434
  class DropWhileEffect<R, E, A> extends FxBase<R, E, A> {
1435
- constructor(readonly i0: Fx<R, E, A>, readonly i1: (a: A) => Effect.Effect<R, E, boolean>) {
1435
+ constructor(readonly i0: Fx<R, E, A>, readonly i1: (a: A) => Effect.Effect<boolean, E, R>) {
1436
1436
  super()
1437
1437
  }
1438
1438
 
1439
- run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<R | R2, never, unknown> {
1439
+ run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<unknown, never, R | R2> {
1440
1440
  return this.i0.run(Sink.dropWhileEffect(sink, this.i1))
1441
1441
  }
1442
1442
 
1443
1443
  static make<R, E, A>(
1444
1444
  fx: Fx<R, E, A>,
1445
- f: (a: A) => Effect.Effect<R, E, boolean>
1445
+ f: (a: A) => Effect.Effect<boolean, E, R>
1446
1446
  ): Fx<R, E, A> {
1447
1447
  if (isEmpty(fx) || isNever(fx)) return fx
1448
1448
  else {
@@ -1453,23 +1453,23 @@ class DropWhileEffect<R, E, A> extends FxBase<R, E, A> {
1453
1453
 
1454
1454
  export function dropAfterEffect<R, E, A, R2, E2>(
1455
1455
  fx: Fx<R, E, A>,
1456
- f: (a: A) => Effect.Effect<R2, E2, boolean>
1456
+ f: (a: A) => Effect.Effect<boolean, E2, R2>
1457
1457
  ): Fx<R | R2, E | E2, A> {
1458
1458
  return DropAfterEffect.make(fx, f)
1459
1459
  }
1460
1460
 
1461
1461
  class DropAfterEffect<R, E, A, R2, E2> extends FxBase<R | R2, E | E2, A> {
1462
- constructor(readonly i0: Fx<R, E, A>, readonly i1: (a: A) => Effect.Effect<R2, E2, boolean>) {
1462
+ constructor(readonly i0: Fx<R, E, A>, readonly i1: (a: A) => Effect.Effect<boolean, E2, R2>) {
1463
1463
  super()
1464
1464
  }
1465
1465
 
1466
- run<R3>(sink: Sink.Sink<R3, E | E2, A>): Effect.Effect<R | R2 | R3, never, unknown> {
1466
+ run<R3>(sink: Sink.Sink<R3, E | E2, A>): Effect.Effect<unknown, never, R | R2 | R3> {
1467
1467
  return this.i0.run(Sink.dropAfterEffect(sink, this.i1))
1468
1468
  }
1469
1469
 
1470
1470
  static make<R, E, A, R2, E2>(
1471
1471
  fx: Fx<R, E, A>,
1472
- f: (a: A) => Effect.Effect<R2, E2, boolean>
1472
+ f: (a: A) => Effect.Effect<boolean, E2, R2>
1473
1473
  ): Fx<R | R2, E | E2, A> {
1474
1474
  if (isEmpty(fx) || isNever(fx)) return fx
1475
1475
  else {
@@ -1504,7 +1504,7 @@ class During<R, E, A, R2, E2, R3, E3, B> extends FxBase<R | R2 | R3 | Scope.Scop
1504
1504
  super()
1505
1505
  }
1506
1506
 
1507
- run<R4>(sink: Sink.Sink<R4, E | E2 | E3, A>): Effect.Effect<R | R2 | R3 | R4 | Scope.Scope, never, unknown> {
1507
+ run<R4>(sink: Sink.Sink<R4, E | E2 | E3, A>): Effect.Effect<unknown, never, R | R2 | R3 | R4 | Scope.Scope> {
1508
1508
  return withScopedFork(
1509
1509
  (fork) =>
1510
1510
  Sink.withEarlyExit(sink, (s) => {
@@ -1551,7 +1551,7 @@ class During<R, E, A, R2, E2, R3, E3, B> extends FxBase<R | R2 | R3 | Scope.Scop
1551
1551
 
1552
1552
  export function middleware<R, E, A, R3>(
1553
1553
  fx: Fx<R, E, A>,
1554
- effect: (effect: Effect.Effect<R, never, unknown>) => Effect.Effect<R3, never, unknown>,
1554
+ effect: (effect: Effect.Effect<unknown, never, R>) => Effect.Effect<unknown, never, R3>,
1555
1555
  sink?: (sink: Sink.Sink<never, E, A>) => Sink.Sink<R, E, A>
1556
1556
  ): Fx<R3, E, A> {
1557
1557
  return new Middleware(fx, effect, sink)
@@ -1559,21 +1559,21 @@ export function middleware<R, E, A, R3>(
1559
1559
 
1560
1560
  export function onExit<R, E, A, R2>(
1561
1561
  fx: Fx<R, E, A>,
1562
- f: (exit: Exit.Exit<never, unknown>) => Effect.Effect<R2, never, unknown>
1562
+ f: (exit: Exit.Exit<unknown>) => Effect.Effect<unknown, never, R2>
1563
1563
  ): Fx<R | R2, E, A> {
1564
1564
  return middleware(fx, Effect.onExit(f))
1565
1565
  }
1566
1566
 
1567
1567
  export function onInterrupt<R, E, A, R2>(
1568
1568
  fx: Fx<R, E, A>,
1569
- f: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<R2, never, unknown>
1569
+ f: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<unknown, never, R2>
1570
1570
  ): Fx<R | R2, E, A> {
1571
1571
  return middleware(fx, Effect.onInterrupt(f))
1572
1572
  }
1573
1573
 
1574
1574
  export function onError<R, E, A, R2>(
1575
1575
  fx: Fx<R, E, A>,
1576
- f: (cause: Cause.Cause<never>) => Effect.Effect<R2, never, unknown>
1576
+ f: (cause: Cause.Cause<never>) => Effect.Effect<unknown, never, R2>
1577
1577
  ): Fx<R | R2, E, A> {
1578
1578
  return middleware(fx, Effect.onError(f))
1579
1579
  }
@@ -1696,13 +1696,13 @@ export function withTracer<R, E, A>(
1696
1696
  class Middleware<R, E, A, R2> extends FxBase<R2, E, A> {
1697
1697
  constructor(
1698
1698
  readonly i0: Fx<R, E, A>,
1699
- readonly i1: (effect: Effect.Effect<R, never, unknown>) => Effect.Effect<R2, never, unknown>,
1699
+ readonly i1: (effect: Effect.Effect<unknown, never, R>) => Effect.Effect<unknown, never, R2>,
1700
1700
  readonly i2?: (sink: Sink.Sink<never, E, A>) => Sink.Sink<R, E, A>
1701
1701
  ) {
1702
1702
  super()
1703
1703
  }
1704
1704
 
1705
- run<R3>(sink: Sink.Sink<R3, E, A>): Effect.Effect<R2 | R3, never, unknown> {
1705
+ run<R3>(sink: Sink.Sink<R3, E, A>): Effect.Effect<unknown, never, R2 | R3> {
1706
1706
  return Effect.contextWithEffect((ctx) => {
1707
1707
  const s = Sink.provide(sink, ctx)
1708
1708
 
@@ -1712,23 +1712,23 @@ class Middleware<R, E, A, R2> extends FxBase<R2, E, A> {
1712
1712
  }
1713
1713
 
1714
1714
  export function acquireUseRelease<R, E, A, R2, E2, B, R3, E3, C>(
1715
- acquire: Effect.Effect<R, E, A>,
1715
+ acquire: Effect.Effect<A, E, R>,
1716
1716
  use: (a: A) => Fx<R2, E2, B>,
1717
- release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<R3, E3, C>
1717
+ release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<C, E3, R3>
1718
1718
  ): Fx<R | R2 | R3, E | E2 | E3, B> {
1719
1719
  return new AcquireUseRelease(acquire, use, release)
1720
1720
  }
1721
1721
 
1722
1722
  class AcquireUseRelease<R, E, A, R2, E2, B, R3, E3, C> extends FxBase<R | R2 | R3, E | E2 | E3, B> {
1723
1723
  constructor(
1724
- readonly acquire: Effect.Effect<R, E, A>,
1724
+ readonly acquire: Effect.Effect<A, E, R>,
1725
1725
  readonly use: (a: A) => Fx<R2, E2, B>,
1726
- readonly release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<R3, E3, C>
1726
+ readonly release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<C, E3, R3>
1727
1727
  ) {
1728
1728
  super()
1729
1729
  }
1730
1730
 
1731
- run<R4>(sink: Sink.Sink<R4, E | E2 | E3, B>): Effect.Effect<R | R2 | R3 | R4, never, unknown> {
1731
+ run<R4>(sink: Sink.Sink<R4, E | E2 | E3, B>): Effect.Effect<unknown, never, R | R2 | R3 | R4> {
1732
1732
  return Effect.catchAllCause(
1733
1733
  Effect.acquireUseRelease(
1734
1734
  this.acquire,
@@ -1775,7 +1775,7 @@ export function provideContext<R, E, A, R2>(
1775
1775
 
1776
1776
  export function provideLayer<R, E, A, R2, E2, S>(
1777
1777
  fx: Fx<R, E, A>,
1778
- layer: Layer.Layer<R2, E2, S>
1778
+ layer: Layer.Layer<S, E2, R2>
1779
1779
  ): Fx<R2 | Exclude<R, S>, E | E2, A> {
1780
1780
  return ProvideFx.make(fx, Provide.ProvideLayer(layer))
1781
1781
  }
@@ -1798,16 +1798,16 @@ export function provideService<R, E, A, I, S>(
1798
1798
  export function provideServiceEffect<R, E, A, I, S, R2, E2>(
1799
1799
  fx: Fx<R, E, A>,
1800
1800
  service: Context.Tag<I, S>,
1801
- instance: Effect.Effect<R2, E2, S>
1801
+ instance: Effect.Effect<S, E2, R2>
1802
1802
  ): Fx<Exclude<R, I> | R2, E | E2, A> {
1803
1803
  return ProvideFx.make(fx, Provide.ProvideServiceEffect(service, instance))
1804
1804
  }
1805
1805
 
1806
1806
  export function provide<R, E, A, R2 = never, E2 = never, S = never>(
1807
1807
  fx: Fx<R, E, A>,
1808
- provide: Layer.Layer<R2, E2, S> | Context.Context<S> | Runtime.Runtime<S>
1808
+ provide: Layer.Layer<S, E2, R2> | Context.Context<S> | Runtime.Runtime<S>
1809
1809
  ): Fx<Exclude<R, S> | R2, E | E2, A> {
1810
- if (Layer.isLayer(provide)) return provideLayer(fx, provide as Layer.Layer<R2, E2, S>)
1810
+ if (Layer.isLayer(provide)) return provideLayer(fx, provide as Layer.Layer<S, E2, R2>)
1811
1811
  else if (Context.isContext(provide)) return provideContext(fx, provide as Context.Context<S>)
1812
1812
  else return provideRuntime(fx, provide as Runtime.Runtime<S>)
1813
1813
  }
@@ -1817,7 +1817,7 @@ class ProvideFx<R, E, A, R2, E2, S> extends FxBase<R2 | Exclude<R, S>, E | E2, A
1817
1817
  super()
1818
1818
  }
1819
1819
 
1820
- run<R3>(sink: Sink.Sink<R3, E | E2, A>): Effect.Effect<R2 | R3 | Exclude<R, S>, never, unknown> {
1820
+ run<R3>(sink: Sink.Sink<R3, E | E2, A>): Effect.Effect<unknown, never, R2 | R3 | Exclude<R, S>> {
1821
1821
  return Effect.acquireUseRelease(
1822
1822
  Scope.make(),
1823
1823
  (scope) =>
@@ -1898,14 +1898,14 @@ export function filterMapError<R, E, A, E2>(
1898
1898
 
1899
1899
  export function mapCauseEffect<R, E, A, R2, E2, E3>(
1900
1900
  fx: Fx<R, E, A>,
1901
- f: (cause: Cause.Cause<E>) => Effect.Effect<R2, E2, Cause.Cause<E3>>
1901
+ f: (cause: Cause.Cause<E>) => Effect.Effect<Cause.Cause<E3>, E2, R2>
1902
1902
  ): Fx<R | R2, E2 | E3, A> {
1903
1903
  return new TransformerCause(fx, EffectOp.MapEffect(f))
1904
1904
  }
1905
1905
 
1906
1906
  export function mapErrorEffect<R, E, A, R2, E2, E3>(
1907
1907
  fx: Fx<R, E, A>,
1908
- f: (e: E) => Effect.Effect<R2, E2, E3>
1908
+ f: (e: E) => Effect.Effect<E3, E2, R2>
1909
1909
  ): Fx<R | R2, E2 | E3, A> {
1910
1910
  return mapCauseEffect(fx, (cause) =>
1911
1911
  Either.match(Cause.failureOrCause(cause), {
@@ -1916,14 +1916,14 @@ export function mapErrorEffect<R, E, A, R2, E2, E3>(
1916
1916
 
1917
1917
  export function filterCauseEffect<R, E, A, R2, E2>(
1918
1918
  fx: Fx<R, E, A>,
1919
- f: (cause: Cause.Cause<E>) => Effect.Effect<R2, E2, boolean>
1919
+ f: (cause: Cause.Cause<E>) => Effect.Effect<boolean, E2, R2>
1920
1920
  ): Fx<R | R2, E2, A> {
1921
1921
  return new TransformerCause(fx, EffectOp.FilterEffect(f))
1922
1922
  }
1923
1923
 
1924
1924
  export function filterErrorEffect<R, E, A, R2, E2>(
1925
1925
  fx: Fx<R, E, A>,
1926
- f: (e: E) => Effect.Effect<R2, E2, boolean>
1926
+ f: (e: E) => Effect.Effect<boolean, E2, R2>
1927
1927
  ): Fx<R | R2, E2, A> {
1928
1928
  return filterCauseEffect(fx, (cause) =>
1929
1929
  Either.match(Cause.failureOrCause(cause), {
@@ -1934,14 +1934,14 @@ export function filterErrorEffect<R, E, A, R2, E2>(
1934
1934
 
1935
1935
  export function filterMapCauseEffect<R, E, A, R2, E2, E3>(
1936
1936
  fx: Fx<R, E, A>,
1937
- f: (cause: Cause.Cause<E>) => Effect.Effect<R2, E2, Option.Option<Cause.Cause<E3>>>
1937
+ f: (cause: Cause.Cause<E>) => Effect.Effect<Option.Option<Cause.Cause<E3>>, E2, R2>
1938
1938
  ): Fx<R | R2, E2 | E3, A> {
1939
1939
  return new TransformerCause(fx, EffectOp.FilterMapEffect(f))
1940
1940
  }
1941
1941
 
1942
1942
  export function filterMapErrorEffect<R, E, A, R2, E2, E3>(
1943
1943
  fx: Fx<R, E, A>,
1944
- f: (e: E) => Effect.Effect<R2, E2, Option.Option<E3>>
1944
+ f: (e: E) => Effect.Effect<Option.Option<E3>, E2, R2>
1945
1945
  ): Fx<R | R2, E2 | E3, A> {
1946
1946
  return filterMapCauseEffect(fx, (cause) =>
1947
1947
  Either.match(Cause.failureOrCause(cause), {
@@ -1976,7 +1976,7 @@ export function loopError<R, E, A, B, C>(
1976
1976
  export function loopCauseEffect<R, E, A, R2, E2, B, C>(
1977
1977
  fx: Fx<R, E, A>,
1978
1978
  seed: B,
1979
- f: (b: B, cause: Cause.Cause<E>) => Effect.Effect<R2, E2, readonly [Cause.Cause<C>, B]>
1979
+ f: (b: B, cause: Cause.Cause<E>) => Effect.Effect<readonly [Cause.Cause<C>, B], E2, R2>
1980
1980
  ): Fx<R | R2, E2 | C, A> {
1981
1981
  return new TransformerCause(fx, EffectLoopOp.LoopEffectOperator(seed, f))
1982
1982
  }
@@ -1984,7 +1984,7 @@ export function loopCauseEffect<R, E, A, R2, E2, B, C>(
1984
1984
  export function loopErrorEffect<R, E, A, R2, E2, B, C>(
1985
1985
  fx: Fx<R, E, A>,
1986
1986
  seed: B,
1987
- f: (b: B, e: E) => Effect.Effect<R2, E2, readonly [C, B]>
1987
+ f: (b: B, e: E) => Effect.Effect<readonly [C, B], E2, R2>
1988
1988
  ) {
1989
1989
  return loopCauseEffect(fx, seed, (b, cause) =>
1990
1990
  Either.match(Cause.failureOrCause(cause), {
@@ -2019,7 +2019,7 @@ export function filterMapLoopError<R, E, A, B, C>(
2019
2019
  export function filterMapLoopCauseEffect<R, E, A, R2, E2, B, C>(
2020
2020
  fx: Fx<R, E, A>,
2021
2021
  seed: B,
2022
- f: (b: B, cause: Cause.Cause<E>) => Effect.Effect<R2, E2, readonly [Option.Option<Cause.Cause<C>>, B]>
2022
+ f: (b: B, cause: Cause.Cause<E>) => Effect.Effect<readonly [Option.Option<Cause.Cause<C>>, B], E2, R2>
2023
2023
  ): Fx<R | R2, E2 | C, A> {
2024
2024
  return new TransformerCause(fx, EffectLoopOp.FilterMapLoopEffectOperator(seed, f))
2025
2025
  }
@@ -2027,7 +2027,7 @@ export function filterMapLoopCauseEffect<R, E, A, R2, E2, B, C>(
2027
2027
  export function filterMapLoopErrorEffect<R, E, A, R2, E2, B, C>(
2028
2028
  fx: Fx<R, E, A>,
2029
2029
  seed: B,
2030
- f: (b: B, e: E) => Effect.Effect<R2, E2, readonly [Option.Option<C>, B]>
2030
+ f: (b: B, e: E) => Effect.Effect<readonly [Option.Option<C>, B], E2, R2>
2031
2031
  ) {
2032
2032
  return filterMapLoopCauseEffect(fx, seed, (b, cause) =>
2033
2033
  Either.match(Cause.failureOrCause(cause), {
@@ -2041,7 +2041,7 @@ class TransformerCause<R, E, A, R2, E2> extends FxBase<R | R2, E2, A> {
2041
2041
  super()
2042
2042
  }
2043
2043
 
2044
- run<R2>(sink: Sink.Sink<R2, E2, A>): Effect.Effect<R | R2, never, unknown> {
2044
+ run<R2>(sink: Sink.Sink<R2, E2, A>): Effect.Effect<unknown, never, R | R2> {
2045
2045
  return this.i0.run(Op.compileOperatorSinkCause(this.i1, sink))
2046
2046
  }
2047
2047
  }
@@ -2167,9 +2167,9 @@ class FlatMapCauseWithStrategy<
2167
2167
  f: (
2168
2168
  fork: FxFork,
2169
2169
  scope: Scope.Scope
2170
- ) => Effect.Effect<R, E, A>,
2170
+ ) => Effect.Effect<A, E, R>,
2171
2171
  executionStrategy: ExecutionStrategy.ExecutionStrategy
2172
- ) => Effect.Effect<Scope.Scope | R, E, void>
2172
+ ) => Effect.Effect<void, E, Scope.Scope | R>
2173
2173
 
2174
2174
  constructor(
2175
2175
  readonly i0: Fx<R, E, A>,
@@ -2182,7 +2182,7 @@ class FlatMapCauseWithStrategy<
2182
2182
  this.withFork = withFlattenStrategy(this.i2)
2183
2183
  }
2184
2184
 
2185
- run<R3>(sink: Sink.Sink<R3, E | E2, A | B>): Effect.Effect<R | R2 | R3 | Scope.Scope, never, unknown> {
2185
+ run<R3>(sink: Sink.Sink<R3, E | E2, A | B>): Effect.Effect<unknown, never, R | R2 | R3 | Scope.Scope> {
2186
2186
  return this.withFork(
2187
2187
  (fork) => this.i0.run(Sink.make((cause) => fork(this.i1(cause).run(sink)), (a) => sink.onSuccess(a))),
2188
2188
  this.i3
@@ -2205,9 +2205,9 @@ class MatchWithStrategy<
2205
2205
  f: (
2206
2206
  fork: FxFork,
2207
2207
  scope: Scope.Scope
2208
- ) => Effect.Effect<R, E, A>,
2208
+ ) => Effect.Effect<A, E, R>,
2209
2209
  executionStrategy: ExecutionStrategy.ExecutionStrategy
2210
- ) => Effect.Effect<Scope.Scope | R, E, void>
2210
+ ) => Effect.Effect<void, E, Scope.Scope | R>
2211
2211
 
2212
2212
  constructor(
2213
2213
  readonly i0: Fx<R, E, A>,
@@ -2221,7 +2221,7 @@ class MatchWithStrategy<
2221
2221
  this.withFork = withFlattenStrategy(this.i3)
2222
2222
  }
2223
2223
 
2224
- run<R4>(sink: Sink.Sink<R4, E2 | E3, B | C>): Effect.Effect<R | R2 | R3 | R4 | Scope.Scope, never, unknown> {
2224
+ run<R4>(sink: Sink.Sink<R4, E2 | E3, B | C>): Effect.Effect<unknown, never, R | R2 | R3 | R4 | Scope.Scope> {
2225
2225
  return this.withFork(
2226
2226
  (fork) =>
2227
2227
  this.i0.run(Sink.make(
@@ -2374,7 +2374,7 @@ class Tuple<const FX extends ReadonlyArray<Fx<any, any, any>>> extends FxBase<
2374
2374
 
2375
2375
  run<R2>(
2376
2376
  sink: Sink.Sink<R2, Fx.Error<FX[number]>, { readonly [K in keyof FX]: Fx.Success<FX[K]> }>
2377
- ): Effect.Effect<Fx.Context<FX[number]> | R2, never, unknown> {
2377
+ ): Effect.Effect<unknown, never, Fx.Context<FX[number]> | R2> {
2378
2378
  return tupleSink(
2379
2379
  sink,
2380
2380
  (onSuccess) =>
@@ -2437,16 +2437,16 @@ export function all<const FX extends ReadonlyArray<Fx<any, any, any> | Readonly<
2437
2437
 
2438
2438
  export function exit<R, E, A>(
2439
2439
  fx: Fx<R, E, A>
2440
- ): Fx<R, never, Exit.Exit<E, A>> {
2440
+ ): Fx<R, never, Exit.Exit<A, E>> {
2441
2441
  return new ExitFx(fx)
2442
2442
  }
2443
2443
 
2444
- class ExitFx<R, E, A> extends FxBase<R, never, Exit.Exit<E, A>> {
2444
+ class ExitFx<R, E, A> extends FxBase<R, never, Exit.Exit<A, E>> {
2445
2445
  constructor(readonly i0: Fx<R, E, A>) {
2446
2446
  super()
2447
2447
  }
2448
2448
 
2449
- run<R2>(sink: Sink.Sink<R2, never, Exit.Exit<E, A>>): Effect.Effect<R | R2, never, unknown> {
2449
+ run<R2>(sink: Sink.Sink<R2, never, Exit.Exit<A, E>>): Effect.Effect<unknown, never, R | R2> {
2450
2450
  return this.i0.run(
2451
2451
  Sink.make((cause) => sink.onSuccess(Exit.failCause(cause)), (a) => sink.onSuccess(Exit.succeed(a)))
2452
2452
  )
@@ -2485,10 +2485,10 @@ class FromAsyncIterable<A> extends FxBase<never, never, A> {
2485
2485
  super()
2486
2486
  }
2487
2487
 
2488
- run<R>(sink: Sink.Sink<R, never, A>): Effect.Effect<R, never, unknown> {
2488
+ run<R>(sink: Sink.Sink<R, never, A>): Effect.Effect<unknown, never, R> {
2489
2489
  return Effect.asyncEffect((cb) => {
2490
2490
  const iterator = this.i0[Symbol.asyncIterator]()
2491
- const loop = (result: IteratorResult<A>): Effect.Effect<R, never, unknown> =>
2491
+ const loop = (result: IteratorResult<A>): Effect.Effect<unknown, never, R> =>
2492
2492
  result.done
2493
2493
  ? Effect.sync(() => cb(Effect.unit))
2494
2494
  : Effect.zipRight(sink.onSuccess(result.value), Effect.flatMap(Effect.promise(() => iterator.next()), loop))
@@ -2501,13 +2501,13 @@ class FromAsyncIterable<A> extends FxBase<never, never, A> {
2501
2501
  }
2502
2502
  }
2503
2503
 
2504
- export function findFirst<R, E, A>(fx: Fx<R, E, A>, predicate: Predicate.Predicate<A>): Effect.Effect<R, E, A> {
2504
+ export function findFirst<R, E, A>(fx: Fx<R, E, A>, predicate: Predicate.Predicate<A>): Effect.Effect<A, E, R> {
2505
2505
  return Effect.asyncEffect((cb) =>
2506
2506
  observe(fx, (a) => predicate(a) ? Effect.sync(() => cb(Effect.succeed(a))) : Effect.unit)
2507
2507
  )
2508
2508
  }
2509
2509
 
2510
- export function first<R, E, A>(fx: Fx<R, E, A>): Effect.Effect<R, E, A> {
2510
+ export function first<R, E, A>(fx: Fx<R, E, A>): Effect.Effect<A, E, R> {
2511
2511
  return findFirst(fx, constTrue)
2512
2512
  }
2513
2513
 
@@ -2520,7 +2520,7 @@ class EitherFx<R, E, A> extends FxBase<R, never, Either.Either<E, A>> {
2520
2520
  super()
2521
2521
  }
2522
2522
 
2523
- run<R2>(sink: Sink.Sink<R2, never, Either.Either<E, A>>): Effect.Effect<R | R2, never, unknown> {
2523
+ run<R2>(sink: Sink.Sink<R2, never, Either.Either<E, A>>): Effect.Effect<unknown, never, R | R2> {
2524
2524
  return this.i0.run(
2525
2525
  Sink.make(
2526
2526
  (cause) =>
@@ -2553,7 +2553,7 @@ class MergeRace<R, E, A, R2, E2, B> extends FxBase<R | R2, E | E2, A | B> {
2553
2553
  super()
2554
2554
  }
2555
2555
 
2556
- run<R3>(sink: Sink.Sink<R3, E | E2, A | B>): Effect.Effect<R | R2 | R3, never, unknown> {
2556
+ run<R3>(sink: Sink.Sink<R3, E | E2, A | B>): Effect.Effect<unknown, never, R | R2 | R3> {
2557
2557
  return Effect.gen(this, function*(_) {
2558
2558
  const fiber1 = yield* _(Effect.fork(this.i0.run(Sink.make(
2559
2559
  sink.onFailure,
@@ -2594,13 +2594,13 @@ class RaceAll<const FX extends ReadonlyArray<Fx<any, any, any>>> extends FxBase<
2594
2594
 
2595
2595
  run<R2>(
2596
2596
  sink: Sink.Sink<R2, Fx.Error<FX[number]>, Fx.Success<FX[number]>>
2597
- ): Effect.Effect<Fx.Context<FX[number]> | R2, never, unknown> {
2597
+ ): Effect.Effect<unknown, never, Fx.Context<FX[number]> | R2> {
2598
2598
  return Effect.gen(this, function*(_) {
2599
- const winner = yield* _(Deferred.make<never, Fiber.RuntimeFiber<never, unknown>>())
2600
- const fibers: Array<Fiber.RuntimeFiber<never, unknown>> = []
2599
+ const winner = yield* _(Deferred.make<Fiber.RuntimeFiber<unknown>>())
2600
+ const fibers: Array<Fiber.RuntimeFiber<unknown>> = []
2601
2601
 
2602
2602
  for (const fx of this.i0) {
2603
- const fiber: Fiber.RuntimeFiber<never, unknown> = yield* _(Effect.fork(fx.run(Sink.make(
2603
+ const fiber: Fiber.RuntimeFiber<unknown> = yield* _(Effect.fork(fx.run(Sink.make(
2604
2604
  sink.onFailure,
2605
2605
  (a) => Effect.flatMap(Deferred.succeed(winner, fiber), () => sink.onSuccess(a))
2606
2606
  ))))
@@ -2640,7 +2640,7 @@ class Snapshot<R, E, A, R2, E2, B, C> extends FxBase<R | R2, E | E2, C> {
2640
2640
  super()
2641
2641
  }
2642
2642
 
2643
- run<R3>(sink: Sink.Sink<R3, E | E2, C>): Effect.Effect<R | R2 | R3, never, unknown> {
2643
+ run<R3>(sink: Sink.Sink<R3, E | E2, C>): Effect.Effect<unknown, never, R | R2 | R3> {
2644
2644
  return Effect.flatMap(
2645
2645
  Ref.make(Option.none<B>()),
2646
2646
  (ref) =>
@@ -2668,7 +2668,7 @@ class Snapshot<R, E, A, R2, E2, B, C> extends FxBase<R | R2, E | E2, C> {
2668
2668
  export function snapshotEffect<R, E, A, R2, E2, B, R3, E3, C>(
2669
2669
  fx: Fx<R, E, A>,
2670
2670
  sampled: Fx<R2, E2, B>,
2671
- f: (a: A, b: B) => Effect.Effect<R3, E3, C>
2671
+ f: (a: A, b: B) => Effect.Effect<C, E3, R3>
2672
2672
  ): Fx<R | R2 | R3, E | E2 | E3, C> {
2673
2673
  return new SnapshotEffect(fx, sampled, f)
2674
2674
  }
@@ -2677,12 +2677,12 @@ class SnapshotEffect<R, E, A, R2, E2, B, R3, E3, C> extends FxBase<R | R2 | R3,
2677
2677
  constructor(
2678
2678
  readonly i0: Fx<R, E, A>,
2679
2679
  readonly i1: Fx<R2, E2, B>,
2680
- readonly i2: (a: A, b: B) => Effect.Effect<R3, E3, C>
2680
+ readonly i2: (a: A, b: B) => Effect.Effect<C, E3, R3>
2681
2681
  ) {
2682
2682
  super()
2683
2683
  }
2684
2684
 
2685
- run<R4>(sink: Sink.Sink<R4, E | E2 | E3, C>): Effect.Effect<R | R2 | R3 | R4, never, unknown> {
2685
+ run<R4>(sink: Sink.Sink<R4, E | E2 | E3, C>): Effect.Effect<unknown, never, R | R2 | R3 | R4> {
2686
2686
  return Effect.flatMap(
2687
2687
  Ref.make(Option.none<B>()),
2688
2688
  (ref) =>