@tanstack/query-core 5.0.0-alpha.23 → 5.0.0-alpha.26
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/focusManager.d.ts +1 -0
- package/build/lib/hydration.d.ts +1 -0
- package/build/lib/index.d.ts +1 -0
- package/build/lib/infiniteQueryBehavior.d.ts +1 -0
- package/build/lib/infiniteQueryObserver.d.ts +1 -0
- package/build/lib/mutation.d.ts +1 -0
- package/build/lib/mutationCache.d.ts +1 -0
- package/build/lib/mutationObserver.d.ts +1 -0
- package/build/lib/notifyManager.d.ts +1 -0
- package/build/lib/onlineManager.d.ts +1 -0
- package/build/lib/queriesObserver.d.ts +1 -0
- package/build/lib/query.d.ts +1 -0
- package/build/lib/query.esm.js +1 -1
- package/build/lib/query.esm.js.map +1 -1
- package/build/lib/query.js +1 -1
- package/build/lib/query.js.map +1 -1
- package/build/lib/query.mjs +1 -1
- package/build/lib/query.mjs.map +1 -1
- package/build/lib/queryCache.d.ts +1 -1
- package/build/lib/queryCache.esm.js +1 -2
- package/build/lib/queryCache.esm.js.map +1 -1
- package/build/lib/queryCache.js +1 -2
- package/build/lib/queryCache.js.map +1 -1
- package/build/lib/queryCache.mjs +1 -1
- package/build/lib/queryCache.mjs.map +1 -1
- package/build/lib/queryClient.d.ts +1 -0
- package/build/lib/queryClient.esm.js +11 -10
- package/build/lib/queryClient.esm.js.map +1 -1
- package/build/lib/queryClient.js +11 -10
- package/build/lib/queryClient.js.map +1 -1
- package/build/lib/queryClient.mjs +10 -7
- package/build/lib/queryClient.mjs.map +1 -1
- package/build/lib/queryObserver.d.ts +1 -0
- package/build/lib/removable.d.ts +1 -0
- package/build/lib/retryer.d.ts +1 -0
- package/build/lib/subscribable.d.ts +1 -0
- package/build/lib/tests/focusManager.test.d.ts +1 -0
- package/build/lib/tests/hydration.test.d.ts +1 -0
- package/build/lib/tests/infiniteQueryBehavior.test.d.ts +1 -0
- package/build/lib/tests/infiniteQueryObserver.test.d.ts +1 -0
- package/build/lib/tests/mutationCache.test.d.ts +1 -0
- package/build/lib/tests/mutationObserver.test.d.ts +1 -0
- package/build/lib/tests/mutations.test.d.ts +1 -0
- package/build/lib/tests/notifyManager.test.d.ts +1 -0
- package/build/lib/tests/onlineManager.test.d.ts +1 -0
- package/build/lib/tests/queriesObserver.test.d.ts +1 -0
- package/build/lib/tests/query.test.d.ts +1 -0
- package/build/lib/tests/queryCache.test.d.ts +1 -0
- package/build/lib/tests/queryClient.test.d.ts +1 -0
- package/build/lib/tests/queryObserver.test.d.ts +1 -0
- package/build/lib/tests/utils.d.ts +1 -0
- package/build/lib/tests/utils.test.d.ts +1 -0
- package/build/lib/types.d.ts +1 -0
- package/build/lib/utils.d.ts +1 -0
- package/build/umd/index.development.js +12 -9
- 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 +1 -1
- package/src/query.ts +1 -1
- package/src/queryCache.ts +1 -2
- package/src/queryClient.ts +14 -13
- package/src/tests/query.test.tsx +1 -1
- package/src/tests/queryCache.test.tsx +0 -17
- package/src/tests/queryClient.test.tsx +33 -1
package/package.json
CHANGED
package/src/query.ts
CHANGED
|
@@ -464,7 +464,7 @@ export class Query<
|
|
|
464
464
|
`Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`,
|
|
465
465
|
)
|
|
466
466
|
}
|
|
467
|
-
onError(new Error(
|
|
467
|
+
onError(new Error(`${this.queryHash} data is undefined`) as any)
|
|
468
468
|
return
|
|
469
469
|
}
|
|
470
470
|
|
package/src/queryCache.ts
CHANGED
|
@@ -27,7 +27,6 @@ interface QueryCacheConfig {
|
|
|
27
27
|
error: DefaultError | null,
|
|
28
28
|
query: Query<unknown, unknown, unknown>,
|
|
29
29
|
) => void
|
|
30
|
-
createStore?: () => QueryStore
|
|
31
30
|
}
|
|
32
31
|
|
|
33
32
|
interface NotifyEventQueryAdded extends NotifyEvent {
|
|
@@ -95,7 +94,7 @@ export class QueryCache extends Subscribable<QueryCacheListener> {
|
|
|
95
94
|
|
|
96
95
|
constructor(public config: QueryCacheConfig = {}) {
|
|
97
96
|
super()
|
|
98
|
-
this.#queries =
|
|
97
|
+
this.#queries = new Map<string, Query>()
|
|
99
98
|
}
|
|
100
99
|
|
|
101
100
|
build<TQueryFnData, TError, TData, TQueryKey extends QueryKey>(
|
package/src/queryClient.ts
CHANGED
|
@@ -247,25 +247,26 @@ export class QueryClient {
|
|
|
247
247
|
filters: RefetchQueryFilters = {},
|
|
248
248
|
options?: RefetchOptions,
|
|
249
249
|
): Promise<void> {
|
|
250
|
+
const fetchOptions = {
|
|
251
|
+
...options,
|
|
252
|
+
cancelRefetch: options?.cancelRefetch ?? true,
|
|
253
|
+
}
|
|
250
254
|
const promises = notifyManager.batch(() =>
|
|
251
255
|
this.#queryCache
|
|
252
256
|
.findAll(filters)
|
|
253
257
|
.filter((query) => !query.isDisabled())
|
|
254
|
-
.map((query) =>
|
|
255
|
-
query.fetch(undefined,
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
}
|
|
259
|
-
|
|
258
|
+
.map((query) => {
|
|
259
|
+
let promise = query.fetch(undefined, fetchOptions)
|
|
260
|
+
if (!fetchOptions.throwOnError) {
|
|
261
|
+
promise = promise.catch(noop)
|
|
262
|
+
}
|
|
263
|
+
return query.state.fetchStatus === 'paused'
|
|
264
|
+
? Promise.resolve()
|
|
265
|
+
: promise
|
|
266
|
+
}),
|
|
260
267
|
)
|
|
261
268
|
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
if (!options?.throwOnError) {
|
|
265
|
-
promise = promise.catch(noop)
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
return promise
|
|
269
|
+
return Promise.all(promises).then(noop)
|
|
269
270
|
}
|
|
270
271
|
|
|
271
272
|
fetchQuery<
|
package/src/tests/query.test.tsx
CHANGED
|
@@ -329,23 +329,6 @@ describe('queryCache', () => {
|
|
|
329
329
|
})
|
|
330
330
|
})
|
|
331
331
|
|
|
332
|
-
describe('QueryCacheConfig.createStore', () => {
|
|
333
|
-
test('should call createStore', async () => {
|
|
334
|
-
const createStore = vi.fn().mockImplementation(() => new Map())
|
|
335
|
-
new QueryCache({ createStore })
|
|
336
|
-
expect(createStore).toHaveBeenCalledWith()
|
|
337
|
-
})
|
|
338
|
-
|
|
339
|
-
test('should use created store', async () => {
|
|
340
|
-
const store = new Map()
|
|
341
|
-
const spy = vi.spyOn(store, 'get')
|
|
342
|
-
|
|
343
|
-
new QueryCache({ createStore: () => store }).get('key')
|
|
344
|
-
|
|
345
|
-
expect(spy).toHaveBeenCalledTimes(1)
|
|
346
|
-
})
|
|
347
|
-
})
|
|
348
|
-
|
|
349
332
|
describe('QueryCache.add', () => {
|
|
350
333
|
test('should not try to add a query already added to the cache', async () => {
|
|
351
334
|
const key = queryKey()
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { waitFor } from '@testing-library/react'
|
|
2
2
|
import '@testing-library/jest-dom'
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
sleep,
|
|
6
|
+
queryKey,
|
|
7
|
+
createQueryClient,
|
|
8
|
+
mockNavigatorOnLine,
|
|
9
|
+
} from './utils'
|
|
5
10
|
import type {
|
|
6
11
|
QueryCache,
|
|
7
12
|
QueryClient,
|
|
@@ -1020,6 +1025,33 @@ describe('queryClient', () => {
|
|
|
1020
1025
|
}
|
|
1021
1026
|
expect(error).toEqual('error')
|
|
1022
1027
|
})
|
|
1028
|
+
|
|
1029
|
+
test('should resolve Promise immediately if query is paused', async () => {
|
|
1030
|
+
const key1 = queryKey()
|
|
1031
|
+
const queryFn1 = vi.fn<unknown[], string>().mockReturnValue('data1')
|
|
1032
|
+
await queryClient.fetchQuery({ queryKey: key1, queryFn: queryFn1 })
|
|
1033
|
+
const onlineMock = mockNavigatorOnLine(false)
|
|
1034
|
+
|
|
1035
|
+
await queryClient.refetchQueries({ queryKey: key1 })
|
|
1036
|
+
|
|
1037
|
+
// if we reach this point, the test succeeds because the Promise was resolved immediately
|
|
1038
|
+
expect(queryFn1).toHaveBeenCalledTimes(1)
|
|
1039
|
+
onlineMock.mockRestore()
|
|
1040
|
+
})
|
|
1041
|
+
|
|
1042
|
+
test('should refetch if query we are offline but query networkMode is always', async () => {
|
|
1043
|
+
const key1 = queryKey()
|
|
1044
|
+
queryClient.setQueryDefaults(key1, { networkMode: 'always' })
|
|
1045
|
+
const queryFn1 = vi.fn<unknown[], string>().mockReturnValue('data1')
|
|
1046
|
+
await queryClient.fetchQuery({ queryKey: key1, queryFn: queryFn1 })
|
|
1047
|
+
const onlineMock = mockNavigatorOnLine(false)
|
|
1048
|
+
|
|
1049
|
+
await queryClient.refetchQueries({ queryKey: key1 })
|
|
1050
|
+
|
|
1051
|
+
// initial fetch + refetch (even though we are offline)
|
|
1052
|
+
expect(queryFn1).toHaveBeenCalledTimes(2)
|
|
1053
|
+
onlineMock.mockRestore()
|
|
1054
|
+
})
|
|
1023
1055
|
})
|
|
1024
1056
|
|
|
1025
1057
|
describe('invalidateQueries', () => {
|