@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
package/src/Fx.ts CHANGED
@@ -55,7 +55,7 @@ export interface Fx<out R, out E, out A> extends Pipeable.Pipeable {
55
55
  /**
56
56
  * @since 1.20.0
57
57
  */
58
- run<R2 = never>(sink: Sink.Sink<R2, E, A>): Effect.Effect<R | R2, never, unknown>
58
+ run<R2 = never>(sink: Sink.Sink<R2, E, A>): Effect.Effect<unknown, never, R | R2>
59
59
  }
60
60
 
61
61
  /**
@@ -264,7 +264,7 @@ export const Ordered: (concurrency: number) => Ordered = strategies.Ordered
264
264
  * @since 1.20.0
265
265
  * @category models
266
266
  */
267
- export type ScopedFork = <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<R, never, Fiber.Fiber<E, A>>
267
+ export type ScopedFork = <R, E, A>(effect: Effect.Effect<A, E, R>) => Effect.Effect<Fiber.Fiber<A, E>, never, R>
268
268
 
269
269
  /**
270
270
  * Type-alias for Effect.forkIn(scope) which runs the Effect runtime
@@ -274,16 +274,16 @@ export type ScopedFork = <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Eff
274
274
  * @category models
275
275
  */
276
276
  export type FxFork = <R>(
277
- effect: Effect.Effect<R, never, void>
278
- ) => Effect.Effect<R, never, void>
277
+ effect: Effect.Effect<void, never, R>
278
+ ) => Effect.Effect<void, never, R>
279
279
 
280
280
  /**
281
281
  * @since 1.20.0
282
282
  */
283
283
  export const make: {
284
- <R, E, A>(run: (sink: Sink.Sink<never, E, A>) => Effect.Effect<R, never, unknown>): Fx<R, E, A>
285
- <E, A>(run: (sink: Sink.Sink<never, E, A>) => Effect.Effect<never, never, unknown>): Fx<never, E, A>
286
- <A>(run: (sink: Sink.Sink<never, never, A>) => Effect.Effect<never, never, unknown>): Fx<never, never, A>
284
+ <R, E, A>(run: (sink: Sink.Sink<never, E, A>) => Effect.Effect<unknown, never, R>): Fx<R, E, A>
285
+ <E, A>(run: (sink: Sink.Sink<never, E, A>) => Effect.Effect<unknown>): Fx<never, E, A>
286
+ <A>(run: (sink: Sink.Sink<never, never, A>) => Effect.Effect<unknown>): Fx<never, never, A>
287
287
  } = core.make
288
288
 
289
289
  /**
@@ -309,7 +309,7 @@ export const fromIterable: <A>(iterable: Iterable<A>) => Fx<never, never, A> = c
309
309
  /**
310
310
  * @since 1.20.0
311
311
  */
312
- export const fromEffect: <R, E, A>(effect: Effect.Effect<R, E, A>) => Fx<R, E, A> = core.fromEffect
312
+ export const fromEffect: <R, E, A>(effect: Effect.Effect<A, E, R>) => Fx<R, E, A> = core.fromEffect
313
313
 
314
314
  /**
315
315
  * @since 1.20.0
@@ -317,10 +317,10 @@ export const fromEffect: <R, E, A>(effect: Effect.Effect<R, E, A>) => Fx<R, E, A
317
317
  export const fromScheduled: {
318
318
  <R2, I, O>(
319
319
  schedule: Schedule.Schedule<R2, I, O>
320
- ): <R, E>(input: Effect.Effect<R, E, I>) => Fx<R | R2, E, O>
320
+ ): <R, E>(input: Effect.Effect<I, E, R>) => Fx<R | R2, E, O>
321
321
 
322
322
  <R, E, I, R2, O>(
323
- input: Effect.Effect<R, E, I>,
323
+ input: Effect.Effect<I, E, R>,
324
324
  schedule: Schedule.Schedule<R2, I, O>
325
325
  ): Fx<R | R2, E, O>
326
326
  } = dual(2, core.fromScheduled)
@@ -331,10 +331,10 @@ export const fromScheduled: {
331
331
  export const schedule: {
332
332
  <R2, O>(
333
333
  schedule: Schedule.Schedule<R2, unknown, O>
334
- ): <R, E, A>(input: Effect.Effect<R, E, A>) => Fx<R | R2, E, A>
334
+ ): <R, E, A>(input: Effect.Effect<A, E, R>) => Fx<R | R2, E, A>
335
335
 
336
336
  <R, E, A, R2, O>(
337
- input: Effect.Effect<R, E, A>,
337
+ input: Effect.Effect<A, E, R>,
338
338
  schedule: Schedule.Schedule<R2, unknown, O>
339
339
  ): Fx<R | R2, E, A>
340
340
  } = dual(2, core.schedule)
@@ -343,10 +343,10 @@ export const schedule: {
343
343
  * @since 1.20.0
344
344
  */
345
345
  export const periodic: {
346
- (period: Duration.DurationInput): <R, E, A>(iterator: Effect.Effect<R, E, A>) => Fx<R, E, A>
347
- <R, E, A>(iterator: Effect.Effect<R, E, A>, period: Duration.DurationInput): Fx<R, E, A>
346
+ (period: Duration.DurationInput): <R, E, A>(iterator: Effect.Effect<A, E, R>) => Fx<R, E, A>
347
+ <R, E, A>(iterator: Effect.Effect<A, E, R>, period: Duration.DurationInput): Fx<R, E, A>
348
348
  } = dual(2, <R, E, A>(
349
- iterator: Effect.Effect<R, E, A>,
349
+ iterator: Effect.Effect<A, E, R>,
350
350
  period: Duration.DurationInput
351
351
  ): Fx<R, E, A> => continueWith(fromEffect(iterator), () => schedule(iterator, Schedule.spaced(period))))
352
352
 
@@ -400,32 +400,32 @@ export const compact = <R, E, A>(fx: Fx<R, E, Option.Option<A>>): Fx<R, E, A> =>
400
400
  * @since 1.20.0
401
401
  */
402
402
  export const mapEffect: {
403
- <A, R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, B>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
404
- <R, E, A, R2, E2, B>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, B>): Fx<R | R2, E | E2, B>
403
+ <A, R2, E2, B>(f: (a: A) => Effect.Effect<B, E2, R2>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
404
+ <R, E, A, R2, E2, B>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<B, E2, R2>): Fx<R | R2, E | E2, B>
405
405
  } = dual(2, core.mapEffect)
406
406
 
407
407
  /**
408
408
  * @since 1.20.0
409
409
  */
