@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.
- package/dist/cjs/AsyncData.js.map +1 -1
- package/dist/cjs/Form.js.map +1 -1
- package/dist/cjs/FormEntry.js.map +1 -1
- package/dist/cjs/Fx.js +1 -1
- package/dist/cjs/Fx.js.map +1 -1
- package/dist/cjs/Idle.js.map +1 -1
- package/dist/cjs/Match.js.map +1 -1
- package/dist/cjs/Pull.js +5 -3
- package/dist/cjs/Pull.js.map +1 -1
- package/dist/cjs/RefArray.js.map +1 -1
- package/dist/cjs/RefChunk.js.map +1 -1
- package/dist/cjs/RefHashSet.js.map +1 -1
- package/dist/cjs/RefSubject.js +3 -2
- package/dist/cjs/RefSubject.js.map +1 -1
- package/dist/cjs/Sink.js.map +1 -1
- package/dist/cjs/Subject.js.map +1 -1
- package/dist/cjs/Versioned.js.map +1 -1
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/helpers.js.map +1 -1
- package/dist/cjs/internal/keyed.js +1 -1
- package/dist/cjs/internal/keyed.js.map +1 -1
- package/dist/cjs/internal/provide.js.map +1 -1
- package/dist/cjs/internal/share.js.map +1 -1
- package/dist/cjs/internal/sync-producer.js.map +1 -1
- package/dist/dts/AsyncData.d.ts +53 -53
- package/dist/dts/AsyncData.d.ts.map +1 -1
- package/dist/dts/Emitter.d.ts +7 -7
- package/dist/dts/Emitter.d.ts.map +1 -1
- package/dist/dts/Form.d.ts +14 -14
- package/dist/dts/Form.d.ts.map +1 -1
- package/dist/dts/FormEntry.d.ts +11 -11
- package/dist/dts/FormEntry.d.ts.map +1 -1
- package/dist/dts/Fx.d.ts +417 -417
- package/dist/dts/Fx.d.ts.map +1 -1
- package/dist/dts/Guard.d.ts +21 -21
- package/dist/dts/Guard.d.ts.map +1 -1
- package/dist/dts/Idle.d.ts +12 -12
- package/dist/dts/Idle.d.ts.map +1 -1
- package/dist/dts/Match.d.ts +16 -16
- package/dist/dts/Match.d.ts.map +1 -1
- package/dist/dts/Pull.d.ts +5 -5
- package/dist/dts/Pull.d.ts.map +1 -1
- package/dist/dts/Push.d.ts +40 -40
- package/dist/dts/Push.d.ts.map +1 -1
- package/dist/dts/RefArray.d.ts +59 -59
- package/dist/dts/RefArray.d.ts.map +1 -1
- package/dist/dts/RefChunk.d.ts +45 -45
- package/dist/dts/RefChunk.d.ts.map +1 -1
- package/dist/dts/RefHashMap.d.ts +35 -35
- package/dist/dts/RefHashMap.d.ts.map +1 -1
- package/dist/dts/RefHashSet.d.ts +17 -17
- package/dist/dts/RefHashSet.d.ts.map +1 -1
- package/dist/dts/RefSubject.d.ts +136 -136
- package/dist/dts/RefSubject.d.ts.map +1 -1
- package/dist/dts/Sink.d.ts +63 -63
- package/dist/dts/Sink.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +11 -11
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/Subject.d.ts +13 -13
- package/dist/dts/Subject.d.ts.map +1 -1
- package/dist/dts/Typeclass.d.ts +1 -1
- package/dist/dts/Typeclass.d.ts.map +1 -1
- package/dist/dts/Versioned.d.ts +33 -33
- package/dist/dts/Versioned.d.ts.map +1 -1
- package/dist/dts/index.d.ts +1 -1
- package/dist/dts/internal/DeferredRef.d.ts +8 -8
- package/dist/dts/internal/DeferredRef.d.ts.map +1 -1
- package/dist/dts/internal/core.d.ts +191 -191
- package/dist/dts/internal/core.d.ts.map +1 -1
- package/dist/dts/internal/effect-loop-operator.d.ts +6 -6
- package/dist/dts/internal/effect-loop-operator.d.ts.map +1 -1
- package/dist/dts/internal/effect-operator.d.ts +16 -16
- package/dist/dts/internal/effect-operator.d.ts.map +1 -1
- package/dist/dts/internal/effect-producer.d.ts +13 -13
- package/dist/dts/internal/effect-producer.d.ts.map +1 -1
- package/dist/dts/internal/helpers.d.ts +26 -26
- package/dist/dts/internal/helpers.d.ts.map +1 -1
- package/dist/dts/internal/keyed.d.ts +1 -1
- package/dist/dts/internal/keyed.d.ts.map +1 -1
- package/dist/dts/internal/loop-operator.d.ts +2 -2
- package/dist/dts/internal/loop-operator.d.ts.map +1 -1
- package/dist/dts/internal/operator.d.ts +2 -2
- package/dist/dts/internal/operator.d.ts.map +1 -1
- package/dist/dts/internal/protos.d.ts +12 -12
- package/dist/dts/internal/protos.d.ts.map +1 -1
- package/dist/dts/internal/provide.d.ts +15 -15
- package/dist/dts/internal/provide.d.ts.map +1 -1
- package/dist/dts/internal/share.d.ts +11 -11
- package/dist/dts/internal/share.d.ts.map +1 -1
- package/dist/dts/internal/sync-operator.d.ts +2 -2
- package/dist/dts/internal/sync-operator.d.ts.map +1 -1
- package/dist/dts/internal/sync-producer.d.ts +6 -6
- package/dist/dts/internal/sync-producer.d.ts.map +1 -1
- package/dist/dts/internal/withKey.d.ts +1 -1
- package/dist/dts/internal/withKey.d.ts.map +1 -1
- package/dist/esm/AsyncData.js.map +1 -1
- package/dist/esm/Form.js.map +1 -1
- package/dist/esm/FormEntry.js.map +1 -1
- package/dist/esm/Fx.js +1 -1
- package/dist/esm/Fx.js.map +1 -1
- package/dist/esm/Idle.js.map +1 -1
- package/dist/esm/Match.js.map +1 -1
- package/dist/esm/Pull.js +3 -3
- package/dist/esm/Pull.js.map +1 -1
- package/dist/esm/RefArray.js.map +1 -1
- package/dist/esm/RefChunk.js.map +1 -1
- package/dist/esm/RefHashSet.js.map +1 -1
- package/dist/esm/RefSubject.js +3 -1
- package/dist/esm/RefSubject.js.map +1 -1
- package/dist/esm/Sink.js.map +1 -1
- package/dist/esm/Subject.js.map +1 -1
- package/dist/esm/Versioned.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/helpers.js.map +1 -1
- package/dist/esm/internal/keyed.js +1 -1
- package/dist/esm/internal/keyed.js.map +1 -1
- package/dist/esm/internal/provide.js.map +1 -1
- package/dist/esm/internal/share.js.map +1 -1
- package/dist/esm/internal/sync-producer.js.map +1 -1
- package/package.json +6 -6
- package/src/AsyncData.ts +142 -144
- package/src/Emitter.ts +13 -13
- package/src/Form.ts +55 -55
- package/src/FormEntry.ts +39 -39
- package/src/Fx.ts +788 -789
- package/src/Guard.ts +43 -43
- package/src/Idle.ts +26 -26
- package/src/Match.ts +60 -61
- package/src/Pull.ts +42 -43
- package/src/Push.ts +195 -195
- package/src/RefArray.ts +121 -119
- package/src/RefChunk.ts +98 -97
- package/src/RefHashMap.ts +79 -79
- package/src/RefHashSet.ts +40 -39
- package/src/RefSubject.ts +574 -565
- package/src/Sink.ts +303 -303
- package/src/Stream.ts +27 -27
- package/src/Subject.ts +48 -46
- package/src/Typeclass.ts +2 -2
- package/src/Versioned.ts +97 -97
- package/src/index.ts +1 -1
- package/src/internal/DeferredRef.ts +7 -7
- package/src/internal/core.ts +768 -781
- package/src/internal/effect-loop-operator.ts +7 -7
- package/src/internal/effect-operator.ts +23 -23
- package/src/internal/effect-producer.ts +38 -38
- package/src/internal/helpers.ts +51 -51
- package/src/internal/keyed.ts +21 -21
- package/src/internal/loop-operator.ts +2 -2
- package/src/internal/operator.ts +2 -2
- package/src/internal/protos.ts +15 -15
- package/src/internal/provide.ts +27 -27
- package/src/internal/share.ts +25 -25
- package/src/internal/sync-operator.ts +4 -4
- package/src/internal/sync-producer.ts +15 -15
- 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
|
|
29
|
-
extends Fx<
|
|
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<
|
|
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,
|
|
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,
|
|
62
|
-
version: Effect.Effect<
|
|
63
|
-
fx: Fx<
|
|
64
|
-
effect: Effect.Effect<
|
|
65
|
-
): Versioned<R1, E1,
|
|
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,
|
|
70
|
-
implements Versioned<R1, E1,
|
|
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<
|
|
74
|
-
readonly fx: Fx<
|
|
75
|
-
readonly effect: Effect.Effect<
|
|
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<
|
|
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<
|
|
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,
|
|
93
|
-
input: Versioned<R0, E0,
|
|
94
|
-
transformFx: (fx: Fx<
|
|
95
|
-
transformGet: (effect: Effect.Effect<
|
|
96
|
-
): Versioned<never, never,
|
|
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,
|
|
112
|
-
extends FxEffectBase<
|
|
113
|
-
implements Versioned<never, never,
|
|
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<
|
|
117
|
+
protected _fx: Fx<C, E3, R3>
|
|
118
118
|
|
|
119
119
|
constructor(
|
|
120
|
-
readonly input: Versioned<R0, E0,
|
|
121
|
-
readonly _transformFx: (fx: Fx<
|
|
122
|
-
readonly _transformEffect: (effect: Effect.Effect<
|
|
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<
|
|
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<
|
|
136
|
-
const transformed = this._transformEffect(this.input as any as Effect.Effect<
|
|
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
|
-
<
|
|
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,
|
|
176
|
-
) => Versioned<never, never,
|
|
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,
|
|
179
|
-
versioned: Versioned<R0, E0,
|
|
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,
|
|
185
|
-
} = dual(2, function map<R0, E0,
|
|
186
|
-
versioned: Versioned<R0, E0,
|
|
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,
|
|
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,
|
|
202
|
-
options: { onFx: (a: A) => Effect.Effect<
|
|
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,
|
|
205
|
-
) => Versioned<never, never,
|
|
206
|
-
|
|
207
|
-
<R0, E0,
|
|
208
|
-
versioned: Versioned<R0, E0,
|
|
209
|
-
options: { onFx: (a: A) => Effect.Effect<
|
|
210
|
-
): Versioned<never, never,
|
|
211
|
-
} = dual(2, function mapEffect<R0, E0,
|
|
212
|
-
versioned: Versioned<R0, E0,
|
|
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<
|
|
215
|
-
onEffect: (b: B) => Effect.Effect<
|
|
214
|
+
onFx: (a: A) => Effect.Effect<C, E3, R3>
|
|
215
|
+
onEffect: (b: B) => Effect.Effect<D, E4, R4>
|
|
216
216
|
}
|
|
217
|
-
): Versioned<never, never,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
270
|
-
versioned: Versioned<R0, E0,
|
|
271
|
-
) => Versioned<Exclude<R0, S>, E0, Exclude<R, S>,
|
|
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<
|
|
274
|
-
versioned: Versioned<R0, E0,
|
|
275
|
-
) => Versioned<R3 | Exclude<R0, S>, E0, R3 | Exclude<R, S>,
|
|
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,
|
|
278
|
-
versioned: Versioned<R0, E0,
|
|
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>,
|
|
281
|
-
|
|
282
|
-
<R0, E0,
|
|
283
|
-
versioned: Versioned<R0, E0,
|
|
284
|
-
context: Layer.Layer<
|
|
285
|
-
): Versioned<R3 | Exclude<R0, S>, E0, R3 | Exclude<R, S>,
|
|
286
|
-
|
|
287
|
-
<R0, E0,
|
|
288
|
-
versioned: Versioned<R0, E0,
|
|
289
|
-
context: Context.Context<S> | Runtime.Runtime<S> | Layer.Layer<
|
|
290
|
-
): Versioned<R3 | Exclude<R0, S>, E0, R3 | Exclude<R, S>,
|
|
291
|
-
} = dual(2, function provide<R0, E0,
|
|
292
|
-
versioned: Versioned<R0, E0,
|
|
293
|
-
context: Context.Context<S> | Runtime.Runtime<S> | Layer.Layer<
|
|
294
|
-
): Versioned<R3 | Exclude<R0, S>, E0, R3 | Exclude<R, S>,
|
|
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<
|
|
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<
|
|
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
|
|
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,
|
|
313
|
-
versioned: Versioned<R0, E0,
|
|
314
|
-
): Versioned<R0, E0, R | Scope.Scope,
|
|
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,
|
|
326
|
-
versioned: Versioned<R0, E0,
|
|
327
|
-
): Versioned<R0, E0, R | Scope.Scope,
|
|
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,
|
|
339
|
-
versioned: Versioned<R0, E0,
|
|
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,
|
|
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<
|
|
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<
|
|
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<
|
|
10
|
+
public current!: Option.Option<Exit.Exit<A, E>>
|
|
11
11
|
public version!: number
|
|
12
|
-
public deferred!: Deferred.Deferred<
|
|
12
|
+
public deferred!: Deferred.Deferred<A, E>
|
|
13
13
|
|
|
14
|
-
constructor(private id: FiberId.FiberId, private eq: Equivalence.Equivalence<Exit.Exit<
|
|
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<
|
|
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<
|
|
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<
|
|
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
|
}
|