@typed/fx 1.23.0 → 1.24.1
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/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 +24 -24
- 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 +3 -2
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/keyed.js.map +1 -1
- package/dist/cjs/internal/provide.js.map +1 -1
- package/dist/dts/AsyncData.d.ts +36 -36
- package/dist/dts/AsyncData.d.ts.map +1 -1
- package/dist/dts/Emitter.d.ts +2 -2
- package/dist/dts/Form.d.ts +6 -6
- package/dist/dts/Form.d.ts.map +1 -1
- package/dist/dts/FormEntry.d.ts +8 -8
- package/dist/dts/Fx.d.ts +414 -414
- 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 +3 -3
- 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 +127 -127
- package/dist/dts/RefSubject.d.ts.map +1 -1
- package/dist/dts/Sink.d.ts +60 -60
- 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 +10 -10
- 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 +28 -28
- package/dist/dts/Versioned.d.ts.map +1 -1
- package/dist/dts/index.d.ts +1 -1
- package/dist/dts/internal/DeferredRef.d.ts +1 -1
- 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 +2 -2
- package/dist/dts/internal/effect-loop-operator.d.ts.map +1 -1
- package/dist/dts/internal/effect-operator.d.ts +9 -9
- package/dist/dts/internal/effect-operator.d.ts.map +1 -1
- package/dist/dts/internal/effect-producer.d.ts +10 -10
- package/dist/dts/internal/effect-producer.d.ts.map +1 -1
- package/dist/dts/internal/helpers.d.ts +16 -16
- 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 +7 -7
- package/dist/dts/internal/protos.d.ts.map +1 -1
- package/dist/dts/internal/provide.d.ts +10 -10
- package/dist/dts/internal/provide.d.ts.map +1 -1
- package/dist/dts/internal/share.d.ts +10 -10
- 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 +4 -4
- 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/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 +19 -18
- 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 +3 -2
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/keyed.js.map +1 -1
- package/dist/esm/internal/provide.js.map +1 -1
- package/package.json +2 -2
- package/src/AsyncData.ts +71 -73
- package/src/Emitter.ts +5 -5
- package/src/Form.ts +27 -27
- package/src/FormEntry.ts +29 -29
- package/src/Fx.ts +735 -734
- package/src/Guard.ts +39 -39
- package/src/Idle.ts +4 -4
- package/src/Match.ts +57 -58
- package/src/Pull.ts +35 -36
- package/src/Push.ts +170 -170
- package/src/RefArray.ts +114 -112
- package/src/RefChunk.ts +93 -92
- package/src/RefHashMap.ts +71 -71
- package/src/RefHashSet.ts +40 -39
- package/src/RefSubject.ts +457 -448
- package/src/Sink.ts +235 -235
- package/src/Stream.ts +20 -20
- package/src/Subject.ts +34 -32
- package/src/Typeclass.ts +2 -2
- package/src/Versioned.ts +75 -75
- package/src/index.ts +1 -1
- package/src/internal/DeferredRef.ts +1 -1
- package/src/internal/core.ts +694 -706
- package/src/internal/effect-loop-operator.ts +3 -3
- package/src/internal/effect-operator.ts +12 -12
- package/src/internal/effect-producer.ts +25 -25
- package/src/internal/helpers.ts +18 -18
- package/src/internal/keyed.ts +18 -18
- package/src/internal/loop-operator.ts +2 -2
- package/src/internal/operator.ts +2 -2
- package/src/internal/protos.ts +8 -8
- package/src/internal/provide.ts +19 -19
- package/src/internal/share.ts +22 -22
- package/src/internal/sync-operator.ts +4 -4
- package/src/internal/sync-producer.ts +6 -6
- 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,14 +90,16 @@ 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<
|
|
101
|
+
readonly runUpdates: <B, E2, R2>(
|
|
102
|
+
f: (ref: GetSetDelete<A, E, R>) => Effect.Effect<B, E2, R2>
|
|
99
103
|
) => Effect.Effect<B, E2, R | R2>
|
|
100
104
|
}
|
|
101
105
|
|
|
@@ -108,23 +112,23 @@ 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
133
|
) => Layer.Layer<I, never, R>
|
|
130
134
|
}
|
|
@@ -134,25 +138,25 @@ export namespace RefSubject {
|
|
|
134
138
|
* @since 1.18.0
|
|
135
139
|
* @category models
|
|
136
140
|
*/
|
|
137
|
-
export interface Derived<
|
|
141
|
+
export interface Derived<A, E, R> extends RefSubject<A, E, R> {
|
|
138
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<
|
|
199
|
+
export function fromEffect<A, E, R>(
|
|
196
200
|
effect: Effect.Effect<A, E, R>,
|
|
197
201
|
options?: RefSubjectOptions<A>
|
|
198
|
-
): Effect.Effect<RefSubject<
|
|
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<RefSubject<
|
|
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<RefSubject.Derived<
|
|
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,34 +257,36 @@ 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
|
-
return Effect.ignoreLogged(
|
|
262
|
+
return Effect.ignoreLogged(
|
|
263
|
+
Effect.provide(Effect.flatMap(core.deferredRef, (value) => set(ref, value)), core.runtime)
|
|
264
|
+
)
|
|
259
265
|
}
|
|
260
266
|
|
|
261
267
|
/**
|
|
262
268
|
* @since 1.20.0
|
|
263
269
|
*/
|
|
264
270
|
export const make: {
|
|
265
|
-
<
|
|
266
|
-
ref: RefSubject<
|
|
271
|
+
<A, E = never, R = never>(
|
|
272
|
+
ref: RefSubject<A, E, R>,
|
|
267
273
|
options?: RefSubjectOptions<A>
|
|
268
|
-
): Effect.Effect<RefSubject.Derived<
|
|
274
|
+
): Effect.Effect<RefSubject.Derived<A, E, R>, never, R | Scope.Scope>
|
|
269
275
|
|
|
270
|
-
<
|
|
271
|
-
fxOrEffect: Fx<
|
|
276
|
+
<A, E = never, R = never>(
|
|
277
|
+
fxOrEffect: Fx<A, E, R> | Effect.Effect<A, E, R>,
|
|
272
278
|
options?: RefSubjectOptions<A>
|
|
273
|
-
): Effect.Effect<RefSubject<
|
|
279
|
+
): Effect.Effect<RefSubject<A, E>, never, R | Scope.Scope>
|
|
274
280
|
|
|
275
|
-
<
|
|
276
|
-
fxOrEffect: Fx<
|
|
281
|
+
<A, E = never, R = never>(
|
|
282
|
+
fxOrEffect: Fx<A, E, R> | Effect.Effect<A, E, R> | RefSubject<A, E, R>,
|
|
277
283
|
options?: RefSubjectOptions<A>
|
|
278
|
-
): Effect.Effect<RefSubject<
|
|
279
|
-
} = function make<
|
|
280
|
-
fxOrEffect: Fx<
|
|
284
|
+
): Effect.Effect<RefSubject<A, E> | RefSubject.Derived<A, E, R>, never, R | Scope.Scope>
|
|
285
|
+
} = function make<A, E, R>(
|
|
286
|
+
fxOrEffect: Fx<A, E, R> | Effect.Effect<A, E, R> | RefSubject<A, E, R>,
|
|
281
287
|
options?: RefSubjectOptions<A>
|
|
282
288
|
): Effect.Effect<any, never, R | Scope.Scope> {
|
|
283
|
-
if (RefSubjectTypeId in fxOrEffect) return fromRefSubject(fxOrEffect as RefSubject<
|
|
289
|
+
if (RefSubjectTypeId in fxOrEffect) return fromRefSubject(fxOrEffect as RefSubject<A, E, R>, options)
|
|
284
290
|
else if (TypeId in fxOrEffect) return fromFx(fxOrEffect, options)
|
|
285
291
|
else return fromEffect(fxOrEffect, options)
|
|
286
292
|
}
|
|
@@ -291,7 +297,7 @@ export const make: {
|
|
|
291
297
|
export function of<A, E = never>(
|
|
292
298
|
a: A,
|
|
293
299
|
options?: RefSubjectOptions<A>
|
|
294
|
-
): Effect.Effect<RefSubject<
|
|
300
|
+
): Effect.Effect<RefSubject<A, E>, never, Scope.Scope> {
|
|
295
301
|
return Effect.acquireRelease(
|
|
296
302
|
withScopeAndFiberId(
|
|
297
303
|
(scope, id) =>
|
|
@@ -308,13 +314,11 @@ export function of<A, E = never>(
|
|
|
308
314
|
)
|
|
309
315
|
}
|
|
310
316
|
|
|
311
|
-
const withScopeAndFiberId = <
|
|
317
|
+
const withScopeAndFiberId = <A, E, R>(
|
|
312
318
|
f: (scope: Scope.CloseableScope, id: FiberId.FiberId) => Effect.Effect<A, E, R>,
|
|
313
319
|
strategy: ExecutionStrategy.ExecutionStrategy
|
|
314
320
|
) => Effect.fiberIdWith((id) => withScope((scope) => f(scope, id), strategy))
|
|
315
321
|
|
|
316
|
-
const emptyContext = C.empty()
|
|
317
|
-
|
|
318
322
|
/**
|
|
319
323
|
* @since 1.20.0
|
|
320
324
|
*/
|
|
@@ -326,10 +330,10 @@ export function unsafeMake<E, A>(
|
|
|
326
330
|
readonly scope: Scope.CloseableScope
|
|
327
331
|
readonly initialValue?: A
|
|
328
332
|
}
|
|
329
|
-
): Effect.Effect<RefSubject<
|
|
333
|
+
): Effect.Effect<RefSubject<A, E>> {
|
|
330
334
|
const { id, initial, options, scope } = params
|
|
331
|
-
return Effect.
|
|
332
|
-
const core = unsafeMakeCore(initial, id,
|
|
335
|
+
return Effect.flatMap(Effect.runtime(), (runtime) => {
|
|
336
|
+
const core = unsafeMakeCore(initial, id, runtime, scope, options)
|
|
333
337
|
|
|
334
338
|
// Sometimes we might be instantiating directly from a known value
|
|
335
339
|
// Here we seed the value and ensure the subject has it as well for re-broadcasting
|
|
@@ -342,8 +346,8 @@ 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
|
|
@@ -352,16 +356,16 @@ class RefSubjectImpl<R, E, A, R2> extends FxEffectBase<Exclude<R, R2> | Scope.Sc
|
|
|
352
356
|
readonly interrupt: Effect.Effect<void, never, Exclude<R, R2>>
|
|
353
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
|
|
|
362
366
|
this.version = Effect.sync(() => core.deferredRef.version)
|
|
363
|
-
this.interrupt = Effect.provide(interruptCore(core), core.
|
|
364
|
-
this.subscriberCount = Effect.provide(core.subject.subscriberCount, core.
|
|
367
|
+
this.interrupt = Effect.provide(interruptCore(core), core.runtime)
|
|
368
|
+
this.subscriberCount = Effect.provide(core.subject.subscriberCount, core.runtime)
|
|
365
369
|
this.getSetDelete = getSetDelete(core)
|
|
366
370
|
|
|
367
371
|
this.runUpdates = this.runUpdates.bind(this)
|
|
@@ -369,15 +373,15 @@ 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
|
-
onSuccess: () => Effect.provide(this.core.subject.run(sink), this.core.
|
|
379
|
+
onSuccess: () => Effect.provide(this.core.subject.run(sink), this.core.runtime)
|
|
376
380
|
})
|
|
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
|
}
|
|
@@ -395,9 +399,9 @@ class RefSubjectImpl<R, E, A, R2> extends FxEffectBase<Exclude<R, R2> | Scope.Sc
|
|
|
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<
|
|
404
|
+
core: RefSubjectCore<A, E, R, R2>,
|
|
401
405
|
readonly persist: Effect.Effect<void, never, Exclude<R, R2>>
|
|
402
406
|
) {
|
|
403
407
|
super(core)
|
|
@@ -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,7 +438,7 @@ 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
|
*/
|
|
@@ -449,7 +453,7 @@ export interface GetSetDelete<R, E, A> {
|
|
|
449
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,15 +465,15 @@ 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,
|
|
468
|
+
<A, E2, R2>(
|
|
465
469
|
f: (value: A) => Effect.Effect<A, E2, R2>
|
|
466
|
-
): <
|
|
467
|
-
<
|
|
468
|
-
ref: RefSubject<
|
|
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>,
|
|
469
473
|
f: (value: A) => Effect.Effect<A, E2, R2>
|
|
470
474
|
): Effect.Effect<A, E | E2, R | R2>
|
|
471
|
-
} = dual(2, function updateEffect<
|
|
472
|
-
ref: RefSubject<
|
|
475
|
+
} = dual(2, function updateEffect<A, E, R, E2, R2>(
|
|
476
|
+
ref: RefSubject<A, E, R>,
|
|
473
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))
|
|
@@ -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,15 +493,15 @@ export const update: {
|
|
|
489
493
|
* @since 1.20.0
|
|
490
494
|
*/
|
|
491
495
|
export const modifyEffect: {
|
|
492
|
-
<A,
|
|
496
|
+
<A, B, E2, R2>(
|
|
493
497
|
f: (value: A) => Effect.Effect<readonly [B, A], E2, R2>
|
|
494
|
-
): <
|
|
495
|
-
<
|
|
496
|
-
ref: RefSubject<
|
|
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>,
|
|
497
501
|
f: (value: A) => Effect.Effect<readonly [B, A], E2, R2>
|
|
498
502
|
): Effect.Effect<B, E | E2, R | R2>
|
|
499
|
-
} = dual(2, function modifyEffect<
|
|
500
|
-
ref: RefSubject<
|
|
503
|
+
} = dual(2, function modifyEffect<A, E, R, B, E2, R2>(
|
|
504
|
+
ref: RefSubject<A, E, R>,
|
|
501
505
|
f: (value: A) => Effect.Effect<readonly [B, A], E2, R2>
|
|
502
506
|
) {
|
|
503
507
|
return ref.runUpdates(
|
|
@@ -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,25 +529,25 @@ 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
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
543
|
| { readonly onInterrupt: (value: A) => Effect.Effect<C, E3, R3>; readonly value?: "initial" | "current" }
|
|
540
544
|
| undefined
|
|
541
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
552
|
readonly onInterrupt: (value: A) => Effect.Effect<C, E3, R3>
|
|
549
553
|
readonly value?: "initial" | "current"
|
|
@@ -585,11 +589,11 @@ export const runUpdates: {
|
|
|
585
589
|
}
|
|
586
590
|
)
|
|
587
591
|
|
|
588
|
-
class RefSubjectCore<
|
|
592
|
+
class RefSubjectCore<A, E, R, R2> {
|
|
589
593
|
constructor(
|
|
590
594
|
readonly initial: Effect.Effect<A, E, R>,
|
|
591
|
-
readonly subject: Subject.Subject<
|
|
592
|
-
readonly
|
|
595
|
+
readonly subject: Subject.Subject<A, E, R>,
|
|
596
|
+
readonly runtime: Runtime.Runtime<R2>,
|
|
593
597
|
readonly scope: Scope.CloseableScope,
|
|
594
598
|
readonly deferredRef: DeferredRef.DeferredRef<E, A>,
|
|
595
599
|
readonly semaphore: Effect.Semaphore
|
|
@@ -598,28 +602,28 @@ class RefSubjectCore<R, E, A, R2> {
|
|
|
598
602
|
public _fiber: Fiber.Fiber<A, E> | undefined = undefined
|
|
599
603
|
}
|
|
600
604
|
|
|
601
|
-
function makeCore<
|
|
605
|
+
function makeCore<A, E, R>(
|
|
602
606
|
initial: Effect.Effect<A, E, R>,
|
|
603
607
|
options?: RefSubjectOptions<A>
|
|
604
608
|
) {
|
|
605
|
-
return Effect.
|
|
606
|
-
Effect.bindTo("
|
|
609
|
+
return Effect.runtime<R | Scope.Scope>().pipe(
|
|
610
|
+
Effect.bindTo("runtime"),
|
|
607
611
|
Effect.let("executionStrategy", () => options?.executionStrategy ?? ExecutionStrategy.parallel),
|
|
608
612
|
Effect.bind(
|
|
609
613
|
"scope",
|
|
610
|
-
({
|
|
614
|
+
({ executionStrategy, runtime }) => Scope.fork(C.get(runtime.context, Scope.Scope), executionStrategy)
|
|
611
615
|
),
|
|
612
616
|
Effect.bind(
|
|
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
|
-
Effect.map(({
|
|
622
|
+
Effect.map(({ deferredRef, runtime, scope, subject }) =>
|
|
619
623
|
new RefSubjectCore(
|
|
620
624
|
initial,
|
|
621
625
|
subject,
|
|
622
|
-
|
|
626
|
+
runtime,
|
|
623
627
|
scope,
|
|
624
628
|
deferredRef,
|
|
625
629
|
Effect.unsafeMakeSemaphore(1)
|
|
@@ -628,25 +632,25 @@ function makeCore<R, E, A>(
|
|
|
628
632
|
)
|
|
629
633
|
}
|
|
630
634
|
|
|
631
|
-
function unsafeMakeCore<
|
|
635
|
+
function unsafeMakeCore<A, E, R>(
|
|
632
636
|
initial: Effect.Effect<A, E, R>,
|
|
633
637
|
id: FiberId.FiberId,
|
|
634
|
-
|
|
638
|
+
runtime: Runtime.Runtime<R>,
|
|
635
639
|
scope: Scope.CloseableScope,
|
|
636
640
|
options?: RefSubjectOptions<A>
|
|
637
641
|
) {
|
|
638
642
|
return new RefSubjectCore(
|
|
639
643
|
initial,
|
|
640
|
-
Subject.unsafeMake<
|
|
641
|
-
|
|
644
|
+
Subject.unsafeMake<A, E>(Math.max(1, options?.replay ?? 1)),
|
|
645
|
+
runtime,
|
|
642
646
|
scope,
|
|
643
647
|
DeferredRef.unsafeMake(id, getExitEquivalence(options?.eq ?? Equal.equals)),
|
|
644
648
|
Effect.unsafeMakeSemaphore(1)
|
|
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
655
|
): Effect.Effect<A, E, Exclude<R, R2>> {
|
|
652
656
|
return Effect.suspend(() => {
|
|
@@ -658,12 +662,12 @@ 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
668
|
): Effect.Effect<Fiber.Fiber<A, E>, never, Exclude<R, R2>> {
|
|
665
669
|
const initialize = Effect.onExit(
|
|
666
|
-
Effect.provide(core.initial, core.
|
|
670
|
+
Effect.provide(core.initial, core.runtime),
|
|
667
671
|
(exit) =>
|
|
668
672
|
Effect.sync(() => {
|
|
669
673
|
core._fiber = undefined
|
|
@@ -680,8 +684,8 @@ 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
690
|
): Effect.Effect<Fiber.Fiber<A, E>, never, Exclude<R, R2>> {
|
|
687
691
|
type Z = Effect.Effect<Fiber.Fiber<A, E>, never, Exclude<R, R2>>
|
|
@@ -710,8 +714,8 @@ 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
720
|
): Effect.Effect<A, E, Exclude<R, R2>> {
|
|
717
721
|
return Effect.zipRight(
|
|
@@ -720,7 +724,7 @@ function initializeCoreAndTap<R, E, A, R2>(
|
|
|
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,8 +762,8 @@ 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<
|
|
765
|
+
function deleteCore<A, E, R, R2>(
|
|
766
|
+
core: RefSubjectCore<A, E, R, R2>
|
|
763
767
|
): Effect.Effect<Option.Option<A>, E, Exclude<R, R2>> {
|
|
764
768
|
return Effect.suspend(() => {
|
|
765
769
|
const current = core.deferredRef.current
|
|
@@ -770,7 +774,7 @@ function deleteCore<R, E, A, R2>(
|
|
|
770
774
|
}
|
|
771
775
|
|
|
772
776
|
return core.subject.subscriberCount.pipe(
|
|
773
|
-
Effect.provide(core.
|
|
777
|
+
Effect.provide(core.runtime),
|
|
774
778
|
Effect.flatMap(
|
|
775
779
|
(count: number) => count > 0 && !core._fiber ? initializeCore(core, false) : Effect.unit
|
|
776
780
|
),
|
|
@@ -779,8 +783,8 @@ function deleteCore<R, E, A, R2>(
|
|
|
779
783
|
})
|
|
780
784
|
}
|
|
781
785
|
|
|
782
|
-
function tapEventCore<
|
|
783
|
-
core: RefSubjectCore<
|
|
786
|
+
function tapEventCore<A, E, R, R2, R3>(
|
|
787
|
+
core: RefSubjectCore<A, E, R, R2>,
|
|
784
788
|
effect: Effect.Effect<A, E, R3>
|
|
785
789
|
) {
|
|
786
790
|
return effect.pipe(
|
|
@@ -790,14 +794,14 @@ function tapEventCore<R, E, A, R2, R3>(
|
|
|
790
794
|
)
|
|
791
795
|
}
|
|
792
796
|
|
|
793
|
-
function sendEvent<
|
|
794
|
-
core: RefSubjectCore<
|
|
797
|
+
function sendEvent<A, E, R, R2>(
|
|
798
|
+
core: RefSubjectCore<A, E, R, R2>,
|
|
795
799
|
exit: Exit.Exit<A, E>
|
|
796
800
|
): Effect.Effect<unknown, never, Exclude<R, R2>> {
|
|
797
801
|
if (Exit.isSuccess(exit)) {
|
|
798
|
-
return Effect.provide(core.subject.onSuccess(exit.value), core.
|
|
802
|
+
return Effect.provide(core.subject.onSuccess(exit.value), core.runtime)
|
|
799
803
|
} else {
|
|
800
|
-
return Effect.provide(core.subject.onFailure(exit.cause), core.
|
|
804
|
+
return Effect.provide(core.subject.onFailure(exit.cause), core.runtime)
|
|
801
805
|
}
|
|
802
806
|
}
|
|
803
807
|
|
|
@@ -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,
|
|
812
|
+
<A, B, E2, R2>(
|
|
809
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
|
+
<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>,
|
|
815
819
|
f: (a: A) => Effect.Effect<C, E2, R2>
|
|
816
|
-
): Computed<
|
|
820
|
+
): Computed<C, E0 | E | E2, R0 | R | R2>
|
|
817
821
|
}
|
|
818
822
|
|
|
819
|
-
<
|
|
820
|
-
ref: RefSubject<
|
|
823
|
+
<A, E, R, B, E2, R2>(
|
|
824
|
+
ref: RefSubject<A, E, R> | Computed<A, E, R>,
|
|
821
825
|
f: (a: A) => Effect.Effect<B, E2, R2>
|
|
822
|
-
): Computed<
|
|
826
|
+
): Computed<B, E | E2, R | R2>
|
|
823
827
|
|
|
824
|
-
<
|
|
825
|
-
ref: Filtered<
|
|
828
|
+
<A, E, R, B, E2, R2>(
|
|
829
|
+
ref: Filtered<A, E, R>,
|
|
826
830
|
f: (a: A) => Effect.Effect<B, E2, R2>
|
|
827
|
-
): Filtered<
|
|
831
|
+
): Filtered<B, E | E2, R | R2>
|
|
828
832
|
|
|
829
|
-
<R0, E0,
|
|
830
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
833
|
+
<R0, E0, A, E, R, E2, R2, C, E3, R3>(
|
|
834
|
+
versioned: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
831
835
|
f: (a: A) => Effect.Effect<C, E3, R3>
|
|
832
|
-
): Computed<
|
|
833
|
-
} = dual(2, function mapEffect<R0, E0,
|
|
834
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
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>,
|
|
835
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,
|
|
888
|
+
<A, B, E2, R2>(
|
|
885
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
|
+
<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>,
|
|
891
895
|
f: (a: A) => Effect.Effect<Option.Option<B>, E2, R2>
|
|
892
|
-
): Filtered<
|
|
896
|
+
): Filtered<B, E0 | E | E2, R0 | R2>
|
|
893
897
|
}
|
|
894
898
|
|
|
895
|
-
<
|
|
896
|
-
ref: RefSubject<
|
|
899
|
+
<A, E, R, B, E2, R2>(
|
|
900
|
+
ref: RefSubject<A, E, R> | Computed<A, E, R> | Filtered<A, E, R>,
|
|
897
901
|
f: (a: A) => Effect.Effect<Option.Option<B>, E2, R2>
|
|
898
|
-
): Filtered<
|
|
899
|
-
<R0, E0,
|
|
900
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
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>,
|
|
901
905
|
f: (a: A) => Effect.Effect<Option.Option<B>, E3, R3>
|
|
902
|
-
): Filtered<
|
|
903
|
-
} = dual(2, function filterMapEffect<R0, E0,
|
|
904
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
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>,
|
|
905
909
|
f: (a: A) => Effect.Effect<Option.Option<B>, E3, R3>
|
|
906
|
-
): Filtered<R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | 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<
|
|
970
|
+
<A, E, R, E2, R2>(
|
|
971
|
+
ref: RefSubject<A, E, R> | Computed<A, E, R> | Filtered<A, E, R>,
|
|
963
972
|
f: (a: A) => Effect.Effect<boolean, E2, R2>
|
|
964
|
-
): Filtered<
|
|
965
|
-
<R0, E0,
|
|
966
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
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>,
|
|
967
976
|
f: (a: A) => Effect.Effect<boolean, E3, R3>
|
|
968
|
-
): Filtered<
|
|
969
|
-
} = dual(2, function filterEffect<R0, E0,
|
|
970
|
-
versioned: Versioned.Versioned<R0, E0,
|
|
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>,
|
|
971
980
|
f: (a: A) => Effect.Effect<boolean, E3, R3>
|
|
972
|
-
): Filtered<R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | 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,45 +987,45 @@ 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,
|
|
1028
|
+
readonly input: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
1020
1029
|
readonly f: (a: A) => Effect.Effect<C, E3, R3>
|
|
1021
1030
|
) {
|
|
1022
1031
|
super(
|
|
@@ -1026,34 +1035,34 @@ 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,
|
|
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>,
|
|
1031
1040
|
f: (a: A) => Effect.Effect<C, E3, R3>
|
|
1032
|
-
): Computed<R0 | Exclude<R, Scope.Scope> | R2 | R3 | R2 | 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,
|
|
1065
|
+
readonly input: Versioned.Versioned<R0, E0, A, E, R, A, E2, R2>,
|
|
1057
1066
|
readonly f: (a: A) => Effect.Effect<Option.Option<C>, E3, R3>
|
|
1058
1067
|
) {
|
|
1059
1068
|
super(
|
|
@@ -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,
|
|
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>,
|
|
1068
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,48 +1126,48 @@ 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<
|
|
1161
|
+
export function transformOrFail<R, E, A, E2, R2, R3, E3, B>(
|
|
1162
|
+
ref: RefSubject<A, E, R>,
|
|
1154
1163
|
from: (a: A) => Effect.Effect<B, E2, R2>,
|
|
1155
1164
|
to: (b: B) => Effect.Effect<A, E3, R3>
|
|
1156
|
-
): RefSubject<
|
|
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
|
|
@@ -1168,7 +1177,7 @@ class RefSubjectTransform<R, E, A, B> extends FxEffectBase<R | Scope.Scope, E, B
|
|
|
1168
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({
|
|
@@ -1208,9 +1217,9 @@ class RefSubjectTransform<R, E, A, B> extends FxEffectBase<R | Scope.Scope, E, B
|
|
|
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
|
|
@@ -1218,10 +1227,10 @@ class RefSubjectTransformEffect<R, E, A, R2, E2, B, R3, E3>
|
|
|
1218
1227
|
readonly version: Effect.Effect<number, E, R>
|
|
1219
1228
|
readonly interrupt: Effect.Effect<void, never, R>
|
|
1220
1229
|
readonly subscriberCount: Effect.Effect<number, never, R>
|
|
1221
|
-
readonly subject: Subject.Subject<
|
|
1230
|
+
readonly subject: Subject.Subject<B, E | E2 | E3>
|
|
1222
1231
|
|
|
1223
1232
|
constructor(
|
|
1224
|
-
readonly ref: RefSubject<
|
|
1233
|
+
readonly ref: RefSubject<A, E, R>,
|
|
1225
1234
|
readonly from: (a: A) => Effect.Effect<B, E2, R2>,
|
|
1226
1235
|
readonly to: (b: B) => Effect.Effect<A, E3, R3>
|
|
1227
1236
|
) {
|
|
@@ -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({
|
|
@@ -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,16 +1401,16 @@ 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
|
|
@@ -1411,20 +1420,20 @@ class RefSubjectTuple<
|
|
|
1411
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,11 +1462,11 @@ 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
1471
|
): Effect.Effect<unknown, never, Effect.Effect.Context<Refs[number]> | R2> {
|
|
1463
1472
|
return this.versioned.run(sink)
|
|
@@ -1471,14 +1480,14 @@ class RefSubjectTuple<
|
|
|
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
1492
|
) => Effect.Effect<C, E2, R2>
|
|
1484
1493
|
) {
|
|
@@ -1536,23 +1545,23 @@ 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
|
|
@@ -1567,20 +1576,20 @@ class RefSubjectStruct<
|
|
|
1567
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,9 +1618,9 @@ 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
1625
|
): Effect.Effect<unknown, never, Effect.Effect.Context<Refs[keyof Refs]> | R3> {
|
|
1617
1626
|
return this.versioned.run(sink)
|
|
@@ -1625,14 +1634,14 @@ class RefSubjectStruct<
|
|
|
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
1646
|
) => Effect.Effect<C, E2, R2>
|
|
1638
1647
|
) {
|
|
@@ -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,16 +1736,16 @@ 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
|
|
@@ -1746,7 +1755,7 @@ class RefSubjectTagged<I, E, A> extends FxEffectBase<
|
|
|
1746
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,7 +1770,7 @@ class RefSubjectTagged<I, E, A> extends FxEffectBase<
|
|
|
1761
1770
|
}
|
|
1762
1771
|
|
|
1763
1772
|
run<R2 = never>(
|
|
1764
|
-
sink: Sink.Sink<
|
|
1773
|
+
sink: Sink.Sink<A, E, R2>
|
|
1765
1774
|
): Effect.Effect<unknown, never, I | R2 | Scope.Scope> {
|
|
1766
1775
|
return this.tag.withEffect((ref) => ref.run(sink))
|
|
1767
1776
|
}
|
|
@@ -1770,8 +1779,8 @@ class RefSubjectTagged<I, E, A> extends FxEffectBase<
|
|
|
1770
1779
|
return this.tag.withEffect((ref) => ref)
|
|
1771
1780
|
}
|
|
1772
1781
|
|
|
1773
|
-
runUpdates<
|
|
1774
|
-
run: (ref: GetSetDelete<
|
|
1782
|
+
runUpdates<E2, R2, C>(
|
|
1783
|
+
run: (ref: GetSetDelete<A, E, I>) => Effect.Effect<C, E2, R2>
|
|
1775
1784
|
): Effect.Effect<C, E2, I | R2> {
|
|
1776
1785
|
return this.tag.withEffect((ref) => ref.runUpdates(run))
|
|
1777
1786
|
}
|
|
@@ -1785,7 +1794,7 @@ class RefSubjectTagged<I, E, A> extends FxEffectBase<
|
|
|
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
1799
|
): Layer.Layer<I, never, R> => this.tag.scoped(make(fxOrEffect, options))
|
|
1791
1800
|
}
|
|
@@ -1793,21 +1802,21 @@ class RefSubjectTagged<I, E, A> extends FxEffectBase<
|
|
|
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
|
|
|
@@ -1815,12 +1824,12 @@ class RefSubjectFromTag<I, S, R, E, A> extends FxEffectBase<
|
|
|
1815
1824
|
readonly interrupt: Effect.Effect<void, never, I | R>
|
|
1816
1825
|
readonly subscriberCount: Effect.Effect<number, never, I | R>
|
|
1817
1826
|
|
|
1818
|
-
private _get: Effect.Effect<RefSubject<
|
|
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,7 +1841,7 @@ 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
|
|
|
@@ -1840,8 +1849,8 @@ class RefSubjectFromTag<I, S, R, E, A> extends FxEffectBase<
|
|
|
1840
1849
|
return Effect.flatten(this._get)
|
|
1841
1850
|
}
|
|
1842
1851
|
|
|
1843
|
-
runUpdates<
|
|
1844
|
-
run: (ref: GetSetDelete<
|
|
1852
|
+
runUpdates<E2, R2, C>(
|
|
1853
|
+
run: (ref: GetSetDelete<A, E, R | I>) => Effect.Effect<C, E2, R2>
|
|
1845
1854
|
): Effect.Effect<C, E2, I | R | R2> {
|
|
1846
1855
|
return Effect.flatMap(this._get, (ref) => ref.runUpdates(run))
|
|
1847
1856
|
}
|
|
@@ -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
1931
|
readonly version: Effect.Effect<number, E, I | R>
|
|
1923
1932
|
|
|
1924
|
-
private _get: Effect.Effect<Computed<
|
|
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,7 +1942,7 @@ 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
|
|
|
@@ -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
1974
|
readonly version: Effect.Effect<number, E, I | R>
|
|
1966
1975
|
|
|
1967
|
-
private _get: Effect.Effect<Filtered<
|
|
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,7 +1985,7 @@ 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
|
|
|
@@ -1984,7 +1993,7 @@ class FilteredFromTag<I, S, R, E, A> extends FxEffectBase<
|
|
|
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,35 +2003,35 @@ 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
2011
|
<R2, S>(layer: Layer.Layer<S, never, R2>): {
|
|
2003
|
-
<
|
|
2004
|
-
<
|
|
2005
|
-
<
|
|
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
|
|
2028
|
+
): RefSubject<A, E, Exclude<R, S>>
|
|
2020
2029
|
|
|
2021
|
-
<
|
|
2022
|
-
<
|
|
2023
|
-
<
|
|
2024
|
-
} = dual(2, function provide<
|
|
2025
|
-
ref: RefSubject<
|
|
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>,
|
|
2026
2035
|
providing: Layer.Layer<S, never, R2> | C.Context<S> | Runtime.Runtime<S>
|
|
2027
2036
|
) {
|
|
2028
2037
|
const layer = Layer.isLayer(providing)
|
|
@@ -2040,13 +2049,13 @@ 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
|
|
@@ -2055,7 +2064,7 @@ class RefSubjectProvide<R, E, A, R2, S> extends FxEffectBase<
|
|
|
2055
2064
|
readonly subscriberCount: Effect.Effect<number, never, Exclude<R, S> | R2>
|
|
2056
2065
|
|
|
2057
2066
|
constructor(
|
|
2058
|
-
readonly ref: RefSubject<
|
|
2067
|
+
readonly ref: RefSubject<A, E, R>,
|
|
2059
2068
|
readonly layer: Layer.Layer<S, never, R2>
|
|
2060
2069
|
) {
|
|
2061
2070
|
super()
|
|
@@ -2065,7 +2074,7 @@ class RefSubjectProvide<R, E, A, R2, S> extends FxEffectBase<
|
|
|
2065
2074
|
}
|
|
2066
2075
|
|
|
2067
2076
|
run<R3>(
|
|
2068
|
-
sink: Sink.Sink<
|
|
2077
|
+
sink: Sink.Sink<A, E, R3>
|
|
2069
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
|
}
|
|
@@ -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
2168
|
readonly version: Effect.Effect<number, E, R>
|
|
2160
2169
|
readonly interrupt: Effect.Effect<void, never, R>
|
|
2161
2170
|
readonly subscriberCount: Effect.Effect<number, never, R>
|
|
2162
|
-
private _fx: Fx<Scope.Scope | 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,7 +2184,7 @@ 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
|
|
|
@@ -2183,8 +2192,8 @@ class RefSubjectSlice<R, E, A> extends FxEffectBase<R | Scope.Scope, E, A, R, E,
|
|
|
2183
2192
|
return this.ref
|
|
2184
2193
|
}
|
|
2185
2194
|
|
|
2186
|
-
runUpdates<
|
|
2187
|
-
run: (ref: GetSetDelete<
|
|
2195
|
+
runUpdates<E2, R2, C>(
|
|
2196
|
+
run: (ref: GetSetDelete<A, E, R>) => Effect.Effect<C, E2, R2>
|
|
2188
2197
|
): Effect.Effect<C, E2, R | R2> {
|
|
2189
2198
|
return this.ref.runUpdates(run)
|
|
2190
2199
|
}
|