This commit is contained in:
@@ -8,6 +8,17 @@ export interface QueryClient<FallbackA, HandledE> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export interface MakeProps<FallbackA, HandledE, E, R> {
|
||||||
|
readonly errorHandler: Effect.Effect<QueryErrorHandler.QueryErrorHandler<FallbackA, HandledE>, E, R>
|
||||||
|
}
|
||||||
|
|
||||||
|
export const make = <FallbackA, HandledE, E, R>(
|
||||||
|
{ errorHandler }: MakeProps<FallbackA, HandledE, E, R>
|
||||||
|
): Effect.Effect<QueryClient<FallbackA, HandledE>, E, R> => Effect.Do.pipe(
|
||||||
|
Effect.bind("errorHandler", () => errorHandler)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
const id = "@reffuse/extension-query/QueryClient"
|
const id = "@reffuse/extension-query/QueryClient"
|
||||||
|
|
||||||
export type TagClassShape<FallbackA, HandledE> = Context.TagClassShape<typeof id, QueryClient<FallbackA, HandledE>>
|
export type TagClassShape<FallbackA, HandledE> = Context.TagClassShape<typeof id, QueryClient<FallbackA, HandledE>>
|
||||||
@@ -19,29 +30,26 @@ export type GenericTagClass<FallbackA, HandledE> = Context.TagClass<
|
|||||||
export const makeGenericTagClass = <FallbackA = never, HandledE = never>(): GenericTagClass<FallbackA, HandledE> => Context.Tag(id)()
|
export const makeGenericTagClass = <FallbackA = never, HandledE = never>(): GenericTagClass<FallbackA, HandledE> => Context.Tag(id)()
|
||||||
|
|
||||||
|
|
||||||
export interface ServiceProps<EH, FallbackA, HandledE> {
|
export interface ServiceProps<FallbackA = never, HandledE = never, E = never, R = never> {
|
||||||
readonly ErrorHandler?: Context.Tag<EH, QueryErrorHandler.QueryErrorHandler<FallbackA, HandledE>>
|
readonly errorHandler?: Effect.Effect<QueryErrorHandler.QueryErrorHandler<FallbackA, HandledE>, E, R>
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ServiceResult<Self, EH, FallbackA, HandledE> extends Context.TagClass<
|
export interface ServiceResult<Self, FallbackA, HandledE, E, R> extends Context.TagClass<
|
||||||
Self,
|
Self,
|
||||||
typeof id,
|
typeof id,
|
||||||
QueryClient<FallbackA, HandledE>
|
QueryClient<FallbackA, HandledE>
|
||||||
> {
|
> {
|
||||||
readonly Default: Layer.Layer<
|
readonly Default: Layer.Layer<QueryErrorHandler.QueryErrorHandler<FallbackA, HandledE>, E, R>
|
||||||
Self | (EH extends QueryErrorHandler.DefaultQueryErrorHandler ? EH : never),
|
|
||||||
never,
|
|
||||||
EH extends QueryErrorHandler.DefaultQueryErrorHandler ? never : EH
|
|
||||||
>
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const Service = <Self>() => (
|
export const Service = <Self>() => (
|
||||||
<
|
<
|
||||||
EH = QueryErrorHandler.DefaultQueryErrorHandler,
|
|
||||||
FallbackA = QueryErrorHandler.Fallback<Context.Tag.Service<typeof QueryErrorHandler.DefaultQueryErrorHandler>>,
|
FallbackA = QueryErrorHandler.Fallback<Context.Tag.Service<typeof QueryErrorHandler.DefaultQueryErrorHandler>>,
|
||||||
HandledE = QueryErrorHandler.Error<Context.Tag.Service<typeof QueryErrorHandler.DefaultQueryErrorHandler>>,
|
HandledE = QueryErrorHandler.Error<Context.Tag.Service<typeof QueryErrorHandler.DefaultQueryErrorHandler>>,
|
||||||
|
E = never,
|
||||||
|
R = never,
|
||||||
>(
|
>(
|
||||||
props?: ServiceProps<EH, FallbackA, HandledE>
|
props?: ServiceProps<FallbackA, HandledE, E, R>
|
||||||
): ServiceResult<Self, EH, FallbackA, HandledE> => {
|
): ServiceResult<Self, EH, FallbackA, HandledE> => {
|
||||||
const TagClass = Context.Tag(id)() as ServiceResult<Self, EH, FallbackA, HandledE>
|
const TagClass = Context.Tag(id)() as ServiceResult<Self, EH, FallbackA, HandledE>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user