@tanstack/query-core 5.0.0-alpha.5 → 5.0.0-alpha.50

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 (191) hide show
  1. package/build/lib/focusManager.d.ts +2 -1
  2. package/build/lib/focusManager.d.ts.map +1 -0
  3. package/build/lib/focusManager.js.map +1 -1
  4. package/build/lib/focusManager.mjs.map +1 -1
  5. package/build/lib/hydration.d.ts +3 -6
  6. package/build/lib/hydration.d.ts.map +1 -0
  7. package/build/lib/hydration.js +4 -18
  8. package/build/lib/hydration.js.map +1 -1
  9. package/build/lib/hydration.mjs +4 -18
  10. package/build/lib/hydration.mjs.map +1 -1
  11. package/build/lib/index.d.ts +5 -3
  12. package/build/lib/index.d.ts.map +1 -0
  13. package/build/lib/infiniteQueryBehavior.d.ts +1 -0
  14. package/build/lib/infiniteQueryBehavior.d.ts.map +1 -0
  15. package/build/lib/infiniteQueryBehavior.js +1 -0
  16. package/build/lib/infiniteQueryBehavior.js.map +1 -1
  17. package/build/lib/infiniteQueryBehavior.mjs +1 -0
  18. package/build/lib/infiniteQueryBehavior.mjs.map +1 -1
  19. package/build/lib/infiniteQueryObserver.d.ts +2 -1
  20. package/build/lib/infiniteQueryObserver.d.ts.map +1 -0
  21. package/build/lib/infiniteQueryObserver.js.map +1 -1
  22. package/build/lib/infiniteQueryObserver.mjs.map +1 -1
  23. package/build/lib/mutation.d.ts +2 -1
  24. package/build/lib/mutation.d.ts.map +1 -0
  25. package/build/lib/mutation.js.map +1 -1
  26. package/build/lib/mutation.mjs.map +1 -1
  27. package/build/lib/mutationCache.d.ts +3 -2
  28. package/build/lib/mutationCache.d.ts.map +1 -0
  29. package/build/lib/mutationCache.js +5 -4
  30. package/build/lib/mutationCache.js.map +1 -1
  31. package/build/lib/mutationCache.mjs +5 -4
  32. package/build/lib/mutationCache.mjs.map +1 -1
  33. package/build/lib/mutationObserver.d.ts +2 -1
  34. package/build/lib/mutationObserver.d.ts.map +1 -0
  35. package/build/lib/mutationObserver.js +1 -1
  36. package/build/lib/mutationObserver.js.map +1 -1
  37. package/build/lib/mutationObserver.mjs +1 -1
  38. package/build/lib/mutationObserver.mjs.map +1 -1
  39. package/build/lib/notifyManager.d.ts +4 -3
  40. package/build/lib/notifyManager.d.ts.map +1 -0
  41. package/build/lib/notifyManager.js.map +1 -1
  42. package/build/lib/notifyManager.mjs.map +1 -1
  43. package/build/lib/onlineManager.d.ts +2 -1
  44. package/build/lib/onlineManager.d.ts.map +1 -0
  45. package/build/lib/onlineManager.js.map +1 -1
  46. package/build/lib/onlineManager.mjs.map +1 -1
  47. package/build/lib/queriesObserver.d.ts +14 -6
  48. package/build/lib/queriesObserver.d.ts.map +1 -0
  49. package/build/lib/queriesObserver.js +39 -16
  50. package/build/lib/queriesObserver.js.map +1 -1
  51. package/build/lib/queriesObserver.mjs +39 -16
  52. package/build/lib/queriesObserver.mjs.map +1 -1
  53. package/build/lib/query.d.ts +6 -4
  54. package/build/lib/query.d.ts.map +1 -0
  55. package/build/lib/query.js +2 -2
  56. package/build/lib/query.js.map +1 -1
  57. package/build/lib/query.mjs +2 -2
  58. package/build/lib/query.mjs.map +1 -1
  59. package/build/lib/queryCache.d.ts +3 -3
  60. package/build/lib/queryCache.d.ts.map +1 -0
  61. package/build/lib/queryCache.js +8 -5
  62. package/build/lib/queryCache.js.map +1 -1
  63. package/build/lib/queryCache.mjs +8 -5
  64. package/build/lib/queryCache.mjs.map +1 -1
  65. package/build/lib/queryClient.d.ts +2 -2
  66. package/build/lib/queryClient.d.ts.map +1 -0
  67. package/build/lib/queryClient.js +19 -13
  68. package/build/lib/queryClient.js.map +1 -1
  69. package/build/lib/queryClient.mjs +19 -13
  70. package/build/lib/queryClient.mjs.map +1 -1
  71. package/build/lib/queryObserver.d.ts +5 -7
  72. package/build/lib/queryObserver.d.ts.map +1 -0
  73. package/build/lib/queryObserver.js +15 -27
  74. package/build/lib/queryObserver.js.map +1 -1
  75. package/build/lib/queryObserver.mjs +16 -28
  76. package/build/lib/queryObserver.mjs.map +1 -1
  77. package/build/lib/removable.d.ts +1 -0
  78. package/build/lib/removable.d.ts.map +1 -0
  79. package/build/lib/removable.js.map +1 -1
  80. package/build/lib/removable.mjs.map +1 -1
  81. package/build/lib/retryer.d.ts +5 -4
  82. package/build/lib/retryer.d.ts.map +1 -0
  83. package/build/lib/retryer.js +2 -0
  84. package/build/lib/retryer.js.map +1 -1
  85. package/build/lib/retryer.mjs +2 -0
  86. package/build/lib/retryer.mjs.map +1 -1
  87. package/build/lib/subscribable.d.ts +3 -2
  88. package/build/lib/subscribable.d.ts.map +1 -0
  89. package/build/lib/subscribable.js +4 -4
  90. package/build/lib/subscribable.js.map +1 -1
  91. package/build/lib/subscribable.mjs +4 -4
  92. package/build/lib/subscribable.mjs.map +1 -1
  93. package/build/lib/tests/focusManager.test.d.ts +1 -0
  94. package/build/lib/tests/focusManager.test.d.ts.map +1 -0
  95. package/build/lib/tests/hydration.test.d.ts +1 -0
  96. package/build/lib/tests/hydration.test.d.ts.map +1 -0
  97. package/build/lib/tests/infiniteQueryBehavior.test.d.ts +1 -0
  98. package/build/lib/tests/infiniteQueryBehavior.test.d.ts.map +1 -0
  99. package/build/lib/tests/infiniteQueryObserver.test.d.ts +1 -0
  100. package/build/lib/tests/infiniteQueryObserver.test.d.ts.map +1 -0
  101. package/build/lib/tests/mutationCache.test.d.ts +1 -0
  102. package/build/lib/tests/mutationCache.test.d.ts.map +1 -0
  103. package/build/lib/tests/mutationObserver.test.d.ts +1 -0
  104. package/build/lib/tests/mutationObserver.test.d.ts.map +1 -0
  105. package/build/lib/tests/mutations.test.d.ts +1 -0
  106. package/build/lib/tests/mutations.test.d.ts.map +1 -0
  107. package/build/lib/tests/notifyManager.test.d.ts +1 -0
  108. package/build/lib/tests/notifyManager.test.d.ts.map +1 -0
  109. package/build/lib/tests/onlineManager.test.d.ts +1 -0
  110. package/build/lib/tests/onlineManager.test.d.ts.map +1 -0
  111. package/build/lib/tests/queriesObserver.test.d.ts +1 -0
  112. package/build/lib/tests/queriesObserver.test.d.ts.map +1 -0
  113. package/build/lib/tests/query.test.d.ts +1 -0
  114. package/build/lib/tests/query.test.d.ts.map +1 -0
  115. package/build/lib/tests/queryCache.test.d.ts +1 -0
  116. package/build/lib/tests/queryCache.test.d.ts.map +1 -0
  117. package/build/lib/tests/queryClient.test.d.ts +1 -0
  118. package/build/lib/tests/queryClient.test.d.ts.map +1 -0
  119. package/build/lib/tests/queryObserver.test.d.ts +1 -0
  120. package/build/lib/tests/queryObserver.test.d.ts.map +1 -0
  121. package/build/lib/tests/utils.d.ts +3 -2
  122. package/build/lib/tests/utils.d.ts.map +1 -0
  123. package/build/lib/tests/utils.test.d.ts +1 -0
  124. package/build/lib/tests/utils.test.d.ts.map +1 -0
  125. package/build/lib/types.d.ts +35 -45
  126. package/build/lib/types.d.ts.map +1 -0
  127. package/build/lib/utils.d.ts +4 -3
  128. package/build/lib/utils.d.ts.map +1 -0
  129. package/build/lib/utils.js.map +1 -1
  130. package/build/lib/utils.mjs.map +1 -1
  131. package/package.json +8 -6
  132. package/src/hydration.ts +18 -37
  133. package/src/index.ts +3 -4
  134. package/src/infiniteQueryBehavior.ts +1 -0
  135. package/src/mutationCache.ts +4 -4
  136. package/src/mutationObserver.ts +1 -1
  137. package/src/queriesObserver.ts +74 -24
  138. package/src/query.ts +7 -5
  139. package/src/queryCache.ts +5 -8
  140. package/src/queryClient.ts +20 -20
  141. package/src/queryObserver.ts +43 -51
  142. package/src/subscribable.ts +5 -5
  143. package/src/tests/hydration.test.tsx +7 -3
  144. package/src/tests/infiniteQueryBehavior.test.tsx +9 -0
  145. package/src/tests/query.test.tsx +1 -1
  146. package/src/tests/queryCache.test.tsx +1 -19
  147. package/src/tests/queryClient.test.tsx +39 -3
  148. package/src/tests/queryObserver.test.tsx +121 -0
  149. package/src/types.ts +15 -20
  150. package/build/lib/focusManager.esm.js +0 -71
  151. package/build/lib/focusManager.esm.js.map +0 -1
  152. package/build/lib/hydration.esm.js +0 -98
  153. package/build/lib/hydration.esm.js.map +0 -1
  154. package/build/lib/index.esm.js +0 -14
  155. package/build/lib/index.esm.js.map +0 -1
  156. package/build/lib/infiniteQueryBehavior.esm.js +0 -125
  157. package/build/lib/infiniteQueryBehavior.esm.js.map +0 -1
  158. package/build/lib/infiniteQueryObserver.esm.js +0 -75
  159. package/build/lib/infiniteQueryObserver.esm.js.map +0 -1
  160. package/build/lib/mutation.esm.js +0 -234
  161. package/build/lib/mutation.esm.js.map +0 -1
  162. package/build/lib/mutationCache.esm.js +0 -82
  163. package/build/lib/mutationCache.esm.js.map +0 -1
  164. package/build/lib/mutationObserver.esm.js +0 -96
  165. package/build/lib/mutationObserver.esm.js.map +0 -1
  166. package/build/lib/notifyManager.esm.js +0 -89
  167. package/build/lib/notifyManager.esm.js.map +0 -1
  168. package/build/lib/onlineManager.esm.js +0 -73
  169. package/build/lib/onlineManager.esm.js.map +0 -1
  170. package/build/lib/queriesObserver.esm.js +0 -136
  171. package/build/lib/queriesObserver.esm.js.map +0 -1
  172. package/build/lib/query.esm.js +0 -420
  173. package/build/lib/query.esm.js.map +0 -1
  174. package/build/lib/queryCache.esm.js +0 -101
  175. package/build/lib/queryCache.esm.js.map +0 -1
  176. package/build/lib/queryClient.esm.js +0 -277
  177. package/build/lib/queryClient.esm.js.map +0 -1
  178. package/build/lib/queryObserver.esm.js +0 -440
  179. package/build/lib/queryObserver.esm.js.map +0 -1
  180. package/build/lib/removable.esm.js +0 -29
  181. package/build/lib/removable.esm.js.map +0 -1
  182. package/build/lib/retryer.esm.js +0 -150
  183. package/build/lib/retryer.esm.js.map +0 -1
  184. package/build/lib/subscribable.esm.js +0 -26
  185. package/build/lib/subscribable.esm.js.map +0 -1
  186. package/build/lib/utils.esm.js +0 -227
  187. package/build/lib/utils.esm.js.map +0 -1
  188. package/build/umd/index.development.js +0 -2682
  189. package/build/umd/index.development.js.map +0 -1
  190. package/build/umd/index.production.js +0 -2
  191. package/build/umd/index.production.js.map +0 -1
