This commit is contained in:
@@ -6,34 +6,42 @@ export interface QueryClient<EH, HandledE> {
|
||||
readonly ErrorHandler: Context.Tag<EH, ErrorHandler.ErrorHandler<HandledE>>
|
||||
}
|
||||
|
||||
|
||||
export type Tag<EH, HandledE> = Context.Tag<QueryClient<EH, HandledE>, QueryClient<EH, HandledE>>
|
||||
export const makeTag = <EH = never, HandledE = never>(): Tag<EH, HandledE> => Context.GenericTag("@reffuse/extension-query/QueryClient")
|
||||
|
||||
|
||||
export interface LayerProps<EH, HandledE> {
|
||||
export interface MakeProps<EH, HandledE> {
|
||||
readonly ErrorHandler?: Context.Tag<EH, ErrorHandler.ErrorHandler<HandledE>>
|
||||
}
|
||||
|
||||
export const layer = <
|
||||
export type MakeResult<EH, HandledE> = [
|
||||
tag: Tag<EH, HandledE>,
|
||||
layer: Layer.Layer<
|
||||
| QueryClient<EH, HandledE>
|
||||
| (EH extends ErrorHandler.DefaultErrorHandler
|
||||
? ErrorHandler.DefaultErrorHandler
|
||||
: never)
|
||||
>,
|
||||
]
|
||||
|
||||
export const make = <
|
||||
EH = ErrorHandler.DefaultErrorHandler,
|
||||
HandledE = never,
|
||||
>(
|
||||
props?: LayerProps<EH, HandledE>
|
||||
): Layer.Layer<
|
||||
| QueryClient<EH, HandledE>
|
||||
| (EH extends ErrorHandler.DefaultErrorHandler
|
||||
? ErrorHandler.DefaultErrorHandler
|
||||
: never)
|
||||
> => Layer.empty.pipe(
|
||||
Layer.provideMerge(
|
||||
Layer.effect(makeTag<EH, HandledE>(), Effect.succeed({
|
||||
ErrorHandler: (props?.ErrorHandler ?? ErrorHandler.DefaultErrorHandler) as Context.Tag<EH, ErrorHandler.ErrorHandler<HandledE>>
|
||||
}))
|
||||
),
|
||||
props?: MakeProps<EH, HandledE>
|
||||
): MakeResult<EH, HandledE> => [
|
||||
makeTag(),
|
||||
|
||||
Layer.provideMerge((props?.ErrorHandler
|
||||
? Layer.empty
|
||||
: ErrorHandler.DefaultErrorHandlerLive
|
||||
) as Layer.Layer<ErrorHandler.DefaultErrorHandler>),
|
||||
)
|
||||
Layer.empty.pipe(
|
||||
Layer.provideMerge(
|
||||
Layer.effect(makeTag<EH, HandledE>(), Effect.succeed({
|
||||
ErrorHandler: (props?.ErrorHandler ?? ErrorHandler.DefaultErrorHandler) as Context.Tag<EH, ErrorHandler.ErrorHandler<HandledE>>
|
||||
}))
|
||||
),
|
||||
|
||||
Layer.provideMerge((props?.ErrorHandler
|
||||
? Layer.empty
|
||||
: ErrorHandler.DefaultErrorHandlerLive
|
||||
) as Layer.Layer<ErrorHandler.DefaultErrorHandler>),
|
||||
),
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user