410
410
  export const filterMapEffect: {
411
- <A, R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, Option.Option<B>>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
412
- <R, E, A, R2, E2, B>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, Option.Option<B>>): Fx<R | R2, E | E2, B>
411
+ <A, R2, E2, B>(f: (a: A) => Effect.Effect<Option.Option<B>, E2, R2>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
412
+ <R, E, A, R2, E2, B>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<Option.Option<B>, E2, R2>): Fx<R | R2, E | E2, B>
413
413
  } = dual(2, core.filterMapEffect)
414
414
 
415
415
  /**
416
416
  * @since 1.20.0
417
417
  */
418
418
  export const filterEffect: {
419
- <A, R2, E2>(f: (a: A) => Effect.Effect<R2, E2, boolean>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
420
- <R, E, A, R2, E2>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, boolean>): Fx<R | R2, E | E2, A>
419
+ <A, R2, E2>(f: (a: A) => Effect.Effect<boolean, E2, R2>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
420
+ <R, E, A, R2, E2>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<boolean, E2, R2>): Fx<R | R2, E | E2, A>
421
421
  } = dual(2, core.filterEffect)
422
422
 
423
423
  /**
424
424
  * @since 1.20.0
425
425
  */
426
426
  export const tapEffect: {
427
- <A, R2, E2>(f: (a: A) => Effect.Effect<R2, E2, unknown>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
428
- <R, E, A, R2, E2>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, unknown>): Fx<R | R2, E | E2, A>
427
+ <A, R2, E2>(f: (a: A) => Effect.Effect<unknown, E2, R2>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
428
+ <R, E, A, R2, E2>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<unknown, E2, R2>): Fx<R | R2, E | E2, A>
429
429
  } = dual(2, core.tapEffect)
430
430
 
431
431
  /**
@@ -458,12 +458,12 @@ export const filterMapLoop: {
458
458
  export const loopEffect: {
459
459
  <R2, E2, B, A, C>(
460
460
  seed: B,
461
- f: (acc: B, a: A) => Effect.Effect<R2, E2, readonly [C, B]>
461
+ f: (acc: B, a: A) => Effect.Effect<readonly [C, B], E2, R2>
462
462
  ): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, C>
463
463
  <R, E, A, R2, E2, B, C>(
464
464
  fx: Fx<R, E, A>,
465
465
  seed: B,
466
- f: (acc: B, a: A) => Effect.Effect<R2, E2, readonly [C, B]>
466
+ f: (acc: B, a: A) => Effect.Effect<readonly [C, B], E2, R2>
467
467
  ): Fx<R | R2, E | E2, C>
468
468
  } = dual(3, core.loopEffect)
469
469
 
@@ -473,12 +473,12 @@ export const loopEffect: {
473
473
  export const filterMapLoopEffect: {
474
474
  <R2, E2, B, A, C>(
475
475
  seed: B,
476
- f: (acc: B, a: A) => Effect.Effect<R2, E2, readonly [Option.Option<C>, B]>
476
+ f: (acc: B, a: A) => Effect.Effect<readonly [Option.Option<C>, B], E2, R2>
477
477
  ): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, C>
478
478
  <R, E, A, R2, E2, B, C>(
479
479
  fx: Fx<R, E, A>,
480
480
  seed: B,
481
- f: (acc: B, a: A) => Effect.Effect<R2, E2, readonly [Option.Option<C>, B]>
481
+ f: (acc: B, a: A) => Effect.Effect<readonly [Option.Option<C>, B], E2, R2>
482
482
  ): Fx<R | R2, E | E2, C>
483
483
  } = dual(3, core.filterMapLoopEffect)
484
484
 
@@ -486,27 +486,27 @@ export const filterMapLoopEffect: {
486
486
  * @since 1.20.0
487
487
  */
488
488
  export const observe: {
489
- <A, R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, B>): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<R | R2, E | E2, void>
490
- <R, E, A, R2, E2, B>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, B>): Effect.Effect<R | R2, E | E2, void>
489
+ <A, R2, E2, B>(f: (a: A) => Effect.Effect<B, E2, R2>): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<void, E | E2, R | R2>
490
+ <R, E, A, R2, E2, B>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<B, E2, R2>): Effect.Effect<void, E | E2, R | R2>
491
491
  } = dual(2, core.observe)
492
492
 
493
493
  /**
494
494
  * @since 1.20.0
495
495
  */
496
- export const drain: <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<R, E, void> = core.drain
496
+ export const drain: <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<void, E, R> = core.drain
497
497
 
498
498
  /**
499
499
  * @since 1.20.0
500
500
  */
501
501
  export const reduce: {
502
- <A, B>(seed: B, f: (acc: B, a: A) => B): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<R, E, B>
503
- <R, E, A, B>(fx: Fx<R, E, A>, seed: B, f: (acc: B, a: A) => B): Effect.Effect<R, E, B>
502
+ <A, B>(seed: B, f: (acc: B, a: A) => B): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<B, E, R>
503
+ <R, E, A, B>(fx: Fx<R, E, A>, seed: B, f: (acc: B, a: A) => B): Effect.Effect<B, E, R>
504
504
  } = dual(3, core.reduce)
505
505
 
506
506
  /**
507
507
  * @since 1.20.0
508
508
  */
509
- export const toReadonlyArray: <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<R, E, ReadonlyArray<A>> = core.toReadonlyArray
509
+ export const toReadonlyArray: <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<ReadonlyArray<A>, E, R> = core.toReadonlyArray
510
510
 
511
511
  /**
512
512
  * @since 1.20.0
@@ -644,13 +644,13 @@ export const flatMap: {
644
644
  */
645
645
  export const flatMapEffect: {
646
646
  <A, R2, E2, B>(
647
- f: (a: A) => Effect.Effect<R2, E2, B>,
647
+ f: (a: A) => Effect.Effect<B, E2, R2>,
648
648
  executionStrategy?: ExecutionStrategy.ExecutionStrategy | undefined
649
649
  ): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2 | Scope.Scope, E | E2, B>
650
650
 
651
651
  <R, E, A, R2, E2, B>(
652
652
  fx: Fx<R, E, A>,
653
- f: (a: A) => Effect.Effect<R2, E2, B>,
653
+ f: (a: A) => Effect.Effect<B, E2, R2>,
654
654
  executionStrategy?: ExecutionStrategy.ExecutionStrategy | undefined
655
655
  ): Fx<R | R2 | Scope.Scope, E | E2, B>
656
656
  } = dual(isDataFirstFx, core.flatMapEffect)
