QueryClient
All checks were successful
Lint / lint (push) Successful in 13s

This commit is contained in:
Julien Valverdé
2025-03-14 22:00:53 +01:00
parent abc47c4647
commit 2e8dfbc988
5 changed files with 41 additions and 28 deletions

View File

@@ -3,7 +3,7 @@ import { type Cause, type Context, Effect, Layer, Queue, Stream } from "effect"
export interface ErrorHandler<E> {
readonly errors: Stream.Stream<Cause.Cause<E>>
readonly handle: <A, SelfE, R>(self: Effect.Effect<A, SelfE | E, R>) => Effect.Effect<A, SelfE, R>
readonly handle: <A, SelfE, R>(self: Effect.Effect<A, SelfE, R>) => Effect.Effect<A, Exclude<SelfE, E>, R>
}
export const Tag = <const Id extends string>(id: Id) => <
@@ -17,10 +17,10 @@ export const layer = <Self, Id extends string, E>(
const errors = Stream.fromQueue(queue)
const handle = <A, SelfE, R>(
self: Effect.Effect<A, SelfE | E, R>
self: Effect.Effect<A, SelfE, R>
) => Effect.tapErrorCause(self, cause =>
Queue.offer(queue, cause as Cause.Cause<E>)
) as Effect.Effect<A, SelfE, R>
) as Effect.Effect<A, Exclude<SelfE, E>, R>
return { errors, handle }
}))