Skip to content

Commit d89309b

Browse files
committed
fix: unwrap queryFn key type (#193)
1 parent 56c37a1 commit d89309b

File tree

4 files changed

+45
-27
lines changed

4 files changed

+45
-27
lines changed

src/vuejs/types.ts

Lines changed: 35 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import type {
33
QueryObserverOptions,
44
InfiniteQueryObserverOptions,
55
} from "react-query/core";
6-
import { Ref } from "vue-demi";
6+
import { Ref, UnwrapRef } from "vue-demi";
77

88
export type MaybeRef<T> = Ref<T> | T;
99
export type MaybeRefDeep<T> = T extends Function
@@ -33,15 +33,23 @@ export type VueQueryObserverOptions<
3333
TData,
3434
TQueryData,
3535
TQueryKey
36-
>]: MaybeRef<
37-
QueryObserverOptions<
38-
TQueryFnData,
39-
TError,
40-
TData,
41-
TQueryData,
42-
TQueryKey
43-
>[Property]
44-
>;
36+
>]: Property extends "queryFn"
37+
? QueryObserverOptions<
38+
TQueryFnData,
39+
TError,
40+
TData,
41+
TQueryData,
42+
UnwrapRef<TQueryKey>
43+
>[Property]
44+
: MaybeRef<
45+
QueryObserverOptions<
46+
TQueryFnData,
47+
TError,
48+
TData,
49+
TQueryData,
50+
TQueryKey
51+
>[Property]
52+
>;
4553
};
4654

4755
// A Vue version of InfiniteQueryObserverOptions from "react-query/types/core"
@@ -59,13 +67,21 @@ export type VueInfiniteQueryObserverOptions<
5967
TData,
6068
TQueryData,
6169
TQueryKey
62-
>]: MaybeRef<
63-
InfiniteQueryObserverOptions<
64-
TQueryFnData,
65-
TError,
66-
TData,
67-
TQueryData,
68-
TQueryKey
69-
>[Property]
70-
>;
70+
>]: Property extends "queryFn"
71+
? InfiniteQueryObserverOptions<
72+
TQueryFnData,
73+
TError,
74+
TData,
75+
TQueryData,
76+
UnwrapRef<TQueryKey>
77+
>[Property]
78+
: MaybeRef<
79+
InfiniteQueryObserverOptions<
80+
TQueryFnData,
81+
TError,
82+
TData,
83+
TQueryData,
84+
TQueryKey
85+
>[Property]
86+
>;
7187
};

src/vuejs/useBaseQuery.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
ToRefs,
66
reactive,
77
watch,
8+
UnwrapRef,
89
} from "vue-demi";
910
import type {
1011
QueryObserver,
@@ -16,8 +17,8 @@ import type { QueryFunction } from "react-query/lib/core";
1617
import { useQueryClient } from "./useQueryClient";
1718
import { updateState, isQueryKey, cloneDeepUnref } from "./utils";
1819
import { WithQueryClientKey } from "./types";
19-
import { UseQueryOptions } from "./useQuery";
20-
import { UseInfiniteQueryOptions } from "./useInfiniteQuery";
20+
import type { UseQueryOptions } from "./useQuery";
21+
import type { UseInfiniteQueryOptions } from "./useInfiniteQuery";
2122

2223
export type UseQueryReturnType<
2324
TData,
@@ -48,7 +49,7 @@ export function useBaseQuery<
4849
| TQueryKey
4950
| UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>,
5051
arg2:
51-
| QueryFunction<TQueryFnData, TQueryKey>
52+
| QueryFunction<TQueryFnData, UnwrapRef<TQueryKey>>
5253
| UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey> = {},
5354
arg3: UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey> = {}
5455
): UseQueryReturnType<TData, TError> {

src/vuejs/useInfiniteQuery.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { InfiniteQueryObserver } from "react-query/core";
2-
2+
import type { UnwrapRef } from "vue-demi";
33
import type {
44
QueryObserver,
55
QueryFunction,
@@ -74,7 +74,7 @@ export function useInfiniteQuery<
7474
TQueryKey extends QueryKey = QueryKey
7575
>(
7676
queryKey: TQueryKey,
77-
queryFn: QueryFunction<TQueryFnData, TQueryKey>,
77+
queryFn: QueryFunction<TQueryFnData, UnwrapRef<TQueryKey>>,
7878
options?: Omit<
7979
UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
8080
"queryKey" | "queryFn"
@@ -91,7 +91,7 @@ export function useInfiniteQuery<
9191
| TQueryKey
9292
| UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
9393
arg2?:
94-
| QueryFunction<TQueryFnData, TQueryKey>
94+
| QueryFunction<TQueryFnData, UnwrapRef<TQueryKey>>
9595
| UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
9696
arg3?: UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>
9797
): UseInfiniteQueryReturnType<TData, TError> {

src/vuejs/useQuery.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import type { UnwrapRef } from "vue-demi";
12
import { QueryObserver } from "react-query/core";
23
import type {
34
QueryFunction,
@@ -50,7 +51,7 @@ export function useQuery<
5051
TQueryKey extends QueryKey = QueryKey
5152
>(
5253
queryKey: TQueryKey,
53-
queryFn: QueryFunction<TQueryFnData, TQueryKey>,
54+
queryFn: QueryFunction<TQueryFnData, UnwrapRef<TQueryKey>>,
5455
options?: Omit<
5556
UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
5657
"queryKey" | "queryFn"
@@ -65,7 +66,7 @@ export function useQuery<
6566
>(
6667
arg1: TQueryKey | UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
6768
arg2?:
68-
| QueryFunction<TQueryFnData, TQueryKey>
69+
| QueryFunction<TQueryFnData, UnwrapRef<TQueryKey>>
6970
| UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
7071
arg3?: UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>
7172
): UseQueryReturnType<TData, TError> {

0 commit comments

Comments
 (0)