@tanstack/query-core 4.24.10 → 5.0.0-alpha.1
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 -3
- package/build/lib/focusManager.esm.js +19 -36
- package/build/lib/focusManager.esm.js.map +1 -1
- package/build/lib/focusManager.js +19 -38
- package/build/lib/focusManager.js.map +1 -1
- package/build/lib/focusManager.mjs +19 -36
- package/build/lib/focusManager.mjs.map +1 -1
- package/build/lib/hydration.esm.js +21 -23
- package/build/lib/hydration.esm.js.map +1 -1
- package/build/lib/hydration.js +21 -25
- package/build/lib/hydration.js.map +1 -1
- package/build/lib/hydration.mjs +21 -23
- package/build/lib/hydration.mjs.map +1 -1
- package/build/lib/index.d.ts +1 -2
- package/build/lib/index.esm.js +1 -1
- package/build/lib/index.js +2 -8
- package/build/lib/index.js.map +1 -1
- package/build/lib/index.mjs +1 -1
- package/build/lib/infiniteQueryBehavior.d.ts +3 -7
- package/build/lib/infiniteQueryBehavior.esm.js +52 -75
- package/build/lib/infiniteQueryBehavior.esm.js.map +1 -1
- package/build/lib/infiniteQueryBehavior.js +50 -77
- package/build/lib/infiniteQueryBehavior.js.map +1 -1
- package/build/lib/infiniteQueryBehavior.mjs +52 -75
- package/build/lib/infiniteQueryBehavior.mjs.map +1 -1
- package/build/lib/infiniteQueryObserver.d.ts +4 -4
- package/build/lib/infiniteQueryObserver.esm.js +18 -26
- package/build/lib/infiniteQueryObserver.esm.js.map +1 -1
- package/build/lib/infiniteQueryObserver.js +18 -28
- package/build/lib/infiniteQueryObserver.js.map +1 -1
- package/build/lib/infiniteQueryObserver.mjs +18 -26
- package/build/lib/infiniteQueryObserver.mjs.map +1 -1
- package/build/lib/mutation.d.ts +11 -22
- package/build/lib/mutation.esm.js +73 -105
- package/build/lib/mutation.esm.js.map +1 -1
- package/build/lib/mutation.js +73 -107
- package/build/lib/mutation.js.map +1 -1
- package/build/lib/mutation.mjs +73 -105
- package/build/lib/mutation.mjs.map +1 -1
- package/build/lib/mutationCache.d.ts +4 -6
- package/build/lib/mutationCache.esm.js +23 -32
- package/build/lib/mutationCache.esm.js.map +1 -1
- package/build/lib/mutationCache.js +23 -34
- package/build/lib/mutationCache.js.map +1 -1
- package/build/lib/mutationCache.mjs +23 -32
- package/build/lib/mutationCache.mjs.map +1 -1
- package/build/lib/mutationObserver.d.ts +4 -9
- package/build/lib/mutationObserver.esm.js +42 -73
- package/build/lib/mutationObserver.esm.js.map +1 -1
- package/build/lib/mutationObserver.js +42 -75
- package/build/lib/mutationObserver.js.map +1 -1
- package/build/lib/mutationObserver.mjs +42 -73
- package/build/lib/mutationObserver.mjs.map +1 -1
- package/build/lib/notifyManager.esm.js +7 -17
- package/build/lib/notifyManager.esm.js.map +1 -1
- package/build/lib/notifyManager.js +7 -19
- package/build/lib/notifyManager.js.map +1 -1
- package/build/lib/notifyManager.mjs +7 -17
- package/build/lib/notifyManager.mjs.map +1 -1
- package/build/lib/onlineManager.d.ts +1 -3
- package/build/lib/onlineManager.esm.js +16 -30
- package/build/lib/onlineManager.esm.js.map +1 -1
- package/build/lib/onlineManager.js +16 -32
- package/build/lib/onlineManager.js.map +1 -1
- package/build/lib/onlineManager.mjs +16 -30
- package/build/lib/onlineManager.mjs.map +1 -1
- package/build/lib/queriesObserver.d.ts +3 -10
- package/build/lib/queriesObserver.esm.js +47 -71
- package/build/lib/queriesObserver.esm.js.map +1 -1
- package/build/lib/queriesObserver.js +49 -75
- package/build/lib/queriesObserver.js.map +1 -1
- package/build/lib/queriesObserver.mjs +47 -71
- package/build/lib/queriesObserver.mjs.map +1 -1
- package/build/lib/query.d.ts +14 -21
- package/build/lib/query.esm.js +140 -194
- package/build/lib/query.esm.js.map +1 -1
- package/build/lib/query.js +139 -195
- package/build/lib/query.js.map +1 -1
- package/build/lib/query.mjs +140 -194
- package/build/lib/query.mjs.map +1 -1
- package/build/lib/queryCache.d.ts +12 -7
- package/build/lib/queryCache.esm.js +21 -45
- package/build/lib/queryCache.esm.js.map +1 -1
- package/build/lib/queryCache.js +20 -46
- package/build/lib/queryCache.js.map +1 -1
- package/build/lib/queryCache.mjs +21 -45
- package/build/lib/queryCache.mjs.map +1 -1
- package/build/lib/queryClient.d.ts +18 -46
- package/build/lib/queryClient.esm.js +137 -216
- package/build/lib/queryClient.esm.js.map +1 -1
- package/build/lib/queryClient.js +136 -217
- package/build/lib/queryClient.js.map +1 -1
- package/build/lib/queryClient.mjs +137 -216
- package/build/lib/queryClient.mjs.map +1 -1
- package/build/lib/queryObserver.d.ts +4 -29
- package/build/lib/queryObserver.esm.js +176 -258
- package/build/lib/queryObserver.esm.js.map +1 -1
- package/build/lib/queryObserver.js +176 -260
- package/build/lib/queryObserver.js.map +1 -1
- package/build/lib/queryObserver.mjs +176 -258
- package/build/lib/queryObserver.mjs.map +1 -1
- package/build/lib/removable.d.ts +3 -3
- package/build/lib/removable.esm.js +10 -14
- package/build/lib/removable.esm.js.map +1 -1
- package/build/lib/removable.js +10 -16
- package/build/lib/removable.js.map +1 -1
- package/build/lib/removable.mjs +10 -14
- package/build/lib/removable.mjs.map +1 -1
- package/build/lib/retryer.d.ts +5 -5
- package/build/lib/retryer.esm.js +27 -44
- package/build/lib/retryer.esm.js.map +1 -1
- package/build/lib/retryer.js +27 -46
- package/build/lib/retryer.js.map +1 -1
- package/build/lib/retryer.mjs +27 -44
- package/build/lib/retryer.mjs.map +1 -1
- package/build/lib/subscribable.esm.js +4 -7
- package/build/lib/subscribable.esm.js.map +1 -1
- package/build/lib/subscribable.js +4 -9
- package/build/lib/subscribable.js.map +1 -1
- package/build/lib/subscribable.mjs +4 -7
- package/build/lib/subscribable.mjs.map +1 -1
- package/build/lib/tests/utils.d.ts +3 -12
- package/build/lib/types.d.ts +111 -99
- package/build/lib/utils.d.ts +8 -18
- package/build/lib/utils.esm.js +39 -132
- package/build/lib/utils.esm.js.map +1 -1
- package/build/lib/utils.js +42 -144
- package/build/lib/utils.js.map +1 -1
- package/build/lib/utils.mjs +39 -132
- package/build/lib/utils.mjs.map +1 -1
- package/build/umd/index.development.js +867 -1399
- 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/focusManager.ts +17 -24
- package/src/index.ts +1 -11
- package/src/infiniteQueryBehavior.ts +54 -94
- package/src/infiniteQueryObserver.ts +10 -12
- package/src/mutation.ts +68 -92
- package/src/mutationCache.ts +27 -27
- package/src/mutationObserver.ts +58 -97
- package/src/onlineManager.ts +14 -14
- package/src/queriesObserver.ts +50 -54
- package/src/query.ts +107 -111
- package/src/queryCache.ts +42 -41
- package/src/queryClient.ts +155 -434
- package/src/queryObserver.ts +155 -192
- package/src/removable.ts +13 -13
- package/src/retryer.ts +5 -5
- package/src/subscribable.ts +1 -1
- package/src/tests/focusManager.test.tsx +25 -25
- package/src/tests/hydration.test.tsx +167 -81
- package/src/tests/infiniteQueryBehavior.test.tsx +209 -17
- package/src/tests/infiniteQueryObserver.test.tsx +6 -2
- package/src/tests/mutationCache.test.tsx +127 -127
- package/src/tests/mutationObserver.test.tsx +1 -31
- package/src/tests/mutations.test.tsx +62 -43
- package/src/tests/onlineManager.test.tsx +12 -4
- package/src/tests/queriesObserver.test.tsx +41 -77
- package/src/tests/query.test.tsx +175 -243
- package/src/tests/queryCache.test.tsx +170 -93
- package/src/tests/queryClient.test.tsx +229 -378
- package/src/tests/queryObserver.test.tsx +23 -147
- package/src/tests/utils.test.tsx +84 -29
- package/src/tests/utils.ts +9 -18
- package/src/types.ts +187 -140
- package/src/utils.ts +31 -124
- package/build/lib/logger.d.ts +0 -8
- package/build/lib/logger.esm.js +0 -4
- package/build/lib/logger.esm.js.map +0 -1
- package/build/lib/logger.js +0 -8
- package/build/lib/logger.js.map +0 -1
- package/build/lib/logger.mjs +0 -4
- package/build/lib/logger.mjs.map +0 -1
- package/build/lib/logger.native.d.ts +0 -6
- package/build/lib/logger.native.esm.js +0 -12
- package/build/lib/logger.native.esm.js.map +0 -1
- package/build/lib/logger.native.js +0 -16
- package/build/lib/logger.native.js.map +0 -1
- package/build/lib/logger.native.mjs +0 -12
- package/build/lib/logger.native.mjs.map +0 -1
- package/src/logger.native.ts +0 -11
- package/src/logger.ts +0 -9
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { sleep, queryKey, createQueryClient } from './utils'
|
|
2
|
-
import
|
|
2
|
+
import { QueryClient } from '..'
|
|
3
3
|
import { QueryCache, QueryObserver } from '..'
|
|
4
|
-
import type { Query } from '.././query'
|
|
5
4
|
import { waitFor } from '@testing-library/react'
|
|
6
5
|
|
|
7
6
|
describe('queryCache', () => {
|
|
@@ -23,7 +22,7 @@ describe('queryCache', () => {
|
|
|
23
22
|
const subscriber = jest.fn()
|
|
24
23
|
const unsubscribe = queryCache.subscribe(subscriber)
|
|
25
24
|
queryClient.setQueryData(key, 'foo')
|
|
26
|
-
const query = queryCache.find(key)
|
|
25
|
+
const query = queryCache.find({ queryKey: key })
|
|
27
26
|
await sleep(1)
|
|
28
27
|
expect(subscriber).toHaveBeenCalledWith({ query, type: 'added' })
|
|
29
28
|
unsubscribe()
|
|
@@ -33,7 +32,7 @@ describe('queryCache', () => {
|
|
|
33
32
|
const key = queryKey()
|
|
34
33
|
const callback = jest.fn()
|
|
35
34
|
queryCache.subscribe(callback)
|
|
36
|
-
queryClient.prefetchQuery(key, () => 'data')
|
|
35
|
+
queryClient.prefetchQuery({ queryKey: key, queryFn: () => 'data' })
|
|
37
36
|
await sleep(100)
|
|
38
37
|
expect(callback).toHaveBeenCalled()
|
|
39
38
|
})
|
|
@@ -76,8 +75,8 @@ describe('queryCache', () => {
|
|
|
76
75
|
const key = queryKey()
|
|
77
76
|
const callback = jest.fn()
|
|
78
77
|
queryCache.subscribe(callback)
|
|
79
|
-
queryClient.prefetchQuery(key, () => 'data')
|
|
80
|
-
const query = queryCache.find(key)
|
|
78
|
+
queryClient.prefetchQuery({ queryKey: key, queryFn: () => 'data' })
|
|
79
|
+
const query = queryCache.find({ queryKey: key })
|
|
81
80
|
await sleep(100)
|
|
82
81
|
expect(callback).toHaveBeenCalledWith({ query, type: 'added' })
|
|
83
82
|
})
|
|
@@ -86,26 +85,68 @@ describe('queryCache', () => {
|
|
|
86
85
|
const key = queryKey()
|
|
87
86
|
const callback = jest.fn()
|
|
88
87
|
queryCache.subscribe(callback)
|
|
89
|
-
queryClient.prefetchQuery(
|
|
88
|
+
queryClient.prefetchQuery({
|
|
89
|
+
queryKey: key,
|
|
90
|
+
queryFn: () => 'data',
|
|
90
91
|
initialData: 'initial',
|
|
91
92
|
})
|
|
92
93
|
await sleep(100)
|
|
93
94
|
expect(callback).toHaveBeenCalled()
|
|
94
95
|
})
|
|
96
|
+
|
|
97
|
+
test('should be able to limit cache size', async () => {
|
|
98
|
+
const testCache = new QueryCache()
|
|
99
|
+
|
|
100
|
+
const unsubscribe = testCache.subscribe((event) => {
|
|
101
|
+
if (event.type === 'added') {
|
|
102
|
+
if (testCache.getAll().length > 2) {
|
|
103
|
+
testCache
|
|
104
|
+
.findAll({
|
|
105
|
+
type: 'inactive',
|
|
106
|
+
predicate: (q) => q !== event.query,
|
|
107
|
+
})
|
|
108
|
+
.forEach((query) => {
|
|
109
|
+
testCache.remove(query)
|
|
110
|
+
})
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
})
|
|
114
|
+
|
|
115
|
+
const testClient = new QueryClient({ queryCache: testCache })
|
|
116
|
+
|
|
117
|
+
await testClient.prefetchQuery({
|
|
118
|
+
queryKey: ['key1'],
|
|
119
|
+
queryFn: () => 'data1',
|
|
120
|
+
})
|
|
121
|
+
expect(testCache.findAll().length).toBe(1)
|
|
122
|
+
await testClient.prefetchQuery({
|
|
123
|
+
queryKey: ['key2'],
|
|
124
|
+
queryFn: () => 'data2',
|
|
125
|
+
})
|
|
126
|
+
expect(testCache.findAll().length).toBe(2)
|
|
127
|
+
await testClient.prefetchQuery({
|
|
128
|
+
queryKey: ['key3'],
|
|
129
|
+
queryFn: () => 'data3',
|
|
130
|
+
})
|
|
131
|
+
expect(testCache.findAll().length).toBe(1)
|
|
132
|
+
expect(testCache.findAll()[0]!.state.data).toBe('data3')
|
|
133
|
+
|
|
134
|
+
unsubscribe()
|
|
135
|
+
})
|
|
95
136
|
})
|
|
96
137
|
|
|
97
138
|
describe('find', () => {
|
|
98
139
|
test('find should filter correctly', async () => {
|
|
99
140
|
const key = queryKey()
|
|
100
|
-
await queryClient.prefetchQuery(key, () => 'data1')
|
|
101
|
-
const query = queryCache.find(key)!
|
|
141
|
+
await queryClient.prefetchQuery({ queryKey: key, queryFn: () => 'data1' })
|
|
142
|
+
const query = queryCache.find({ queryKey: key })!
|
|
102
143
|
expect(query).toBeDefined()
|
|
103
144
|
})
|
|
104
145
|
|
|
105
146
|
test('find should filter correctly with exact set to false', async () => {
|
|
106
147
|
const key = queryKey()
|
|
107
|
-
await queryClient.prefetchQuery(key, () => 'data1')
|
|
108
|
-
const query = queryCache.find(key,
|
|
148
|
+
await queryClient.prefetchQuery({ queryKey: key, queryFn: () => 'data1' })
|
|
149
|
+
const query = queryCache.find({ queryKey: key, exact: false })!
|
|
109
150
|
expect(query).toBeDefined()
|
|
110
151
|
})
|
|
111
152
|
})
|
|
@@ -115,65 +156,96 @@ describe('queryCache', () => {
|
|
|
115
156
|
const key1 = queryKey()
|
|
116
157
|
const key2 = queryKey()
|
|
117
158
|
const keyFetching = queryKey()
|
|
118
|
-
await queryClient.prefetchQuery(
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
queryClient.
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
159
|
+
await queryClient.prefetchQuery({
|
|
160
|
+
queryKey: key1,
|
|
161
|
+
queryFn: () => 'data1',
|
|
162
|
+
})
|
|
163
|
+
await queryClient.prefetchQuery({
|
|
164
|
+
queryKey: key2,
|
|
165
|
+
queryFn: () => 'data2',
|
|
166
|
+
})
|
|
167
|
+
await queryClient.prefetchQuery({
|
|
168
|
+
queryKey: [{ a: 'a', b: 'b' }],
|
|
169
|
+
queryFn: () => 'data3',
|
|
170
|
+
})
|
|
171
|
+
await queryClient.prefetchQuery({
|
|
172
|
+
queryKey: ['posts', 1],
|
|
173
|
+
queryFn: () => 'data4',
|
|
174
|
+
})
|
|
175
|
+
queryClient.invalidateQueries({ queryKey: key2 })
|
|
176
|
+
const query1 = queryCache.find({ queryKey: key1 })!
|
|
177
|
+
const query2 = queryCache.find({ queryKey: key2 })!
|
|
178
|
+
const query3 = queryCache.find({ queryKey: [{ a: 'a', b: 'b' }] })!
|
|
179
|
+
const query4 = queryCache.find({ queryKey: ['posts', 1] })!
|
|
180
|
+
|
|
181
|
+
expect(queryCache.findAll({ queryKey: key1 })).toEqual([query1])
|
|
129
182
|
// wrapping in an extra array doesn't yield the same results anymore since v4 because keys need to be an array
|
|
130
|
-
expect(queryCache.findAll([key1])).toEqual([])
|
|
183
|
+
expect(queryCache.findAll({ queryKey: [key1] })).toEqual([])
|
|
131
184
|
expect(queryCache.findAll()).toEqual([query1, query2, query3, query4])
|
|
132
185
|
expect(queryCache.findAll({})).toEqual([query1, query2, query3, query4])
|
|
133
|
-
expect(queryCache.findAll(key1,
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
expect(queryCache.findAll(key1,
|
|
186
|
+
expect(queryCache.findAll({ queryKey: key1, type: 'inactive' })).toEqual([
|
|
187
|
+
query1,
|
|
188
|
+
])
|
|
189
|
+
expect(queryCache.findAll({ queryKey: key1, type: 'active' })).toEqual([])
|
|
190
|
+
expect(queryCache.findAll({ queryKey: key1, stale: true })).toEqual([])
|
|
191
|
+
expect(queryCache.findAll({ queryKey: key1, stale: false })).toEqual([
|
|
192
|
+
query1,
|
|
193
|
+
])
|
|
137
194
|
expect(
|
|
138
|
-
queryCache.findAll(key1,
|
|
195
|
+
queryCache.findAll({ queryKey: key1, stale: false, type: 'active' }),
|
|
139
196
|
).toEqual([])
|
|
140
197
|
expect(
|
|
141
|
-
queryCache.findAll(key1,
|
|
198
|
+
queryCache.findAll({ queryKey: key1, stale: false, type: 'inactive' }),
|
|
142
199
|
).toEqual([query1])
|
|
143
200
|
expect(
|
|
144
|
-
queryCache.findAll(
|
|
201
|
+
queryCache.findAll({
|
|
202
|
+
queryKey: key1,
|
|
145
203
|
stale: false,
|
|
146
204
|
type: 'inactive',
|
|
147
205
|
exact: true,
|
|
148
206
|
}),
|
|
149
207
|
).toEqual([query1])
|
|
150
208
|
|
|
151
|
-
expect(queryCache.findAll(key2)).toEqual([query2])
|
|
152
|
-
expect(queryCache.findAll(key2,
|
|
153
|
-
|
|
154
|
-
expect(queryCache.findAll(key2, { stale: false })).toEqual([])
|
|
155
|
-
expect(queryCache.findAll([{ b: 'b' }])).toEqual([query3])
|
|
156
|
-
expect(queryCache.findAll([{ a: 'a' }], { exact: false })).toEqual([
|
|
157
|
-
query3,
|
|
209
|
+
expect(queryCache.findAll({ queryKey: key2 })).toEqual([query2])
|
|
210
|
+
expect(queryCache.findAll({ queryKey: key2, stale: undefined })).toEqual([
|
|
211
|
+
query2,
|
|
158
212
|
])
|
|
159
|
-
expect(queryCache.findAll(
|
|
160
|
-
|
|
161
|
-
[query3],
|
|
162
|
-
)
|
|
163
|
-
expect(queryCache.findAll([{ a: 'a', b: 'b' }])).toEqual([query3])
|
|
164
|
-
expect(queryCache.findAll([{ a: 'a', b: 'b', c: 'c' }])).toEqual([])
|
|
165
|
-
expect(queryCache.findAll([{ a: 'a' }], { stale: false })).toEqual([
|
|
166
|
-
query3,
|
|
213
|
+
expect(queryCache.findAll({ queryKey: key2, stale: true })).toEqual([
|
|
214
|
+
query2,
|
|
167
215
|
])
|
|
168
|
-
expect(queryCache.findAll(
|
|
169
|
-
expect(queryCache.findAll(
|
|
170
|
-
expect(
|
|
216
|
+
expect(queryCache.findAll({ queryKey: key2, stale: false })).toEqual([])
|
|
217
|
+
expect(queryCache.findAll({ queryKey: [{ b: 'b' }] })).toEqual([query3])
|
|
218
|
+
expect(
|
|
219
|
+
queryCache.findAll({ queryKey: [{ a: 'a' }], exact: false }),
|
|
220
|
+
).toEqual([query3])
|
|
221
|
+
expect(
|
|
222
|
+
queryCache.findAll({ queryKey: [{ a: 'a' }], exact: true }),
|
|
223
|
+
).toEqual([])
|
|
224
|
+
expect(
|
|
225
|
+
queryCache.findAll({ queryKey: [{ a: 'a', b: 'b' }], exact: true }),
|
|
226
|
+
).toEqual([query3])
|
|
227
|
+
expect(queryCache.findAll({ queryKey: [{ a: 'a', b: 'b' }] })).toEqual([
|
|
171
228
|
query3,
|
|
172
229
|
])
|
|
230
|
+
expect(
|
|
231
|
+
queryCache.findAll({ queryKey: [{ a: 'a', b: 'b', c: 'c' }] }),
|
|
232
|
+
).toEqual([])
|
|
233
|
+
expect(
|
|
234
|
+
queryCache.findAll({ queryKey: [{ a: 'a' }], stale: false }),
|
|
235
|
+
).toEqual([query3])
|
|
236
|
+
expect(
|
|
237
|
+
queryCache.findAll({ queryKey: [{ a: 'a' }], stale: true }),
|
|
238
|
+
).toEqual([])
|
|
239
|
+
expect(
|
|
240
|
+
queryCache.findAll({ queryKey: [{ a: 'a' }], type: 'active' }),
|
|
241
|
+
).toEqual([])
|
|
242
|
+
expect(
|
|
243
|
+
queryCache.findAll({ queryKey: [{ a: 'a' }], type: 'inactive' }),
|
|
244
|
+
).toEqual([query3])
|
|
173
245
|
expect(
|
|
174
246
|
queryCache.findAll({ predicate: (query) => query === query3 }),
|
|
175
247
|
).toEqual([query3])
|
|
176
|
-
expect(queryCache.findAll(['posts'])).toEqual([query4])
|
|
248
|
+
expect(queryCache.findAll({ queryKey: ['posts'] })).toEqual([query4])
|
|
177
249
|
|
|
178
250
|
expect(queryCache.findAll({ fetchStatus: 'idle' })).toEqual([
|
|
179
251
|
query1,
|
|
@@ -181,16 +253,19 @@ describe('queryCache', () => {
|
|
|
181
253
|
query3,
|
|
182
254
|
query4,
|
|
183
255
|
])
|
|
184
|
-
expect(
|
|
185
|
-
|
|
186
|
-
])
|
|
187
|
-
|
|
188
|
-
const promise = queryClient.prefetchQuery(
|
|
189
|
-
|
|
190
|
-
|
|
256
|
+
expect(
|
|
257
|
+
queryCache.findAll({ queryKey: key2, fetchStatus: undefined }),
|
|
258
|
+
).toEqual([query2])
|
|
259
|
+
|
|
260
|
+
const promise = queryClient.prefetchQuery({
|
|
261
|
+
queryKey: keyFetching,
|
|
262
|
+
queryFn: async () => {
|
|
263
|
+
await sleep(20)
|
|
264
|
+
return 'dataFetching'
|
|
265
|
+
},
|
|
191
266
|
})
|
|
192
267
|
expect(queryCache.findAll({ fetchStatus: 'fetching' })).toEqual([
|
|
193
|
-
queryCache.find(keyFetching),
|
|
268
|
+
queryCache.find({ queryKey: keyFetching }),
|
|
194
269
|
])
|
|
195
270
|
await promise
|
|
196
271
|
expect(queryCache.findAll({ fetchStatus: 'fetching' })).toEqual([])
|
|
@@ -199,8 +274,14 @@ describe('queryCache', () => {
|
|
|
199
274
|
test('should return all the queries when no filters are defined', async () => {
|
|
200
275
|
const key1 = queryKey()
|
|
201
276
|
const key2 = queryKey()
|
|
202
|
-
await queryClient.prefetchQuery(
|
|
203
|
-
|
|
277
|
+
await queryClient.prefetchQuery({
|
|
278
|
+
queryKey: key1,
|
|
279
|
+
queryFn: () => 'data1',
|
|
280
|
+
})
|
|
281
|
+
await queryClient.prefetchQuery({
|
|
282
|
+
queryKey: key2,
|
|
283
|
+
queryFn: () => 'data2',
|
|
284
|
+
})
|
|
204
285
|
expect(queryCache.findAll().length).toBe(2)
|
|
205
286
|
})
|
|
206
287
|
})
|
|
@@ -211,10 +292,11 @@ describe('queryCache', () => {
|
|
|
211
292
|
const onError = jest.fn()
|
|
212
293
|
const testCache = new QueryCache({ onError })
|
|
213
294
|
const testClient = createQueryClient({ queryCache: testCache })
|
|
214
|
-
await testClient.prefetchQuery(
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
295
|
+
await testClient.prefetchQuery({
|
|
296
|
+
queryKey: key,
|
|
297
|
+
queryFn: () => Promise.reject<unknown>('error'),
|
|
298
|
+
})
|
|
299
|
+
const query = testCache.find({ queryKey: key })
|
|
218
300
|
expect(onError).toHaveBeenCalledWith('error', query)
|
|
219
301
|
})
|
|
220
302
|
})
|
|
@@ -225,48 +307,43 @@ describe('queryCache', () => {
|
|
|
225
307
|
const onSuccess = jest.fn()
|
|
226
308
|
const testCache = new QueryCache({ onSuccess })
|
|
227
309
|
const testClient = createQueryClient({ queryCache: testCache })
|
|
228
|
-
await testClient.prefetchQuery(
|
|
229
|
-
|
|
310
|
+
await testClient.prefetchQuery({
|
|
311
|
+
queryKey: key,
|
|
312
|
+
queryFn: () => Promise.resolve({ data: 5 }),
|
|
313
|
+
})
|
|
314
|
+
const query = testCache.find({ queryKey: key })
|
|
230
315
|
expect(onSuccess).toHaveBeenCalledWith({ data: 5 }, query)
|
|
231
316
|
})
|
|
232
317
|
})
|
|
233
318
|
|
|
234
|
-
describe('
|
|
235
|
-
test('should
|
|
236
|
-
const
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
319
|
+
describe('QueryCacheConfig.createStore', () => {
|
|
320
|
+
test('should call createStore', async () => {
|
|
321
|
+
const createStore = jest.fn().mockImplementation(() => new Map())
|
|
322
|
+
new QueryCache({ createStore })
|
|
323
|
+
expect(createStore).toHaveBeenCalledWith()
|
|
324
|
+
})
|
|
240
325
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
const
|
|
244
|
-
const queryClone = Object.assign({}, query)
|
|
326
|
+
test('should use created store', async () => {
|
|
327
|
+
const store = new Map()
|
|
328
|
+
const spy = jest.spyOn(store, 'get')
|
|
245
329
|
|
|
246
|
-
|
|
247
|
-
queryCache.add(queryClone)
|
|
248
|
-
expect(queryCache['queries'].length).toEqual(1)
|
|
330
|
+
new QueryCache({ createStore: () => store }).get('key')
|
|
249
331
|
|
|
250
|
-
|
|
251
|
-
delete queryCache['queriesMap'][hash]
|
|
332
|
+
expect(spy).toHaveBeenCalledTimes(1)
|
|
252
333
|
})
|
|
334
|
+
})
|
|
253
335
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
const hash = `["${key}"]`
|
|
336
|
+
describe('QueryCache.add', () => {
|
|
337
|
+
test('should not try to add a query already added to the cache', async () => {
|
|
338
|
+
const key = queryKey()
|
|
258
339
|
|
|
259
|
-
|
|
340
|
+
await queryClient.prefetchQuery({ queryKey: key, queryFn: () => 'data1' })
|
|
260
341
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
const query = queryCache['queriesMap'][hash] as Query
|
|
264
|
-
const queryClone = Object.assign({}, query)
|
|
265
|
-
delete queryCache['queriesMap'][hash]
|
|
342
|
+
const query = queryCache.findAll()[0]!
|
|
343
|
+
const queryClone = Object.assign({}, query)
|
|
266
344
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
})
|
|
345
|
+
queryCache.add(queryClone)
|
|
346
|
+
expect(queryCache.getAll().length).toEqual(1)
|
|
270
347
|
})
|
|
271
348
|
})
|
|
272
349
|
})
|