import { Context, Effect, Layer } from "effect" import * as ErrorHandler from "./ErrorHandler.js" export interface QueryClient { readonly ErrorHandler: Context.Tag> } export interface LayerProps { readonly ErrorHandler?: Context.Tag> } export const layer = < EH = ErrorHandler.DefaultErrorHandler, HandledE = never, >( props: LayerProps ): Layer.Layer< QueryClient, never, typeof props.ErrorHandler extends undefined ? ErrorHandler.DefaultErrorHandler : never > => Layer.empty.pipe( Layer.provideMerge(Layer.effect( Context.GenericTag>("@reffuse/extension-query/QueryClient"), Effect.succeed({ ErrorHandler: (props.ErrorHandler ?? ErrorHandler.DefaultErrorHandler) as Context.Tag> })), ), Layer.provideMerge(props.ErrorHandler ? Layer.empty : ErrorHandler.DefaultErrorHandlerLive ), )