@@ -497,19 +497,46 @@ export const mapError: {
|
|||||||
* Applies to `get` and `changes` while leaving `modify` unchanged.
|
* Applies to `get` and `changes` while leaving `modify` unchanged.
|
||||||
*/
|
*/
|
||||||
export const catchAllRead: {
|
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>(
|
<A, ER, EW, RR, RW, E2, R2>(
|
||||||
self: Lens<A, ER, EW, RR, RW>,
|
self: Lens<A, ER, EW, RR, RW>,
|
||||||
f: (error: NoInfer<ER>) => Subscribable.Subscribable<A, E2, R2>,
|
f: (error: unknown) => Effect.Effect<void, E2, R2>,
|
||||||
): Lens<A, E2, EW, RR | R2, RW>
|
): Lens<A, ER, E2, RR, RW | R2>
|
||||||
<A, ER, EW, RR, RW, E2, R2>(
|
<A, ER, EW, RR, RW, E2, R2>(
|
||||||
f: (error: NoInfer<ER>) => Subscribable.Subscribable<A, E2, R2>,
|
f: (error: unknown) => Effect.Effect<void, E2, R2>,
|
||||||
): (self: Lens<A, ER, EW, RR, RW>) => Lens<A, E2, EW, RR | R2, RW>
|
): (self: Lens<A, ER, EW, RR, RW>) => Lens<A, ER, E2, RR, RW | R2>
|
||||||
} = Function.dual(2, <A, ER, EW, RR, RW, E2, R2>(
|
} = Function.dual(2, <A, ER, EW, RR, RW, E2, R2>(
|
||||||
self: Lens<A, ER, EW, RR, RW>,
|
self: Lens<A, ER, EW, RR, RW>,
|
||||||
f: (error: NoInfer<ER>) => Subscribable.Subscribable<A, E2, R2>,
|
f: (error: unknown) => Effect.Effect<void, E2, R2>,
|
||||||
): Lens<A, E2, EW, RR | R2, RW> => derive(self, {
|
): Lens<A, ER, E2, RR, RW | R2> => derive(self, {
|
||||||
resolve: Effect.catchAll(error => asLensImpl(f(error) as Lens<A, E2, EW, R2, RW>).resolve),
|
resolve: parent => Effect.map(parent, frame => ({
|
||||||
transformStream: Stream.catchAll(error => f(error).changes),
|
value: frame.value,
|
||||||
|
commit: next => Effect.catchAll(frame.commit(next), f),
|
||||||
|
})),
|
||||||
|
transformStream: identity,
|
||||||
}))
|
}))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user