@@ -676,13 +676,13 @@ export const switchMap: {
676
676
  */
677
677
  export const switchMapEffect: {
678
678
  <A, R2, E2, B>(
679
- f: (a: A) => Effect.Effect<R2, E2, B>,
679
+ f: (a: A) => Effect.Effect<B, E2, R2>,
680
680
  executionStrategy?: ExecutionStrategy.ExecutionStrategy | undefined
681
681
  ): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2 | Scope.Scope, E | E2, B>
682
682
 
683
683
  <R, E, A, R2, E2, B>(
684
684
  fx: Fx<R, E, A>,
685
- f: (a: A) => Effect.Effect<R2, E2, B>,
685
+ f: (a: A) => Effect.Effect<B, E2, R2>,
686
686
  executionStrategy?: ExecutionStrategy.ExecutionStrategy | undefined
687
687
  ): Fx<R | R2 | Scope.Scope, E | E2, B>
688
688
  } = dual(isDataFirstFx, core.switchMapEffect)
@@ -708,13 +708,13 @@ export const exhaustMap: {
708
708
  */
709
709
  export const exhaustMapEffect: {
710
710
  <A, R2, E2, B>(
711
- f: (a: A) => Effect.Effect<R2, E2, B>,
711
+ f: (a: A) => Effect.Effect<B, E2, R2>,
712
712
  executionStrategy?: ExecutionStrategy.ExecutionStrategy | undefined
713
713
  ): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2 | Scope.Scope, E | E2, B>
714
714
 
715
715
  <R, E, A, R2, E2, B>(
716
716
  fx: Fx<R, E, A>,
717
- f: (a: A) => Effect.Effect<R2, E2, B>,
717
+ f: (a: A) => Effect.Effect<B, E2, R2>,
718
718
  executionStrategy?: ExecutionStrategy.ExecutionStrategy | undefined
719
719
  ): Fx<R | R2 | Scope.Scope, E | E2, B>
720
720
  } = dual(isDataFirstFx, core.exhaustMapEffect)
@@ -740,13 +740,13 @@ export const exhaustMapLatest: {
740
740
  */
741
741
  export const exhaustMapLatestEffect: {
742
742
  <A, R2, E2, B>(
743
- f: (a: A) => Effect.Effect<R2, E2, B>,
743
+ f: (a: A) => Effect.Effect<B, E2, R2>,
744
744
  executionStrategy?: ExecutionStrategy.ExecutionStrategy | undefined
745
745
  ): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2 | Scope.Scope, E | E2, B>
746
746
 
747
747
  <R, E, A, R2, E2, B>(
748
748
  fx: Fx<R, E, A>,
749
- f: (a: A) => Effect.Effect<R2, E2, B>,
749
+ f: (a: A) => Effect.Effect<B, E2, R2>,
750
750
  executionStrategy?: ExecutionStrategy.ExecutionStrategy | undefined
751
751
  ): Fx<R | R2 | Scope.Scope, E | E2, B>
752
752
  } = dual(isDataFirstFx, core.exhaustMapLatestEffect)
@@ -774,14 +774,14 @@ export const flatMapConcurrently: {
774
774
  */
775
775
  export const flatMapConcurrentlyEffect: {
776
776
  <A, R2, E2, B>(
777
- f: (a: A) => Effect.Effect<R2, E2, B>,
777
+ f: (a: A) => Effect.Effect<B, E2, R2>,
778
778
  capacity: number,
779
779
  executionStrategy?: ExecutionStrategy.ExecutionStrategy | undefined
780
780
  ): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2 | Scope.Scope, E | E2, B>
781
781
 
782
782
  <R, E, A, R2, E2, B>(
783
783
  fx: Fx<R, E, A>,
784
- f: (a: A) => Effect.Effect<R2, E2, B>,
784
+ f: (a: A) => Effect.Effect<B, E2, R2>,
785
785
  capacity: number,
786
786
  executionStrategy?: ExecutionStrategy.ExecutionStrategy | undefined
787
787
  ): Fx<R | R2 | Scope.Scope, E | E2, B>
@@ -805,7 +805,7 @@ export const concatMap: {
805
805
  /**
806
806
  * @since 1.20.0
807
807
  */
808
- export const fromFxEffect: <R, E, R2, E2, B>(effect: Effect.Effect<R, E, Fx<R2, E2, B>>) => Fx<R | R2, E | E2, B> =
808
+ export const fromFxEffect: <R, E, R2, E2, B>(effect: Effect.Effect<Fx<R2, E2, B>, E, R>) => Fx<R | R2, E | E2, B> =
809
809
  core.fromFxEffect
810
810
 
811
811
  /**
@@ -945,40 +945,40 @@ export const dropAfter: {
945
945
  * @since 1.20.0
946
946
  */
947
947
  export const takeWhileEffect: {
948
- <A, R2, E2>(f: (a: A) => Effect.Effect<R2, E2, boolean>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
949
- <R, E, A, R2, E2>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, boolean>): Fx<R | R2, E | E2, A>
948
+ <A, R2, E2>(f: (a: A) => Effect.Effect<boolean, E2, R2>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
949
+ <R, E, A, R2, E2>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<boolean, E2, R2>): Fx<R | R2, E | E2, A>
950
950
  } = dual(2, core.takeWhileEffect)
951
951
 
952
952
  /**
953
953
  * @since 1.20.0
954
954
  */
955
955
  export const takeUntiEffect: {
956
- <A, R2, E2>(f: (a: A) => Effect.Effect<R2, E2, boolean>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
957
- <R, E, A, R2, E2>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, boolean>): Fx<R | R2, E | E2, A>
956
+ <A, R2, E2>(f: (a: A) => Effect.Effect<boolean, E2, R2>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
957
+ <R, E, A, R2, E2>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<boolean, E2, R2>): Fx<R | R2, E | E2, A>
958
958
  } = dual(2, core.takeUntilEffect)
959
959
 
960
960
  /**
961
961
  * @since 1.20.0
962
962
  */
963
963
  export const dropWhileEffect: {
964
- <A, R2, E2>(f: (a: A) => Effect.Effect<R2, E2, boolean>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
965
- <R, E, A, R2, E2>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, boolean>): Fx<R | R2, E | E2, A>
964
+ <A, R2, E2>(f: (a: A) => Effect.Effect<boolean, E2, R2>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
965
+ <R, E, A, R2, E2>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<boolean, E2, R2>): Fx<R | R2, E | E2, A>
966
966
  } = dual(2, core.dropWhileEffect)
967
967
 
968
968
  /**
969
969
  * @since 1.20.0
970
970
  */
971
971
  export const dropUntilEffect: {
972
- <A, R2, E2>(f: (a: A) => Effect.Effect<R2, E2, boolean>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
973
- <R, E, A, R2, E2>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, boolean>): Fx<R | R2, E | E2, A>
972
+ <A, R2, E2>(f: (a: A) => Effect.Effect<boolean, E2, R2>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
973
+ <R, E, A, R2, E2>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<boolean, E2, R2>): Fx<R | R2, E | E2, A>
974
974
  } = dual(2, core.dropUntilEffect)
975
975
 
976
976
  /**
977
977
  * @since 1.20.0
978
978
  */
979
979
  export const dropAfterEffect: {
980
- <A, R2, E2>(f: (a: A) => Effect.Effect<R2, E2, boolean>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
981
- <R, E, A, R2, E2>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, boolean>): Fx<R | R2, E | E2, A>
980
+ <A, R2, E2>(f: (a: A) => Effect.Effect<boolean, E2, R2>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
981
+ <R, E, A, R2, E2>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<boolean, E2, R2>): Fx<R | R2, E | E2, A>
982
982
  } = dual(2, core.dropAfterEffect)
983
983
 
984
984
  /**
@@ -1015,13 +1015,13 @@ export const until: {
1015
1015
  */
1016
1016
  export const middleware: {
1017
1017
  <R, R3, E, A>(
1018
- effect: (effect: Effect.Effect<R, never, unknown>) => Effect.Effect<R3, never, unknown>,
1018
+ effect: (effect: Effect.Effect<unknown, never, R>) => Effect.Effect<unknown, never, R3>,
1019
1019
  sink?: ((sink: Sink.Sink<never, E, A>) => Sink.Sink<R, E, A>) | undefined
1020
1020
  ): <E, A>(fx: Fx<R, E, A>) => Fx<R3, E, A>
1021
1021
 
1022
1022
  <R, E, A, R3>(
1023
1023
  fx: Fx<R, E, A>,
1024
- effect: (effect: Effect.Effect<R, never, unknown>) => Effect.Effect<R3, never, unknown>,
1024
+ effect: (effect: Effect.Effect<unknown, never, R>) => Effect.Effect<unknown, never, R3>,
1025
1025
  sink?: ((sink: Sink.Sink<never, E, A>) => Sink.Sink<R, E, A>) | undefined
1026
1026
  ): Fx<R3, E, A>
1027
1027
  } = dual(isDataFirstFx, core.middleware)
@@ -1031,12 +1031,12 @@ export const middleware: {
1031
1031
  */
1032
1032
  export const onExit: {
1033
1033
  <R2>(
1034
- f: (exit: Exit.Exit<never, unknown>) => Effect.Effect<R2, never, unknown>
1034
+ f: (exit: Exit.Exit<unknown>) => Effect.Effect<unknown, never, R2>
1035
1035
  ): <R, E, A>(fx: Fx<R, E, A>) => Fx<R2, E, A>
1036
1036
 
1037
1037
  <R, E, A, R2>(
1038
1038
  fx: Fx<R, E, A>,
1039
- f: (exit: Exit.Exit<never, unknown>) => Effect.Effect<R2, never, unknown>
1039
+ f: (exit: Exit.Exit<unknown>) => Effect.Effect<unknown, never, R2>
1040
1040
  ): Fx<R | R2, E, A>
1041
1041
  } = dual(2, core.onExit)
1042
1042
 
@@ -1045,11 +1045,11 @@ export const onExit: {
1045
1045
  */
1046
1046
  export const onInterrupt: {
1047
1047
  <R2>(
1048
- f: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<R2, never, unknown>
1048
+ f: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<unknown, never, R2>
1049
1049
  ): <R, E, A>(fx: Fx<R, E, A>) => Fx<R2, E, A>
1050
1050
  <R, E, A, R2>(
1051
1051
  fx: Fx<R, E, A>,
1052
- f: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<R2, never, unknown>
1052
+ f: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<unknown, never, R2>
1053
1053
  ): Fx<R | R2, E, A>
1054
1054
  } = dual(2, core.onInterrupt)
1055
1055
 
@@ -1057,8 +1057,8 @@ export const onInterrupt: {
1057
1057
  * @since 1.20.0
1058
1058
  */
1059
1059
  export const onError: {
1060
- <R2>(f: (cause: Cause.Cause<never>) => Effect.Effect<R2, never, unknown>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R2, E, A>
1061
- <R, E, A, R2>(fx: Fx<R, E, A>, f: (cause: Cause.Cause<never>) => Effect.Effect<R2, never, unknown>): Fx<R | R2, E, A>
1060
+ <R2>(f: (cause: Cause.Cause<never>) => Effect.Effect<unknown, never, R2>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R2, E, A>
1061
+ <R, E, A, R2>(fx: Fx<R, E, A>, f: (cause: Cause.Cause<never>) => Effect.Effect<unknown, never, R2>): Fx<R | R2, E, A>
1062
1062
  } = dual(2, core.onError)
1063
1063
 
1064
1064
  /**
@@ -1194,12 +1194,12 @@ export const withTracer: {
1194
1194
  export const acquireUseRelease: {
1195
1195
  <A, R2, E2, B, R3, E3, C>(
1196
1196
  use: (a: A) => Fx<R2, E2, B>,
1197
- release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<R3, E3, C>
1198
- ): <R, E>(acquire: Effect.Effect<R, E, A>) => Fx<R | R2 | R3, E | E2 | E3, B>
1197
+ release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<C, E3, R3>
1198
+ ): <R, E>(acquire: Effect.Effect<A, E, R>) => Fx<R | R2 | R3, E | E2 | E3, B>
1199
1199
  <R, E, A, R2, E2, B, R3, E3, C>(
1200
- acquire: Effect.Effect<R, E, A>,
1200
+ acquire: Effect.Effect<A, E, R>,
1201
1201
  use: (a: A) => Fx<R2, E2, B>,
1202
- release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<R3, E3, C>
1202
+ release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<C, E3, R3>
1203
1203
  ): Fx<R | R2 | R3, E | E2 | E3, B>
1204
1204
  } = dual(3, core.acquireUseRelease)
1205
1205
 
@@ -1236,8 +1236,8 @@ export const provideContext: {
1236
1236
  * @since 1.20.0
1237
1237
  */
1238
1238
  export const provideLayer: {
1239
- <R2, E2, S>(layer: Layer.Layer<R2, E2, S>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R2 | Exclude<R, S>, E | E2, A>
1240
- <R, E, A, R2, E2, S>(fx: Fx<R, E, A>, layer: Layer.Layer<R2, E2, S>): Fx<R2 | Exclude<R, S>, E | E2, A>
1239
+ <R2, E2, S>(layer: Layer.Layer<S, E2, R2>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R2 | Exclude<R, S>, E | E2, A>
1240
+ <R, E, A, R2, E2, S>(fx: Fx<R, E, A>, layer: Layer.Layer<S, E2, R2>): Fx<R2 | Exclude<R, S>, E | E2, A>
1241
1241
  } = dual(2, core.provideLayer)
1242
1242
 
1243
1243
  /**
@@ -1262,12 +1262,12 @@ export const provideService: {
1262
1262
  export const provideServiceEffect: {
1263
1263
  <I, S, R2, E2>(
1264
1264
  service: Ctx.Tag<I, S>,
1265
- instance: Effect.Effect<R2, E2, S>
1265
+ instance: Effect.Effect<S, E2, R2>
1266
1266
  ): <R, E, A>(fx: Fx<R, E, A>) => Fx<R2 | Exclude<R, I>, E | E2, A>
1267
1267
  <R, E, A, I, S, R2, E2>(
1268
1268
  fx: Fx<R, E, A>,
1269
1269
  service: Ctx.Tag<I, S>,
1270
- instance: Effect.Effect<R2, E2, S>
1270
+ instance: Effect.Effect<S, E2, R2>
1271
1271
  ): Fx<R2 | Exclude<R, I>, E | E2, A>
1272
1272
  } = dual(3, core.provideServiceEffect)
1273
1273
 
@@ -1277,17 +1277,17 @@ export const provideServiceEffect: {
1277
1277
  export const provide: {
1278
1278
  <R2>(context: Ctx.Context<R2>): <R, E, A>(fx: Fx<R, E, A>) => Fx<Exclude<R, R2>, E, A>
1279
1279
  <R2>(runtime: Runtime.Runtime<R2>): <R, E, A>(fx: Fx<R, E, A>) => Fx<Exclude<R, R2>, E, A>
1280
- <R2, E2, S>(layer: Layer.Layer<R2, E2, S>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R2 | Exclude<R, S>, E | E2, A>
1280
+ <R2, E2, S>(layer: Layer.Layer<S, E2, R2>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R2 | Exclude<R, S>, E | E2, A>
1281
1281
  <R2 = never, E2 = never, S = never>(
1282
- provide: Layer.Layer<R2, E2, S> | Ctx.Context<S> | Runtime.Runtime<S>
1282
+ provide: Layer.Layer<S, E2, R2> | Ctx.Context<S> | Runtime.Runtime<S>
1283
1283
  ): <R, E, A>(fx: Fx<R, E, A>) => Fx<R2 | Exclude<R, S>, E | E2, A>
1284
1284
 
1285
1285
  <R, E, A, R2>(fx: Fx<R, E, A>, context: Ctx.Context<R2>): Fx<Exclude<R, R2>, E, A>
1286
1286
  <R, E, A, R2>(fx: Fx<R, E, A>, runtime: Runtime.Runtime<R2>): Fx<Exclude<R, R2>, E, A>
1287
- <R, E, A, R2, E2, S>(fx: Fx<R, E, A>, layer: Layer.Layer<R2, E2, S>): Fx<R2 | Exclude<R, S>, E | E2, A>
1287
+ <R, E, A, R2, E2, S>(fx: Fx<R, E, A>, layer: Layer.Layer<S, E2, R2>): Fx<R2 | Exclude<R, S>, E | E2, A>
1288
1288
  <R, E, A, R2 = never, E2 = never, S = never>(
1289
1289
  fx: Fx<R, E, A>,
1290
- provide: Layer.Layer<R2, E2, S> | Ctx.Context<S> | Runtime.Runtime<S>
1290
+ provide: Layer.Layer<S, E2, R2> | Ctx.Context<S> | Runtime.Runtime<S>
1291
1291
  ): Fx<R2 | Exclude<R, S>, E | E2, A>
1292
1292
  } = dual(2, core.provide)
1293
1293
 
@@ -1377,12 +1377,12 @@ export const filterMapError: {
1377
1377
  * @since 1.20.0
1378
1378
  */
1379
1379
  export const mapCauseEffect: {
1380
- <R2, E2, E3>(f: (cause: Cause.Cause<E2>) => Effect.Effect<R2, E3, Cause.Cause<E3>>): <R, E, A>(
1380
+ <R2, E2, E3>(f: (cause: Cause.Cause<E2>) => Effect.Effect<Cause.Cause<E3>, E3, R2>): <R, E, A>(
1381
1381
  fx: Fx<R, E, A>
1382
1382
  ) => Fx<R | R2, E2 | E3, A>
1383
1383
  <R, E, A, R2, E2, E3>(
1384
1384
  fx: Fx<R, E, A>,
1385
- f: (cause: Cause.Cause<E>) => Effect.Effect<R2, E2, Cause.Cause<E3>>
1385
+ f: (cause: Cause.Cause<E>) => Effect.Effect<Cause.Cause<E3>, E2, R2>
1386
1386
  ): Fx<R | R2, E2 | E3, A>
1387
1387
  } = dual(2, core.mapCauseEffect)
1388
1388
 
@@ -1390,38 +1390,38 @@ export const mapCauseEffect: {
1390
1390
  * @since 1.20.0
1391
1391
  */
1392
1392
  export const mapErrorEffect: {
1393
- <R2, E2, E3>(f: (e: E2) => Effect.Effect<R2, E3, E3>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2 | E3, A>
1394
- <R, E, A, R2, E2, E3>(fx: Fx<R, E, A>, f: (e: E) => Effect.Effect<R2, E2, E3>): Fx<R | R2, E2 | E3, A>
1393
+ <R2, E2, E3>(f: (e: E2) => Effect.Effect<E3, E3, R2>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2 | E3, A>
1394
+ <R, E, A, R2, E2, E3>(fx: Fx<R, E, A>, f: (e: E) => Effect.Effect<E3, E2, R2>): Fx<R | R2, E2 | E3, A>
1395
1395
  } = dual(2, core.mapErrorEffect)
1396
1396
 
1397
1397
  /**
1398
1398
  * @since 1.20.0
1399
1399
  */
1400
1400
  export const filterCauseEffect: {
1401
- <E, R2, E2>(f: (cause: Cause.Cause<E>) => Effect.Effect<R2, E2, boolean>): <R, A>(
1401
+ <E, R2, E2>(f: (cause: Cause.Cause<E>) => Effect.Effect<boolean, E2, R2>): <R, A>(
1402
1402
  fx: Fx<R, E, A>
1403
1403
  ) => Fx<R | R2, E2, A>
1404
- <R, E, A, R2, E2>(fx: Fx<R, E, A>, f: (cause: Cause.Cause<E>) => Effect.Effect<R2, E2, boolean>): Fx<R | R2, E2, A>
1404
+ <R, E, A, R2, E2>(fx: Fx<R, E, A>, f: (cause: Cause.Cause<E>) => Effect.Effect<boolean, E2, R2>): Fx<R | R2, E2, A>
1405
1405
  } = dual(2, core.filterCauseEffect)
1406
1406
 
1407
1407
  /**
1408
1408
  * @since 1.20.0
1409
1409
  */
1410
1410
  export const filterErrorEffect: {
1411
- <E, R2, E2>(f: (e: E) => Effect.Effect<R2, E2, boolean>): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2, A>
1412
- <R, E, A, R2, E2>(fx: Fx<R, E, A>, f: (e: E) => Effect.Effect<R2, E2, boolean>): Fx<R | R2, E2, A>
1411
+ <E, R2, E2>(f: (e: E) => Effect.Effect<boolean, E2, R2>): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2, A>
1412
+ <R, E, A, R2, E2>(fx: Fx<R, E, A>, f: (e: E) => Effect.Effect<boolean, E2, R2>): Fx<R | R2, E2, A>
1413
1413
  } = dual(2, core.filterErrorEffect)
1414
1414
 
1415
1415
  /**
1416
1416
  * @since 1.20.0
1417
1417
  */
1418
1418
  export const filterMapCauseEffect: {
1419
- <R2, E2, E3>(f: (cause: Cause.Cause<E2>) => Effect.Effect<R2, E2, Option.Option<Cause.Cause<E3>>>): <R, E, A>(
1419
+ <R2, E2, E3>(f: (cause: Cause.Cause<E2>) => Effect.Effect<Option.Option<Cause.Cause<E3>>, E2, R2>): <R, E, A>(
1420
1420
  fx: Fx<R, E, A>
1421
1421
  ) => Fx<R | R2, E2 | E3, A>
1422
1422
  <R, E, A, R2, E2, E3>(
1423
1423
  fx: Fx<R, E, A>,
1424
- f: (cause: Cause.Cause<E>) => Effect.Effect<R2, E2, Option.Option<Cause.Cause<E3>>>
1424
+ f: (cause: Cause.Cause<E>) => Effect.Effect<Option.Option<Cause.Cause<E3>>, E2, R2>
1425
1425
  ): Fx<R | R2, E2 | E3, A>
1426
1426
  } = dual(2, core.filterMapCauseEffect)
1427
1427
 
@@ -1430,9 +1430,9 @@ export const filterMapCauseEffect: {
1430
1430
  */
1431
1431
  export const filterMapErrorEffect: {
1432
1432
  <E, R2, E2, E3>(
1433
- f: (e: E) => Effect.Effect<R2, E2, Option.Option<E3>>
1433
+ f: (e: E) => Effect.Effect<Option.Option<E3>, E2, R2>
1434
1434
  ): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2 | E3, A>
1435
- <R, E, A, R2, E2, E3>(fx: Fx<R, E, A>, f: (e: E) => Effect.Effect<R2, E2, Option.Option<E3>>): Fx<R | R2, E2 | E3, A>
1435
+ <R, E, A, R2, E2, E3>(fx: Fx<R, E, A>, f: (e: E) => Effect.Effect<Option.Option<E3>, E2, R2>): Fx<R | R2, E2 | E3, A>
1436
1436
  } = dual(2, core.filterMapErrorEffect)
1437
1437
 
1438
1438
  /**
@@ -1465,12 +1465,12 @@ export const loopError: {
1465
1465
  export const loopCauseEffect: {
1466
1466
  <B, E, R2, E2, C>(
1467
1467
  seed: B,
1468
- f: (b: B, cause: Cause.Cause<E>) => Effect.Effect<R2, E2, readonly [Cause.Cause<C>, B]>
1468
+ f: (b: B, cause: Cause.Cause<E>) => Effect.Effect<readonly [Cause.Cause<C>, B], E2, R2>
1469
1469
  ): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2 | C, A>
1470
1470
  <R, E, A, R2, E2, B, C>(
1471
1471
  fx: Fx<R, E, A>,
1472
1472
  seed: B,
1473
- f: (b: B, cause: Cause.Cause<E>) => Effect.Effect<R2, E2, readonly [Cause.Cause<C>, B]>
1473
+ f: (b: B, cause: Cause.Cause<E>) => Effect.Effect<readonly [Cause.Cause<C>, B], E2, R2>
1474
1474
  ): Fx<R | R2, E2 | C, A>
1475
1475
  } = dual(3, core.loopCauseEffect)
1476
1476
 
@@ -1478,13 +1478,13 @@ export const loopCauseEffect: {
1478
1478
  * @since 1.20.0
1479
1479
  */
1480
1480
  export const loopErrorEffect: {
1481
- <B, E, R2, E2, C>(seed: B, f: (b: B, e: E) => Effect.Effect<R2, E2, readonly [C, B]>): <R, A>(
1481
+ <B, E, R2, E2, C>(seed: B, f: (b: B, e: E) => Effect.Effect<readonly [C, B], E2, R2>): <R, A>(
1482
1482
  fx: Fx<R, E, A>
1483
1483
  ) => Fx<R | R2, E2 | C, A>
1484
1484
  <R, E, A, R2, E2, B, C>(
1485
1485
  fx: Fx<R, E, A>,
1486
1486
  seed: B,
1487
- f: (b: B, e: E) => Effect.Effect<R2, E2, readonly [C, B]>
1487
+ f: (b: B, e: E) => Effect.Effect<readonly [C, B], E2, R2>
1488
1488
  ): Fx<R | R2, E2 | C, A>
1489
1489
  } = dual(3, core.loopErrorEffect)
1490
1490
 
@@ -1494,7 +1494,7 @@ export const loopErrorEffect: {
1494
1494
  export const filterMapLoopCause: {
1495
1495
  <B, E, R2, E2, C>(
1496
1496
  seed: B,
1497
- f: (b: B, cause: Cause.Cause<E>) => Effect.Effect<R2, E2, readonly [Option.Option<Cause.Cause<C>>, B]>
1497
+ f: (b: B, cause: Cause.Cause<E>) => Effect.Effect<readonly [Option.Option<Cause.Cause<C>>, B], E2, R2>
1498
1498
  ): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2 | C, A>
1499
1499
  <R, E, A, B, C>(
1500
1500
  fx: Fx<R, E, A>,
@@ -1507,7 +1507,7 @@ export const filterMapLoopCause: {
1507
1507
  * @since 1.20.0
1508
1508
  */
1509
1509
  export const filterMapLoopError: {
1510
- <B, E, R2, E2, C>(seed: B, f: (b: B, e: E) => Effect.Effect<R2, E2, readonly [Option.Option<C>, B]>): <R, A>(
1510
+ <B, E, R2, E2, C>(seed: B, f: (b: B, e: E) => Effect.Effect<readonly [Option.Option<C>, B], E2, R2>): <R, A>(
1511
1511
  fx: Fx<R, E, A>
1512
1512
  ) => Fx<R | R2, E2 | C, A>
1513
1513
  <R, E, A, B, C>(fx: Fx<R, E, A>, seed: B, f: (b: B, e: E) => readonly [Option.Option<C>, B]): Fx<R, C, A>
@@ -1519,12 +1519,12 @@ export const filterMapLoopError: {
1519
1519
  export const filterMapLoopCauseEffect: {
1520
1520
  <B, E, R2, E2, C>(
1521
1521
  seed: B,
1522
- f: (b: B, cause: Cause.Cause<E>) => Effect.Effect<R2, E2, readonly [Option.Option<Cause.Cause<C>>, B]>
1522
+ f: (b: B, cause: Cause.Cause<E>) => Effect.Effect<readonly [Option.Option<Cause.Cause<C>>, B], E2, R2>
1523
1523
  ): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2 | C, A>
1524
1524
  <R, E, A, R2, E2, B, C>(
1525
1525
  fx: Fx<R, E, A>,
1526
1526
  seed: B,
1527
- f: (b: B, cause: Cause.Cause<E>) => Effect.Effect<R2, E2, readonly [Option.Option<Cause.Cause<C>>, B]>
1527
+ f: (b: B, cause: Cause.Cause<E>) => Effect.Effect<readonly [Option.Option<Cause.Cause<C>>, B], E2, R2>
1528
1528
  ): Fx<R | R2, E2 | C, A>
1529
1529
  } = dual(3, core.filterMapLoopCauseEffect)
1530
1530
 
@@ -1532,13 +1532,13 @@ export const filterMapLoopCauseEffect: {
1532
1532
  * @since 1.20.0
1533
1533
  */
1534
1534
  export const filterMapLoopErrorEffect: {
1535
- <B, E, R2, E2, C>(seed: B, f: (b: B, e: E) => Effect.Effect<R2, E2, readonly [Option.Option<C>, B]>): <R, A>(
1535
+ <B, E, R2, E2, C>(seed: B, f: (b: B, e: E) => Effect.Effect<readonly [Option.Option<C>, B], E2, R2>): <R, A>(
1536
1536
  fx: Fx<R, E, A>
1537
1537
  ) => Fx<R | R2, E2 | C, A>
1538
1538
  <R, E, A, R2, E2, B, C>(
1539
1539
  fx: Fx<R, E, A>,
1540
1540
  seed: B,
1541
- f: (b: B, e: E) => Effect.Effect<R2, E2, readonly [Option.Option<C>, B]>
1541
+ f: (b: B, e: E) => Effect.Effect<readonly [Option.Option<C>, B], E2, R2>
1542
1542
  ): Fx<R | R2, E2 | C, A>
1543
1543
  } = dual(3, core.filterMapLoopErrorEffect)
1544
1544
 
@@ -1927,7 +1927,7 @@ export const exhaustMatchLatestError: {
1927
1927
  /**
1928
1928
  * @since 1.20.0
1929
1929
  */
1930
- export const exit: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, never, Exit.Exit<E, A>> = core.exit
1930
+ export const exit: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, never, Exit.Exit<A, E>> = core.exit
1931
1931
 
1932
1932
  /**
1933
1933
  * @since 1.20.0
@@ -1966,8 +1966,8 @@ export const all: {
1966
1966
  export const toEnqueue: {
1967
1967
  <R2 = never, A = never>(
1968
1968
  queue: Ctx.Enqueue<R2, A> | Queue.Enqueue<A>
1969
- ): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<R | R2, E, void>
1970
- <R, E, A, R2 = never>(fx: Fx<R, E, A>, queue: Ctx.Enqueue<R2, A> | Queue.Enqueue<A>): Effect.Effect<R | R2, E, void>
1969
+ ): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<void, E, R | R2>
1970
+ <R, E, A, R2 = never>(fx: Fx<R, E, A>, queue: Ctx.Enqueue<R2, A> | Queue.Enqueue<A>): Effect.Effect<void, E, R | R2>
1971
1971
  } = dual(2, core.toEnqueue)
1972
1972
 
1973
1973
  /**
@@ -2185,18 +2185,16 @@ export const at: {
2185
2185
  /**
2186
2186
  * @since 1.20.0
2187
2187
  */
2188
- export function drainLayer<FXS extends ReadonlyArray<Fx<any, never, any>>>(...fxs: FXS): Layer.Layer<
2189
- Exclude<Fx.Context<FXS[number]>, Scope.Scope>,
2190
- never,
2191
- never
2192
- > {
2188
+ export function drainLayer<FXS extends ReadonlyArray<Fx<any, never, any>>>(
2189
+ ...fxs: FXS
2190
+ ): Layer.Layer<never, never, Exclude<Fx.Context<FXS[number]>, Scope.Scope>> {
2193
2191
  return Layer.scopedDiscard(Effect.forkWithErrorHandler(core.drain(core.mergeAll(fxs)), Effect.logError))
2194
2192
  }
2195
2193
 
2196
2194
  /**
2197
2195
  * @since 1.20.0
2198
2196
  */
2199
- export const fork = <R, E, A>(fx: Fx<R, E, A>): Effect.Effect<R, never, Fiber.RuntimeFiber<E, void>> =>
2197
+ export const fork = <R, E, A>(fx: Fx<R, E, A>): Effect.Effect<Fiber.RuntimeFiber<void, E>, never, R> =>
2200
2198
  Effect.fork(drain(fx))
2201
2199
 
2202
2200
  /**
@@ -2204,24 +2202,24 @@ export const fork = <R, E, A>(fx: Fx<R, E, A>): Effect.Effect<R, never, Fiber.Ru
2204
2202
  */
2205
2203
  export const forkScoped = <R, E, A>(
2206
2204
  fx: Fx<R, E, A>
2207
- ): Effect.Effect<R | Scope.Scope, never, Fiber.RuntimeFiber<E, void>> => Effect.forkScoped(drain(fx))
2205
+ ): Effect.Effect<Fiber.RuntimeFiber<void, E>, never, R | Scope.Scope> => Effect.forkScoped(drain(fx))
2208
2206
 
2209
2207
  /**
2210
2208
  * @since 1.20.0
2211
2209
  */
2212
- export const forkDaemon = <R, E, A>(fx: Fx<R, E, A>): Effect.Effect<R, never, Fiber.RuntimeFiber<E, void>> =>
2210
+ export const forkDaemon = <R, E, A>(fx: Fx<R, E, A>): Effect.Effect<Fiber.RuntimeFiber<void, E>, never, R> =>
2213
2211
  Effect.forkDaemon(drain(fx))
2214
2212
 
2215
2213
  /**
2216
2214
  * @since 1.20.0
2217
2215
  */
2218
2216
  export const forkIn: {
2219
- (scope: Scope.Scope): <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<R, never, Fiber.RuntimeFiber<E, void>>
2220
- <R, E, A>(fx: Fx<R, E, A>, scope: Scope.Scope): Effect.Effect<R, never, Fiber.RuntimeFiber<E, void>>
2217
+ (scope: Scope.Scope): <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<Fiber.RuntimeFiber<void, E>, never, R>
2218
+ <R, E, A>(fx: Fx<R, E, A>, scope: Scope.Scope): Effect.Effect<Fiber.RuntimeFiber<void, E>, never, R>
2221
2219
  } = dual(2, <R, E, A>(
2222
2220
  fx: Fx<R, E, A>,
2223
2221
  scope: Scope.Scope
2224
- ): Effect.Effect<R, never, Fiber.RuntimeFiber<E, void>> => Effect.forkIn(drain(fx), scope))
2222
+ ): Effect.Effect<Fiber.RuntimeFiber<void, E>, never, R> => Effect.forkIn(drain(fx), scope))
2225
2223
 
2226
2224
  /**
2227
2225
  * @since 1.20.0
@@ -2277,16 +2275,16 @@ export const genScoped: <Y extends Effect.EffectGen<any, any, any>, FX extends F
2277
2275
  * @since 1.20.0
2278
2276
  */
2279
2277
  export const findFirst: {
2280
- <A, B extends A>(refinement: Predicate.Refinement<A, B>): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<R, E, B>
2281
- <A>(predicate: Predicate.Predicate<A>): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<R, E, A>
2282
- <R, E, A, B extends A>(fx: Fx<R, E, A>, refinement: Predicate.Refinement<A, B>): Effect.Effect<R, E, B>
2283
- <R, E, A>(fx: Fx<R, E, A>, predicate: Predicate.Predicate<A>): Effect.Effect<R, E, A>
2278
+ <A, B extends A>(refinement: Predicate.Refinement<A, B>): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<B, E, R>
2279
+ <A>(predicate: Predicate.Predicate<A>): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<A, E, R>
2280
+ <R, E, A, B extends A>(fx: Fx<R, E, A>, refinement: Predicate.Refinement<A, B>): Effect.Effect<B, E, R>
2281
+ <R, E, A>(fx: Fx<R, E, A>, predicate: Predicate.Predicate<A>): Effect.Effect<A, E, R>
2284
2282
  } = dual(2, core.findFirst)
2285
2283
 
2286
2284
  /**
2287
2285
  * @since 1.20.0
2288
2286
  */
2289
- export const first: <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<R, E, A> = core.first
2287
+ export const first: <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<A, E, R> = core.first
2290
2288
 
2291
2289
  /**
2292
2290
  * @since 1.20.0
@@ -2339,13 +2337,13 @@ export const sample: {
2339
2337
  * @since 1.20.0
2340
2338
  */
2341
2339
  export const snapshotEffect: {
2342
- <R2, E2, B, A, R3, E3, C>(sampled: Fx<R2, E2, B>, g: (a: A, b: B) => Effect.Effect<R3, E3, C>): <R, E>(
2340
+ <R2, E2, B, A, R3, E3, C>(sampled: Fx<R2, E2, B>, g: (a: A, b: B) => Effect.Effect<C, E3, R3>): <R, E>(
2343
2341
  fx: Fx<R, E, A>
2344
2342
  ) => Fx<R | R2 | R3, E | E2 | E3, C>
2345
2343
  <R, E, A, R2, E2, B, R3, E3, C>(
2346
2344
  fx: Fx<R, E, A>,
2347
2345
  sampled: Fx<R2, E2, B>,
2348
- f: (a: A, b: B) => Effect.Effect<R3, E3, C>
2346
+ f: (a: A, b: B) => Effect.Effect<C, E3, R3>
2349
2347
  ): Fx<R | R2 | R3, E | E2 | E3, C>
2350
2348
  } = dual(3, core.snapshotEffect)
2351
2349
 
@@ -2383,7 +2381,7 @@ export const when: {
2383
2381
  * @since 1.20.0
2384
2382
  */
2385
2383
  export const withEmitter = <E, A, R = never, E2 = never>(
2386
- f: (emitter: Emitter.Emitter<E, A>) => Effect.Effect<R, E2, unknown>
2384
+ f: (emitter: Emitter.Emitter<E, A>) => Effect.Effect<unknown, E2, R>
2387
2385
  ): Fx<R | Scope.Scope, E | E2, A> => core.make<R | Scope.Scope, E | E2, A>((sink) => Emitter.withEmitter(sink, f))
2388
2386
 
2389
2387
  /**
@@ -2402,11 +2400,11 @@ export const delay: {
2402
2400
  * @since 1.20.0
2403
2401
  */
2404
2402
  export const ensuring: {
2405
- <R2>(finalizer: Effect.Effect<R2, never, unknown>): <R, E, A>(self: Fx<R, E, A>) => Fx<R | R2, E, A>
2406
- <R, E, A, R2>(self: Fx<R, E, A>, finalizer: Effect.Effect<R2, never, unknown>): Fx<R | R2, E, A>
2403
+ <R2>(finalizer: Effect.Effect<unknown, never, R2>): <R, E, A>(self: Fx<R, E, A>) => Fx<R | R2, E, A>
2404
+ <R, E, A, R2>(self: Fx<R, E, A>, finalizer: Effect.Effect<unknown, never, R2>): Fx<R | R2, E, A>
2407
2405
  } = dual(2, function<R, E, A, R2>(
2408
2406
  self: Fx<R, E, A>,
2409
- finalizer: Effect.Effect<R2, never, unknown>
2407
+ finalizer: Effect.Effect<unknown, never, R2>
2410
2408
  ): Fx<R | R2, E, A> {
2411
2409
  return core.middleware(self, (effect) => Effect.ensuring(effect, finalizer))
2412
2410
  })
@@ -2457,7 +2455,7 @@ export function fromDequeue<I, A>(dequeue: Ctx.Dequeue<I, A> | Queue.Dequeue<A>)
2457
2455
  */
2458
2456
  export function dequeueIsActive<I, A>(
2459
2457
  dequeue: Ctx.Dequeue<I, A> | Queue.Dequeue<A>
2460
- ): Effect.Effect<I, never, boolean> {
2458
+ ): Effect.Effect<boolean, never, I> {
2461
2459
  if (Queue.DequeueTypeId in dequeue) {
2462
2460
  return Effect.sync(() => dequeue.isActive())
2463
2461
  } else {
@@ -2487,7 +2485,7 @@ export abstract class FxEffectBase<R, E, A, R2, E2, B> extends protos.FxEffectBa
2487
2485
  /**
2488
2486
  * @since 1.20.0
2489
2487
  */
2490
- run<R3>(sink: Sink.Sink<R3, E, A>): Effect.Effect<R | R3, never, void> {
2488
+ run<R3>(sink: Sink.Sink<R3, E, A>): Effect.Effect<void, never, R | R3> {
2491
2489
  return (this._fx ||= this.toFx()).run(sink)
2492
2490
  }
2493
2491
 
@@ -2499,5 +2497,5 @@ export abstract class FxEffectBase<R, E, A, R2, E2, B> extends protos.FxEffectBa
2499
2497
  /**
2500
2498
  * @since 1.20.0
2501
2499
  */
2502
- abstract toEffect(): Effect.Effect<R2, E2, B>
2500
+ abstract toEffect(): Effect.Effect<B, E2, R2>
2503
2501
  }