UNPKG

@bisham/query-factory

Version:

A simple, type-safe utility to create and manage React Query queries effortlessly.

115 lines (110 loc) 12.8 kB
import { DefaultError, QueryKey, UndefinedInitialDataOptions, UnusedSkipTokenOptions, DefinedInitialDataOptions, UseQueryOptions, OmitKeyof, QueryFunction, UseQueryResult, DefinedUseQueryResult, DataTag, InferDataFromTag, QueryFilters, Updater, SetDataOptions, InvalidateQueryFilters, InvalidateOptions, FetchQueryOptions, RefetchQueryFilters, RefetchOptions, QueryFunctionContext, QueryClient } from '@tanstack/react-query'; type QueryFunctionContextObj<TQueryKey extends QueryKey = QueryKey> = QueryFunctionContext<TQueryKey>; type GetFactoryQueryOptionsWithoutParams<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TQueryOptions extends UndefinedInitialDataOptions | UnusedSkipTokenOptions | DefinedInitialDataOptions = UseQueryOptions> = OmitKeyof<TQueryOptions extends UndefinedInitialDataOptions ? UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> : TQueryOptions extends UnusedSkipTokenOptions ? UnusedSkipTokenOptions<TQueryFnData, TError, TData, TQueryKey> : TQueryOptions extends DefinedInitialDataOptions ? DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> : UseQueryOptions, "queryKey" | "queryFn" | "select"> & { queryKey: () => TQueryKey; queryFn: QueryFunction<TQueryFnData, TQueryKey>; }; type GetFactoryQueryOptionsWithParams<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TQueryOptions extends UndefinedInitialDataOptions | UnusedSkipTokenOptions | DefinedInitialDataOptions = UseQueryOptions, TParams extends Record<string, unknown> | undefined = undefined> = OmitKeyof<TQueryOptions extends UndefinedInitialDataOptions ? UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> : TQueryOptions extends UnusedSkipTokenOptions ? UnusedSkipTokenOptions<TQueryFnData, TError, TData, TQueryKey> : TQueryOptions extends DefinedInitialDataOptions ? DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> : UseQueryOptions, "queryKey" | "queryFn" | "select"> & { queryKey: (params: TParams) => TQueryKey; queryFn: (params: QueryFunctionContextObj<TQueryKey> & { params: TParams; }) => TQueryFnData | Promise<TQueryFnData>; }; type GetFactoryQueryReturnWithoutParams<TQueryFnData = unknown, TError = DefaultError, TQueryKey extends QueryKey = QueryKey> = { <TData = TQueryFnData>(options?: OmitKeyof<UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> | UnusedSkipTokenOptions<TQueryFnData, TError, TData, TQueryKey>, "queryKey" | "queryFn">): UseQueryResult<NoInfer<TData>, TError>; <TData = TQueryFnData>(options: OmitKeyof<DefinedInitialDataOptions, "queryKey" | "queryFn">): DefinedUseQueryResult<NoInfer<TData>, TError>; getQueryKey: () => DataTag<TQueryKey, TQueryFnData, TError>; getQueryOptions: <TData = TQueryFnData>(options?: OmitKeyof<UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> | UnusedSkipTokenOptions<TQueryFnData, TError, TData, TQueryKey> | DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>, "queryKey" | "queryFn">) => (UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> | UnusedSkipTokenOptions<TQueryFnData, TError, TData, TQueryKey> | DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>) & { queryKey: DataTag<TQueryKey, TQueryFnData, TError>; }; getQueryData: () => InferDataFromTag<TQueryFnData, TQueryKey> | undefined; getQueriesData: (filters?: OmitKeyof<QueryFilters, "queryKey">) => Array<[TQueryKey, TQueryFnData | undefined]>; setQueryData: (params: { updater: Updater<NoInfer<TQueryFnData> | undefined, NoInfer<TQueryFnData> | undefined>; options?: SetDataOptions; }) => NoInfer<TQueryFnData> | undefined; removeQueryData: (filters?: OmitKeyof<QueryFilters, "queryKey">) => void; removeAllQueriesData: (filters?: OmitKeyof<QueryFilters, "queryKey">) => void; invalidateQuery: (params?: { filters?: OmitKeyof<InvalidateQueryFilters<TQueryKey>, "queryKey">; options?: InvalidateOptions; }) => Promise<InferDataFromTag<TQueryFnData, TQueryKey> | undefined>; invalidateAllQueries: (params?: { filters?: OmitKeyof<InvalidateQueryFilters<TQueryKey>, "queryKey">; options?: InvalidateOptions; }) => Promise<Array<[TQueryKey, TQueryFnData | undefined]>>; prefetch: <TData = TQueryFnData>(options?: OmitKeyof<FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>, "queryKey" | "queryFn">) => Promise<InferDataFromTag<TQueryFnData, TQueryKey> | undefined>; refetchQuery: (params?: { filters?: OmitKeyof<RefetchQueryFilters<TQueryKey>, "queryKey">; options?: RefetchOptions; }) => Promise<InferDataFromTag<TQueryFnData, TQueryKey> | undefined>; refetchAllQueries: (params?: { filters?: OmitKeyof<RefetchQueryFilters<TQueryKey>, "queryKey">; options?: RefetchOptions; }) => Promise<Array<[TQueryKey, TQueryFnData | undefined]>>; }; type GetFactoryQueryReturnWithParams<TQueryFnData = unknown, TError = DefaultError, TQueryKey extends QueryKey = QueryKey, TParams extends Record<string, unknown> | undefined = undefined> = { <TData = TQueryFnData>(options: OmitKeyof<UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> | UnusedSkipTokenOptions<TQueryFnData, TError, TData, TQueryKey>, "queryKey" | "queryFn"> & { params: TParams; }): UseQueryResult<NoInfer<TData>, TError>; <TData = TQueryFnData>(options: OmitKeyof<DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>, "queryKey" | "queryFn"> & { params: TParams; }): DefinedUseQueryResult<NoInfer<TData>, TError>; getQueryKey: (params: { params: TParams; }) => DataTag<TQueryKey, TQueryFnData, TError>; getQueryOptions: <TData = TQueryFnData>(options?: OmitKeyof<UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> | UnusedSkipTokenOptions<TQueryFnData, TError, TData, TQueryKey> | DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>, "queryKey" | "queryFn"> & { params: TParams; }) => (UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> | UnusedSkipTokenOptions<TQueryFnData, TError, TData, TQueryKey> | DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>) & { queryKey: DataTag<TQueryKey, TQueryFnData, TError>; }; getQueryData: (params: { params: TParams; }) => InferDataFromTag<TQueryFnData, TQueryKey> | undefined; getQueriesData: (filters?: OmitKeyof<QueryFilters, "queryKey">) => Array<[TQueryKey, TQueryFnData | undefined]>; setQueryData: (params: { params: TParams; updater: Updater<NoInfer<TQueryFnData> | undefined, NoInfer<TQueryFnData> | undefined>; options?: SetDataOptions; }) => NoInfer<TQueryFnData> | undefined; removeQueryData: (filters: OmitKeyof<QueryFilters, "queryKey"> & { params: TParams; }) => void; removeAllQueriesData: (filters?: OmitKeyof<QueryFilters, "queryKey">) => void; invalidateQuery: (params: { filters?: OmitKeyof<InvalidateQueryFilters<TQueryKey>, "queryKey">; params: TParams; options?: InvalidateOptions; }) => Promise<InferDataFromTag<TQueryFnData, TQueryKey> | undefined>; invalidateAllQueries: (params?: { filters?: OmitKeyof<InvalidateQueryFilters<TQueryKey>, "queryKey">; options?: InvalidateOptions; }) => Promise<Array<[TQueryKey, TQueryFnData | undefined]>>; prefetch: <TData = TQueryFnData>(options: OmitKeyof<FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>, "queryKey" | "queryFn"> & { params: TParams; }) => Promise<InferDataFromTag<TQueryFnData, TQueryKey> | undefined>; refetchQuery: (params: { filters?: OmitKeyof<RefetchQueryFilters<TQueryKey>, "queryKey">; params: TParams; options?: RefetchOptions; }) => Promise<InferDataFromTag<TQueryFnData, TQueryKey> | undefined>; refetchAllQueries: (params?: { filters?: OmitKeyof<RefetchQueryFilters<TQueryKey>, "queryKey">; options?: RefetchOptions; }) => Promise<Array<[TQueryKey, TQueryFnData | undefined]>>; }; declare function createQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(factoryOptions: GetFactoryQueryOptionsWithoutParams<TQueryFnData, TError, TData, TQueryKey, DefinedInitialDataOptions>, factoryQueryClient: QueryClient): GetFactoryQueryReturnWithoutParams<TQueryFnData, TError, TQueryKey>; declare function createQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(factoryOptions: GetFactoryQueryOptionsWithoutParams<TQueryFnData, TError, TData, TQueryKey, UnusedSkipTokenOptions>, factoryQueryClient: QueryClient): GetFactoryQueryReturnWithoutParams<TQueryFnData, TError, TQueryKey>; declare function createQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(factoryOptions: GetFactoryQueryOptionsWithoutParams<TQueryFnData, TError, TData, TQueryKey, UndefinedInitialDataOptions>, factoryQueryClient: QueryClient): GetFactoryQueryReturnWithoutParams<TQueryFnData, TError, TQueryKey>; declare function createQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TParams extends Record<string, unknown> | undefined = undefined>(factoryOptions: GetFactoryQueryOptionsWithParams<TQueryFnData, TError, TData, TQueryKey, DefinedInitialDataOptions, TParams>, factoryQueryClient: QueryClient): GetFactoryQueryReturnWithParams<TQueryFnData, TError, TQueryKey, TParams>; declare function createQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TParams extends Record<string, unknown> | undefined = undefined>(factoryOptions: GetFactoryQueryOptionsWithParams<TQueryFnData, TError, TData, TQueryKey, UnusedSkipTokenOptions, TParams>, factoryQueryClient: QueryClient): GetFactoryQueryReturnWithParams<TQueryFnData, TError, TQueryKey, TParams>; declare function createQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TParams extends Record<string, unknown> | undefined = undefined>(factoryOptions: GetFactoryQueryOptionsWithParams<TQueryFnData, TError, TData, TQueryKey, UndefinedInitialDataOptions, TParams>, factoryQueryClient: QueryClient): GetFactoryQueryReturnWithParams<TQueryFnData, TError, TQueryKey, TParams>; declare function createQueryFactory(queryClient: QueryClient): { <TQueryFnData = unknown, TError = Error, TData = TQueryFnData, TQueryKey extends QueryKey = readonly unknown[]>(factoryOptions: GetFactoryQueryOptionsWithoutParams<TQueryFnData, TError, TData, TQueryKey, DefinedInitialDataOptions>): GetFactoryQueryReturnWithoutParams<TQueryFnData, TError, TQueryKey>; <TQueryFnData = unknown, TError = Error, TData = TQueryFnData, TQueryKey extends QueryKey = readonly unknown[]>(factoryOptions: GetFactoryQueryOptionsWithoutParams<TQueryFnData, TError, TData, TQueryKey, UnusedSkipTokenOptions>): GetFactoryQueryReturnWithoutParams<TQueryFnData, TError, TQueryKey>; <TQueryFnData = unknown, TError = Error, TData = TQueryFnData, TQueryKey extends QueryKey = readonly unknown[]>(factoryOptions: GetFactoryQueryOptionsWithoutParams<TQueryFnData, TError, TData, TQueryKey, UndefinedInitialDataOptions>): GetFactoryQueryReturnWithoutParams<TQueryFnData, TError, TQueryKey>; <TQueryFnData = unknown, TError = Error, TData = TQueryFnData, TQueryKey extends QueryKey = readonly unknown[], TParams extends Record<string, unknown> | undefined = undefined>(factoryOptions: GetFactoryQueryOptionsWithParams<TQueryFnData, TError, TData, TQueryKey, DefinedInitialDataOptions, TParams>): GetFactoryQueryReturnWithParams<TQueryFnData, TError, TQueryKey, TParams>; <TQueryFnData = unknown, TError = Error, TData = TQueryFnData, TQueryKey extends QueryKey = readonly unknown[], TParams extends Record<string, unknown> | undefined = undefined>(factoryOptions: GetFactoryQueryOptionsWithParams<TQueryFnData, TError, TData, TQueryKey, UnusedSkipTokenOptions, TParams>, factoryQueryClient: QueryClient): GetFactoryQueryReturnWithParams<TQueryFnData, TError, TQueryKey, TParams>; <TQueryFnData = unknown, TError = Error, TData = TQueryFnData, TQueryKey extends QueryKey = readonly unknown[], TParams extends Record<string, unknown> | undefined = undefined>(factoryOptions: GetFactoryQueryOptionsWithParams<TQueryFnData, TError, TData, TQueryKey, UndefinedInitialDataOptions, TParams>): GetFactoryQueryReturnWithParams<TQueryFnData, TError, TQueryKey, TParams>; }; export { createQuery, createQueryFactory };