@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/RefSubject.ts CHANGED
@@ -95,8 +95,8 @@ export interface RefSubject<out R, in out E, in out A> extends Computed<R, E, A>
95
95
  * @since 1.20.0
96
96
  */
97
97
  readonly runUpdates: <R2, E2, B>(
98
- f: (ref: GetSetDelete<R, E, A>) => Effect.Effect<R2, E2, B>
99
- ) => Effect.Effect<R | R2, E2, B>
98
+ f: (ref: GetSetDelete<R, E, A>) => Effect.Effect<B, E2, R2>
99
+ ) => Effect.Effect<B, E2, R | R2>
100
100
  }
101
101
 
102
102
  /**
@@ -124,9 +124,9 @@ export namespace RefSubject {
124
124
  * @since 1.20.0
125
125
  */
126
126
  readonly make: <R>(
127
- fxOrEffect: Fx<R, E, A> | Effect.Effect<R, E, A>,
127
+ fxOrEffect: Fx<R, E, A> | Effect.Effect<A, E, R>,
128
128
  options?: RefSubjectOptions<A>
129
- ) => Layer.Layer<R, never, I>
129
+ ) => Layer.Layer<I, never, R>
130
130
  }
131
131
 
132
132
  /**
@@ -135,7 +135,7 @@ export namespace RefSubject {
135
135
  * @category models
136
136
  */
137
137
  export interface Derived<R, E, A> extends RefSubject<R, E, A> {
138
- readonly persist: Effect.Effect<R, never, void>
138
+ readonly persist: Effect.Effect<void, never, R>
139
139
  }
140
140
 
141
141
  /**
@@ -193,9 +193,9 @@ export interface RefSubjectOptions<A> {
193
193
  * @since 1.20.0
194
194
  */
195
195
  export function fromEffect<R, E, A>(
196
- effect: Effect.Effect<R, E, A>,
196
+ effect: Effect.Effect<A, E, R>,
197
197
  options?: RefSubjectOptions<A>
198
- ): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A>> {
198
+ ): Effect.Effect<RefSubject<never, E, A>, never, R | Scope.Scope> {
199
199
  return Effect.map(makeCore(effect, options), (core) => new RefSubjectImpl(core))
200
200
  }
201
201
 
