@@ -568,62 +568,6 @@ export const mapError: {
|
||||
mapLock: Effect.mapError(f),
|
||||
}))
|
||||
|
||||
/**
|
||||
* Recovers from read failures of a `Lens`.
|
||||
*
|
||||
* 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>,
|
||||
),
|
||||
mapStream: Stream.catchAll(error => f(error).changes),
|
||||
mapLock: lock => lock as Effect.Effect<LensImpl.Lock, EW | EW2, RW | RW2>,
|
||||
} 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<EW>) => Effect.Effect<void, E2, R2>,
|
||||
): Lens<A, ER, E2, RR, RW | R2>
|
||||
<A, ER, EW, RR, RW, E2, R2>(
|
||||
f: (error: NoInfer<EW>) => 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<EW>) => 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.flatMap(
|
||||
next,
|
||||
value => Effect.catchAll(frame.commit(Effect.succeed(value)), f),
|
||||
),
|
||||
})),
|
||||
mapStream: identity,
|
||||
mapLock: lock => Effect.catchAll(
|
||||
lock,
|
||||
error => Effect.as(f(error), identity),
|
||||
),
|
||||
}))
|
||||
|
||||
/**
|
||||
* Runs an effect when read failures occur.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user