Skip to content

Commit 693a471

Browse files
authored
feat(query-core, react-query): backport v5 types, deprecate isLoading in favor of isPending in mutation observer results (#9266)
* feat(query-core, react-query): add types, deprecate `isLoading` in favor of `isPending` in mutation observer results * refactor(react-query): update import path in Hydrate test file
1 parent 79f0b9a commit 693a471

File tree

11 files changed

+80
-55
lines changed

11 files changed

+80
-55
lines changed

packages/query-core/src/types.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -669,6 +669,9 @@ export interface MutationObserverBaseResult<
669669
> extends MutationState<TData, TError, TVariables, TContext> {
670670
isError: boolean
671671
isIdle: boolean
672+
/**
673+
* @deprecated This property will be removed in the next major version. Use `isPending` instead.
674+
*/
672675
isLoading: boolean
673676
isPending: boolean
674677
isSuccess: boolean
@@ -686,7 +689,11 @@ export interface MutationObserverIdleResult<
686689
error: null
687690
isError: false
688691
isIdle: true
692+
/**
693+
* @deprecated This property will be removed in the next major version. Use `isPending` instead.
694+
*/
689695
isLoading: false
696+
isPending: false
690697
isSuccess: false
691698
status: 'idle'
692699
}
@@ -701,7 +708,11 @@ export interface MutationObserverLoadingResult<
701708
error: null
702709
isError: false
703710
isIdle: false
711+
/**
712+
* @deprecated This property will be removed in the next major version. Use `isPending` instead.
713+
*/
704714
isLoading: true
715+
isPending: true
705716
isSuccess: false
706717
status: 'loading'
707718
}
@@ -716,7 +727,11 @@ export interface MutationObserverErrorResult<
716727
error: TError
717728
isError: true
718729
isIdle: false
730+
/**
731+
* @deprecated This property will be removed in the next major version. Use `isPending` instead.
732+
*/
719733
isLoading: false
734+
isPending: false
720735
isSuccess: false
721736
status: 'error'
722737
}
@@ -731,7 +746,11 @@ export interface MutationObserverSuccessResult<
731746
error: null
732747
isError: false
733748
isIdle: false
749+
/**
750+
* @deprecated This property will be removed in the next major version. Use `isPending` instead.
751+
*/
734752
isLoading: false
753+
isPending: false
735754
isSuccess: true
736755
status: 'success'
737756
}

packages/react-query/src/__tests__/Hydrate.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
dehydrate,
1111
useHydrate,
1212
useQuery,
13-
} from '@tanstack/react-query'
13+
} from '..'
1414
import { createQueryClient, sleep } from './utils'
1515

