@tanstack/react-query 4.42.1 → 4.43.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 (38) hide show
  1. package/build/lib/__tests__/usePrefetchInfiniteQuery.types.test.d.ts +2 -0
  2. package/build/lib/__tests__/usePrefetchInfiniteQuery.types.test.d.ts.map +1 -0
  3. package/build/lib/__tests__/usePrefetchQuery.types.test.d.ts +2 -0
  4. package/build/lib/__tests__/usePrefetchQuery.types.test.d.ts.map +1 -0
  5. package/build/lib/index.d.ts +2 -0
  6. package/build/lib/index.d.ts.map +1 -1
  7. package/build/lib/index.esm.js +2 -0
  8. package/build/lib/index.esm.js.map +1 -1
  9. package/build/lib/index.js +4 -0
  10. package/build/lib/index.js.map +1 -1
  11. package/build/lib/index.mjs +2 -0
  12. package/build/lib/index.mjs.map +1 -1
  13. package/build/lib/usePrefetchInfiniteQuery.d.ts +3 -0
  14. package/build/lib/usePrefetchInfiniteQuery.d.ts.map +1 -0
  15. package/build/lib/usePrefetchInfiniteQuery.esm.js +12 -0
  16. package/build/lib/usePrefetchInfiniteQuery.esm.js.map +1 -0
  17. package/build/lib/usePrefetchInfiniteQuery.js +16 -0
  18. package/build/lib/usePrefetchInfiniteQuery.js.map +1 -0
  19. package/build/lib/usePrefetchInfiniteQuery.mjs +12 -0
  20. package/build/lib/usePrefetchInfiniteQuery.mjs.map +1 -0
  21. package/build/lib/usePrefetchQuery.d.ts +3 -0
  22. package/build/lib/usePrefetchQuery.d.ts.map +1 -0
  23. package/build/lib/usePrefetchQuery.esm.js +12 -0
  24. package/build/lib/usePrefetchQuery.esm.js.map +1 -0
  25. package/build/lib/usePrefetchQuery.js +16 -0
  26. package/build/lib/usePrefetchQuery.js.map +1 -0
  27. package/build/lib/usePrefetchQuery.mjs +12 -0
  28. package/build/lib/usePrefetchQuery.mjs.map +1 -0
  29. package/build/umd/index.development.js +96 -221
  30. package/build/umd/index.development.js.map +1 -1
  31. package/build/umd/index.production.js +1 -1
  32. package/build/umd/index.production.js.map +1 -1
  33. package/package.json +4 -4
  34. package/src/__tests__/usePrefetchInfiniteQuery.types.test.tsx +45 -0
  35. package/src/__tests__/usePrefetchQuery.types.test.tsx +56 -0
  36. package/src/index.ts +2 -0
  37. package/src/usePrefetchInfiniteQuery.ts +23 -0
  38. package/src/usePrefetchQuery.ts +23 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/react-query",
3
- "version": "4.42.1",
3
+ "version": "4.43.0",
4
4
  "description": "Hooks for managing, caching and syncing asynchronous and remote data in React",
5
5
  "author": "tannerlinsley",
6
6
  "license": "MIT",
@@ -41,7 +41,7 @@
41
41
  "@types/jscodeshift": "^0.11.3",
42
42
  "@types/react": "^19.1.9",
43
43
  "@types/react-dom": "^19.1.7",
44
- "@types/use-sync-external-store": "^0.0.3",
44
+ "@types/use-sync-external-store": "^1.5.0",
45
45
  "react": "^19.1.1",
46
46
  "react-17": "npm:react@^17.0.2",
47
47
  "react-18": "npm:react@^18.2.0",
@@ -52,8 +52,8 @@
52
52
  "react-error-boundary": "^3.1.4"
53
53
  },
54
54
  "dependencies": {
55
- "use-sync-external-store": "^1.2.0",
56
- "@tanstack/query-core": "4.41.1"
55
+ "use-sync-external-store": "^1.6.0",
56
+ "@tanstack/query-core": "4.43.0"
57
57
  },
