@tanstack/react-query 4.40.2 → 4.41.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.
Files changed (100) hide show
  1. package/build/lib/__tests__/infiniteQueryOptions.test.d.ts +2 -0
  2. package/build/lib/__tests__/infiniteQueryOptions.types.test.d.ts +2 -0
  3. package/build/lib/__tests__/useSuspenseInfiniteQuery.types.test.d.ts +2 -0
  4. package/build/lib/index.d.ts +3 -0
  5. package/build/lib/index.esm.js +2 -0
  6. package/build/lib/index.esm.js.map +1 -1
  7. package/build/lib/index.js +4 -0
  8. package/build/lib/index.js.map +1 -1
  9. package/build/lib/index.mjs +2 -0
  10. package/build/lib/index.mjs.map +1 -1
  11. package/build/lib/infiniteQueryOptions.d.ts +14 -0
  12. package/build/lib/infiniteQueryOptions.esm.js +6 -0
  13. package/build/lib/infiniteQueryOptions.esm.js.map +1 -0
  14. package/build/lib/infiniteQueryOptions.js +10 -0
  15. package/build/lib/infiniteQueryOptions.js.map +1 -0
  16. package/build/lib/infiniteQueryOptions.mjs +6 -0
  17. package/build/lib/infiniteQueryOptions.mjs.map +1 -0
  18. package/build/lib/queryOptions.d.ts +2 -2
  19. package/build/lib/queryOptions.esm.js.map +1 -1
  20. package/build/lib/queryOptions.js.map +1 -1
  21. package/build/lib/queryOptions.mjs.map +1 -1
  22. package/build/lib/suspense.esm.js +11 -0
  23. package/build/lib/suspense.esm.js.map +1 -1
  24. package/build/lib/suspense.js +11 -0
  25. package/build/lib/suspense.js.map +1 -1
  26. package/build/lib/suspense.mjs +11 -0
  27. package/build/lib/suspense.mjs.map +1 -1
  28. package/build/lib/types.d.ts +3 -1
  29. package/build/lib/useInfiniteQuery.d.ts +7 -2
  30. package/build/lib/useInfiniteQuery.esm.js.map +1 -1
  31. package/build/lib/useInfiniteQuery.js.map +1 -1
  32. package/build/lib/useInfiniteQuery.mjs.map +1 -1
  33. package/build/lib/useQuery.d.ts +6 -6
  34. package/build/lib/useQuery.esm.js.map +1 -1
  35. package/build/lib/useQuery.js.map +1 -1
  36. package/build/lib/useQuery.mjs.map +1 -1
  37. package/build/lib/useSuspenseInfiniteQuery.d.ts +5 -0
  38. package/build/lib/useSuspenseInfiniteQuery.esm.js +14 -0
  39. package/build/lib/useSuspenseInfiniteQuery.esm.js.map +1 -0
  40. package/build/lib/useSuspenseInfiniteQuery.js +18 -0
  41. package/build/lib/useSuspenseInfiniteQuery.js.map +1 -0
  42. package/build/lib/useSuspenseInfiniteQuery.mjs +14 -0
  43. package/build/lib/useSuspenseInfiniteQuery.mjs.map +1 -0
  44. package/build/umd/index.development.js +26 -0
  45. package/build/umd/index.development.js.map +1 -1
  46. package/build/umd/index.production.js +1 -1
  47. package/build/umd/index.production.js.map +1 -1
  48. package/package.json +2 -2
  49. package/src/__tests__/infiniteQueryOptions.test.tsx +13 -0
  50. package/src/__tests__/infiniteQueryOptions.types.test.tsx +111 -0
  51. package/src/__tests__/queryOptions.types.test.tsx +8 -7
  52. package/src/__tests__/useSuspenseInfiniteQuery.types.test.tsx +115 -0
  53. package/src/index.ts +6 -0
  54. package/src/infiniteQueryOptions.ts +95 -0
  55. package/src/queryOptions.ts +8 -2
  56. package/src/types.ts +14 -0
  57. package/src/useInfiniteQuery.ts +28 -1
  58. package/src/useQuery.ts +6 -6
  59. package/src/useSuspenseInfiniteQuery.ts +62 -0
  60. package/build/lib/Hydrate.d.ts.map +0 -1
  61. package/build/lib/QueryClientProvider.d.ts.map +0 -1
  62. package/build/lib/QueryErrorResetBoundary.d.ts.map +0 -1
  63. package/build/lib/__tests__/Hydrate.test.d.ts.map +0 -1
  64. package/build/lib/__tests__/QueryClientProvider.test.d.ts.map +0 -1
  65. package/build/lib/__tests__/QueryResetErrorBoundary.test.d.ts.map +0 -1
  66. package/build/lib/__tests__/queryOptions.types.test.d.ts.map +0 -1
  67. package/build/lib/__tests__/ssr-hydration.test.d.ts.map +0 -1
  68. package/build/lib/__tests__/ssr.test.d.ts.map +0 -1
  69. package/build/lib/__tests__/suspense.test.d.ts.map +0 -1
  70. package/build/lib/__tests__/useInfiniteQuery.test.d.ts.map +0 -1
  71. package/build/lib/__tests__/useIsFetching.test.d.ts.map +0 -1
  72. package/build/lib/__tests__/useIsMutating.test.d.ts.map +0 -1
  73. package/build/lib/__tests__/useMutation.test.d.ts.map +0 -1
  74. package/build/lib/__tests__/useQueries.test.d.ts.map +0 -1
  75. package/build/lib/__tests__/useQuery.test.d.ts.map +0 -1
  76. package/build/lib/__tests__/useQuery.types.test.d.ts.map +0 -1
  77. package/build/lib/__tests__/useSuspenseQueries.types.test.d.ts.map +0 -1
  78. package/build/lib/__tests__/useSuspenseQuery.types.test.d.ts.map +0 -1
  79. package/build/lib/__tests__/utils.d.ts.map +0 -1
  80. package/build/lib/errorBoundaryUtils.d.ts.map +0 -1
  81. package/build/lib/index.d.ts.map +0 -1
  82. package/build/lib/isRestoring.d.ts.map +0 -1
  83. package/build/lib/queryOptions.d.ts.map +0 -1
  84. package/build/lib/reactBatchedUpdates.d.ts.map +0 -1
  85. package/build/lib/reactBatchedUpdates.native.d.ts.map +0 -1
  86. package/build/lib/setBatchUpdatesFn.d.ts.map +0 -1
  87. package/build/lib/suspense.d.ts.map +0 -1
  88. package/build/lib/types.d.ts.map +0 -1
  89. package/build/lib/useBaseQuery.d.ts.map +0 -1
  90. package/build/lib/useInfiniteQuery.d.ts.map +0 -1
  91. package/build/lib/useIsFetching.d.ts.map +0 -1
  92. package/build/lib/useIsMutating.d.ts.map +0 -1
  93. package/build/lib/useMutation.d.ts.map +0 -1
  94. package/build/lib/useQueries.d.ts.map +0 -1
  95. package/build/lib/useQuery.d.ts.map +0 -1
  96. package/build/lib/useSuspenseQueries.d.ts.map +0 -1
  97. package/build/lib/useSuspenseQuery.d.ts.map +0 -1
  98. package/build/lib/useSyncExternalStore.d.ts.map +0 -1
  99. package/build/lib/useSyncExternalStore.native.d.ts.map +0 -1
  100. package/build/lib/utils.d.ts.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/react-query",
