From 00af50a4a08de12c99360991f4e1aa2fe6a84694 Mon Sep 17 00:00:00 2001 From: danieljayasurya-praathee Date: Wed, 25 Mar 2026 21:55:21 +0530 Subject: [PATCH 1/3] fix: infer pageParam from computed queryFn with conditional skipToken --- .../src/__tests__/useInfiniteQuery.test-d.tsx | 24 ++++++++++++++++++- packages/vue-query/src/useInfiniteQuery.ts | 13 ++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/packages/vue-query/src/__tests__/useInfiniteQuery.test-d.tsx b/packages/vue-query/src/__tests__/useInfiniteQuery.test-d.tsx index 9163cd2482e..89163728b16 100644 --- a/packages/vue-query/src/__tests__/useInfiniteQuery.test-d.tsx +++ b/packages/vue-query/src/__tests__/useInfiniteQuery.test-d.tsx @@ -1,6 +1,7 @@ import { describe, expectTypeOf, it } from 'vitest' -import { computed, reactive } from 'vue-demi' +import { computed, reactive, ref } from 'vue-demi' import { sleep } from '@tanstack/query-test-utils' +import { skipToken } from '..' import { useInfiniteQuery } from '../useInfiniteQuery' import { infiniteQueryOptions } from '../infiniteQueryOptions' import type { InfiniteData } from '@tanstack/query-core' @@ -127,4 +128,25 @@ describe('Discriminated union return type', () => { expectTypeOf(query.data).toEqualTypeOf>() } }) + + it('should infer pageParam from computed queryFn with conditional skipToken', () => { + const enabled = ref(false) + + useInfiniteQuery({ + queryKey: ['infiniteQuery', enabled], + queryFn: computed(() => + enabled.value + ? ({ pageParam }) => { + expectTypeOf(pageParam).toEqualTypeOf() + return sleep(0).then(() => 'Some data') + } + : skipToken, + ), + initialPageParam: 1, + getNextPageParam: (_lastPage, _allPages, lastPageParam) => { + expectTypeOf(lastPageParam).toEqualTypeOf() + return lastPageParam + 1 + }, + }) + }) }) diff --git a/packages/vue-query/src/useInfiniteQuery.ts b/packages/vue-query/src/useInfiniteQuery.ts index 107251df872..4c07abac8a3 100644 --- a/packages/vue-query/src/useInfiniteQuery.ts +++ b/packages/vue-query/src/useInfiniteQuery.ts @@ -9,6 +9,7 @@ import type { InfiniteData, InfiniteQueryObserverOptions, InfiniteQueryObserverResult, + QueryFunction, QueryKey, QueryObserver, } from '@tanstack/query-core' @@ -24,6 +25,10 @@ import type { } from './types' import type { QueryClient } from './queryClient' +// Widen the type of the symbol to preserve contextual typing for +// `computed(() => condition ? queryFn : skipToken)`. +type SkipTokenForUseInfiniteQuery = symbol + export type UseInfiniteQueryOptions< TQueryFnData = unknown, TError = DefaultError, @@ -48,6 +53,14 @@ export type UseInfiniteQueryOptions< TPageParam >[Property] > + : Property extends 'queryFn' + ? MaybeRefOrGetter< + QueryFunction< + TQueryFnData, + DeepUnwrapRef, + TPageParam + > | SkipTokenForUseInfiniteQuery + > : MaybeRefDeep< InfiniteQueryObserverOptions< TQueryFnData, From 1f664416d214b7bbb118f16a1d60559f909c311c Mon Sep 17 00:00:00 2001 From: danieljayasurya-praathee Date: Fri, 3 Apr 2026 18:44:12 +0530 Subject: [PATCH 2/3] fix: update SkipToken type in UseInfiniteQueryOptions for improved type safety --- packages/vue-query/src/useInfiniteQuery.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/vue-query/src/useInfiniteQuery.ts b/packages/vue-query/src/useInfiniteQuery.ts index 4c07abac8a3..40b7e4d7d31 100644 --- a/packages/vue-query/src/useInfiniteQuery.ts +++ b/packages/vue-query/src/useInfiniteQuery.ts @@ -12,6 +12,7 @@ import type { QueryFunction, QueryKey, QueryObserver, + SkipToken, } from '@tanstack/query-core' import type { UseBaseQueryReturnType } from './useBaseQuery' @@ -27,7 +28,6 @@ import type { QueryClient } from './queryClient' // Widen the type of the symbol to preserve contextual typing for // `computed(() => condition ? queryFn : skipToken)`. -type SkipTokenForUseInfiniteQuery = symbol export type UseInfiniteQueryOptions< TQueryFnData = unknown, @@ -59,7 +59,7 @@ export type UseInfiniteQueryOptions< TQueryFnData, DeepUnwrapRef, TPageParam - > | SkipTokenForUseInfiniteQuery + > | SkipToken > : MaybeRefDeep< InfiniteQueryObserverOptions< From 2f5b733bba2a7be3667a98e4d3fbc15f9cbd2ede Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Fri, 3 Apr 2026 14:15:25 +0000 Subject: [PATCH 3/3] ci: apply automated fixes --- packages/vue-query/src/useInfiniteQuery.ts | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/packages/vue-query/src/useInfiniteQuery.ts b/packages/vue-query/src/useInfiniteQuery.ts index 40b7e4d7d31..476fed53fb6 100644 --- a/packages/vue-query/src/useInfiniteQuery.ts +++ b/packages/vue-query/src/useInfiniteQuery.ts @@ -55,21 +55,18 @@ export type UseInfiniteQueryOptions< > : Property extends 'queryFn' ? MaybeRefOrGetter< - QueryFunction< + | QueryFunction, TPageParam> + | SkipToken + > + : MaybeRefDeep< + InfiniteQueryObserverOptions< TQueryFnData, + TError, + TData, DeepUnwrapRef, TPageParam - > | SkipToken + >[Property] > - : MaybeRefDeep< - InfiniteQueryObserverOptions< - TQueryFnData, - TError, - TData, - DeepUnwrapRef, - TPageParam - >[Property] - > } & ShallowOption >