58
58
  "peerDependencies": {
59
59
  "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
@@ -0,0 +1,45 @@
1
+ import { expectTypeOf } from 'expect-type'
2
+ import { usePrefetchInfiniteQuery } from '../usePrefetchInfiniteQuery'
3
+ import { doNotExecute } from './utils'
4
+
5
+ describe('usePrefetchInfiniteQuery', () => {
6
+ it('should return nothing', () => {
7
+ doNotExecute(() => {
8
+ const result = usePrefetchInfiniteQuery({
9
+ queryKey: ['key'],
10
+ queryFn: () => Promise.resolve(5),
11
+ getNextPageParam: () => 1,
12
+ })
13
+
14
+ expectTypeOf(result).toEqualTypeOf<void>()
15
+ })
16
+ })
17
+
18
+ it('should not allow refetchInterval, enabled or throwOnError options', () => {
19
+ doNotExecute(() => {
20
+ usePrefetchInfiniteQuery({
21
+ queryKey: ['key'],
22
+ queryFn: () => Promise.resolve(5),
23
+ getNextPageParam: () => 1,
24
+ // @ts-expect-error TS2353
25
+ refetchInterval: 1000,
26
+ })
27
+
28
+ usePrefetchInfiniteQuery({
29
+ queryKey: ['key'],
30
+ queryFn: () => Promise.resolve(5),
31
+ getNextPageParam: () => 1,
32
+ // @ts-expect-error TS2353
33
+ enabled: true,
34
+ })
35
+
36
+ usePrefetchInfiniteQuery({
37
+ queryKey: ['key'],
38
+ queryFn: () => Promise.resolve(5),
39
+ getNextPageParam: () => 1,
40
+ // @ts-expect-error TS2353
41
+ throwOnError: true,
42
+ })
43
+ })
44
+ })
45
+ })
@@ -0,0 +1,56 @@
1
+ import { expectTypeOf } from 'expect-type'
2
+ import { usePrefetchQuery } from '..'
3
+ import { doNotExecute } from './utils'
4
+
5
+ describe('usePrefetchQuery', () => {
6
+ it('should return nothing', () => {
7
+ doNotExecute(() => {
8
+ const result = usePrefetchQuery({
9
+ queryKey: ['key'],
10
+ queryFn: () => Promise.resolve(5),
11
+ })
12
+
13
+ expectTypeOf(result).toEqualTypeOf<void>()
14
+ })
15
+ })
16
+
17
+ it('should not allow refetchInterval, enabled or throwOnError options', () => {
18
+ doNotExecute(() => {
19
+ usePrefetchQuery({
20
+ queryKey: ['key'],
21
+ queryFn: () => Promise.resolve(5),
22
+ // @ts-expect-error TS2345
23
+ refetchInterval: 1000,
24
+ })
25
+
26
+ usePrefetchQuery({
27
+ queryKey: ['key'],
28
+ queryFn: () => Promise.resolve(5),
29
+ // @ts-expect-error TS2345
30
+ enabled: true,
31
+ })
32
+
33
+ usePrefetchQuery({
34
+ queryKey: ['key'],
35
+ queryFn: () => Promise.resolve(5),
36
+ // @ts-expect-error TS2345
37
+ throwOnError: true,
38
+ })
39
+ })
40
+ })
41
+
42
+ it('should not allow skipToken in queryFn', () => {
43
+ doNotExecute(() => {
44
+ usePrefetchQuery({
45
+ queryKey: ['key'],
46
+ // @ts-expect-error
47
+ queryFn: skipToken,
48
+ })
49
+ usePrefetchQuery({
50
+ queryKey: ['key'],
51
+ // @ts-expect-error
52
+ queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5),
53
+ })
54
+ })
55
+ })
56
+ })
package/src/index.ts CHANGED
@@ -46,3 +46,5 @@ export { useIsMutating } from './useIsMutating'
46
46
  export { useMutation } from './useMutation'
47
47
  export { useInfiniteQuery } from './useInfiniteQuery'
48
48
  export { useIsRestoring, IsRestoringProvider } from './isRestoring'
49
+ export { usePrefetchQuery } from './usePrefetchQuery'
50
+ export { usePrefetchInfiniteQuery } from './usePrefetchInfiniteQuery'
@@ -0,0 +1,23 @@
1
+ import { useQueryClient } from './QueryClientProvider'
2
+ import type {
3
+ FetchInfiniteQueryOptions,
4
+ QueryKey,
5
+ WithRequired,
6
+ } from '@tanstack/query-core'
7
+
8
+ export function usePrefetchInfiniteQuery<
9
+ TQueryFnData = unknown,
10
+ TError = unknown,
11
+ TData = TQueryFnData,
12
+ TQueryKey extends QueryKey = QueryKey,
13
+ >(
14
+ options: WithRequired<
15
+ FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
16
+ 'queryKey'
17
+ >,
18
+ ) {
19
+ const client = useQueryClient()
20
+ if (!client.getQueryState(options.queryKey)) {
21
+ client.prefetchInfiniteQuery(options)
22
+ }
23
+ }
@@ -0,0 +1,23 @@
1
+ import { useQueryClient } from './QueryClientProvider'
2
+ import type {
3
+ FetchQueryOptions,
4
+ QueryKey,
5
+ WithRequired,
6
+ } from '@tanstack/query-core'
7
+
8
+ export function usePrefetchQuery<
9
+ TQueryFnData = unknown,
10
+ TError = unknown,
11
+ TData = TQueryFnData,
12
+ TQueryKey extends QueryKey = QueryKey,
13
+ >(
14
+ options: WithRequired<
15
+ FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
16
+ 'queryKey'
17
+ >,
18
+ ) {
19
+ const client = useQueryClient()
20
+ if (!client.getQueryState(options.queryKey)) {
21
+ client.prefetchQuery(options)
22
+ }
23
+ }