Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/vue/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@ export {
parseMutationFilterArgs,
} from "./utils";

export type { UseQueryReturnType } from "./useBaseQuery";
export type { UseQueryOptions } from "./useQuery";
export type { UseInfiniteQueryOptions } from "./useInfiniteQuery";
export type { UseMutationOptions, UseMutationReturnType } from "./useMutation";
export type { UseQueriesOptions, UseQueriesResults } from "./useQueries";
export type { MutationFilters } from "./useIsMutating";
export type { QueryFilters } from "./useIsFetching";
18 changes: 9 additions & 9 deletions src/vue/useQueries.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,9 @@ type GetResults<T> =
QueryObserverResult;

/**
* QueriesOptions reducer recursively unwraps function arguments to infer/enforce type param
* UseQueriesOptions reducer recursively unwraps function arguments to infer/enforce type param
*/
type QueriesOptions<
export type UseQueriesOptions<
T extends any[],
Result extends any[] = [],
Depth extends ReadonlyArray<number> = []
Expand All @@ -83,7 +83,7 @@ type QueriesOptions<
: T extends [infer Head]
? [...Result, GetOptions<Head>]
: T extends [infer Head, ...infer Tail]
? QueriesOptions<[...Tail], [...Result, GetOptions<Head>], [...Depth, 1]>
? UseQueriesOptions<[...Tail], [...Result, GetOptions<Head>], [...Depth, 1]>
: unknown[] extends T
? T
: // If T is *some* array but we couldn't assign unknown[] to it, then it must hold some known/homogenous type!
Expand All @@ -94,9 +94,9 @@ type QueriesOptions<
UseQueryOptions[];

/**
* QueriesResults reducer recursively maps type param to results
* UseQueriesResults reducer recursively maps type param to results
*/
type QueriesResults<
export type UseQueriesResults<
T extends any[],
Result extends any[] = [],
Depth extends ReadonlyArray<number> = []
Expand All @@ -107,16 +107,16 @@ type QueriesResults<
: T extends [infer Head]
? [...Result, GetResults<Head>]
: T extends [infer Head, ...infer Tail]
? QueriesResults<[...Tail], [...Result, GetResults<Head>], [...Depth, 1]>
? UseQueriesResults<[...Tail], [...Result, GetResults<Head>], [...Depth, 1]>
: T extends UseQueryOptions<infer TQueryFnData, infer TError, infer TData>[]
? // Dynamic-size (homogenous) UseQueryOptions array: map directly to array of results
QueryObserverResult<unknown extends TData ? TQueryFnData : TData, TError>[]
: // Fallback
QueryObserverResult[];

export function useQueries<T extends any[]>(
queries: readonly [...QueriesOptions<T>]
): Readonly<QueriesResults<T>> {
queries: readonly [...UseQueriesOptions<T>]
): Readonly<UseQueriesResults<T>> {
const queryClientKey = queries[0]?.queryClientKey;
const queryClient = useQueryClient(queryClientKey);
const defaultedQueries = queries.map((options) => {
Expand Down Expand Up @@ -146,5 +146,5 @@ export function useQueries<T extends any[]>(
unsubscribe();
});

return readonly(state) as QueriesResults<T>;
return readonly(state) as UseQueriesResults<T>;
}