0.2.0 #5

Merged
Thilawyn merged 59 commits from next into master 2026-05-30 06:10:54 +02:00
Showing only changes of commit b1cc4c9702 - Show all commits
+35 -8
View File
@@ -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,
})) }))
/** /**