UNPKG

@tanstack/vue-query

Version:

Hooks for managing, caching and syncing asynchronous and remote data in Vue

407 lines (382 loc) 10.8 kB
import { ref } from 'vue-demi' import { QueryClient as QC } from '@tanstack/query-core' import { cloneDeepUnref } from './utils' import { QueryCache } from './queryCache' import { MutationCache } from './mutationCache' import type { MaybeRefDeep, NoUnknown } from './types' import type { CancelOptions, DataTag, DefaultError, DefaultOptions, FetchInfiniteQueryOptions, FetchQueryOptions, InfiniteData, InvalidateOptions, InvalidateQueryFilters, MutationFilters, MutationKey, MutationObserverOptions, NoInfer, QueryClientConfig, QueryFilters, QueryKey, QueryObserverOptions, QueryState, RefetchOptions, RefetchQueryFilters, ResetOptions, SetDataOptions, Updater, } from '@tanstack/query-core' export class QueryClient extends QC { constructor(config: QueryClientConfig = {}) { const vueQueryConfig = { defaultOptions: config.defaultOptions, queryCache: config.queryCache || new QueryCache(), mutationCache: config.mutationCache || new MutationCache(), } super(vueQueryConfig) } isRestoring = ref(false) isFetching(filters: MaybeRefDeep<QueryFilters> = {}): number { return super.isFetching(cloneDeepUnref(filters)) } isMutating(filters: MaybeRefDeep<MutationFilters> = {}): number { return super.isMutating(cloneDeepUnref(filters)) } getQueryData<TData = unknown, TaggedQueryKey extends QueryKey = QueryKey>( queryKey: MaybeRefDeep<TaggedQueryKey>, ): | (TaggedQueryKey extends DataTag<unknown, infer TaggedValue> ? TaggedValue : TData) | undefined getQueryData<TData = unknown>( queryKey: MaybeRefDeep<QueryKey>, ): TData | undefined getQueryData<TData = unknown>( queryKey: MaybeRefDeep<QueryKey>, ): TData | undefined { return super.getQueryData(cloneDeepUnref(queryKey)) } ensureQueryData< TQueryFnData, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( options: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>, ): Promise<TData> ensureQueryData< TQueryFnData, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( options: MaybeRefDeep< FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey> >, ): Promise<TData> ensureQueryData< TQueryFnData, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( options: MaybeRefDeep< FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey> >, ): Promise<TData> { return super.ensureQueryData(cloneDeepUnref(options)) } getQueriesData<TData = unknown>( filters: MaybeRefDeep<QueryFilters>, ): Array<[QueryKey, TData | undefined]> { return super.getQueriesData(cloneDeepUnref(filters)) } setQueryData< TQueryFnData, TaggedQueryKey extends QueryKey, TData = TaggedQueryKey extends DataTag<unknown, infer TaggedValue> ? TaggedValue : TQueryFnData, >( queryKey: MaybeRefDeep<TaggedQueryKey>, updater: Updater<NoInfer<TData> | undefined, NoInfer<TData> | undefined>, options?: MaybeRefDeep<SetDataOptions>, ): TData | undefined setQueryData<TQueryFnData, TData = NoUnknown<TQueryFnData>>( queryKey: MaybeRefDeep<QueryKey>, updater: Updater<NoInfer<TData> | undefined, NoInfer<TData> | undefined>, options?: MaybeRefDeep<SetDataOptions>, ): TData | undefined setQueryData<TData>( queryKey: MaybeRefDeep<QueryKey>, updater: Updater<TData | undefined, TData | undefined>, options: MaybeRefDeep<SetDataOptions> = {}, ): TData | undefined { return super.setQueryData( cloneDeepUnref(queryKey), updater, cloneDeepUnref(options), ) } setQueriesData<TData>( filters: MaybeRefDeep<QueryFilters>, updater: Updater<TData | undefined, TData | undefined>, options: MaybeRefDeep<SetDataOptions> = {}, ): Array<[QueryKey, TData | undefined]> { return super.setQueriesData( cloneDeepUnref(filters), updater, cloneDeepUnref(options), ) } getQueryState<TData = unknown, TError = DefaultError>( queryKey: MaybeRefDeep<QueryKey>, ): QueryState<TData, TError> | undefined { return super.getQueryState(cloneDeepUnref(queryKey)) } removeQueries(filters: MaybeRefDeep<QueryFilters> = {}): void { return super.removeQueries(cloneDeepUnref(filters)) } resetQueries( filters: MaybeRefDeep<QueryFilters> = {}, options: MaybeRefDeep<ResetOptions> = {}, ): Promise<void> { return super.resetQueries(cloneDeepUnref(filters), cloneDeepUnref(options)) } cancelQueries( filters: MaybeRefDeep<QueryFilters> = {}, options: MaybeRefDeep<CancelOptions> = {}, ): Promise<void> { return super.cancelQueries(cloneDeepUnref(filters), cloneDeepUnref(options)) } invalidateQueries( filters: MaybeRefDeep<InvalidateQueryFilters> = {}, options: MaybeRefDeep<InvalidateOptions> = {}, ): Promise<void> { // (dosipiuk): We need to delay `invalidate` execution to next macro task for all reactive values to be updated. // This ensures that `context` in `queryFn` while `invalidating` along reactive variable change has correct value. return new Promise((resolve) => { setTimeout(async () => { await super.invalidateQueries( cloneDeepUnref(filters), cloneDeepUnref(options), ) resolve() }, 0) }) } refetchQueries( filters: MaybeRefDeep<RefetchQueryFilters> = {}, options: MaybeRefDeep<RefetchOptions> = {}, ): Promise<void> { return super.refetchQueries( cloneDeepUnref(filters), cloneDeepUnref(options), ) } fetchQuery< TQueryFnData, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = never, >( options: FetchQueryOptions< TQueryFnData, TError, TData, TQueryKey, TPageParam >, ): Promise<TData> fetchQuery< TQueryFnData, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = never, >( options: MaybeRefDeep< FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam> >, ): Promise<TData> fetchQuery< TQueryFnData, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = never, >( options: MaybeRefDeep< FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam> >, ): Promise<TData> { return super.fetchQuery(cloneDeepUnref(options)) } prefetchQuery< TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( options: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>, ): Promise<void> prefetchQuery< TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( options: MaybeRefDeep< FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey> >, ): Promise<void> prefetchQuery< TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( options: MaybeRefDeep< FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey> >, ): Promise<void> { return super.prefetchQuery(cloneDeepUnref(options)) } fetchInfiniteQuery< TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown, >( options: FetchInfiniteQueryOptions< TQueryFnData, TError, TData, TQueryKey, TPageParam >, ): Promise<InfiniteData<TData, TPageParam>> fetchInfiniteQuery< TQueryFnData, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown, >( options: MaybeRefDeep< FetchInfiniteQueryOptions< TQueryFnData, TError, TData, TQueryKey, TPageParam > >, ): Promise<InfiniteData<TData, TPageParam>> fetchInfiniteQuery< TQueryFnData, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown, >( options: MaybeRefDeep< FetchInfiniteQueryOptions< TQueryFnData, TError, TData, TQueryKey, TPageParam > >, ): Promise<InfiniteData<TData, TPageParam>> { return super.fetchInfiniteQuery(cloneDeepUnref(options)) } prefetchInfiniteQuery< TQueryFnData, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown, >( options: FetchInfiniteQueryOptions< TQueryFnData, TError, TData, TQueryKey, TPageParam >, ): Promise<void> prefetchInfiniteQuery< TQueryFnData, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown, >( options: MaybeRefDeep< FetchInfiniteQueryOptions< TQueryFnData, TError, TData, TQueryKey, TPageParam > >, ): Promise<void> prefetchInfiniteQuery< TQueryFnData, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown, >( options: MaybeRefDeep< FetchInfiniteQueryOptions< TQueryFnData, TError, TData, TQueryKey, TPageParam > >, ): Promise<void> { return super.prefetchInfiniteQuery(cloneDeepUnref(options)) } setDefaultOptions(options: MaybeRefDeep<DefaultOptions>): void { super.setDefaultOptions(cloneDeepUnref(options)) } setQueryDefaults( queryKey: MaybeRefDeep<QueryKey>, options: MaybeRefDeep< Omit<QueryObserverOptions<unknown, any, any, any>, 'queryKey'> >, ): void { super.setQueryDefaults(cloneDeepUnref(queryKey), cloneDeepUnref(options)) } getQueryDefaults( queryKey: MaybeRefDeep<QueryKey>, ): QueryObserverOptions<any, any, any, any, any> { return super.getQueryDefaults(cloneDeepUnref(queryKey)) } setMutationDefaults( mutationKey: MaybeRefDeep<MutationKey>, options: MaybeRefDeep<MutationObserverOptions<any, any, any, any>>, ): void { super.setMutationDefaults( cloneDeepUnref(mutationKey), cloneDeepUnref(options), ) } getMutationDefaults( mutationKey: MaybeRefDeep<MutationKey>, ): MutationObserverOptions<any, any, any, any> { return super.getMutationDefaults(cloneDeepUnref(mutationKey)) } }