3
- "version": "4.40.2",
3
+ "version": "4.41.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.40.0"
54
+ "@tanstack/query-core": "4.41.0"
55
55
  },
56
56
  "peerDependencies": {
57
57
  "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
@@ -0,0 +1,13 @@
1
+ import { infiniteQueryOptions } from '../infiniteQueryOptions'
2
+
3
+ describe('infiniteQueryOptions', () => {
4
+ it('should return the object received as a parameter without any modification.', () => {
5
+ const object = {
6
+ queryKey: ['key'],
7
+ queryFn: () => Promise.resolve(5),
8
+ getNextPageParam: () => null,
9
+ } as const
10
+
11
+ expect(infiniteQueryOptions(object)).toStrictEqual(object)
12
+ })
13
+ })
@@ -0,0 +1,111 @@
1
+ import { expectTypeOf } from 'expect-type'
2
+ import {
3
+ type InfiniteData,
4
+ type UseInfiniteQueryResult,
5
+ useInfiniteQuery,
6
+ useQueryClient,
7
+ } from '@tanstack/react-query'
8
+
9
+ import { useSuspenseInfiniteQuery } from '../useSuspenseInfiniteQuery'
10
+ import { infiniteQueryOptions } from '../infiniteQueryOptions'
11
+ import { doNotExecute } from './utils'
12
+ import type {
13
+ DefinedUseInfiniteQueryResult,
14
+ UseSuspenseInfiniteQueryResult,
15
+ } from '../types'
16
+
17
+ const infiniteQuery = {
18
+ options: () =>
19
+ infiniteQueryOptions({
20
+ queryKey: ['key', 1] as const,
21
+ queryFn: () => Promise.resolve({ field: 'success' }),
22
+ }),
23
+ optionsWithInitialData: () =>
24
+ infiniteQueryOptions({
25
+ queryKey: ['key', 2] as const,
26
+ queryFn: () => Promise.resolve({ field: 'success' }),
27
+ initialData: () => ({ pageParams: [], pages: [{ field: 'success' }] }),
28
+ }),
29
+ }
30
+
31
+ describe('infiniteQueryOptions', () => {
32
+ it('should be used with useInfiniteQuery', () => {
33
+ doNotExecute(() => {
34
+ expectTypeOf(useInfiniteQuery(infiniteQuery.options())).toEqualTypeOf<
35
+ UseInfiniteQueryResult<{ field: string }>
36
+ >()
37
+
38
+ expectTypeOf(
39
+ useInfiniteQuery({
40
+ ...infiniteQuery.options(),
41
+ select: (data) => ({
42
+ pages: data.pages.map(({ field }) => field),
43
+ pageParams: data.pageParams,
44
+ }),
45
+ }),
46
+ ).toEqualTypeOf<UseInfiniteQueryResult<string>>()
47
+
48
+ expectTypeOf(
49
+ useInfiniteQuery(infiniteQuery.optionsWithInitialData()),
50
+ ).toEqualTypeOf<DefinedUseInfiniteQueryResult<{ field: string }>>()
51
+
52
+ expectTypeOf(
53
+ useInfiniteQuery({
54
+ ...infiniteQuery.optionsWithInitialData(),
55
+ select: (data) => ({
56
+ pages: data.pages.map(({ field }) => field),
57
+ pageParams: data.pageParams,
58
+ }),
59
+ }),
60
+ ).toEqualTypeOf<DefinedUseInfiniteQueryResult<string>>()
61
+
62
+ expectTypeOf(
63
+ useInfiniteQuery({
64
+ queryKey: ['key', 2] as const,
65
+ queryFn: () => Promise.resolve({ field: 'success' }),
66
+ initialData: () => ({
67
+ pages: [{ field: 'success' }],
68
+ pageParams: [],
69
+ }),
70
+ select: (data) => ({
71
+ pages: data.pages.map(({ field }) => field),
72
+ pageParams: data.pageParams,
73
+ }),
74
+ }),
75
+ ).toEqualTypeOf<DefinedUseInfiniteQueryResult<string>>()
76
+ })
77
+ })
78
+ it('should be used with useSuspenseInfiniteQuery', () => {
79
+ doNotExecute(() => {
80
+ expectTypeOf(
81
+ useSuspenseInfiniteQuery(infiniteQuery.options()),
82
+ ).toEqualTypeOf<UseSuspenseInfiniteQueryResult<{ field: string }>>()
83
+
84
+ expectTypeOf(
85
+ useSuspenseInfiniteQuery({
86
+ ...infiniteQuery.options(),
87
+ select: (data) => ({
88
+ pages: data.pages.map(({ field }) => field),
89
+ pageParams: data.pageParams,
90
+ }),
91
+ }),
92
+ ).toEqualTypeOf<UseSuspenseInfiniteQueryResult<string>>()
93
+ })
94
+ })
95
+ it('should be used with useQueryClient', () => {
96
+ doNotExecute(async () => {
97
+ const queryClient = useQueryClient()
98
+
99
+ queryClient.invalidateQueries(infiniteQuery.options())
100
+ queryClient.resetQueries(infiniteQuery.options())
101
+ queryClient.removeQueries(infiniteQuery.options())
102
+ queryClient.cancelQueries(infiniteQuery.options())
103
+ queryClient.prefetchQuery(infiniteQuery.options())
104
+ queryClient.refetchQueries(infiniteQuery.options())
105
+
106
+ expectTypeOf(
107
+ await queryClient.fetchQuery(infiniteQuery.options()),
108
+ ).toEqualTypeOf<InfiniteData<{ field: string }>>()
109
+ })
110
+ })
111
+ })
@@ -19,13 +19,14 @@ const queryFn = () => Promise.resolve({ field: 'success' })
19
19
  describe('queryOptions', () => {
20
20
  it('should be used with useQuery', () => {
21
21
  doNotExecute(() => {
22
- const dd = useQuery(
23
- queryOptions({
24
- queryKey,
25
- queryFn,
26
- }),
27
- )
28
- expectTypeOf(dd).toEqualTypeOf<UseQueryResult<{ field: string }>>()
22
+ expectTypeOf(
23
+ useQuery(
24
+ queryOptions({
25
+ queryKey,
26
+ queryFn,
27
+ }),
28
+ ),
29
+ ).toEqualTypeOf<UseQueryResult<{ field: string }>>()
29
30
  expectTypeOf(
30
31
  useQuery({
31
32
  ...queryOptions({
@@ -0,0 +1,115 @@
1
+ import { expectTypeOf } from 'expect-type'
2
+ import { infiniteQueryOptions, useSuspenseInfiniteQuery } from '..'
3
+ import { doNotExecute, sleep } from './utils'
4
+ import type { UseSuspenseInfiniteQueryResult } from '..'
5
+
6
+ import type { InfiniteData } from '@tanstack/react-query'
7
+
8
+ const queryKey = ['key'] as const
9
+ const queryFn = () => sleep(10).then(() => ({ text: 'response' }))
10
+
11
+ describe('useSuspenseInfiniteQuery', () => {
12
+ it('type check', () => {
13
+ doNotExecute(() => {
14
+ // @ts-expect-error no arg
15
+ useSuspenseInfiniteQuery()
16
+
17
+ useSuspenseInfiniteQuery({
18
+ queryKey,
19
+ queryFn,
20
+ // @ts-expect-error no suspense
21
+ suspense: boolean,
22
+ })
23
+ useSuspenseInfiniteQuery({
24
+ queryKey,
25
+ queryFn,
26
+ // @ts-expect-error no useErrorBoundary
27
+ useErrorBoundary: boolean,
28
+ })
29
+ useSuspenseInfiniteQuery({
30
+ queryKey,
31
+ queryFn,
32
+ // @ts-expect-error no enabled
33
+ enabled: boolean,
34
+ })
35
+ useSuspenseInfiniteQuery({
36
+ queryKey,
37
+ queryFn,
38
+ // @ts-expect-error no placeholderData
39
+ placeholderData: 'placeholder',
40
+ })
41
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
42
+ useSuspenseInfiniteQuery({
43
+ queryKey,
44
+ queryFn,
45
+ // @ts-expect-error no isPlaceholderData
46
+ }).isPlaceholderData
47
+ useSuspenseInfiniteQuery({
48
+ queryKey,
49
+ queryFn,
50
+ //@ts-expect-error no networkMode
51
+ networkMode: 'always',
52
+ })
53
+
54
+ const infiniteQuery = useSuspenseInfiniteQuery({ queryKey, queryFn })
55
+ expectTypeOf(infiniteQuery).toEqualTypeOf<
56
+ UseSuspenseInfiniteQueryResult<{ text: string }>
57
+ >()
58
+ expectTypeOf(infiniteQuery.data).toEqualTypeOf<
59
+ InfiniteData<{ text: string }>
60
+ >()
61
+ expectTypeOf(infiniteQuery.status).toEqualTypeOf<'error' | 'success'>()
62
+
63
+ const selectedInfiniteQuery = useSuspenseInfiniteQuery({
64
+ queryKey,
65
+ queryFn,
66
+ select: (data) => ({
67
+ pages: data.pages.map(({ text }) => text),
68
+ pageParams: data.pageParams,
69
+ }),
70
+ })
71
+ expectTypeOf(selectedInfiniteQuery).toEqualTypeOf<
72
+ UseSuspenseInfiniteQueryResult<string>
73
+ >()
74
+ expectTypeOf(selectedInfiniteQuery.data).toEqualTypeOf<
75
+ InfiniteData<string>
76
+ >()
77
+ expectTypeOf(selectedInfiniteQuery.status).toEqualTypeOf<
78
+ 'error' | 'success'
79
+ >()
80
+
81
+ const options = infiniteQueryOptions({
82
+ queryKey,
83
+ queryFn,
84
+ })
85
+
86
+ const infiniteQueryWithOptions = useSuspenseInfiniteQuery(options)
87
+ expectTypeOf(infiniteQueryWithOptions).toEqualTypeOf<
88
+ UseSuspenseInfiniteQueryResult<{ text: string }>
89
+ >()
90
+ expectTypeOf(infiniteQueryWithOptions.data).toEqualTypeOf<
91
+ InfiniteData<{ text: string }>
92
+ >()
93
+ expectTypeOf(infiniteQueryWithOptions.status).toEqualTypeOf<
94
+ 'error' | 'success'
95
+ >()
96
+
97
+ const selectedInfiniteQueryWithOptions = useSuspenseInfiniteQuery({
98
+ ...options,
99
+ select: (data) => ({
100
+ pages: data.pages.map(({ text }) => text),
101
+ pageParams: data.pageParams,
102
+ }),
103
+ })
104
+ expectTypeOf(selectedInfiniteQueryWithOptions).toEqualTypeOf<
105
+ UseSuspenseInfiniteQueryResult<string>
106
+ >()
107
+ expectTypeOf(selectedInfiniteQueryWithOptions.data).toEqualTypeOf<
108
+ InfiniteData<string>
109
+ >()
110
+ expectTypeOf(selectedInfiniteQueryWithOptions.status).toEqualTypeOf<
111
+ 'error' | 'success'
112
+ >()
113
+ })
114
+ })
115
+ })
package/src/index.ts CHANGED
@@ -12,6 +12,7 @@ export { useQueries } from './useQueries'
12
12
  export type { QueriesResults, QueriesOptions } from './useQueries'
13
13
  export { useQuery } from './useQuery'
14
14
  export { useSuspenseQuery } from './useSuspenseQuery'
15
+ export { useSuspenseInfiniteQuery } from './useSuspenseInfiniteQuery'
15
16
  export { useSuspenseQueries } from './useSuspenseQueries'
16
17
  export type {
17
18
  SuspenseQueriesResults,
@@ -22,6 +23,11 @@ export type {
22
23
  DefinedInitialDataOptions,
23
24
  UndefinedInitialDataOptions,
24
25
  } from './queryOptions'
26
+ export { infiniteQueryOptions } from './infiniteQueryOptions'
27
+ export type {
28
+ DefinedInitialDataInfiniteOptions,
29
+ UndefinedInitialDataInfiniteOptions,
30
+ } from './infiniteQueryOptions'
25
31
  export {
26
32
  defaultContext,
27
33
  QueryClientProvider,
@@ -0,0 +1,95 @@
1
+ import type { UseInfiniteQueryOptions } from './types'
2
+ import type {
3
+ InfiniteData,
4
+ NonUndefinedGuard,
5
+ OmitKeyof,
6
+ QueryKey,
7
+ WithRequired,
8
+ } from '@tanstack/query-core'
9
+
10
+ type UseInfiniteQueryOptionsOmitted<
11
+ TQueryFnData = unknown,
12
+ TError = unknown,
13
+ TData = TQueryFnData,
14
+ TQueryKey extends QueryKey = QueryKey,
15
+ > = OmitKeyof<
16
+ UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,
17
+ 'onSuccess' | 'onError' | 'onSettled' | 'refetchInterval'
18
+ >
19
+
20
+ type ProhibitedInfiniteQueryOptionsKeyInV5 = keyof Pick<
21
+ UseInfiniteQueryOptionsOmitted,
22
+ 'useErrorBoundary' | 'suspense'
23
+ >
24
+
25
+ export type UndefinedInitialDataInfiniteOptions<
26
+ TQueryFnData,
27
+ TError = unknown,
28
+ TData = TQueryFnData,
29
+ TQueryKey extends QueryKey = QueryKey,
30
+ > = UseInfiniteQueryOptionsOmitted<TQueryFnData, TError, TData, TQueryKey> & {
31
+ initialData?: undefined
32
+ }
33
+
34
+ export type DefinedInitialDataInfiniteOptions<
35
+ TQueryFnData,
36
+ TError = unknown,
37
+ TData = TQueryFnData,
38
+ TQueryKey extends QueryKey = QueryKey,
39
+ > = UseInfiniteQueryOptionsOmitted<TQueryFnData, TError, TData, TQueryKey> & {
40
+ initialData:
41
+ | NonUndefinedGuard<InfiniteData<TQueryFnData>>
42
+ | (() => NonUndefinedGuard<InfiniteData<TQueryFnData>>)
43
+ | undefined
44
+ }
45
+
46
+ export function infiniteQueryOptions<
47
+ TQueryFnData,
48
+ TError = unknown,
49
+ TData = TQueryFnData,
50
+ TQueryKey extends QueryKey = QueryKey,
51
+ >(
52
+ options: WithRequired<
53
+ OmitKeyof<
54
+ DefinedInitialDataInfiniteOptions<TQueryFnData, TError, TData, TQueryKey>,
55
+ ProhibitedInfiniteQueryOptionsKeyInV5
56
+ >,
57
+ 'queryKey'
58
+ >,
59
+ ): WithRequired<
60
+ OmitKeyof<
61
+ DefinedInitialDataInfiniteOptions<TQueryFnData, TError, TData, TQueryKey>,
62
+ ProhibitedInfiniteQueryOptionsKeyInV5
63
+ >,
64
+ 'queryKey'
65
+ >
66
+
67
+ export function infiniteQueryOptions<
68
+ TQueryFnData,
69
+ TError = unknown,
70
+ TData = TQueryFnData,
71
+ TQueryKey extends QueryKey = QueryKey,
72
+ >(
73
+ options: WithRequired<
74
+ OmitKeyof<
75
+ UndefinedInitialDataInfiniteOptions<
76
+ TQueryFnData,
77
+ TError,
78
+ TData,
79
+ TQueryKey
80
+ >,
81
+ ProhibitedInfiniteQueryOptionsKeyInV5
82
+ >,
83
+ 'queryKey'
84
+ >,
85
+ ): WithRequired<
86
+ OmitKeyof<
87
+ UndefinedInitialDataInfiniteOptions<TQueryFnData, TError, TData, TQueryKey>,
88
+ ProhibitedInfiniteQueryOptionsKeyInV5
89
+ >,
90
+ 'queryKey'
91
+ >
92
+
93
+ export function infiniteQueryOptions(options: unknown) {
94
+ return options
95
+ }
@@ -59,7 +59,10 @@ export function queryOptions<
59
59
  'queryKey'
60
60
  >,
61
61
  ): WithRequired<
62
- DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
62
+ OmitKeyof<
63
+ DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
64
+ ProhibitedQueryOptionsKeyInV5
65
+ >,
63
66
  'queryKey'
64
67
  >
65
68
 
@@ -77,7 +80,10 @@ export function queryOptions<
77
80
  'queryKey'
78
81
  >,
79
82
  ): WithRequired<
80
- UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
83
+ OmitKeyof<
84
+ UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
85
+ ProhibitedQueryOptionsKeyInV5
86
+ >,
81
87
  'queryKey'
82
88
  >
83
89
 
package/src/types.ts CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  import type * as React from 'react'
4
4
  import type {
5
+ DefinedInfiniteQueryObserverResult,
5
6
  DefinedQueryObserverResult,
6
7
  DistributiveOmit,
7
8
  InfiniteQueryObserverOptions,
@@ -120,6 +121,19 @@ export type UseInfiniteQueryResult<
120
121
  TError = unknown,
121
122
  > = InfiniteQueryObserverResult<TData, TError>
122
123
 
124
+ export type DefinedUseInfiniteQueryResult<
125
+ TData = unknown,
126
+ TError = unknown,
127
+ > = DefinedInfiniteQueryObserverResult<TData, TError>
128
+
129
+ export type UseSuspenseInfiniteQueryResult<
130
+ TData = unknown,
131
+ TError = unknown,
132
+ > = OmitKeyof<
133
+ DefinedInfiniteQueryObserverResult<TData, TError>,
134
+ 'isPlaceholderData'
135
+ >
136
+
123
137
  export interface UseMutationOptions<
124
138
  TData = unknown,
125
139
  TError = unknown,
@@ -2,14 +2,39 @@
2
2
  import { InfiniteQueryObserver, parseQueryArgs } from '@tanstack/query-core'
3
3
  import { useBaseQuery } from './useBaseQuery'
4
4
  import type {
5
+ InfiniteData,
6
+ NonUndefinedGuard,
5
7
  QueryFunction,
6
8
  QueryKey,
7
9
  QueryObserver,
8
10
  } from '@tanstack/query-core'
9
- import type { UseInfiniteQueryOptions, UseInfiniteQueryResult } from './types'
11
+ import type {
12
+ DefinedUseInfiniteQueryResult,
13
+ UseInfiniteQueryOptions,
14
+ UseInfiniteQueryResult,
15
+ } from './types'
10
16
 
11
17
  // HOOK
12
18
 
19
+ export function useInfiniteQuery<
20
+ TQueryFnData = unknown,
21
+ TError = unknown,
22
+ TData = TQueryFnData,
23
+ TQueryKey extends QueryKey = QueryKey,
24
+ >(
25
+ options: UseInfiniteQueryOptions<
26
+ TQueryFnData,
27
+ TError,
28
+ TData,
29
+ TQueryFnData,
30
+ TQueryKey
31
+ > & {
32
+ initialData:
33
+ | NonUndefinedGuard<InfiniteData<TQueryFnData>>
34
+ | (() => NonUndefinedGuard<InfiniteData<TQueryFnData>>)
35
+ | undefined
36
+ },
37
+ ): DefinedUseInfiniteQueryResult<TData, TError>
13
38
  export function useInfiniteQuery<
14
39
  TQueryFnData = unknown,
15
40
  TError = unknown,
@@ -24,6 +49,7 @@ export function useInfiniteQuery<
24
49
  TQueryKey
25
50
  >,
26
51
  ): UseInfiniteQueryResult<TData, TError>
52
+ /** @deprecated This function overload will be removed in the next major version. */
27
53
  export function useInfiniteQuery<
28
54
  TQueryFnData = unknown,
29
55
  TError = unknown,
@@ -42,6 +68,7 @@ export function useInfiniteQuery<
42
68
  'queryKey'
43
69
  >,
44
70
  ): UseInfiniteQueryResult<TData, TError>
71
+ /** @deprecated This function overload will be removed in the next major version. */
45
72
  export function useInfiniteQuery<
46
73
  TQueryFnData = unknown,
47
74
  TError = unknown,
package/src/useQuery.ts CHANGED
@@ -55,7 +55,7 @@ export function useQuery<
55
55
  options: UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
56
56
  ): UseQueryResult<TData, TError>
57
57
 
58
- /** @deprecated */
58
+ /** @deprecated This function overload will be removed in the next major version. */
59
59
  export function useQuery<
60
60
  TQueryFnData = unknown,
61
61
  TError = unknown,
@@ -68,7 +68,7 @@ export function useQuery<
68
68
  'queryKey' | 'initialData'
69
69
  >,
70
70
  ): UseQueryResult<TData, TError>
71
- /** @deprecated */
71
+ /** @deprecated This function overload will be removed in the next major version. */
72
72
  export function useQuery<
73
73
  TQueryFnData = unknown,
74
74
  TError = unknown,
@@ -81,7 +81,7 @@ export function useQuery<
81
81
  'queryKey' | 'initialData'
82
82
  > & { initialData: TQueryFnData | (() => TQueryFnData) },
83
83
  ): DefinedUseQueryResult<TData, TError>
84
- /** @deprecated */
84
+ /** @deprecated This function overload will be removed in the next major version. */
85
85
  export function useQuery<
86
86
  TQueryFnData = unknown,
87
87
  TError = unknown,
@@ -94,7 +94,7 @@ export function useQuery<
94
94
  'queryKey'
95
95
  >,
96
96
  ): UseQueryResult<TData, TError>
97
- /** @deprecated */
97
+ /** @deprecated This function overload will be removed in the next major version. */
98
98
  export function useQuery<
99
99
  TQueryFnData = unknown,
100
100
  TError = unknown,
@@ -108,7 +108,7 @@ export function useQuery<
108
108
  'queryKey' | 'queryFn' | 'initialData'
109
109
  > & { initialData?: () => undefined },
110
110
  ): UseQueryResult<TData, TError>
111
- /** @deprecated */
111
+ /** @deprecated This function overload will be removed in the next major version. */
112
112
  export function useQuery<
113
113
  TQueryFnData = unknown,
114
114
  TError = unknown,
@@ -122,7 +122,7 @@ export function useQuery<
122
122
  'queryKey' | 'queryFn' | 'initialData'
123
123
  > & { initialData: TQueryFnData | (() => TQueryFnData) },
124
124
  ): DefinedUseQueryResult<TData, TError>
125
- /** @deprecated */
125
+ /** @deprecated This function overload will be removed in the next major version. */
126
126
  export function useQuery<
127
127
  TQueryFnData = unknown,
128
128
  TError = unknown,
@@ -0,0 +1,62 @@
1
+ import { InfiniteQueryObserver } from '@tanstack/query-core'
2
+ import { useBaseQuery } from './useBaseQuery'
3
+ import type {
4
+ InfiniteQueryObserverSuccessResult,
5
+ OmitKeyof,
6
+ QueryKey,
7
+ QueryObserver,
8
+ WithRequired,
9
+ } from '@tanstack/query-core'
10
+ import type {
11
+ UseInfiniteQueryOptions,
12
+ UseSuspenseInfiniteQueryResult,
13
+ } from './types'
14
+
15
+ export type UseSuspenseInfiniteQueryOptions<
16
+ TQueryFnData = unknown,
17
+ TError = unknown,
18
+ TData = TQueryFnData,
19
+ TQueryKey extends QueryKey = QueryKey,
20
+ > = WithRequired<
21
+ OmitKeyof<
22
+ UseInfiniteQueryOptions<
23
+ TQueryFnData,
24
+ TError,
25
+ TData,
26
+ TQueryFnData,
27
+ TQueryKey
28
+ >,
29
+ | 'suspense'
30
+ | 'useErrorBoundary'
31
+ | 'enabled'
32
+ | 'placeholderData'
33
+ | 'networkMode'
34
+ | 'initialData'
35
+ >,
36
+ 'queryKey'
37
+ >
38
+
39
+ export function useSuspenseInfiniteQuery<
40
+ TQueryFnData = unknown,
41
+ TError = unknown,
42
+ TData = TQueryFnData,
43
+ TQueryKey extends QueryKey = QueryKey,
44
+ >(
45
+ options: UseSuspenseInfiniteQueryOptions<
46
+ TQueryFnData,
47
+ TError,
48
+ TData,
49
+ TQueryKey
50
+ >,
51
+ ): UseSuspenseInfiniteQueryResult<TData, TError> {
52
+ return useBaseQuery(
53
+ {
54
+ ...options,
55
+ enabled: true,
56
+ suspense: true,
57
+ useErrorBoundary: true,
58
+ networkMode: 'always',
59
+ },
60
+ InfiniteQueryObserver as typeof QueryObserver,
61
+ ) as InfiniteQueryObserverSuccessResult<TData, TError>
62
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"Hydrate.d.ts","sourceRoot":"","sources":["../../src/Hydrate.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,wBAAgB,UAAU,CACxB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,cAAc,GAAG,cAAmB,QAgB9C;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;AAED,eAAO,MAAM,OAAO,iCAAkC,YAAY,uEAGjE,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryClientProvider.d.ts","sourceRoot":"","sources":["../../src/QueryClientProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,uBAAuB,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAA;KACjE;CACF;AAED,eAAO,MAAM,cAAc,wCAE1B,CAAA;AA4BD,eAAO,MAAM,cAAc,iBAAiB,cAAc,gBAUzD,CAAA;AAED,aAAK,4BAA4B,GAAG;IAClC,MAAM,EAAE,WAAW,CAAA;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B,CAAA;AACD,aAAK,mCAAmC,GAAG,cAAc,GAAG;IAC1D,cAAc,CAAC,EAAE,KAAK,CAAA;CACvB,GAAG,4BAA4B,CAAA;AAChC,aAAK,0CAA0C,GAAG;IAChD,OAAO,CAAC,EAAE,KAAK,CAAA;IACf,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,GAAG,4BAA4B,CAAA;AAEhC,oBAAY,wBAAwB,GAChC,mCAAmC,GACnC,0CAA0C,CAAA;AAE9C,eAAO,MAAM,mBAAmB,mDAK7B,wBAAwB,KAAG,WAuB7B,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryErrorResetBoundary.d.ts","sourceRoot":"","sources":["../../src/QueryErrorResetBoundary.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,MAAM,WAAW,4BAA4B;IAC3C,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,OAAO,EAAE,MAAM,OAAO,CAAA;IACtB,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAqBD,eAAO,MAAM,0BAA0B,oCACW,CAAA;AAIlD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EACJ,CAAC,CAAC,KAAK,EAAE,4BAA4B,KAAK,KAAK,CAAC,SAAS,CAAC,GAC1D,KAAK,CAAC,SAAS,CAAA;CACpB;AAED,eAAO,MAAM,uBAAuB,kBAEjC,4BAA4B,gBAS9B,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Hydrate.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/Hydrate.test.tsx"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryClientProvider.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/QueryClientProvider.test.tsx"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryResetErrorBoundary.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/QueryResetErrorBoundary.test.tsx"],"names":[],"mappings":"AAQA,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,8BAA8B;QACtC,QAAQ,EAAE,GAAG,CAAA;KACd;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"queryOptions.types.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/queryOptions.types.test.tsx"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ssr-hydration.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/ssr-hydration.test.tsx"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ssr.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/ssr.test.tsx"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"suspense.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/suspense.test.tsx"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useInfiniteQuery.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/useInfiniteQuery.test.tsx"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useIsFetching.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/useIsFetching.test.tsx"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useIsMutating.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/useIsMutating.test.tsx"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useMutation.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/useMutation.test.tsx"],"names":[],"mappings":"AACA,OAAO,2BAA2B,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useQueries.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/useQueries.test.tsx"],"names":[],"mappings":""}