0.2.0 #5
@@ -497,19 +497,46 @@ export const mapError: {
|
||||
* Applies to `get` and `changes` while leaving `modify` unchanged.
|
||||
*/
|
||||
export const catchAllRead: {
|
||||
<A, ER, EW, RR, RW, E2, EW2, R2, RW2>(
|
||||
self: Lens<A, ER, EW, RR, RW>,
|
||||
f: (error: NoInfer<ER>) => Lens<A, E2, EW2, R2, RW2>,
|
||||
): Lens<A, E2, EW | EW2, RR | R2, RW | RW2>
|
||||
<A, ER, EW, RR, RW, E2, EW2, R2, RW2>(
|
||||
f: (error: NoInfer<ER>) => Lens<A, E2, EW2, R2, RW2>,
|
||||
): (self: Lens<A, ER, EW, RR, RW>) => Lens<A, E2, EW | EW2, RR | R2, RW | RW2>
|
||||
} = Function.dual(2, <A, ER, EW, RR, RW, E2, EW2, R2, RW2>(
|
||||
self: Lens<A, ER, EW, RR, RW>,
|
||||
f: (error: NoInfer<ER>) => Lens<A, E2, EW2, R2, RW2>,
|
||||
): Lens<A, E2, EW | EW2, RR | R2, RW | RW2> => derive(self, {
|
||||
resolve: parent => Effect.catchAll(
|
||||
parent,
|
||||
error => asLensImpl(f(error)).resolve as Effect.Effect<LensImpl.Frame<A, EW | EW2, RW | RW2>, E2, R2>,
|
||||
),
|
||||
transformStream: Stream.catchAll(error => f(error).changes),
|
||||
} as DerivedLensImpl.Source<A, A, E2, ER, EW | EW2, EW, RR | R2, RR, RW | RW2, RW>))
|
||||
|
||||
/**
|
||||
* Recovers from modify failures of a `Lens`.
|
||||
*
|
||||
* Applies to the commit/rebuild portion of `modifyEffect` while leaving reads unchanged.
|
||||
*/
|
||||
export const catchAllWrite: {
|
||||
<A, ER, EW, RR, RW, E2, R2>(
|
||||
self: Lens<A, ER, EW, RR, RW>,
|
||||
f: (error: NoInfer<ER>) => Subscribable.Subscribable<A, E2, R2>,
|
||||
): Lens<A, E2, EW, RR | R2, RW>
|
||||
f: (error: unknown) => Effect.Effect<void, E2, R2>,
|
||||
): Lens<A, ER, E2, RR, RW | R2>
|
||||
<A, ER, EW, RR, RW, E2, R2>(
|
||||
f: (error: NoInfer<ER>) => Subscribable.Subscribable<A, E2, R2>,
|
||||
): (self: Lens<A, ER, EW, RR, RW>) => Lens<A, E2, EW, RR | R2, RW>
|
||||
f: (error: unknown) => Effect.Effect<void, E2, R2>,
|
||||
): (self: Lens<A, ER, EW, RR, RW>) => Lens<A, ER, E2, RR, RW | R2>
|
||||
} = Function.dual(2, <A, ER, EW, RR, RW, E2, R2>(
|
||||
self: Lens<A, ER, EW, RR, RW>,
|
||||
f: (error: NoInfer<ER>) => Subscribable.Subscribable<A, E2, R2>,
|
||||
): Lens<A, E2, EW, RR | R2, RW> => derive(self, {
|
||||
resolve: Effect.catchAll(error => asLensImpl(f(error) as Lens<A, E2, EW, R2, RW>).resolve),
|
||||
transformStream: Stream.catchAll(error => f(error).changes),
|
||||
f: (error: unknown) => Effect.Effect<void, E2, R2>,
|
||||
): Lens<A, ER, E2, RR, RW | R2> => derive(self, {
|
||||
resolve: parent => Effect.map(parent, frame => ({
|
||||
value: frame.value,
|
||||
commit: next => Effect.catchAll(frame.commit(next), f),
|
||||
})),
|
||||
transformStream: identity,
|
||||
}))
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user