@@ -205,7 +205,7 @@ export function fromEffect<R, E, A>(
205
205
  export function fromFx<R, E, A>(
206
206
  fx: Fx<R, E, A>,
207
207
  options?: RefSubjectOptions<A>
208
- ): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A>> {
208
+ ): Effect.Effect<RefSubject<never, E, A>, never, R | Scope.Scope> {
209
209
  return DeferredRef.make<E, A>(getExitEquivalence(options?.eq ?? Equal.equals)).pipe(
210
210
  Effect.bindTo("deferredRef"),
211
211
  Effect.bind("core", ({ deferredRef }) => makeCore(deferredRef, options)),
@@ -231,7 +231,7 @@ export function fromFx<R, E, A>(
231
231
  export function fromRefSubject<R, E, A>(
232
232
  ref: RefSubject<R, E, A>,
233
233
  options?: RefSubjectOptions<A>
234
- ): Effect.Effect<R | Scope.Scope, never, RefSubject.Derived<never, E, A>> {
234
+ ): Effect.Effect<RefSubject.Derived<never, E, A>, never, R | Scope.Scope> {
235
235
  return DeferredRef.make<E, A>(getExitEquivalence(options?.eq ?? Equal.equals)).pipe(
236
236
  Effect.bindTo("deferredRef"),
237
237
  Effect.bind("core", ({ deferredRef }) => makeCore<R, E, A>(deferredRef, options)),
@@ -265,21 +265,21 @@ export const make: {
265
265
  <R, E, A>(
266
266
  ref: RefSubject<R, E, A>,
267
267
  options?: RefSubjectOptions<A>
268
- ): Effect.Effect<R | Scope.Scope, never, RefSubject.Derived<never, E, A>>
268
+ ): Effect.Effect<RefSubject.Derived<never, E, A>, never, R | Scope.Scope>
269
269
 
270
270
  <R, E, A>(
271
- fxOrEffect: Fx<R, E, A> | Effect.Effect<R, E, A>,
271
+ fxOrEffect: Fx<R, E, A> | Effect.Effect<A, E, R>,
272
272
  options?: RefSubjectOptions<A>
273
- ): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A>>
273
+ ): Effect.Effect<RefSubject<never, E, A>, never, R | Scope.Scope>
274
274
 
275
275
  <R, E, A>(
276
- fxOrEffect: Fx<R, E, A> | Effect.Effect<R, E, A> | RefSubject<R, E, A>,
276
+ fxOrEffect: Fx<R, E, A> | Effect.Effect<A, E, R> | RefSubject<R, E, A>,
277
277
  options?: RefSubjectOptions<A>
278
- ): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A> | RefSubject.Derived<never, E, A>>
278
+ ): Effect.Effect<RefSubject<never, E, A> | RefSubject.Derived<never, E, A>, never, R | Scope.Scope>
279
279
  } = function make<R, E, A>(
280
- fxOrEffect: Fx<R, E, A> | Effect.Effect<R, E, A> | RefSubject<R, E, A>,
280
+ fxOrEffect: Fx<R, E, A> | Effect.Effect<A, E, R> | RefSubject<R, E, A>,
281
281
  options?: RefSubjectOptions<A>
282
- ): Effect.Effect<R | Scope.Scope, never, any> {
282
+ ): Effect.Effect<any, never, R | Scope.Scope> {
283
283
  if (RefSubjectTypeId in fxOrEffect) return fromRefSubject(fxOrEffect as RefSubject<R, E, A>, options)
284
284
  else if (TypeId in fxOrEffect) return fromFx(fxOrEffect, options)
285
285
  else return fromEffect(fxOrEffect, options)
@@ -291,7 +291,7 @@ export const make: {
291
291
  export function of<A, E = never>(
292
292
  a: A,
293
293
  options?: RefSubjectOptions<A>
294
- ): Effect.Effect<Scope.Scope, never, RefSubject<never, E, A>> {
294
+ ): Effect.Effect<RefSubject<never, E, A>, never, Scope.Scope> {
295
295
  return Effect.acquireRelease(
296
296
  withScopeAndFiberId(
297
297
  (scope, id) =>
@@ -309,7 +309,7 @@ export function of<A, E = never>(
309
309
  }
310
310
 
311
311
  const withScopeAndFiberId = <R, E, A>(
312
- f: (scope: Scope.CloseableScope, id: FiberId.FiberId) => Effect.Effect<R, E, A>,
312
+ f: (scope: Scope.CloseableScope, id: FiberId.FiberId) => Effect.Effect<A, E, R>,
313
313
  strategy: ExecutionStrategy.ExecutionStrategy
314
314
  ) => Effect.fiberIdWith((id) => withScope((scope) => f(scope, id), strategy))
315
315
 
@@ -321,12 +321,12 @@ const emptyContext = C.empty()
321
321
  export function unsafeMake<E, A>(
322
322
  params: {
323
323
  readonly id: FiberId.FiberId
324
- readonly initial: Effect.Effect<never, E, A>
324
+ readonly initial: Effect.Effect<A, E>
325
325
  readonly options?: RefSubjectOptions<A> | undefined
326
326
  readonly scope: Scope.CloseableScope
327
327
  readonly initialValue?: A
328
328
  }
329
- ): Effect.Effect<never, never, RefSubject<never, E, A>> {
329
+ ): Effect.Effect<RefSubject<never, E, A>> {
330
330
  const { id, initial, options, scope } = params
331
331
  return Effect.suspend(() => {
332
332
  const core = unsafeMakeCore(initial, id, emptyContext, scope, options)
@@ -348,9 +348,9 @@ class RefSubjectImpl<R, E, A, R2> extends FxEffectBase<Exclude<R, R2> | Scope.Sc
348
348
  readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
349
349
  readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
350
350
 
351
- readonly version: Effect.Effect<never, never, number>
352
- readonly interrupt: Effect.Effect<Exclude<R, R2>, never, void>
353
- readonly subscriberCount: Effect.Effect<Exclude<R, R2>, never, number>
351
+ readonly version: Effect.Effect<number>
352
+ readonly interrupt: Effect.Effect<void, never, Exclude<R, R2>>
353
+ readonly subscriberCount: Effect.Effect<number, never, Exclude<R, R2>>
354
354
 
355
355
  private readonly getSetDelete: GetSetDelete<Exclude<R, R2>, E, A>
356
356
 
@@ -369,7 +369,7 @@ class RefSubjectImpl<R, E, A, R2> extends FxEffectBase<Exclude<R, R2> | Scope.Sc
369
369
  this.onFailure = this.onFailure.bind(this)
370
370
  }
371
371
 
372
- run<R3>(sink: Sink.Sink<R3, E, A>): Effect.Effect<Exclude<R, R2> | R3 | Scope.Scope, never, unknown> {
372
+ run<R3>(sink: Sink.Sink<R3, E, A>): Effect.Effect<unknown, never, Exclude<R, R2> | R3 | Scope.Scope> {
373
373
  return Effect.matchCauseEffect(getOrInitializeCore(this.core, true), {
374
374
  onFailure: (cause) => sink.onFailure(cause),
375
375
  onSuccess: () => Effect.provide(this.core.subject.run(sink), this.core.context)
@@ -377,20 +377,20 @@ class RefSubjectImpl<R, E, A, R2> extends FxEffectBase<Exclude<R, R2> | Scope.Sc
377
377
  }
378
378
 
379
379
  runUpdates<R3, E3, B>(
380
- run: (ref: GetSetDelete<Exclude<R, R2>, E, A>) => Effect.Effect<R3, E3, B>
380
+ run: (ref: GetSetDelete<Exclude<R, R2>, E, A>) => Effect.Effect<B, E3, R3>
381
381
  ) {
382
382
  return this.core.semaphore.withPermits(1)(run(this.getSetDelete))
383
383
  }
384
384
 
385
- onSuccess(value: A): Effect.Effect<Exclude<R, R2>, never, unknown> {
385
+ onSuccess(value: A): Effect.Effect<unknown, never, Exclude<R, R2>> {
386
386
  return setCore(this.core, value)
387
387
  }
388
388
 
389
- onFailure(cause: Cause.Cause<E>): Effect.Effect<Exclude<R, R2>, never, unknown> {
389
+ onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, Exclude<R, R2>> {
390
390
  return onFailureCore(this.core, cause)
391
391
  }
392
392
 
393
- toEffect(): Effect.Effect<Exclude<R, R2>, E, A> {
393
+ toEffect(): Effect.Effect<A, E, Exclude<R, R2>> {
394
394
  return getOrInitializeCore(this.core, true)
395
395
  }
396
396
  }
@@ -398,7 +398,7 @@ class RefSubjectImpl<R, E, A, R2> extends FxEffectBase<Exclude<R, R2> | Scope.Sc
398
398
  class DerivedImpl<R, E, A, R2> extends RefSubjectImpl<R, E, A, R2> implements RefSubject.Derived<Exclude<R, R2>, E, A> {
399
399
  constructor(
400
400
  core: RefSubjectCore<R, E, A, R2>,
401
- readonly persist: Effect.Effect<Exclude<R, R2>, never, void>
401
+ readonly persist: Effect.Effect<void, never, Exclude<R, R2>>
402
402
  ) {
403
403
  super(core)
404
404
  }
@@ -408,16 +408,16 @@ class DerivedImpl<R, E, A, R2> extends RefSubjectImpl<R, E, A, R2> implements Re
408
408
  * @since 1.20.0
409
409
  */
410
410
  export const set: {
411
- <A>(value: A): <R, E>(ref: RefSubject<R, E, A>) => Effect.Effect<R, E, A>
412
- <R, E, A>(ref: RefSubject<R, E, A>, a: A): Effect.Effect<R, E, A>
413
- } = dual(2, function set<R, E, A>(ref: RefSubject<R, E, A>, a: A): Effect.Effect<R, E, A> {
411
+ <A>(value: A): <R, E>(ref: RefSubject<R, E, A>) => Effect.Effect<A, E, R>
412
+ <R, E, A>(ref: RefSubject<R, E, A>, a: A): Effect.Effect<A, E, R>
413
+ } = dual(2, function set<R, E, A>(ref: RefSubject<R, E, A>, a: A): Effect.Effect<A, E, R> {
414
414
  return ref.runUpdates((ref) => ref.set(a))
415
415
  })
416
416
 
417
417
  /**
418
418
  * @since 1.20.0
419
419
  */
420
- export function reset<R, E, A>(ref: RefSubject<R, E, A>): Effect.Effect<R, E, Option.Option<A>> {
420
+ export function reset<R, E, A>(ref: RefSubject<R, E, A>): Effect.Effect<Option.Option<A>, E, R> {
421
421
  return ref.runUpdates((ref) => ref.delete)
422
422
  }
423
423
 
@@ -438,15 +438,15 @@ export interface GetSetDelete<R, E, A> {
438
438
  /**
439
439
  * @since 1.20.0
440
440
  */
441
- readonly get: Effect.Effect<R, E, A>
441
+ readonly get: Effect.Effect<A, E, R>
442
442
  /**
443
443
  * @since 1.20.0
444
444
  */
445
- readonly set: (a: A) => Effect.Effect<R, never, A>
445
+ readonly set: (a: A) => Effect.Effect<A, never, R>
446
446
  /**
447
447
  * @since 1.20.0
448
448
  */
449
- readonly delete: Effect.Effect<R, E, Option.Option<A>>
449
+ readonly delete: Effect.Effect<Option.Option<A>, E, R>
450
450
  }
451
451
 
452
452
  function getSetDelete<R, E, A, R2>(ref: RefSubjectCore<R, E, A, R2>): GetSetDelete<Exclude<R, R2>, E, A> {
@@ -462,15 +462,15 @@ function getSetDelete<R, E, A, R2>(ref: RefSubjectCore<R, E, A, R2>): GetSetDele
462
462
  */
463
463
  export const updateEffect: {
464
464
  <A, R2, E2>(
465
- f: (value: A) => Effect.Effect<R2, E2, A>
466
- ): <R, E>(ref: RefSubject<R, E, A>) => Effect.Effect<R | R2, E | E2, A>
465
+ f: (value: A) => Effect.Effect<A, E2, R2>
466
+ ): <R, E>(ref: RefSubject<R, E, A>) => Effect.Effect<A, E | E2, R | R2>
467
467
  <R, E, A, R2, E2>(
468
468
  ref: RefSubject<R, E, A>,
469
- f: (value: A) => Effect.Effect<R2, E2, A>
470
- ): Effect.Effect<R | R2, E | E2, A>
469
+ f: (value: A) => Effect.Effect<A, E2, R2>
470
+ ): Effect.Effect<A, E | E2, R | R2>
471
471
  } = dual(2, function updateEffect<R, E, A, R2, E2>(
472
472
  ref: RefSubject<R, E, A>,
473
- f: (value: A) => Effect.Effect<R2, E2, A>
473
+ f: (value: A) => Effect.Effect<A, E2, R2>
474
474
  ) {
475
475
  return ref.runUpdates((ref) => Effect.flatMap(Effect.flatMap(ref.get, f), ref.set))
476
476
  })
@@ -479,8 +479,8 @@ export const updateEffect: {
479
479
  * @since 1.20.0
480
480
  */
481
481
  export const update: {
482
- <A>(f: (value: A) => A): <R, E>(ref: RefSubject<R, E, A>) => Effect.Effect<R, E, A>
483
- <R, E, A>(ref: RefSubject<R, E, A>, f: (value: A) => A): Effect.Effect<R, E, A>
482
+ <A>(f: (value: A) => A): <R, E>(ref: RefSubject<R, E, A>) => Effect.Effect<A, E, R>
483
+ <R, E, A>(ref: RefSubject<R, E, A>, f: (value: A) => A): Effect.Effect<A, E, R>
484
484
  } = dual(2, function update<R, E, A>(ref: RefSubject<R, E, A>, f: (value: A) => A) {
485
485
  return updateEffect(ref, (value) => Effect.succeed(f(value)))
486
486
  })
@@ -490,15 +490,15 @@ export const update: {
490
490
  */
491
491
  export const modifyEffect: {
492
492
  <A, R2, E2, B>(
493
- f: (value: A) => Effect.Effect<R2, E2, readonly [B, A]>
494
- ): <R, E>(ref: RefSubject<R, E, A>) => Effect.Effect<R | R2, E | E2, B>
493
+ f: (value: A) => Effect.Effect<readonly [B, A], E2, R2>
494
+ ): <R, E>(ref: RefSubject<R, E, A>) => Effect.Effect<B, E | E2, R | R2>
495
495
  <R, E, A, R2, E2, B>(
496
496
  ref: RefSubject<R, E, A>,
497
- f: (value: A) => Effect.Effect<R2, E2, readonly [B, A]>
498
- ): Effect.Effect<R | R2, E | E2, B>
497
+ f: (value: A) => Effect.Effect<readonly [B, A], E2, R2>
498
+ ): Effect.Effect<B, E | E2, R | R2>
499
499
  } = dual(2, function modifyEffect<R, E, A, R2, E2, B>(
500
500
  ref: RefSubject<R, E, A>,
501
- f: (value: A) => Effect.Effect<R2, E2, readonly [B, A]>
501
+ f: (value: A) => Effect.Effect<readonly [B, A], E2, R2>
502
502
  ) {
503
503
  return ref.runUpdates(
504
504
  (ref) =>
@@ -513,8 +513,8 @@ export const modifyEffect: {
513
513
  * @since 1.20.0
514
514
  */
515
515
  export const modify: {
516
- <A, B>(f: (value: A) => readonly [B, A]): <R, E>(ref: RefSubject<R, E, A>) => Effect.Effect<R, E, B>
517
- <R, E, A, B>(ref: RefSubject<R, E, A>, f: (value: A) => readonly [B, A]): Effect.Effect<R, E, B>
516
+ <A, B>(f: (value: A) => readonly [B, A]): <R, E>(ref: RefSubject<R, E, A>) => Effect.Effect<B, E, R>
517
+ <R, E, A, B>(ref: RefSubject<R, E, A>, f: (value: A) => readonly [B, A]): Effect.Effect<B, E, R>
518
518
  } = dual(2, function modify<R, E, A, B>(ref: RefSubject<R, E, A>, f: (value: A) => readonly [B, A]) {
519
519
  return modifyEffect(ref, (value) => Effect.succeed(f(value)))
520
520
  })
@@ -526,26 +526,26 @@ const isRefSubjectDataFirst = (args: IArguments) => isRefSubject(args[0])
526
526
  */
527
527
  export const runUpdates: {
528
528
  <R, E, A, R2, E2, B, R3 = never, E3 = never, C = never>(
529
- f: (ref: GetSetDelete<R, E, A>) => Effect.Effect<R2, E2, B>,
529
+ f: (ref: GetSetDelete<R, E, A>) => Effect.Effect<B, E2, R2>,
530
530
  options?:
531
- | { readonly onInterrupt: (value: A) => Effect.Effect<R3, E3, C>; readonly value?: "initial" | "current" }
531
+ | { readonly onInterrupt: (value: A) => Effect.Effect<C, E3, R3>; readonly value?: "initial" | "current" }
532
532
  | undefined
533
- ): (ref: RefSubject<R, E, A>) => Effect.Effect<R | R2 | R3, E | E2 | E3, B>
533
+ ): (ref: RefSubject<R, E, A>) => Effect.Effect<B, E | E2 | E3, R | R2 | R3>
534
534
 
535
535
  <R, E, A, R2, E2, B, R3 = never, E3 = never, C = never>(
536
536
  ref: RefSubject<R, E, A>,
537
- f: (ref: GetSetDelete<R, E, A>) => Effect.Effect<R2, E2, B>,
537
+ f: (ref: GetSetDelete<R, E, A>) => Effect.Effect<B, E2, R2>,
538
538
  options?:
539
- | { readonly onInterrupt: (value: A) => Effect.Effect<R3, E3, C>; readonly value?: "initial" | "current" }
539
+ | { readonly onInterrupt: (value: A) => Effect.Effect<C, E3, R3>; readonly value?: "initial" | "current" }
540
540
  | undefined
541
- ): Effect.Effect<R | R2 | R3, E | E2 | E3, B>
541
+ ): Effect.Effect<B, E | E2 | E3, R | R2 | R3>
542
542
  } = dual(
543
543
  isRefSubjectDataFirst,
544
544
  function runUpdates<R, E, A, R2, E2, B, R3 = never, E3 = never, C = never>(
545
545
  ref: RefSubject<R, E, A>,
546
- f: (ref: GetSetDelete<R, E, A>) => Effect.Effect<R2, E2, B>,
546
+ f: (ref: GetSetDelete<R, E, A>) => Effect.Effect<B, E2, R2>,
547
547
  options?: {
548
- readonly onInterrupt: (value: A) => Effect.Effect<R3, E3, C>
548
+ readonly onInterrupt: (value: A) => Effect.Effect<C, E3, R3>
549
549
  readonly value?: "initial" | "current"
550
550
  }
551
551
  ) {
@@ -587,7 +587,7 @@ export const runUpdates: {
587
587
 
588
588
  class RefSubjectCore<R, E, A, R2> {
589
589
  constructor(
590
- readonly initial: Effect.Effect<R, E, A>,
590
+ readonly initial: Effect.Effect<A, E, R>,
591
591
  readonly subject: Subject.Subject<R, E, A>,
592
592
  readonly context: C.Context<R2>,
593
593
  readonly scope: Scope.CloseableScope,
@@ -595,11 +595,11 @@ class RefSubjectCore<R, E, A, R2> {
595
595
  readonly semaphore: Effect.Semaphore
596
596
  ) {}
597
597
 
598
- public _fiber: Fiber.Fiber<E, A> | undefined = undefined
598
+ public _fiber: Fiber.Fiber<A, E> | undefined = undefined
599
599
  }
600
600
 
601
601
  function makeCore<R, E, A>(
602
- initial: Effect.Effect<R, E, A>,
602
+ initial: Effect.Effect<A, E, R>,
603
603
  options?: RefSubjectOptions<A>
604
604
  ) {
605
605
  return Effect.context<R | Scope.Scope>().pipe(
@@ -629,7 +629,7 @@ function makeCore<R, E, A>(
629
629
  }
630
630
 
631
631
  function unsafeMakeCore<R, E, A>(
632
- initial: Effect.Effect<R, E, A>,
632
+ initial: Effect.Effect<A, E, R>,
633
633
  id: FiberId.FiberId,
634
634
  ctx: C.Context<R>,
635
635
  scope: Scope.CloseableScope,
@@ -648,7 +648,7 @@ function unsafeMakeCore<R, E, A>(
648
648
  function getOrInitializeCore<R, E, A, R2>(
649
649
  core: RefSubjectCore<R, E, A, R2>,
650
650
  lockInitialize: boolean
651
- ): Effect.Effect<Exclude<R, R2>, E, A> {
651
+ ): Effect.Effect<A, E, Exclude<R, R2>> {
652
652
  return Effect.suspend(() => {
653
653
  if (core._fiber === undefined && Option.isNone(core.deferredRef.current)) {
654
654
  return initializeCoreAndTap(core, lockInitialize)
@@ -661,7 +661,7 @@ function getOrInitializeCore<R, E, A, R2>(
661
661
  function initializeCoreEffect<R, E, A, R2>(
662
662
  core: RefSubjectCore<R, E, A, R2>,
663
663
  lock: boolean
664
- ): Effect.Effect<Exclude<R, R2>, never, Fiber.Fiber<E, A>> {
664
+ ): Effect.Effect<Fiber.Fiber<A, E>, never, Exclude<R, R2>> {
665
665
  const initialize = Effect.onExit(
666
666
  Effect.provide(core.initial, core.context),
667
667
  (exit) =>
@@ -683,8 +683,8 @@ function initializeCoreEffect<R, E, A, R2>(
683
683
  function initializeCore<R, E, A, R2>(
684
684
  core: RefSubjectCore<R, E, A, R2>,
685
685
  lock: boolean
686
- ): Effect.Effect<Exclude<R, R2>, never, Fiber.Fiber<E, A>> {
687
- type Z = Effect.Effect<Exclude<R, R2>, never, Fiber.Fiber<E, A>>
686
+ ): Effect.Effect<Fiber.Fiber<A, E>, never, Exclude<R, R2>> {
687
+ type Z = Effect.Effect<Fiber.Fiber<A, E>, never, Exclude<R, R2>>
688
688
 
689
689
  const onSuccess = (a: A): Z => {
690
690
  core.deferredRef.done(Exit.succeed(a))
@@ -713,14 +713,14 @@ function initializeCore<R, E, A, R2>(
713
713
  function initializeCoreAndTap<R, E, A, R2>(
714
714
  core: RefSubjectCore<R, E, A, R2>,
715
715
  lock: boolean
716
- ): Effect.Effect<Exclude<R, R2>, E, A> {
716
+ ): Effect.Effect<A, E, Exclude<R, R2>> {
717
717
  return Effect.zipRight(
718
718
  initializeCore(core, lock),
719
719
  tapEventCore(core, core.deferredRef)
720
720
  )
721
721
  }
722
722
 
723
- function setCore<R, E, A, R2>(core: RefSubjectCore<R, E, A, R2>, a: A): Effect.Effect<Exclude<R, R2>, never, A> {
723
+ function setCore<R, E, A, R2>(core: RefSubjectCore<R, E, A, R2>, a: A): Effect.Effect<A, never, Exclude<R, R2>> {
724
724
  const exit = Exit.succeed(a)
725
725
 
726
726
  return Effect.suspend(() => {
@@ -746,7 +746,7 @@ function onFailureCore<R, E, A, R2>(core: RefSubjectCore<R, E, A, R2>, cause: Ca
746
746
  })
747
747
  }
748
748
 
749
- function interruptCore<R, E, A, R2>(core: RefSubjectCore<R, E, A, R2>): Effect.Effect<R, never, void> {
749
+ function interruptCore<R, E, A, R2>(core: RefSubjectCore<R, E, A, R2>): Effect.Effect<void, never, R> {
750
750
  return Effect.fiberIdWith((id) => {
751
751
  core.deferredRef.reset()
752
752
 
@@ -760,7 +760,7 @@ function interruptCore<R, E, A, R2>(core: RefSubjectCore<R, E, A, R2>): Effect.E
760
760
 
761
761
  function deleteCore<R, E, A, R2>(
762
762
  core: RefSubjectCore<R, E, A, R2>
763
- ): Effect.Effect<Exclude<R, R2>, E, Option.Option<A>> {
763
+ ): Effect.Effect<Option.Option<A>, E, Exclude<R, R2>> {
764
764
  return Effect.suspend(() => {
765
765
  const current = core.deferredRef.current
766
766
  core.deferredRef.reset()
@@ -781,7 +781,7 @@ function deleteCore<R, E, A, R2>(
781
781
 
782
782
  function tapEventCore<R, E, A, R2, R3>(
783
783
  core: RefSubjectCore<R, E, A, R2>,
784
- effect: Effect.Effect<R3, E, A>
784
+ effect: Effect.Effect<A, E, R3>
785
785
  ) {
786
786
  return effect.pipe(
787
787
  Effect.exit,
@@ -792,8 +792,8 @@ function tapEventCore<R, E, A, R2, R3>(
792
792
 
793
793
  function sendEvent<R, E, A, R2>(
794
794
  core: RefSubjectCore<R, E, A, R2>,
795
- exit: Exit.Exit<E, A>
796
- ): Effect.Effect<Exclude<R, R2>, never, unknown> {
795
+ exit: Exit.Exit<A, E>
796
+ ): Effect.Effect<unknown, never, Exclude<R, R2>> {
797
797
  if (Exit.isSuccess(exit)) {
798
798
  return Effect.provide(core.subject.onSuccess(exit.value), core.context)
799
799
  } else {
@@ -806,33 +806,33 @@ function sendEvent<R, E, A, R2>(
806
806
  */
807
807
  export const mapEffect: {
808
808
  <A, R2, E2, B>(
809
- f: (a: A) => Effect.Effect<R2, E2, B>
809
+ f: (a: A) => Effect.Effect<B, E2, R2>
810
810
  ): {
811
811
  <R, E>(ref: RefSubject<R, E, A> | Computed<R, E, A>): Computed<R | R2, E | E2, B>
812
812
  <R, E>(ref: Filtered<R, E, A>): Filtered<R | R2, E | E2, B>
813
813
  <R0, E0, R, E, R2, E2, C>(
814
814
  versioned: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>,
815
- f: (a: A) => Effect.Effect<R2, E2, C>
815
+ f: (a: A) => Effect.Effect<C, E2, R2>
816
816
  ): Computed<R0 | R2, E0 | E | E2, C>
817
817
  }
818
818
 
819
819
  <R, E, A, R2, E2, B>(
820
820
  ref: RefSubject<R, E, A> | Computed<R, E, A>,
821
- f: (a: A) => Effect.Effect<R2, E2, B>
821
+ f: (a: A) => Effect.Effect<B, E2, R2>
822
822
  ): Computed<R | R2, E | E2, B>
823
823
 
824
824
  <R, E, A, R2, E2, B>(
825
825
  ref: Filtered<R, E, A>,
826
- f: (a: A) => Effect.Effect<R2, E2, B>
826
+ f: (a: A) => Effect.Effect<B, E2, R2>
827
827
  ): Filtered<R | R2, E | E2, B>
828
828
 
829
829
  <R0, E0, R, E, A, R2, E2, R3, E3, C>(
830
830
  versioned: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>,
831
- f: (a: A) => Effect.Effect<R3, E3, C>
831
+ f: (a: A) => Effect.Effect<C, E3, R3>
832
832
  ): Computed<R0 | R2 | R3 | Exclude<R, Scope.Scope>, E0 | E | E2 | E3, C>
833
833
  } = dual(2, function mapEffect<R0, E0, R, E, A, R2, E2, R3, E3, C>(
834
834
  versioned: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>,
835
- f: (a: A) => Effect.Effect<R3, E3, C>
835
+ f: (a: A) => Effect.Effect<C, E3, R3>
836
836
  ):
837
837
  | Computed<R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3, E0 | E | E2 | E3, C>
838
838
  | Filtered<R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3, E0 | E | E2 | E3, C>
@@ -882,27 +882,27 @@ export const map: {
882
882
  */
883
883
  export const filterMapEffect: {
884
884
  <A, R2, E2, B>(
885
- f: (a: A) => Effect.Effect<R2, E2, Option.Option<B>>
885
+ f: (a: A) => Effect.Effect<Option.Option<B>, E2, R2>
886
886
  ): {
887
887
  <R, E>(ref: RefSubject<R, E, A> | Computed<R, E, A>): Filtered<R | R2, E | E2, B>
888
888
  <R, E>(ref: Filtered<R, E, A>): Filtered<R | R2, E | E2, B>
889
889
  <R0, E0, R, E, R2, E2, B>(
890
890
  versioned: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>,
891
- f: (a: A) => Effect.Effect<R2, E2, Option.Option<B>>
891
+ f: (a: A) => Effect.Effect<Option.Option<B>, E2, R2>
892
892
  ): Filtered<R0 | R2, E0 | E | E2, B>
893
893
  }
894
894
 
895
895
  <R, E, A, R2, E2, B>(
896
896
  ref: RefSubject<R, E, A> | Computed<R, E, A> | Filtered<R, E, A>,
897
- f: (a: A) => Effect.Effect<R2, E2, Option.Option<B>>
897
+ f: (a: A) => Effect.Effect<Option.Option<B>, E2, R2>
898
898
  ): Filtered<R | R2, E | E2, B>
899
899
  <R0, E0, R, E, A, R2, E2, B, R3, E3>(
900
900
  versioned: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>,
901
- f: (a: A) => Effect.Effect<R3, E3, Option.Option<B>>
901
+ f: (a: A) => Effect.Effect<Option.Option<B>, E3, R3>
902
902
  ): Filtered<R0 | R2 | R3 | Exclude<R, Scope.Scope>, E0 | E | E2 | E3, B>
903
903
  } = dual(2, function filterMapEffect<R0, E0, R, E, A, R2, E2, B, R3, E3>(
904
904
  versioned: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>,
905
- f: (a: A) => Effect.Effect<R3, E3, Option.Option<B>>
905
+ f: (a: A) => Effect.Effect<Option.Option<B>, E3, R3>
906
906
  ): Filtered<R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3, E0 | E | E2 | E3, B> {
907
907
  return FilteredImpl.make(versioned, f)
908
908
  })
@@ -960,15 +960,15 @@ export const compact: {
960
960
  export const filterEffect: {
961
961
  <R, E, A, R2, E2>(
962
962
  ref: RefSubject<R, E, A> | Computed<R, E, A> | Filtered<R, E, A>,
963
- f: (a: A) => Effect.Effect<R2, E2, boolean>
963
+ f: (a: A) => Effect.Effect<boolean, E2, R2>
964
964
  ): Filtered<R | R2, E | E2, A>
965
965
  <R0, E0, R, E, A, R2, E2, R3, E3>(
966
966
  versioned: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>,
967
- f: (a: A) => Effect.Effect<R3, E3, boolean>
967
+ f: (a: A) => Effect.Effect<boolean, E3, R3>
968
968
  ): Filtered<R0 | R2 | R3 | Exclude<R, Scope.Scope>, E0 | E | E2 | E3, A>
969
969
  } = dual(2, function filterEffect<R0, E0, R, E, A, R2, E2, R3, E3>(
970
970
  versioned: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>,
971
- f: (a: A) => Effect.Effect<R3, E3, boolean>
971
+ f: (a: A) => Effect.Effect<boolean, E3, R3>
972
972
  ): Filtered<R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3, E0 | E | E2 | E3, A> {
973
973
  return FilteredImpl.make(versioned, (a) => Effect.map(f(a), (b) => b ? Option.some(a) : Option.none()))
974
974
  })
@@ -1017,7 +1017,7 @@ class ComputedImpl<R0, E0, R, E, A, R2, E2, R3, E3, C> extends Versioned.Version
1017
1017
 
1018
1018
  constructor(
1019
1019
  readonly input: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>,
1020
- readonly f: (a: A) => Effect.Effect<R3, E3, C>
1020
+ readonly f: (a: A) => Effect.Effect<C, E3, R3>
1021
1021
  ) {
1022
1022
  super(
1023
1023
  input,
@@ -1028,7 +1028,7 @@ class ComputedImpl<R0, E0, R, E, A, R2, E2, R3, E3, C> extends Versioned.Version
1028
1028
 
1029
1029
  static make<R0, E0, R, E, A, R2, E2, R3, E3, C>(
1030
1030
  input: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>,
1031
- f: (a: A) => Effect.Effect<R3, E3, C>
1031
+ f: (a: A) => Effect.Effect<C, E3, R3>
1032
1032
  ): Computed<R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3, E0 | E | E2 | E3, C> {
1033
1033
  return new ComputedImpl(input, f)
1034
1034
  }
@@ -1054,7 +1054,7 @@ class FilteredImpl<R0, E0, R, E, A, R2, E2, R3, E3, C> extends Versioned.Version
1054
1054
 
1055
1055
  constructor(
1056
1056
  readonly input: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>,
1057
- readonly f: (a: A) => Effect.Effect<R3, E3, Option.Option<C>>
1057
+ readonly f: (a: A) => Effect.Effect<Option.Option<C>, E3, R3>
1058
1058
  ) {
1059
1059
  super(
1060
1060
  input,
@@ -1065,7 +1065,7 @@ class FilteredImpl<R0, E0, R, E, A, R2, E2, R3, E3, C> extends Versioned.Version
1065
1065
 
1066
1066
  static make<R0, E0, R, E, A, R2, E2, R3, E3, C>(
1067
1067
  input: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>,
1068
- f: (a: A) => Effect.Effect<R3, E3, Option.Option<C>>
1068
+ f: (a: A) => Effect.Effect<Option.Option<C>, E3, R3>
1069
1069
  ): Filtered<
1070
1070
  R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3,
1071
1071
  E0 | E | Exclude<E2, Cause.NoSuchElementException> | E3,
@@ -1151,8 +1151,8 @@ export function transform<R, E, A, B>(
1151
1151
  */
1152
1152
  export function transformOrFail<R, E, R2, E2, A, R3, E3, B>(
1153
1153
  ref: RefSubject<R, E, A>,
1154
- from: (a: A) => Effect.Effect<R2, E2, B>,
1155
- to: (b: B) => Effect.Effect<R3, E3, A>
1154
+ from: (a: A) => Effect.Effect<B, E2, R2>,
1155
+ to: (b: B) => Effect.Effect<A, E3, R3>
1156
1156
  ): RefSubject<R | R2 | R3, E | E2 | E3, B> {
1157
1157
  return new RefSubjectTransformEffect(ref, from, to)
1158
1158
  }
@@ -1163,9 +1163,9 @@ class RefSubjectTransform<R, E, A, B> extends FxEffectBase<R | Scope.Scope, E, B
1163
1163
  readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
1164
1164
  readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
1165
1165
 
1166
- readonly version: Effect.Effect<R, E, number>
1167
- readonly interrupt: Effect.Effect<R, never, void>
1168
- readonly subscriberCount: Effect.Effect<R, never, number>
1166
+ readonly version: Effect.Effect<number, E, R>
1167
+ readonly interrupt: Effect.Effect<void, never, R>
1168
+ readonly subscriberCount: Effect.Effect<number, never, R>
1169
1169
 
1170
1170
  constructor(
1171
1171
  readonly ref: RefSubject<R, E, A>,
@@ -1179,12 +1179,12 @@ class RefSubjectTransform<R, E, A, B> extends FxEffectBase<R | Scope.Scope, E, B
1179
1179
  this.subscriberCount = ref.subscriberCount
1180
1180
  }
1181
1181
 
1182
- run<R2 = never>(sink: Sink.Sink<R2, E, B>): Effect.Effect<R | Scope.Scope | R2, never, unknown> {
1182
+ run<R2 = never>(sink: Sink.Sink<R2, E, B>): Effect.Effect<unknown, never, R | Scope.Scope | R2> {
1183
1183
  return this.ref.run(Sink.map(sink, this.from))
1184
1184
  }
1185
1185
 
1186
1186
  runUpdates<R2, E2, C>(
1187
- run: (ref: GetSetDelete<R, E, B>) => Effect.Effect<R2, E2, C>
1187
+ run: (ref: GetSetDelete<R, E, B>) => Effect.Effect<C, E2, R2>
1188
1188
  ) {
1189
1189
  return this.ref.runUpdates((ref) =>
1190
1190
  run({
@@ -1195,15 +1195,15 @@ class RefSubjectTransform<R, E, A, B> extends FxEffectBase<R | Scope.Scope, E, B
1195
1195
  )
1196
1196
  }
1197
1197
 
1198
- onFailure(cause: Cause.Cause<E>): Effect.Effect<R, never, unknown> {
1198
+ onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, R> {
1199
1199
  return this.ref.onFailure(cause)
1200
1200
  }
1201
1201
 
1202
- onSuccess(value: B): Effect.Effect<R, never, unknown> {
1202
+ onSuccess(value: B): Effect.Effect<unknown, never, R> {
1203
1203
  return this.ref.onSuccess(this.to(value))
1204
1204
  }
1205
1205
 
1206
- toEffect(): Effect.Effect<R, E, B> {
1206
+ toEffect(): Effect.Effect<B, E, R> {
1207
1207
  return Effect.map(this.ref, this.from)
1208
1208
  }
1209
1209
  }
@@ -1215,15 +1215,15 @@ class RefSubjectTransformEffect<R, E, A, R2, E2, B, R3, E3>
1215
1215
  readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
1216
1216
  readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
1217
1217
 
1218
- readonly version: Effect.Effect<R, E, number>
1219
- readonly interrupt: Effect.Effect<R, never, void>
1220
- readonly subscriberCount: Effect.Effect<R, never, number>
1218
+ readonly version: Effect.Effect<number, E, R>
1219
+ readonly interrupt: Effect.Effect<void, never, R>
1220
+ readonly subscriberCount: Effect.Effect<number, never, R>
1221
1221
  readonly subject: Subject.Subject<never, E | E2 | E3, B>
1222
1222
 
1223
1223
  constructor(
1224
1224
  readonly ref: RefSubject<R, E, A>,
1225
- readonly from: (a: A) => Effect.Effect<R2, E2, B>,
1226
- readonly to: (b: B) => Effect.Effect<R3, E3, A>
1225
+ readonly from: (a: A) => Effect.Effect<B, E2, R2>,
1226
+ readonly to: (b: B) => Effect.Effect<A, E3, R3>
1227
1227
  ) {
1228
1228
  super()
1229
1229
 
@@ -1233,12 +1233,12 @@ class RefSubjectTransformEffect<R, E, A, R2, E2, B, R3, E3>
1233
1233
  this.subject = Subject.unsafeMake()
1234
1234
  }
1235
1235
 
1236
- run<R4 = never>(sink: Sink.Sink<R4, E | E2 | E3, B>): Effect.Effect<R | R2 | R3 | Scope.Scope | R4, never, unknown> {
1236
+ run<R4 = never>(sink: Sink.Sink<R4, E | E2 | E3, B>): Effect.Effect<unknown, never, R | R2 | R3 | Scope.Scope | R4> {
1237
1237
  return core.merge(core.mapEffect(this.ref, this.from), this.subject).run(sink)
1238
1238
  }
1239
1239
 
1240
1240
  runUpdates<R4, E4, C>(
1241
- run: (ref: GetSetDelete<R | R2 | R3, E | E2 | E3, B>) => Effect.Effect<R4, E4, C>
1241
+ run: (ref: GetSetDelete<R | R2 | R3, E | E2 | E3, B>) => Effect.Effect<C, E4, R4>
1242
1242
  ) {
1243
1243
  return this.ref.runUpdates((ref) =>
1244
1244
  run({
@@ -1259,18 +1259,18 @@ class RefSubjectTransformEffect<R, E, A, R2, E2, B, R3, E3>
1259
1259
  )
1260
1260
  }
1261
1261
 
1262
- onFailure(cause: Cause.Cause<E | E2 | E3>): Effect.Effect<R, never, unknown> {
1262
+ onFailure(cause: Cause.Cause<E | E2 | E3>): Effect.Effect<unknown, never, R> {
1263
1263
  return this.subject.onFailure(cause)
1264
1264
  }
1265
1265
 
1266
- onSuccess(value: B): Effect.Effect<R | R3, never, unknown> {
1266
+ onSuccess(value: B): Effect.Effect<unknown, never, R | R3> {
1267
1267
  return Effect.matchCauseEffect(this.to(value), {
1268
1268
  onFailure: (cause) => this.subject.onFailure(cause),
1269
1269
  onSuccess: (a) => this.ref.onSuccess(a)
1270
1270
  })
1271
1271
  }
1272
1272
 
1273
- toEffect(): Effect.Effect<R | R2, E | E2, B> {
1273
+ toEffect(): Effect.Effect<B, E | E2, R | R2> {
1274
1274
  return Effect.flatMap(this.ref, this.from)
1275
1275
  }
1276
1276
  }
@@ -1406,9 +1406,9 @@ class RefSubjectTuple<
1406
1406
  readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
1407
1407
  readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
1408
1408
 
1409
- readonly version: Effect.Effect<Effect.Effect.Context<Refs[number]>, Effect.Effect.Error<Refs[number]>, number>
1410
- readonly interrupt: Effect.Effect<Effect.Effect.Context<Refs[number]>, never, void>
1411
- readonly subscriberCount: Effect.Effect<Effect.Effect.Context<Refs[number]>, never, number>
1409
+ readonly version: Effect.Effect<number, Effect.Effect.Error<Refs[number]>, Effect.Effect.Context<Refs[number]>>
1410
+ readonly interrupt: Effect.Effect<void, never, Effect.Effect.Context<Refs[number]>>
1411
+ readonly subscriberCount: Effect.Effect<number, never, Effect.Effect.Context<Refs[number]>>
1412
1412
 
1413
1413
  private versioned: Versioned.Versioned<
1414
1414
  Effect.Effect.Context<Refs[number]>,
@@ -1459,14 +1459,14 @@ class RefSubjectTuple<
1459
1459
  readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>
1460
1460
  }
1461
1461
  >
1462
- ): Effect.Effect<Effect.Effect.Context<Refs[number]> | R2, never, unknown> {
1462
+ ): Effect.Effect<unknown, never, Effect.Effect.Context<Refs[number]> | R2> {
1463
1463
  return this.versioned.run(sink)
1464
1464
  }
1465
1465
 
1466
1466
  toEffect(): Effect.Effect<
1467
- Effect.Effect.Context<Refs[number]>,
1467
+ { readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]> },
1468
1468
  Effect.Effect.Error<Refs[number]>,
1469
- { readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]> }
1469
+ Effect.Effect.Context<Refs[number]>
1470
1470
  > {
1471
1471
  return this.versioned
1472
1472
  }
@@ -1480,20 +1480,20 @@ class RefSubjectTuple<
1480
1480
  readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>
1481
1481
  }
1482
1482
  >
1483
- ) => Effect.Effect<R2, E2, C>
1483
+ ) => Effect.Effect<C, E2, R2>
1484
1484
  ) {
1485
1485
  return run(this.getSetDelete)
1486
1486
  }
1487
1487
 
1488
1488
  onFailure(
1489
1489
  cause: Cause.Cause<Effect.Effect.Error<Refs[number]>>
1490
- ): Effect.Effect<Effect.Effect.Context<Refs[number]>, never, unknown> {
1490
+ ): Effect.Effect<unknown, never, Effect.Effect.Context<Refs[number]>> {
1491
1491
  return Effect.all(this.refs.map((ref) => ref.onFailure(cause)))
1492
1492
  }
1493
1493
 
1494
1494
  onSuccess(
1495
1495
  value: { readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]> }
1496
- ): Effect.Effect<Effect.Effect.Context<Refs[number]>, never, unknown> {
1496
+ ): Effect.Effect<unknown, never, Effect.Effect.Context<Refs[number]>> {
1497
1497
  return Effect.catchAllCause(this.getSetDelete.set(value), (c) => this.onFailure(c))
1498
1498
  }
1499
1499
  }
@@ -1559,12 +1559,12 @@ class RefSubjectStruct<
1559
1559
  readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
1560
1560
 
1561
1561
  readonly version: Effect.Effect<
1562
- Effect.Effect.Context<Refs[keyof Refs]>,
1562
+ number,
1563
1563
  Effect.Effect.Error<Refs[keyof Refs]>,
1564
- number
1564
+ Effect.Effect.Context<Refs[keyof Refs]>
1565
1565
  >
1566
- readonly interrupt: Effect.Effect<Effect.Effect.Context<Refs[keyof Refs]>, never, void>
1567
- readonly subscriberCount: Effect.Effect<Effect.Effect.Context<Refs[keyof Refs]>, never, number>
1566
+ readonly interrupt: Effect.Effect<void, never, Effect.Effect.Context<Refs[keyof Refs]>>
1567
+ readonly subscriberCount: Effect.Effect<number, never, Effect.Effect.Context<Refs[keyof Refs]>>
1568
1568
 
1569
1569
  private versioned: Versioned.Versioned<
1570
1570
  Effect.Effect.Context<Refs[keyof Refs]>,
@@ -1613,14 +1613,14 @@ class RefSubjectStruct<
1613
1613
  Effect.Effect.Error<Refs[keyof Refs]>,
1614
1614
  { readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]> }
1615
1615
  >
1616
- ): Effect.Effect<Effect.Effect.Context<Refs[keyof Refs]> | R3, never, unknown> {
1616
+ ): Effect.Effect<unknown, never, Effect.Effect.Context<Refs[keyof Refs]> | R3> {
1617
1617
  return this.versioned.run(sink)
1618
1618
  }
1619
1619
 
1620
1620
  toEffect(): Effect.Effect<
1621
- Effect.Effect.Context<Refs[keyof Refs]>,
1621
+ { readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]> },
1622
1622
  Effect.Effect.Error<Refs[keyof Refs]>,
1623
- { readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]> }
1623
+ Effect.Effect.Context<Refs[keyof Refs]>
1624
1624
  > {
1625
1625
  return this.versioned
1626
1626
  }
@@ -1634,20 +1634,20 @@ class RefSubjectStruct<
1634
1634
  readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>
1635
1635
  }
1636
1636
  >
1637
- ) => Effect.Effect<R2, E2, C>
1637
+ ) => Effect.Effect<C, E2, R2>
1638
1638
  ) {
1639
1639
  return run(this.getSetDelete)
1640
1640
  }
1641
1641
 
1642
1642
  onFailure(
1643
1643
  cause: Cause.Cause<Effect.Effect.Error<Refs[keyof Refs]>>
1644
- ): Effect.Effect<Effect.Effect.Context<Refs[keyof Refs]>, never, unknown> {
1644
+ ): Effect.Effect<unknown, never, Effect.Effect.Context<Refs[keyof Refs]>> {
1645
1645
  return Effect.all(Object.values(this.refs).map((ref) => ref.onFailure(cause as any)))
1646
1646
  }
1647
1647
 
1648
1648
  onSuccess(
1649
1649
  value: { readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]> }
1650
- ): Effect.Effect<Effect.Effect.Context<Refs[keyof Refs]>, never, unknown> {
1650
+ ): Effect.Effect<unknown, never, Effect.Effect.Context<Refs[keyof Refs]>> {
1651
1651
  return Effect.catchAllCause(this.getSetDelete.set(value), (c) => this.onFailure(c))
1652
1652
  }
1653
1653
  }
@@ -1741,9 +1741,9 @@ class RefSubjectTagged<I, E, A> extends FxEffectBase<
1741
1741
  readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
1742
1742
  readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
1743
1743
 
1744
- readonly version: Effect.Effect<I, E, number>
1745
- readonly interrupt: Effect.Effect<I, never, void>
1746
- readonly subscriberCount: Effect.Effect<I, never, number>
1744
+ readonly version: Effect.Effect<number, E, I>
1745
+ readonly interrupt: Effect.Effect<void, never, I>
1746
+ readonly subscriberCount: Effect.Effect<number, never, I>
1747
1747
 
1748
1748
  constructor(
1749
1749
  readonly tag: C.Tagged<I, RefSubject<never, E, A>>,
@@ -1762,32 +1762,32 @@ class RefSubjectTagged<I, E, A> extends FxEffectBase<
1762
1762
 
1763
1763
  run<R2 = never>(
1764
1764
  sink: Sink.Sink<R2, E, A>
1765
- ): Effect.Effect<I | R2 | Scope.Scope, never, unknown> {
1765
+ ): Effect.Effect<unknown, never, I | R2 | Scope.Scope> {
1766
1766
  return this.tag.withEffect((ref) => ref.run(sink))
1767
1767
  }
1768
1768
 
1769
- toEffect(): Effect.Effect<I, E, A> {
1769
+ toEffect(): Effect.Effect<A, E, I> {
1770
1770
  return this.tag.withEffect((ref) => ref)
1771
1771
  }
1772
1772
 
1773
1773
  runUpdates<R2, E2, C>(
1774
- run: (ref: GetSetDelete<I, E, A>) => Effect.Effect<R2, E2, C>
1775
- ): Effect.Effect<I | R2, E2, C> {
1774
+ run: (ref: GetSetDelete<I, E, A>) => Effect.Effect<C, E2, R2>
1775
+ ): Effect.Effect<C, E2, I | R2> {
1776
1776
  return this.tag.withEffect((ref) => ref.runUpdates(run))
1777
1777
  }
1778
1778
 
1779
- onFailure(cause: Cause.Cause<E>): Effect.Effect<I, never, unknown> {
1779
+ onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, I> {
1780
1780
  return this.tag.withEffect((ref) => ref.onFailure(cause))
1781
1781
  }
1782
1782
 
1783
- onSuccess(value: A): Effect.Effect<I, never, unknown> {
1783
+ onSuccess(value: A): Effect.Effect<unknown, never, I> {
1784
1784
  return this.tag.withEffect((ref) => ref.onSuccess(value))
1785
1785
  }
1786
1786
 
1787
1787
  make = <R>(
1788
- fxOrEffect: Fx<R, E, A> | Effect.Effect<R, E, A>,
1788
+ fxOrEffect: Fx<R, E, A> | Effect.Effect<A, E, R>,
1789
1789
  options?: RefSubjectOptions<A>
1790
- ): Layer.Layer<R, never, I> => this.tag.scoped(make(fxOrEffect, options))
1790
+ ): Layer.Layer<I, never, R> => this.tag.scoped(make(fxOrEffect, options))
1791
1791
  }
1792
1792
 
1793
1793
  /**
@@ -1811,11 +1811,11 @@ class RefSubjectFromTag<I, S, R, E, A> extends FxEffectBase<
1811
1811
  readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
1812
1812
  readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
1813
1813
 
1814
- readonly version: Effect.Effect<I | R, E, number>
1815
- readonly interrupt: Effect.Effect<I | R, never, void>
1816
- readonly subscriberCount: Effect.Effect<I | R, never, number>
1814
+ readonly version: Effect.Effect<number, E, I | R>
1815
+ readonly interrupt: Effect.Effect<void, never, I | R>
1816
+ readonly subscriberCount: Effect.Effect<number, never, I | R>
1817
1817
 
1818
- private _get: Effect.Effect<I, never, RefSubject<R, E, A>>
1818
+ private _get: Effect.Effect<RefSubject<R, E, A>, never, I>
1819
1819
  private _fx: Fx<I | R | Scope.Scope, E, A>
1820
1820
 
1821
1821
  constructor(
@@ -1832,25 +1832,25 @@ class RefSubjectFromTag<I, S, R, E, A> extends FxEffectBase<
1832
1832
  this.subscriberCount = Effect.flatMap(this._get, (ref) => ref.subscriberCount)
1833
1833
  }
1834
1834
 
1835
- run<R3>(sink: Sink.Sink<R3, E, A>): Effect.Effect<I | R | R3 | Scope.Scope, never, unknown> {
1835
+ run<R3>(sink: Sink.Sink<R3, E, A>): Effect.Effect<unknown, never, I | R | R3 | Scope.Scope> {
1836
1836
  return this._fx.run(sink)
1837
1837
  }
1838
1838
 
1839
- toEffect(): Effect.Effect<I | R, E, A> {
1839
+ toEffect(): Effect.Effect<A, E, I | R> {
1840
1840
  return Effect.flatten(this._get)
1841
1841
  }
1842
1842
 
1843
1843
  runUpdates<R2, E2, C>(
1844
- run: (ref: GetSetDelete<I | R, E, A>) => Effect.Effect<R2, E2, C>
1845
- ): Effect.Effect<I | R | R2, E2, C> {
1844
+ run: (ref: GetSetDelete<I | R, E, A>) => Effect.Effect<C, E2, R2>
1845
+ ): Effect.Effect<C, E2, I | R | R2> {
1846
1846
  return Effect.flatMap(this._get, (ref) => ref.runUpdates(run))
1847
1847
  }
1848
1848
 
1849
- onFailure(cause: Cause.Cause<E>): Effect.Effect<I | R, never, unknown> {
1849
+ onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, I | R> {
1850
1850
  return Effect.flatMap(this._get, (ref) => ref.onFailure(cause))
1851
1851
  }
1852
1852
 
1853
- onSuccess(value: A): Effect.Effect<I | R, never, unknown> {
1853
+ onSuccess(value: A): Effect.Effect<unknown, never, I | R> {
1854
1854
  return Effect.flatMap(this._get, (ref) => ref.onSuccess(value))
1855
1855
  }
1856
1856
  }
@@ -1919,9 +1919,9 @@ class ComputedFromTag<I, S, R, E, A> extends FxEffectBase<
1919
1919
  > implements Computed<I | R, E, A> {
1920
1920
  readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
1921
1921
 
1922
- readonly version: Effect.Effect<I | R, E, number>
1922
+ readonly version: Effect.Effect<number, E, I | R>
1923
1923
 
1924
- private _get: Effect.Effect<I, never, Computed<R, E, A>>
1924
+ private _get: Effect.Effect<Computed<R, E, A>, never, I>
1925
1925
 
1926
1926
  constructor(
1927
1927
  readonly tag: C.Tag<I, S>,
@@ -1933,11 +1933,11 @@ class ComputedFromTag<I, S, R, E, A> extends FxEffectBase<
1933
1933
  this.version = Effect.flatMap(this._get, (ref) => ref.version)
1934
1934
  }
1935
1935
 
1936
- run<R3>(sink: Sink.Sink<R3, E, A>): Effect.Effect<I | R | Scope.Scope | R3, never, unknown> {
1936
+ run<R3>(sink: Sink.Sink<R3, E, A>): Effect.Effect<unknown, never, I | R | Scope.Scope | R3> {
1937
1937
  return Effect.flatMap(this._get, (ref) => ref.run(sink))
1938
1938
  }
1939
1939
 
1940
- toEffect(): Effect.Effect<I | R, E, A> {
1940
+ toEffect(): Effect.Effect<A, E, I | R> {
1941
1941
  return Effect.flatten(this._get)
1942
1942
  }
1943
1943
  }
@@ -1962,9 +1962,9 @@ class FilteredFromTag<I, S, R, E, A> extends FxEffectBase<
1962
1962
  > implements Filtered<I | R, E, A> {
1963
1963
  readonly [FilteredTypeId]: FilteredTypeId = FilteredTypeId
1964
1964
 
1965
- readonly version: Effect.Effect<I | R, E, number>
1965
+ readonly version: Effect.Effect<number, E, I | R>
1966
1966
 
1967
- private _get: Effect.Effect<I, never, Filtered<R, E, A>>
1967
+ private _get: Effect.Effect<Filtered<R, E, A>, never, I>
1968
1968
 
1969
1969
  constructor(
1970
1970
  readonly tag: C.Tag<I, S>,
@@ -1976,11 +1976,11 @@ class FilteredFromTag<I, S, R, E, A> extends FxEffectBase<
1976
1976
  this.version = Effect.flatMap(this._get, (ref) => ref.version)
1977
1977
  }
1978
1978
 
1979
- run<R3>(sink: Sink.Sink<R3, E, A>): Effect.Effect<I | R | Scope.Scope | R3, never, unknown> {
1979
+ run<R3>(sink: Sink.Sink<R3, E, A>): Effect.Effect<unknown, never, I | R | Scope.Scope | R3> {
1980
1980
  return Effect.flatMap(this._get, (ref) => ref.run(sink))
1981
1981
  }
1982
1982
 
1983
- toEffect(): Effect.Effect<I | R, E | Cause.NoSuchElementException, A> {
1983
+ toEffect(): Effect.Effect<A, E | Cause.NoSuchElementException, I | R> {
1984
1984
  return Effect.flatten(this._get)
1985
1985
  }
1986
1986
 
@@ -1999,7 +1999,7 @@ export const provide: {
1999
1999
  <R, E, A>(ref: RefSubject<R, E, A>): RefSubject<Exclude<R, S>, E, A>
2000
2000
  }
2001
2001
 
2002
- <R2, S>(layer: Layer.Layer<R2, never, S>): {
2002
+ <R2, S>(layer: Layer.Layer<S, never, R2>): {
2003
2003
  <R, E, A>(filtered: Filtered<R, E, A>): Filtered<Exclude<R, S> | R2, E, A>
2004
2004
  <R, E, A>(computed: Computed<R, E, A>): Computed<Exclude<R, S> | R2, E, A>
2005
2005
  <R, E, A>(ref: RefSubject<R, E, A>): RefSubject<Exclude<R, S> | R2, E, A>
@@ -2018,15 +2018,15 @@ export const provide: {
2018
2018
  context: C.Context<S> | Runtime.Runtime<S>
2019
2019
  ): RefSubject<Exclude<R, S>, E, A>
2020
2020
 
2021
- <R, E, A, R2, S>(filtered: Filtered<R, E, A>, layer: Layer.Layer<R2, never, S>): Filtered<Exclude<R, S> | R2, E, A>
2022
- <R, E, A, R2, S>(computed: Computed<R, E, A>, layer: Layer.Layer<R2, never, S>): Computed<Exclude<R, S> | R2, E, A>
2023
- <R, E, A, R2, S>(ref: RefSubject<R, E, A>, layer: Layer.Layer<R2, never, S>): RefSubject<Exclude<R, S> | R2, E, A>
2021
+ <R, E, A, R2, S>(filtered: Filtered<R, E, A>, layer: Layer.Layer<S, never, R2>): Filtered<Exclude<R, S> | R2, E, A>
2022
+ <R, E, A, R2, S>(computed: Computed<R, E, A>, layer: Layer.Layer<S, never, R2>): Computed<Exclude<R, S> | R2, E, A>
2023
+ <R, E, A, R2, S>(ref: RefSubject<R, E, A>, layer: Layer.Layer<S, never, R2>): RefSubject<Exclude<R, S> | R2, E, A>
2024
2024
  } = dual(2, function provide<R, E, A, R2 = never, S = never>(
2025
2025
  ref: RefSubject<R, E, A> | Computed<R, E, A> | Filtered<R, E, A>,
2026
- providing: Layer.Layer<R2, never, S> | C.Context<S> | Runtime.Runtime<S>
2026
+ providing: Layer.Layer<S, never, R2> | C.Context<S> | Runtime.Runtime<S>
2027
2027
  ) {
2028
2028
  const layer = Layer.isLayer(providing)
2029
- ? providing as Layer.Layer<R2, never, S>
2029
+ ? providing as Layer.Layer<S, never, R2>
2030
2030
  : C.isContext(providing)
2031
2031
  ? Layer.succeedContext(providing)
2032
2032
  : runtimeToLayer(providing as Runtime.Runtime<S>)
@@ -2051,12 +2051,12 @@ class RefSubjectProvide<R, E, A, R2, S> extends FxEffectBase<
2051
2051
  readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
2052
2052
  readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
2053
2053
 
2054
- readonly interrupt: Effect.Effect<Exclude<R, S> | R2, never, void>
2055
- readonly subscriberCount: Effect.Effect<Exclude<R, S> | R2, never, number>
2054
+ readonly interrupt: Effect.Effect<void, never, Exclude<R, S> | R2>
2055
+ readonly subscriberCount: Effect.Effect<number, never, Exclude<R, S> | R2>
2056
2056
 
2057
2057
  constructor(
2058
2058
  readonly ref: RefSubject<R, E, A>,
2059
- readonly layer: Layer.Layer<R2, never, S>
2059
+ readonly layer: Layer.Layer<S, never, R2>
2060
2060
  ) {
2061
2061
  super()
2062
2062
 
@@ -2066,11 +2066,11 @@ class RefSubjectProvide<R, E, A, R2, S> extends FxEffectBase<
2066
2066
 
2067
2067
  run<R3>(
2068
2068
  sink: Sink.Sink<R3, E, A>
2069
- ): Effect.Effect<R2 | Scope.Scope | Exclude<Scope.Scope, S> | Exclude<R, S> | Exclude<R3, S>, never, unknown> {
2069
+ ): Effect.Effect<unknown, never, R2 | Scope.Scope | Exclude<Scope.Scope, S> | Exclude<R, S> | Exclude<R3, S>> {
2070
2070
  return Effect.provide(this.ref.run(sink), this.layer)
2071
2071
  }
2072
2072
 
2073
- toEffect(): Effect.Effect<Exclude<R, S> | R2, E, A> {
2073
+ toEffect(): Effect.Effect<A, E, Exclude<R, S> | R2> {
2074
2074
  return Effect.provide(this.ref, this.layer)
2075
2075
  }
2076
2076
  }
@@ -2079,7 +2079,7 @@ class RefSubjectProvide<R, E, A, R2, S> extends FxEffectBase<
2079
2079
  * Set the value to true
2080
2080
  * @since 1.18.0
2081
2081
  */
2082
- export const asTrue: <R, E>(ref: RefSubject<R, E, boolean>) => Effect.Effect<R, E, boolean> = <R, E>(
2082
+ export const asTrue: <R, E>(ref: RefSubject<R, E, boolean>) => Effect.Effect<boolean, E, R> = <R, E>(
2083
2083
  ref: RefSubject<R, E, boolean>
2084
2084
  ) => set(ref, true)
2085
2085
 
@@ -2087,7 +2087,7 @@ export const asTrue: <R, E>(ref: RefSubject<R, E, boolean>) => Effect.Effect<R,
2087
2087
  * Set the value to false
2088
2088
  * @since 1.18.0
2089
2089
  */
2090
- export const asFalse: <R, E>(ref: RefSubject<R, E, boolean>) => Effect.Effect<R, E, boolean> = <R, E>(
2090
+ export const asFalse: <R, E>(ref: RefSubject<R, E, boolean>) => Effect.Effect<boolean, E, R> = <R, E>(
2091
2091
  ref: RefSubject<R, E, boolean>
2092
2092
  ) => set(ref, false)
2093
2093
 
@@ -2095,7 +2095,7 @@ export const asFalse: <R, E>(ref: RefSubject<R, E, boolean>) => Effect.Effect<R,
2095
2095
  * Toggle the boolean value between true and false
2096
2096
  * @since 1.18.0
2097
2097
  */
2098
- export const toggle: <R, E>(ref: RefSubject<R, E, boolean>) => Effect.Effect<R, E, boolean> = <R, E>(
2098
+ export const toggle: <R, E>(ref: RefSubject<R, E, boolean>) => Effect.Effect<boolean, E, R> = <R, E>(
2099
2099
  ref: RefSubject<R, E, boolean>
2100
2100
  ) => update(ref, Boolean.not)
2101
2101
 
@@ -2105,7 +2105,7 @@ const add = (x: number): number => x + 1
2105
2105
  * Set the value to true
2106
2106
  * @since 1.18.0
2107
2107
  */
2108
- export const increment: <R, E>(ref: RefSubject<R, E, number>) => Effect.Effect<R, E, number> = <R, E>(
2108
+ export const increment: <R, E>(ref: RefSubject<R, E, number>) => Effect.Effect<number, E, R> = <R, E>(
2109
2109
  ref: RefSubject<R, E, number>
2110
2110
  ) => update(ref, add)
2111
2111
 
@@ -2115,7 +2115,7 @@ const sub = (x: number): number => x - 1
2115
2115
  * Set the value to false
2116
2116
  * @since 1.18.0
2117
2117
  */
2118
- export const decrement: <R, E>(ref: RefSubject<R, E, number>) => Effect.Effect<R, E, number> = <R, E>(
2118
+ export const decrement: <R, E>(ref: RefSubject<R, E, number>) => Effect.Effect<number, E, R> = <R, E>(
2119
2119
  ref: RefSubject<R, E, number>
2120
2120
  ) => update(ref, sub)
2121
2121
 
@@ -2156,9 +2156,9 @@ class RefSubjectSlice<R, E, A> extends FxEffectBase<R | Scope.Scope, E, A, R, E,
2156
2156
  readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
2157
2157
  readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
2158
2158
 
2159
- readonly version: Effect.Effect<R, E, number>
2160
- readonly interrupt: Effect.Effect<R, never, void>
2161
- readonly subscriberCount: Effect.Effect<R, never, number>
2159
+ readonly version: Effect.Effect<number, E, R>
2160
+ readonly interrupt: Effect.Effect<void, never, R>
2161
+ readonly subscriberCount: Effect.Effect<number, never, R>
2162
2162
  private _fx: Fx<Scope.Scope | R, E, A>
2163
2163
 
2164
2164
  constructor(
@@ -2175,25 +2175,25 @@ class RefSubjectSlice<R, E, A> extends FxEffectBase<R | Scope.Scope, E, A, R, E,
2175
2175
  this._effect = ref
2176
2176
  }
2177
2177
 
2178
- run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<R | R2 | Scope.Scope, never, unknown> {
2178
+ run<R2>(sink: Sink.Sink<R2, E, A>): Effect.Effect<unknown, never, R | R2 | Scope.Scope> {
2179
2179
  return this._fx.run(sink)
2180
2180
  }
2181
2181
 
2182
- toEffect(): Effect.Effect<R, E, A> {
2182
+ toEffect(): Effect.Effect<A, E, R> {
2183
2183
  return this.ref
2184
2184
  }
2185
2185
 
2186
2186
  runUpdates<R2, E2, C>(
2187
- run: (ref: GetSetDelete<R, E, A>) => Effect.Effect<R2, E2, C>
2188
- ): Effect.Effect<R | R2, E2, C> {
2187
+ run: (ref: GetSetDelete<R, E, A>) => Effect.Effect<C, E2, R2>
2188
+ ): Effect.Effect<C, E2, R | R2> {
2189
2189
  return this.ref.runUpdates(run)
2190
2190
  }
2191
2191
 
2192
- onFailure(cause: Cause.Cause<E>): Effect.Effect<R, never, unknown> {
2192
+ onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, R> {
2193
2193
  return this.ref.onFailure(cause)
2194
2194
  }
2195
2195
 
2196
- onSuccess(value: A): Effect.Effect<R, never, unknown> {
2196
+ onSuccess(value: A): Effect.Effect<unknown, never, R> {
2197
2197
  return this.ref.onSuccess(value)
2198
2198
  }
2199
2199
  }