@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/Stream.ts CHANGED
@@ -19,8 +19,8 @@ import * as Sink from "./Sink.js"
19
19
  * @since 1.18.0
20
20
  * @category conversions
21
21
  */
22
- export function toStream<R, E, A>(fx: Fx.Fx<R, E, A>): Stream.Stream<R, E, A> {
23
- return Stream.asyncScoped<R | Scope.Scope, E, A>((emit) =>
22
+ export function toStream<R, E, A>(fx: Fx.Fx<R, E, A>): Stream.Stream<A, E, R> {
23
+ return Stream.asyncScoped<A, E, R | Scope.Scope>((emit) =>
24
24
  fx.run(
25
25
  Sink.make(
26
26
  (cause) => Effect.promise(() => emit(Effect.failCause(Cause.map(cause, Option.some)))),
@@ -42,17 +42,17 @@ export function toStream<R, E, A>(fx: Fx.Fx<R, E, A>): Stream.Stream<R, E, A> {
42
42
  */
43
43
  export const toStreamQueued: {
44
44
  <E, A, R2, E2>(
45
- make: Effect.Effect<R2, E2, Queue.Queue<Exit.Exit<Option.Option<E>, A>>>
46
- ): <R>(fx: Fx.Fx<R, E, A>) => Stream.Stream<R | R2, E | E2, A>
45
+ make: Effect.Effect<Queue.Queue<Exit.Exit<A, Option.Option<E>>>, E2, R2>
46
+ ): <R>(fx: Fx.Fx<R, E, A>) => Stream.Stream<A, E | E2, R | R2>
47
47
 
48
48
  <R, E, A, R2, E2>(
49
49
  fx: Fx.Fx<R, E, A>,
50
- make: Effect.Effect<R2, E2, Queue.Queue<Exit.Exit<Option.Option<E>, A>>>
51
- ): Stream.Stream<R | R2, E | E2, A>
50
+ make: Effect.Effect<Queue.Queue<Exit.Exit<A, Option.Option<E>>>, E2, R2>
51
+ ): Stream.Stream<A, E | E2, R | R2>
52
52
  } = dual(2, function toStreamQueued<R, E, A, R2, E2>(
53
53
  fx: Fx.Fx<R, E, A>,
54
- make: Effect.Effect<R2, E2, Queue.Queue<Exit.Exit<Option.Option<E>, A>>>
55
- ): Stream.Stream<R | R2, E | E2, A> {
54
+ make: Effect.Effect<Queue.Queue<Exit.Exit<A, Option.Option<E>>>, E2, R2>
55
+ ): Stream.Stream<A, E | E2, R | R2> {
56
56
  return make.pipe(
57
57
  Effect.tap((queue) =>
58
58
  fx.pipe(
@@ -76,11 +76,11 @@ export const toStreamQueued: {
76
76
  * @category conversions
77
77
  */
78
78
  export const toStreamSliding: {
79
- (capacity: number): <R, E, A>(fx: Fx.Fx<R, E, A>) => Stream.Stream<R, E, A>
80
- <R, E, A>(fx: Fx.Fx<R, E, A>, capacity: number): Stream.Stream<R, E, A>
79
+ (capacity: number): <R, E, A>(fx: Fx.Fx<R, E, A>) => Stream.Stream<A, E, R>
80
+ <R, E, A>(fx: Fx.Fx<R, E, A>, capacity: number): Stream.Stream<A, E, R>
81
81
  } = dual(
82
82
  2,
83
- function toStreamSliding<R, E, A>(fx: Fx.Fx<R, E, A>, capacity: number): Stream.Stream<R, E, A> {
83
+ function toStreamSliding<R, E, A>(fx: Fx.Fx<R, E, A>, capacity: number): Stream.Stream<A, E, R> {
84
84
  return toStreamQueued(fx, Queue.sliding(capacity))
85
85
  }
86
86
  )
@@ -92,11 +92,11 @@ export const toStreamSliding: {
92
92
  * @category conversions
93
93
  */
94
94
  export const toStreamDropping: {
95
- (capacity: number): <R, E, A>(fx: Fx.Fx<R, E, A>) => Stream.Stream<R, E, A>
96
- <R, E, A>(fx: Fx.Fx<R, E, A>, capacity: number): Stream.Stream<R, E, A>
95
+ (capacity: number): <R, E, A>(fx: Fx.Fx<R, E, A>) => Stream.Stream<A, E, R>
96
+ <R, E, A>(fx: Fx.Fx<R, E, A>, capacity: number): Stream.Stream<A, E, R>
97
97
  } = dual(
98
98
  2,
99
- function toStreamDropping<R, E, A>(fx: Fx.Fx<R, E, A>, capacity: number): Stream.Stream<R, E, A> {
99
+ function toStreamDropping<R, E, A>(fx: Fx.Fx<R, E, A>, capacity: number): Stream.Stream<A, E, R> {
100
100
  return toStreamQueued(fx, Queue.dropping(capacity))
101
101
  }
102
102
  )
@@ -108,11 +108,11 @@ export const toStreamDropping: {
108
108
  * @category conversions
109
109
  */
110
110
  export const toStreamBounded: {
111
- (capacity: number): <R, E, A>(fx: Fx.Fx<R, E, A>) => Stream.Stream<R, E, A>
112
- <R, E, A>(fx: Fx.Fx<R, E, A>, capacity: number): Stream.Stream<R, E, A>
111
+ (capacity: number): <R, E, A>(fx: Fx.Fx<R, E, A>) => Stream.Stream<A, E, R>
112
+ <R, E, A>(fx: Fx.Fx<R, E, A>, capacity: number): Stream.Stream<A, E, R>
113
113
  } = dual(
114
114
  2,
115
- function toStreamBounded<R, E, A>(fx: Fx.Fx<R, E, A>, capacity: number): Stream.Stream<R, E, A> {
115
+ function toStreamBounded<R, E, A>(fx: Fx.Fx<R, E, A>, capacity: number): Stream.Stream<A, E, R> {
116
116
  return toStreamQueued(fx, Queue.bounded(capacity))
117
117
  }
118
118
  )
@@ -123,7 +123,7 @@ export const toStreamBounded: {
123
123
  * @category conversions
124
124
  */
125
125
  export function fromStream<R, E, A>(
126
- stream: Stream.Stream<R, E, A>
126
+ stream: Stream.Stream<A, E, R>
127
127
  ): Fx.Fx<R, E, A> {
128
128
  return Fx.make<R, E, A>((sink) => Effect.catchAllCause(Stream.runForEach(stream, sink.onSuccess), sink.onFailure))
129
129
  }
@@ -133,7 +133,7 @@ export function fromStream<R, E, A>(
133
133
  * @since 1.18.0
134
134
  * @category conversions
135
135
  */
136
- export function fromStreamChunked<R, E, A>(stream: Stream.Stream<R, E, A>): Fx.Fx<R, E, Chunk.Chunk<A>> {
136
+ export function fromStreamChunked<R, E, A>(stream: Stream.Stream<A, E, R>): Fx.Fx<R, E, Chunk.Chunk<A>> {
137
137
  return Fx.make<R, E, Chunk.Chunk<A>>((sink) =>
138
138
  Effect.catchAllCause(Stream.runForEachChunk(stream, sink.onSuccess), sink.onFailure)
139
139
  )
package/src/Subject.ts CHANGED
@@ -27,8 +27,8 @@ import { TypeId } from "./TypeId.js"
27
27
  * @since 1.20.0
28
28
  */
29
29
  export interface Subject<out R, in out E, in out A> extends Push<R, E, A, R | Scope.Scope, E, A>, Pipeable.Pipeable {
30
- readonly subscriberCount: Effect.Effect<R, never, number>
31
- readonly interrupt: Effect.Effect<R, never, void>
30
+ readonly subscriberCount: Effect.Effect<number, never, R>
31
+ readonly interrupt: Effect.Effect<void, never, R>
32
32
  }
33
33
 
34
34
  /**
@@ -41,7 +41,7 @@ export namespace Subject {
41
41
  export interface Tagged<I, E, A> extends Subject<I, E, A> {
42
42
  readonly tag: C.Tagged<I, Subject<never, E, A>>
43
43
 
44
- readonly make: (replay?: number) => Layer.Layer<never, never, I>
44
+ readonly make: (replay?: number) => Layer.Layer<I>
45
45
  readonly provide: Provide<I>
46
46
  }
47
47
 
@@ -63,10 +63,10 @@ export namespace Subject {
63
63
  ) => Args extends readonly [infer _ extends number] ? <T extends Fx<any, any, any> | Effect.Effect<any, any, any>>(
64
64
  fxOrEffect: T
65
65
  ) => [T] extends [Fx<infer R2, infer E2, infer B>] ? Fx<Exclude<R2, I>, E2, B>
66
- : [T] extends [Effect.Effect<infer R2, infer E2, infer B>] ? Effect.Effect<Exclude<R2, I>, E2, B>
66
+ : [T] extends [Effect.Effect<infer B, infer E2, infer R2>] ? Effect.Effect<B, E2, Exclude<R2, I>>
67
67
  : never
68
68
  : Args extends readonly [Fx<infer R2, infer E2, infer B>] ? Fx<Exclude<R2, I>, E2, B>
69
- : Args extends readonly [Effect.Effect<infer R2, infer E2, infer B>] ? Effect.Effect<Exclude<R2, I>, E2, B>
69
+ : Args extends readonly [Effect.Effect<infer B, infer E2, infer R2>] ? Effect.Effect<B, E2, Exclude<R2, I>>
70
70
  : never
71
71
  }
72
72
 
@@ -85,7 +85,7 @@ export class SubjectImpl<E, A> extends FxBase<Scope.Scope, E, A> implements Subj
85
85
  this.onSuccess = this.onSuccess.bind(this)
86
86
  }
87
87
 
88
- run<R2>(sink: Sink<R2, E, A>): Effect.Effect<R2 | Scope.Scope, never, unknown> {
88
+ run<R2>(sink: Sink<R2, E, A>): Effect.Effect<unknown, never, R2 | Scope.Scope> {
89
89
  return this.addSink(sink, awaitScopeClose)
90
90
  }
91
91
 
@@ -111,8 +111,8 @@ export class SubjectImpl<E, A> extends FxBase<Scope.Scope, E, A> implements Subj
111
111
 
112
112
  protected addSink<R, R2, B>(
113
113
  sink: Sink<R, E, A>,
114
- f: (scope: Scope.Scope) => Effect.Effect<R2, never, B>
115
- ): Effect.Effect<R2 | Scope.Scope, never, B> {
114
+ f: (scope: Scope.Scope) => Effect.Effect<B, never, R2>
115
+ ): Effect.Effect<B, never, R2 | Scope.Scope> {
116
116
  return withScope(
117
117
  (innerScope) =>
118
118
  Effect.contextWithEffect((ctx) => {
@@ -135,7 +135,7 @@ export class SubjectImpl<E, A> extends FxBase<Scope.Scope, E, A> implements Subj
135
135
  )
136
136
  }
137
137
 
138
- readonly subscriberCount: Effect.Effect<never, never, number> = Effect.sync(() => this.sinks.size)
138
+ readonly subscriberCount: Effect.Effect<number> = Effect.sync(() => this.sinks.size)
139
139
 
140
140
  protected onEvent(a: A) {
141
141
  if (this.sinks.size === 0) return Effect.unit
@@ -167,7 +167,7 @@ export class HoldSubjectImpl<E, A> extends SubjectImpl<E, A> implements Subject<
167
167
  return this.onEvent(a)
168
168
  })
169
169
 
170
- run<R2>(sink: Sink<R2, E, A>): Effect.Effect<R2 | Scope.Scope, never, unknown> {
170
+ run<R2>(sink: Sink<R2, E, A>): Effect.Effect<unknown, never, R2 | Scope.Scope> {
171
171
  return this.addSink(sink, (scope) =>
172
172
  Option.match(MutableRef.get(this.lastValue), {
173
173
  onNone: () => awaitScopeClose(scope),
@@ -199,7 +199,7 @@ export class ReplaySubjectImpl<E, A> extends SubjectImpl<E, A> {
199
199
  return this.onEvent(a)
200
200
  })
201
201
 
202
- run<R2>(sink: Sink<R2, E, A>): Effect.Effect<R2 | Scope.Scope, never, unknown> {
202
+ run<R2>(sink: Sink<R2, E, A>): Effect.Effect<unknown, never, R2 | Scope.Scope> {
203
203
  return this.addSink(
204
204
  sink,
205
205
  (scope) => Effect.zipRight(this.buffer.forEach((a) => sink.onSuccess(a)), awaitScopeClose(scope))
@@ -232,7 +232,7 @@ export function unsafeMake<E, A>(replay: number = 0): Subject<never, E, A> {
232
232
  /**
233
233
  * @since 1.20.0
234
234
  */
235
- export function make<E, A>(replay?: number): Effect.Effect<Scope.Scope, never, Subject<never, E, A>> {
235
+ export function make<E, A>(replay?: number): Effect.Effect<Subject<never, E, A>, never, Scope.Scope> {
236
236
  return Effect.acquireRelease(Effect.sync(() => unsafeMake(replay)), (subject) => subject.interrupt)
237
237
  }
238
238
 
@@ -244,10 +244,10 @@ export function fromTag<I, S, R, E, A>(tag: C.Tag<I, S>, f: (s: S) => Subject<R,
244
244
  }
245
245
 
246
246
  class FromTag<I, S, R, E, A> extends FxBase<I | R | Scope.Scope, E, A> implements Subject<I | R, E, A> {
247
- private get: Effect.Effect<I, never, Subject<R, E, A>>
247
+ private get: Effect.Effect<Subject<R, E, A>, never, I>
248
248
 
249
- readonly subscriberCount: Effect.Effect<I | R, never, number>
250
- readonly interrupt: Effect.Effect<I | R, never, void>
249
+ readonly subscriberCount: Effect.Effect<number, never, I | R>
250
+ readonly interrupt: Effect.Effect<void, never, I | R>
251
251
 
252
252
  constructor(readonly tag: C.Tag<I, S>, readonly f: (s: S) => Subject<R, E, A>) {
253
253
  super()
@@ -257,15 +257,15 @@ class FromTag<I, S, R, E, A> extends FxBase<I | R | Scope.Scope, E, A> implement
257
257
  this.interrupt = Effect.flatMap(this.get, (subject) => subject.interrupt)
258
258
  }
259
259
 
260
- run<R2>(sink: Sink<R2, E, A>): Effect.Effect<I | R | R2 | Scope.Scope, never, unknown> {
260
+ run<R2>(sink: Sink<R2, E, A>): Effect.Effect<unknown, never, I | R | R2 | Scope.Scope> {
261
261
  return Effect.flatMap(this.get, (subject) => subject.run(sink))
262
262
  }
263
263
 
264
- onFailure(cause: Cause.Cause<E>): Effect.Effect<I | R, never, unknown> {
264
+ onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, I | R> {
265
265
  return Effect.flatMap(this.get, (subject) => subject.onFailure(cause))
266
266
  }
267
267
 
268
- onSuccess(value: A): Effect.Effect<I | R, never, unknown> {
268
+ onSuccess(value: A): Effect.Effect<unknown, never, I | R> {
269
269
  return Effect.flatMap(this.get, (subject) => subject.onSuccess(value))
270
270
  }
271
271
  }
@@ -291,14 +291,14 @@ class TaggedImpl<I, E, A> extends FromTag<I, Subject<never, E, A>, never, E, A>
291
291
 
292
292
  this.provide = dual(
293
293
  isDataFirst,
294
- <R2, E2, B>(fxOrEffect: Fx<R2, E2, B> | Effect.Effect<R2, E2, B>, replay?: number) => {
294
+ <R2, E2, B>(fxOrEffect: Fx<R2, E2, B> | Effect.Effect<B, E2, R2>, replay?: number) => {
295
295
  if (TypeId in fxOrEffect) return provide(fxOrEffect as Fx<Exclude<R2, I>, E2, B>, this.make(replay))
296
- else return Effect.provide(fxOrEffect as Effect.Effect<R2, E2, B>, this.make(replay))
296
+ else return Effect.provide(fxOrEffect as Effect.Effect<B, E2, R2>, this.make(replay))
297
297
  }
298
298
  )
299
299
  }
300
300
 
301
- make(replay?: number): Layer.Layer<never, never, I> {
301
+ make(replay?: number): Layer.Layer<I> {
302
302
  return this.tag.scoped(make(replay))
303
303
  }
304
304
  }
package/src/Versioned.ts CHANGED
@@ -26,9 +26,9 @@ import type { Sink } from "./Sink.js"
26
26
  * @since 1.0.0
27
27
  */
28
28
  export interface Versioned<out R1, out E1, out R2, out E2, out A2, out R3, out E3, out A3>
29
- extends Fx<R2, E2, A2>, Effect.Effect<R3, E3, A3>
29
+ extends Fx<R2, E2, A2>, Effect.Effect<A3, E3, R3>
30
30
  {
31
- readonly version: Effect.Effect<R1, E1, number>
31
+ readonly version: Effect.Effect<number, E1, R1>
32
32
  }
33
33
 
34
34
  /**
@@ -59,9 +59,9 @@ export namespace Versioned {
59
59
  * @since 1.0.0
60
60
  */
61
61
  export function make<R1, E1, R2, E2, A2, R3, E3, A3>(
62
- version: Effect.Effect<R1, E1, number>,
62
+ version: Effect.Effect<number, E1, R1>,
63
63
  fx: Fx<R2, E2, A2>,
64
- effect: Effect.Effect<R3, E3, A3>
64
+ effect: Effect.Effect<A3, E3, R3>
65
65
  ): Versioned<R1, E1, R2, E2, A2, R3, E3, A3> {
66
66
  return new VersionedImpl(version, fx, effect)
67
67
  }
@@ -70,18 +70,18 @@ class VersionedImpl<R1, E1, R2, E2, A2, R3, E3, A3> extends FxEffectBase<R2, E2,
70
70
  implements Versioned<R1, E1, R2, E2, A2, R3, E3, A3>
71
71
  {
72
72
  constructor(
73
- readonly version: Effect.Effect<R1, E1, number>,
73
+ readonly version: Effect.Effect<number, E1, R1>,
74
74
  readonly fx: Fx<R2, E2, A2>,
75
- readonly effect: Effect.Effect<R3, E3, A3>
75
+ readonly effect: Effect.Effect<A3, E3, R3>
76
76
  ) {
77
77
  super()
78
78
  }
79
79
 
80
- run<R3>(sink: Sink<R3, E2, A2>): Effect.Effect<R2 | R3, never, unknown> {
80
+ run<R3>(sink: Sink<R3, E2, A2>): Effect.Effect<unknown, never, R2 | R3> {
81
81
  return this.fx.run(sink)
82
82
  }
83
83
 
84
- toEffect(): Effect.Effect<R3, E3, A3> {
84
+ toEffect(): Effect.Effect<A3, E3, R3> {
85
85
  return this.effect
86
86
  }
87
87
  }
@@ -92,7 +92,7 @@ class VersionedImpl<R1, E1, R2, E2, A2, R3, E3, A3> extends FxEffectBase<R2, E2,
92
92
  export function transform<R0, E0, R, E, A, R2, E2, B, R3, E3, C, R4, E4, D>(
93
93
  input: Versioned<R0, E0, R, E, A, R2, E2, B>,
94
94
  transformFx: (fx: Fx<R, E, A>) => Fx<R3, E3, C>,
95
- transformGet: (effect: Effect.Effect<R2, E2, B>) => Effect.Effect<R4, E4, D>
95
+ transformGet: (effect: Effect.Effect<B, E2, R2>) => Effect.Effect<D, E4, R4>
96
96
  ): Versioned<never, never, R3, E3, C, R0 | R4, E0 | E4, D> {
97
97
  if (isVersionedTransform(input)) {
98
98
  return new VersionedTransform(
@@ -119,7 +119,7 @@ export class VersionedTransform<R0, E0, R, E, A, R2, E2, B, R3, E3, C, R4, E4, D
119
119
  constructor(
120
120
  readonly input: Versioned<R0, E0, R, E, A, R2, E2, B>,
121
121
  readonly _transformFx: (fx: Fx<R, E, A>) => Fx<R3, E3, C>,
122
- readonly _transformEffect: (effect: Effect.Effect<R2, E2, B>) => Effect.Effect<R4, E4, D>
122
+ readonly _transformEffect: (effect: Effect.Effect<B, E2, R2>) => Effect.Effect<D, E4, R4>
123
123
  ) {
124
124
  super()
125
125
 
@@ -128,12 +128,12 @@ export class VersionedTransform<R0, E0, R, E, A, R2, E2, B, R3, E3, C, R4, E4, D
128
128
 
129
129
  readonly version = Effect.sync(() => this._version)
130
130
 
131
- run<R5>(sink: Sink<R5, E3, C>): Effect.Effect<R3 | R5, never, unknown> {
131
+ run<R5>(sink: Sink<R5, E3, C>): Effect.Effect<unknown, never, R3 | R5> {
132
132
  return this._fx.run(sink)
133
133
  }
134
134
 
135
- toEffect(): Effect.Effect<R0 | R4, E0 | E4, D> {
136
- const transformed = this._transformEffect(this.input as any as Effect.Effect<R2, E2, B>)
135
+ toEffect(): Effect.Effect<D, E0 | E4, R0 | R4> {
136
+ const transformed = this._transformEffect(this.input as any as Effect.Effect<B, E2, R2>)
137
137
  const update = (v: number) =>
138
138
  Effect.tap(
139
139
  transformed,
@@ -199,20 +199,20 @@ export const map: {
199
199
  */
200
200
  export const mapEffect: {
201
201
  <A, R3, E3, C, B, R4, E4, D>(
202
- options: { onFx: (a: A) => Effect.Effect<R3, E3, C>; onEffect: (b: B) => Effect.Effect<R4, E4, D> }
202
+ options: { onFx: (a: A) => Effect.Effect<C, E3, R3>; onEffect: (b: B) => Effect.Effect<D, E4, R4> }
203
203
  ): <R0, E0, R, E, R2, E2>(
204
204
  versioned: Versioned<R0, E0, R, E, A, R2, E2, B>
205
205
  ) => Versioned<never, never, R | R3, E | E3, C, R0 | R2 | R4, E0 | E2 | E4, D>
206
206
 
207
207
  <R0, E0, R, E, A, R2, E2, B, R3, E3, C, R4, E4, D>(
208
208
  versioned: Versioned<R0, E0, R, E, A, R2, E2, B>,
209
- options: { onFx: (a: A) => Effect.Effect<R3, E3, C>; onEffect: (b: B) => Effect.Effect<R4, E4, D> }
209
+ options: { onFx: (a: A) => Effect.Effect<C, E3, R3>; onEffect: (b: B) => Effect.Effect<D, E4, R4> }
210
210
  ): Versioned<never, never, R | R3, E | E3, C, R0 | R2 | R4, E0 | E2 | E4, D>
211
211
  } = dual(2, function mapEffect<R0, E0, R, E, A, R2, E2, B, R3, E3, C, R4, E4, D>(
212
212
  versioned: Versioned<R0, E0, R, E, A, R2, E2, B>,
213
213
  options: {
214
- onFx: (a: A) => Effect.Effect<R3, E3, C>
215
- onEffect: (b: B) => Effect.Effect<R4, E4, D>
214
+ onFx: (a: A) => Effect.Effect<C, E3, R3>
215
+ onEffect: (b: B) => Effect.Effect<D, E4, R4>
216
216
  }
217
217
  ): Versioned<never, never, R | R3, E | E3, C, R0 | R2 | R4, E0 | E2 | E4, D> {
218
218
  return transform(versioned, (fx) => core.mapEffect(fx, options.onFx), Effect.flatMap(options.onEffect))
@@ -270,7 +270,7 @@ export const provide: {
270
270
  versioned: Versioned<R0, E0, R, E, A, R2, E2, B>
271
271
  ) => Versioned<Exclude<R0, S>, E0, Exclude<R, S>, E, A, Exclude<R2, S>, E2, B>
272
272
 
273
- <R3, S>(layer: Layer.Layer<R3, never, S>): <R0, E0, R, E, A, R2, E2, B>(
273
+ <R3, S>(layer: Layer.Layer<S, never, R3>): <R0, E0, R, E, A, R2, E2, B>(
274
274
  versioned: Versioned<R0, E0, R, E, A, R2, E2, B>
275
275
  ) => Versioned<R3 | Exclude<R0, S>, E0, R3 | Exclude<R, S>, E, A, R3 | Exclude<R2, S>, E2, B>
276
276
 
@@ -281,21 +281,21 @@ export const provide: {
281
281
 
282
282
  <R0, E0, R, E, A, R2, E2, B, R3 = never, S = never>(
283
283
  versioned: Versioned<R0, E0, R, E, A, R2, E2, B>,
284
- context: Layer.Layer<R3, never, S>
284
+ context: Layer.Layer<S, never, R3>
285
285
  ): Versioned<R3 | Exclude<R0, S>, E0, R3 | Exclude<R, S>, E, A, R3 | Exclude<R2, S>, E2, B>
286
286
 
287
287
  <R0, E0, R, E, A, R2, E2, B, R3 = never, S = never>(
288
288
  versioned: Versioned<R0, E0, R, E, A, R2, E2, B>,
289
- context: Context.Context<S> | Runtime.Runtime<S> | Layer.Layer<R3, never, S>
289
+ context: Context.Context<S> | Runtime.Runtime<S> | Layer.Layer<S, never, R3>
290
290
  ): Versioned<R3 | Exclude<R0, S>, E0, R3 | Exclude<R, S>, E, A, R3 | Exclude<R2, S>, E2, B>
291
291
  } = dual(2, function provide<R0, E0, R, E, A, R2, E2, B, R3 = never, S = never>(
292
292
  versioned: Versioned<R0, E0, R, E, A, R2, E2, B>,
293
- context: Context.Context<S> | Runtime.Runtime<S> | Layer.Layer<R3, never, S>
293
+ context: Context.Context<S> | Runtime.Runtime<S> | Layer.Layer<S, never, R3>
294
294
  ): Versioned<R3 | Exclude<R0, S>, E0, R3 | Exclude<R, S>, E, A, R3 | Exclude<R2, S>, E2, B> {
295
295
  return make(
296
- Effect.provide(versioned.version, context as Layer.Layer<R3, never, S>),
296
+ Effect.provide(versioned.version, context as Layer.Layer<S, never, R3>),
297
297
  core.provide(versioned, context),
298
- Effect.provide(versioned, context as Layer.Layer<R3, never, S>)
298
+ Effect.provide(versioned, context as Layer.Layer<S, never, R3>)
299
299
  )
300
300
  })
301
301
 
@@ -7,11 +7,11 @@ import { EffectBase } from "./protos.js"
7
7
 
8
8
  export class DeferredRef<E, A> extends EffectBase<never, E, A> {
9
9
  // Keep track of the latest value emitted by the stream
10
- public current!: Option.Option<Exit.Exit<E, A>>
10
+ public current!: Option.Option<Exit.Exit<A, E>>
11
11
  public version!: number
12
- public deferred!: Deferred.Deferred<E, A>
12
+ public deferred!: Deferred.Deferred<A, E>
13
13
 
14
- constructor(private id: FiberId.FiberId, private eq: Equivalence.Equivalence<Exit.Exit<E, A>>) {
14
+ constructor(private id: FiberId.FiberId, private eq: Equivalence.Equivalence<Exit.Exit<A, E>>) {
15
15
  super()
16
16
  this.reset()
17
17
  }
@@ -26,7 +26,7 @@ export class DeferredRef<E, A> extends EffectBase<never, E, A> {
26
26
  })
27
27
  }
28
28
 
29
- done(exit: Exit.Exit<E, A>) {
29
+ done(exit: Exit.Exit<A, E>) {
30
30
  const current = this.current
31
31
 
32
32
  this.current = Option.some(exit)
@@ -53,10 +53,10 @@ export class DeferredRef<E, A> extends EffectBase<never, E, A> {
53
53
  }
54
54
  }
55
55
 
56
- export function make<E, A>(eq: Equivalence.Equivalence<Exit.Exit<E, A>>) {
56
+ export function make<E, A>(eq: Equivalence.Equivalence<Exit.Exit<A, E>>) {
57
57
  return Effect.map(Effect.fiberId, (id) => new DeferredRef(id, eq))
58
58
  }
59
59
 
60
- export function unsafeMake<E, A>(id: FiberId.FiberId, eq: Equivalence.Equivalence<Exit.Exit<E, A>>) {
60
+ export function unsafeMake<E, A>(id: FiberId.FiberId, eq: Equivalence.Equivalence<Exit.Exit<A, E>>) {
61
61
  return new DeferredRef(id, eq)
62
62
  }