@typed/fx 1.22.2 → 1.24.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 (157) hide show
  1. package/dist/cjs/AsyncData.js.map +1 -1
  2. package/dist/cjs/Form.js.map +1 -1
  3. package/dist/cjs/FormEntry.js.map +1 -1
  4. package/dist/cjs/Fx.js +1 -1
  5. package/dist/cjs/Fx.js.map +1 -1
  6. package/dist/cjs/Idle.js.map +1 -1
  7. package/dist/cjs/Match.js.map +1 -1
  8. package/dist/cjs/Pull.js +5 -3
  9. package/dist/cjs/Pull.js.map +1 -1
  10. package/dist/cjs/RefArray.js.map +1 -1
  11. package/dist/cjs/RefChunk.js.map +1 -1
  12. package/dist/cjs/RefHashSet.js.map +1 -1
  13. package/dist/cjs/RefSubject.js +3 -2
  14. package/dist/cjs/RefSubject.js.map +1 -1
  15. package/dist/cjs/Sink.js.map +1 -1
  16. package/dist/cjs/Subject.js.map +1 -1
  17. package/dist/cjs/Versioned.js.map +1 -1
  18. package/dist/cjs/internal/core.js.map +1 -1
  19. package/dist/cjs/internal/helpers.js.map +1 -1
  20. package/dist/cjs/internal/keyed.js +1 -1
  21. package/dist/cjs/internal/keyed.js.map +1 -1
  22. package/dist/cjs/internal/provide.js.map +1 -1
  23. package/dist/cjs/internal/share.js.map +1 -1
  24. package/dist/cjs/internal/sync-producer.js.map +1 -1
  25. package/dist/dts/AsyncData.d.ts +53 -53
  26. package/dist/dts/AsyncData.d.ts.map +1 -1
  27. package/dist/dts/Emitter.d.ts +7 -7
  28. package/dist/dts/Emitter.d.ts.map +1 -1
  29. package/dist/dts/Form.d.ts +14 -14
  30. package/dist/dts/Form.d.ts.map +1 -1
  31. package/dist/dts/FormEntry.d.ts +11 -11
  32. package/dist/dts/FormEntry.d.ts.map +1 -1
  33. package/dist/dts/Fx.d.ts +417 -417
  34. package/dist/dts/Fx.d.ts.map +1 -1
  35. package/dist/dts/Guard.d.ts +21 -21
  36. package/dist/dts/Guard.d.ts.map +1 -1
  37. package/dist/dts/Idle.d.ts +12 -12
  38. package/dist/dts/Idle.d.ts.map +1 -1
  39. package/dist/dts/Match.d.ts +16 -16
  40. package/dist/dts/Match.d.ts.map +1 -1
  41. package/dist/dts/Pull.d.ts +5 -5
  42. package/dist/dts/Pull.d.ts.map +1 -1
  43. package/dist/dts/Push.d.ts +40 -40
  44. package/dist/dts/Push.d.ts.map +1 -1
  45. package/dist/dts/RefArray.d.ts +59 -59
  46. package/dist/dts/RefArray.d.ts.map +1 -1
  47. package/dist/dts/RefChunk.d.ts +45 -45
  48. package/dist/dts/RefChunk.d.ts.map +1 -1
  49. package/dist/dts/RefHashMap.d.ts +35 -35
  50. package/dist/dts/RefHashMap.d.ts.map +1 -1
  51. package/dist/dts/RefHashSet.d.ts +17 -17
  52. package/dist/dts/RefHashSet.d.ts.map +1 -1
  53. package/dist/dts/RefSubject.d.ts +136 -136
  54. package/dist/dts/RefSubject.d.ts.map +1 -1
  55. package/dist/dts/Sink.d.ts +63 -63
  56. package/dist/dts/Sink.d.ts.map +1 -1
  57. package/dist/dts/Stream.d.ts +11 -11
  58. package/dist/dts/Stream.d.ts.map +1 -1
  59. package/dist/dts/Subject.d.ts +13 -13
  60. package/dist/dts/Subject.d.ts.map +1 -1
  61. package/dist/dts/Typeclass.d.ts +1 -1
  62. package/dist/dts/Typeclass.d.ts.map +1 -1
  63. package/dist/dts/Versioned.d.ts +33 -33
  64. package/dist/dts/Versioned.d.ts.map +1 -1
  65. package/dist/dts/index.d.ts +1 -1
  66. package/dist/dts/internal/DeferredRef.d.ts +8 -8
  67. package/dist/dts/internal/DeferredRef.d.ts.map +1 -1
  68. package/dist/dts/internal/core.d.ts +191 -191
  69. package/dist/dts/internal/core.d.ts.map +1 -1
  70. package/dist/dts/internal/effect-loop-operator.d.ts +6 -6
  71. package/dist/dts/internal/effect-loop-operator.d.ts.map +1 -1
  72. package/dist/dts/internal/effect-operator.d.ts +16 -16
  73. package/dist/dts/internal/effect-operator.d.ts.map +1 -1
  74. package/dist/dts/internal/effect-producer.d.ts +13 -13
  75. package/dist/dts/internal/effect-producer.d.ts.map +1 -1
  76. package/dist/dts/internal/helpers.d.ts +26 -26
  77. package/dist/dts/internal/helpers.d.ts.map +1 -1
  78. package/dist/dts/internal/keyed.d.ts +1 -1
  79. package/dist/dts/internal/keyed.d.ts.map +1 -1
  80. package/dist/dts/internal/loop-operator.d.ts +2 -2
  81. package/dist/dts/internal/loop-operator.d.ts.map +1 -1
  82. package/dist/dts/internal/operator.d.ts +2 -2
  83. package/dist/dts/internal/operator.d.ts.map +1 -1
  84. package/dist/dts/internal/protos.d.ts +12 -12
  85. package/dist/dts/internal/protos.d.ts.map +1 -1
  86. package/dist/dts/internal/provide.d.ts +15 -15
  87. package/dist/dts/internal/provide.d.ts.map +1 -1
  88. package/dist/dts/internal/share.d.ts +11 -11
  89. package/dist/dts/internal/share.d.ts.map +1 -1
  90. package/dist/dts/internal/sync-operator.d.ts +2 -2
  91. package/dist/dts/internal/sync-operator.d.ts.map +1 -1
  92. package/dist/dts/internal/sync-producer.d.ts +6 -6
  93. package/dist/dts/internal/sync-producer.d.ts.map +1 -1
  94. package/dist/dts/internal/withKey.d.ts +1 -1
  95. package/dist/dts/internal/withKey.d.ts.map +1 -1
  96. package/dist/esm/AsyncData.js.map +1 -1
  97. package/dist/esm/Form.js.map +1 -1
  98. package/dist/esm/FormEntry.js.map +1 -1
  99. package/dist/esm/Fx.js +1 -1
  100. package/dist/esm/Fx.js.map +1 -1
  101. package/dist/esm/Idle.js.map +1 -1
  102. package/dist/esm/Match.js.map +1 -1
  103. package/dist/esm/Pull.js +3 -3
  104. package/dist/esm/Pull.js.map +1 -1
  105. package/dist/esm/RefArray.js.map +1 -1
  106. package/dist/esm/RefChunk.js.map +1 -1
  107. package/dist/esm/RefHashSet.js.map +1 -1
  108. package/dist/esm/RefSubject.js +3 -1
  109. package/dist/esm/RefSubject.js.map +1 -1
  110. package/dist/esm/Sink.js.map +1 -1
  111. package/dist/esm/Subject.js.map +1 -1
  112. package/dist/esm/Versioned.js.map +1 -1
  113. package/dist/esm/index.js +1 -1
  114. package/dist/esm/internal/core.js.map +1 -1
  115. package/dist/esm/internal/helpers.js.map +1 -1
  116. package/dist/esm/internal/keyed.js +1 -1
  117. package/dist/esm/internal/keyed.js.map +1 -1
  118. package/dist/esm/internal/provide.js.map +1 -1
  119. package/dist/esm/internal/share.js.map +1 -1
  120. package/dist/esm/internal/sync-producer.js.map +1 -1
  121. package/package.json +6 -6
  122. package/src/AsyncData.ts +142 -144
  123. package/src/Emitter.ts +13 -13
  124. package/src/Form.ts +55 -55
  125. package/src/FormEntry.ts +39 -39
  126. package/src/Fx.ts +788 -789
  127. package/src/Guard.ts +43 -43
  128. package/src/Idle.ts +26 -26
  129. package/src/Match.ts +60 -61
  130. package/src/Pull.ts +42 -43
  131. package/src/Push.ts +195 -195
  132. package/src/RefArray.ts +121 -119
  133. package/src/RefChunk.ts +98 -97
  134. package/src/RefHashMap.ts +79 -79
  135. package/src/RefHashSet.ts +40 -39
  136. package/src/RefSubject.ts +574 -565
  137. package/src/Sink.ts +303 -303
  138. package/src/Stream.ts +27 -27
  139. package/src/Subject.ts +48 -46
  140. package/src/Typeclass.ts +2 -2
  141. package/src/Versioned.ts +97 -97
  142. package/src/index.ts +1 -1
  143. package/src/internal/DeferredRef.ts +7 -7
  144. package/src/internal/core.ts +768 -781
  145. package/src/internal/effect-loop-operator.ts +7 -7
  146. package/src/internal/effect-operator.ts +23 -23
  147. package/src/internal/effect-producer.ts +38 -38
  148. package/src/internal/helpers.ts +51 -51
  149. package/src/internal/keyed.ts +21 -21
  150. package/src/internal/loop-operator.ts +2 -2
  151. package/src/internal/operator.ts +2 -2
  152. package/src/internal/protos.ts +15 -15
  153. package/src/internal/provide.ts +27 -27
  154. package/src/internal/share.ts +25 -25
  155. package/src/internal/sync-operator.ts +4 -4
  156. package/src/internal/sync-producer.ts +15 -15
  157. package/src/internal/withKey.ts +13 -13