@@ -1,440 +0,0 @@
1
- import { shallowEqualObjects, noop, isServer, isValidTimeout, timeUntilStale, replaceData } from './utils.esm.js';
2
- import { notifyManager } from './notifyManager.esm.js';
3
- import { focusManager } from './focusManager.esm.js';
4
- import { Subscribable } from './subscribable.esm.js';
5
- import { canFetch, isCancelledError } from './retryer.esm.js';
6
-
7
- class QueryObserver extends Subscribable {
8
- #client;
9
- #currentQuery = undefined;
10
- #currentQueryInitialState = undefined;
11
- #currentResult = undefined;
12
- #currentResultState;
13
- #currentResultOptions;
14
- #previousQueryResult;
15
- #selectError;
16
- #selectFn;
17
- #selectResult;
18
- #staleTimeoutId;
19
- #refetchIntervalId;
20
- #currentRefetchInterval;
21
- #trackedProps = new Set();
22
- constructor(client, options) {
23
- super();
24
- this.#client = client;
25
- this.options = options;
26
- this.#selectError = null;
27
- this.bindMethods();
28
- this.setOptions(options);
29
- }
30
- bindMethods() {
31
- this.refetch = this.refetch.bind(this);
32
- }
33
- onSubscribe() {
34
- if (this.listeners.length === 1) {
35
- this.#currentQuery.addObserver(this);
36
- if (shouldFetchOnMount(this.#currentQuery, this.options)) {
37
- this.#executeFetch();
38
- }
39
- this.#updateTimers();
40
- }
41
- }
42
- onUnsubscribe() {
43
- if (!this.listeners.length) {
44
- this.destroy();
45
- }
46
- }
47
- shouldFetchOnReconnect() {
48
- return shouldFetchOn(this.#currentQuery, this.options, this.options.refetchOnReconnect);
49
- }
50
- shouldFetchOnWindowFocus() {
51
- return shouldFetchOn(this.#currentQuery, this.options, this.options.refetchOnWindowFocus);
52
- }
53
- destroy() {
54
- this.listeners = [];
55
- this.#clearStaleTimeout();
56
- this.#clearRefetchInterval();
57
- this.#currentQuery.removeObserver(this);
58
- }
59
- setOptions(options, notifyOptions) {
60
- const prevOptions = this.options;
61
- const prevQuery = this.#currentQuery;
62
- this.options = this.#client.defaultQueryOptions(options);
63
- if (!shallowEqualObjects(prevOptions, this.options)) {
64
- this.#client.getQueryCache().notify({
65
- type: 'observerOptionsUpdated',
66
- query: this.#currentQuery,
67
- observer: this
68
- });
69
- }
70
- if (typeof this.options.enabled !== 'undefined' && typeof this.options.enabled !== 'boolean') {
71
- throw new Error('Expected enabled to be a boolean');
72
- }
73
-
74
- // Keep previous query key if the user does not supply one
75
- if (!this.options.queryKey) {
76
- this.options.queryKey = prevOptions.queryKey;
77
- }
78
- this.#updateQuery();
79
- const mounted = this.hasListeners();
80
-
81
- // Fetch if there are subscribers
82
- if (mounted && shouldFetchOptionally(this.#currentQuery, prevQuery, this.options, prevOptions)) {
83
- this.#executeFetch();
84
- }
85
-
86
- // Update result
87
- this.#updateResult(notifyOptions);
88
-
89
- // Update stale interval if needed
90
- if (mounted && (this.#currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || this.options.staleTime !== prevOptions.staleTime)) {
91
- this.#updateStaleTimeout();
92
- }
93
- const nextRefetchInterval = this.#computeRefetchInterval();
94
-
95
- // Update refetch interval if needed
96
- if (mounted && (this.#currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || nextRefetchInterval !== this.#currentRefetchInterval)) {
97
- this.#updateRefetchInterval(nextRefetchInterval);
98
- }
99
- }
100
- getOptimisticResult(options) {
101
- const query = this.#client.getQueryCache().build(this.#client, options);
102
- return this.createResult(query, options);
103
- }
104
- getCurrentResult() {
105
- return this.#currentResult;
106
- }
107
- trackResult(result) {
108
- const trackedResult = {};
109
- Object.keys(result).forEach(key => {
110
- Object.defineProperty(trackedResult, key, {
111
- configurable: false,
112
- enumerable: true,
113
- get: () => {
114
- this.#trackedProps.add(key);
115
- return result[key];
116
- }
117
- });
118
- });
119
- return trackedResult;
120
- }
121
- getCurrentQuery() {
122
- return this.#currentQuery;
123
- }
124
- refetch({
125
- ...options
126
- } = {}) {
127
- return this.fetch({
128
- ...options
129
- });
130
- }
131
- fetchOptimistic(options) {
132
- const defaultedOptions = this.#client.defaultQueryOptions(options);
133
- const query = this.#client.getQueryCache().build(this.#client, defaultedOptions);
134
- query.isFetchingOptimistic = true;
135
- return query.fetch().then(() => this.createResult(query, defaultedOptions));
136
- }
137
- fetch(fetchOptions) {
138
- return this.#executeFetch({
139
- ...fetchOptions,
140
- cancelRefetch: fetchOptions.cancelRefetch ?? true
141
- }).then(() => {
142
- this.#updateResult();
143
- return this.#currentResult;
144
- });
145
- }
146
- #executeFetch(fetchOptions) {
147
- // Make sure we reference the latest query as the current one might have been removed
148
- this.#updateQuery();
149
-
150
- // Fetch
151
- let promise = this.#currentQuery.fetch(this.options, fetchOptions);
152
- if (!fetchOptions?.throwOnError) {
153
- promise = promise.catch(noop);
154
- }
155
- return promise;
156
- }
157
- #updateStaleTimeout() {
158
- this.#clearStaleTimeout();
159
- if (isServer || this.#currentResult.isStale || !isValidTimeout(this.options.staleTime)) {
160
- return;
161
- }
162
- const time = timeUntilStale(this.#currentResult.dataUpdatedAt, this.options.staleTime);
163
-
164
- // The timeout is sometimes triggered 1 ms before the stale time expiration.
165
- // To mitigate this issue we always add 1 ms to the timeout.
166
- const timeout = time + 1;
167
- this.#staleTimeoutId = setTimeout(() => {
168
- if (!this.#currentResult.isStale) {
169
- this.#updateResult();
170
- }
171
- }, timeout);
172
- }
173
- #computeRefetchInterval() {
174
- return typeof this.options.refetchInterval === 'function' ? this.options.refetchInterval(this.#currentResult.data, this.#currentQuery) : this.options.refetchInterval ?? false;
175
- }
176
- #updateRefetchInterval(nextInterval) {
177
- this.#clearRefetchInterval();
178
- this.#currentRefetchInterval = nextInterval;
179
- if (isServer || this.options.enabled === false || !isValidTimeout(this.#currentRefetchInterval) || this.#currentRefetchInterval === 0) {
180
- return;
181
- }
182
- this.#refetchIntervalId = setInterval(() => {
183
- if (this.options.refetchIntervalInBackground || focusManager.isFocused()) {
184
- this.#executeFetch();
185
- }
186
- }, this.#currentRefetchInterval);
187
- }
188
- #updateTimers() {
189
- this.#updateStaleTimeout();
190
- this.#updateRefetchInterval(this.#computeRefetchInterval());
191
- }
192
- #clearStaleTimeout() {
193
- if (this.#staleTimeoutId) {
194
- clearTimeout(this.#staleTimeoutId);
195
- this.#staleTimeoutId = undefined;
196
- }
197
- }
198
- #clearRefetchInterval() {
199
- if (this.#refetchIntervalId) {
200
- clearInterval(this.#refetchIntervalId);
201
- this.#refetchIntervalId = undefined;
202
- }
203
- }
204
- createResult(query, options) {
205
- const prevQuery = this.#currentQuery;
206
- const prevOptions = this.options;
207
- const prevResult = this.#currentResult;
208
- const prevResultState = this.#currentResultState;
209
- const prevResultOptions = this.#currentResultOptions;
210
- const queryChange = query !== prevQuery;
211
- const queryInitialState = queryChange ? query.state : this.#currentQueryInitialState;
212
- const prevQueryResult = queryChange ? this.#currentResult : this.#previousQueryResult;
213
- const {
214
- state
215
- } = query;
216
- let {
217
- error,
218
- errorUpdatedAt,
219
- fetchStatus,
220
- status
221
- } = state;
222
- let isPlaceholderData = false;
223
- let data;
224
-
225
- // Optimistically set result in fetching state if needed
226
- if (options._optimisticResults) {
227
- const mounted = this.hasListeners();
228
- const fetchOnMount = !mounted && shouldFetchOnMount(query, options);
229
- const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);
230
- if (fetchOnMount || fetchOptionally) {
231
- fetchStatus = canFetch(query.options.networkMode) ? 'fetching' : 'paused';
232
- if (!state.dataUpdatedAt) {
233
- status = 'pending';
234
- }
235
- }
236
- if (options._optimisticResults === 'isRestoring') {
237
- fetchStatus = 'idle';
238
- }
239
- }
240
-
241
- // Select data if needed
242
- if (options.select && typeof state.data !== 'undefined') {
243
- // Memoize select result
244
- if (prevResult && state.data === prevResultState?.data && options.select === this.#selectFn) {
245
- data = this.#selectResult;
246
- } else {
247
- try {
248
- this.#selectFn = options.select;
249
- data = options.select(state.data);
250
- data = replaceData(prevResult?.data, data, options);
251
- this.#selectResult = data;
252
- this.#selectError = null;
253
- } catch (selectError) {
254
- this.#selectError = selectError;
255
- }
256
- }
257
- }
258
- // Use query data
259
- else {
260
- data = state.data;
261
- }
262
-
263
- // Show placeholder data if needed
264
- if (typeof options.placeholderData !== 'undefined' && typeof data === 'undefined' && status === 'pending') {
265
- let placeholderData;
266
-
267
- // Memoize placeholder data
268
- if (prevResult?.isPlaceholderData && options.placeholderData === prevResultOptions?.placeholderData) {
269
- placeholderData = prevResult.data;
270
- } else {
271
- placeholderData = typeof options.placeholderData === 'function' ? options.placeholderData(prevQueryResult?.data) : options.placeholderData;
272
- if (options.select && typeof placeholderData !== 'undefined') {
273
- try {
274
- placeholderData = options.select(placeholderData);
275
- this.#selectError = null;
276
- } catch (selectError) {
277
- this.#selectError = selectError;
278
- }
279
- }
280
- }
281
- if (typeof placeholderData !== 'undefined') {
282
- status = 'success';
283
- data = replaceData(prevResult?.data, placeholderData, options);
284
- isPlaceholderData = true;
285
- }
286
- }
287
- if (this.#selectError) {
288
- error = this.#selectError;
289
- data = this.#selectResult;
290
- errorUpdatedAt = Date.now();
291
- status = 'error';
292
- }
293
- const isFetching = fetchStatus === 'fetching';
294
- const isPending = status === 'pending';
295
- const isError = status === 'error';
296
- const isLoading = isPending && isFetching;
297
- const result = {
298
- status,
299
- fetchStatus,
300
- isPending,
301
- isSuccess: status === 'success',
302
- isError,
303
- isInitialLoading: isLoading,
304
- isLoading,
305
- data,
306
- dataUpdatedAt: state.dataUpdatedAt,
307
- error,
308
- errorUpdatedAt,
309
- failureCount: state.fetchFailureCount,
310
- failureReason: state.fetchFailureReason,
311
- errorUpdateCount: state.errorUpdateCount,
312
- isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0,
313
- isFetchedAfterMount: state.dataUpdateCount > queryInitialState.dataUpdateCount || state.errorUpdateCount > queryInitialState.errorUpdateCount,
314
- isFetching,
315
- isRefetching: isFetching && !isPending,
316
- isLoadingError: isError && state.dataUpdatedAt === 0,
317
- isPaused: fetchStatus === 'paused',
318
- isPlaceholderData,
319
- isRefetchError: isError && state.dataUpdatedAt !== 0,
320
- isStale: isStale(query, options),
321
- refetch: this.refetch
322
- };
323
- return result;
324
- }
325
- #updateResult(notifyOptions) {
326
- const prevResult = this.#currentResult;
327
- const nextResult = this.createResult(this.#currentQuery, this.options);
328
- this.#currentResultState = this.#currentQuery.state;
329
- this.#currentResultOptions = this.options;
330
-
331
- // Only notify and update result if something has changed
332
- if (shallowEqualObjects(nextResult, prevResult)) {
333
- return;
334
- }
335
- this.#currentResult = nextResult;
336
-
337
- // Determine which callbacks to trigger
338
- const defaultNotifyOptions = {};
339
- const shouldNotifyListeners = () => {
340
- if (!prevResult) {
341
- return true;
342
- }
343
- const {
344
- notifyOnChangeProps
345
- } = this.options;
346
- if (notifyOnChangeProps === 'all' || !notifyOnChangeProps && !this.#trackedProps.size) {
347
- return true;
348
- }
349
- const includedProps = new Set(notifyOnChangeProps ?? this.#trackedProps);
350
- if (this.options.throwErrors) {
351
- includedProps.add('error');
352
- }
353
- return Object.keys(this.#currentResult).some(key => {
354
- const typedKey = key;
355
- const changed = this.#currentResult[typedKey] !== prevResult[typedKey];
356
- return changed && includedProps.has(typedKey);
357
- });
358
- };
359
- if (notifyOptions?.listeners !== false && shouldNotifyListeners()) {
360
- defaultNotifyOptions.listeners = true;
361
- }
362
- this.#notify({
363
- ...defaultNotifyOptions,
364
- ...notifyOptions
365
- });
366
- }
367
- #updateQuery() {
368
- const query = this.#client.getQueryCache().build(this.#client, this.options);
369
- if (query === this.#currentQuery) {
370
- return;
371
- }
372
- const prevQuery = this.#currentQuery;
373
- this.#currentQuery = query;
374
- this.#currentQueryInitialState = query.state;
375
- this.#previousQueryResult = this.#currentResult;
376
- if (this.hasListeners()) {
377
- prevQuery?.removeObserver(this);
378
- query.addObserver(this);
379
- }
380
- }
381
- onQueryUpdate(action) {
382
- const notifyOptions = {};
383
- if (action.type === 'success') {
384
- notifyOptions.onSuccess = !action.manual;
385
- } else if (action.type === 'error' && !isCancelledError(action.error)) {
386
- notifyOptions.onError = true;
387
- }
388
- this.#updateResult(notifyOptions);
389
- if (this.hasListeners()) {
390
- this.#updateTimers();
391
- }
392
- }
393
- #notify(notifyOptions) {
394
- notifyManager.batch(() => {
395
- // First trigger the configuration callbacks
396
- if (notifyOptions.onSuccess) {
397
- this.options.onSuccess?.(this.#currentResult.data);
398
- this.options.onSettled?.(this.#currentResult.data, null);
399
- } else if (notifyOptions.onError) {
400
- this.options.onError?.(this.#currentResult.error);
401
- this.options.onSettled?.(undefined, this.#currentResult.error);
402
- }
403
-
404
- // Then trigger the listeners
405
- if (notifyOptions.listeners) {
406
- this.listeners.forEach(listener => {
407
- listener(this.#currentResult);
408
- });
409
- }
410
-
411
- // Then the cache listeners
412
- this.#client.getQueryCache().notify({
413
- query: this.#currentQuery,
414
- type: 'observerResultsUpdated'
415
- });
416
- });
417
- }
418
- }
419
- function shouldLoadOnMount(query, options) {
420
- return options.enabled !== false && !query.state.dataUpdatedAt && !(query.state.status === 'error' && options.retryOnMount === false);
421
- }
422
- function shouldFetchOnMount(query, options) {
423
- return shouldLoadOnMount(query, options) || query.state.dataUpdatedAt > 0 && shouldFetchOn(query, options, options.refetchOnMount);
424
- }
425
- function shouldFetchOn(query, options, field) {
426
- if (options.enabled !== false) {
427
- const value = typeof field === 'function' ? field(query) : field;
428
- return value === 'always' || value !== false && isStale(query, options);
429
- }
430
- return false;
431
- }
432
- function shouldFetchOptionally(query, prevQuery, options, prevOptions) {
433
- return options.enabled !== false && (query !== prevQuery || prevOptions.enabled === false) && (!options.suspense || query.state.status !== 'error') && isStale(query, options);
434
- }
435
- function isStale(query, options) {
436
- return query.isStaleByTime(options.staleTime);
437
- }
438
-
439
- export { QueryObserver };
440
- //# sourceMappingURL=queryObserver.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queryObserver.esm.js","sources":["../../src/queryObserver.ts"],"sourcesContent":["import type { DefaultedQueryObserverOptions, DefaultError } from './types'\nimport {\n isServer,\n isValidTimeout,\n noop,\n replaceData,\n shallowEqualObjects,\n timeUntilStale,\n} from './utils'\nimport { notifyManager } from './notifyManager'\nimport type {\n PlaceholderDataFunction,\n QueryKey,\n QueryObserverBaseResult,\n QueryObserverOptions,\n QueryObserverResult,\n QueryOptions,\n RefetchOptions,\n} from './types'\nimport type { Query, QueryState, Action, FetchOptions } from './query'\nimport type { QueryClient } from './queryClient'\nimport { focusManager } from './focusManager'\nimport { Subscribable } from './subscribable'\nimport { canFetch, isCancelledError } from './retryer'\n\ntype QueryObserverListener<TData, TError> = (\n result: QueryObserverResult<TData, TError>,\n) => void\n\nexport interface NotifyOptions {\n listeners?: boolean\n onError?: boolean\n onSuccess?: boolean\n}\n\nexport interface ObserverFetchOptions extends FetchOptions {\n throwOnError?: boolean\n}\n\nexport class QueryObserver<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends Subscribable<QueryObserverListener<TData, TError>> {\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n\n #client: QueryClient\n #currentQuery: Query<TQueryFnData, TError, TQueryData, TQueryKey> = undefined!\n #currentQueryInitialState: QueryState<TQueryData, TError> = undefined!\n #currentResult: QueryObserverResult<TData, TError> = undefined!\n #currentResultState?: QueryState<TQueryData, TError>\n #currentResultOptions?: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n #previousQueryResult?: QueryObserverResult<TData, TError>\n #selectError: TError | null\n #selectFn?: (data: TQueryData) => TData\n #selectResult?: TData\n #staleTimeoutId?: ReturnType<typeof setTimeout>\n #refetchIntervalId?: ReturnType<typeof setInterval>\n #currentRefetchInterval?: number | false\n #trackedProps: Set<keyof QueryObserverResult> = new Set()\n\n constructor(\n client: QueryClient,\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ) {\n super()\n\n this.#client = client\n this.options = options\n this.#selectError = null\n this.bindMethods()\n this.setOptions(options)\n }\n\n protected bindMethods(): void {\n this.refetch = this.refetch.bind(this)\n }\n\n protected onSubscribe(): void {\n if (this.listeners.length === 1) {\n this.#currentQuery.addObserver(this)\n\n if (shouldFetchOnMount(this.#currentQuery, this.options)) {\n this.#executeFetch()\n }\n\n this.#updateTimers()\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.length) {\n this.destroy()\n }\n }\n\n shouldFetchOnReconnect(): boolean {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnReconnect,\n )\n }\n\n shouldFetchOnWindowFocus(): boolean {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnWindowFocus,\n )\n }\n\n destroy(): void {\n this.listeners = []\n this.#clearStaleTimeout()\n this.#clearRefetchInterval()\n this.#currentQuery.removeObserver(this)\n }\n\n setOptions(\n options?: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n notifyOptions?: NotifyOptions,\n ): void {\n const prevOptions = this.options\n const prevQuery = this.#currentQuery\n\n this.options = this.#client.defaultQueryOptions(options)\n\n if (!shallowEqualObjects(prevOptions, this.options)) {\n this.#client.getQueryCache().notify({\n type: 'observerOptionsUpdated',\n query: this.#currentQuery,\n observer: this,\n })\n }\n\n if (\n typeof this.options.enabled !== 'undefined' &&\n typeof this.options.enabled !== 'boolean'\n ) {\n throw new Error('Expected enabled to be a boolean')\n }\n\n // Keep previous query key if the user does not supply one\n if (!this.options.queryKey) {\n this.options.queryKey = prevOptions.queryKey\n }\n\n this.#updateQuery()\n\n const mounted = this.hasListeners()\n\n // Fetch if there are subscribers\n if (\n mounted &&\n shouldFetchOptionally(\n this.#currentQuery,\n prevQuery,\n this.options,\n prevOptions,\n )\n ) {\n this.#executeFetch()\n }\n\n // Update result\n this.#updateResult(notifyOptions)\n\n // Update stale interval if needed\n if (\n mounted &&\n (this.#currentQuery !== prevQuery ||\n this.options.enabled !== prevOptions.enabled ||\n this.options.staleTime !== prevOptions.staleTime)\n ) {\n this.#updateStaleTimeout()\n }\n\n const nextRefetchInterval = this.#computeRefetchInterval()\n\n // Update refetch interval if needed\n if (\n mounted &&\n (this.#currentQuery !== prevQuery ||\n this.options.enabled !== prevOptions.enabled ||\n nextRefetchInterval !== this.#currentRefetchInterval)\n ) {\n this.#updateRefetchInterval(nextRefetchInterval)\n }\n }\n\n getOptimisticResult(\n options: DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): QueryObserverResult<TData, TError> {\n const query = this.#client.getQueryCache().build(this.#client, options)\n\n return this.createResult(query, options)\n }\n\n getCurrentResult(): QueryObserverResult<TData, TError> {\n return this.#currentResult\n }\n\n trackResult(\n result: QueryObserverResult<TData, TError>,\n ): QueryObserverResult<TData, TError> {\n const trackedResult = {} as QueryObserverResult<TData, TError>\n\n Object.keys(result).forEach((key) => {\n Object.defineProperty(trackedResult, key, {\n configurable: false,\n enumerable: true,\n get: () => {\n this.#trackedProps.add(key as keyof QueryObserverResult)\n return result[key as keyof QueryObserverResult]\n },\n })\n })\n\n return trackedResult\n }\n\n getCurrentQuery(): Query<TQueryFnData, TError, TQueryData, TQueryKey> {\n return this.#currentQuery\n }\n\n refetch({ ...options }: RefetchOptions = {}): Promise<\n QueryObserverResult<TData, TError>\n > {\n return this.fetch({\n ...options,\n })\n }\n\n fetchOptimistic(\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): Promise<QueryObserverResult<TData, TError>> {\n const defaultedOptions = this.#client.defaultQueryOptions(options)\n\n const query = this.#client\n .getQueryCache()\n .build(this.#client, defaultedOptions)\n query.isFetchingOptimistic = true\n\n return query.fetch().then(() => this.createResult(query, defaultedOptions))\n }\n\n protected fetch(\n fetchOptions: ObserverFetchOptions,\n ): Promise<QueryObserverResult<TData, TError>> {\n return this.#executeFetch({\n ...fetchOptions,\n cancelRefetch: fetchOptions.cancelRefetch ?? true,\n }).then(() => {\n this.#updateResult()\n return this.#currentResult\n })\n }\n\n #executeFetch(\n fetchOptions?: ObserverFetchOptions,\n ): Promise<TQueryData | undefined> {\n // Make sure we reference the latest query as the current one might have been removed\n this.#updateQuery()\n\n // Fetch\n let promise: Promise<TQueryData | undefined> = this.#currentQuery.fetch(\n this.options as QueryOptions<TQueryFnData, TError, TQueryData, TQueryKey>,\n fetchOptions,\n )\n\n if (!fetchOptions?.throwOnError) {\n promise = promise.catch(noop)\n }\n\n return promise\n }\n\n #updateStaleTimeout(): void {\n this.#clearStaleTimeout()\n\n if (\n isServer ||\n this.#currentResult.isStale ||\n !isValidTimeout(this.options.staleTime)\n ) {\n return\n }\n\n const time = timeUntilStale(\n this.#currentResult.dataUpdatedAt,\n this.options.staleTime,\n )\n\n // The timeout is sometimes triggered 1 ms before the stale time expiration.\n // To mitigate this issue we always add 1 ms to the timeout.\n const timeout = time + 1\n\n this.#staleTimeoutId = setTimeout(() => {\n if (!this.#currentResult.isStale) {\n this.#updateResult()\n }\n }, timeout)\n }\n\n #computeRefetchInterval() {\n return typeof this.options.refetchInterval === 'function'\n ? this.options.refetchInterval(\n this.#currentResult.data,\n this.#currentQuery,\n )\n : this.options.refetchInterval ?? false\n }\n\n #updateRefetchInterval(nextInterval: number | false): void {\n this.#clearRefetchInterval()\n\n this.#currentRefetchInterval = nextInterval\n\n if (\n isServer ||\n this.options.enabled === false ||\n !isValidTimeout(this.#currentRefetchInterval) ||\n this.#currentRefetchInterval === 0\n ) {\n return\n }\n\n this.#refetchIntervalId = setInterval(() => {\n if (\n this.options.refetchIntervalInBackground ||\n focusManager.isFocused()\n ) {\n this.#executeFetch()\n }\n }, this.#currentRefetchInterval)\n }\n\n #updateTimers(): void {\n this.#updateStaleTimeout()\n this.#updateRefetchInterval(this.#computeRefetchInterval())\n }\n\n #clearStaleTimeout(): void {\n if (this.#staleTimeoutId) {\n clearTimeout(this.#staleTimeoutId)\n this.#staleTimeoutId = undefined\n }\n }\n\n #clearRefetchInterval(): void {\n if (this.#refetchIntervalId) {\n clearInterval(this.#refetchIntervalId)\n this.#refetchIntervalId = undefined\n }\n }\n\n protected createResult(\n query: Query<TQueryFnData, TError, TQueryData, TQueryKey>,\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): QueryObserverResult<TData, TError> {\n const prevQuery = this.#currentQuery\n const prevOptions = this.options\n const prevResult = this.#currentResult as\n | QueryObserverResult<TData, TError>\n | undefined\n const prevResultState = this.#currentResultState\n const prevResultOptions = this.#currentResultOptions\n const queryChange = query !== prevQuery\n const queryInitialState = queryChange\n ? query.state\n : this.#currentQueryInitialState\n const prevQueryResult = queryChange\n ? this.#currentResult\n : this.#previousQueryResult\n\n const { state } = query\n let { error, errorUpdatedAt, fetchStatus, status } = state\n let isPlaceholderData = false\n let data: TData | undefined\n\n // Optimistically set result in fetching state if needed\n if (options._optimisticResults) {\n const mounted = this.hasListeners()\n\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options)\n\n const fetchOptionally =\n mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions)\n\n if (fetchOnMount || fetchOptionally) {\n fetchStatus = canFetch(query.options.networkMode)\n ? 'fetching'\n : 'paused'\n if (!state.dataUpdatedAt) {\n status = 'pending'\n }\n }\n if (options._optimisticResults === 'isRestoring') {\n fetchStatus = 'idle'\n }\n }\n\n // Select data if needed\n if (options.select && typeof state.data !== 'undefined') {\n // Memoize select result\n if (\n prevResult &&\n state.data === prevResultState?.data &&\n options.select === this.#selectFn\n ) {\n data = this.#selectResult\n } else {\n try {\n this.#selectFn = options.select\n data = options.select(state.data)\n data = replaceData(prevResult?.data, data, options)\n this.#selectResult = data\n this.#selectError = null\n } catch (selectError) {\n this.#selectError = selectError as TError\n }\n }\n }\n // Use query data\n else {\n data = state.data as unknown as TData\n }\n\n // Show placeholder data if needed\n if (\n typeof options.placeholderData !== 'undefined' &&\n typeof data === 'undefined' &&\n status === 'pending'\n ) {\n let placeholderData\n\n // Memoize placeholder data\n if (\n prevResult?.isPlaceholderData &&\n options.placeholderData === prevResultOptions?.placeholderData\n ) {\n placeholderData = prevResult.data\n } else {\n placeholderData =\n typeof options.placeholderData === 'function'\n ? (\n options.placeholderData as unknown as PlaceholderDataFunction<TQueryData>\n )(prevQueryResult?.data as TQueryData | undefined)\n : options.placeholderData\n if (options.select && typeof placeholderData !== 'undefined') {\n try {\n placeholderData = options.select(placeholderData)\n this.#selectError = null\n } catch (selectError) {\n this.#selectError = selectError as TError\n }\n }\n }\n\n if (typeof placeholderData !== 'undefined') {\n status = 'success'\n data = replaceData(prevResult?.data, placeholderData, options) as TData\n isPlaceholderData = true\n }\n }\n\n if (this.#selectError) {\n error = this.#selectError as any\n data = this.#selectResult\n errorUpdatedAt = Date.now()\n status = 'error'\n }\n\n const isFetching = fetchStatus === 'fetching'\n const isPending = status === 'pending'\n const isError = status === 'error'\n\n const isLoading = isPending && isFetching\n\n const result: QueryObserverBaseResult<TData, TError> = {\n status,\n fetchStatus,\n isPending,\n isSuccess: status === 'success',\n isError,\n isInitialLoading: isLoading,\n isLoading,\n data,\n dataUpdatedAt: state.dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: state.fetchFailureCount,\n failureReason: state.fetchFailureReason,\n errorUpdateCount: state.errorUpdateCount,\n isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0,\n isFetchedAfterMount:\n state.dataUpdateCount > queryInitialState.dataUpdateCount ||\n state.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isPending,\n isLoadingError: isError && state.dataUpdatedAt === 0,\n isPaused: fetchStatus === 'paused',\n isPlaceholderData,\n isRefetchError: isError && state.dataUpdatedAt !== 0,\n isStale: isStale(query, options),\n refetch: this.refetch,\n }\n\n return result as QueryObserverResult<TData, TError>\n }\n\n #updateResult(notifyOptions?: NotifyOptions): void {\n const prevResult = this.#currentResult as\n | QueryObserverResult<TData, TError>\n | undefined\n\n const nextResult = this.createResult(this.#currentQuery, this.options)\n this.#currentResultState = this.#currentQuery.state\n this.#currentResultOptions = this.options\n\n // Only notify and update result if something has changed\n if (shallowEqualObjects(nextResult, prevResult)) {\n return\n }\n\n this.#currentResult = nextResult\n\n // Determine which callbacks to trigger\n const defaultNotifyOptions: NotifyOptions = {}\n\n const shouldNotifyListeners = (): boolean => {\n if (!prevResult) {\n return true\n }\n\n const { notifyOnChangeProps } = this.options\n\n if (\n notifyOnChangeProps === 'all' ||\n (!notifyOnChangeProps && !this.#trackedProps.size)\n ) {\n return true\n }\n\n const includedProps = new Set(notifyOnChangeProps ?? this.#trackedProps)\n\n if (this.options.throwErrors) {\n includedProps.add('error')\n }\n\n return Object.keys(this.#currentResult).some((key) => {\n const typedKey = key as keyof QueryObserverResult\n const changed = this.#currentResult[typedKey] !== prevResult[typedKey]\n return changed && includedProps.has(typedKey)\n })\n }\n\n if (notifyOptions?.listeners !== false && shouldNotifyListeners()) {\n defaultNotifyOptions.listeners = true\n }\n\n this.#notify({ ...defaultNotifyOptions, ...notifyOptions })\n }\n\n #updateQuery(): void {\n const query = this.#client.getQueryCache().build(this.#client, this.options)\n\n if (query === this.#currentQuery) {\n return\n }\n\n const prevQuery = this.#currentQuery as\n | Query<TQueryFnData, TError, TQueryData, TQueryKey>\n | undefined\n this.#currentQuery = query\n this.#currentQueryInitialState = query.state\n this.#previousQueryResult = this.#currentResult\n\n if (this.hasListeners()) {\n prevQuery?.removeObserver(this)\n query.addObserver(this)\n }\n }\n\n onQueryUpdate(action: Action<TData, TError>): void {\n const notifyOptions: NotifyOptions = {}\n\n if (action.type === 'success') {\n notifyOptions.onSuccess = !action.manual\n } else if (action.type === 'error' && !isCancelledError(action.error)) {\n notifyOptions.onError = true\n }\n\n this.#updateResult(notifyOptions)\n\n if (this.hasListeners()) {\n this.#updateTimers()\n }\n }\n\n #notify(notifyOptions: NotifyOptions): void {\n notifyManager.batch(() => {\n // First trigger the configuration callbacks\n if (notifyOptions.onSuccess) {\n this.options.onSuccess?.(this.#currentResult.data!)\n this.options.onSettled?.(this.#currentResult.data, null)\n } else if (notifyOptions.onError) {\n this.options.onError?.(this.#currentResult.error!)\n this.options.onSettled?.(undefined, this.#currentResult.error)\n }\n\n // Then trigger the listeners\n if (notifyOptions.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.#currentResult)\n })\n }\n\n // Then the cache listeners\n this.#client.getQueryCache().notify({\n query: this.#currentQuery,\n type: 'observerResultsUpdated',\n })\n })\n }\n}\n\nfunction shouldLoadOnMount(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any>,\n): boolean {\n return (\n options.enabled !== false &&\n !query.state.dataUpdatedAt &&\n !(query.state.status === 'error' && options.retryOnMount === false)\n )\n}\n\nfunction shouldFetchOnMount(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n): boolean {\n return (\n shouldLoadOnMount(query, options) ||\n (query.state.dataUpdatedAt > 0 &&\n shouldFetchOn(query, options, options.refetchOnMount))\n )\n}\n\nfunction shouldFetchOn(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n field: (typeof options)['refetchOnMount'] &\n (typeof options)['refetchOnWindowFocus'] &\n (typeof options)['refetchOnReconnect'],\n) {\n if (options.enabled !== false) {\n const value = typeof field === 'function' ? field(query) : field\n\n return value === 'always' || (value !== false && isStale(query, options))\n }\n return false\n}\n\nfunction shouldFetchOptionally(\n query: Query<any, any, any, any>,\n prevQuery: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n prevOptions: QueryObserverOptions<any, any, any, any, any>,\n): boolean {\n return (\n options.enabled !== false &&\n (query !== prevQuery || prevOptions.enabled === false) &&\n (!options.suspense || query.state.status !== 'error') &&\n isStale(query, options)\n )\n}\n\nfunction isStale(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n): boolean {\n return query.isStaleByTime(options.staleTime)\n}\n"],"names":["QueryObserver","Subscribable","undefined","Set","constructor","client","options","bindMethods","setOptions","refetch","bind","onSubscribe","listeners","length","addObserver","shouldFetchOnMount","onUnsubscribe","destroy","shouldFetchOnReconnect","shouldFetchOn","refetchOnReconnect","shouldFetchOnWindowFocus","refetchOnWindowFocus","removeObserver","notifyOptions","prevOptions","prevQuery","defaultQueryOptions","shallowEqualObjects","getQueryCache","notify","type","query","observer","enabled","Error","queryKey","mounted","hasListeners","shouldFetchOptionally","staleTime","nextRefetchInterval","getOptimisticResult","build","createResult","getCurrentResult","trackResult","result","trackedResult","Object","keys","forEach","key","defineProperty","configurable","enumerable","get","add","getCurrentQuery","fetch","fetchOptimistic","defaultedOptions","isFetchingOptimistic","then","fetchOptions","cancelRefetch","promise","throwOnError","catch","noop","isServer","isStale","isValidTimeout","time","timeUntilStale","dataUpdatedAt","timeout","setTimeout","refetchInterval","data","nextInterval","setInterval","refetchIntervalInBackground","focusManager","isFocused","clearTimeout","clearInterval","prevResult","prevResultState","prevResultOptions","queryChange","queryInitialState","state","prevQueryResult","error","errorUpdatedAt","fetchStatus","status","isPlaceholderData","_optimisticResults","fetchOnMount","fetchOptionally","canFetch","networkMode","select","replaceData","selectError","placeholderData","Date","now","isFetching","isPending","isError","isLoading","isSuccess","isInitialLoading","failureCount","fetchFailureCount","failureReason","fetchFailureReason","errorUpdateCount","isFetched","dataUpdateCount","isFetchedAfterMount","isRefetching","isLoadingError","isPaused","isRefetchError","nextResult","defaultNotifyOptions","shouldNotifyListeners","notifyOnChangeProps","size","includedProps","throwErrors","some","typedKey","changed","has","onQueryUpdate","action","onSuccess","manual","isCancelledError","onError","notifyManager","batch","onSettled","listener","shouldLoadOnMount","retryOnMount","refetchOnMount","field","value","suspense","isStaleByTime"],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- import { isValidTimeout, isServer } from './utils.esm.js';
2
-
3
- class Removable {
4
- #gcTimeout;
5
- destroy() {
6
- this.clearGcTimeout();
7
- }
8
- scheduleGc() {
9
- this.clearGcTimeout();
10
- if (isValidTimeout(this.gcTime)) {
11
- this.#gcTimeout = setTimeout(() => {
12
- this.optionalRemove();
13
- }, this.gcTime);
14
- }
15
- }
16
- updateGcTime(newGcTime) {
17
- // Default to 5 minutes (Infinity for server-side) if no gcTime is set
18
- this.gcTime = Math.max(this.gcTime || 0, newGcTime ?? (isServer ? Infinity : 5 * 60 * 1000));
19
- }
20
- clearGcTimeout() {
21
- if (this.#gcTimeout) {
22
- clearTimeout(this.#gcTimeout);
23
- this.#gcTimeout = undefined;
24
- }
25
- }
26
- }
27
-
28
- export { Removable };
29
- //# sourceMappingURL=removable.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"removable.esm.js","sources":["../../src/removable.ts"],"sourcesContent":["import { isServer, isValidTimeout } from './utils'\n\nexport abstract class Removable {\n gcTime!: number\n #gcTimeout?: ReturnType<typeof setTimeout>\n\n destroy(): void {\n this.clearGcTimeout()\n }\n\n protected scheduleGc(): void {\n this.clearGcTimeout()\n\n if (isValidTimeout(this.gcTime)) {\n this.#gcTimeout = setTimeout(() => {\n this.optionalRemove()\n }, this.gcTime)\n }\n }\n\n protected updateGcTime(newGcTime: number | undefined): void {\n // Default to 5 minutes (Infinity for server-side) if no gcTime is set\n this.gcTime = Math.max(\n this.gcTime || 0,\n newGcTime ?? (isServer ? Infinity : 5 * 60 * 1000),\n )\n }\n\n protected clearGcTimeout() {\n if (this.#gcTimeout) {\n clearTimeout(this.#gcTimeout)\n this.#gcTimeout = undefined\n }\n }\n\n protected abstract optionalRemove(): void\n}\n"],"names":["Removable","destroy","clearGcTimeout","scheduleGc","isValidTimeout","gcTime","setTimeout","optionalRemove","updateGcTime","newGcTime","Math","max","isServer","Infinity","clearTimeout","undefined"],"mappings":";;AAEO,MAAeA,SAAS,CAAC;AAE9B,EAAA,UAAU,CAAA;AAEVC,EAAAA,OAAO,GAAS;IACd,IAAI,CAACC,cAAc,EAAE,CAAA;AACvB,GAAA;AAEUC,EAAAA,UAAU,GAAS;IAC3B,IAAI,CAACD,cAAc,EAAE,CAAA;AAErB,IAAA,IAAIE,cAAc,CAAC,IAAI,CAACC,MAAM,CAAC,EAAE;AAC/B,MAAA,IAAI,CAAC,UAAU,GAAGC,UAAU,CAAC,MAAM;QACjC,IAAI,CAACC,cAAc,EAAE,CAAA;AACvB,OAAC,EAAE,IAAI,CAACF,MAAM,CAAC,CAAA;AACjB,KAAA;AACF,GAAA;EAEUG,YAAY,CAACC,SAA6B,EAAQ;AAC1D;IACA,IAAI,CAACJ,MAAM,GAAGK,IAAI,CAACC,GAAG,CACpB,IAAI,CAACN,MAAM,IAAI,CAAC,EAChBI,SAAS,KAAKG,QAAQ,GAAGC,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CACnD,CAAA;AACH,GAAA;AAEUX,EAAAA,cAAc,GAAG;AACzB,IAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnBY,MAAAA,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AAC7B,MAAA,IAAI,CAAC,UAAU,GAAGC,SAAS,CAAA;AAC7B,KAAA;AACF,GAAA;AAGF;;;;"}