@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/RefSubject.ts
CHANGED
|
@@ -37,7 +37,9 @@ const UNBOUNDED = { concurrency: "unbounded" } as const
|
|
|
37
37
|
* A Computed is essentially a readonly RefSubject.
|
|
38
38
|
* @since 1.20.0
|
|
39
39
|
*/
|
|
40
|
-
export interface Computed<out
|
|
40
|
+
export interface Computed<out A, out E = never, out R = never>
|
|
41
|
+
extends Versioned.Versioned<R, E, A, E, R | Scope.Scope, A, E, R>
|
|
42
|
+
{
|
|
41
43
|
readonly [ComputedTypeId]: ComputedTypeId
|
|
42
44
|
}
|
|
43
45
|
|
|
@@ -59,15 +61,15 @@ export namespace Computed {
|
|
|
59
61
|
* A Filtered is essentially a readonly RefSubject that may have its values filtered out.
|
|
60
62
|
* @since 1.20.0
|
|
61
63
|
*/
|
|
62
|
-
export interface Filtered<out
|
|
63
|
-
extends Versioned.Versioned<R, E, R | Scope.Scope,
|
|
64
|
+
export interface Filtered<out A, out E = never, out R = never>
|
|
65
|
+
extends Versioned.Versioned<R, E, A, E, R | Scope.Scope, A, E | Cause.NoSuchElementException, R>
|
|
64
66
|
{
|
|
65
67
|
readonly [FilteredTypeId]: FilteredTypeId
|
|
66
68
|
|
|
67
69
|
/**
|
|
68
70
|
* @since 1.20.0
|
|
69
71
|
*/
|
|
70
|
-
asComputed(): Computed<
|
|
72
|
+
asComputed(): Computed<Option.Option<A>, E, R>
|
|
71
73
|
}
|
|
72
74
|
|
|
73
75
|
/**
|
|
@@ -88,15 +90,17 @@ export namespace Filtered {
|
|
|
88
90
|
* A RefSubject is a Subject that can be used to read and write a value.
|
|
89
91
|
* @since 1.20.0
|
|
90
92
|
*/
|
|
91
|
-
export interface RefSubject<
|
|
93
|
+
export interface RefSubject<in out A, in out E = never, out R = never>
|
|
94
|
+
extends Computed<A, E, R>, Subject.Subject<A, E, R>
|
|
95
|
+
{
|
|
92
96
|
readonly [RefSubjectTypeId]: RefSubjectTypeId
|
|
93
97
|
|
|
94
98
|
/**
|
|
95
99
|
* @since 1.20.0
|
|
96
100
|
*/
|
|
97
|
-
readonly runUpdates: <
|
|
98
|
-
f: (ref: GetSetDelete<
|
|
99
|
-
) => Effect.Effect<R | R2
|
|
101
|
+
readonly runUpdates: <B, E2, R2>(
|
|
102
|
+
f: (ref: GetSetDelete<A, E, R>) => Effect.Effect<B, E2, R2>
|
|
103
|
+
) => Effect.Effect<B, E2, R | R2>
|
|
100
104
|
}
|
|
101
105
|
|
|
102
106
|
/**
|
|
@@ -108,25 +112,25 @@ export namespace RefSubject {
|
|
|
108
112
|
*/
|
|
109
113
|
export type Any =
|
|
110
114
|
| RefSubject<any, any, any>
|
|
111
|
-
| RefSubject<
|
|
115
|
+
| RefSubject<any, any>
|
|
112
116
|
| RefSubject<any, never, any>
|
|
113
|
-
| RefSubject<
|
|
117
|
+
| RefSubject<any>
|
|
114
118
|
|
|
115
119
|
/**
|
|
116
120
|
* @since 1.20.0
|
|
117
121
|
*/
|
|
118
|
-
export interface Tagged<I, E, A> extends RefSubject<
|
|
122
|
+
export interface Tagged<I, E, A> extends RefSubject<A, E, I> {
|
|
119
123
|
/**
|
|
120
124
|
* @since 1.20.0
|
|
121
125
|
*/
|
|
122
|
-
readonly tag: C.Tagged<I, RefSubject<
|
|
126
|
+
readonly tag: C.Tagged<I, RefSubject<A, E>>
|
|
123
127
|
/**
|
|
124
128
|
* @since 1.20.0
|
|
125
129
|
*/
|
|
126
130
|
readonly make: <R>(
|
|
127
|
-
fxOrEffect: Fx<
|
|
131
|
+
fxOrEffect: Fx<A, E, R> | Effect.Effect<A, E, R>,
|
|
128
132
|
options?: RefSubjectOptions<A>
|
|
129
|
-
) => Layer.Layer<
|
|
133
|
+
) => Layer.Layer<I, never, R>
|
|
130
134
|
}
|
|
131
135
|
|
|
132
136
|
/**
|
|
@@ -134,25 +138,25 @@ export namespace RefSubject {
|
|
|
134
138
|
* @since 1.18.0
|
|
135
139
|
* @category models
|
|
136
140
|
*/
|
|
137
|
-
export interface Derived<
|
|
138
|
-
readonly persist: Effect.Effect<
|
|
141
|
+
export interface Derived<A, E, R> extends RefSubject<A, E, R> {
|
|
142
|
+
readonly persist: Effect.Effect<void, never, R>
|
|
139
143
|
}
|
|
140
144
|
|
|
141
145
|
/**
|
|
142
146
|
* @since 1.20.0
|
|
143
147
|
*/
|
|
144
|
-
export type Context<T> = T extends RefSubject<infer
|
|
148
|
+
export type Context<T> = T extends RefSubject<infer _A, infer _E, infer R> ? R : never
|
|
145
149
|
|
|
146
150
|
/**
|
|
147
151
|
* @since 1.20.0
|
|
148
152
|
*/
|
|
149
153
|
|
|
150
|
-
export type Error<T> = T extends RefSubject<infer
|
|
154
|
+
export type Error<T> = T extends RefSubject<infer _A, infer E, infer _R> ? E : never
|
|
151
155
|
|
|
152
156
|
/**
|
|
153
157
|
* @since 1.20.0
|
|
154
158
|
*/
|
|
155
|
-
export type Success<T> = T extends RefSubject<infer
|
|
159
|
+
export type Success<T> = T extends RefSubject<infer A, infer _E, infer _R> ? A : never
|
|
156
160
|
|
|
157
161
|
/**
|
|
158
162
|
* @since 1.20.0
|
|
@@ -192,20 +196,20 @@ export interface RefSubjectOptions<A> {
|
|
|
192
196
|
/**
|
|
193
197
|
* @since 1.20.0
|
|
194
198
|
*/
|
|
195
|
-
export function fromEffect<
|
|
196
|
-
effect: Effect.Effect<
|
|
199
|
+
export function fromEffect<A, E, R>(
|
|
200
|
+
effect: Effect.Effect<A, E, R>,
|
|
197
201
|
options?: RefSubjectOptions<A>
|
|
198
|
-
): Effect.Effect<R | Scope.Scope
|
|
202
|
+
): Effect.Effect<RefSubject<A, E>, never, R | Scope.Scope> {
|
|
199
203
|
return Effect.map(makeCore(effect, options), (core) => new RefSubjectImpl(core))
|
|
200
204
|
}
|
|
201
205
|
|
|
202
206
|
/**
|
|
203
207
|
* @since 1.20.0
|
|
204
208
|
*/
|
|
205
|
-
export function fromFx<
|
|
206
|
-
fx: Fx<
|
|
209
|
+
export function fromFx<A, E, R>(
|
|
210
|
+
fx: Fx<A, E, R>,
|
|
207
211
|
options?: RefSubjectOptions<A>
|
|
208
|
-
): Effect.Effect<R | Scope.Scope
|
|
212
|
+
): Effect.Effect<RefSubject<A, E>, never, R | Scope.Scope> {
|
|
209
213
|
return DeferredRef.make<E, A>(getExitEquivalence(options?.eq ?? Equal.equals)).pipe(
|
|
210
214
|
Effect.bindTo("deferredRef"),
|
|
211
215
|
Effect.bind("core", ({ deferredRef }) => makeCore(deferredRef, options)),
|
|
@@ -228,13 +232,13 @@ export function fromFx<R, E, A>(
|
|
|
228
232
|
/**
|
|
229
233
|
* @since 1.20.0
|
|
230
234
|
*/
|
|
231
|
-
export function fromRefSubject<
|
|
232
|
-
ref: RefSubject<
|
|
235
|
+
export function fromRefSubject<A, E, R>(
|
|
236
|
+
ref: RefSubject<A, E, R>,
|
|
233
237
|
options?: RefSubjectOptions<A>
|
|
234
|
-
): Effect.Effect<
|
|
238
|
+
): Effect.Effect<RefSubject.Derived<A, E, R>, never, R | Scope.Scope> {
|
|
235
239
|
return DeferredRef.make<E, A>(getExitEquivalence(options?.eq ?? Equal.equals)).pipe(
|
|
236
240
|
Effect.bindTo("deferredRef"),
|
|
237
|
-
Effect.bind("core", ({ deferredRef }) => makeCore<
|
|
241
|
+
Effect.bind("core", ({ deferredRef }) => makeCore<A, E, R>(deferredRef, options)),
|
|
238
242
|
Effect.tap(({ core, deferredRef }) =>
|
|
239
243
|
Effect.forkIn(
|
|
240
244
|
ref.run(Sink.make(
|
|
@@ -253,7 +257,7 @@ export function fromRefSubject<R, E, A>(
|
|
|
253
257
|
)
|
|
254
258
|
}
|
|
255
259
|
|
|
256
|
-
function persistCore<
|
|
260
|
+
function persistCore<A, E, R, R2>(ref: RefSubject<A, E, R>, core: RefSubjectCore<A, E, R, R2>) {
|
|
257
261
|
// Log any errors that fail to persist, but don't fail the consumer
|
|
258
262
|
return Effect.ignoreLogged(Effect.provide(Effect.flatMap(core.deferredRef, (value) => set(ref, value)), core.context))
|
|
259
263
|
}
|
|
@@ -262,25 +266,25 @@ function persistCore<R, E, A, R2>(ref: RefSubject<R, E, A>, core: RefSubjectCore
|
|
|
262
266
|
* @since 1.20.0
|
|
263
267
|
*/
|
|
264
268
|
export const make: {
|
|
265
|
-
<
|
|
266
|
-
ref: RefSubject<
|
|
269
|
+
<A, E = never, R = never>(
|
|
270
|
+
ref: RefSubject<A, E, R>,
|
|
267
271
|
options?: RefSubjectOptions<A>
|
|
268
|
-
): Effect.Effect<
|
|
272
|
+
): Effect.Effect<RefSubject.Derived<A, E, R>, never, R | Scope.Scope>
|
|
269
273
|
|
|
270
|
-
<
|
|
271
|
-
fxOrEffect: Fx<
|
|
274
|
+
<A, E = never, R = never>(
|
|
275
|
+
fxOrEffect: Fx<A, E, R> | Effect.Effect<A, E, R>,
|
|
272
276
|
options?: RefSubjectOptions<A>
|
|
273
|
-
): Effect.Effect<R | Scope.Scope
|
|
277
|
+
): Effect.Effect<RefSubject<A, E>, never, R | Scope.Scope>
|
|
274
278
|
|
|
275
|
-
<
|
|
276
|
-
fxOrEffect: Fx<
|
|
279
|
+
<A, E = never, R = never>(
|
|
280
|
+
fxOrEffect: Fx<A, E, R> | Effect.Effect<A, E, R> | RefSubject<A, E, R>,
|
|
277
281
|
options?: RefSubjectOptions<A>
|
|
278
|
-
): Effect.Effect<
|
|
279
|
-
} = function make<
|
|
280
|
-
fxOrEffect: Fx<
|
|
282
|
+
): Effect.Effect<RefSubject<A, E> | RefSubject.Derived<A, E, R>, never, R | Scope.Scope>
|
|
283
|
+
} = function make<A, E, R>(
|
|
284
|
+
fxOrEffect: Fx<A, E, R> | Effect.Effect<A, E, R> | RefSubject<A, E, R>,
|
|
281
285
|
options?: RefSubjectOptions<A>
|
|
282
|
-
): Effect.Effect<R | Scope.Scope
|
|
283
|
-
if (RefSubjectTypeId in fxOrEffect) return fromRefSubject(fxOrEffect as RefSubject<
|
|
286
|
+
): Effect.Effect<any, never, R | Scope.Scope> {
|
|
287
|
+
if (RefSubjectTypeId in fxOrEffect) return fromRefSubject(fxOrEffect as RefSubject<A, E, R>, options)
|
|
284
288
|
else if (TypeId in fxOrEffect) return fromFx(fxOrEffect, options)
|
|
285
289
|
else return fromEffect(fxOrEffect, options)
|
|
286
290
|
}
|
|
@@ -291,7 +295,7 @@ export const make: {
|
|
|
291
295
|
export function of<A, E = never>(
|
|
292
296
|
a: A,
|
|
293
297
|
options?: RefSubjectOptions<A>
|
|
294
|
-
): Effect.Effect<
|
|
298
|
+
): Effect.Effect<RefSubject<A, E>, never, Scope.Scope> {
|
|
295
299
|
return Effect.acquireRelease(
|
|
296
300
|
withScopeAndFiberId(
|
|
297
301
|
(scope, id) =>
|
|
@@ -308,8 +312,8 @@ export function of<A, E = never>(
|
|
|
308
312
|
)
|
|
309
313
|
}
|
|
310
314
|
|
|
311
|
-
const withScopeAndFiberId = <
|
|
312
|
-
f: (scope: Scope.CloseableScope, id: FiberId.FiberId) => Effect.Effect<
|
|
315
|
+
const withScopeAndFiberId = <A, E, R>(
|
|
316
|
+
f: (scope: Scope.CloseableScope, id: FiberId.FiberId) => Effect.Effect<A, E, R>,
|
|
313
317
|
strategy: ExecutionStrategy.ExecutionStrategy
|
|
314
318
|
) => Effect.fiberIdWith((id) => withScope((scope) => f(scope, id), strategy))
|
|
315
319
|
|
|
@@ -321,12 +325,12 @@ const emptyContext = C.empty()
|
|
|
321
325
|
export function unsafeMake<E, A>(
|
|
322
326
|
params: {
|
|
323
327
|
readonly id: FiberId.FiberId
|
|
324
|
-
readonly initial: Effect.Effect<
|
|
328
|
+
readonly initial: Effect.Effect<A, E>
|
|
325
329
|
readonly options?: RefSubjectOptions<A> | undefined
|
|
326
330
|
readonly scope: Scope.CloseableScope
|
|
327
331
|
readonly initialValue?: A
|
|
328
332
|
}
|
|
329
|
-
): Effect.Effect<
|
|
333
|
+
): Effect.Effect<RefSubject<A, E>> {
|
|
330
334
|
const { id, initial, options, scope } = params
|
|
331
335
|
return Effect.suspend(() => {
|
|
332
336
|
const core = unsafeMakeCore(initial, id, emptyContext, scope, options)
|
|
@@ -342,20 +346,20 @@ export function unsafeMake<E, A>(
|
|
|
342
346
|
})
|
|
343
347
|
}
|
|
344
348
|
|
|
345
|
-
class RefSubjectImpl<
|
|
346
|
-
implements RefSubject<Exclude<R, R2
|
|
349
|
+
class RefSubjectImpl<A, E, R, R2> extends FxEffectBase<A, E, Exclude<R, R2> | Scope.Scope, A, E, Exclude<R, R2>>
|
|
350
|
+
implements RefSubject<A, E, Exclude<R, R2>>
|
|
347
351
|
{
|
|
348
352
|
readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
|
|
349
353
|
readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
|
|
350
354
|
|
|
351
|
-
readonly version: Effect.Effect<
|
|
352
|
-
readonly interrupt: Effect.Effect<Exclude<R, R2
|
|
353
|
-
readonly subscriberCount: Effect.Effect<Exclude<R, R2
|
|
355
|
+
readonly version: Effect.Effect<number>
|
|
356
|
+
readonly interrupt: Effect.Effect<void, never, Exclude<R, R2>>
|
|
357
|
+
readonly subscriberCount: Effect.Effect<number, never, Exclude<R, R2>>
|
|
354
358
|
|
|
355
|
-
private readonly getSetDelete: GetSetDelete<Exclude<R, R2
|
|
359
|
+
private readonly getSetDelete: GetSetDelete<A, E, Exclude<R, R2>>
|
|
356
360
|
|
|
357
361
|
constructor(
|
|
358
|
-
private readonly core: RefSubjectCore<
|
|
362
|
+
private readonly core: RefSubjectCore<A, E, R, R2>
|
|
359
363
|
) {
|
|
360
364
|
super()
|
|
361
365
|
|
|
@@ -369,7 +373,7 @@ class RefSubjectImpl<R, E, A, R2> extends FxEffectBase<Exclude<R, R2> | Scope.Sc
|
|
|
369
373
|
this.onFailure = this.onFailure.bind(this)
|
|
370
374
|
}
|
|
371
375
|
|
|
372
|
-
run<R3>(sink: Sink.Sink<
|
|
376
|
+
run<R3>(sink: Sink.Sink<A, E, R3>): Effect.Effect<unknown, never, Exclude<R, R2> | R3 | Scope.Scope> {
|
|
373
377
|
return Effect.matchCauseEffect(getOrInitializeCore(this.core, true), {
|
|
374
378
|
onFailure: (cause) => sink.onFailure(cause),
|
|
375
379
|
onSuccess: () => Effect.provide(this.core.subject.run(sink), this.core.context)
|
|
@@ -377,28 +381,28 @@ class RefSubjectImpl<R, E, A, R2> extends FxEffectBase<Exclude<R, R2> | Scope.Sc
|
|
|
377
381
|
}
|
|
378
382
|
|
|
379
383
|
runUpdates<R3, E3, B>(
|
|
380
|
-
run: (ref: GetSetDelete<Exclude<R, R2
|
|
384
|
+
run: (ref: GetSetDelete<A, E, Exclude<R, R2>>) => Effect.Effect<B, E3, R3>
|
|
381
385
|
) {
|
|
382
386
|
return this.core.semaphore.withPermits(1)(run(this.getSetDelete))
|
|
383
387
|
}
|
|
384
388
|
|
|
385
|
-
onSuccess(value: A): Effect.Effect<Exclude<R, R2
|
|
389
|
+
onSuccess(value: A): Effect.Effect<unknown, never, Exclude<R, R2>> {
|
|
386
390
|
return setCore(this.core, value)
|
|
387
391
|
}
|
|
388
392
|
|
|
389
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<Exclude<R, R2
|
|
393
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, Exclude<R, R2>> {
|
|
390
394
|
return onFailureCore(this.core, cause)
|
|
391
395
|
}
|
|
392
396
|
|
|
393
|
-
toEffect(): Effect.Effect<Exclude<R, R2
|
|
397
|
+
toEffect(): Effect.Effect<A, E, Exclude<R, R2>> {
|
|
394
398
|
return getOrInitializeCore(this.core, true)
|
|
395
399
|
}
|
|
396
400
|
}
|
|
397
401
|
|
|
398
|
-
class DerivedImpl<
|
|
402
|
+
class DerivedImpl<A, E, R, R2> extends RefSubjectImpl<A, E, R, R2> implements RefSubject.Derived<A, E, Exclude<R, R2>> {
|
|
399
403
|
constructor(
|
|
400
|
-
core: RefSubjectCore<
|
|
401
|
-
readonly persist: Effect.Effect<Exclude<R, R2
|
|
404
|
+
core: RefSubjectCore<A, E, R, R2>,
|
|
405
|
+
readonly persist: Effect.Effect<void, never, Exclude<R, R2>>
|
|
402
406
|
) {
|
|
403
407
|
super(core)
|
|
404
408
|
}
|
|
@@ -408,16 +412,16 @@ class DerivedImpl<R, E, A, R2> extends RefSubjectImpl<R, E, A, R2> implements Re
|
|
|
408
412
|
* @since 1.20.0
|
|
409
413
|
*/
|
|
410
414
|
export const set: {
|
|
411
|
-
<A>(value: A): <
|
|
412
|
-
<
|
|
413
|
-
} = dual(2, function set<
|
|
415
|
+
<A>(value: A): <E, R>(ref: RefSubject<A, E, R>) => Effect.Effect<A, E, R>
|
|
416
|
+
<A, E, R>(ref: RefSubject<A, E, R>, a: A): Effect.Effect<A, E, R>
|
|
417
|
+
} = dual(2, function set<A, E, R>(ref: RefSubject<A, E, R>, a: A): Effect.Effect<A, E, R> {
|
|
414
418
|
return ref.runUpdates((ref) => ref.set(a))
|
|
415
419
|
})
|
|
416
420
|
|
|
417
421
|
/**
|
|
418
422
|
* @since 1.20.0
|
|
419
423
|
*/
|
|
420
|
-
export function reset<
|
|
424
|
+
export function reset<A, E, R>(ref: RefSubject<A, E, R>): Effect.Effect<Option.Option<A>, E, R> {
|
|
421
425
|
return ref.runUpdates((ref) => ref.delete)
|
|
422
426
|
}
|
|
423
427
|
|
|
@@ -434,22 +438,22 @@ export {
|
|
|
434
438
|
/**
|
|
435
439
|
* @since 1.20.0
|
|
436
440
|
*/
|
|
437
|
-
export interface GetSetDelete<
|
|
441
|
+
export interface GetSetDelete<A, E, R> {
|
|
438
442
|
/**
|
|
439
443
|
* @since 1.20.0
|
|
440
444
|
*/
|
|
441
|
-
readonly get: Effect.Effect<
|
|
445
|
+
readonly get: Effect.Effect<A, E, R>
|
|
442
446
|
/**
|
|
443
447
|
* @since 1.20.0
|
|
444
448
|
*/
|
|
445
|
-
readonly set: (a: A) => Effect.Effect<
|
|
449
|
+
readonly set: (a: A) => Effect.Effect<A, never, R>
|
|
446
450
|
/**
|
|
447
451
|
* @since 1.20.0
|
|
448
452
|
*/
|
|
449
|
-
readonly delete: Effect.Effect<
|
|
453
|
+
readonly delete: Effect.Effect<Option.Option<A>, E, R>
|
|
450
454
|
}
|
|
451
455
|
|
|
452
|
-
function getSetDelete<
|
|
456
|
+
function getSetDelete<A, E, R, R2>(ref: RefSubjectCore<A, E, R, R2>): GetSetDelete<A, E, Exclude<R, R2>> {
|
|
453
457
|
return {
|
|
454
458
|
get: getOrInitializeCore(ref, false),
|
|
455
459
|
set: (a) => setCore(ref, a),
|
|
@@ -461,16 +465,16 @@ function getSetDelete<R, E, A, R2>(ref: RefSubjectCore<R, E, A, R2>): GetSetDele
|
|
|
461
465
|
* @since 1.20.0
|
|
462
466
|
*/
|
|
463
467
|
export const updateEffect: {
|
|
464
|
-
<A,
|
|
465
|
-
f: (value: A) => Effect.Effect<
|
|
466
|
-
): <
|
|
467
|
-
<
|
|
468
|
-
ref: RefSubject<
|
|
469
|
-
f: (value: A) => Effect.Effect<
|
|
470
|
-
): Effect.Effect<
|
|
471
|
-
} = dual(2, function updateEffect<
|
|
472
|
-
ref: RefSubject<
|
|
473
|
-
f: (value: A) => Effect.Effect<
|
|
468
|
+
<A, E2, R2>(
|
|
469
|
+
f: (value: A) => Effect.Effect<A, E2, R2>
|
|
470
|
+
): <E, R>(ref: RefSubject<A, E, R>) => Effect.Effect<A, E | E2, R | R2>
|
|
471
|
+
<A, E, R, E2, R2>(
|
|
472
|
+
ref: RefSubject<A, E, R>,
|
|
473
|
+
f: (value: A) => Effect.Effect<A, E2, R2>
|
|
474
|
+
): Effect.Effect<A, E | E2, R | R2>
|
|
475
|
+
} = dual(2, function updateEffect<A, E, R, E2, R2>(
|
|
476
|
+
ref: RefSubject<A, E, R>,
|
|
477
|
+
f: (value: A) => Effect.Effect<A, E2, R2>
|
|
474
478
|
) {
|
|
475
479
|
return ref.runUpdates((ref) => Effect.flatMap(Effect.flatMap(ref.get, f), ref.set))
|
|
476
480
|
})
|
|
@@ -479,9 +483,9 @@ export const updateEffect: {
|
|
|
479
483
|
* @since 1.20.0
|
|
480
484
|
*/
|
|
481
485
|
export const update: {
|
|
482
|
-
<A>(f: (value: A) => A): <
|
|
483
|
-
<
|
|
484
|
-
} = dual(2, function update<
|
|
486
|
+
<A>(f: (value: A) => A): <E, R>(ref: RefSubject<A, E, R>) => Effect.Effect<A, E, R>
|
|
487
|
+
<A, E, R>(ref: RefSubject<A, E, R>, f: (value: A) => A): Effect.Effect<A, E, R>
|
|
488
|
+
} = dual(2, function update<A, E, R>(ref: RefSubject<A, E, R>, f: (value: A) => A) {
|
|
485
489
|
return updateEffect(ref, (value) => Effect.succeed(f(value)))
|
|
486
490
|
})
|
|
487
491
|
|
|
@@ -489,16 +493,16 @@ export const update: {
|
|
|
489
493
|
* @since 1.20.0
|
|
490
494
|
*/
|
|
491
495
|
export const modifyEffect: {
|
|
492
|
-
<A,
|
|
493
|
-
f: (value: A) => Effect.Effect<
|
|
494
|
-
): <
|
|
495
|
-
<
|
|
496
|
-
ref: RefSubject<
|
|
497
|
-
f: (value: A) => Effect.Effect<
|
|
498
|
-
): Effect.Effect<
|
|
499
|
-
} = dual(2, function modifyEffect<
|
|
500
|
-
ref: RefSubject<
|
|
501
|
-
f: (value: A) => Effect.Effect<
|
|
496
|
+
<A, B, E2, R2>(
|
|
497
|
+
f: (value: A) => Effect.Effect<readonly [B, A], E2, R2>
|
|
498
|
+
): <E, R>(ref: RefSubject<A, E, R>) => Effect.Effect<B, E | E2, R | R2>
|
|
499
|
+
<A, E, R, B, E2, R2>(
|
|
500
|
+
ref: RefSubject<A, E, R>,
|
|
501
|
+
f: (value: A) => Effect.Effect<readonly [B, A], E2, R2>
|
|
502
|
+
): Effect.Effect<B, E | E2, R | R2>
|
|
503
|
+
} = dual(2, function modifyEffect<A, E, R, B, E2, R2>(
|
|
504
|
+
ref: RefSubject<A, E, R>,
|
|
505
|
+
f: (value: A) => Effect.Effect<readonly [B, A], E2, R2>
|
|
502
506
|
) {
|
|
503
507
|
return ref.runUpdates(
|
|
504
508
|
(ref) =>
|
|
@@ -513,9 +517,9 @@ export const modifyEffect: {
|
|
|
513
517
|
* @since 1.20.0
|
|
514
518
|
*/
|
|
515
519
|
export const modify: {
|
|
516
|
-
<A, B>(f: (value: A) => readonly [B, A]): <
|
|
517
|
-
<
|
|
518
|
-
} = dual(2, function modify<
|
|
520
|
+
<A, B>(f: (value: A) => readonly [B, A]): <E, R>(ref: RefSubject<A, E, R>) => Effect.Effect<B, E, R>
|
|
521
|
+
<A, E, R, B>(ref: RefSubject<A, E, R>, f: (value: A) => readonly [B, A]): Effect.Effect<B, E, R>
|
|
522
|
+
} = dual(2, function modify<A, E, R, B>(ref: RefSubject<A, E, R>, f: (value: A) => readonly [B, A]) {
|
|
519
523
|
return modifyEffect(ref, (value) => Effect.succeed(f(value)))
|
|
520
524
|
})
|
|
521
525
|
|
|
@@ -525,27 +529,27 @@ const isRefSubjectDataFirst = (args: IArguments) => isRefSubject(args[0])
|
|
|
525
529
|
* @since 1.20.0
|
|
526
530
|
*/
|
|
527
531
|
export const runUpdates: {
|
|
528
|
-
<
|
|
529
|
-
f: (ref: GetSetDelete<
|
|
532
|
+
<A, E, R, B, E2, R2, R3 = never, E3 = never, C = never>(
|
|
533
|
+
f: (ref: GetSetDelete<A, E, R>) => Effect.Effect<B, E2, R2>,
|
|
530
534
|
options?:
|
|
531
|
-
| { readonly onInterrupt: (value: A) => Effect.Effect<
|
|
535
|
+
| { readonly onInterrupt: (value: A) => Effect.Effect<C, E3, R3>; readonly value?: "initial" | "current" }
|
|
532
536
|
| undefined
|
|
533
|
-
): (ref: RefSubject<
|
|
537
|
+
): (ref: RefSubject<A, E, R>) => Effect.Effect<B, E | E2 | E3, R | R2 | R3>
|
|
534
538
|
|
|
535
|
-
<
|
|
536
|
-
ref: RefSubject<
|
|
537
|
-
f: (ref: GetSetDelete<
|
|
539
|
+
<A, E, R, B, E2, R2, R3 = never, E3 = never, C = never>(
|
|
540
|
+
ref: RefSubject<A, E, R>,
|
|
541
|
+
f: (ref: GetSetDelete<A, E, R>) => Effect.Effect<B, E2, R2>,
|
|
538
542
|
options?:
|
|
539
|
-
| { readonly onInterrupt: (value: A) => Effect.Effect<
|
|
543
|
+
| { readonly onInterrupt: (value: A) => Effect.Effect<C, E3, R3>; readonly value?: "initial" | "current" }
|
|
540
544
|
| undefined
|
|
541
|
-
): Effect.Effect<
|
|
545
|
+
): Effect.Effect<B, E | E2 | E3, R | R2 | R3>
|
|
542
546
|
} = dual(
|
|
543
547
|
isRefSubjectDataFirst,
|
|
544
|
-
function runUpdates<
|
|
545
|
-
ref: RefSubject<
|
|
546
|
-
f: (ref: GetSetDelete<
|
|
548
|
+
function runUpdates<A, E, R, B, E2, R2, R3 = never, E3 = never, C = never>(
|
|
549
|
+
ref: RefSubject<A, E, R>,
|
|
550
|
+
f: (ref: GetSetDelete<A, E, R>) => Effect.Effect<B, E2, R2>,
|
|
547
551
|
options?: {
|
|
548
|
-
readonly onInterrupt: (value: A) => Effect.Effect<
|
|
552
|
+
readonly onInterrupt: (value: A) => Effect.Effect<C, E3, R3>
|
|
549
553
|
readonly value?: "initial" | "current"
|
|
550
554
|
}
|
|
551
555
|
) {
|
|
@@ -585,21 +589,21 @@ export const runUpdates: {
|
|
|
585
589
|
}
|
|
586
590
|
)
|
|
587
591
|
|
|
588
|
-
class RefSubjectCore<
|
|
592
|
+
class RefSubjectCore<A, E, R, R2> {
|
|
589
593
|
constructor(
|
|
590
|
-
readonly initial: Effect.Effect<
|
|
591
|
-
readonly subject: Subject.Subject<
|
|
594
|
+
readonly initial: Effect.Effect<A, E, R>,
|
|
595
|
+
readonly subject: Subject.Subject<A, E, R>,
|
|
592
596
|
readonly context: C.Context<R2>,
|
|
593
597
|
readonly scope: Scope.CloseableScope,
|
|
594
598
|
readonly deferredRef: DeferredRef.DeferredRef<E, A>,
|
|
595
599
|
readonly semaphore: Effect.Semaphore
|
|
596
600
|
) {}
|
|
597
601
|
|
|
598
|
-
public _fiber: Fiber.Fiber<
|
|
602
|
+
public _fiber: Fiber.Fiber<A, E> | undefined = undefined
|
|
599
603
|
}
|
|
600
604
|
|
|
601
|
-
function makeCore<
|
|
602
|
-
initial: Effect.Effect<
|
|
605
|
+
function makeCore<A, E, R>(
|
|
606
|
+
initial: Effect.Effect<A, E, R>,
|
|
603
607
|
options?: RefSubjectOptions<A>
|
|
604
608
|
) {
|
|
605
609
|
return Effect.context<R | Scope.Scope>().pipe(
|
|
@@ -613,7 +617,7 @@ function makeCore<R, E, A>(
|
|
|
613
617
|
"deferredRef",
|
|
614
618
|
() => DeferredRef.make<E, A>(getExitEquivalence(options?.eq ?? Equal.equals))
|
|
615
619
|
),
|
|
616
|
-
Effect.let("subject", () => Subject.unsafeMake<
|
|
620
|
+
Effect.let("subject", () => Subject.unsafeMake<A, E>(Math.max(1, options?.replay ?? 1))),
|
|
617
621
|
Effect.tap(({ scope, subject }) => Scope.addFinalizer(scope, subject.interrupt)),
|
|
618
622
|
Effect.map(({ ctx, deferredRef, scope, subject }) =>
|
|
619
623
|
new RefSubjectCore(
|
|
@@ -628,8 +632,8 @@ function makeCore<R, E, A>(
|
|
|
628
632
|
)
|
|
629
633
|
}
|
|
630
634
|
|
|
631
|
-
function unsafeMakeCore<
|
|
632
|
-
initial: Effect.Effect<
|
|
635
|
+
function unsafeMakeCore<A, E, R>(
|
|
636
|
+
initial: Effect.Effect<A, E, R>,
|
|
633
637
|
id: FiberId.FiberId,
|
|
634
638
|
ctx: C.Context<R>,
|
|
635
639
|
scope: Scope.CloseableScope,
|
|
@@ -637,7 +641,7 @@ function unsafeMakeCore<R, E, A>(
|
|
|
637
641
|
) {
|
|
638
642
|
return new RefSubjectCore(
|
|
639
643
|
initial,
|
|
640
|
-
Subject.unsafeMake<
|
|
644
|
+
Subject.unsafeMake<A, E>(Math.max(1, options?.replay ?? 1)),
|
|
641
645
|
ctx,
|
|
642
646
|
scope,
|
|
643
647
|
DeferredRef.unsafeMake(id, getExitEquivalence(options?.eq ?? Equal.equals)),
|
|
@@ -645,10 +649,10 @@ function unsafeMakeCore<R, E, A>(
|
|
|
645
649
|
)
|
|
646
650
|
}
|
|
647
651
|
|
|
648
|
-
function getOrInitializeCore<
|
|
649
|
-
core: RefSubjectCore<
|
|
652
|
+
function getOrInitializeCore<A, E, R, R2>(
|
|
653
|
+
core: RefSubjectCore<A, E, R, R2>,
|
|
650
654
|
lockInitialize: boolean
|
|
651
|
-
): Effect.Effect<Exclude<R, R2
|
|
655
|
+
): Effect.Effect<A, E, Exclude<R, R2>> {
|
|
652
656
|
return Effect.suspend(() => {
|
|
653
657
|
if (core._fiber === undefined && Option.isNone(core.deferredRef.current)) {
|
|
654
658
|
return initializeCoreAndTap(core, lockInitialize)
|
|
@@ -658,10 +662,10 @@ function getOrInitializeCore<R, E, A, R2>(
|
|
|
658
662
|
})
|
|
659
663
|
}
|
|
660
664
|
|
|
661
|
-
function initializeCoreEffect<
|
|
662
|
-
core: RefSubjectCore<
|
|
665
|
+
function initializeCoreEffect<A, E, R, R2>(
|
|
666
|
+
core: RefSubjectCore<A, E, R, R2>,
|
|
663
667
|
lock: boolean
|
|
664
|
-
): Effect.Effect<
|
|
668
|
+
): Effect.Effect<Fiber.Fiber<A, E>, never, Exclude<R, R2>> {
|
|
665
669
|
const initialize = Effect.onExit(
|
|
666
670
|
Effect.provide(core.initial, core.context),
|
|
667
671
|
(exit) =>
|
|
@@ -680,11 +684,11 @@ function initializeCoreEffect<R, E, A, R2>(
|
|
|
680
684
|
)
|
|
681
685
|
}
|
|
682
686
|
|
|
683
|
-
function initializeCore<
|
|
684
|
-
core: RefSubjectCore<
|
|
687
|
+
function initializeCore<A, E, R, R2>(
|
|
688
|
+
core: RefSubjectCore<A, E, R, R2>,
|
|
685
689
|
lock: boolean
|
|
686
|
-
): Effect.Effect<
|
|
687
|
-
type Z = Effect.Effect<
|
|
690
|
+
): Effect.Effect<Fiber.Fiber<A, E>, never, Exclude<R, R2>> {
|
|
691
|
+
type Z = Effect.Effect<Fiber.Fiber<A, E>, never, Exclude<R, R2>>
|
|
688
692
|
|
|
689
693
|
const onSuccess = (a: A): Z => {
|
|
690
694
|
core.deferredRef.done(Exit.succeed(a))
|
|
@@ -710,17 +714,17 @@ function initializeCore<R, E, A, R2>(
|
|
|
710
714
|
})
|
|
711
715
|
}
|
|
712
716
|
|
|
713
|
-
function initializeCoreAndTap<
|
|
714
|
-
core: RefSubjectCore<
|
|
717
|
+
function initializeCoreAndTap<A, E, R, R2>(
|
|
718
|
+
core: RefSubjectCore<A, E, R, R2>,
|
|
715
719
|
lock: boolean
|
|
716
|
-
): Effect.Effect<Exclude<R, R2
|
|
720
|
+
): Effect.Effect<A, E, Exclude<R, R2>> {
|
|
717
721
|
return Effect.zipRight(
|
|
718
722
|
initializeCore(core, lock),
|
|
719
723
|
tapEventCore(core, core.deferredRef)
|
|
720
724
|
)
|
|
721
725
|
}
|
|
722
726
|
|
|
723
|
-
function setCore<
|
|
727
|
+
function setCore<A, E, R, R2>(core: RefSubjectCore<A, E, R, R2>, a: A): Effect.Effect<A, never, Exclude<R, R2>> {
|
|
724
728
|
const exit = Exit.succeed(a)
|
|
725
729
|
|
|
726
730
|
return Effect.suspend(() => {
|
|
@@ -734,7 +738,7 @@ function setCore<R, E, A, R2>(core: RefSubjectCore<R, E, A, R2>, a: A): Effect.E
|
|
|
734
738
|
})
|
|
735
739
|
}
|
|
736
740
|
|
|
737
|
-
function onFailureCore<
|
|
741
|
+
function onFailureCore<A, E, R, R2>(core: RefSubjectCore<A, E, R, R2>, cause: Cause.Cause<E>) {
|
|
738
742
|
const exit = Exit.failCause(cause)
|
|
739
743
|
|
|
740
744
|
return Effect.suspend(() => {
|
|
@@ -746,7 +750,7 @@ function onFailureCore<R, E, A, R2>(core: RefSubjectCore<R, E, A, R2>, cause: Ca
|
|
|
746
750
|
})
|
|
747
751
|
}
|
|
748
752
|
|
|
749
|
-
function interruptCore<
|
|
753
|
+
function interruptCore<A, E, R, R2>(core: RefSubjectCore<A, E, R, R2>): Effect.Effect<void, never, R> {
|
|
750
754
|
return Effect.fiberIdWith((id) => {
|
|
751
755
|
core.deferredRef.reset()
|
|
752
756
|
|
|
@@ -758,9 +762,9 @@ function interruptCore<R, E, A, R2>(core: RefSubjectCore<R, E, A, R2>): Effect.E
|
|
|
758
762
|
})
|
|
759
763
|
}
|
|
760
764
|
|
|
761
|
-
function deleteCore<
|
|
762
|
-
core: RefSubjectCore<
|
|
763
|
-
): Effect.Effect<
|
|
765
|
+
function deleteCore<A, E, R, R2>(
|
|
766
|
+
core: RefSubjectCore<A, E, R, R2>
|
|
767
|
+
): Effect.Effect<Option.Option<A>, E, Exclude<R, R2>> {
|
|
764
768
|
return Effect.suspend(() => {
|
|
765
769
|
const current = core.deferredRef.current
|
|
766
770
|
core.deferredRef.reset()
|
|
@@ -779,9 +783,9 @@ function deleteCore<R, E, A, R2>(
|
|
|
779
783
|
})
|
|
780
784
|
}
|
|
781
785
|
|
|
782
|
-
function tapEventCore<
|
|
783
|
-
core: RefSubjectCore<
|
|
784
|
-
effect: Effect.Effect<
|
|
786
|
+
function tapEventCore<A, E, R, R2, R3>(
|
|
787
|
+
core: RefSubjectCore<A, E, R, R2>,
|
|
788
|
+
effect: Effect.Effect<A, E, R3>
|
|
785
789
|
) {
|
|
786
790
|
return effect.pipe(
|
|
787
791
|
Effect.exit,
|
|
@@ -790,10 +794,10 @@ function tapEventCore<R, E, A, R2, R3>(
|
|
|
790
794
|
)
|
|
791
795
|
}
|
|
792
796
|
|
|
793
|
-
function sendEvent<
|
|
794
|
-
core: RefSubjectCore<
|
|
795
|
-
exit: Exit.Exit<
|
|
796
|
-
): Effect.Effect<Exclude<R, R2
|
|
797
|
+
function sendEvent<A, E, R, R2>(
|
|
798
|
+
core: RefSubjectCore<A, E, R, R2>,
|
|
799
|
+
exit: Exit.Exit<A, E>
|
|
800
|
+
): Effect.Effect<unknown, never, Exclude<R, R2>> {
|
|
797
801
|
if (Exit.isSuccess(exit)) {
|
|
798
802
|
return Effect.provide(core.subject.onSuccess(exit.value), core.context)
|
|
799
803
|
} else {
|
|
@@ -805,37 +809,37 @@ function sendEvent<R, E, A, R2>(
|
|
|
805
809
|
* @since 1.20.0
|
|
806
810
|
*/
|
|
807
811
|
export const mapEffect: {
|
|
808
|
-
<A,
|
|
809
|
-
f: (a: A) => Effect.Effect<
|
|
812
|
+
<A, B, E2, R2>(
|
|
813
|
+
f: (a: A) => Effect.Effect<B, E2, R2>
|
|
810
814
|
): {
|
|
811
|
-
<
|
|
812
|
-
<
|
|
813
|
-
<R0, E0, R, E,
|
|
814
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
815
|
-
f: (a: A) => Effect.Effect<
|
|
816
|
-
): Computed<
|
|
817
|
-
}
|
|
818
|
-
|
|
819
|
-
<
|
|
820
|
-
ref: RefSubject<
|
|
821
|
-
f: (a: A) => Effect.Effect<
|
|
822
|
-
): Computed<
|
|
823
|
-
|
|
824
|
-
<
|
|
825
|
-
ref: Filtered<
|
|
826
|
-
f: (a: A) => Effect.Effect<
|
|
827
|
-
): Filtered<
|
|
828
|
-
|
|
829
|
-
<R0, E0,
|
|
830
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
831
|
-
f: (a: A) => Effect.Effect<
|
|
832
|
-
): Computed<
|
|
833
|
-
} = dual(2, function mapEffect<R0, E0,
|
|
834
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
835
|
-
f: (a: A) => Effect.Effect<
|
|
815
|
+
<E, R>(ref: RefSubject<A, E, R> | Computed<A, E, R>): Computed<B, E | E2, R | R2>
|
|
816
|
+
<E, R>(ref: Filtered<A, E, R>): Filtered<B, E | E2, R | R2>
|
|
817
|
+
<R0, E0, R, E, E2, R2, C>(
|
|
818
|
+
versioned: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
819
|
+
f: (a: A) => Effect.Effect<C, E2, R2>
|
|
820
|
+
): Computed<C, E0 | E | E2, R0 | R | R2>
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
<A, E, R, B, E2, R2>(
|
|
824
|
+
ref: RefSubject<A, E, R> | Computed<A, E, R>,
|
|
825
|
+
f: (a: A) => Effect.Effect<B, E2, R2>
|
|
826
|
+
): Computed<B, E | E2, R | R2>
|
|
827
|
+
|
|
828
|
+
<A, E, R, B, E2, R2>(
|
|
829
|
+
ref: Filtered<A, E, R>,
|
|
830
|
+
f: (a: A) => Effect.Effect<B, E2, R2>
|
|
831
|
+
): Filtered<B, E | E2, R | R2>
|
|
832
|
+
|
|
833
|
+
<R0, E0, A, E, R, E2, R2, C, E3, R3>(
|
|
834
|
+
versioned: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
835
|
+
f: (a: A) => Effect.Effect<C, E3, R3>
|
|
836
|
+
): Computed<C, E0 | E | E2 | E3, R0 | R2 | R3 | Exclude<R, Scope.Scope>>
|
|
837
|
+
} = dual(2, function mapEffect<R0, E0, A, E, R, E2, R2, C, E3, R3>(
|
|
838
|
+
versioned: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
839
|
+
f: (a: A) => Effect.Effect<C, E3, R3>
|
|
836
840
|
):
|
|
837
|
-
| Computed<R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3
|
|
838
|
-
| Filtered<R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3
|
|
841
|
+
| Computed<C, E0 | E | E2 | E3, R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3>
|
|
842
|
+
| Filtered<C, E0 | E | E2 | E3, R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3>
|
|
839
843
|
{
|
|
840
844
|
return FilteredTypeId in versioned
|
|
841
845
|
? FilteredImpl.make(versioned, (a) => Effect.asSome(f(a)))
|
|
@@ -847,32 +851,32 @@ export const mapEffect: {
|
|
|
847
851
|
*/
|
|
848
852
|
export const map: {
|
|
849
853
|
<A, B>(f: (a: A) => B): {
|
|
850
|
-
<
|
|
851
|
-
<
|
|
854
|
+
<E, R>(ref: RefSubject<A, E, R>): Computed<B, E, R>
|
|
855
|
+
<E, R>(ref: Computed<A, E, R>): Computed<B, E, R>
|
|
852
856
|
|
|
853
|
-
<
|
|
857
|
+
<E, R>(ref: Filtered<A, E, R>): Filtered<B, E, R>
|
|
854
858
|
|
|
855
|
-
<R0, E0, R, E,
|
|
856
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
859
|
+
<R0, E0, R, E, E2, R2>(
|
|
860
|
+
versioned: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
857
861
|
f: (a: A) => B
|
|
858
|
-
): Computed<
|
|
862
|
+
): Computed<B, E0 | E | E2, R0 | R2>
|
|
859
863
|
}
|
|
860
864
|
|
|
861
|
-
<
|
|
862
|
-
<
|
|
865
|
+
<A, E, R, B>(ref: RefSubject<A, E, R> | Computed<A, E, R>, f: (a: A) => B): Computed<B, E, R>
|
|
866
|
+
<A, E, R, B>(filtered: Filtered<A, E, R>, f: (a: A) => B): Filtered<B, E, R>
|
|
863
867
|
|
|
864
|
-
<R0, E0,
|
|
865
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
868
|
+
<R0, E0, A, E, R, B, E2, R2>(
|
|
869
|
+
versioned: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
866
870
|
f: (a: A) => B
|
|
867
871
|
):
|
|
868
|
-
| Computed<R0 | R2 | Exclude<R, Scope.Scope
|
|
869
|
-
| Filtered<R0 | R2 | Exclude<R, Scope.Scope
|
|
870
|
-
} = dual(2, function map<R0, E0,
|
|
871
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
872
|
+
| Computed<B, E0 | E | E2, R0 | R2 | Exclude<R, Scope.Scope>>
|
|
873
|
+
| Filtered<B, E0 | E | E2, R0 | R2 | Exclude<R, Scope.Scope>>
|
|
874
|
+
} = dual(2, function map<R0, E0, A, E, R, B, E2, R2>(
|
|
875
|
+
versioned: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
872
876
|
f: (a: A) => B
|
|
873
877
|
):
|
|
874
|
-
| Computed<R0 | Exclude<R, Scope.Scope> | R2
|
|
875
|
-
| Filtered<R0 | Exclude<R, Scope.Scope> | R2
|
|
878
|
+
| Computed<B, E0 | E | E2, R0 | Exclude<R, Scope.Scope> | R2>
|
|
879
|
+
| Filtered<B, E0 | E | E2, R0 | Exclude<R, Scope.Scope> | R2>
|
|
876
880
|
{
|
|
877
881
|
return mapEffect(versioned, (a) => Effect.succeed(f(a)))
|
|
878
882
|
})
|
|
@@ -881,29 +885,29 @@ export const map: {
|
|
|
881
885
|
* @since 1.20.0
|
|
882
886
|
*/
|
|
883
887
|
export const filterMapEffect: {
|
|
884
|
-
<A,
|
|
885
|
-
f: (a: A) => Effect.Effect<
|
|
888
|
+
<A, B, E2, R2>(
|
|
889
|
+
f: (a: A) => Effect.Effect<Option.Option<B>, E2, R2>
|
|
886
890
|
): {
|
|
887
|
-
<
|
|
888
|
-
<
|
|
889
|
-
<R0, E0,
|
|
890
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
891
|
-
f: (a: A) => Effect.Effect<
|
|
892
|
-
): Filtered<
|
|
893
|
-
}
|
|
894
|
-
|
|
895
|
-
<
|
|
896
|
-
ref: RefSubject<
|
|
897
|
-
f: (a: A) => Effect.Effect<
|
|
898
|
-
): Filtered<
|
|
899
|
-
<R0, E0,
|
|
900
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
901
|
-
f: (a: A) => Effect.Effect<
|
|
902
|
-
): Filtered<
|
|
903
|
-
} = dual(2, function filterMapEffect<R0, E0,
|
|
904
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
905
|
-
f: (a: A) => Effect.Effect<
|
|
906
|
-
): Filtered<R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3
|
|
891
|
+
<E, R>(ref: RefSubject<A, E, R> | Computed<A, E, R>): Filtered<B, E | E2, R | R2>
|
|
892
|
+
<E, R>(ref: Filtered<A, E, R>): Filtered<B, E | E2, R | R2>
|
|
893
|
+
<R0, E0, B, E, R, E2, R2>(
|
|
894
|
+
versioned: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
895
|
+
f: (a: A) => Effect.Effect<Option.Option<B>, E2, R2>
|
|
896
|
+
): Filtered<B, E0 | E | E2, R0 | R2>
|
|
897
|
+
}
|
|
898
|
+
|
|
899
|
+
<A, E, R, B, E2, R2>(
|
|
900
|
+
ref: RefSubject<A, E, R> | Computed<A, E, R> | Filtered<A, E, R>,
|
|
901
|
+
f: (a: A) => Effect.Effect<Option.Option<B>, E2, R2>
|
|
902
|
+
): Filtered<B, E | E2, R | R2>
|
|
903
|
+
<R0, E0, A, E, R, B, E2, R2, R3, E3>(
|
|
904
|
+
versioned: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
905
|
+
f: (a: A) => Effect.Effect<Option.Option<B>, E3, R3>
|
|
906
|
+
): Filtered<B, E0 | E | E2 | E3, R0 | R2 | R3 | Exclude<R, Scope.Scope>>
|
|
907
|
+
} = dual(2, function filterMapEffect<R0, E0, A, E, R, B, E2, R2, R3, E3>(
|
|
908
|
+
versioned: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
909
|
+
f: (a: A) => Effect.Effect<Option.Option<B>, E3, R3>
|
|
910
|
+
): Filtered<B, E0 | E | E2 | E3, R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3> {
|
|
907
911
|
return FilteredImpl.make(versioned, f)
|
|
908
912
|
})
|
|
909
913
|
|
|
@@ -912,26 +916,26 @@ export const filterMapEffect: {
|
|
|
912
916
|
*/
|
|
913
917
|
export const filterMap: {
|
|
914
918
|
<A, B>(f: (a: A) => Option.Option<B>): {
|
|
915
|
-
<
|
|
916
|
-
<R0, E0,
|
|
917
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
919
|
+
<E, R>(ref: RefSubject<A, E, R> | Computed<A, E, R> | Filtered<A, E, R>): Filtered<B, E, R>
|
|
920
|
+
<R0, E0, B, E, R, E2, R2>(
|
|
921
|
+
versioned: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
918
922
|
f: (a: A) => Option.Option<B>
|
|
919
|
-
): Filtered<
|
|
923
|
+
): Filtered<B, E0 | E | E2, R0 | R2>
|
|
920
924
|
}
|
|
921
925
|
|
|
922
|
-
<R0, E0,
|
|
923
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
926
|
+
<R0, E0, A, E, R, B, E2, R2>(
|
|
927
|
+
versioned: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
924
928
|
f: (a: A) => Option.Option<B>
|
|
925
|
-
): Filtered<R0 | R2 | Exclude<R, Scope.Scope
|
|
929
|
+
): Filtered<B, E0 | E | E2, R0 | R2 | Exclude<R, Scope.Scope>>
|
|
926
930
|
|
|
927
|
-
<
|
|
928
|
-
ref: RefSubject<
|
|
931
|
+
<A, E, R, B>(
|
|
932
|
+
ref: RefSubject<A, E, R> | Computed<A, E, R> | Filtered<A, E, R>,
|
|
929
933
|
f: (a: A) => Option.Option<B>
|
|
930
|
-
): Filtered<
|
|
931
|
-
} = dual(2, function filterMap<R0, E0,
|
|
932
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
934
|
+
): Filtered<B, E, R>
|
|
935
|
+
} = dual(2, function filterMap<R0, E0, A, E, R, B, E2, R2>(
|
|
936
|
+
versioned: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
933
937
|
f: (a: A) => Option.Option<B>
|
|
934
|
-
): Filtered<R0 | Exclude<R, Scope.Scope> | R2 | R2
|
|
938
|
+
): Filtered<B, E0 | E | E2, R0 | Exclude<R, Scope.Scope> | R2 | R2> {
|
|
935
939
|
return FilteredImpl.make(versioned, (a) => Effect.succeed(f(a)))
|
|
936
940
|
})
|
|
937
941
|
|
|
@@ -939,37 +943,42 @@ export const filterMap: {
|
|
|
939
943
|
* @since 1.20.0
|
|
940
944
|
*/
|
|
941
945
|
export const compact: {
|
|
942
|
-
<
|
|
943
|
-
<
|
|
946
|
+
<A, E, R>(ref: Computed<Option.Option<A>, E, R>): Filtered<A>
|
|
947
|
+
<A, E, R>(ref: Filtered<Option.Option<A>, E, R>): Filtered<A>
|
|
944
948
|
|
|
945
|
-
<R0, E0,
|
|
946
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
949
|
+
<R0, E0, A, E, R, E2, R2>(
|
|
950
|
+
versioned: Versioned.Versioned<R0, E0, Option.Option<A>, E, R, Option.Option<A>, E2, R2>
|
|
947
951
|
): Filtered<
|
|
948
|
-
|
|
952
|
+
A,
|
|
949
953
|
E0 | E | Exclude<E, Cause.NoSuchElementException> | Exclude<E2, Cause.NoSuchElementException>,
|
|
950
|
-
|
|
954
|
+
R0 | R2 | Exclude<R, Scope.Scope>
|
|
951
955
|
>
|
|
952
|
-
} = <R0, E0,
|
|
953
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
954
|
-
): Filtered<
|
|
955
|
-
|
|
956
|
+
} = function compact<R0, E0, A, E, R, E2, R2>(
|
|
957
|
+
versioned: Versioned.Versioned<R0, E0, Option.Option<A>, E, R, Option.Option<A>, E2, R2>
|
|
958
|
+
): Filtered<
|
|
959
|
+
A,
|
|
960
|
+
E0 | E | Exclude<E, Cause.NoSuchElementException> | Exclude<E2, Cause.NoSuchElementException>,
|
|
961
|
+
R0 | R2 | Exclude<R, Scope.Scope>
|
|
962
|
+
> {
|
|
963
|
+
return FilteredImpl.make(versioned, Effect.succeed)
|
|
964
|
+
} as any
|
|
956
965
|
|
|
957
966
|
/**
|
|
958
967
|
* @since 1.20.0
|
|
959
968
|
*/
|
|
960
969
|
export const filterEffect: {
|
|
961
|
-
<
|
|
962
|
-
ref: RefSubject<
|
|
963
|
-
f: (a: A) => Effect.Effect<
|
|
964
|
-
): Filtered<
|
|
965
|
-
<R0, E0,
|
|
966
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
967
|
-
f: (a: A) => Effect.Effect<
|
|
968
|
-
): Filtered<
|
|
969
|
-
} = dual(2, function filterEffect<R0, E0,
|
|
970
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
971
|
-
f: (a: A) => Effect.Effect<
|
|
972
|
-
): Filtered<R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3
|
|
970
|
+
<A, E, R, E2, R2>(
|
|
971
|
+
ref: RefSubject<A, E, R> | Computed<A, E, R> | Filtered<A, E, R>,
|
|
972
|
+
f: (a: A) => Effect.Effect<boolean, E2, R2>
|
|
973
|
+
): Filtered<A, E | E2, R | R2>
|
|
974
|
+
<R0, E0, A, E, R, E2, R2, R3, E3>(
|
|
975
|
+
versioned: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
976
|
+
f: (a: A) => Effect.Effect<boolean, E3, R3>
|
|
977
|
+
): Filtered<A, E0 | E | E2 | E3, R0 | R2 | R3 | Exclude<R, Scope.Scope>>
|
|
978
|
+
} = dual(2, function filterEffect<R0, E0, A, E, R, E2, R2, R3, E3>(
|
|
979
|
+
versioned: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
980
|
+
f: (a: A) => Effect.Effect<boolean, E3, R3>
|
|
981
|
+
): Filtered<A, E0 | E | E2 | E3, R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3> {
|
|
973
982
|
return FilteredImpl.make(versioned, (a) => Effect.map(f(a), (b) => b ? Option.some(a) : Option.none()))
|
|
974
983
|
})
|
|
975
984
|
|
|
@@ -978,46 +987,46 @@ export const filterEffect: {
|
|
|
978
987
|
*/
|
|
979
988
|
export const filter: {
|
|
980
989
|
<A>(f: (a: A) => boolean): {
|
|
981
|
-
<
|
|
982
|
-
<R0, E0, R, E,
|
|
983
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
990
|
+
<E, R>(ref: RefSubject<A, E, R> | Computed<A, E, R> | Filtered<A, E, R>): Filtered<A, E, R>
|
|
991
|
+
<R0, E0, R, E, E2, R2>(
|
|
992
|
+
versioned: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
984
993
|
f: (a: A) => boolean
|
|
985
|
-
): Filtered<
|
|
994
|
+
): Filtered<A, E0 | E | E2, R0 | R2>
|
|
986
995
|
}
|
|
987
996
|
|
|
988
|
-
<
|
|
989
|
-
<R0, E0,
|
|
990
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
997
|
+
<A, E, R>(ref: RefSubject<A, E, R> | Computed<A, E, R> | Filtered<A, E, R>, f: (a: A) => boolean): Filtered<A, E, R>
|
|
998
|
+
<R0, E0, A, E, R, E2, R2, R3, E3>(
|
|
999
|
+
versioned: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
991
1000
|
f: (a: A) => boolean
|
|
992
|
-
): Filtered<
|
|
993
|
-
} = dual(2, function filter<R0, E0,
|
|
994
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
1001
|
+
): Filtered<A, E0 | E | E2 | E3, R0 | R2 | R3 | Exclude<R, Scope.Scope>>
|
|
1002
|
+
} = dual(2, function filter<R0, E0, A, E, R, E2, R2, R3, E3>(
|
|
1003
|
+
versioned: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
995
1004
|
f: (a: A) => boolean
|
|
996
|
-
): Filtered<R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3
|
|
1005
|
+
): Filtered<A, E0 | E | E2 | E3, R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3> {
|
|
997
1006
|
return FilteredImpl.make(versioned, (a) => Effect.succeed(f(a) ? Option.some(a) : Option.none()))
|
|
998
1007
|
})
|
|
999
1008
|
|
|
1000
|
-
class ComputedImpl<R0, E0,
|
|
1009
|
+
class ComputedImpl<R0, E0, A, E, R, E2, R2, C, E3, R3> extends Versioned.VersionedTransform<
|
|
1001
1010
|
R0,
|
|
1002
1011
|
E0,
|
|
1003
|
-
|
|
1012
|
+
A,
|
|
1004
1013
|
E,
|
|
1014
|
+
R,
|
|
1005
1015
|
A,
|
|
1006
|
-
R2,
|
|
1007
1016
|
E2,
|
|
1008
|
-
|
|
1009
|
-
|
|
1017
|
+
R2,
|
|
1018
|
+
C,
|
|
1010
1019
|
E0 | E | E2 | E3,
|
|
1020
|
+
R0 | Exclude<R, Scope.Scope> | R2 | R3 | Scope.Scope,
|
|
1011
1021
|
C,
|
|
1012
|
-
R0 | Exclude<R, Scope.Scope> | R2 | R3,
|
|
1013
1022
|
E0 | E | E2 | E3,
|
|
1014
|
-
|
|
1015
|
-
> implements Computed<R0 | Exclude<R, Scope.Scope> | R2 | R3
|
|
1023
|
+
R0 | Exclude<R, Scope.Scope> | R2 | R3
|
|
1024
|
+
> implements Computed<C, E0 | E | E2 | E3, R0 | Exclude<R, Scope.Scope> | R2 | R3> {
|
|
1016
1025
|
readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
|
|
1017
1026
|
|
|
1018
1027
|
constructor(
|
|
1019
|
-
readonly input: Versioned.Versioned<R0, E0,
|
|
1020
|
-
readonly f: (a: A) => Effect.Effect<
|
|
1028
|
+
readonly input: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
1029
|
+
readonly f: (a: A) => Effect.Effect<C, E3, R3>
|
|
1021
1030
|
) {
|
|
1022
1031
|
super(
|
|
1023
1032
|
input,
|
|
@@ -1026,35 +1035,35 @@ class ComputedImpl<R0, E0, R, E, A, R2, E2, R3, E3, C> extends Versioned.Version
|
|
|
1026
1035
|
)
|
|
1027
1036
|
}
|
|
1028
1037
|
|
|
1029
|
-
static make<R0, E0,
|
|
1030
|
-
input: Versioned.Versioned<R0, E0,
|
|
1031
|
-
f: (a: A) => Effect.Effect<
|
|
1032
|
-
): Computed<R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3
|
|
1038
|
+
static make<R0, E0, A, E, R, E2, R2, C, E3, R3>(
|
|
1039
|
+
input: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
1040
|
+
f: (a: A) => Effect.Effect<C, E3, R3>
|
|
1041
|
+
): Computed<C, E0 | E | E2 | E3, R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3> {
|
|
1033
1042
|
return new ComputedImpl(input, f)
|
|
1034
1043
|
}
|
|
1035
1044
|
}
|
|
1036
1045
|
|
|
1037
|
-
class FilteredImpl<R0, E0,
|
|
1046
|
+
class FilteredImpl<R0, E0, A, E, R, E2, R2, C, E3, R3> extends Versioned.VersionedTransform<
|
|
1038
1047
|
R0,
|
|
1039
1048
|
E0,
|
|
1040
|
-
|
|
1049
|
+
A,
|
|
1041
1050
|
E,
|
|
1051
|
+
R,
|
|
1042
1052
|
A,
|
|
1043
|
-
R2,
|
|
1044
1053
|
E2,
|
|
1045
|
-
|
|
1046
|
-
|
|
1054
|
+
R2,
|
|
1055
|
+
C,
|
|
1047
1056
|
E0 | E | E2 | E3,
|
|
1057
|
+
Exclude<R, Scope.Scope> | R2 | R3 | Scope.Scope,
|
|
1048
1058
|
C,
|
|
1049
|
-
R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3,
|
|
1050
1059
|
E0 | E | E2 | E3 | Cause.NoSuchElementException,
|
|
1051
|
-
|
|
1052
|
-
> implements Filtered<R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3
|
|
1060
|
+
R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3
|
|
1061
|
+
> implements Filtered<C, E0 | E | E2 | E3, R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3> {
|
|
1053
1062
|
readonly [FilteredTypeId]: FilteredTypeId = FilteredTypeId
|
|
1054
1063
|
|
|
1055
1064
|
constructor(
|
|
1056
|
-
readonly input: Versioned.Versioned<R0, E0,
|
|
1057
|
-
readonly f: (a: A) => Effect.Effect<
|
|
1065
|
+
readonly input: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
1066
|
+
readonly f: (a: A) => Effect.Effect<Option.Option<C>, E3, R3>
|
|
1058
1067
|
) {
|
|
1059
1068
|
super(
|
|
1060
1069
|
input,
|
|
@@ -1063,18 +1072,18 @@ class FilteredImpl<R0, E0, R, E, A, R2, E2, R3, E3, C> extends Versioned.Version
|
|
|
1063
1072
|
)
|
|
1064
1073
|
}
|
|
1065
1074
|
|
|
1066
|
-
static make<R0, E0,
|
|
1067
|
-
input: Versioned.Versioned<R0, E0,
|
|
1068
|
-
f: (a: A) => Effect.Effect<
|
|
1075
|
+
static make<R0, E0, A, E, R, E2, R2, C, E3, R3>(
|
|
1076
|
+
input: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
1077
|
+
f: (a: A) => Effect.Effect<Option.Option<C>, E3, R3>
|
|
1069
1078
|
): Filtered<
|
|
1070
|
-
|
|
1079
|
+
C,
|
|
1071
1080
|
E0 | E | Exclude<E2, Cause.NoSuchElementException> | E3,
|
|
1072
|
-
|
|
1081
|
+
R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | R3
|
|
1073
1082
|
> {
|
|
1074
1083
|
return new FilteredImpl(input, f) as any
|
|
1075
1084
|
}
|
|
1076
1085
|
|
|
1077
|
-
asComputed(): Computed<
|
|
1086
|
+
asComputed(): Computed<Option.Option<C>, E0 | E | E2 | E3, R0 | R2 | R3 | Exclude<R, Scope.Scope>> {
|
|
1078
1087
|
return ComputedImpl.make(this.input, this.f)
|
|
1079
1088
|
}
|
|
1080
1089
|
}
|
|
@@ -1084,27 +1093,27 @@ class FilteredImpl<R0, E0, R, E, A, R2, E2, R3, E3, C> extends Versioned.Version
|
|
|
1084
1093
|
*/
|
|
1085
1094
|
export const skipRepeatsWith: {
|
|
1086
1095
|
<A>(eq: Equivalence.Equivalence<A>): {
|
|
1087
|
-
<
|
|
1088
|
-
<
|
|
1096
|
+
<E, R>(ref: RefSubject<A, E, R> | Computed<A, E, R>): Computed<A, E, R>
|
|
1097
|
+
<E, R>(ref: Filtered<A, E, R>): Filtered<A, E, R>
|
|
1089
1098
|
}
|
|
1090
1099
|
|
|
1091
|
-
<
|
|
1092
|
-
ref: RefSubject<
|
|
1100
|
+
<A, E, R>(
|
|
1101
|
+
ref: RefSubject<A, E, R> | Computed<A, E, R>,
|
|
1093
1102
|
eq: Equivalence.Equivalence<A>
|
|
1094
|
-
): Computed<
|
|
1095
|
-
<
|
|
1096
|
-
ref: Filtered<
|
|
1103
|
+
): Computed<A, E, R>
|
|
1104
|
+
<A, E, R>(
|
|
1105
|
+
ref: Filtered<A, E, R>,
|
|
1097
1106
|
eq: Equivalence.Equivalence<A>
|
|
1098
|
-
): Filtered<
|
|
1107
|
+
): Filtered<A, E, R>
|
|
1099
1108
|
|
|
1100
|
-
<
|
|
1101
|
-
ref: RefSubject<
|
|
1109
|
+
<A, E, R>(
|
|
1110
|
+
ref: RefSubject<A, E, R> | Computed<A, E, R> | Filtered<A, E, R>,
|
|
1102
1111
|
eq: Equivalence.Equivalence<A>
|
|
1103
|
-
): Computed<
|
|
1104
|
-
} = dual(2, function skipRepeatsWith<
|
|
1105
|
-
ref: RefSubject<
|
|
1112
|
+
): Computed<A, E, R> | Filtered<A, E, R>
|
|
1113
|
+
} = dual(2, function skipRepeatsWith<A, E, R>(
|
|
1114
|
+
ref: RefSubject<A, E, R> | Computed<A, E, R> | Filtered<A, E, R>,
|
|
1106
1115
|
eq: Equivalence.Equivalence<A>
|
|
1107
|
-
): Computed<
|
|
1116
|
+
): Computed<A, E, R> | Filtered<A, E, R> {
|
|
1108
1117
|
const versioned = Versioned.transform(ref, (fx) => core.skipRepeatsWith(fx, eq), identity)
|
|
1109
1118
|
|
|
1110
1119
|
if (FilteredTypeId in ref) {
|
|
@@ -1117,58 +1126,58 @@ export const skipRepeatsWith: {
|
|
|
1117
1126
|
/**
|
|
1118
1127
|
* @since 1.20.0
|
|
1119
1128
|
*/
|
|
1120
|
-
export function skipRepeats<
|
|
1121
|
-
ref: RefSubject<
|
|
1122
|
-
): Computed<
|
|
1129
|
+
export function skipRepeats<A, E, R>(
|
|
1130
|
+
ref: RefSubject<A, E, R> | Computed<A, E, R>
|
|
1131
|
+
): Computed<A, E, R>
|
|
1123
1132
|
|
|
1124
|
-
export function skipRepeats<
|
|
1125
|
-
ref: Filtered<
|
|
1126
|
-
): Filtered<
|
|
1133
|
+
export function skipRepeats<A, E, R>(
|
|
1134
|
+
ref: Filtered<A, E, R>
|
|
1135
|
+
): Filtered<A, E, R>
|
|
1127
1136
|
|
|
1128
|
-
export function skipRepeats<
|
|
1129
|
-
ref: RefSubject<
|
|
1130
|
-
): Computed<
|
|
1137
|
+
export function skipRepeats<A, E, R>(
|
|
1138
|
+
ref: RefSubject<A, E, R> | Computed<A, E, R> | Filtered<A, E, R>
|
|
1139
|
+
): Computed<A, E, R> | Filtered<A, E, R>
|
|
1131
1140
|
|
|
1132
|
-
export function skipRepeats<
|
|
1133
|
-
ref: RefSubject<
|
|
1134
|
-
): Computed<
|
|
1141
|
+
export function skipRepeats<A, E, R>(
|
|
1142
|
+
ref: RefSubject<A, E, R> | Computed<A, E, R> | Filtered<A, E, R>
|
|
1143
|
+
): Computed<A, E, R> | Filtered<A, E, R> {
|
|
1135
1144
|
return skipRepeatsWith(ref, Equal.equals)
|
|
1136
1145
|
}
|
|
1137
1146
|
|
|
1138
1147
|
/**
|
|
1139
1148
|
* @since 1.20.0
|
|
1140
1149
|
*/
|
|
1141
|
-
export function transform<
|
|
1142
|
-
ref: RefSubject<
|
|
1150
|
+
export function transform<A, E, R, B>(
|
|
1151
|
+
ref: RefSubject<A, E, R>,
|
|
1143
1152
|
from: (a: A) => B,
|
|
1144
1153
|
to: (b: B) => A
|
|
1145
|
-
): RefSubject<
|
|
1154
|
+
): RefSubject<B, E, R> {
|
|
1146
1155
|
return new RefSubjectTransform(ref, from, to)
|
|
1147
1156
|
}
|
|
1148
1157
|
|
|
1149
1158
|
/**
|
|
1150
1159
|
* @since 1.20.0
|
|
1151
1160
|
*/
|
|
1152
|
-
export function transformOrFail<R, E,
|
|
1153
|
-
ref: RefSubject<
|
|
1154
|
-
from: (a: A) => Effect.Effect<
|
|
1155
|
-
to: (b: B) => Effect.Effect<
|
|
1156
|
-
): RefSubject<
|
|
1161
|
+
export function transformOrFail<R, E, A, E2, R2, R3, E3, B>(
|
|
1162
|
+
ref: RefSubject<A, E, R>,
|
|
1163
|
+
from: (a: A) => Effect.Effect<B, E2, R2>,
|
|
1164
|
+
to: (b: B) => Effect.Effect<A, E3, R3>
|
|
1165
|
+
): RefSubject<B, E | E2 | E3, R | R2 | R3> {
|
|
1157
1166
|
return new RefSubjectTransformEffect(ref, from, to)
|
|
1158
1167
|
}
|
|
1159
1168
|
|
|
1160
|
-
class RefSubjectTransform<
|
|
1161
|
-
implements RefSubject<
|
|
1169
|
+
class RefSubjectTransform<A, E, R, B> extends FxEffectBase<B, E, R | Scope.Scope, B, E, R>
|
|
1170
|
+
implements RefSubject<B, E, R>
|
|
1162
1171
|
{
|
|
1163
1172
|
readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
|
|
1164
1173
|
readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
|
|
1165
1174
|
|
|
1166
|
-
readonly version: Effect.Effect<
|
|
1167
|
-
readonly interrupt: Effect.Effect<
|
|
1168
|
-
readonly subscriberCount: Effect.Effect<
|
|
1175
|
+
readonly version: Effect.Effect<number, E, R>
|
|
1176
|
+
readonly interrupt: Effect.Effect<void, never, R>
|
|
1177
|
+
readonly subscriberCount: Effect.Effect<number, never, R>
|
|
1169
1178
|
|
|
1170
1179
|
constructor(
|
|
1171
|
-
readonly ref: RefSubject<
|
|
1180
|
+
readonly ref: RefSubject<A, E, R>,
|
|
1172
1181
|
readonly from: (a: A) => B,
|
|
1173
1182
|
readonly to: (b: B) => A
|
|
1174
1183
|
) {
|
|
@@ -1179,12 +1188,12 @@ class RefSubjectTransform<R, E, A, B> extends FxEffectBase<R | Scope.Scope, E, B
|
|
|
1179
1188
|
this.subscriberCount = ref.subscriberCount
|
|
1180
1189
|
}
|
|
1181
1190
|
|
|
1182
|
-
run<R2 = never>(sink: Sink.Sink<
|
|
1191
|
+
run<R2 = never>(sink: Sink.Sink<B, E, R2>): Effect.Effect<unknown, never, R | Scope.Scope | R2> {
|
|
1183
1192
|
return this.ref.run(Sink.map(sink, this.from))
|
|
1184
1193
|
}
|
|
1185
1194
|
|
|
1186
|
-
runUpdates<
|
|
1187
|
-
run: (ref: GetSetDelete<
|
|
1195
|
+
runUpdates<E2, R2, C>(
|
|
1196
|
+
run: (ref: GetSetDelete<B, E, R>) => Effect.Effect<C, E2, R2>
|
|
1188
1197
|
) {
|
|
1189
1198
|
return this.ref.runUpdates((ref) =>
|
|
1190
1199
|
run({
|
|
@@ -1195,35 +1204,35 @@ class RefSubjectTransform<R, E, A, B> extends FxEffectBase<R | Scope.Scope, E, B
|
|
|
1195
1204
|
)
|
|
1196
1205
|
}
|
|
1197
1206
|
|
|
1198
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<
|
|
1207
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, R> {
|
|
1199
1208
|
return this.ref.onFailure(cause)
|
|
1200
1209
|
}
|
|
1201
1210
|
|
|
1202
|
-
onSuccess(value: B): Effect.Effect<
|
|
1211
|
+
onSuccess(value: B): Effect.Effect<unknown, never, R> {
|
|
1203
1212
|
return this.ref.onSuccess(this.to(value))
|
|
1204
1213
|
}
|
|
1205
1214
|
|
|
1206
|
-
toEffect(): Effect.Effect<
|
|
1215
|
+
toEffect(): Effect.Effect<B, E, R> {
|
|
1207
1216
|
return Effect.map(this.ref, this.from)
|
|
1208
1217
|
}
|
|
1209
1218
|
}
|
|
1210
1219
|
|
|
1211
|
-
class RefSubjectTransformEffect<
|
|
1212
|
-
extends FxEffectBase<R | R2 | R3 | Scope.Scope, E | E2
|
|
1213
|
-
implements RefSubject<
|
|
1220
|
+
class RefSubjectTransformEffect<A, E, R, B, E2, R2, R3, E3>
|
|
1221
|
+
extends FxEffectBase<B, E | E2 | E3, R | R2 | R3 | Scope.Scope, B, E | E2, R | R2 | R3>
|
|
1222
|
+
implements RefSubject<B, E | E2 | E3, R | R2 | R3>
|
|
1214
1223
|
{
|
|
1215
1224
|
readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
|
|
1216
1225
|
readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
|
|
1217
1226
|
|
|
1218
|
-
readonly version: Effect.Effect<
|
|
1219
|
-
readonly interrupt: Effect.Effect<
|
|
1220
|
-
readonly subscriberCount: Effect.Effect<
|
|
1221
|
-
readonly subject: Subject.Subject<
|
|
1227
|
+
readonly version: Effect.Effect<number, E, R>
|
|
1228
|
+
readonly interrupt: Effect.Effect<void, never, R>
|
|
1229
|
+
readonly subscriberCount: Effect.Effect<number, never, R>
|
|
1230
|
+
readonly subject: Subject.Subject<B, E | E2 | E3>
|
|
1222
1231
|
|
|
1223
1232
|
constructor(
|
|
1224
|
-
readonly ref: RefSubject<
|
|
1225
|
-
readonly from: (a: A) => Effect.Effect<
|
|
1226
|
-
readonly to: (b: B) => Effect.Effect<
|
|
1233
|
+
readonly ref: RefSubject<A, E, R>,
|
|
1234
|
+
readonly from: (a: A) => Effect.Effect<B, E2, R2>,
|
|
1235
|
+
readonly to: (b: B) => Effect.Effect<A, E3, R3>
|
|
1227
1236
|
) {
|
|
1228
1237
|
super()
|
|
1229
1238
|
|
|
@@ -1233,12 +1242,12 @@ class RefSubjectTransformEffect<R, E, A, R2, E2, B, R3, E3>
|
|
|
1233
1242
|
this.subject = Subject.unsafeMake()
|
|
1234
1243
|
}
|
|
1235
1244
|
|
|
1236
|
-
run<R4 = never>(sink: Sink.Sink<
|
|
1245
|
+
run<R4 = never>(sink: Sink.Sink<B, E | E2 | E3, R4>): Effect.Effect<unknown, never, R | R2 | R3 | Scope.Scope | R4> {
|
|
1237
1246
|
return core.merge(core.mapEffect(this.ref, this.from), this.subject).run(sink)
|
|
1238
1247
|
}
|
|
1239
1248
|
|
|
1240
1249
|
runUpdates<R4, E4, C>(
|
|
1241
|
-
run: (ref: GetSetDelete<
|
|
1250
|
+
run: (ref: GetSetDelete<B, E | E2 | E3, R | R2 | R3>) => Effect.Effect<C, E4, R4>
|
|
1242
1251
|
) {
|
|
1243
1252
|
return this.ref.runUpdates((ref) =>
|
|
1244
1253
|
run({
|
|
@@ -1259,18 +1268,18 @@ class RefSubjectTransformEffect<R, E, A, R2, E2, B, R3, E3>
|
|
|
1259
1268
|
)
|
|
1260
1269
|
}
|
|
1261
1270
|
|
|
1262
|
-
onFailure(cause: Cause.Cause<E | E2 | E3>): Effect.Effect<
|
|
1271
|
+
onFailure(cause: Cause.Cause<E | E2 | E3>): Effect.Effect<unknown, never, R> {
|
|
1263
1272
|
return this.subject.onFailure(cause)
|
|
1264
1273
|
}
|
|
1265
1274
|
|
|
1266
|
-
onSuccess(value: B): Effect.Effect<R | R3
|
|
1275
|
+
onSuccess(value: B): Effect.Effect<unknown, never, R | R3> {
|
|
1267
1276
|
return Effect.matchCauseEffect(this.to(value), {
|
|
1268
1277
|
onFailure: (cause) => this.subject.onFailure(cause),
|
|
1269
1278
|
onSuccess: (a) => this.ref.onSuccess(a)
|
|
1270
1279
|
})
|
|
1271
1280
|
}
|
|
1272
1281
|
|
|
1273
|
-
toEffect(): Effect.Effect<
|
|
1282
|
+
toEffect(): Effect.Effect<B, E | E2, R | R2> {
|
|
1274
1283
|
return Effect.flatMap(this.ref, this.from)
|
|
1275
1284
|
}
|
|
1276
1285
|
}
|
|
@@ -1325,9 +1334,9 @@ function getRefKind<
|
|
|
1325
1334
|
export type TupleFrom<
|
|
1326
1335
|
Refs extends ReadonlyArray<RefSubject<any, any, any> | Computed<any, any, any> | Filtered<any, any, any>>
|
|
1327
1336
|
> = {
|
|
1328
|
-
"c": [ComputedTupleFrom<Refs>] extends [Computed<infer
|
|
1329
|
-
"f": [FilteredTupleFrom<Refs>] extends [Filtered<infer
|
|
1330
|
-
"r": [RefSubjectTupleFrom<Refs>] extends [RefSubject<infer
|
|
1337
|
+
"c": [ComputedTupleFrom<Refs>] extends [Computed<infer A, infer E, infer R>] ? Computed<A, E, R> : never
|
|
1338
|
+
"f": [FilteredTupleFrom<Refs>] extends [Filtered<infer A, infer E, infer R>] ? Filtered<A, E, R> : never
|
|
1339
|
+
"r": [RefSubjectTupleFrom<Refs>] extends [RefSubject<infer A, infer E, infer R>] ? RefSubject<A, E, R> : never
|
|
1331
1340
|
}[GetTupleKind<Refs>]
|
|
1332
1341
|
|
|
1333
1342
|
type Ref = RefSubject.Any | Computed.Any | Filtered.Any
|
|
@@ -1356,31 +1365,31 @@ type MergeKind<A extends RefKind, B extends RefKind> = A extends "f" ? A
|
|
|
1356
1365
|
type FilteredTupleFrom<
|
|
1357
1366
|
Refs extends ReadonlyArray<RefSubject<any, any, any> | Computed<any, any, any> | Filtered<any, any, any>>
|
|
1358
1367
|
> = Filtered<
|
|
1359
|
-
Effect.Effect.Context<Refs[number]>,
|
|
1360
|
-
Fx.Error<Refs[number]>,
|
|
1361
1368
|
{
|
|
1362
1369
|
readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>
|
|
1363
|
-
}
|
|
1370
|
+
},
|
|
1371
|
+
Fx.Error<Refs[number]>,
|
|
1372
|
+
Effect.Effect.Context<Refs[number]>
|
|
1364
1373
|
>
|
|
1365
1374
|
|
|
1366
1375
|
type ComputedTupleFrom<
|
|
1367
1376
|
Refs extends ReadonlyArray<RefSubject<any, any, any> | Computed<any, any, any> | Filtered<any, any, any>>
|
|
1368
1377
|
> = Computed<
|
|
1369
|
-
Effect.Effect.Context<Refs[number]>,
|
|
1370
|
-
Effect.Effect.Error<Refs[number]>,
|
|
1371
1378
|
{
|
|
1372
1379
|
readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>
|
|
1373
|
-
}
|
|
1380
|
+
},
|
|
1381
|
+
Effect.Effect.Error<Refs[number]>,
|
|
1382
|
+
Effect.Effect.Context<Refs[number]>
|
|
1374
1383
|
>
|
|
1375
1384
|
|
|
1376
1385
|
type RefSubjectTupleFrom<
|
|
1377
1386
|
Refs extends ReadonlyArray<RefSubject<any, any, any> | Computed<any, any, any> | Filtered<any, any, any>>
|
|
1378
1387
|
> = RefSubject<
|
|
1379
|
-
Effect.Effect.Context<Refs[number]>,
|
|
1380
|
-
Effect.Effect.Error<Refs[number]>,
|
|
1381
1388
|
{
|
|
1382
1389
|
readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>
|
|
1383
|
-
}
|
|
1390
|
+
},
|
|
1391
|
+
Effect.Effect.Error<Refs[number]>,
|
|
1392
|
+
Effect.Effect.Context<Refs[number]>
|
|
1384
1393
|
>
|
|
1385
1394
|
|
|
1386
1395
|
function makeTupleRef<
|
|
@@ -1392,39 +1401,39 @@ function makeTupleRef<
|
|
|
1392
1401
|
class RefSubjectTuple<
|
|
1393
1402
|
const Refs extends ReadonlyArray<RefSubject<any, any, any>>
|
|
1394
1403
|
> extends FxEffectBase<
|
|
1395
|
-
Effect.Effect.Context<Refs[number]>,
|
|
1396
|
-
Effect.Effect.Error<Refs[number]>,
|
|
1397
1404
|
{
|
|
1398
1405
|
readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>
|
|
1399
1406
|
},
|
|
1400
|
-
Effect.Effect.Context<Refs[number]>,
|
|
1401
1407
|
Effect.Effect.Error<Refs[number]>,
|
|
1408
|
+
Effect.Effect.Context<Refs[number]>,
|
|
1402
1409
|
{
|
|
1403
1410
|
readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>
|
|
1404
|
-
}
|
|
1411
|
+
},
|
|
1412
|
+
Effect.Effect.Error<Refs[number]>,
|
|
1413
|
+
Effect.Effect.Context<Refs[number]>
|
|
1405
1414
|
> implements RefSubjectTupleFrom<Refs> {
|
|
1406
1415
|
readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
|
|
1407
1416
|
readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
|
|
1408
1417
|
|
|
1409
|
-
readonly version: Effect.Effect<Effect.Effect.
|
|
1410
|
-
readonly interrupt: Effect.Effect<Effect.Effect.Context<Refs[number]
|
|
1411
|
-
readonly subscriberCount: Effect.Effect<Effect.Effect.Context<Refs[number]
|
|
1418
|
+
readonly version: Effect.Effect<number, Effect.Effect.Error<Refs[number]>, Effect.Effect.Context<Refs[number]>>
|
|
1419
|
+
readonly interrupt: Effect.Effect<void, never, Effect.Effect.Context<Refs[number]>>
|
|
1420
|
+
readonly subscriberCount: Effect.Effect<number, never, Effect.Effect.Context<Refs[number]>>
|
|
1412
1421
|
|
|
1413
1422
|
private versioned: Versioned.Versioned<
|
|
1414
|
-
Effect.Effect.Context<Refs[number]>,
|
|
1415
|
-
Effect.Effect.Error<Refs[number]>,
|
|
1416
1423
|
Effect.Effect.Context<Refs[number]>,
|
|
1417
1424
|
Effect.Effect.Error<Refs[number]>,
|
|
1418
1425
|
{ readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]> },
|
|
1426
|
+
Effect.Effect.Error<Refs[number]>,
|
|
1419
1427
|
Effect.Effect.Context<Refs[number]>,
|
|
1428
|
+
{ readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]> },
|
|
1420
1429
|
Effect.Effect.Error<Refs[number]>,
|
|
1421
|
-
|
|
1430
|
+
Effect.Effect.Context<Refs[number]>
|
|
1422
1431
|
>
|
|
1423
1432
|
|
|
1424
1433
|
private getSetDelete: GetSetDelete<
|
|
1425
|
-
Effect.Effect.
|
|
1434
|
+
{ readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]> },
|
|
1426
1435
|
Effect.Effect.Error<Refs[number]>,
|
|
1427
|
-
|
|
1436
|
+
Effect.Effect.Context<Refs[number]>
|
|
1428
1437
|
>
|
|
1429
1438
|
|
|
1430
1439
|
constructor(
|
|
@@ -1453,47 +1462,47 @@ class RefSubjectTuple<
|
|
|
1453
1462
|
|
|
1454
1463
|
run<R2 = never>(
|
|
1455
1464
|
sink: Sink.Sink<
|
|
1456
|
-
R2,
|
|
1457
|
-
Effect.Effect.Error<Refs[number]>,
|
|
1458
1465
|
{
|
|
1459
1466
|
readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>
|
|
1460
|
-
}
|
|
1467
|
+
},
|
|
1468
|
+
Effect.Effect.Error<Refs[number]>,
|
|
1469
|
+
R2
|
|
1461
1470
|
>
|
|
1462
|
-
): Effect.Effect<Effect.Effect.Context<Refs[number]> | R2
|
|
1471
|
+
): Effect.Effect<unknown, never, Effect.Effect.Context<Refs[number]> | R2> {
|
|
1463
1472
|
return this.versioned.run(sink)
|
|
1464
1473
|
}
|
|
1465
1474
|
|
|
1466
1475
|
toEffect(): Effect.Effect<
|
|
1467
|
-
Effect.Effect.
|
|
1476
|
+
{ readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]> },
|
|
1468
1477
|
Effect.Effect.Error<Refs[number]>,
|
|
1469
|
-
|
|
1478
|
+
Effect.Effect.Context<Refs[number]>
|
|
1470
1479
|
> {
|
|
1471
1480
|
return this.versioned
|
|
1472
1481
|
}
|
|
1473
1482
|
|
|
1474
|
-
runUpdates<
|
|
1483
|
+
runUpdates<E2, R2, C>(
|
|
1475
1484
|
run: (
|
|
1476
1485
|
ref: GetSetDelete<
|
|
1477
|
-
Effect.Effect.Context<Refs[number]>,
|
|
1478
|
-
Effect.Effect.Error<Refs[number]>,
|
|
1479
1486
|
{
|
|
1480
1487
|
readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>
|
|
1481
|
-
}
|
|
1488
|
+
},
|
|
1489
|
+
Effect.Effect.Error<Refs[number]>,
|
|
1490
|
+
Effect.Effect.Context<Refs[number]>
|
|
1482
1491
|
>
|
|
1483
|
-
) => Effect.Effect<
|
|
1492
|
+
) => Effect.Effect<C, E2, R2>
|
|
1484
1493
|
) {
|
|
1485
1494
|
return run(this.getSetDelete)
|
|
1486
1495
|
}
|
|
1487
1496
|
|
|
1488
1497
|
onFailure(
|
|
1489
1498
|
cause: Cause.Cause<Effect.Effect.Error<Refs[number]>>
|
|
1490
|
-
): Effect.Effect<Effect.Effect.Context<Refs[number]
|
|
1499
|
+
): Effect.Effect<unknown, never, Effect.Effect.Context<Refs[number]>> {
|
|
1491
1500
|
return Effect.all(this.refs.map((ref) => ref.onFailure(cause)))
|
|
1492
1501
|
}
|
|
1493
1502
|
|
|
1494
1503
|
onSuccess(
|
|
1495
1504
|
value: { readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]> }
|
|
1496
|
-
): Effect.Effect<Effect.Effect.Context<Refs[number]
|
|
1505
|
+
): Effect.Effect<unknown, never, Effect.Effect.Context<Refs[number]>> {
|
|
1497
1506
|
return Effect.catchAllCause(this.getSetDelete.set(value), (c) => this.onFailure(c))
|
|
1498
1507
|
}
|
|
1499
1508
|
}
|
|
@@ -1536,51 +1545,51 @@ function makeStructRef<
|
|
|
1536
1545
|
class RefSubjectStruct<
|
|
1537
1546
|
const Refs extends Readonly<Record<string, RefSubject.Any>>
|
|
1538
1547
|
> extends FxEffectBase<
|
|
1539
|
-
Effect.Effect.Context<Refs[keyof Refs]> | Scope.Scope,
|
|
1540
|
-
Effect.Effect.Error<Refs[keyof Refs]>,
|
|
1541
1548
|
{
|
|
1542
1549
|
readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>
|
|
1543
1550
|
},
|
|
1544
|
-
Effect.Effect.Context<Refs[keyof Refs]>,
|
|
1545
1551
|
Effect.Effect.Error<Refs[keyof Refs]>,
|
|
1552
|
+
Effect.Effect.Context<Refs[keyof Refs]> | Scope.Scope,
|
|
1546
1553
|
{
|
|
1547
1554
|
readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>
|
|
1548
|
-
}
|
|
1555
|
+
},
|
|
1556
|
+
Effect.Effect.Error<Refs[keyof Refs]>,
|
|
1557
|
+
Effect.Effect.Context<Refs[keyof Refs]>
|
|
1549
1558
|
> implements
|
|
1550
1559
|
RefSubject<
|
|
1551
|
-
Effect.Effect.Context<Refs[keyof Refs]>,
|
|
1552
|
-
Effect.Effect.Error<Refs[keyof Refs]>,
|
|
1553
1560
|
{
|
|
1554
1561
|
readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>
|
|
1555
|
-
}
|
|
1562
|
+
},
|
|
1563
|
+
Effect.Effect.Error<Refs[keyof Refs]>,
|
|
1564
|
+
Effect.Effect.Context<Refs[keyof Refs]>
|
|
1556
1565
|
>
|
|
1557
1566
|
{
|
|
1558
1567
|
readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
|
|
1559
1568
|
readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
|
|
1560
1569
|
|
|
1561
1570
|
readonly version: Effect.Effect<
|
|
1562
|
-
|
|
1571
|
+
number,
|
|
1563
1572
|
Effect.Effect.Error<Refs[keyof Refs]>,
|
|
1564
|
-
|
|
1573
|
+
Effect.Effect.Context<Refs[keyof Refs]>
|
|
1565
1574
|
>
|
|
1566
|
-
readonly interrupt: Effect.Effect<Effect.Effect.Context<Refs[keyof Refs]
|
|
1567
|
-
readonly subscriberCount: Effect.Effect<Effect.Effect.Context<Refs[keyof Refs]
|
|
1575
|
+
readonly interrupt: Effect.Effect<void, never, Effect.Effect.Context<Refs[keyof Refs]>>
|
|
1576
|
+
readonly subscriberCount: Effect.Effect<number, never, Effect.Effect.Context<Refs[keyof Refs]>>
|
|
1568
1577
|
|
|
1569
1578
|
private versioned: Versioned.Versioned<
|
|
1570
|
-
Effect.Effect.Context<Refs[keyof Refs]>,
|
|
1571
|
-
Effect.Effect.Error<Refs[keyof Refs]>,
|
|
1572
1579
|
Effect.Effect.Context<Refs[keyof Refs]>,
|
|
1573
1580
|
Effect.Effect.Error<Refs[keyof Refs]>,
|
|
1574
1581
|
{ readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]> },
|
|
1582
|
+
Effect.Effect.Error<Refs[keyof Refs]>,
|
|
1575
1583
|
Effect.Effect.Context<Refs[keyof Refs]>,
|
|
1584
|
+
{ readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]> },
|
|
1576
1585
|
Effect.Effect.Error<Refs[keyof Refs]>,
|
|
1577
|
-
|
|
1586
|
+
Effect.Effect.Context<Refs[keyof Refs]>
|
|
1578
1587
|
>
|
|
1579
1588
|
|
|
1580
1589
|
private getSetDelete: GetSetDelete<
|
|
1581
|
-
Effect.Effect.
|
|
1590
|
+
{ readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]> },
|
|
1582
1591
|
Effect.Effect.Error<Refs[keyof Refs]>,
|
|
1583
|
-
|
|
1592
|
+
Effect.Effect.Context<Refs[keyof Refs]>
|
|
1584
1593
|
>
|
|
1585
1594
|
|
|
1586
1595
|
constructor(
|
|
@@ -1609,45 +1618,45 @@ class RefSubjectStruct<
|
|
|
1609
1618
|
|
|
1610
1619
|
run<R3 = never>(
|
|
1611
1620
|
sink: Sink.Sink<
|
|
1612
|
-
|
|
1621
|
+
{ readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]> },
|
|
1613
1622
|
Effect.Effect.Error<Refs[keyof Refs]>,
|
|
1614
|
-
|
|
1623
|
+
R3
|
|
1615
1624
|
>
|
|
1616
|
-
): Effect.Effect<Effect.Effect.Context<Refs[keyof Refs]> | R3
|
|
1625
|
+
): Effect.Effect<unknown, never, Effect.Effect.Context<Refs[keyof Refs]> | R3> {
|
|
1617
1626
|
return this.versioned.run(sink)
|
|
1618
1627
|
}
|
|
1619
1628
|
|
|
1620
1629
|
toEffect(): Effect.Effect<
|
|
1621
|
-
Effect.Effect.
|
|
1630
|
+
{ readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]> },
|
|
1622
1631
|
Effect.Effect.Error<Refs[keyof Refs]>,
|
|
1623
|
-
|
|
1632
|
+
Effect.Effect.Context<Refs[keyof Refs]>
|
|
1624
1633
|
> {
|
|
1625
1634
|
return this.versioned
|
|
1626
1635
|
}
|
|
1627
1636
|
|
|
1628
|
-
runUpdates<
|
|
1637
|
+
runUpdates<E2, R2, C>(
|
|
1629
1638
|
run: (
|
|
1630
1639
|
ref: GetSetDelete<
|
|
1631
|
-
Effect.Effect.Context<Refs[keyof Refs]>,
|
|
1632
|
-
Effect.Effect.Error<Refs[keyof Refs]>,
|
|
1633
1640
|
{
|
|
1634
1641
|
readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>
|
|
1635
|
-
}
|
|
1642
|
+
},
|
|
1643
|
+
Effect.Effect.Error<Refs[keyof Refs]>,
|
|
1644
|
+
Effect.Effect.Context<Refs[keyof Refs]>
|
|
1636
1645
|
>
|
|
1637
|
-
) => Effect.Effect<
|
|
1646
|
+
) => Effect.Effect<C, E2, R2>
|
|
1638
1647
|
) {
|
|
1639
1648
|
return run(this.getSetDelete)
|
|
1640
1649
|
}
|
|
1641
1650
|
|
|
1642
1651
|
onFailure(
|
|
1643
1652
|
cause: Cause.Cause<Effect.Effect.Error<Refs[keyof Refs]>>
|
|
1644
|
-
): Effect.Effect<Effect.Effect.Context<Refs[keyof Refs]
|
|
1653
|
+
): Effect.Effect<unknown, never, Effect.Effect.Context<Refs[keyof Refs]>> {
|
|
1645
1654
|
return Effect.all(Object.values(this.refs).map((ref) => ref.onFailure(cause as any)))
|
|
1646
1655
|
}
|
|
1647
1656
|
|
|
1648
1657
|
onSuccess(
|
|
1649
1658
|
value: { readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]> }
|
|
1650
|
-
): Effect.Effect<Effect.Effect.Context<Refs[keyof Refs]
|
|
1659
|
+
): Effect.Effect<unknown, never, Effect.Effect.Context<Refs[keyof Refs]>> {
|
|
1651
1660
|
return Effect.catchAllCause(this.getSetDelete.set(value), (c) => this.onFailure(c))
|
|
1652
1661
|
}
|
|
1653
1662
|
}
|
|
@@ -1667,9 +1676,9 @@ function makeStructFiltered<
|
|
|
1667
1676
|
type StructFrom<
|
|
1668
1677
|
Refs extends Readonly<Record<string, RefSubject.Any | Computed.Any | Filtered.Any>>
|
|
1669
1678
|
> = {
|
|
1670
|
-
"c": [ComputedStructFrom<Refs>] extends [Computed<infer
|
|
1671
|
-
"f": [FilteredStructFrom<Refs>] extends [Filtered<infer
|
|
1672
|
-
"r": [RefSubjectStructFrom<Refs>] extends [RefSubject<infer
|
|
1679
|
+
"c": [ComputedStructFrom<Refs>] extends [Computed<infer A, infer E, infer R>] ? Computed<A, E, R> : never
|
|
1680
|
+
"f": [FilteredStructFrom<Refs>] extends [Filtered<infer A, infer E, infer R>] ? Filtered<A, E, R> : never
|
|
1681
|
+
"r": [RefSubjectStructFrom<Refs>] extends [RefSubject<infer A, infer E, infer R>] ? RefSubject<A, E, R> : never
|
|
1673
1682
|
}[GetStructKind<Refs>]
|
|
1674
1683
|
|
|
1675
1684
|
/**
|
|
@@ -1693,31 +1702,31 @@ type MergeKinds<Kinds extends ReadonlyArray<any>> = Kinds extends
|
|
|
1693
1702
|
type FilteredStructFrom<
|
|
1694
1703
|
Refs extends Readonly<Record<string, RefSubject.Any | Computed.Any | Filtered.Any>>
|
|
1695
1704
|
> = Filtered<
|
|
1696
|
-
Effect.Effect.Context<Refs[keyof Refs]>,
|
|
1697
|
-
Fx.Error<Refs[keyof Refs]>,
|
|
1698
1705
|
{
|
|
1699
1706
|
readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>
|
|
1700
|
-
}
|
|
1707
|
+
},
|
|
1708
|
+
Fx.Error<Refs[keyof Refs]>,
|
|
1709
|
+
Effect.Effect.Context<Refs[keyof Refs]>
|
|
1701
1710
|
>
|
|
1702
1711
|
|
|
1703
1712
|
type ComputedStructFrom<
|
|
1704
1713
|
Refs extends Readonly<Record<string, RefSubject.Any | Computed.Any | Filtered.Any>>
|
|
1705
1714
|
> = Computed<
|
|
1706
|
-
Effect.Effect.Context<Refs[keyof Refs]>,
|
|
1707
|
-
Effect.Effect.Error<Refs[keyof Refs]>,
|
|
1708
1715
|
{
|
|
1709
1716
|
readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>
|
|
1710
|
-
}
|
|
1717
|
+
},
|
|
1718
|
+
Effect.Effect.Error<Refs[keyof Refs]>,
|
|
1719
|
+
Effect.Effect.Context<Refs[keyof Refs]>
|
|
1711
1720
|
>
|
|
1712
1721
|
|
|
1713
1722
|
type RefSubjectStructFrom<
|
|
1714
1723
|
Refs extends Readonly<Record<string, RefSubject.Any | Computed.Any | Filtered.Any>>
|
|
1715
1724
|
> = RefSubject<
|
|
1716
|
-
Effect.Effect.Context<Refs[keyof Refs]>,
|
|
1717
|
-
Effect.Effect.Error<Refs[keyof Refs]>,
|
|
1718
1725
|
{
|
|
1719
1726
|
readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>
|
|
1720
|
-
}
|
|
1727
|
+
},
|
|
1728
|
+
Effect.Effect.Error<Refs[keyof Refs]>,
|
|
1729
|
+
Effect.Effect.Context<Refs[keyof Refs]>
|
|
1721
1730
|
>
|
|
1722
1731
|
|
|
1723
1732
|
/**
|
|
@@ -1727,26 +1736,26 @@ export function tagged<E, A>(replay?: number): {
|
|
|
1727
1736
|
<const I extends C.IdentifierFactory<any>>(identifier: I): RefSubject.Tagged<C.IdentifierOf<I>, E, A>
|
|
1728
1737
|
<const I>(identifier: I): RefSubject.Tagged<C.IdentifierOf<I>, E, A>
|
|
1729
1738
|
} {
|
|
1730
|
-
return <const I>(identifier: I) => new RefSubjectTagged(C.Tagged<I, RefSubject<
|
|
1739
|
+
return <const I>(identifier: I) => new RefSubjectTagged(C.Tagged<I, RefSubject<A, E>>(identifier), replay)
|
|
1731
1740
|
}
|
|
1732
1741
|
|
|
1733
1742
|
class RefSubjectTagged<I, E, A> extends FxEffectBase<
|
|
1734
|
-
|
|
1743
|
+
A,
|
|
1735
1744
|
E,
|
|
1745
|
+
I | Scope.Scope,
|
|
1736
1746
|
A,
|
|
1737
|
-
I,
|
|
1738
1747
|
E,
|
|
1739
|
-
|
|
1748
|
+
I
|
|
1740
1749
|
> implements RefSubject.Tagged<I, E, A> {
|
|
1741
1750
|
readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
|
|
1742
1751
|
readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
|
|
1743
1752
|
|
|
1744
|
-
readonly version: Effect.Effect<
|
|
1745
|
-
readonly interrupt: Effect.Effect<
|
|
1746
|
-
readonly subscriberCount: Effect.Effect<
|
|
1753
|
+
readonly version: Effect.Effect<number, E, I>
|
|
1754
|
+
readonly interrupt: Effect.Effect<void, never, I>
|
|
1755
|
+
readonly subscriberCount: Effect.Effect<number, never, I>
|
|
1747
1756
|
|
|
1748
1757
|
constructor(
|
|
1749
|
-
readonly tag: C.Tagged<I, RefSubject<
|
|
1758
|
+
readonly tag: C.Tagged<I, RefSubject<A, E>>,
|
|
1750
1759
|
readonly replay: number = 0
|
|
1751
1760
|
) {
|
|
1752
1761
|
super()
|
|
@@ -1761,66 +1770,66 @@ class RefSubjectTagged<I, E, A> extends FxEffectBase<
|
|
|
1761
1770
|
}
|
|
1762
1771
|
|
|
1763
1772
|
run<R2 = never>(
|
|
1764
|
-
sink: Sink.Sink<
|
|
1765
|
-
): Effect.Effect<I | R2 | Scope.Scope
|
|
1773
|
+
sink: Sink.Sink<A, E, R2>
|
|
1774
|
+
): Effect.Effect<unknown, never, I | R2 | Scope.Scope> {
|
|
1766
1775
|
return this.tag.withEffect((ref) => ref.run(sink))
|
|
1767
1776
|
}
|
|
1768
1777
|
|
|
1769
|
-
toEffect(): Effect.Effect<
|
|
1778
|
+
toEffect(): Effect.Effect<A, E, I> {
|
|
1770
1779
|
return this.tag.withEffect((ref) => ref)
|
|
1771
1780
|
}
|
|
1772
1781
|
|
|
1773
|
-
runUpdates<
|
|
1774
|
-
run: (ref: GetSetDelete<
|
|
1775
|
-
): Effect.Effect<I | R2
|
|
1782
|
+
runUpdates<E2, R2, C>(
|
|
1783
|
+
run: (ref: GetSetDelete<A, E, I>) => Effect.Effect<C, E2, R2>
|
|
1784
|
+
): Effect.Effect<C, E2, I | R2> {
|
|
1776
1785
|
return this.tag.withEffect((ref) => ref.runUpdates(run))
|
|
1777
1786
|
}
|
|
1778
1787
|
|
|
1779
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<
|
|
1788
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, I> {
|
|
1780
1789
|
return this.tag.withEffect((ref) => ref.onFailure(cause))
|
|
1781
1790
|
}
|
|
1782
1791
|
|
|
1783
|
-
onSuccess(value: A): Effect.Effect<
|
|
1792
|
+
onSuccess(value: A): Effect.Effect<unknown, never, I> {
|
|
1784
1793
|
return this.tag.withEffect((ref) => ref.onSuccess(value))
|
|
1785
1794
|
}
|
|
1786
1795
|
|
|
1787
1796
|
make = <R>(
|
|
1788
|
-
fxOrEffect: Fx<
|
|
1797
|
+
fxOrEffect: Fx<A, E, R> | Effect.Effect<A, E, R>,
|
|
1789
1798
|
options?: RefSubjectOptions<A>
|
|
1790
|
-
): Layer.Layer<
|
|
1799
|
+
): Layer.Layer<I, never, R> => this.tag.scoped(make(fxOrEffect, options))
|
|
1791
1800
|
}
|
|
1792
1801
|
|
|
1793
1802
|
/**
|
|
1794
1803
|
* @since 1.20.0
|
|
1795
1804
|
*/
|
|
1796
|
-
export function fromTag<I, S,
|
|
1805
|
+
export function fromTag<I, S, A, E, R>(
|
|
1797
1806
|
tag: C.Tag<I, S>,
|
|
1798
|
-
f: (s: S) => RefSubject<
|
|
1799
|
-
): RefSubject<I | R
|
|
1807
|
+
f: (s: S) => RefSubject<A, E, R>
|
|
1808
|
+
): RefSubject<A, E, I | R> {
|
|
1800
1809
|
return new RefSubjectFromTag(tag, f)
|
|
1801
1810
|
}
|
|
1802
1811
|
|
|
1803
|
-
class RefSubjectFromTag<I, S,
|
|
1804
|
-
|
|
1812
|
+
class RefSubjectFromTag<I, S, A, E, R> extends FxEffectBase<
|
|
1813
|
+
A,
|
|
1805
1814
|
E,
|
|
1815
|
+
I | R | Scope.Scope,
|
|
1806
1816
|
A,
|
|
1807
|
-
I | R,
|
|
1808
1817
|
E,
|
|
1809
|
-
|
|
1810
|
-
> implements RefSubject<
|
|
1818
|
+
I | R
|
|
1819
|
+
> implements RefSubject<A, E, R | I> {
|
|
1811
1820
|
readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
|
|
1812
1821
|
readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
|
|
1813
1822
|
|
|
1814
|
-
readonly version: Effect.Effect<I | R
|
|
1815
|
-
readonly interrupt: Effect.Effect<I | R
|
|
1816
|
-
readonly subscriberCount: Effect.Effect<I | R
|
|
1823
|
+
readonly version: Effect.Effect<number, E, I | R>
|
|
1824
|
+
readonly interrupt: Effect.Effect<void, never, I | R>
|
|
1825
|
+
readonly subscriberCount: Effect.Effect<number, never, I | R>
|
|
1817
1826
|
|
|
1818
|
-
private _get: Effect.Effect<
|
|
1819
|
-
private _fx: Fx<I | R | Scope.Scope
|
|
1827
|
+
private _get: Effect.Effect<RefSubject<A, E, R>, never, I>
|
|
1828
|
+
private _fx: Fx<A, E, I | R | Scope.Scope>
|
|
1820
1829
|
|
|
1821
1830
|
constructor(
|
|
1822
1831
|
readonly tag: C.Tag<I, S>,
|
|
1823
|
-
readonly f: (s: S) => RefSubject<
|
|
1832
|
+
readonly f: (s: S) => RefSubject<A, E, R>
|
|
1824
1833
|
) {
|
|
1825
1834
|
super()
|
|
1826
1835
|
|
|
@@ -1832,25 +1841,25 @@ class RefSubjectFromTag<I, S, R, E, A> extends FxEffectBase<
|
|
|
1832
1841
|
this.subscriberCount = Effect.flatMap(this._get, (ref) => ref.subscriberCount)
|
|
1833
1842
|
}
|
|
1834
1843
|
|
|
1835
|
-
run<R3>(sink: Sink.Sink<
|
|
1844
|
+
run<R3>(sink: Sink.Sink<A, E, R3>): Effect.Effect<unknown, never, I | R | R3 | Scope.Scope> {
|
|
1836
1845
|
return this._fx.run(sink)
|
|
1837
1846
|
}
|
|
1838
1847
|
|
|
1839
|
-
toEffect(): Effect.Effect<I | R
|
|
1848
|
+
toEffect(): Effect.Effect<A, E, I | R> {
|
|
1840
1849
|
return Effect.flatten(this._get)
|
|
1841
1850
|
}
|
|
1842
1851
|
|
|
1843
|
-
runUpdates<
|
|
1844
|
-
run: (ref: GetSetDelete<
|
|
1845
|
-
): Effect.Effect<I | R | R2
|
|
1852
|
+
runUpdates<E2, R2, C>(
|
|
1853
|
+
run: (ref: GetSetDelete<A, E, R | I>) => Effect.Effect<C, E2, R2>
|
|
1854
|
+
): Effect.Effect<C, E2, I | R | R2> {
|
|
1846
1855
|
return Effect.flatMap(this._get, (ref) => ref.runUpdates(run))
|
|
1847
1856
|
}
|
|
1848
1857
|
|
|
1849
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<I | R
|
|
1858
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, I | R> {
|
|
1850
1859
|
return Effect.flatMap(this._get, (ref) => ref.onFailure(cause))
|
|
1851
1860
|
}
|
|
1852
1861
|
|
|
1853
|
-
onSuccess(value: A): Effect.Effect<I | R
|
|
1862
|
+
onSuccess(value: A): Effect.Effect<unknown, never, I | R> {
|
|
1854
1863
|
return Effect.flatMap(this._get, (ref) => ref.onSuccess(value))
|
|
1855
1864
|
}
|
|
1856
1865
|
}
|
|
@@ -1858,7 +1867,7 @@ class RefSubjectFromTag<I, S, R, E, A> extends FxEffectBase<
|
|
|
1858
1867
|
/**
|
|
1859
1868
|
* @since 1.20.0
|
|
1860
1869
|
*/
|
|
1861
|
-
export function isRefSubject<
|
|
1870
|
+
export function isRefSubject<A, E, R>(u: unknown): u is RefSubject<A, E, R>
|
|
1862
1871
|
export function isRefSubject(u: unknown): u is RefSubject.Any
|
|
1863
1872
|
export function isRefSubject(u: unknown): u is RefSubject.Any {
|
|
1864
1873
|
return isObjectLike(u) && RefSubjectTypeId in u
|
|
@@ -1867,7 +1876,7 @@ export function isRefSubject(u: unknown): u is RefSubject.Any {
|
|
|
1867
1876
|
/**
|
|
1868
1877
|
* @since 1.20.0
|
|
1869
1878
|
*/
|
|
1870
|
-
export function isComputed<
|
|
1879
|
+
export function isComputed<A, E, R>(u: unknown): u is Computed<A, E, R>
|
|
1871
1880
|
export function isComputed(u: unknown): u is Computed.Any
|
|
1872
1881
|
export function isComputed(u: unknown): u is Computed.Any {
|
|
1873
1882
|
return isObjectLike(u) && ComputedTypeId in u
|
|
@@ -1876,7 +1885,7 @@ export function isComputed(u: unknown): u is Computed.Any {
|
|
|
1876
1885
|
/**
|
|
1877
1886
|
* @since 1.20.0
|
|
1878
1887
|
*/
|
|
1879
|
-
export function isFiltered<
|
|
1888
|
+
export function isFiltered<A, E, R>(u: unknown): u is Filtered<A, E, R>
|
|
1880
1889
|
export function isFiltered(u: unknown): u is Filtered.Any
|
|
1881
1890
|
export function isFiltered(u: unknown): u is Filtered.Any {
|
|
1882
1891
|
return isObjectLike(u) && FilteredTypeId in u
|
|
@@ -1885,7 +1894,7 @@ export function isFiltered(u: unknown): u is Filtered.Any {
|
|
|
1885
1894
|
/**
|
|
1886
1895
|
* @since 1.20.0
|
|
1887
1896
|
*/
|
|
1888
|
-
export function isDerived<
|
|
1897
|
+
export function isDerived<A, E, R>(u: unknown): u is RefSubject.Derived<A, E, R>
|
|
1889
1898
|
export function isDerived(u: unknown): u is RefSubject.Derived<unknown, unknown, unknown>
|
|
1890
1899
|
export function isDerived(u: unknown): u is RefSubject.Derived<unknown, unknown, unknown> {
|
|
1891
1900
|
return isRefSubject(u) && "persist" in u
|
|
@@ -1902,30 +1911,30 @@ function isObjectLike(u: unknown): u is object {
|
|
|
1902
1911
|
/**
|
|
1903
1912
|
* @since 1.20.0
|
|
1904
1913
|
*/
|
|
1905
|
-
export function computedFromTag<I, S,
|
|
1914
|
+
export function computedFromTag<I, S, A, E, R>(
|
|
1906
1915
|
tag: C.Tag<I, S>,
|
|
1907
|
-
f: (s: S) => Computed<
|
|
1908
|
-
): Computed<I | R
|
|
1916
|
+
f: (s: S) => Computed<A, E, R>
|
|
1917
|
+
): Computed<A, E, I | R> {
|
|
1909
1918
|
return new ComputedFromTag(tag, f)
|
|
1910
1919
|
}
|
|
1911
1920
|
|
|
1912
|
-
class ComputedFromTag<I, S,
|
|
1913
|
-
|
|
1921
|
+
class ComputedFromTag<I, S, A, E, R> extends FxEffectBase<
|
|
1922
|
+
A,
|
|
1914
1923
|
E,
|
|
1924
|
+
I | R | Scope.Scope,
|
|
1915
1925
|
A,
|
|
1916
|
-
I | R,
|
|
1917
1926
|
E,
|
|
1918
|
-
|
|
1919
|
-
> implements Computed<
|
|
1927
|
+
I | R
|
|
1928
|
+
> implements Computed<A, E, R | I> {
|
|
1920
1929
|
readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
|
|
1921
1930
|
|
|
1922
|
-
readonly version: Effect.Effect<I | R
|
|
1931
|
+
readonly version: Effect.Effect<number, E, I | R>
|
|
1923
1932
|
|
|
1924
|
-
private _get: Effect.Effect<
|
|
1933
|
+
private _get: Effect.Effect<Computed<A, E, R>, never, I>
|
|
1925
1934
|
|
|
1926
1935
|
constructor(
|
|
1927
1936
|
readonly tag: C.Tag<I, S>,
|
|
1928
|
-
readonly f: (s: S) => Computed<
|
|
1937
|
+
readonly f: (s: S) => Computed<A, E, R>
|
|
1929
1938
|
) {
|
|
1930
1939
|
super()
|
|
1931
1940
|
|
|
@@ -1933,11 +1942,11 @@ class ComputedFromTag<I, S, R, E, A> extends FxEffectBase<
|
|
|
1933
1942
|
this.version = Effect.flatMap(this._get, (ref) => ref.version)
|
|
1934
1943
|
}
|
|
1935
1944
|
|
|
1936
|
-
run<R3>(sink: Sink.Sink<
|
|
1945
|
+
run<R3>(sink: Sink.Sink<A, E, R3>): Effect.Effect<unknown, never, I | R | Scope.Scope | R3> {
|
|
1937
1946
|
return Effect.flatMap(this._get, (ref) => ref.run(sink))
|
|
1938
1947
|
}
|
|
1939
1948
|
|
|
1940
|
-
toEffect(): Effect.Effect<I | R
|
|
1949
|
+
toEffect(): Effect.Effect<A, E, I | R> {
|
|
1941
1950
|
return Effect.flatten(this._get)
|
|
1942
1951
|
}
|
|
1943
1952
|
}
|
|
@@ -1945,30 +1954,30 @@ class ComputedFromTag<I, S, R, E, A> extends FxEffectBase<
|
|
|
1945
1954
|
/**
|
|
1946
1955
|
* @since 1.20.0
|
|
1947
1956
|
*/
|
|
1948
|
-
export function filteredFromTag<I, S,
|
|
1957
|
+
export function filteredFromTag<I, S, A, E, R>(
|
|
1949
1958
|
tag: C.Tag<I, S>,
|
|
1950
|
-
f: (s: S) => Filtered<
|
|
1951
|
-
): Filtered<
|
|
1959
|
+
f: (s: S) => Filtered<A, E, R>
|
|
1960
|
+
): Filtered<A, E, R | I> {
|
|
1952
1961
|
return new FilteredFromTag(tag, f)
|
|
1953
1962
|
}
|
|
1954
1963
|
|
|
1955
|
-
class FilteredFromTag<I, S,
|
|
1956
|
-
|
|
1964
|
+
class FilteredFromTag<I, S, A, E, R> extends FxEffectBase<
|
|
1965
|
+
A,
|
|
1957
1966
|
E,
|
|
1967
|
+
I | R | Scope.Scope,
|
|
1958
1968
|
A,
|
|
1959
|
-
I | R,
|
|
1960
1969
|
E | Cause.NoSuchElementException,
|
|
1961
|
-
|
|
1962
|
-
> implements Filtered<
|
|
1970
|
+
I | R
|
|
1971
|
+
> implements Filtered<A, E, R | I> {
|
|
1963
1972
|
readonly [FilteredTypeId]: FilteredTypeId = FilteredTypeId
|
|
1964
1973
|
|
|
1965
|
-
readonly version: Effect.Effect<I | R
|
|
1974
|
+
readonly version: Effect.Effect<number, E, I | R>
|
|
1966
1975
|
|
|
1967
|
-
private _get: Effect.Effect<
|
|
1976
|
+
private _get: Effect.Effect<Filtered<A, E, R>, never, I>
|
|
1968
1977
|
|
|
1969
1978
|
constructor(
|
|
1970
1979
|
readonly tag: C.Tag<I, S>,
|
|
1971
|
-
readonly f: (s: S) => Filtered<
|
|
1980
|
+
readonly f: (s: S) => Filtered<A, E, R>
|
|
1972
1981
|
) {
|
|
1973
1982
|
super()
|
|
1974
1983
|
|
|
@@ -1976,15 +1985,15 @@ class FilteredFromTag<I, S, R, E, A> extends FxEffectBase<
|
|
|
1976
1985
|
this.version = Effect.flatMap(this._get, (ref) => ref.version)
|
|
1977
1986
|
}
|
|
1978
1987
|
|
|
1979
|
-
run<R3>(sink: Sink.Sink<
|
|
1988
|
+
run<R3>(sink: Sink.Sink<A, E, R3>): Effect.Effect<unknown, never, I | R | Scope.Scope | R3> {
|
|
1980
1989
|
return Effect.flatMap(this._get, (ref) => ref.run(sink))
|
|
1981
1990
|
}
|
|
1982
1991
|
|
|
1983
|
-
toEffect(): Effect.Effect<
|
|
1992
|
+
toEffect(): Effect.Effect<A, E | Cause.NoSuchElementException, I | R> {
|
|
1984
1993
|
return Effect.flatten(this._get)
|
|
1985
1994
|
}
|
|
1986
1995
|
|
|
1987
|
-
asComputed(): Computed<
|
|
1996
|
+
asComputed(): Computed<Option.Option<A>, E, R | I> {
|
|
1988
1997
|
return new ComputedFromTag(this.tag, (s) => this.f(s).asComputed())
|
|
1989
1998
|
}
|
|
1990
1999
|
}
|
|
@@ -1994,39 +2003,39 @@ class FilteredFromTag<I, S, R, E, A> extends FxEffectBase<
|
|
|
1994
2003
|
*/
|
|
1995
2004
|
export const provide: {
|
|
1996
2005
|
<S>(context: C.Context<S> | Runtime.Runtime<S>): {
|
|
1997
|
-
<
|
|
1998
|
-
<
|
|
1999
|
-
<
|
|
2006
|
+
<A, E, R>(filtered: Filtered<A, E, R>): Filtered<A, E, Exclude<R, S>>
|
|
2007
|
+
<A, E, R>(computed: Computed<A, E, R>): Computed<A, E, Exclude<R, S>>
|
|
2008
|
+
<A, E, R>(ref: RefSubject<A, E, R>): RefSubject<A, E, Exclude<R, S>>
|
|
2000
2009
|
}
|
|
2001
2010
|
|
|
2002
|
-
<R2, S>(layer: Layer.Layer<
|
|
2003
|
-
<
|
|
2004
|
-
<
|
|
2005
|
-
<
|
|
2011
|
+
<R2, S>(layer: Layer.Layer<S, never, R2>): {
|
|
2012
|
+
<A, E, R>(filtered: Filtered<A, E, R>): Filtered<A, E, Exclude<R, S> | R2>
|
|
2013
|
+
<A, E, R>(computed: Computed<A, E, R>): Computed<A, E, Exclude<R, S> | R2>
|
|
2014
|
+
<A, E, R>(ref: RefSubject<A, E, R>): RefSubject<A, E, Exclude<R, S> | R2>
|
|
2006
2015
|
}
|
|
2007
2016
|
|
|
2008
|
-
<
|
|
2009
|
-
filtered: Filtered<
|
|
2017
|
+
<A, E, R, S>(
|
|
2018
|
+
filtered: Filtered<A, E, R>,
|
|
2010
2019
|
context: C.Context<S> | Runtime.Runtime<S>
|
|
2011
|
-
): Filtered<Exclude<R, S
|
|
2012
|
-
<
|
|
2013
|
-
computed: Computed<
|
|
2020
|
+
): Filtered<A, E, Exclude<R, S>>
|
|
2021
|
+
<A, E, R, S>(
|
|
2022
|
+
computed: Computed<A, E, R>,
|
|
2014
2023
|
context: C.Context<S> | Runtime.Runtime<S>
|
|
2015
|
-
): Computed<Exclude<R, S
|
|
2016
|
-
<
|
|
2017
|
-
ref: RefSubject<
|
|
2024
|
+
): Computed<A, E, Exclude<R, S>>
|
|
2025
|
+
<A, E, R, S>(
|
|
2026
|
+
ref: RefSubject<A, E, R>,
|
|
2018
2027
|
context: C.Context<S> | Runtime.Runtime<S>
|
|
2019
|
-
): RefSubject<Exclude<R, S
|
|
2020
|
-
|
|
2021
|
-
<
|
|
2022
|
-
<
|
|
2023
|
-
<
|
|
2024
|
-
} = dual(2, function provide<
|
|
2025
|
-
ref: RefSubject<
|
|
2026
|
-
providing: Layer.Layer<
|
|
2028
|
+
): RefSubject<A, E, Exclude<R, S>>
|
|
2029
|
+
|
|
2030
|
+
<A, E, R, R2, S>(filtered: Filtered<A, E, R>, layer: Layer.Layer<S, never, R2>): Filtered<A, E, Exclude<R, S> | R2>
|
|
2031
|
+
<A, E, R, R2, S>(computed: Computed<A, E, R>, layer: Layer.Layer<S, never, R2>): Computed<A, E, Exclude<R, S> | R2>
|
|
2032
|
+
<A, E, R, R2, S>(ref: RefSubject<A, E, R>, layer: Layer.Layer<S, never, R2>): RefSubject<A, E, Exclude<R, S> | R2>
|
|
2033
|
+
} = dual(2, function provide<A, E, R, R2 = never, S = never>(
|
|
2034
|
+
ref: RefSubject<A, E, R> | Computed<A, E, R> | Filtered<A, E, R>,
|
|
2035
|
+
providing: Layer.Layer<S, never, R2> | C.Context<S> | Runtime.Runtime<S>
|
|
2027
2036
|
) {
|
|
2028
2037
|
const layer = Layer.isLayer(providing)
|
|
2029
|
-
? providing as Layer.Layer<
|
|
2038
|
+
? providing as Layer.Layer<S, never, R2>
|
|
2030
2039
|
: C.isContext(providing)
|
|
2031
2040
|
? Layer.succeedContext(providing)
|
|
2032
2041
|
: runtimeToLayer(providing as Runtime.Runtime<S>)
|
|
@@ -2040,23 +2049,23 @@ export const provide: {
|
|
|
2040
2049
|
}
|
|
2041
2050
|
})
|
|
2042
2051
|
|
|
2043
|
-
class RefSubjectProvide<
|
|
2044
|
-
|
|
2052
|
+
class RefSubjectProvide<A, E, R, R2, S> extends FxEffectBase<
|
|
2053
|
+
A,
|
|
2045
2054
|
E,
|
|
2055
|
+
Exclude<R, S> | R2 | Scope.Scope,
|
|
2046
2056
|
A,
|
|
2047
|
-
Exclude<R, S> | R2,
|
|
2048
2057
|
E,
|
|
2049
|
-
|
|
2058
|
+
Exclude<R, S> | R2
|
|
2050
2059
|
> {
|
|
2051
2060
|
readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
|
|
2052
2061
|
readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
|
|
2053
2062
|
|
|
2054
|
-
readonly interrupt: Effect.Effect<Exclude<R, S> | R2
|
|
2055
|
-
readonly subscriberCount: Effect.Effect<Exclude<R, S> | R2
|
|
2063
|
+
readonly interrupt: Effect.Effect<void, never, Exclude<R, S> | R2>
|
|
2064
|
+
readonly subscriberCount: Effect.Effect<number, never, Exclude<R, S> | R2>
|
|
2056
2065
|
|
|
2057
2066
|
constructor(
|
|
2058
|
-
readonly ref: RefSubject<
|
|
2059
|
-
readonly layer: Layer.Layer<
|
|
2067
|
+
readonly ref: RefSubject<A, E, R>,
|
|
2068
|
+
readonly layer: Layer.Layer<S, never, R2>
|
|
2060
2069
|
) {
|
|
2061
2070
|
super()
|
|
2062
2071
|
|
|
@@ -2065,12 +2074,12 @@ class RefSubjectProvide<R, E, A, R2, S> extends FxEffectBase<
|
|
|
2065
2074
|
}
|
|
2066
2075
|
|
|
2067
2076
|
run<R3>(
|
|
2068
|
-
sink: Sink.Sink<
|
|
2069
|
-
): Effect.Effect<R2 | Scope.Scope | Exclude<Scope.Scope, S> | Exclude<R, S> | Exclude<R3, S
|
|
2077
|
+
sink: Sink.Sink<A, E, R3>
|
|
2078
|
+
): Effect.Effect<unknown, never, R2 | Scope.Scope | Exclude<Scope.Scope, S> | Exclude<R, S> | Exclude<R3, S>> {
|
|
2070
2079
|
return Effect.provide(this.ref.run(sink), this.layer)
|
|
2071
2080
|
}
|
|
2072
2081
|
|
|
2073
|
-
toEffect(): Effect.Effect<Exclude<R, S> | R2
|
|
2082
|
+
toEffect(): Effect.Effect<A, E, Exclude<R, S> | R2> {
|
|
2074
2083
|
return Effect.provide(this.ref, this.layer)
|
|
2075
2084
|
}
|
|
2076
2085
|
}
|
|
@@ -2079,24 +2088,24 @@ class RefSubjectProvide<R, E, A, R2, S> extends FxEffectBase<
|
|
|
2079
2088
|
* Set the value to true
|
|
2080
2089
|
* @since 1.18.0
|
|
2081
2090
|
*/
|
|
2082
|
-
export const asTrue: <
|
|
2083
|
-
ref: RefSubject<
|
|
2091
|
+
export const asTrue: <E, R>(ref: RefSubject<boolean, E, R>) => Effect.Effect<boolean, E, R> = <E, R>(
|
|
2092
|
+
ref: RefSubject<boolean, E, R>
|
|
2084
2093
|
) => set(ref, true)
|
|
2085
2094
|
|
|
2086
2095
|
/**
|
|
2087
2096
|
* Set the value to false
|
|
2088
2097
|
* @since 1.18.0
|
|
2089
2098
|
*/
|
|
2090
|
-
export const asFalse: <
|
|
2091
|
-
ref: RefSubject<
|
|
2099
|
+
export const asFalse: <E, R>(ref: RefSubject<boolean, E, R>) => Effect.Effect<boolean, E, R> = <E, R>(
|
|
2100
|
+
ref: RefSubject<boolean, E, R>
|
|
2092
2101
|
) => set(ref, false)
|
|
2093
2102
|
|
|
2094
2103
|
/**
|
|
2095
2104
|
* Toggle the boolean value between true and false
|
|
2096
2105
|
* @since 1.18.0
|
|
2097
2106
|
*/
|
|
2098
|
-
export const toggle: <
|
|
2099
|
-
ref: RefSubject<
|
|
2107
|
+
export const toggle: <E, R>(ref: RefSubject<boolean, E, R>) => Effect.Effect<boolean, E, R> = <E, R>(
|
|
2108
|
+
ref: RefSubject<boolean, E, R>
|
|
2100
2109
|
) => update(ref, Boolean.not)
|
|
2101
2110
|
|
|
2102
2111
|
const add = (x: number): number => x + 1
|
|
@@ -2105,8 +2114,8 @@ const add = (x: number): number => x + 1
|
|
|
2105
2114
|
* Set the value to true
|
|
2106
2115
|
* @since 1.18.0
|
|
2107
2116
|
*/
|
|
2108
|
-
export const increment: <
|
|
2109
|
-
ref: RefSubject<
|
|
2117
|
+
export const increment: <E, R>(ref: RefSubject<number, E, R>) => Effect.Effect<number, E, R> = <E, R>(
|
|
2118
|
+
ref: RefSubject<number, E, R>
|
|
2110
2119
|
) => update(ref, add)
|
|
2111
2120
|
|
|
2112
2121
|
const sub = (x: number): number => x - 1
|
|
@@ -2115,19 +2124,19 @@ const sub = (x: number): number => x - 1
|
|
|
2115
2124
|
* Set the value to false
|
|
2116
2125
|
* @since 1.18.0
|
|
2117
2126
|
*/
|
|
2118
|
-
export const decrement: <
|
|
2119
|
-
ref: RefSubject<
|
|
2127
|
+
export const decrement: <E, R>(ref: RefSubject<number, E, R>) => Effect.Effect<number, E, R> = <E, R>(
|
|
2128
|
+
ref: RefSubject<number, E, R>
|
|
2120
2129
|
) => update(ref, sub)
|
|
2121
2130
|
|
|
2122
2131
|
/**
|
|
2123
2132
|
* @since 1.20.0
|
|
2124
2133
|
*/
|
|
2125
2134
|
export const slice: {
|
|
2126
|
-
(drop: number, take: number): <
|
|
2127
|
-
<
|
|
2135
|
+
(drop: number, take: number): <A, E, R>(ref: RefSubject<A, E, R>) => RefSubject<A, E, R>
|
|
2136
|
+
<A, E, R>(ref: RefSubject<A, E, R>, drop: number, take: number): RefSubject<A, E, R>
|
|
2128
2137
|
} = dual(
|
|
2129
2138
|
3,
|
|
2130
|
-
function slice<
|
|
2139
|
+
function slice<A, E, R>(ref: RefSubject<A, E, R>, drop: number, take: number): RefSubject<A, E, R> {
|
|
2131
2140
|
return new RefSubjectSlice(ref, drop, take)
|
|
2132
2141
|
}
|
|
2133
2142
|
)
|
|
@@ -2136,9 +2145,9 @@ export const slice: {
|
|
|
2136
2145
|
* @since 1.20.0
|
|
2137
2146
|
*/
|
|
2138
2147
|
export const drop: {
|
|
2139
|
-
(drop: number): <
|
|
2140
|
-
<
|
|
2141
|
-
} = dual(2, function drop<
|
|
2148
|
+
(drop: number): <A, E, R>(ref: RefSubject<A, E, R>) => RefSubject<A, E, R>
|
|
2149
|
+
<A, E, R>(ref: RefSubject<A, E, R>, drop: number): RefSubject<A, E, R>
|
|
2150
|
+
} = dual(2, function drop<A, E, R>(ref: RefSubject<A, E, R>, drop: number): RefSubject<A, E, R> {
|
|
2142
2151
|
return slice(ref, drop, Infinity)
|
|
2143
2152
|
})
|
|
2144
2153
|
|
|
@@ -2146,23 +2155,23 @@ export const drop: {
|
|
|
2146
2155
|
* @since 1.20.0
|
|
2147
2156
|
*/
|
|
2148
2157
|
export const take: {
|
|
2149
|
-
(take: number): <
|
|
2150
|
-
<
|
|
2151
|
-
} = dual(2, function take<
|
|
2158
|
+
(take: number): <A, E, R>(ref: RefSubject<A, E, R>) => RefSubject<A, E, R>
|
|
2159
|
+
<A, E, R>(ref: RefSubject<A, E, R>, take: number): RefSubject<A, E, R>
|
|
2160
|
+
} = dual(2, function take<A, E, R>(ref: RefSubject<A, E, R>, take: number): RefSubject<A, E, R> {
|
|
2152
2161
|
return slice(ref, 0, take)
|
|
2153
2162
|
})
|
|
2154
2163
|
|
|
2155
|
-
class RefSubjectSlice<
|
|
2164
|
+
class RefSubjectSlice<A, E, R> extends FxEffectBase<A, E, R | Scope.Scope, A, E, R> implements RefSubject<A, E, R> {
|
|
2156
2165
|
readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
|
|
2157
2166
|
readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
|
|
2158
2167
|
|
|
2159
|
-
readonly version: Effect.Effect<
|
|
2160
|
-
readonly interrupt: Effect.Effect<
|
|
2161
|
-
readonly subscriberCount: Effect.Effect<
|
|
2162
|
-
private _fx: Fx<Scope.Scope | R
|
|
2168
|
+
readonly version: Effect.Effect<number, E, R>
|
|
2169
|
+
readonly interrupt: Effect.Effect<void, never, R>
|
|
2170
|
+
readonly subscriberCount: Effect.Effect<number, never, R>
|
|
2171
|
+
private _fx: Fx<A, E, Scope.Scope | R>
|
|
2163
2172
|
|
|
2164
2173
|
constructor(
|
|
2165
|
-
readonly ref: RefSubject<
|
|
2174
|
+
readonly ref: RefSubject<A, E, R>,
|
|
2166
2175
|
readonly drop: number,
|
|
2167
2176
|
readonly take: number
|
|
2168
2177
|
) {
|
|
@@ -2175,25 +2184,25 @@ class RefSubjectSlice<R, E, A> extends FxEffectBase<R | Scope.Scope, E, A, R, E,
|
|
|
2175
2184
|
this._effect = ref
|
|
2176
2185
|
}
|
|
2177
2186
|
|
|
2178
|
-
run<R2>(sink: Sink.Sink<
|
|
2187
|
+
run<R2>(sink: Sink.Sink<A, E, R2>): Effect.Effect<unknown, never, R | R2 | Scope.Scope> {
|
|
2179
2188
|
return this._fx.run(sink)
|
|
2180
2189
|
}
|
|
2181
2190
|
|
|
2182
|
-
toEffect(): Effect.Effect<
|
|
2191
|
+
toEffect(): Effect.Effect<A, E, R> {
|
|
2183
2192
|
return this.ref
|
|
2184
2193
|
}
|
|
2185
2194
|
|
|
2186
|
-
runUpdates<
|
|
2187
|
-
run: (ref: GetSetDelete<
|
|
2188
|
-
): Effect.Effect<R | R2
|
|
2195
|
+
runUpdates<E2, R2, C>(
|
|
2196
|
+
run: (ref: GetSetDelete<A, E, R>) => Effect.Effect<C, E2, R2>
|
|
2197
|
+
): Effect.Effect<C, E2, R | R2> {
|
|
2189
2198
|
return this.ref.runUpdates(run)
|
|
2190
2199
|
}
|
|
2191
2200
|
|
|
2192
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<
|
|
2201
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, R> {
|
|
2193
2202
|
return this.ref.onFailure(cause)
|
|
2194
2203
|
}
|
|
2195
2204
|
|
|
2196
|
-
onSuccess(value: A): Effect.Effect<
|
|
2205
|
+
onSuccess(value: A): Effect.Effect<unknown, never, R> {
|
|
2197
2206
|
return this.ref.onSuccess(value)
|
|
2198
2207
|
}
|
|
2199
2208
|
}
|