package/src/Versioned.ts CHANGED
@@ -25,10 +25,10 @@ import type { Sink } from "./Sink.js"
25
25
  /**
26
26
  * @since 1.0.0
27
27
  */
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>
28
+ export interface Versioned<out R1, out E1, out A2, out E2, out R2, out A3, out E3, out R3>
29
+ extends Fx<A2, E2, R2>, 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
  /**
@@ -41,7 +41,7 @@ export namespace Versioned {
41
41
  */
42
42
  export type Unify<T> = T extends
43
43
  Versioned<infer R1, infer E1, infer R2, infer E2, infer A2, infer R3, infer E3, infer A3> | infer _
44
- ? Versioned<R1, E1, R2, E2, A2, R3, E3, A3>
44
+ ? Versioned<R1, E1, A2, E2, R2, A3, E3, R3>
45
45
  : never
46
46
 
47
47
  /**
@@ -58,30 +58,30 @@ export namespace Versioned {
58
58
  /**
59
59
  * @since 1.0.0
60
60
  */
61
- export function make<R1, E1, R2, E2, A2, R3, E3, A3>(
62
- version: Effect.Effect<R1, E1, number>,
63
- fx: Fx<R2, E2, A2>,
64
- effect: Effect.Effect<R3, E3, A3>
65
- ): Versioned<R1, E1, R2, E2, A2, R3, E3, A3> {
61
+ export function make<R1, E1, A2, E2, R2, A3, E3, R3>(
62
+ version: Effect.Effect<number, E1, R1>,
63
+ fx: Fx<A2, E2, R2>,
64
+ effect: Effect.Effect<A3, E3, R3>
65
+ ): Versioned<R1, E1, A2, E2, R2, A3, E3, R3> {
66
66
  return new VersionedImpl(version, fx, effect)
67
67
  }
68
68
 
69
- class VersionedImpl<R1, E1, R2, E2, A2, R3, E3, A3> extends FxEffectBase<R2, E2, A2, R3, E3, A3>
70
- implements Versioned<R1, E1, R2, E2, A2, R3, E3, A3>
69
+ class VersionedImpl<R1, E1, A2, E2, R2, A3, E3, R3> extends FxEffectBase<A2, E2, R2, A3, E3, R3>
70
+ implements Versioned<R1, E1, A2, E2, R2, A3, E3, R3>
71
71
  {
72
72
  constructor(
73
- readonly version: Effect.Effect<R1, E1, number>,
74
- readonly fx: Fx<R2, E2, A2>,
75
- readonly effect: Effect.Effect<R3, E3, A3>
73
+ readonly version: Effect.Effect<number, E1, R1>,
74
+ readonly fx: Fx<A2, E2, R2>,
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<A2, E2, R3>): 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
  }
@@ -89,11 +89,11 @@ class VersionedImpl<R1, E1, R2, E2, A2, R3, E3, A3> extends FxEffectBase<R2, E2,
89
89
  /**
90
90
  * @since 1.0.0
91
91
  */
92
- export function transform<R0, E0, R, E, A, R2, E2, B, R3, E3, C, R4, E4, D>(
93
- input: Versioned<R0, E0, R, E, A, R2, E2, B>,
94
- transformFx: (fx: Fx<R, E, A>) => Fx<R3, E3, C>,
95
- transformGet: (effect: Effect.Effect<R2, E2, B>) => Effect.Effect<R4, E4, D>
96
- ): Versioned<never, never, R3, E3, C, R0 | R4, E0 | E4, D> {
92
+ export function transform<R0, E0, A, E, R, B, E2, R2, C, E3, R3, D, E4, R4>(
93
+ input: Versioned<R0, E0, A, E, R, B, E2, R2>,
94
+ transformFx: (fx: Fx<A, E, R>) => Fx<C, E3, R3>,
95
+ transformGet: (effect: Effect.Effect<B, E2, R2>) => Effect.Effect<D, E4, R4>
96
+ ): Versioned<never, never, C, E3, R3, D, E0 | E4, R0 | R4> {
97
97
  if (isVersionedTransform(input)) {
98
98
  return new VersionedTransform(
99
99
  input.input,
@@ -108,18 +108,18 @@ export function transform<R0, E0, R, E, A, R2, E2, B, R3, E3, C, R4, E4, D>(
108
108
  /**
109
109
  * @internal
110
110
  */
111
- export class VersionedTransform<R0, E0, R, E, A, R2, E2, B, R3, E3, C, R4, E4, D>
112
- extends FxEffectBase<R3, E3, C, R0 | R4, E0 | E4, D>
113
- implements Versioned<never, never, R3, E3, C, R0 | R4, E0 | E4, D>
111
+ export class VersionedTransform<R0, E0, A, E, R, B, E2, R2, C, E3, R3, D, E4, R4>
112
+ extends FxEffectBase<C, E3, R3, D, E0 | E4, R0 | R4>
113
+ implements Versioned<never, never, C, E3, R3, D, E0 | E4, R0 | R4>
114
114
  {
115
115
  protected _version = -1
116
116
  protected _currentValue: Option.Option<D> = Option.none()
117
- protected _fx: Fx<R3, E3, C>
117
+ protected _fx: Fx<C, E3, R3>
118
118
 
119
119
  constructor(
120
- readonly input: Versioned<R0, E0, R, E, A, R2, E2, B>,
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>
120
+ readonly input: Versioned<R0, E0, A, E, R, B, E2, R2>,
121
+ readonly _transformFx: (fx: Fx<A, E, R>) => Fx<C, E3, R3>,
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<C, E3, R5>): 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,
@@ -166,29 +166,29 @@ function isVersionedTransform(
166
166
  * @category combinators
167
167
  */
168
168
  export const map: {
169
- <R, E, A, C, B, D>(
169
+ <A, E, R, C, B, D>(
170
170
  options: {
171
171
  onFx: (a: A) => C
172
172
  onEffect: (b: B) => D
173
173
  }
174
174
  ): <R0, E0, R2, E2>(
175
- versioned: Versioned<R0, E0, R, E, A, R2, E2, B>
176
- ) => Versioned<never, never, R, E, C, R0 | R2, E0 | E2, D>
175
+ versioned: Versioned<R0, E0, A, E, R, B, E2, R2>
176
+ ) => Versioned<never, never, C, E, R, D, E0 | E2, R0 | R2>
177
177
 
178
- <R0, E0, R, E, A, R2, E2, B, C, D>(
179
- versioned: Versioned<R0, E0, R, E, A, R2, E2, B>,
178
+ <R0, E0, A, E, R, B, E2, R2, C, D>(
179
+ versioned: Versioned<R0, E0, A, E, R, B, E2, R2>,
180
180
  options: {
181
181
  onFx: (a: A) => C
182
182
  onEffect: (b: B) => D
183
183
  }
184
- ): Versioned<never, never, R, E, C, R0 | R2, E0 | E2, D>
185
- } = dual(2, function map<R0, E0, R, E, A, R2, E2, B, C, D>(
186
- versioned: Versioned<R0, E0, R, E, A, R2, E2, B>,
184
+ ): Versioned<never, never, C, E, R, D, E0 | E2, R0 | R2>
185
+ } = dual(2, function map<R0, E0, A, E, R, B, E2, R2, C, D>(
186
+ versioned: Versioned<R0, E0, A, E, R, B, E2, R2>,
187
187
  options: {
188
188
  onFx: (a: A) => C
189
189
  onEffect: (b: B) => D
190
190
  }
191
- ): Versioned<never, never, R, E, C, R0 | R2, E0 | E2, D> {
191
+ ): Versioned<never, never, C, E, R, D, E0 | E2, R0 | R2> {
192
192
  return transform(versioned, (fx) => core.map(fx, options.onFx), Effect.map(options.onEffect))
193
193
  })
194
194
 
@@ -198,23 +198,23 @@ export const map: {
198
198
  * @category combinators
199
199
  */
200
200
  export const mapEffect: {
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> }
201
+ <A, C, E3, R3, B, D, E4, R4>(
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
- versioned: Versioned<R0, E0, R, E, A, R2, E2, B>
205
- ) => Versioned<never, never, R | R3, E | E3, C, R0 | R2 | R4, E0 | E2 | E4, D>
206
-
207
- <R0, E0, R, E, A, R2, E2, B, R3, E3, C, R4, E4, D>(
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> }
210
- ): Versioned<never, never, R | R3, E | E3, C, R0 | R2 | R4, E0 | E2 | E4, D>
211
- } = dual(2, function mapEffect<R0, E0, R, E, A, R2, E2, B, R3, E3, C, R4, E4, D>(
212
- versioned: Versioned<R0, E0, R, E, A, R2, E2, B>,
204
+ versioned: Versioned<R0, E0, A, E, R, B, E2, R2>
205
+ ) => Versioned<never, never, C, E | E3, R | R3, D, E0 | E2 | E4, R0 | R2 | R4>
206
+
207
+ <R0, E0, A, E, R, B, E2, R2, C, E3, R3, D, E4, R4>(
208
+ versioned: Versioned<R0, E0, A, E, R, B, E2, R2>,
209
+ options: { onFx: (a: A) => Effect.Effect<C, E3, R3>; onEffect: (b: B) => Effect.Effect<D, E4, R4> }
210
+ ): Versioned<never, never, C, E | E3, R | R3, D, E0 | E2 | E4, R0 | R2 | R4>
211
+ } = dual(2, function mapEffect<R0, E0, A, E, R, B, E2, R2, C, E3, R3, D, E4, R4>(
212
+ versioned: Versioned<R0, E0, A, E, R, B, E2, R2>,
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
- ): Versioned<never, never, R | R3, E | E3, C, R0 | R2 | R4, E0 | E2 | E4, D> {
217
+ ): Versioned<never, never, C, E | E3, R | R3, D, E0 | E2 | E4, R0 | R2 | R4> {
218
218
  return transform(versioned, (fx) => core.mapEffect(fx, options.onFx), Effect.flatMap(options.onEffect))
219
219
  })
220
220
 
@@ -226,18 +226,18 @@ export function tuple<const VS extends ReadonlyArray<Versioned<any, any, any, an
226
226
  ): Versioned<
227
227
  Versioned.VersionContext<VS[number]>,
228
228
  Versioned.VersionError<VS[number]>,
229
- Fx.Context<VS[number]>,
229
+ { readonly [K in keyof VS]: Effect.Effect.Success<VS[K]> },
230
230
  Fx.Error<VS[number]>,
231
+ Fx.Context<VS[number]>,
231
232
  { readonly [K in keyof VS]: Fx.Success<VS[K]> },
232
- Effect.Effect.Context<VS[number]>,
233
233
  Effect.Effect.Error<VS[number]>,
234
- { readonly [K in keyof VS]: Effect.Effect.Success<VS[K]> }
234
+ Effect.Effect.Context<VS[number]>
235
235
  > {
236
236
  return make(
237
237
  Effect.map(Effect.all(versioneds.map((v) => v.version)), (versions) => versions.reduce(sum, 0)),
238
238
  core.tuple(versioneds),
239
239
  Effect.all(versioneds, { concurrency: "unbounded" }) as any
240
- )
240
+ ) as any
241
241
  }
242
242
 
243
243
  /**
@@ -248,12 +248,12 @@ export function struct<const VS extends Readonly<Record<string, Versioned<any, a
248
248
  ): Versioned<
249
249
  Versioned.VersionContext<VS[keyof VS]>,
250
250
  Versioned.VersionError<VS[keyof VS]>,
251
- Fx.Context<VS[keyof VS]>,
252
- Fx.Error<VS[keyof VS]>,
253
251
  { readonly [K in keyof VS]: Fx.Success<VS[K]> },
254
- Effect.Effect.Context<VS[keyof VS]>,
252
+ Fx.Error<VS[keyof VS]>,
253
+ Fx.Context<VS[keyof VS]>,
254
+ { readonly [K in keyof VS]: Effect.Effect.Success<VS[K]> },
255
255
  Effect.Effect.Error<VS[keyof VS]>,
256
- { readonly [K in keyof VS]: Effect.Effect.Success<VS[K]> }
256
+ Effect.Effect.Context<VS[keyof VS]>
257
257
  > {
258
258
  return make(
259
259
  Effect.map(Effect.all(Object.values(versioneds).map((v) => v.version)), (versions) => versions.reduce(sum, 0)),
@@ -266,52 +266,52 @@ export function struct<const VS extends Readonly<Record<string, Versioned<any, a
266
266
  * @since 1.0.0
267
267
  */
268
268
  export const provide: {
269
- <S>(ctx: Context.Context<S> | Runtime.Runtime<S>): <R0, E0, R, E, A, R2, E2, B>(
270
- versioned: Versioned<R0, E0, R, E, A, R2, E2, B>
271
- ) => Versioned<Exclude<R0, S>, E0, Exclude<R, S>, E, A, Exclude<R2, S>, E2, B>
269
+ <S>(ctx: Context.Context<S> | Runtime.Runtime<S>): <R0, E0, A, E, R, B, E2, R2>(
270
+ versioned: Versioned<R0, E0, A, E, R, B, E2, R2>
271
+ ) => Versioned<Exclude<R0, S>, E0, A, E, Exclude<R, S>, B, E2, Exclude<R2, S>>
272
272
 
273
- <R3, S>(layer: Layer.Layer<R3, never, S>): <R0, E0, R, E, A, R2, E2, B>(
274
- versioned: Versioned<R0, E0, R, E, A, R2, E2, B>
275
- ) => Versioned<R3 | Exclude<R0, S>, E0, R3 | Exclude<R, S>, E, A, R3 | Exclude<R2, S>, E2, B>
273
+ <R3, S>(layer: Layer.Layer<S, never, R3>): <R0, E0, A, E, R, B, E2, R2>(
274
+ versioned: Versioned<R0, E0, A, E, R, B, E2, R2>
275
+ ) => Versioned<R3 | Exclude<R0, S>, E0, A, E, R3 | Exclude<R, S>, B, E2, R3 | Exclude<R2, S>>
276
276
 
277
- <R0, E0, R, E, A, R2, E2, B, S>(
278
- versioned: Versioned<R0, E0, R, E, A, R2, E2, B>,
277
+ <R0, E0, A, E, R, B, E2, R2, S>(
278
+ versioned: Versioned<R0, E0, A, E, R, B, E2, R2>,
279
279
  context: Context.Context<S> | Runtime.Runtime<S>
280
- ): Versioned<Exclude<R0, S>, E0, Exclude<R, S>, E, A, Exclude<R2, S>, E2, B>
281
-
282
- <R0, E0, R, E, A, R2, E2, B, R3 = never, S = never>(
283
- versioned: Versioned<R0, E0, R, E, A, R2, E2, B>,
284
- context: Layer.Layer<R3, never, S>
285
- ): Versioned<R3 | Exclude<R0, S>, E0, R3 | Exclude<R, S>, E, A, R3 | Exclude<R2, S>, E2, B>
286
-
287
- <R0, E0, R, E, A, R2, E2, B, R3 = never, S = never>(
288
- versioned: Versioned<R0, E0, R, E, A, R2, E2, B>,
289
- context: Context.Context<S> | Runtime.Runtime<S> | Layer.Layer<R3, never, S>
290
- ): Versioned<R3 | Exclude<R0, S>, E0, R3 | Exclude<R, S>, E, A, R3 | Exclude<R2, S>, E2, B>
291
- } = dual(2, function provide<R0, E0, R, E, A, R2, E2, B, R3 = never, S = never>(
292
- versioned: Versioned<R0, E0, R, E, A, R2, E2, B>,
293
- context: Context.Context<S> | Runtime.Runtime<S> | Layer.Layer<R3, never, S>
294
- ): Versioned<R3 | Exclude<R0, S>, E0, R3 | Exclude<R, S>, E, A, R3 | Exclude<R2, S>, E2, B> {
280
+ ): Versioned<Exclude<R0, S>, E0, A, E, Exclude<R, S>, B, E2, Exclude<R2, S>>
281
+
282
+ <R0, E0, A, E, R, B, E2, R2, R3 = never, S = never>(
283
+ versioned: Versioned<R0, E0, A, E, R, B, E2, R2>,
284
+ context: Layer.Layer<S, never, R3>
285
+ ): Versioned<R3 | Exclude<R0, S>, E0, A, E, R3 | Exclude<R, S>, B, E2, R3 | Exclude<R2, S>>
286
+
287
+ <R0, E0, A, E, R, B, E2, R2, R3 = never, S = never>(
288
+ versioned: Versioned<R0, E0, A, E, R, B, E2, R2>,
289
+ context: Context.Context<S> | Runtime.Runtime<S> | Layer.Layer<S, never, R3>
290
+ ): Versioned<R3 | Exclude<R0, S>, E0, A, E, R3 | Exclude<R, S>, B, E2, R3 | Exclude<R2, S>>
291
+ } = dual(2, function provide<R0, E0, A, E, R, B, E2, R2, R3 = never, S = never>(
292
+ versioned: Versioned<R0, E0, A, E, R, B, E2, R2>,
293
+ context: Context.Context<S> | Runtime.Runtime<S> | Layer.Layer<S, never, R3>
294
+ ): Versioned<R3 | Exclude<R0, S>, E0, A, E, R3 | Exclude<R, S>, B, E2, R3 | Exclude<R2, S>> {
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
 
302
302
  /**
303
303
  * @since 1.0.0
304
304
  */
305
- export function of<A>(value: A): Versioned<never, never, never, never, A, never, never, A> {
305
+ export function of<A>(value: A): Versioned<never, never, A, never, never, A, never, never> {
306
306
  return make(Effect.succeed(1), core.succeed(value), Effect.succeed(value))
307
307
  }
308
308
 
309
309
  /**
310
310
  * @since 1.0.0
311
311
  */
312
- export function hold<R0, E0, R, E, A, R2, E2, B>(
313
- versioned: Versioned<R0, E0, R, E, A, R2, E2, B>
314
- ): Versioned<R0, E0, R | Scope.Scope, E, A, R2, E2, B> {
312
+ export function hold<R0, E0, A, E, R, B, E2, R2>(
313
+ versioned: Versioned<R0, E0, A, E, R, B, E2, R2>
314
+ ): Versioned<R0, E0, A, E, R | Scope.Scope, B, E2, R2> {
315
315
  return make(
316
316
  versioned.version,
317
317
  coreShare.hold(versioned),
@@ -322,9 +322,9 @@ export function hold<R0, E0, R, E, A, R2, E2, B>(
322
322
  /**
323
323
  * @since 1.0.0
324
324
  */
325
- export function multicast<R0, E0, R, E, A, R2, E2, B>(
326
- versioned: Versioned<R0, E0, R, E, A, R2, E2, B>
327
- ): Versioned<R0, E0, R | Scope.Scope, E, A, R2, E2, B> {
325
+ export function multicast<R0, E0, A, E, R, B, E2, R2>(
326
+ versioned: Versioned<R0, E0, A, E, R, B, E2, R2>
327
+ ): Versioned<R0, E0, A, E, R | Scope.Scope, B, E2, R2> {
328
328
  return make(
329
329
  versioned.version,
330
330
  coreShare.multicast(versioned),
@@ -335,10 +335,10 @@ export function multicast<R0, E0, R, E, A, R2, E2, B>(
335
335
  /**
336
336
  * @since 1.0.0
337
337
  */
338
- export function replay<R0, E0, R, E, A, R2, E2, B>(
339
- versioned: Versioned<R0, E0, R, E, A, R2, E2, B>,
338
+ export function replay<R0, E0, A, E, R, B, E2, R2>(
339
+ versioned: Versioned<R0, E0, A, E, R, B, E2, R2>,
340
340
  bufferSize: number
341
- ): Versioned<R0, E0, R | Scope.Scope, E, A, R2, E2, B> {
341
+ ): Versioned<R0, E0, A, E, R | Scope.Scope, B, E2, R2> {
342
342
  return make(
343
343
  versioned.version,
344
344
  coreShare.replay(versioned, bufferSize),
package/src/index.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Fx<R, E, A> is a representation of an `Effect`-ful workflow that exists over
2
+ * Fx<A, E, R> is a representation of an `Effect`-ful workflow that exists over
3
3
  * the time dimension. It operates within a context `R`, can fail with an `E`,
4
4
  * and succeed with an `A`.
5
5
  *
@@ -5,13 +5,13 @@ import * as Exit from "effect/Exit"
5
5
  import * as Option from "effect/Option"
6
6
  import { EffectBase } from "./protos.js"
7
7
 
8
- export class DeferredRef<E, A> extends EffectBase<never, E, A> {
8
+ export class DeferredRef<E, A> extends EffectBase<A, E, never> {
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
  }