@tanstack/react-query 4.39.1 → 4.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/index.d.ts +3 -1
- package/build/lib/index.esm.js +1 -1
- package/build/lib/index.js +2 -2
- package/build/lib/index.mjs +1 -1
- package/build/lib/types.d.ts +3 -1
- package/build/lib/useQuery.d.ts +0 -3
- package/build/lib/useQuery.esm.js +0 -1
- package/build/lib/useQuery.esm.js.map +1 -1
- package/build/lib/useQuery.js +0 -1
- package/build/lib/useQuery.js.map +1 -1
- package/build/lib/useQuery.mjs +0 -1
- package/build/lib/useQuery.mjs.map +1 -1
- package/build/lib/useSuspenseQueries.d.ts +1 -2
- package/build/lib/useSuspenseQueries.esm.js.map +1 -1
- package/build/lib/useSuspenseQueries.js.map +1 -1
- package/build/lib/useSuspenseQueries.mjs.map +1 -1
- package/build/lib/useSuspenseQuery.d.ts +2 -6
- package/build/lib/useSuspenseQuery.esm.js +4 -1
- package/build/lib/useSuspenseQuery.esm.js.map +1 -1
- package/build/lib/useSuspenseQuery.js +4 -1
- package/build/lib/useSuspenseQuery.js.map +1 -1
- package/build/lib/useSuspenseQuery.mjs +4 -1
- package/build/lib/useSuspenseQuery.mjs.map +1 -1
- package/build/umd/index.development.js +8 -6
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/Hydrate.test.tsx +1 -1
- package/src/__tests__/queryOptions.types.test.tsx +6 -5
- package/src/__tests__/useQuery.types.test.tsx +35 -0
- package/src/__tests__/useSuspenseQueries.types.test.tsx +5 -3
- package/src/__tests__/useSuspenseQuery.types.test.tsx +1 -5
- package/src/index.ts +9 -1
- package/src/types.ts +29 -0
- package/src/useQuery.ts +0 -21
- package/src/useSuspenseQueries.ts +3 -3
- package/src/useSuspenseQuery.ts +5 -37
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/react-query",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.40.0",
|
|
4
4
|
"description": "Hooks for managing, caching and syncing asynchronous and remote data in React",
|
|
5
5
|
"author": "tannerlinsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"use-sync-external-store": "^1.2.0",
|
|
54
|
-
"@tanstack/query-core": "4.
|
|
54
|
+
"@tanstack/query-core": "4.40.0"
|
|
55
55
|
},
|
|
56
56
|
"peerDependencies": {
|
|
57
57
|
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { expectTypeOf } from 'expect-type'
|
|
2
2
|
import {
|
|
3
|
+
type DefinedUseQueryResult,
|
|
3
4
|
QueryCache,
|
|
4
5
|
type UseQueryResult,
|
|
6
|
+
type UseSuspenseQueryResult,
|
|
7
|
+
queryOptions,
|
|
5
8
|
useQueries,
|
|
6
9
|
useQuery,
|
|
7
10
|
useQueryClient,
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
import { type UseSuspenseQueryResult } from '../useSuspenseQuery'
|
|
11
|
+
useSuspenseQueries,
|
|
12
|
+
useSuspenseQuery,
|
|
13
|
+
} from '..'
|
|
12
14
|
import { doNotExecute } from './utils'
|
|
13
|
-
import type { DefinedUseQueryResult } from '@tanstack/react-query'
|
|
14
15
|
|
|
15
16
|
const queryKey = ['key'] as const
|
|
16
17
|
const queryFn = () => Promise.resolve({ field: 'success' })
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { expectTypeOf } from 'expect-type'
|
|
1
2
|
import { useQuery } from '../useQuery'
|
|
2
3
|
import { doNotExecute } from './utils'
|
|
4
|
+
import type { DefinedUseQueryResult, UseQueryResult } from '../types'
|
|
3
5
|
|
|
4
6
|
export type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends <
|
|
5
7
|
T,
|
|
@@ -9,6 +11,39 @@ export type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends <
|
|
|
9
11
|
|
|
10
12
|
export type Expect<T extends true> = T
|
|
11
13
|
|
|
14
|
+
describe('onSuccess', () => {
|
|
15
|
+
it('should be typed correctly', () => {
|
|
16
|
+
doNotExecute(() => {
|
|
17
|
+
expectTypeOf(
|
|
18
|
+
useQuery({
|
|
19
|
+
queryKey: ['posts'],
|
|
20
|
+
queryFn: async () => ({ id: 1 }),
|
|
21
|
+
onSuccess: (data) =>
|
|
22
|
+
expectTypeOf(data).toEqualTypeOf<{ id: number }>(),
|
|
23
|
+
}),
|
|
24
|
+
).toEqualTypeOf<UseQueryResult<{ id: number }, unknown>>()
|
|
25
|
+
expectTypeOf(
|
|
26
|
+
useQuery({
|
|
27
|
+
queryKey: ['posts'],
|
|
28
|
+
queryFn: async () => ({ id: 1 }),
|
|
29
|
+
initialData: { id: 1 },
|
|
30
|
+
onSuccess: (data) =>
|
|
31
|
+
expectTypeOf(data).toEqualTypeOf<{ id: number }>(),
|
|
32
|
+
}),
|
|
33
|
+
).toEqualTypeOf<DefinedUseQueryResult<{ id: number }, unknown>>()
|
|
34
|
+
expectTypeOf(
|
|
35
|
+
useQuery({
|
|
36
|
+
queryKey: ['posts'],
|
|
37
|
+
queryFn: async () => ({ id: 1 }),
|
|
38
|
+
initialData: { id: 1 },
|
|
39
|
+
select: (data) => data.id,
|
|
40
|
+
onSuccess: (data) => expectTypeOf(data).toEqualTypeOf<number>(),
|
|
41
|
+
}),
|
|
42
|
+
).toEqualTypeOf<DefinedUseQueryResult<number, unknown>>()
|
|
43
|
+
})
|
|
44
|
+
})
|
|
45
|
+
})
|
|
46
|
+
|
|
12
47
|
describe('initialData', () => {
|
|
13
48
|
describe('Config object overload', () => {
|
|
14
49
|
it('TData should always be defined when initialData is provided as an object', () => {
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { expectTypeOf } from 'expect-type'
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
type UseSuspenseQueryResult,
|
|
4
|
+
queryOptions,
|
|
5
|
+
useSuspenseQueries,
|
|
6
|
+
} from '..'
|
|
4
7
|
import { doNotExecute } from './utils'
|
|
5
|
-
import type { UseSuspenseQueryResult } from '../useSuspenseQuery'
|
|
6
8
|
|
|
7
9
|
export const queryKey = ['key'] as const
|
|
8
10
|
const sleep = (ms: number) =>
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
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 '..'
|
|
7
3
|
import { doNotExecute } from './utils'
|
|
8
4
|
|
|
9
5
|
const queryKey = ['key'] as const
|
package/src/index.ts
CHANGED
|
@@ -13,6 +13,15 @@ export type { QueriesResults, QueriesOptions } from './useQueries'
|
|
|
13
13
|
export { useQuery } from './useQuery'
|
|
14
14
|
export { useSuspenseQuery } from './useSuspenseQuery'
|
|
15
15
|
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'
|
|
16
25
|
export {
|
|
17
26
|
defaultContext,
|
|
18
27
|
QueryClientProvider,
|
|
@@ -31,4 +40,3 @@ export { useIsMutating } from './useIsMutating'
|
|
|
31
40
|
export { useMutation } from './useMutation'
|
|
32
41
|
export { useInfiniteQuery } from './useInfiniteQuery'
|
|
33
42
|
export { useIsRestoring, IsRestoringProvider } from './isRestoring'
|
|
34
|
-
export { queryOptions } from './queryOptions'
|
package/src/types.ts
CHANGED
|
@@ -3,11 +3,13 @@
|
|
|
3
3
|
import type * as React from 'react'
|
|
4
4
|
import type {
|
|
5
5
|
DefinedQueryObserverResult,
|
|
6
|
+
DistributiveOmit,
|
|
6
7
|
InfiniteQueryObserverOptions,
|
|
7
8
|
InfiniteQueryObserverResult,
|
|
8
9
|
MutateFunction,
|
|
9
10
|
MutationObserverOptions,
|
|
10
11
|
MutationObserverResult,
|
|
12
|
+
OmitKeyof,
|
|
11
13
|
QueryKey,
|
|
12
14
|
QueryObserverOptions,
|
|
13
15
|
QueryObserverResult,
|
|
@@ -43,6 +45,25 @@ export interface UseQueryOptions<
|
|
|
43
45
|
TQueryKey
|
|
44
46
|
> {}
|
|
45
47
|
|
|
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
|
+
|
|
46
67
|
export interface UseInfiniteQueryOptions<
|
|
47
68
|
TQueryFnData = unknown,
|
|
48
69
|
TError = unknown,
|
|
@@ -68,6 +89,14 @@ export type UseQueryResult<
|
|
|
68
89
|
TError = unknown,
|
|
69
90
|
> = UseBaseQueryResult<TData, TError>
|
|
70
91
|
|
|
92
|
+
export type UseSuspenseQueryResult<
|
|
93
|
+
TData = unknown,
|
|
94
|
+
TError = unknown,
|
|
95
|
+
> = DistributiveOmit<
|
|
96
|
+
DefinedQueryObserverResult<TData, TError>,
|
|
97
|
+
'isPlaceholderData'
|
|
98
|
+
>
|
|
99
|
+
|
|
71
100
|
export type DefinedUseBaseQueryResult<
|
|
72
101
|
TData = unknown,
|
|
73
102
|
TError = unknown,
|
package/src/useQuery.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import { QueryObserver, parseQueryArgs } from '@tanstack/query-core'
|
|
3
3
|
import { useBaseQuery } from './useBaseQuery'
|
|
4
|
-
import type {
|
|
5
|
-
DefinedInitialDataOptions,
|
|
6
|
-
UndefinedInitialDataOptions,
|
|
7
|
-
} from './queryOptions'
|
|
8
4
|
import type {
|
|
9
5
|
InitialDataFunction,
|
|
10
6
|
NonUndefinedGuard,
|
|
@@ -19,14 +15,6 @@ import type {
|
|
|
19
15
|
} from './types'
|
|
20
16
|
|
|
21
17
|
// HOOK
|
|
22
|
-
export function useQuery<
|
|
23
|
-
TQueryFnData = unknown,
|
|
24
|
-
TError = unknown,
|
|
25
|
-
TData = TQueryFnData,
|
|
26
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
27
|
-
>(
|
|
28
|
-
options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
29
|
-
): DefinedUseQueryResult<TData, TError>
|
|
30
18
|
export function useQuery<
|
|
31
19
|
TQueryFnData = unknown,
|
|
32
20
|
TError = unknown,
|
|
@@ -42,14 +30,6 @@ export function useQuery<
|
|
|
42
30
|
| (() => NonUndefinedGuard<TQueryFnData>)
|
|
43
31
|
},
|
|
44
32
|
): DefinedUseQueryResult<TData, TError>
|
|
45
|
-
export function useQuery<
|
|
46
|
-
TQueryFnData = unknown,
|
|
47
|
-
TError = unknown,
|
|
48
|
-
TData = TQueryFnData,
|
|
49
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
50
|
-
>(
|
|
51
|
-
options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
52
|
-
): UseQueryResult<TData, TError>
|
|
53
33
|
export function useQuery<
|
|
54
34
|
TQueryFnData = unknown,
|
|
55
35
|
TError = unknown,
|
|
@@ -156,7 +136,6 @@ export function useQuery<
|
|
|
156
136
|
'queryKey' | 'queryFn'
|
|
157
137
|
>,
|
|
158
138
|
): UseQueryResult<TData, TError>
|
|
159
|
-
/** @deprecated */
|
|
160
139
|
export function useQuery<
|
|
161
140
|
TQueryFnData,
|
|
162
141
|
TError,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { useQueries } from './useQueries'
|
|
2
|
-
import type { UseQueryOptions } from './types'
|
|
3
|
-
import type { NetworkMode, QueryFunction } from '@tanstack/query-core'
|
|
4
2
|
import type {
|
|
3
|
+
UseQueryOptions,
|
|
5
4
|
UseSuspenseQueryOptions,
|
|
6
5
|
UseSuspenseQueryResult,
|
|
7
|
-
} from './
|
|
6
|
+
} from './types'
|
|
7
|
+
import type { NetworkMode, QueryFunction } from '@tanstack/query-core'
|
|
8
8
|
|
|
9
9
|
// Avoid TS depth-limit error in case of large array literal
|
|
10
10
|
type MAXIMUM_DEPTH = 20
|
package/src/useSuspenseQuery.ts
CHANGED
|
@@ -1,42 +1,7 @@
|
|
|
1
1
|
import { QueryObserver } from '@tanstack/query-core'
|
|
2
2
|
import { useBaseQuery } from './useBaseQuery'
|
|
3
|
-
import type {
|
|
4
|
-
|
|
5
|
-
OmitKeyof,
|
|
6
|
-
QueryKey,
|
|
7
|
-
} from '@tanstack/query-core'
|
|
8
|
-
import type { UseQueryOptions } from './types'
|
|
9
|
-
|
|
10
|
-
type DistributiveOmit<TObject, TKey extends keyof TObject> = TObject extends any
|
|
11
|
-
? Omit<TObject, TKey>
|
|
12
|
-
: never
|
|
13
|
-
|
|
14
|
-
export type UseSuspenseQueryResult<
|
|
15
|
-
TData = unknown,
|
|
16
|
-
TError = unknown,
|
|
17
|
-
> = DistributiveOmit<
|
|
18
|
-
DefinedQueryObserverResult<TData, TError>,
|
|
19
|
-
'isPlaceholderData'
|
|
20
|
-
>
|
|
21
|
-
|
|
22
|
-
export type UseSuspenseQueryOptions<
|
|
23
|
-
TQueryFnData = unknown,
|
|
24
|
-
TError = unknown,
|
|
25
|
-
TData = TQueryFnData,
|
|
26
|
-
TQueryKey extends QueryKey = QueryKey,
|
|
27
|
-
> = OmitKeyof<
|
|
28
|
-
UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
29
|
-
| 'enabled'
|
|
30
|
-
| 'useErrorBoundary'
|
|
31
|
-
| 'suspense'
|
|
32
|
-
| 'placeholderData'
|
|
33
|
-
| 'networkMode'
|
|
34
|
-
| 'onSuccess'
|
|
35
|
-
| 'onError'
|
|
36
|
-
| 'onSettled'
|
|
37
|
-
| 'getPreviousPageParam'
|
|
38
|
-
| 'getNextPageParam'
|
|
39
|
-
>
|
|
3
|
+
import type { QueryKey } from '@tanstack/query-core'
|
|
4
|
+
import type { UseSuspenseQueryOptions, UseSuspenseQueryResult } from './types'
|
|
40
5
|
|
|
41
6
|
export function useSuspenseQuery<
|
|
42
7
|
TQueryFnData = unknown,
|
|
@@ -52,6 +17,9 @@ export function useSuspenseQuery<
|
|
|
52
17
|
suspense: true,
|
|
53
18
|
placeholderData: undefined,
|
|
54
19
|
networkMode: 'always',
|
|
20
|
+
onSuccess: undefined,
|
|
21
|
+
onError: undefined,
|
|
22
|
+
onSettled: undefined,
|
|
55
23
|
},
|
|
56
24
|
QueryObserver,
|
|
57
25
|
) as UseSuspenseQueryResult<TData, TError>
|