@typed/fx 1.22.2 → 1.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/AsyncData.js.map +1 -1
- package/dist/cjs/Form.js.map +1 -1
- package/dist/cjs/FormEntry.js.map +1 -1
- package/dist/cjs/Fx.js +1 -1
- package/dist/cjs/Fx.js.map +1 -1
- package/dist/cjs/Idle.js.map +1 -1
- package/dist/cjs/Match.js.map +1 -1
- package/dist/cjs/Pull.js +5 -3
- package/dist/cjs/Pull.js.map +1 -1
- package/dist/cjs/RefArray.js.map +1 -1
- package/dist/cjs/RefChunk.js.map +1 -1
- package/dist/cjs/RefHashSet.js.map +1 -1
- package/dist/cjs/RefSubject.js +3 -2
- package/dist/cjs/RefSubject.js.map +1 -1
- package/dist/cjs/Sink.js.map +1 -1
- package/dist/cjs/Subject.js.map +1 -1
- package/dist/cjs/Versioned.js.map +1 -1
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/helpers.js.map +1 -1
- package/dist/cjs/internal/keyed.js +1 -1
- package/dist/cjs/internal/keyed.js.map +1 -1
- package/dist/cjs/internal/provide.js.map +1 -1
- package/dist/cjs/internal/share.js.map +1 -1
- package/dist/cjs/internal/sync-producer.js.map +1 -1
- package/dist/dts/AsyncData.d.ts +53 -53
- package/dist/dts/AsyncData.d.ts.map +1 -1
- package/dist/dts/Emitter.d.ts +7 -7
- package/dist/dts/Emitter.d.ts.map +1 -1
- package/dist/dts/Form.d.ts +14 -14
- package/dist/dts/Form.d.ts.map +1 -1
- package/dist/dts/FormEntry.d.ts +11 -11
- package/dist/dts/FormEntry.d.ts.map +1 -1
- package/dist/dts/Fx.d.ts +417 -417
- package/dist/dts/Fx.d.ts.map +1 -1
- package/dist/dts/Guard.d.ts +21 -21
- package/dist/dts/Guard.d.ts.map +1 -1
- package/dist/dts/Idle.d.ts +12 -12
- package/dist/dts/Idle.d.ts.map +1 -1
- package/dist/dts/Match.d.ts +16 -16
- package/dist/dts/Match.d.ts.map +1 -1
- package/dist/dts/Pull.d.ts +5 -5
- package/dist/dts/Pull.d.ts.map +1 -1
- package/dist/dts/Push.d.ts +40 -40
- package/dist/dts/Push.d.ts.map +1 -1
- package/dist/dts/RefArray.d.ts +59 -59
- package/dist/dts/RefArray.d.ts.map +1 -1
- package/dist/dts/RefChunk.d.ts +45 -45
- package/dist/dts/RefChunk.d.ts.map +1 -1
- package/dist/dts/RefHashMap.d.ts +35 -35
- package/dist/dts/RefHashMap.d.ts.map +1 -1
- package/dist/dts/RefHashSet.d.ts +17 -17
- package/dist/dts/RefHashSet.d.ts.map +1 -1
- package/dist/dts/RefSubject.d.ts +136 -136
- package/dist/dts/RefSubject.d.ts.map +1 -1
- package/dist/dts/Sink.d.ts +63 -63
- package/dist/dts/Sink.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +11 -11
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/Subject.d.ts +13 -13
- package/dist/dts/Subject.d.ts.map +1 -1
- package/dist/dts/Typeclass.d.ts +1 -1
- package/dist/dts/Typeclass.d.ts.map +1 -1
- package/dist/dts/Versioned.d.ts +33 -33
- package/dist/dts/Versioned.d.ts.map +1 -1
- package/dist/dts/index.d.ts +1 -1
- package/dist/dts/internal/DeferredRef.d.ts +8 -8
- package/dist/dts/internal/DeferredRef.d.ts.map +1 -1
- package/dist/dts/internal/core.d.ts +191 -191
- package/dist/dts/internal/core.d.ts.map +1 -1
- package/dist/dts/internal/effect-loop-operator.d.ts +6 -6
- package/dist/dts/internal/effect-loop-operator.d.ts.map +1 -1
- package/dist/dts/internal/effect-operator.d.ts +16 -16
- package/dist/dts/internal/effect-operator.d.ts.map +1 -1
- package/dist/dts/internal/effect-producer.d.ts +13 -13
- package/dist/dts/internal/effect-producer.d.ts.map +1 -1
- package/dist/dts/internal/helpers.d.ts +26 -26
- package/dist/dts/internal/helpers.d.ts.map +1 -1
- package/dist/dts/internal/keyed.d.ts +1 -1
- package/dist/dts/internal/keyed.d.ts.map +1 -1
- package/dist/dts/internal/loop-operator.d.ts +2 -2
- package/dist/dts/internal/loop-operator.d.ts.map +1 -1
- package/dist/dts/internal/operator.d.ts +2 -2
- package/dist/dts/internal/operator.d.ts.map +1 -1
- package/dist/dts/internal/protos.d.ts +12 -12
- package/dist/dts/internal/protos.d.ts.map +1 -1
- package/dist/dts/internal/provide.d.ts +15 -15
- package/dist/dts/internal/provide.d.ts.map +1 -1
- package/dist/dts/internal/share.d.ts +11 -11
- package/dist/dts/internal/share.d.ts.map +1 -1
- package/dist/dts/internal/sync-operator.d.ts +2 -2
- package/dist/dts/internal/sync-operator.d.ts.map +1 -1
- package/dist/dts/internal/sync-producer.d.ts +6 -6
- package/dist/dts/internal/sync-producer.d.ts.map +1 -1
- package/dist/dts/internal/withKey.d.ts +1 -1
- package/dist/dts/internal/withKey.d.ts.map +1 -1
- package/dist/esm/AsyncData.js.map +1 -1
- package/dist/esm/Form.js.map +1 -1
- package/dist/esm/FormEntry.js.map +1 -1
- package/dist/esm/Fx.js +1 -1
- package/dist/esm/Fx.js.map +1 -1
- package/dist/esm/Idle.js.map +1 -1
- package/dist/esm/Match.js.map +1 -1
- package/dist/esm/Pull.js +3 -3
- package/dist/esm/Pull.js.map +1 -1
- package/dist/esm/RefArray.js.map +1 -1
- package/dist/esm/RefChunk.js.map +1 -1
- package/dist/esm/RefHashSet.js.map +1 -1
- package/dist/esm/RefSubject.js +3 -1
- package/dist/esm/RefSubject.js.map +1 -1
- package/dist/esm/Sink.js.map +1 -1
- package/dist/esm/Subject.js.map +1 -1
- package/dist/esm/Versioned.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/helpers.js.map +1 -1
- package/dist/esm/internal/keyed.js +1 -1
- package/dist/esm/internal/keyed.js.map +1 -1
- package/dist/esm/internal/provide.js.map +1 -1
- package/dist/esm/internal/share.js.map +1 -1
- package/dist/esm/internal/sync-producer.js.map +1 -1
- package/package.json +6 -6
- package/src/AsyncData.ts +142 -144
- package/src/Emitter.ts +13 -13
- package/src/Form.ts +55 -55
- package/src/FormEntry.ts +39 -39
- package/src/Fx.ts +788 -789
- package/src/Guard.ts +43 -43
- package/src/Idle.ts +26 -26
- package/src/Match.ts +60 -61
- package/src/Pull.ts +42 -43
- package/src/Push.ts +195 -195
- package/src/RefArray.ts +121 -119
- package/src/RefChunk.ts +98 -97
- package/src/RefHashMap.ts +79 -79
- package/src/RefHashSet.ts +40 -39
- package/src/RefSubject.ts +574 -565
- package/src/Sink.ts +303 -303
- package/src/Stream.ts +27 -27
- package/src/Subject.ts +48 -46
- package/src/Typeclass.ts +2 -2
- package/src/Versioned.ts +97 -97
- package/src/index.ts +1 -1
- package/src/internal/DeferredRef.ts +7 -7
- package/src/internal/core.ts +768 -781
- package/src/internal/effect-loop-operator.ts +7 -7
- package/src/internal/effect-operator.ts +23 -23
- package/src/internal/effect-producer.ts +38 -38
- package/src/internal/helpers.ts +51 -51
- package/src/internal/keyed.ts +21 -21
- package/src/internal/loop-operator.ts +2 -2
- package/src/internal/operator.ts +2 -2
- package/src/internal/protos.ts +15 -15
- package/src/internal/provide.ts +27 -27
- package/src/internal/share.ts +25 -25
- package/src/internal/sync-operator.ts +4 -4
- package/src/internal/sync-producer.ts +15 -15
- package/src/internal/withKey.ts +13 -13
package/src/Sink.ts
CHANGED
|
@@ -17,9 +17,9 @@ import { type Bounds } from "./internal/bounds.js"
|
|
|
17
17
|
* Sink is a data structure which can be used to consume values from a stream.
|
|
18
18
|
* @since 1.20.0
|
|
19
19
|
*/
|
|
20
|
-
export interface Sink<
|
|
21
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<
|
|
22
|
-
onSuccess(value: A): Effect.Effect<
|
|
20
|
+
export interface Sink<in A, in E = never, out R = never> {
|
|
21
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, R>
|
|
22
|
+
onSuccess(value: A): Effect.Effect<unknown, never, R>
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
/**
|
|
@@ -29,24 +29,24 @@ export namespace Sink {
|
|
|
29
29
|
/**
|
|
30
30
|
* @since 1.20.0
|
|
31
31
|
*/
|
|
32
|
-
export type Context<T> = T extends Sink<infer
|
|
32
|
+
export type Context<T> = T extends Sink<infer _A, infer _E, infer R> ? R : never
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
35
|
* @since 1.20.0
|
|
36
36
|
*/
|
|
37
|
-
export type Error<T> = T extends Sink<infer
|
|
37
|
+
export type Error<T> = T extends Sink<infer _A, infer E, infer _R> ? E : never
|
|
38
38
|
|
|
39
39
|
/**
|
|
40
40
|
* @since 1.20.0
|
|
41
41
|
*/
|
|
42
|
-
export type Success<T> = T extends Sink<infer
|
|
42
|
+
export type Success<T> = T extends Sink<infer A, infer _E, infer _R> ? A : never
|
|
43
43
|
|
|
44
44
|
/**
|
|
45
45
|
* @since 1.20.0
|
|
46
46
|
*/
|
|
47
|
-
export interface Tagged<
|
|
48
|
-
readonly tag: C.Tagged<I, Sink<
|
|
49
|
-
readonly make: <R>(sink: Sink<
|
|
47
|
+
export interface Tagged<A, E, I> extends Sink<A, E, I> {
|
|
48
|
+
readonly tag: C.Tagged<I, Sink<A, E>>
|
|
49
|
+
readonly make: <R>(sink: Sink<A, E, R>) => Layer.Layer<I, never, R>
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
|
|
@@ -69,9 +69,9 @@ export type Success<T> = Sink.Success<T>
|
|
|
69
69
|
* @since 1.20.0
|
|
70
70
|
*/
|
|
71
71
|
export function make<E, R, A, R2>(
|
|
72
|
-
onFailure: (cause: Cause.Cause<E>) => Effect.Effect<
|
|
73
|
-
onSuccess: (value: A) => Effect.Effect<
|
|
74
|
-
): Sink<R | R2
|
|
72
|
+
onFailure: (cause: Cause.Cause<E>) => Effect.Effect<unknown, never, R>,
|
|
73
|
+
onSuccess: (value: A) => Effect.Effect<unknown, never, R2>
|
|
74
|
+
): Sink<A, E, R | R2> {
|
|
75
75
|
return {
|
|
76
76
|
onFailure,
|
|
77
77
|
onSuccess
|
|
@@ -84,19 +84,19 @@ export function make<E, R, A, R2>(
|
|
|
84
84
|
* @since 1.18.0
|
|
85
85
|
* @category models
|
|
86
86
|
*/
|
|
87
|
-
export interface WithEarlyExit<
|
|
88
|
-
readonly earlyExit: Effect.Effect<
|
|
87
|
+
export interface WithEarlyExit<A, E = never, R = never> extends Sink<A, E, R> {
|
|
88
|
+
readonly earlyExit: Effect.Effect<void>
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
/**
|
|
92
92
|
* @since 1.20.0
|
|
93
93
|
*/
|
|
94
|
-
export function withEarlyExit<
|
|
95
|
-
sink: Sink<
|
|
96
|
-
f: (sink: WithEarlyExit<
|
|
97
|
-
): Effect.Effect<R | R2
|
|
98
|
-
return Effect.asyncEffect<never, never, void, R | R2
|
|
99
|
-
const earlyExit: WithEarlyExit<
|
|
94
|
+
export function withEarlyExit<A, E, R, B, R2>(
|
|
95
|
+
sink: Sink<A, E, R>,
|
|
96
|
+
f: (sink: WithEarlyExit<A, E, R>) => Effect.Effect<B, E, R2>
|
|
97
|
+
): Effect.Effect<void, never, R | R2> {
|
|
98
|
+
return Effect.asyncEffect<void, never, never, void, never, R | R2>((resume) => {
|
|
99
|
+
const earlyExit: WithEarlyExit<A, E, R> = {
|
|
100
100
|
...sink,
|
|
101
101
|
earlyExit: Effect.sync(() => resume(Effect.unit))
|
|
102
102
|
}
|
|
@@ -114,25 +114,25 @@ export function withEarlyExit<R, E, A, R2, B>(
|
|
|
114
114
|
* @category combinators
|
|
115
115
|
*/
|
|
116
116
|
export const map: {
|
|
117
|
-
<B, A>(f: (b: B) => A): <
|
|
118
|
-
<
|
|
119
|
-
} = dual(2, function map<
|
|
120
|
-
sink: Sink<
|
|
117
|
+
<B, A>(f: (b: B) => A): <E, R>(sink: Sink<A, E, R>) => Sink<B, E, R>
|
|
118
|
+
<A, E, R, B>(sink: Sink<A, E, R>, f: (b: B) => A): Sink<B, E, R>
|
|
119
|
+
} = dual(2, function map<A, E, R, B>(
|
|
120
|
+
sink: Sink<A, E, R>,
|
|
121
121
|
f: (b: B) => A
|
|
122
|
-
): Sink<
|
|
122
|
+
): Sink<B, E, R> {
|
|
123
123
|
return new MapSink(sink, f)
|
|
124
124
|
})
|
|
125
125
|
|
|
126
|
-
class MapSink<
|
|
126
|
+
class MapSink<A, E, R, B> implements Sink<A, E, R> {
|
|
127
127
|
constructor(
|
|
128
|
-
readonly sink: Sink<
|
|
128
|
+
readonly sink: Sink<B, E, R>,
|
|
129
129
|
readonly f: (a: A) => B
|
|
130
130
|
) {
|
|
131
131
|
this.onFailure = this.onFailure.bind(this)
|
|
132
132
|
this.onSuccess = this.onSuccess.bind(this)
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<
|
|
135
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, R> {
|
|
136
136
|
return this.sink.onFailure(cause)
|
|
137
137
|
}
|
|
138
138
|
|
|
@@ -144,20 +144,20 @@ class MapSink<R, E, A, B> implements Sink<R, E, A> {
|
|
|
144
144
|
/**
|
|
145
145
|
* @since 1.20.0
|
|
146
146
|
*/
|
|
147
|
-
export function filter<
|
|
147
|
+
export function filter<A, E, R>(sink: Sink<A, E, R>, predicate: Predicate.Predicate<A>): Sink<A, E, R> {
|
|
148
148
|
return new FilterSink(sink, predicate)
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
-
class FilterSink<
|
|
151
|
+
class FilterSink<A, E, R> implements Sink<A, E, R> {
|
|
152
152
|
constructor(
|
|
153
|
-
readonly sink: Sink<
|
|
153
|
+
readonly sink: Sink<A, E, R>,
|
|
154
154
|
readonly predicate: Predicate.Predicate<A>
|
|
155
155
|
) {
|
|
156
156
|
this.onFailure = this.onFailure.bind(this)
|
|
157
157
|
this.onSuccess = this.onSuccess.bind(this)
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<
|
|
160
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, R> {
|
|
161
161
|
return this.sink.onFailure(cause)
|
|
162
162
|
}
|
|
163
163
|
|
|
@@ -170,20 +170,20 @@ class FilterSink<R, E, A> implements Sink<R, E, A> {
|
|
|
170
170
|
/**
|
|
171
171
|
* @since 1.20.0
|
|
172
172
|
*/
|
|
173
|
-
export function filterMap<
|
|
173
|
+
export function filterMap<A, E, R, B>(sink: Sink<B, E, R>, f: (a: A) => Option.Option<B>): Sink<A, E, R> {
|
|
174
174
|
return new FilterMapSink(sink, f)
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
-
class FilterMapSink<
|
|
177
|
+
class FilterMapSink<A, E, R, B> implements Sink<A, E, R> {
|
|
178
178
|
constructor(
|
|
179
|
-
readonly sink: Sink<
|
|
179
|
+
readonly sink: Sink<B, E, R>,
|
|
180
180
|
readonly f: (a: A) => Option.Option<B>
|
|
181
181
|
) {
|
|
182
182
|
this.onFailure = this.onFailure.bind(this)
|
|
183
183
|
this.onSuccess = this.onSuccess.bind(this)
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<
|
|
186
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, R> {
|
|
187
187
|
return this.sink.onFailure(cause)
|
|
188
188
|
}
|
|
189
189
|
|
|
@@ -198,27 +198,27 @@ class FilterMapSink<R, E, A, B> implements Sink<R, E, A> {
|
|
|
198
198
|
* @since 1.20.0
|
|
199
199
|
*/
|
|
200
200
|
export const mapEffect: {
|
|
201
|
-
<B,
|
|
202
|
-
sink: Sink<
|
|
203
|
-
) => Sink<
|
|
204
|
-
<
|
|
205
|
-
} = dual(2, function mapEffect<
|
|
206
|
-
sink: Sink<
|
|
207
|
-
f: (b: B) => Effect.Effect<
|
|
208
|
-
): Sink<
|
|
201
|
+
<B, A, E2, R2>(f: (b: B) => Effect.Effect<A, E2, R2>): <E, R>(
|
|
202
|
+
sink: Sink<A, E | E2, R>
|
|
203
|
+
) => Sink<B, E | E2, R | R2>
|
|
204
|
+
<A, E, R, B, E2, R2>(sink: Sink<A, E | E2, R>, f: (b: B) => Effect.Effect<A, E2, R2>): Sink<B, E | E2, R | R2>
|
|
205
|
+
} = dual(2, function mapEffect<A, E, R, B, E2, R2>(
|
|
206
|
+
sink: Sink<A, E | E2, R>,
|
|
207
|
+
f: (b: B) => Effect.Effect<A, E2, R2>
|
|
208
|
+
): Sink<B, E | E2, R | R2> {
|
|
209
209
|
return new MapEffectSink(sink, f)
|
|
210
210
|
})
|
|
211
211
|
|
|
212
|
-
class MapEffectSink<
|
|
212
|
+
class MapEffectSink<A, E, R, B, E2, R2> implements Sink<B, E2, R | R2> {
|
|
213
213
|
constructor(
|
|
214
|
-
readonly sink: Sink<
|
|
215
|
-
readonly f: (b: B) => Effect.Effect<
|
|
214
|
+
readonly sink: Sink<A, E | E2, R>,
|
|
215
|
+
readonly f: (b: B) => Effect.Effect<A, E2, R2>
|
|
216
216
|
) {
|
|
217
217
|
this.onFailure = this.onFailure.bind(this)
|
|
218
218
|
this.onSuccess = this.onSuccess.bind(this)
|
|
219
219
|
}
|
|
220
220
|
|
|
221
|
-
onFailure(cause: Cause.Cause<E2>): Effect.Effect<R | R2
|
|
221
|
+
onFailure(cause: Cause.Cause<E2>): Effect.Effect<unknown, never, R | R2> {
|
|
222
222
|
return this.sink.onFailure(cause)
|
|
223
223
|
}
|
|
224
224
|
|
|
@@ -231,31 +231,31 @@ class MapEffectSink<R, E, A, R2, E2, B> implements Sink<R | R2, E2, B> {
|
|
|
231
231
|
* @since 1.20.0
|
|
232
232
|
*/
|
|
233
233
|
export const filterMapEffect: {
|
|
234
|
-
<B,
|
|
235
|
-
sink: Sink<
|
|
236
|
-
) => Sink<
|
|
237
|
-
|
|
238
|
-
<
|
|
239
|
-
sink: Sink<
|
|
240
|
-
f: (b: B) => Effect.Effect<
|
|
241
|
-
): Sink<
|
|
242
|
-
} = dual(2, function filterMapEffect<
|
|
243
|
-
sink: Sink<
|
|
244
|
-
f: (b: B) => Effect.Effect<
|
|
245
|
-
): Sink<
|
|
234
|
+
<B, A, E2, R2>(f: (b: B) => Effect.Effect<Option.Option<A>, E2, R2>): <E, R>(
|
|
235
|
+
sink: Sink<A, E | E2, R>
|
|
236
|
+
) => Sink<B, E | E2, R | R2>
|
|
237
|
+
|
|
238
|
+
<A, E, R, B, E2, R2>(
|
|
239
|
+
sink: Sink<A, E | E2, R>,
|
|
240
|
+
f: (b: B) => Effect.Effect<Option.Option<A>, E2, R2>
|
|
241
|
+
): Sink<B, E | E2, R | R2>
|
|
242
|
+
} = dual(2, function filterMapEffect<A, E, R, B, E2, R2>(
|
|
243
|
+
sink: Sink<A, E | E2, R>,
|
|
244
|
+
f: (b: B) => Effect.Effect<Option.Option<A>, E2, R2>
|
|
245
|
+
): Sink<B, E | E2, R | R2> {
|
|
246
246
|
return new FilterMapEffectSink(sink, f)
|
|
247
247
|
})
|
|
248
248
|
|
|
249
|
-
class FilterMapEffectSink<
|
|
249
|
+
class FilterMapEffectSink<A, E, R, B, E2, R2> implements Sink<B, E2, R | R2> {
|
|
250
250
|
constructor(
|
|
251
|
-
readonly sink: Sink<
|
|
252
|
-
readonly f: (b: B) => Effect.Effect<
|
|
251
|
+
readonly sink: Sink<A, E | E2, R>,
|
|
252
|
+
readonly f: (b: B) => Effect.Effect<Option.Option<A>, E2, R2>
|
|
253
253
|
) {
|
|
254
254
|
this.onFailure = this.onFailure.bind(this)
|
|
255
255
|
this.onSuccess = this.onSuccess.bind(this)
|
|
256
256
|
}
|
|
257
257
|
|
|
258
|
-
onFailure(cause: Cause.Cause<E2>): Effect.Effect<R | R2
|
|
258
|
+
onFailure(cause: Cause.Cause<E2>): Effect.Effect<unknown, never, R | R2> {
|
|
259
259
|
return this.sink.onFailure(cause)
|
|
260
260
|
}
|
|
261
261
|
|
|
@@ -274,27 +274,27 @@ class FilterMapEffectSink<R, E, A, R2, E2, B> implements Sink<R | R2, E2, B> {
|
|
|
274
274
|
* @since 1.20.0
|
|
275
275
|
*/
|
|
276
276
|
export const filterEffect: {
|
|
277
|
-
<A,
|
|
278
|
-
sink: Sink<
|
|
279
|
-
) => Sink<
|
|
280
|
-
<
|
|
281
|
-
} = dual(2, function filterEffect<
|
|
282
|
-
sink: Sink<
|
|
283
|
-
f: (a: A) => Effect.Effect<
|
|
284
|
-
): Sink<R | R2
|
|
285
|
-
return new FilterEffectSink<R | R2
|
|
277
|
+
<A, E2, R2>(f: (a: A) => Effect.Effect<boolean, E2, R2>): <E, R>(
|
|
278
|
+
sink: Sink<A, E | E2, R>
|
|
279
|
+
) => Sink<A, E | E2, R | R2>
|
|
280
|
+
<A, E, R>(sink: Sink<A, E, R>, f: (a: A) => Effect.Effect<boolean, E, R>): Sink<A, E, R>
|
|
281
|
+
} = dual(2, function filterEffect<A, E, R, R2>(
|
|
282
|
+
sink: Sink<A, E, R>,
|
|
283
|
+
f: (a: A) => Effect.Effect<boolean, E, R2>
|
|
284
|
+
): Sink<A, E, R | R2> {
|
|
285
|
+
return new FilterEffectSink<A, E, R | R2>(sink, f)
|
|
286
286
|
})
|
|
287
287
|
|
|
288
|
-
class FilterEffectSink<
|
|
288
|
+
class FilterEffectSink<A, E, R> implements Sink<A, E, R> {
|
|
289
289
|
constructor(
|
|
290
|
-
readonly sink: Sink<
|
|
291
|
-
readonly f: (a: A) => Effect.Effect<
|
|
290
|
+
readonly sink: Sink<A, E, R>,
|
|
291
|
+
readonly f: (a: A) => Effect.Effect<boolean, E, R>
|
|
292
292
|
) {
|
|
293
293
|
this.onFailure = this.onFailure.bind(this)
|
|
294
294
|
this.onSuccess = this.onSuccess.bind(this)
|
|
295
295
|
}
|
|
296
296
|
|
|
297
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<
|
|
297
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, R> {
|
|
298
298
|
return this.sink.onFailure(cause)
|
|
299
299
|
}
|
|
300
300
|
|
|
@@ -313,27 +313,27 @@ class FilterEffectSink<R, E, A> implements Sink<R, E, A> {
|
|
|
313
313
|
* @since 1.20.0
|
|
314
314
|
*/
|
|
315
315
|
export const tapEffect: {
|
|
316
|
-
<A,
|
|
317
|
-
sink: Sink<
|
|
318
|
-
) => Sink<
|
|
319
|
-
<
|
|
320
|
-
} = dual(2, function tapEffect<
|
|
321
|
-
sink: Sink<
|
|
322
|
-
f: (a: A) => Effect.Effect<
|
|
323
|
-
): Sink<
|
|
316
|
+
<A, E2, R2>(f: (a: A) => Effect.Effect<unknown, E2, R2>): <E, R>(
|
|
317
|
+
sink: Sink<A, E | E2, R>
|
|
318
|
+
) => Sink<A, E | E2, R | R2>
|
|
319
|
+
<A, E, R, E2, R2>(sink: Sink<A, E | E2, R>, f: (a: A) => Effect.Effect<unknown, E2, R2>): Sink<A, E | E2, R | R2>
|
|
320
|
+
} = dual(2, function tapEffect<A, E, R, E2, R2>(
|
|
321
|
+
sink: Sink<A, E | E2, R>,
|
|
322
|
+
f: (a: A) => Effect.Effect<unknown, E2, R2>
|
|
323
|
+
): Sink<A, E | E2, R | R2> {
|
|
324
324
|
return new TapEffectSink(sink, f)
|
|
325
325
|
})
|
|
326
326
|
|
|
327
|
-
class TapEffectSink<
|
|
327
|
+
class TapEffectSink<A, E, R, E2, R2> implements Sink<A, E, R | R2> {
|
|
328
328
|
constructor(
|
|
329
|
-
readonly sink: Sink<
|
|
330
|
-
readonly f: (a: A) => Effect.Effect<
|
|
329
|
+
readonly sink: Sink<A, E | E2, R>,
|
|
330
|
+
readonly f: (a: A) => Effect.Effect<unknown, E2, R2>
|
|
331
331
|
) {
|
|
332
332
|
this.onFailure = this.onFailure.bind(this)
|
|
333
333
|
this.onSuccess = this.onSuccess.bind(this)
|
|
334
334
|
}
|
|
335
335
|
|
|
336
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<R | R2
|
|
336
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, R | R2> {
|
|
337
337
|
return this.sink.onFailure(cause)
|
|
338
338
|
}
|
|
339
339
|
|
|
@@ -349,21 +349,21 @@ class TapEffectSink<R, E, A, R2, E2> implements Sink<R | R2, E, A> {
|
|
|
349
349
|
* @since 1.20.0
|
|
350
350
|
*/
|
|
351
351
|
export const loop: {
|
|
352
|
-
<B, A, C>(seed: B, f: (acc: B, a: A) => readonly [C, B]): <
|
|
353
|
-
sink: Sink<
|
|
354
|
-
) => Sink<
|
|
355
|
-
<
|
|
356
|
-
} = dual(3, function loop<
|
|
357
|
-
sink: Sink<
|
|
352
|
+
<B, A, C>(seed: B, f: (acc: B, a: A) => readonly [C, B]): <E, R>(
|
|
353
|
+
sink: Sink<C, E, R>
|
|
354
|
+
) => Sink<A, E, R>
|
|
355
|
+
<A, E, R, B, C>(sink: Sink<C, E, R>, seed: B, f: (acc: B, a: A) => readonly [C, B]): Sink<A, E, R>
|
|
356
|
+
} = dual(3, function loop<A, E, R, B, C>(
|
|
357
|
+
sink: Sink<C, E, R>,
|
|
358
358
|
seed: B,
|
|
359
359
|
f: (acc: B, a: A) => readonly [C, B]
|
|
360
|
-
): Sink<
|
|
360
|
+
): Sink<A, E, R> {
|
|
361
361
|
return new LoopSink(sink, seed, f)
|
|
362
362
|
})
|
|
363
363
|
|
|
364
|
-
class LoopSink<
|
|
364
|
+
class LoopSink<A, E, R, B, C> implements Sink<A, E, R> {
|
|
365
365
|
constructor(
|
|
366
|
-
readonly sink: Sink<
|
|
366
|
+
readonly sink: Sink<C, E, R>,
|
|
367
367
|
private seed: B,
|
|
368
368
|
readonly f: (acc: B, a: A) => readonly [C, B]
|
|
369
369
|
) {
|
|
@@ -371,7 +371,7 @@ class LoopSink<R, E, A, B, C> implements Sink<R, E, A> {
|
|
|
371
371
|
this.onSuccess = this.onSuccess.bind(this)
|
|
372
372
|
}
|
|
373
373
|
|
|
374
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<
|
|
374
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, R> {
|
|
375
375
|
return this.sink.onFailure(cause)
|
|
376
376
|
}
|
|
377
377
|
|
|
@@ -386,25 +386,25 @@ class LoopSink<R, E, A, B, C> implements Sink<R, E, A> {
|
|
|
386
386
|
* @since 1.20.0
|
|
387
387
|
*/
|
|
388
388
|
export const loopCause: {
|
|
389
|
-
<B, A, C>(seed: B, f: (acc: B, a: Cause.Cause<A>) => readonly [Cause.Cause<C>, B]): <
|
|
390
|
-
sink: Sink<
|
|
391
|
-
) => Sink<
|
|
392
|
-
<
|
|
393
|
-
sink: Sink<
|
|
389
|
+
<B, A, C>(seed: B, f: (acc: B, a: Cause.Cause<A>) => readonly [Cause.Cause<C>, B]): <E, R>(
|
|
390
|
+
sink: Sink<A, C, R>
|
|
391
|
+
) => Sink<A, E, R>
|
|
392
|
+
<A, E, R, B, C>(
|
|
393
|
+
sink: Sink<A, C, R>,
|
|
394
394
|
seed: B,
|
|
395
395
|
f: (acc: B, a: Cause.Cause<E>) => readonly [Cause.Cause<C>, B]
|
|
396
|
-
): Sink<
|
|
397
|
-
} = dual(3, function loopCause<
|
|
398
|
-
sink: Sink<
|
|
396
|
+
): Sink<A, E, R>
|
|
397
|
+
} = dual(3, function loopCause<A, E, R, B, C>(
|
|
398
|
+
sink: Sink<A, C, R>,
|
|
399
399
|
seed: B,
|
|
400
400
|
f: (acc: B, a: Cause.Cause<E>) => readonly [Cause.Cause<C>, B]
|
|
401
|
-
): Sink<
|
|
401
|
+
): Sink<A, E, R> {
|
|
402
402
|
return new LoopCauseSink(sink, seed, f)
|
|
403
403
|
})
|
|
404
404
|
|
|
405
|
-
class LoopCauseSink<
|
|
405
|
+
class LoopCauseSink<A, E, R, B, C> implements Sink<A, E, R> {
|
|
406
406
|
constructor(
|
|
407
|
-
readonly sink: Sink<
|
|
407
|
+
readonly sink: Sink<A, C, R>,
|
|
408
408
|
private seed: B,
|
|
409
409
|
readonly f: (acc: B, a: Cause.Cause<E>) => readonly [Cause.Cause<C>, B]
|
|
410
410
|
) {
|
|
@@ -412,7 +412,7 @@ class LoopCauseSink<R, E, A, B, C> implements Sink<R, E, A> {
|
|
|
412
412
|
this.onSuccess = this.onSuccess.bind(this)
|
|
413
413
|
}
|
|
414
414
|
|
|
415
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<
|
|
415
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, R> {
|
|
416
416
|
const [c, acc] = this.f(this.seed, cause)
|
|
417
417
|
this.seed = acc
|
|
418
418
|
return this.sink.onFailure(c)
|
|
@@ -427,21 +427,21 @@ class LoopCauseSink<R, E, A, B, C> implements Sink<R, E, A> {
|
|
|
427
427
|
* @since 1.20.0
|
|
428
428
|
*/
|
|
429
429
|
export const filterMapLoop: {
|
|
430
|
-
<B, A, C>(seed: B, f: (acc: B, a: A) => readonly [Option.Option<C>, B]): <
|
|
431
|
-
sink: Sink<
|
|
432
|
-
) => Sink<
|
|
433
|
-
<
|
|
434
|
-
} = dual(3, function filterMapLoop<
|
|
435
|
-
sink: Sink<
|
|
430
|
+
<B, A, C>(seed: B, f: (acc: B, a: A) => readonly [Option.Option<C>, B]): <E, R>(
|
|
431
|
+
sink: Sink<C, E, R>
|
|
432
|
+
) => Sink<A, E, R>
|
|
433
|
+
<A, E, R, B, C>(sink: Sink<C, E, R>, seed: B, f: (acc: B, a: A) => readonly [Option.Option<C>, B]): Sink<A, E, R>
|
|
434
|
+
} = dual(3, function filterMapLoop<A, E, R, B, C>(
|
|
435
|
+
sink: Sink<C, E, R>,
|
|
436
436
|
seed: B,
|
|
437
437
|
f: (acc: B, a: A) => readonly [Option.Option<C>, B]
|
|
438
|
-
): Sink<
|
|
438
|
+
): Sink<A, E, R> {
|
|
439
439
|
return new FilterMapLoopSink(sink, seed, f)
|
|
440
440
|
})
|
|
441
441
|
|
|
442
|
-
class FilterMapLoopSink<
|
|
442
|
+
class FilterMapLoopSink<A, E, R, B, C> implements Sink<A, E, R> {
|
|
443
443
|
constructor(
|
|
444
|
-
readonly sink: Sink<
|
|
444
|
+
readonly sink: Sink<C, E, R>,
|
|
445
445
|
private seed: B,
|
|
446
446
|
readonly f: (acc: B, a: A) => readonly [Option.Option<C>, B]
|
|
447
447
|
) {
|
|
@@ -449,7 +449,7 @@ class FilterMapLoopSink<R, E, A, B, C> implements Sink<R, E, A> {
|
|
|
449
449
|
this.onSuccess = this.onSuccess.bind(this)
|
|
450
450
|
}
|
|
451
451
|
|
|
452
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<
|
|
452
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, R> {
|
|
453
453
|
return this.sink.onFailure(cause)
|
|
454
454
|
}
|
|
455
455
|
|
|
@@ -465,25 +465,25 @@ class FilterMapLoopSink<R, E, A, B, C> implements Sink<R, E, A> {
|
|
|
465
465
|
* @since 1.20.0
|
|
466
466
|
*/
|
|
467
467
|
export const filterMapLoopCause: {
|
|
468
|
-
<B, A, C>(seed: B, f: (acc: B, a: Cause.Cause<A>) => readonly [Option.Option<Cause.Cause<C>>, B]): <
|
|
469
|
-
sink: Sink<
|
|
470
|
-
) => Sink<
|
|
471
|
-
<
|
|
472
|
-
sink: Sink<
|
|
468
|
+
<B, A, C>(seed: B, f: (acc: B, a: Cause.Cause<A>) => readonly [Option.Option<Cause.Cause<C>>, B]): <E, R>(
|
|
469
|
+
sink: Sink<A, C, R>
|
|
470
|
+
) => Sink<A, E, R>
|
|
471
|
+
<A, E, R, B, C>(
|
|
472
|
+
sink: Sink<A, C, R>,
|
|
473
473
|
seed: B,
|
|
474
474
|
f: (acc: B, a: Cause.Cause<E>) => readonly [Option.Option<Cause.Cause<C>>, B]
|
|
475
|
-
): Sink<
|
|
476
|
-
} = dual(3, function filterMapLoopCause<
|
|
477
|
-
sink: Sink<
|
|
475
|
+
): Sink<A, E, R>
|
|
476
|
+
} = dual(3, function filterMapLoopCause<A, E, R, B, C>(
|
|
477
|
+
sink: Sink<A, C, R>,
|
|
478
478
|
seed: B,
|
|
479
479
|
f: (acc: B, a: Cause.Cause<E>) => readonly [Option.Option<Cause.Cause<C>>, B]
|
|
480
|
-
): Sink<
|
|
480
|
+
): Sink<A, E, R> {
|
|
481
481
|
return new FilterMapLoopCauseSink(sink, seed, f)
|
|
482
482
|
})
|
|
483
483
|
|
|
484
|
-
class FilterMapLoopCauseSink<
|
|
484
|
+
class FilterMapLoopCauseSink<A, E, R, B, C> implements Sink<A, E, R> {
|
|
485
485
|
constructor(
|
|
486
|
-
readonly sink: Sink<
|
|
486
|
+
readonly sink: Sink<A, C, R>,
|
|
487
487
|
private seed: B,
|
|
488
488
|
readonly f: (acc: B, a: Cause.Cause<E>) => readonly [Option.Option<Cause.Cause<C>>, B]
|
|
489
489
|
) {
|
|
@@ -491,7 +491,7 @@ class FilterMapLoopCauseSink<R, E, A, B, C> implements Sink<R, E, A> {
|
|
|
491
491
|
this.onSuccess = this.onSuccess.bind(this)
|
|
492
492
|
}
|
|
493
493
|
|
|
494
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<
|
|
494
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, R> {
|
|
495
495
|
const [option, acc] = this.f(this.seed, cause)
|
|
496
496
|
this.seed = acc
|
|
497
497
|
if (Option.isSome(option)) return this.sink.onFailure(option.value)
|
|
@@ -507,33 +507,33 @@ class FilterMapLoopCauseSink<R, E, A, B, C> implements Sink<R, E, A> {
|
|
|
507
507
|
* @since 1.20.0
|
|
508
508
|
*/
|
|
509
509
|
export const loopEffect: {
|
|
510
|
-
<B, A,
|
|
511
|
-
sink: Sink<
|
|
512
|
-
) => Sink<
|
|
513
|
-
<
|
|
514
|
-
sink: Sink<
|
|
510
|
+
<B, A, E2, R2, C>(seed: B, f: (acc: B, a: A) => Effect.Effect<readonly [C, B], E2, R2>): <E, R>(
|
|
511
|
+
sink: Sink<C, E, R>
|
|
512
|
+
) => Sink<A, E | E2, R | R2>
|
|
513
|
+
<A, E, R, B, C>(
|
|
514
|
+
sink: Sink<C, E, R>,
|
|
515
515
|
seed: B,
|
|
516
|
-
f: (acc: B, a: A) => Effect.Effect<
|
|
517
|
-
): Sink<
|
|
518
|
-
} = dual(3, function loopEffect<
|
|
519
|
-
sink: Sink<
|
|
516
|
+
f: (acc: B, a: A) => Effect.Effect<readonly [C, B], E, R>
|
|
517
|
+
): Sink<A, E, R>
|
|
518
|
+
} = dual(3, function loopEffect<A, E, R, B, C>(
|
|
519
|
+
sink: Sink<C, E, R>,
|
|
520
520
|
seed: B,
|
|
521
|
-
f: (acc: B, a: A) => Effect.Effect<
|
|
522
|
-
): Sink<
|
|
521
|
+
f: (acc: B, a: A) => Effect.Effect<readonly [C, B], E, R>
|
|
522
|
+
): Sink<A, E, R> {
|
|
523
523
|
return new LoopEffectSink(sink, seed, f)
|
|
524
524
|
})
|
|
525
525
|
|
|
526
|
-
class LoopEffectSink<
|
|
526
|
+
class LoopEffectSink<A, E, R, B, C> implements Sink<A, E, R> {
|
|
527
527
|
constructor(
|
|
528
|
-
readonly sink: Sink<
|
|
528
|
+
readonly sink: Sink<C, E, R>,
|
|
529
529
|
private seed: B,
|
|
530
|
-
readonly f: (acc: B, a: A) => Effect.Effect<
|
|
530
|
+
readonly f: (acc: B, a: A) => Effect.Effect<readonly [C, B], E, R>
|
|
531
531
|
) {
|
|
532
532
|
this.onFailure = this.onFailure.bind(this)
|
|
533
533
|
this.onSuccess = this.onSuccess.bind(this)
|
|
534
534
|
}
|
|
535
535
|
|
|
536
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<
|
|
536
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, R> {
|
|
537
537
|
return this.sink.onFailure(cause)
|
|
538
538
|
}
|
|
539
539
|
|
|
@@ -552,33 +552,33 @@ class LoopEffectSink<R, E, A, B, C> implements Sink<R, E, A> {
|
|
|
552
552
|
* @since 1.20.0
|
|
553
553
|
*/
|
|
554
554
|
export const filterMapLoopEffect: {
|
|
555
|
-
<B, A,
|
|
556
|
-
sink: Sink<
|
|
557
|
-
) => Sink<
|
|
558
|
-
<
|
|
559
|
-
sink: Sink<
|
|
555
|
+
<B, A, E2, R2, C>(seed: B, f: (acc: B, a: A) => Effect.Effect<readonly [Option.Option<C>, B], E2, R2>): <E, R>(
|
|
556
|
+
sink: Sink<C, E, R>
|
|
557
|
+
) => Sink<A, E | E2, R | R2>
|
|
558
|
+
<A, E, R, B, R2, C>(
|
|
559
|
+
sink: Sink<C, E, R>,
|
|
560
560
|
seed: B,
|
|
561
|
-
f: (acc: B, a: A) => Effect.Effect<
|
|
562
|
-
): Sink<R | R2
|
|
563
|
-
} = dual(3, function filterMapLoopEffect<
|
|
564
|
-
sink: Sink<
|
|
561
|
+
f: (acc: B, a: A) => Effect.Effect<readonly [Option.Option<C>, B], E, R2>
|
|
562
|
+
): Sink<A, E, R | R2>
|
|
563
|
+
} = dual(3, function filterMapLoopEffect<A, E, R, B, R2, C>(
|
|
564
|
+
sink: Sink<C, E, R>,
|
|
565
565
|
seed: B,
|
|
566
|
-
f: (acc: B, a: A) => Effect.Effect<
|
|
567
|
-
): Sink<R | R2
|
|
566
|
+
f: (acc: B, a: A) => Effect.Effect<readonly [Option.Option<C>, B], E, R2>
|
|
567
|
+
): Sink<A, E, R | R2> {
|
|
568
568
|
return new FilterMapLoopEffectSink(sink, seed, f)
|
|
569
569
|
})
|
|
570
570
|
|
|
571
|
-
class FilterMapLoopEffectSink<
|
|
571
|
+
class FilterMapLoopEffectSink<A, E, R, B, R2, C> implements Sink<A, E, R | R2> {
|
|
572
572
|
constructor(
|
|
573
|
-
readonly sink: Sink<
|
|
573
|
+
readonly sink: Sink<C, E, R>,
|
|
574
574
|
private seed: B,
|
|
575
|
-
readonly f: (acc: B, a: A) => Effect.Effect<
|
|
575
|
+
readonly f: (acc: B, a: A) => Effect.Effect<readonly [Option.Option<C>, B], E, R2>
|
|
576
576
|
) {
|
|
577
577
|
this.onFailure = this.onFailure.bind(this)
|
|
578
578
|
this.onSuccess = this.onSuccess.bind(this)
|
|
579
579
|
}
|
|
580
580
|
|
|
581
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<
|
|
581
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, R> {
|
|
582
582
|
return this.sink.onFailure(cause)
|
|
583
583
|
}
|
|
584
584
|
|
|
@@ -598,36 +598,36 @@ class FilterMapLoopEffectSink<R, E, A, B, R2, C> implements Sink<R | R2, E, A> {
|
|
|
598
598
|
* @since 1.20.0
|
|
599
599
|
*/
|
|
600
600
|
export const loopCauseEffect: {
|
|
601
|
-
<B, A,
|
|
601
|
+
<B, A, E2, R2, C>(
|
|
602
602
|
seed: B,
|
|
603
|
-
f: (acc: B, a: Cause.Cause<A>) => Effect.Effect<
|
|
604
|
-
): <
|
|
605
|
-
sink: Sink<
|
|
606
|
-
) => Sink<
|
|
607
|
-
<
|
|
608
|
-
sink: Sink<
|
|
603
|
+
f: (acc: B, a: Cause.Cause<A>) => Effect.Effect<readonly [Cause.Cause<C>, B], E2, R2>
|
|
604
|
+
): <E, R>(
|
|
605
|
+
sink: Sink<A, E | C, R>
|
|
606
|
+
) => Sink<A, E | C, R>
|
|
607
|
+
<A, E, R, B, C>(
|
|
608
|
+
sink: Sink<A, E | C, R>,
|
|
609
609
|
seed: B,
|
|
610
|
-
f: (acc: B, a: Cause.Cause<E>) => Effect.Effect<
|
|
611
|
-
): Sink<
|
|
612
|
-
} = dual(3, function loopCauseEffect<
|
|
613
|
-
sink: Sink<
|
|
610
|
+
f: (acc: B, a: Cause.Cause<E>) => Effect.Effect<readonly [Cause.Cause<C>, B], E, R>
|
|
611
|
+
): Sink<A, E | C, R>
|
|
612
|
+
} = dual(3, function loopCauseEffect<A, E, R, B, C>(
|
|
613
|
+
sink: Sink<A, E | C, R>,
|
|
614
614
|
seed: B,
|
|
615
|
-
f: (acc: B, a: Cause.Cause<E>) => Effect.Effect<
|
|
616
|
-
): Sink<
|
|
615
|
+
f: (acc: B, a: Cause.Cause<E>) => Effect.Effect<readonly [Cause.Cause<C>, B], E, R>
|
|
616
|
+
): Sink<A, E | C, R> {
|
|
617
617
|
return new LoopCauseEffectSink(sink, seed, f)
|
|
618
618
|
})
|
|
619
619
|
|
|
620
|
-
class LoopCauseEffectSink<
|
|
620
|
+
class LoopCauseEffectSink<A, E, R, B, C> implements Sink<A, E, R> {
|
|
621
621
|
constructor(
|
|
622
|
-
readonly sink: Sink<
|
|
622
|
+
readonly sink: Sink<A, E | C, R>,
|
|
623
623
|
private seed: B,
|
|
624
|
-
readonly f: (acc: B, a: Cause.Cause<E>) => Effect.Effect<
|
|
624
|
+
readonly f: (acc: B, a: Cause.Cause<E>) => Effect.Effect<readonly [Cause.Cause<C>, B], E, R>
|
|
625
625
|
) {
|
|
626
626
|
this.onFailure = this.onFailure.bind(this)
|
|
627
627
|
this.onSuccess = this.onSuccess.bind(this)
|
|
628
628
|
}
|
|
629
629
|
|
|
630
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<
|
|
630
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, R> {
|
|
631
631
|
return Effect.matchCauseEffect(this.f(this.seed, cause), {
|
|
632
632
|
onFailure: (cause2) => this.sink.onFailure(Cause.sequential(cause, cause2)),
|
|
633
633
|
onSuccess: ([c, acc]) => {
|
|
@@ -645,25 +645,25 @@ class LoopCauseEffectSink<R, E, A, B, C> implements Sink<R, E, A> {
|
|
|
645
645
|
/**
|
|
646
646
|
* @since 1.20.0
|
|
647
647
|
*/
|
|
648
|
-
export function filterMapLoopCauseEffect<
|
|
649
|
-
sink: Sink<
|
|
648
|
+
export function filterMapLoopCauseEffect<A, E, R, B, E2, R2, C>(
|
|
649
|
+
sink: Sink<A, E2 | C, R>,
|
|
650
650
|
seed: B,
|
|
651
|
-
f: (acc: B, a: Cause.Cause<E>) => Effect.Effect<
|
|
652
|
-
): Sink<R | R2
|
|
651
|
+
f: (acc: B, a: Cause.Cause<E>) => Effect.Effect<readonly [Option.Option<Cause.Cause<C>>, B], E2, R2>
|
|
652
|
+
): Sink<A, E, R | R2> {
|
|
653
653
|
return new FilterMapLoopCauseEffectSink(sink, seed, f)
|
|
654
654
|
}
|
|
655
655
|
|
|
656
|
-
class FilterMapLoopCauseEffectSink<
|
|
656
|
+
class FilterMapLoopCauseEffectSink<A, E, R, B, E2, R2, C> implements Sink<A, E, R | R2> {
|
|
657
657
|
constructor(
|
|
658
|
-
readonly sink: Sink<
|
|
658
|
+
readonly sink: Sink<A, E2 | C, R>,
|
|
659
659
|
private seed: B,
|
|
660
|
-
readonly f: (acc: B, a: Cause.Cause<E>) => Effect.Effect<
|
|
660
|
+
readonly f: (acc: B, a: Cause.Cause<E>) => Effect.Effect<readonly [Option.Option<Cause.Cause<C>>, B], E2, R2>
|
|
661
661
|
) {
|
|
662
662
|
this.onFailure = this.onFailure.bind(this)
|
|
663
663
|
this.onSuccess = this.onSuccess.bind(this)
|
|
664
664
|
}
|
|
665
665
|
|
|
666
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<R | R2
|
|
666
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, R | R2> {
|
|
667
667
|
return Effect.matchCauseEffect(this.f(this.seed, cause), {
|
|
668
668
|
onFailure: (cause2) => this.sink.onFailure(cause2),
|
|
669
669
|
onSuccess: ([option, acc]) => {
|
|
@@ -683,28 +683,28 @@ class FilterMapLoopCauseEffectSink<R, E, A, B, R2, E2, C> implements Sink<R | R2
|
|
|
683
683
|
* @since 1.20.0
|
|
684
684
|
*/
|
|
685
685
|
export const slice: {
|
|
686
|
-
<
|
|
687
|
-
sink: Sink<
|
|
688
|
-
) => Effect.Effect<R | R2
|
|
689
|
-
<
|
|
690
|
-
sink: Sink<
|
|
686
|
+
<A, E, R, R2>(bounds: Bounds, f: (sink: Sink<A, E, R>) => Effect.Effect<unknown, never, R2>): (
|
|
687
|
+
sink: Sink<A, E, R>
|
|
688
|
+
) => Effect.Effect<void, never, R | R2>
|
|
689
|
+
<A, E, R, R2>(
|
|
690
|
+
sink: Sink<A, E, R>,
|
|
691
691
|
bounds: Bounds,
|
|
692
|
-
f: (sink: Sink<
|
|
693
|
-
): Effect.Effect<R | R2
|
|
694
|
-
} = dual(3, function slice<
|
|
695
|
-
sink: Sink<
|
|
692
|
+
f: (sink: Sink<A, E, R>) => Effect.Effect<unknown, never, R2>
|
|
693
|
+
): Effect.Effect<void, never, R | R2>
|
|
694
|
+
} = dual(3, function slice<A, E, R, R2>(
|
|
695
|
+
sink: Sink<A, E, R>,
|
|
696
696
|
bounds: Bounds,
|
|
697
|
-
f: (sink: Sink<
|
|
698
|
-
): Effect.Effect<R | R2
|
|
697
|
+
f: (sink: Sink<A, E, R>) => Effect.Effect<unknown, never, R2>
|
|
698
|
+
): Effect.Effect<void, never, R | R2> {
|
|
699
699
|
return withEarlyExit(sink, (s) => f(new SliceSink(s, bounds)))
|
|
700
700
|
})
|
|
701
701
|
|
|
702
|
-
class SliceSink<
|
|
702
|
+
class SliceSink<A, E, R> implements Sink<A, E, R> {
|
|
703
703
|
private drop: number
|
|
704
704
|
private take: number
|
|
705
705
|
|
|
706
706
|
constructor(
|
|
707
|
-
readonly sink: WithEarlyExit<
|
|
707
|
+
readonly sink: WithEarlyExit<A, E, R>,
|
|
708
708
|
readonly bounds: Bounds
|
|
709
709
|
) {
|
|
710
710
|
this.drop = this.bounds.min
|
|
@@ -714,7 +714,7 @@ class SliceSink<R, E, A> implements Sink<R, E, A> {
|
|
|
714
714
|
this.onSuccess = this.onSuccess.bind(this)
|
|
715
715
|
}
|
|
716
716
|
|
|
717
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<
|
|
717
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, R> {
|
|
718
718
|
return this.sink.onFailure(cause)
|
|
719
719
|
}
|
|
720
720
|
|
|
@@ -734,27 +734,27 @@ class SliceSink<R, E, A> implements Sink<R, E, A> {
|
|
|
734
734
|
* @since 1.20.0
|
|
735
735
|
*/
|
|
736
736
|
export const takeWhile: {
|
|
737
|
-
<
|
|
738
|
-
sink: Sink<
|
|
739
|
-
) => Effect.Effect<R | R2
|
|
740
|
-
<
|
|
741
|
-
sink: Sink<
|
|
737
|
+
<A, E, R, B, R2>(predicate: Predicate.Predicate<A>, f: (sink: Sink<A, E, R>) => Effect.Effect<B, E, R2>): (
|
|
738
|
+
sink: Sink<A, E, R>
|
|
739
|
+
) => Effect.Effect<void, never, R | R2>
|
|
740
|
+
<A, E, R, B, R2>(
|
|
741
|
+
sink: Sink<A, E, R>,
|
|
742
742
|
predicate: Predicate.Predicate<A>,
|
|
743
|
-
f: (sink: Sink<
|
|
744
|
-
): Effect.Effect<R | R2
|
|
745
|
-
} = dual(3, function takeWhile<
|
|
746
|
-
sink: Sink<
|
|
743
|
+
f: (sink: Sink<A, E, R>) => Effect.Effect<B, E, R2>
|
|
744
|
+
): Effect.Effect<void, never, R | R2>
|
|
745
|
+
} = dual(3, function takeWhile<A, E, R, B, R2>(
|
|
746
|
+
sink: Sink<A, E, R>,
|
|
747
747
|
predicate: Predicate.Predicate<A>,
|
|
748
|
-
f: (sink: Sink<
|
|
748
|
+
f: (sink: Sink<A, E, R>) => Effect.Effect<B, E, R2>
|
|
749
749
|
) {
|
|
750
750
|
return withEarlyExit(sink, (s) => f(new TakeWhileSink(s, predicate)))
|
|
751
751
|
})
|
|
752
752
|
|
|
753
|
-
class TakeWhileSink<
|
|
753
|
+
class TakeWhileSink<A, E, R> implements Sink<A, E, R> {
|
|
754
754
|
private take: boolean
|
|
755
755
|
|
|
756
756
|
constructor(
|
|
757
|
-
readonly sink: WithEarlyExit<
|
|
757
|
+
readonly sink: WithEarlyExit<A, E, R>,
|
|
758
758
|
readonly predicate: Predicate.Predicate<A>
|
|
759
759
|
) {
|
|
760
760
|
this.take = true
|
|
@@ -762,7 +762,7 @@ class TakeWhileSink<R, E, A> implements Sink<R, E, A> {
|
|
|
762
762
|
this.onSuccess = this.onSuccess.bind(this)
|
|
763
763
|
}
|
|
764
764
|
|
|
765
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<
|
|
765
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, R> {
|
|
766
766
|
return this.sink.onFailure(cause)
|
|
767
767
|
}
|
|
768
768
|
|
|
@@ -779,14 +779,14 @@ class TakeWhileSink<R, E, A> implements Sink<R, E, A> {
|
|
|
779
779
|
* @since 1.20.0
|
|
780
780
|
*/
|
|
781
781
|
export const dropWhile: {
|
|
782
|
-
<A>(predicate: Predicate.Predicate<A>): <
|
|
783
|
-
sink: Sink<
|
|
784
|
-
) => Sink<
|
|
785
|
-
<
|
|
786
|
-
} = dual(2, function dropWhile<
|
|
787
|
-
sink: Sink<
|
|
782
|
+
<A>(predicate: Predicate.Predicate<A>): <E, R>(
|
|
783
|
+
sink: Sink<A, E, R>
|
|
784
|
+
) => Sink<A, E, R>
|
|
785
|
+
<A, E, R>(sink: Sink<A, E, R>, predicate: Predicate.Predicate<A>): Sink<A, E, R>
|
|
786
|
+
} = dual(2, function dropWhile<A, E, R>(
|
|
787
|
+
sink: Sink<A, E, R>,
|
|
788
788
|
predicate: Predicate.Predicate<A>
|
|
789
|
-
): Sink<
|
|
789
|
+
): Sink<A, E, R> {
|
|
790
790
|
return filterMapLoop(sink, true, (drop: boolean, a: A) => {
|
|
791
791
|
const drop2 = drop && predicate(a)
|
|
792
792
|
return [drop2 ? Option.none() : Option.some(a), drop2]
|
|
@@ -797,12 +797,12 @@ export const dropWhile: {
|
|
|
797
797
|
* @since 1.20.0
|
|
798
798
|
*/
|
|
799
799
|
export const dropAfter: {
|
|
800
|
-
<A>(predicate: Predicate.Predicate<A>): <
|
|
801
|
-
sink: Sink<
|
|
802
|
-
) => Sink<
|
|
803
|
-
<
|
|
804
|
-
} = dual(2, function dropAfter<
|
|
805
|
-
sink: Sink<
|
|
800
|
+
<A>(predicate: Predicate.Predicate<A>): <E, R>(
|
|
801
|
+
sink: Sink<A, E, R>
|
|
802
|
+
) => Sink<A, E, R>
|
|
803
|
+
<A, E, R>(sink: Sink<A, E, R>, predicate: Predicate.Predicate<A>): Sink<A, E, R>
|
|
804
|
+
} = dual(2, function dropAfter<A, E, R>(
|
|
805
|
+
sink: Sink<A, E, R>,
|
|
806
806
|
predicate: Predicate.Predicate<A>
|
|
807
807
|
) {
|
|
808
808
|
return filterMapLoop(sink, false, (drop: boolean, a: A) => {
|
|
@@ -817,38 +817,38 @@ export const dropAfter: {
|
|
|
817
817
|
* @since 1.20.0
|
|
818
818
|
*/
|
|
819
819
|
export const takeWhileEffect: {
|
|
820
|
-
<
|
|
821
|
-
predicate: (a: A) => Effect.Effect<
|
|
822
|
-
f: (sink: Sink<R | R2
|
|
823
|
-
): <
|
|
824
|
-
sink: Sink<
|
|
825
|
-
) => Effect.Effect<R | R3
|
|
826
|
-
<
|
|
827
|
-
sink: Sink<
|
|
828
|
-
predicate: (a: A) => Effect.Effect<
|
|
829
|
-
f: (sink: Sink<R | R2
|
|
830
|
-
): Effect.Effect<R | R3
|
|
831
|
-
} = dual(3, function takeWhileEffect<
|
|
832
|
-
sink: Sink<
|
|
833
|
-
predicate: (a: A) => Effect.Effect<
|
|
834
|
-
f: (sink: Sink<R | R2
|
|
820
|
+
<A, E, R, E2, R2, R3, E3, B>(
|
|
821
|
+
predicate: (a: A) => Effect.Effect<boolean, E2, R2>,
|
|
822
|
+
f: (sink: Sink<A, E, R | R2>) => Effect.Effect<B, E3, R3>
|
|
823
|
+
): <E, R>(
|
|
824
|
+
sink: Sink<A, E, R>
|
|
825
|
+
) => Effect.Effect<void, never, R | R3>
|
|
826
|
+
<A, E, R, E2, R2, R3, E3, B>(
|
|
827
|
+
sink: Sink<A, E | E2 | E3, R>,
|
|
828
|
+
predicate: (a: A) => Effect.Effect<boolean, E2, R2>,
|
|
829
|
+
f: (sink: Sink<A, E, R | R2>) => Effect.Effect<B, E3, R3>
|
|
830
|
+
): Effect.Effect<void, never, R | R3>
|
|
831
|
+
} = dual(3, function takeWhileEffect<A, E, R, E2, R2, R3, E3, B>(
|
|
832
|
+
sink: Sink<A, E | E2 | E3, R>,
|
|
833
|
+
predicate: (a: A) => Effect.Effect<boolean, E2, R2>,
|
|
834
|
+
f: (sink: Sink<A, E, R | R2>) => Effect.Effect<B, E3, R3>
|
|
835
835
|
) {
|
|
836
836
|
return withEarlyExit(sink, (s) => f(new TakeWhileEffectSink(s, predicate)))
|
|
837
837
|
})
|
|
838
838
|
|
|
839
|
-
class TakeWhileEffectSink<
|
|
839
|
+
class TakeWhileEffectSink<A, E, R, E2, R2> implements Sink<A, E, R | R2> {
|
|
840
840
|
private take: boolean
|
|
841
841
|
|
|
842
842
|
constructor(
|
|
843
|
-
readonly sink: WithEarlyExit<
|
|
844
|
-
readonly predicate: (a: A) => Effect.Effect<
|
|
843
|
+
readonly sink: WithEarlyExit<A, E | E2, R>,
|
|
844
|
+
readonly predicate: (a: A) => Effect.Effect<boolean, E2, R2>
|
|
845
845
|
) {
|
|
846
846
|
this.take = true
|
|
847
847
|
this.onFailure = this.onFailure.bind(this)
|
|
848
848
|
this.onSuccess = this.onSuccess.bind(this)
|
|
849
849
|
}
|
|
850
850
|
|
|
851
|
-
onFailure(cause: Cause.Cause<E | E2>): Effect.Effect<R | R2
|
|
851
|
+
onFailure(cause: Cause.Cause<E | E2>): Effect.Effect<unknown, never, R | R2> {
|
|
852
852
|
return this.sink.onFailure(cause)
|
|
853
853
|
}
|
|
854
854
|
|
|
@@ -869,18 +869,18 @@ class TakeWhileEffectSink<R, E, A, R2, E2> implements Sink<R | R2, E, A> {
|
|
|
869
869
|
* @since 1.20.0
|
|
870
870
|
*/
|
|
871
871
|
export const dropWhileEffect: {
|
|
872
|
-
<A,
|
|
873
|
-
sink: Sink<
|
|
874
|
-
) => Sink<
|
|
875
|
-
<
|
|
876
|
-
sink: Sink<
|
|
877
|
-
predicate: (a: A) => Effect.Effect<
|
|
878
|
-
): Sink<
|
|
879
|
-
} = dual(2, function dropWhileEffect<
|
|
880
|
-
sink: Sink<
|
|
881
|
-
predicate: (a: A) => Effect.Effect<
|
|
882
|
-
): Sink<
|
|
883
|
-
return filterMapLoopEffect<
|
|
872
|
+
<A, E2, R2>(predicate: (a: A) => Effect.Effect<boolean, E2, R2>): <E, R>(
|
|
873
|
+
sink: Sink<A, E | E2, R>
|
|
874
|
+
) => Sink<A, E | E2, R | R2>
|
|
875
|
+
<A, E, R, E2, R2>(
|
|
876
|
+
sink: Sink<A, E | E2, R>,
|
|
877
|
+
predicate: (a: A) => Effect.Effect<boolean, E2, R2>
|
|
878
|
+
): Sink<A, E | E2, R | R2>
|
|
879
|
+
} = dual(2, function dropWhileEffect<A, E, R, E2, R2>(
|
|
880
|
+
sink: Sink<A, E | E2, R>,
|
|
881
|
+
predicate: (a: A) => Effect.Effect<boolean, E2, R2>
|
|
882
|
+
): Sink<A, E | E2, R | R2> {
|
|
883
|
+
return filterMapLoopEffect<A, E | E2, R, boolean, R2, A>(sink, true, (drop: boolean, a: A) => {
|
|
884
884
|
if (drop === false) return Effect.succeed([Option.some(a), drop as boolean] as const)
|
|
885
885
|
|
|
886
886
|
return Effect.map(predicate(a), (b) => [b ? Option.none<A>() : Option.some(a), b] as const)
|
|
@@ -891,18 +891,18 @@ export const dropWhileEffect: {
|
|
|
891
891
|
* @since 1.20.0
|
|
892
892
|
*/
|
|
893
893
|
export const dropAfterEffect: {
|
|
894
|
-
<A,
|
|
895
|
-
sink: Sink<
|
|
896
|
-
) => Sink<
|
|
897
|
-
<
|
|
898
|
-
sink: Sink<
|
|
899
|
-
predicate: (a: A) => Effect.Effect<
|
|
900
|
-
): Sink<
|
|
901
|
-
} = dual(2, function dropAfterEffect<
|
|
902
|
-
sink: Sink<
|
|
903
|
-
predicate: (a: A) => Effect.Effect<
|
|
904
|
-
): Sink<
|
|
905
|
-
return filterMapLoopEffect<
|
|
894
|
+
<A, E2, R2>(predicate: (a: A) => Effect.Effect<boolean, E2, R2>): <E, R>(
|
|
895
|
+
sink: Sink<A, E | E2, R>
|
|
896
|
+
) => Sink<A, E | E2, R | R2>
|
|
897
|
+
<A, E, R, E2, R2>(
|
|
898
|
+
sink: Sink<A, E | E2, R>,
|
|
899
|
+
predicate: (a: A) => Effect.Effect<boolean, E2, R2>
|
|
900
|
+
): Sink<A, E | E2, R | R2>
|
|
901
|
+
} = dual(2, function dropAfterEffect<A, E, R, E2, R2>(
|
|
902
|
+
sink: Sink<A, E | E2, R>,
|
|
903
|
+
predicate: (a: A) => Effect.Effect<boolean, E2, R2>
|
|
904
|
+
): Sink<A, E | E2, R | R2> {
|
|
905
|
+
return filterMapLoopEffect<A, E | E2, R, boolean, R2, A>(sink, false, (drop: boolean, a: A) => {
|
|
906
906
|
if (drop === true) return Effect.succeed([Option.none(), drop as boolean] as const)
|
|
907
907
|
|
|
908
908
|
return Effect.map(predicate(a), (b) => [Option.some(a), b] as const)
|
|
@@ -913,12 +913,12 @@ export const dropAfterEffect: {
|
|
|
913
913
|
* @since 1.20.0
|
|
914
914
|
*/
|
|
915
915
|
export const provide: {
|
|
916
|
-
<R2>(ctx: C.Context<R2>): <
|
|
917
|
-
<
|
|
918
|
-
} = dual(2, function provide<
|
|
919
|
-
sink: Sink<
|
|
916
|
+
<R2>(ctx: C.Context<R2>): <A, E, R>(sink: Sink<A, E, R>) => Sink<A, E, Exclude<R, R2>>
|
|
917
|
+
<A, E, R, R2>(sink: Sink<A, E, R>, ctx: C.Context<R2>): Sink<A, E, Exclude<R, R2>>
|
|
918
|
+
} = dual(2, function provide<A, E, R, R2>(
|
|
919
|
+
sink: Sink<A, E, R>,
|
|
920
920
|
ctx: C.Context<R2>
|
|
921
|
-
): Sink<Exclude<R, R2
|
|
921
|
+
): Sink<A, E, Exclude<R, R2>> {
|
|
922
922
|
return make(
|
|
923
923
|
(cause) => Effect.provide(sink.onFailure(cause), ctx),
|
|
924
924
|
(a) => Effect.provide(sink.onSuccess(a), ctx)
|
|
@@ -929,12 +929,12 @@ export const provide: {
|
|
|
929
929
|
* @since 1.20.0
|
|
930
930
|
*/
|
|
931
931
|
export const setSpan: {
|
|
932
|
-
(span: Tracer.Span): <
|
|
933
|
-
<
|
|
934
|
-
} = dual(2, function setSpan<
|
|
935
|
-
self: Sink<
|
|
932
|
+
(span: Tracer.Span): <A, E, R>(sink: Sink<A, E, R>) => Sink<A, E, R>
|
|
933
|
+
<A, E, R>(self: Sink<A, E, R>, span: Tracer.Span): Sink<A, E, R>
|
|
934
|
+
} = dual(2, function setSpan<A, E, R>(
|
|
935
|
+
self: Sink<A, E, R>,
|
|
936
936
|
span: Tracer.Span
|
|
937
|
-
): Sink<
|
|
937
|
+
): Sink<A, E, R> {
|
|
938
938
|
return make(
|
|
939
939
|
(cause) =>
|
|
940
940
|
addEvent(self.onFailure(cause), "fx.failure", span, {
|
|
@@ -947,12 +947,12 @@ export const setSpan: {
|
|
|
947
947
|
)
|
|
948
948
|
})
|
|
949
949
|
|
|
950
|
-
const addEvent = <
|
|
951
|
-
effect: Effect.Effect<
|
|
950
|
+
const addEvent = <A, E, R>(
|
|
951
|
+
effect: Effect.Effect<A, E, R>,
|
|
952
952
|
name: string,
|
|
953
953
|
span: Tracer.Span,
|
|
954
954
|
attributes: Record<string, unknown>
|
|
955
|
-
): Effect.Effect<
|
|
955
|
+
): Effect.Effect<A, E, R> =>
|
|
956
956
|
Effect.flatMap(Clock.currentTimeNanos, (time) =>
|
|
957
957
|
Effect.suspend(() => {
|
|
958
958
|
span.event(name, time, attributes)
|
|
@@ -964,24 +964,24 @@ const addEvent = <R, E, A>(
|
|
|
964
964
|
* @since 1.20.0
|
|
965
965
|
*/
|
|
966
966
|
export function tagged<E, A>(): {
|
|
967
|
-
<const I extends C.IdentifierFactory<any>>(identifier: I): Sink.Tagged<C.IdentifierOf<I
|
|
968
|
-
<const I>(identifier: I): Sink.Tagged<C.IdentifierOf<I
|
|
967
|
+
<const I extends C.IdentifierFactory<any>>(identifier: I): Sink.Tagged<A, E, C.IdentifierOf<I>>
|
|
968
|
+
<const I>(identifier: I): Sink.Tagged<A, E, C.IdentifierOf<I>>
|
|
969
969
|
} {
|
|
970
|
-
return <const I>(identifier: I) => new TaggedImpl(C.Tagged<I, Sink<
|
|
970
|
+
return <const I>(identifier: I) => new TaggedImpl(C.Tagged<I, Sink<A, E>>(identifier))
|
|
971
971
|
}
|
|
972
972
|
|
|
973
|
-
class TaggedImpl<
|
|
974
|
-
constructor(readonly tag: C.Tagged<I, Sink<
|
|
973
|
+
class TaggedImpl<A, E, I> implements Sink.Tagged<A, E, I> {
|
|
974
|
+
constructor(readonly tag: C.Tagged<I, Sink<A, E>>) {}
|
|
975
975
|
|
|
976
|
-
onSuccess(value: A): Effect.Effect<
|
|
976
|
+
onSuccess(value: A): Effect.Effect<unknown, never, I> {
|
|
977
977
|
return this.tag.withEffect((sink) => sink.onSuccess(value))
|
|
978
978
|
}
|
|
979
979
|
|
|
980
|
-
onFailure(cause: Cause.Cause<E>): Effect.Effect<
|
|
980
|
+
onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, I> {
|
|
981
981
|
return this.tag.withEffect((sink) => sink.onFailure(cause))
|
|
982
982
|
}
|
|
983
983
|
|
|
984
|
-
make: <R>(sink: Sink<
|
|
984
|
+
make: <R>(sink: Sink<A, E, R>) => Layer.Layer<I, never, R> = <R>(sink: Sink<A, E, R>) =>
|
|
985
985
|
Layer.flatMap(Layer.context<R>(), (ctx) => this.tag.layer(provide(sink, ctx)))
|
|
986
986
|
}
|
|
987
987
|
|
|
@@ -989,27 +989,27 @@ class TaggedImpl<I, E, A> implements Sink.Tagged<I, E, A> {
|
|
|
989
989
|
* @since 1.20.0
|
|
990
990
|
*/
|
|
991
991
|
export const fromTag: {
|
|
992
|
-
<S,
|
|
993
|
-
<I, S,
|
|
994
|
-
} = dual(2, function fromTag<I, S,
|
|
992
|
+
<S, B, E2, R2>(f: (s: S) => Sink<B, E2, R2>): <I>(tag: C.Tag<I, S>) => Sink<B, E2, I | R2>
|
|
993
|
+
<I, S, B, E2, R2>(tag: C.Tag<I, S>, f: (s: S) => Sink<B, E2, R2>): Sink<B, E2, I | R2>
|
|
994
|
+
} = dual(2, function fromTag<I, S, B, E2, R2>(
|
|
995
995
|
tag: C.Tag<I, S>,
|
|
996
|
-
f: (s: S) => Sink<
|
|
997
|
-
): Sink<I | R2
|
|
996
|
+
f: (s: S) => Sink<B, E2, R2>
|
|
997
|
+
): Sink<B, E2, I | R2> {
|
|
998
998
|
return new FromTag(tag, f)
|
|
999
999
|
})
|
|
1000
1000
|
|
|
1001
|
-
class FromTag<I, S,
|
|
1002
|
-
readonly get: Effect.Effect<
|
|
1001
|
+
class FromTag<I, S, B, E2, R2> implements Sink<B, E2, I | R2> {
|
|
1002
|
+
readonly get: Effect.Effect<Sink<B, E2, R2>, never, I>
|
|
1003
1003
|
|
|
1004
|
-
constructor(readonly tag: C.Tag<I, S>, readonly f: (s: S) => Sink<
|
|
1004
|
+
constructor(readonly tag: C.Tag<I, S>, readonly f: (s: S) => Sink<B, E2, R2>) {
|
|
1005
1005
|
this.get = Effect.map(tag, f)
|
|
1006
1006
|
}
|
|
1007
1007
|
|
|
1008
|
-
onSuccess(value: B): Effect.Effect<I | R2
|
|
1008
|
+
onSuccess(value: B): Effect.Effect<unknown, never, I | R2> {
|
|
1009
1009
|
return Effect.flatMap(this.get, (sink) => sink.onSuccess(value))
|
|
1010
1010
|
}
|
|
1011
1011
|
|
|
1012
|
-
onFailure(cause: Cause.Cause<E2>): Effect.Effect<I | R2
|
|
1012
|
+
onFailure(cause: Cause.Cause<E2>): Effect.Effect<unknown, never, I | R2> {
|
|
1013
1013
|
return Effect.flatMap(this.get, (sink) => sink.onFailure(cause))
|
|
1014
1014
|
}
|
|
1015
1015
|
}
|
|
@@ -1017,7 +1017,7 @@ class FromTag<I, S, R2, E2, B> implements Sink<I | R2, E2, B> {
|
|
|
1017
1017
|
/**
|
|
1018
1018
|
* @since 1.20.0
|
|
1019
1019
|
*/
|
|
1020
|
-
export function ignoreInterrupt<
|
|
1020
|
+
export function ignoreInterrupt<A, E, R>(sink: Sink<A, E, R>): Sink<A, E, R> {
|
|
1021
1021
|
return make(
|
|
1022
1022
|
(cause) => Cause.isInterruptedOnly(cause) ? Effect.unit : sink.onFailure(cause),
|
|
1023
1023
|
sink.onSuccess
|