1616
describe('React hydration', () => {

packages/react-query/src/__tests__/queryOptions.types.test.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
import { expectTypeOf } from 'expect-type'
22
import {
3+
type DefinedUseQueryResult,
34
QueryCache,
45
type UseQueryResult,
6+
type UseSuspenseQueryResult,
7+
queryOptions,
58
useQueries,
69
useQuery,
710
useQueryClient,
8-
} from '@tanstack/react-query'
9-
import { queryOptions } from '..'
10-
import { useSuspenseQueries, useSuspenseQuery } from '..'
11-
import { type UseSuspenseQueryResult } from '../useSuspenseQuery'
11+
useSuspenseQueries,
12+
useSuspenseQuery,
13+
} from '..'
1214
import { doNotExecute } from './utils'
13-
import type { DefinedUseQueryResult } from '@tanstack/react-query'
1415

1516
const queryKey = ['key'] as const
1617
const queryFn = () => Promise.resolve({ field: 'success' })

packages/react-query/src/__tests__/useSuspenseQueries.types.test.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import { expectTypeOf } from 'expect-type'
2-
import { queryOptions } from '..'
3-
import { useSuspenseQueries } from '..'
2+
import {
3+
type UseSuspenseQueryResult,
4+
queryOptions,
5+
useSuspenseQueries,
6+
} from '..'
47
import { doNotExecute } from './utils'
5-
import type { UseSuspenseQueryResult } from '../useSuspenseQuery'
68

79
export const queryKey = ['key'] as const
810
const sleep = (ms: number) =>

packages/react-query/src/__tests__/useSuspenseQuery.types.test.tsx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
import { expectTypeOf } from 'expect-type'
2-
import {
3-
type UseSuspenseQueryResult,
4-
useSuspenseQuery,
5-
} from '../useSuspenseQuery'
6-
import { queryOptions } from '..'
2+
import { type UseSuspenseQueryResult, queryOptions, useSuspenseQuery } from '..'
73
import { doNotExecute } from './utils'
84

95
const queryKey = ['key'] as const

packages/react-query/src/index.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,15 @@ export type { QueriesResults, QueriesOptions } from './useQueries'
1313
export { useQuery } from './useQuery'
1414
export { useSuspenseQuery } from './useSuspenseQuery'
1515
export { useSuspenseQueries } from './useSuspenseQueries'
16+
export type {
17+
SuspenseQueriesResults,
18+
SuspenseQueriesOptions,
19+
} from './useSuspenseQueries'
20+
export { queryOptions } from './queryOptions'
21+
export type {
22+
DefinedInitialDataOptions,
23+
UndefinedInitialDataOptions,
24+
} from './queryOptions'
1625
export {
1726
defaultContext,
1827
QueryClientProvider,
@@ -31,4 +40,3 @@ export { useIsMutating } from './useIsMutating'
3140
export { useMutation } from './useMutation'
3241
export { useInfiniteQuery } from './useInfiniteQuery'
3342
export { useIsRestoring, IsRestoringProvider } from './isRestoring'
34-
export { queryOptions } from './queryOptions'

packages/react-query/src/queryOptions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ type ProhibitedQueryOptionsKeyInV5 = keyof Pick<
2222
'useErrorBoundary' | 'suspense' | 'getNextPageParam' | 'getPreviousPageParam'
2323
>
2424

25-
type UndefinedInitialDataOptions<
25+
export type UndefinedInitialDataOptions<
2626
TQueryFnData = unknown,
2727
TError = unknown,
2828
TData = TQueryFnData,
@@ -34,7 +34,7 @@ type UndefinedInitialDataOptions<
3434
| NonUndefinedGuard<TQueryFnData>
3535
}
3636

37-
type DefinedInitialDataOptions<
37+
export type DefinedInitialDataOptions<
3838
TQueryFnData = unknown,
3939
TError = unknown,
4040
TData = TQueryFnData,

packages/react-query/src/types.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
import type * as React from 'react'
44
import type {
55
DefinedQueryObserverResult,
6+
DistributiveOmit,
67
InfiniteQueryObserverOptions,
78
InfiniteQueryObserverResult,
89
MutateFunction,
910
MutationObserverOptions,
1011
MutationObserverResult,
12+
OmitKeyof,
1113
QueryKey,
1214
QueryObserverOptions,
1315
QueryObserverResult,
@@ -43,6 +45,25 @@ export interface UseQueryOptions<
4345
TQueryKey
4446
> {}
4547

48+
export type UseSuspenseQueryOptions<
49+
TQueryFnData = unknown,
50+
TError = unknown,
51+
TData = TQueryFnData,
52+
TQueryKey extends QueryKey = QueryKey,
53+
> = OmitKeyof<
54+
UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
55+
| 'enabled'
56+
| 'useErrorBoundary'
57+
| 'suspense'
58+
| 'placeholderData'
59+
| 'networkMode'
60+
| 'onSuccess'
61+
| 'onError'
62+
| 'onSettled'
63+
| 'getPreviousPageParam'
64+
| 'getNextPageParam'
65+
>
66+
4667
export interface UseInfiniteQueryOptions<
4768
TQueryFnData = unknown,
4869
TError = unknown,
@@ -68,6 +89,14 @@ export type UseQueryResult<
6889
TError = unknown,
6990
> = UseBaseQueryResult<TData, TError>
7091

92+
export type UseSuspenseQueryResult<
93+
TData = unknown,
94+
TError = unknown,
95+
> = DistributiveOmit<
96+
DefinedQueryObserverResult<TData, TError>,
97+
'isPlaceholderData'
98+
>
99+
71100
export type DefinedUseBaseQueryResult<
72101
TData = unknown,
73102
TError = unknown,

packages/react-query/src/useQuery.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ export function useQuery<
136136
'queryKey' | 'queryFn'
137137
>,
138138
): UseQueryResult<TData, TError>
139-
/** @deprecated */
140139
export function useQuery<
141140
TQueryFnData,
142141
TError,

packages/react-query/src/useSuspenseQueries.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { useQueries } from './useQueries'
2-
import type { UseQueryOptions } from './types'
3-
import type { NetworkMode, QueryFunction } from '@tanstack/query-core'
42
import type {
3+
UseQueryOptions,
54
UseSuspenseQueryOptions,
65
UseSuspenseQueryResult,
7-
} from './useSuspenseQuery'
6+
} from './types'
7+
import type { NetworkMode, QueryFunction } from '@tanstack/query-core'
88

99
// Avoid TS depth-limit error in case of large array literal
1010
type MAXIMUM_DEPTH = 20

0 commit comments

Comments
 (0)