Skip to content

Commit f56a9f2

Browse files
feat(vue-query): useInfiniteQuery options support maybe ref type (#8956)
* feat: useInfiniteQuery options support maybe ref type * ci: apply automated fixes * fix: types --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
1 parent 47e6662 commit f56a9f2

File tree

2 files changed

+100
-35
lines changed

2 files changed

+100
-35
lines changed

packages/vue-query/src/__tests__/useInfiniteQuery.test-d.tsx

+15-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { describe, expectTypeOf, it } from 'vitest'
2-
import { reactive } from 'vue-demi'
2+
import { computed, reactive } from 'vue-demi'
33
import { useInfiniteQuery } from '../useInfiniteQuery'
44
import { simpleFetcher } from './test-utils'
55
import type { InfiniteData } from '@tanstack/query-core'
@@ -81,4 +81,18 @@ describe('Discriminated union return type', () => {
8181
expectTypeOf(query.error).toEqualTypeOf<Error>()
8282
}
8383
})
84+
85+
it('should accept computed options', () => {
86+
const options = computed(() => ({
87+
queryKey: ['infiniteQuery'],
88+
queryFn: simpleFetcher,
89+
getNextPageParam: () => undefined,
90+
initialPageParam: 0,
91+
}))
92+
const query = reactive(useInfiniteQuery(options))
93+
94+
if (query.isSuccess) {
95+
expectTypeOf(query.data).toEqualTypeOf<InfiniteData<string, unknown>>()
96+
}
97+
})
8498
})
+85-34
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
import { InfiniteQueryObserver } from '@tanstack/query-core'
22
import { useBaseQuery } from './useBaseQuery'
3+
import type {
4+
DefinedInitialDataInfiniteOptions,
5+
UndefinedInitialDataInfiniteOptions,
6+
} from './infiniteQueryOptions'
37
import type {
48
DefaultError,
59
InfiniteData,
@@ -11,7 +15,12 @@ import type {
1115

1216
import type { UseBaseQueryReturnType } from './useBaseQuery'
1317

14-
import type { DeepUnwrapRef, MaybeRefDeep, MaybeRefOrGetter } from './types'
18+
import type {
19+
DeepUnwrapRef,
20+
MaybeRef,
21+
MaybeRefDeep,
22+
MaybeRefOrGetter,
23+
} from './types'
1524
import type { QueryClient } from './queryClient'
1625

1726
export type UseInfiniteQueryOptions<
@@ -21,44 +30,80 @@ export type UseInfiniteQueryOptions<
2130
TQueryData = TQueryFnData,
2231
TQueryKey extends QueryKey = QueryKey,
2332
TPageParam = unknown,
24-
> = {
25-
[Property in keyof InfiniteQueryObserverOptions<
26-
TQueryFnData,
27-
TError,
28-
TData,
29-
TQueryData,
30-
TQueryKey,
31-
TPageParam
32-
>]: Property extends 'enabled'
33-
? MaybeRefOrGetter<
34-
InfiniteQueryObserverOptions<
35-
TQueryFnData,
36-
TError,
37-
TData,
38-
TQueryData,
39-
DeepUnwrapRef<TQueryKey>
40-
>[Property]
41-
>
42-
: MaybeRefDeep<
43-
InfiniteQueryObserverOptions<
44-
TQueryFnData,
45-
TError,
46-
TData,
47-
TQueryData,
48-
DeepUnwrapRef<TQueryKey>,
49-
TPageParam
50-
>[Property]
51-
>
52-
} & {
53-
shallow?: boolean
54-
}
33+
> = MaybeRef<
34+
{
35+
[Property in keyof InfiniteQueryObserverOptions<
36+
TQueryFnData,
37+
TError,
38+
TData,
39+
TQueryData,
40+
TQueryKey,
41+
TPageParam
42+
>]: Property extends 'enabled'
43+
? MaybeRefOrGetter<
44+
InfiniteQueryObserverOptions<
45+
TQueryFnData,
46+
TError,
47+
TData,
48+
TQueryData,
49+
DeepUnwrapRef<TQueryKey>
50+
>[Property]
51+
>
52+
: MaybeRefDeep<
53+
InfiniteQueryObserverOptions<
54+
TQueryFnData,
55+
TError,
56+
TData,
57+
TQueryData,
58+
DeepUnwrapRef<TQueryKey>,
59+
TPageParam
60+
>[Property]
61+
>
62+
} & {
63+
shallow?: boolean
64+
}
65+
>
5566

5667
export type UseInfiniteQueryReturnType<TData, TError> = UseBaseQueryReturnType<
5768
TData,
5869
TError,
5970
InfiniteQueryObserverResult<TData, TError>
6071
>
6172

73+
export function useInfiniteQuery<
74+
TQueryFnData,
75+
TError = DefaultError,
76+
TData = InfiniteData<TQueryFnData>,
77+
TQueryKey extends QueryKey = QueryKey,
78+
TPageParam = unknown,
79+
>(
80+
options: DefinedInitialDataInfiniteOptions<
81+
TQueryFnData,
82+
TError,
83+
TData,
84+
TQueryKey,
85+
TPageParam
86+
>,
87+
queryClient?: QueryClient,
88+
): UseInfiniteQueryReturnType<TData, TError>
89+
90+
export function useInfiniteQuery<
91+
TQueryFnData,
92+
TError = DefaultError,
93+
TData = InfiniteData<TQueryFnData>,
94+
TQueryKey extends QueryKey = QueryKey,
95+
TPageParam = unknown,
96+
>(
97+
options: UndefinedInitialDataInfiniteOptions<
98+
TQueryFnData,
99+
TError,
100+
TData,
101+
TQueryKey,
102+
TPageParam
103+
>,
104+
queryClient?: QueryClient,
105+
): UseInfiniteQueryReturnType<TData, TError>
106+
62107
export function useInfiniteQuery<
63108
TQueryFnData,
64109
TError = DefaultError,
@@ -75,10 +120,16 @@ export function useInfiniteQuery<
75120
TPageParam
76121
>,
77122
queryClient?: QueryClient,
78-
): UseInfiniteQueryReturnType<TData, TError> {
123+
): UseInfiniteQueryReturnType<TData, TError>
124+
125+
export function useInfiniteQuery(
126+
options: UseInfiniteQueryOptions,
127+
queryClient?: QueryClient,
128+
) {
79129
return useBaseQuery(
130+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
80131
InfiniteQueryObserver as typeof QueryObserver,
81132
options,
82133
queryClient,
83-
) as UseInfiniteQueryReturnType<TData, TError>
134+
)
84135
}

0 commit comments

Comments
 (0)