@tanstack/query-core 5.91.0 → 5.94.4

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 (298) hide show
  1. package/package.json +1 -1
  2. package/src/query.ts +17 -6
  3. package/src/queryObserver.ts +1 -1
  4. package/src/streamedQuery.ts +2 -4
  5. package/build/legacy/_tsup-dts-rollup.d.cts +0 -2227
  6. package/build/legacy/_tsup-dts-rollup.d.ts +0 -2227
  7. package/build/legacy/chunk-PXG64RU4.js +0 -25
  8. package/build/legacy/chunk-PXG64RU4.js.map +0 -1
  9. package/build/legacy/environmentManager.cjs +0 -48
  10. package/build/legacy/environmentManager.cjs.map +0 -1
  11. package/build/legacy/environmentManager.d.cts +0 -2
  12. package/build/legacy/environmentManager.d.ts +0 -2
  13. package/build/legacy/environmentManager.js +0 -25
  14. package/build/legacy/environmentManager.js.map +0 -1
  15. package/build/legacy/focusManager.cjs +0 -107
  16. package/build/legacy/focusManager.cjs.map +0 -1
  17. package/build/legacy/focusManager.d.cts +0 -2
  18. package/build/legacy/focusManager.d.ts +0 -2
  19. package/build/legacy/focusManager.js +0 -80
  20. package/build/legacy/focusManager.js.map +0 -1
  21. package/build/legacy/hydration.cjs +0 -178
  22. package/build/legacy/hydration.cjs.map +0 -1
  23. package/build/legacy/hydration.d.cts +0 -7
  24. package/build/legacy/hydration.d.ts +0 -7
  25. package/build/legacy/hydration.js +0 -152
  26. package/build/legacy/hydration.js.map +0 -1
  27. package/build/legacy/index.cjs +0 -113
  28. package/build/legacy/index.cjs.map +0 -1
  29. package/build/legacy/index.d.cts +0 -142
  30. package/build/legacy/index.d.ts +0 -142
  31. package/build/legacy/index.js +0 -75
  32. package/build/legacy/index.js.map +0 -1
  33. package/build/legacy/infiniteQueryBehavior.cjs +0 -146
  34. package/build/legacy/infiniteQueryBehavior.cjs.map +0 -1
  35. package/build/legacy/infiniteQueryBehavior.d.cts +0 -3
  36. package/build/legacy/infiniteQueryBehavior.d.ts +0 -3
  37. package/build/legacy/infiniteQueryBehavior.js +0 -126
  38. package/build/legacy/infiniteQueryBehavior.js.map +0 -1
  39. package/build/legacy/infiniteQueryObserver.cjs +0 -93
  40. package/build/legacy/infiniteQueryObserver.cjs.map +0 -1
  41. package/build/legacy/infiniteQueryObserver.d.cts +0 -1
  42. package/build/legacy/infiniteQueryObserver.d.ts +0 -1
  43. package/build/legacy/infiniteQueryObserver.js +0 -74
  44. package/build/legacy/infiniteQueryObserver.js.map +0 -1
  45. package/build/legacy/mutation.cjs +0 -333
  46. package/build/legacy/mutation.cjs.map +0 -1
  47. package/build/legacy/mutation.d.cts +0 -4
  48. package/build/legacy/mutation.d.ts +0 -4
  49. package/build/legacy/mutation.js +0 -306
  50. package/build/legacy/mutation.js.map +0 -1
  51. package/build/legacy/mutationCache.cjs +0 -170
  52. package/build/legacy/mutationCache.cjs.map +0 -1
  53. package/build/legacy/mutationCache.d.cts +0 -2
  54. package/build/legacy/mutationCache.d.ts +0 -2
  55. package/build/legacy/mutationCache.js +0 -137
  56. package/build/legacy/mutationCache.js.map +0 -1
  57. package/build/legacy/mutationObserver.cjs +0 -190
  58. package/build/legacy/mutationObserver.cjs.map +0 -1
  59. package/build/legacy/mutationObserver.d.cts +0 -1
  60. package/build/legacy/mutationObserver.d.ts +0 -1
  61. package/build/legacy/mutationObserver.js +0 -164
  62. package/build/legacy/mutationObserver.js.map +0 -1
  63. package/build/legacy/notifyManager.cjs +0 -113
  64. package/build/legacy/notifyManager.cjs.map +0 -1
  65. package/build/legacy/notifyManager.d.cts +0 -3
  66. package/build/legacy/notifyManager.d.ts +0 -3
  67. package/build/legacy/notifyManager.js +0 -88
  68. package/build/legacy/notifyManager.js.map +0 -1
  69. package/build/legacy/onlineManager.cjs +0 -96
  70. package/build/legacy/onlineManager.cjs.map +0 -1
  71. package/build/legacy/onlineManager.d.cts +0 -2
  72. package/build/legacy/onlineManager.d.ts +0 -2
  73. package/build/legacy/onlineManager.js +0 -69
  74. package/build/legacy/onlineManager.js.map +0 -1
  75. package/build/legacy/queriesObserver.cjs +0 -260
  76. package/build/legacy/queriesObserver.cjs.map +0 -1
  77. package/build/legacy/queriesObserver.d.cts +0 -2
  78. package/build/legacy/queriesObserver.d.ts +0 -2
  79. package/build/legacy/queriesObserver.js +0 -234
  80. package/build/legacy/queriesObserver.js.map +0 -1
  81. package/build/legacy/query.cjs +0 -478
  82. package/build/legacy/query.cjs.map +0 -1
  83. package/build/legacy/query.d.cts +0 -10
  84. package/build/legacy/query.d.ts +0 -10
  85. package/build/legacy/query.js +0 -459
  86. package/build/legacy/query.js.map +0 -1
  87. package/build/legacy/queryCache.cjs +0 -131
  88. package/build/legacy/queryCache.cjs.map +0 -1
  89. package/build/legacy/queryCache.d.cts +0 -3
  90. package/build/legacy/queryCache.d.ts +0 -3
  91. package/build/legacy/queryCache.js +0 -105
  92. package/build/legacy/queryCache.js.map +0 -1
  93. package/build/legacy/queryClient.cjs +0 -349
  94. package/build/legacy/queryClient.cjs.map +0 -1
  95. package/build/legacy/queryClient.d.cts +0 -1
  96. package/build/legacy/queryClient.d.ts +0 -1
  97. package/build/legacy/queryClient.js +0 -324
  98. package/build/legacy/queryClient.js.map +0 -1
  99. package/build/legacy/queryObserver.cjs +0 -516
  100. package/build/legacy/queryObserver.cjs.map +0 -1
  101. package/build/legacy/queryObserver.d.cts +0 -1
  102. package/build/legacy/queryObserver.d.ts +0 -1
  103. package/build/legacy/queryObserver.js +0 -498
  104. package/build/legacy/queryObserver.js.map +0 -1
  105. package/build/legacy/removable.cjs +0 -70
  106. package/build/legacy/removable.cjs.map +0 -1
  107. package/build/legacy/removable.d.cts +0 -1
  108. package/build/legacy/removable.d.ts +0 -1
  109. package/build/legacy/removable.js +0 -44
  110. package/build/legacy/removable.js.map +0 -1
  111. package/build/legacy/retryer.cjs +0 -166
  112. package/build/legacy/retryer.cjs.map +0 -1
  113. package/build/legacy/retryer.d.cts +0 -7
  114. package/build/legacy/retryer.d.ts +0 -7
  115. package/build/legacy/retryer.js +0 -140
  116. package/build/legacy/retryer.js.map +0 -1
  117. package/build/legacy/streamedQuery.cjs +0 -82
  118. package/build/legacy/streamedQuery.cjs.map +0 -1
  119. package/build/legacy/streamedQuery.d.cts +0 -1
  120. package/build/legacy/streamedQuery.d.ts +0 -1
  121. package/build/legacy/streamedQuery.js +0 -59
  122. package/build/legacy/streamedQuery.js.map +0 -1
  123. package/build/legacy/subscribable.cjs +0 -51
  124. package/build/legacy/subscribable.cjs.map +0 -1
  125. package/build/legacy/subscribable.d.cts +0 -1
  126. package/build/legacy/subscribable.d.ts +0 -1
  127. package/build/legacy/subscribable.js +0 -28
  128. package/build/legacy/subscribable.js.map +0 -1
  129. package/build/legacy/thenable.cjs +0 -76
  130. package/build/legacy/thenable.cjs.map +0 -1
  131. package/build/legacy/thenable.d.cts +0 -6
  132. package/build/legacy/thenable.d.ts +0 -6
  133. package/build/legacy/thenable.js +0 -52
  134. package/build/legacy/thenable.js.map +0 -1
  135. package/build/legacy/timeoutManager.cjs +0 -110
  136. package/build/legacy/timeoutManager.cjs.map +0 -1
  137. package/build/legacy/timeoutManager.d.cts +0 -7
  138. package/build/legacy/timeoutManager.d.ts +0 -7
  139. package/build/legacy/timeoutManager.js +0 -81
  140. package/build/legacy/timeoutManager.js.map +0 -1
  141. package/build/legacy/types.cjs +0 -37
  142. package/build/legacy/types.cjs.map +0 -1
  143. package/build/legacy/types.d.cts +0 -95
  144. package/build/legacy/types.d.ts +0 -95
  145. package/build/legacy/types.js +0 -12
  146. package/build/legacy/types.js.map +0 -1
  147. package/build/legacy/utils.cjs +0 -330
  148. package/build/legacy/utils.cjs.map +0 -1
  149. package/build/legacy/utils.d.cts +0 -30
  150. package/build/legacy/utils.d.ts +0 -30
  151. package/build/legacy/utils.js +0 -283
  152. package/build/legacy/utils.js.map +0 -1
  153. package/build/modern/_tsup-dts-rollup.d.cts +0 -2227
  154. package/build/modern/_tsup-dts-rollup.d.ts +0 -2227
  155. package/build/modern/environmentManager.cjs +0 -48
  156. package/build/modern/environmentManager.cjs.map +0 -1
  157. package/build/modern/environmentManager.d.cts +0 -2
  158. package/build/modern/environmentManager.d.ts +0 -2
  159. package/build/modern/environmentManager.js +0 -23
  160. package/build/modern/environmentManager.js.map +0 -1
  161. package/build/modern/focusManager.cjs +0 -93
  162. package/build/modern/focusManager.cjs.map +0 -1
  163. package/build/modern/focusManager.d.cts +0 -2
  164. package/build/modern/focusManager.d.ts +0 -2
  165. package/build/modern/focusManager.js +0 -67
  166. package/build/modern/focusManager.js.map +0 -1
  167. package/build/modern/hydration.cjs +0 -173
  168. package/build/modern/hydration.cjs.map +0 -1
  169. package/build/modern/hydration.d.cts +0 -7
  170. package/build/modern/hydration.d.ts +0 -7
  171. package/build/modern/hydration.js +0 -145
  172. package/build/modern/hydration.js.map +0 -1
  173. package/build/modern/index.cjs +0 -113
  174. package/build/modern/index.cjs.map +0 -1
  175. package/build/modern/index.d.cts +0 -142
  176. package/build/modern/index.d.ts +0 -142
  177. package/build/modern/index.js +0 -73
  178. package/build/modern/index.js.map +0 -1
  179. package/build/modern/infiniteQueryBehavior.cjs +0 -142
  180. package/build/modern/infiniteQueryBehavior.cjs.map +0 -1
  181. package/build/modern/infiniteQueryBehavior.d.cts +0 -3
  182. package/build/modern/infiniteQueryBehavior.d.ts +0 -3
  183. package/build/modern/infiniteQueryBehavior.js +0 -120
  184. package/build/modern/infiniteQueryBehavior.js.map +0 -1
  185. package/build/modern/infiniteQueryObserver.cjs +0 -92
  186. package/build/modern/infiniteQueryObserver.cjs.map +0 -1
  187. package/build/modern/infiniteQueryObserver.d.cts +0 -1
  188. package/build/modern/infiniteQueryObserver.d.ts +0 -1
  189. package/build/modern/infiniteQueryObserver.js +0 -71
  190. package/build/modern/infiniteQueryObserver.js.map +0 -1
  191. package/build/modern/mutation.cjs +0 -307
  192. package/build/modern/mutation.cjs.map +0 -1
  193. package/build/modern/mutation.d.cts +0 -4
  194. package/build/modern/mutation.d.ts +0 -4
  195. package/build/modern/mutation.js +0 -281
  196. package/build/modern/mutation.js.map +0 -1
  197. package/build/modern/mutationCache.cjs +0 -149
  198. package/build/modern/mutationCache.cjs.map +0 -1
  199. package/build/modern/mutationCache.d.cts +0 -2
  200. package/build/modern/mutationCache.d.ts +0 -2
  201. package/build/modern/mutationCache.js +0 -124
  202. package/build/modern/mutationCache.js.map +0 -1
  203. package/build/modern/mutationObserver.cjs +0 -165
  204. package/build/modern/mutationObserver.cjs.map +0 -1
  205. package/build/modern/mutationObserver.d.cts +0 -1
  206. package/build/modern/mutationObserver.d.ts +0 -1
  207. package/build/modern/mutationObserver.js +0 -140
  208. package/build/modern/mutationObserver.js.map +0 -1
  209. package/build/modern/notifyManager.cjs +0 -113
  210. package/build/modern/notifyManager.cjs.map +0 -1
  211. package/build/modern/notifyManager.d.cts +0 -3
  212. package/build/modern/notifyManager.d.ts +0 -3
  213. package/build/modern/notifyManager.js +0 -86
  214. package/build/modern/notifyManager.js.map +0 -1
  215. package/build/modern/onlineManager.cjs +0 -83
  216. package/build/modern/onlineManager.cjs.map +0 -1
  217. package/build/modern/onlineManager.d.cts +0 -2
  218. package/build/modern/onlineManager.d.ts +0 -2
  219. package/build/modern/onlineManager.js +0 -57
  220. package/build/modern/onlineManager.js.map +0 -1
  221. package/build/modern/queriesObserver.cjs +0 -237
  222. package/build/modern/queriesObserver.cjs.map +0 -1
  223. package/build/modern/queriesObserver.d.cts +0 -2
  224. package/build/modern/queriesObserver.d.ts +0 -2
  225. package/build/modern/queriesObserver.js +0 -212
  226. package/build/modern/queriesObserver.js.map +0 -1
  227. package/build/modern/query.cjs +0 -452
  228. package/build/modern/query.cjs.map +0 -1
  229. package/build/modern/query.d.cts +0 -10
  230. package/build/modern/query.d.ts +0 -10
  231. package/build/modern/query.js +0 -434
  232. package/build/modern/query.js.map +0 -1
  233. package/build/modern/queryCache.cjs +0 -122
  234. package/build/modern/queryCache.cjs.map +0 -1
  235. package/build/modern/queryCache.d.cts +0 -3
  236. package/build/modern/queryCache.d.ts +0 -3
  237. package/build/modern/queryCache.js +0 -97
  238. package/build/modern/queryCache.js.map +0 -1
  239. package/build/modern/queryClient.cjs +0 -322
  240. package/build/modern/queryClient.cjs.map +0 -1
  241. package/build/modern/queryClient.d.cts +0 -1
  242. package/build/modern/queryClient.d.ts +0 -1
  243. package/build/modern/queryClient.js +0 -305
  244. package/build/modern/queryClient.js.map +0 -1
  245. package/build/modern/queryObserver.cjs +0 -489
  246. package/build/modern/queryObserver.cjs.map +0 -1
  247. package/build/modern/queryObserver.d.cts +0 -1
  248. package/build/modern/queryObserver.d.ts +0 -1
  249. package/build/modern/queryObserver.js +0 -472
  250. package/build/modern/queryObserver.js.map +0 -1
  251. package/build/modern/removable.cjs +0 -59
  252. package/build/modern/removable.cjs.map +0 -1
  253. package/build/modern/removable.d.cts +0 -1
  254. package/build/modern/removable.d.ts +0 -1
  255. package/build/modern/removable.js +0 -34
  256. package/build/modern/removable.js.map +0 -1
  257. package/build/modern/retryer.cjs +0 -162
  258. package/build/modern/retryer.cjs.map +0 -1
  259. package/build/modern/retryer.d.cts +0 -7
  260. package/build/modern/retryer.d.ts +0 -7
  261. package/build/modern/retryer.js +0 -134
  262. package/build/modern/retryer.js.map +0 -1
  263. package/build/modern/streamedQuery.cjs +0 -82
  264. package/build/modern/streamedQuery.cjs.map +0 -1
  265. package/build/modern/streamedQuery.d.cts +0 -1
  266. package/build/modern/streamedQuery.d.ts +0 -1
  267. package/build/modern/streamedQuery.js +0 -57
  268. package/build/modern/streamedQuery.js.map +0 -1
  269. package/build/modern/subscribable.cjs +0 -51
  270. package/build/modern/subscribable.cjs.map +0 -1
  271. package/build/modern/subscribable.d.cts +0 -1
  272. package/build/modern/subscribable.d.ts +0 -1
  273. package/build/modern/subscribable.js +0 -26
  274. package/build/modern/subscribable.js.map +0 -1
  275. package/build/modern/thenable.cjs +0 -75
  276. package/build/modern/thenable.cjs.map +0 -1
  277. package/build/modern/thenable.d.cts +0 -6
  278. package/build/modern/thenable.d.ts +0 -6
  279. package/build/modern/thenable.js +0 -49
  280. package/build/modern/thenable.js.map +0 -1
  281. package/build/modern/timeoutManager.cjs +0 -98
  282. package/build/modern/timeoutManager.cjs.map +0 -1
  283. package/build/modern/timeoutManager.d.cts +0 -7
  284. package/build/modern/timeoutManager.d.ts +0 -7
  285. package/build/modern/timeoutManager.js +0 -70
  286. package/build/modern/timeoutManager.js.map +0 -1
  287. package/build/modern/types.cjs +0 -37
  288. package/build/modern/types.cjs.map +0 -1
  289. package/build/modern/types.d.cts +0 -95
  290. package/build/modern/types.d.ts +0 -95
  291. package/build/modern/types.js +0 -10
  292. package/build/modern/types.js.map +0 -1
  293. package/build/modern/utils.cjs +0 -330
  294. package/build/modern/utils.cjs.map +0 -1
  295. package/build/modern/utils.d.cts +0 -30
  296. package/build/modern/utils.d.ts +0 -30
  297. package/build/modern/utils.js +0 -281
  298. package/build/modern/utils.js.map +0 -1
@@ -1,459 +0,0 @@
1
- import {
2
- __privateAdd,
3
- __privateGet,
4
- __privateMethod,
5
- __privateSet
6
- } from "./chunk-PXG64RU4.js";
7
-
8
- // src/query.ts
9
- import {
10
- ensureQueryFn,
11
- noop,
12
- replaceData,
13
- resolveEnabled,
14
- resolveStaleTime,
15
- skipToken,
16
- timeUntilStale
17
- } from "./utils.js";
18
- import { notifyManager } from "./notifyManager.js";
19
- import { CancelledError, canFetch, createRetryer } from "./retryer.js";
20
- import { Removable } from "./removable.js";
21
- var _initialState, _revertState, _cache, _client, _retryer, _defaultOptions, _abortSignalConsumed, _Query_instances, dispatch_fn;
22
- var Query = class extends Removable {
23
- constructor(config) {
24
- super();
25
- __privateAdd(this, _Query_instances);
26
- __privateAdd(this, _initialState);
27
- __privateAdd(this, _revertState);
28
- __privateAdd(this, _cache);
29
- __privateAdd(this, _client);
30
- __privateAdd(this, _retryer);
31
- __privateAdd(this, _defaultOptions);
32
- __privateAdd(this, _abortSignalConsumed);
33
- __privateSet(this, _abortSignalConsumed, false);
34
- __privateSet(this, _defaultOptions, config.defaultOptions);
35
- this.setOptions(config.options);
36
- this.observers = [];
37
- __privateSet(this, _client, config.client);
38
- __privateSet(this, _cache, __privateGet(this, _client).getQueryCache());
39
- this.queryKey = config.queryKey;
40
- this.queryHash = config.queryHash;
41
- __privateSet(this, _initialState, getDefaultState(this.options));
42
- this.state = config.state ?? __privateGet(this, _initialState);
43
- this.scheduleGc();
44
- }
45
- get meta() {
46
- return this.options.meta;
47
- }
48
- get promise() {
49
- var _a;
50
- return (_a = __privateGet(this, _retryer)) == null ? void 0 : _a.promise;
51
- }
52
- setOptions(options) {
53
- this.options = { ...__privateGet(this, _defaultOptions), ...options };
54
- this.updateGcTime(this.options.gcTime);
55
- if (this.state && this.state.data === void 0) {
56
- const defaultState = getDefaultState(this.options);
57
- if (defaultState.data !== void 0) {
58
- this.setState(
59
- successState(defaultState.data, defaultState.dataUpdatedAt)
60
- );
61
- __privateSet(this, _initialState, defaultState);
62
- }
63
- }
64
- }
65
- optionalRemove() {
66
- if (!this.observers.length && this.state.fetchStatus === "idle") {
67
- __privateGet(this, _cache).remove(this);
68
- }
69
- }
70
- setData(newData, options) {
71
- const data = replaceData(this.state.data, newData, this.options);
72
- __privateMethod(this, _Query_instances, dispatch_fn).call(this, {
73
- data,
74
- type: "success",
75
- dataUpdatedAt: options == null ? void 0 : options.updatedAt,
76
- manual: options == null ? void 0 : options.manual
77
- });
78
- return data;
79
- }
80
- setState(state, setStateOptions) {
81
- __privateMethod(this, _Query_instances, dispatch_fn).call(this, { type: "setState", state, setStateOptions });
82
- }
83
- cancel(options) {
84
- var _a, _b;
85
- const promise = (_a = __privateGet(this, _retryer)) == null ? void 0 : _a.promise;
86
- (_b = __privateGet(this, _retryer)) == null ? void 0 : _b.cancel(options);
87
- return promise ? promise.then(noop).catch(noop) : Promise.resolve();
88
- }
89
- destroy() {
90
- super.destroy();
91
- this.cancel({ silent: true });
92
- }
93
- reset() {
94
- this.destroy();
95
- this.setState(__privateGet(this, _initialState));
96
- }
97
- isActive() {
98
- return this.observers.some(
99
- (observer) => resolveEnabled(observer.options.enabled, this) !== false
100
- );
101
- }
102
- isDisabled() {
103
- if (this.getObserversCount() > 0) {
104
- return !this.isActive();
105
- }
106
- return this.options.queryFn === skipToken || this.state.dataUpdateCount + this.state.errorUpdateCount === 0;
107
- }
108
- isStatic() {
109
- if (this.getObserversCount() > 0) {
110
- return this.observers.some(
111
- (observer) => resolveStaleTime(observer.options.staleTime, this) === "static"
112
- );
113
- }
114
- return false;
115
- }
116
- isStale() {
117
- if (this.getObserversCount() > 0) {
118
- return this.observers.some(
119
- (observer) => observer.getCurrentResult().isStale
120
- );
121
- }
122
- return this.state.data === void 0 || this.state.isInvalidated;
123
- }
124
- isStaleByTime(staleTime = 0) {
125
- if (this.state.data === void 0) {
126
- return true;
127
- }
128
- if (staleTime === "static") {
129
- return false;
130
- }
131
- if (this.state.isInvalidated) {
132
- return true;
133
- }
134
- return !timeUntilStale(this.state.dataUpdatedAt, staleTime);
135
- }
136
- onFocus() {
137
- var _a;
138
- const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus());
139
- observer == null ? void 0 : observer.refetch({ cancelRefetch: false });
140
- (_a = __privateGet(this, _retryer)) == null ? void 0 : _a.continue();
141
- }
142
- onOnline() {
143
- var _a;
144
- const observer = this.observers.find((x) => x.shouldFetchOnReconnect());
145
- observer == null ? void 0 : observer.refetch({ cancelRefetch: false });
146
- (_a = __privateGet(this, _retryer)) == null ? void 0 : _a.continue();
147
- }
148
- addObserver(observer) {
149
- if (!this.observers.includes(observer)) {
150
- this.observers.push(observer);
151
- this.clearGcTimeout();
152
- __privateGet(this, _cache).notify({ type: "observerAdded", query: this, observer });
153
- }
154
- }
155
- removeObserver(observer) {
156
- if (this.observers.includes(observer)) {
157
- this.observers = this.observers.filter((x) => x !== observer);
158
- if (!this.observers.length) {
159
- if (__privateGet(this, _retryer)) {
160
- if (__privateGet(this, _abortSignalConsumed)) {
161
- __privateGet(this, _retryer).cancel({ revert: true });
162
- } else {
163
- __privateGet(this, _retryer).cancelRetry();
164
- }
165
- }
166
- this.scheduleGc();
167
- }
168
- __privateGet(this, _cache).notify({ type: "observerRemoved", query: this, observer });
169
- }
170
- }
171
- getObserversCount() {
172
- return this.observers.length;
173
- }
174
- invalidate() {
175
- if (!this.state.isInvalidated) {
176
- __privateMethod(this, _Query_instances, dispatch_fn).call(this, { type: "invalidate" });
177
- }
178
- }
179
- async fetch(options, fetchOptions) {
180
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
181
- if (this.state.fetchStatus !== "idle" && // If the promise in the retryer is already rejected, we have to definitely
182
- // re-start the fetch; there is a chance that the query is still in a
183
- // pending state when that happens
184
- ((_a = __privateGet(this, _retryer)) == null ? void 0 : _a.status()) !== "rejected") {
185
- if (this.state.data !== void 0 && (fetchOptions == null ? void 0 : fetchOptions.cancelRefetch)) {
186
- this.cancel({ silent: true });
187
- } else if (__privateGet(this, _retryer)) {
188
- __privateGet(this, _retryer).continueRetry();
189
- return __privateGet(this, _retryer).promise;
190
- }
191
- }
192
- if (options) {
193
- this.setOptions(options);
194
- }
195
- if (!this.options.queryFn) {
196
- const observer = this.observers.find((x) => x.options.queryFn);
197
- if (observer) {
198
- this.setOptions(observer.options);
199
- }
200
- }
201
- if (process.env.NODE_ENV !== "production") {
202
- if (!Array.isArray(this.options.queryKey)) {
203
- console.error(
204
- `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`
205
- );
206
- }
207
- }
208
- const abortController = new AbortController();
209
- const addSignalProperty = (object) => {
210
- Object.defineProperty(object, "signal", {
211
- enumerable: true,
212
- get: () => {
213
- __privateSet(this, _abortSignalConsumed, true);
214
- return abortController.signal;
215
- }
216
- });
217
- };
218
- const fetchFn = () => {
219
- const queryFn = ensureQueryFn(this.options, fetchOptions);
220
- const createQueryFnContext = () => {
221
- const queryFnContext2 = {
222
- client: __privateGet(this, _client),
223
- queryKey: this.queryKey,
224
- meta: this.meta
225
- };
226
- addSignalProperty(queryFnContext2);
227
- return queryFnContext2;
228
- };
229
- const queryFnContext = createQueryFnContext();
230
- __privateSet(this, _abortSignalConsumed, false);
231
- if (this.options.persister) {
232
- return this.options.persister(
233
- queryFn,
234
- queryFnContext,
235
- this
236
- );
237
- }
238
- return queryFn(queryFnContext);
239
- };
240
- const createFetchContext = () => {
241
- const context2 = {
242
- fetchOptions,
243
- options: this.options,
244
- queryKey: this.queryKey,
245
- client: __privateGet(this, _client),
246
- state: this.state,
247
- fetchFn
248
- };
249
- addSignalProperty(context2);
250
- return context2;
251
- };
252
- const context = createFetchContext();
253
- (_b = this.options.behavior) == null ? void 0 : _b.onFetch(context, this);
254
- __privateSet(this, _revertState, this.state);
255
- if (this.state.fetchStatus === "idle" || this.state.fetchMeta !== ((_c = context.fetchOptions) == null ? void 0 : _c.meta)) {
256
- __privateMethod(this, _Query_instances, dispatch_fn).call(this, { type: "fetch", meta: (_d = context.fetchOptions) == null ? void 0 : _d.meta });
257
- }
258
- __privateSet(this, _retryer, createRetryer({
259
- initialPromise: fetchOptions == null ? void 0 : fetchOptions.initialPromise,
260
- fn: context.fetchFn,
261
- onCancel: (error) => {
262
- if (error instanceof CancelledError && error.revert) {
263
- this.setState({
264
- ...__privateGet(this, _revertState),
265
- fetchStatus: "idle"
266
- });
267
- }
268
- abortController.abort();
269
- },
270
- onFail: (failureCount, error) => {
271
- __privateMethod(this, _Query_instances, dispatch_fn).call(this, { type: "failed", failureCount, error });
272
- },
273
- onPause: () => {
274
- __privateMethod(this, _Query_instances, dispatch_fn).call(this, { type: "pause" });
275
- },
276
- onContinue: () => {
277
- __privateMethod(this, _Query_instances, dispatch_fn).call(this, { type: "continue" });
278
- },
279
- retry: context.options.retry,
280
- retryDelay: context.options.retryDelay,
281
- networkMode: context.options.networkMode,
282
- canRun: () => true
283
- }));
284
- try {
285
- const data = await __privateGet(this, _retryer).start();
286
- if (data === void 0) {
287
- if (process.env.NODE_ENV !== "production") {
288
- console.error(
289
- `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`
290
- );
291
- }
292
- throw new Error(`${this.queryHash} data is undefined`);
293
- }
294
- this.setData(data);
295
- (_f = (_e = __privateGet(this, _cache).config).onSuccess) == null ? void 0 : _f.call(_e, data, this);
296
- (_h = (_g = __privateGet(this, _cache).config).onSettled) == null ? void 0 : _h.call(
297
- _g,
298
- data,
299
- this.state.error,
300
- this
301
- );
302
- return data;
303
- } catch (error) {
304
- if (error instanceof CancelledError) {
305
- if (error.silent) {
306
- return __privateGet(this, _retryer).promise;
307
- } else if (error.revert) {
308
- if (this.state.data === void 0) {
309
- throw error;
310
- }
311
- return this.state.data;
312
- }
313
- }
314
- __privateMethod(this, _Query_instances, dispatch_fn).call(this, {
315
- type: "error",
316
- error
317
- });
318
- (_j = (_i = __privateGet(this, _cache).config).onError) == null ? void 0 : _j.call(
319
- _i,
320
- error,
321
- this
322
- );
323
- (_l = (_k = __privateGet(this, _cache).config).onSettled) == null ? void 0 : _l.call(
324
- _k,
325
- this.state.data,
326
- error,
327
- this
328
- );
329
- throw error;
330
- } finally {
331
- this.scheduleGc();
332
- }
333
- }
334
- };
335
- _initialState = new WeakMap();
336
- _revertState = new WeakMap();
337
- _cache = new WeakMap();
338
- _client = new WeakMap();
339
- _retryer = new WeakMap();
340
- _defaultOptions = new WeakMap();
341
- _abortSignalConsumed = new WeakMap();
342
- _Query_instances = new WeakSet();
343
- dispatch_fn = function(action) {
344
- const reducer = (state) => {
345
- switch (action.type) {
346
- case "failed":
347
- return {
348
- ...state,
349
- fetchFailureCount: action.failureCount,
350
- fetchFailureReason: action.error
351
- };
352
- case "pause":
353
- return {
354
- ...state,
355
- fetchStatus: "paused"
356
- };
357
- case "continue":
358
- return {
359
- ...state,
360
- fetchStatus: "fetching"
361
- };
362
- case "fetch":
363
- return {
364
- ...state,
365
- ...fetchState(state.data, this.options),
366
- fetchMeta: action.meta ?? null
367
- };
368
- case "success":
369
- const newState = {
370
- ...state,
371
- ...successState(action.data, action.dataUpdatedAt),
372
- dataUpdateCount: state.dataUpdateCount + 1,
373
- ...!action.manual && {
374
- fetchStatus: "idle",
375
- fetchFailureCount: 0,
376
- fetchFailureReason: null
377
- }
378
- };
379
- __privateSet(this, _revertState, action.manual ? newState : void 0);
380
- return newState;
381
- case "error":
382
- const error = action.error;
383
- return {
384
- ...state,
385
- error,
386
- errorUpdateCount: state.errorUpdateCount + 1,
387
- errorUpdatedAt: Date.now(),
388
- fetchFailureCount: state.fetchFailureCount + 1,
389
- fetchFailureReason: error,
390
- fetchStatus: "idle",
391
- status: "error",
392
- // flag existing data as invalidated if we get a background error
393
- // note that "no data" always means stale so we can set unconditionally here
394
- isInvalidated: true
395
- };
396
- case "invalidate":
397
- return {
398
- ...state,
399
- isInvalidated: true
400
- };
401
- case "setState":
402
- return {
403
- ...state,
404
- ...action.state
405
- };
406
- }
407
- };
408
- this.state = reducer(this.state);
409
- notifyManager.batch(() => {
410
- this.observers.forEach((observer) => {
411
- observer.onQueryUpdate();
412
- });
413
- __privateGet(this, _cache).notify({ query: this, type: "updated", action });
414
- });
415
- };
416
- function fetchState(data, options) {
417
- return {
418
- fetchFailureCount: 0,
419
- fetchFailureReason: null,
420
- fetchStatus: canFetch(options.networkMode) ? "fetching" : "paused",
421
- ...data === void 0 && {
422
- error: null,
423
- status: "pending"
424
- }
425
- };
426
- }
427
- function successState(data, dataUpdatedAt) {
428
- return {
429
- data,
430
- dataUpdatedAt: dataUpdatedAt ?? Date.now(),
431
- error: null,
432
- isInvalidated: false,
433
- status: "success"
434
- };
435
- }
436
- function getDefaultState(options) {
437
- const data = typeof options.initialData === "function" ? options.initialData() : options.initialData;
438
- const hasData = data !== void 0;
439
- const initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === "function" ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;
440
- return {
441
- data,
442
- dataUpdateCount: 0,
443
- dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,
444
- error: null,
445
- errorUpdateCount: 0,
446
- errorUpdatedAt: 0,
447
- fetchFailureCount: 0,
448
- fetchFailureReason: null,
449
- fetchMeta: null,
450
- isInvalidated: false,
451
- status: hasData ? "success" : "pending",
452
- fetchStatus: "idle"
453
- };
454
- }
455
- export {
456
- Query,
457
- fetchState
458
- };
459
- //# sourceMappingURL=query.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/query.ts"],"sourcesContent":["import {\n ensureQueryFn,\n noop,\n replaceData,\n resolveEnabled,\n resolveStaleTime,\n skipToken,\n timeUntilStale,\n} from './utils'\nimport { notifyManager } from './notifyManager'\nimport { CancelledError, canFetch, createRetryer } from './retryer'\nimport { Removable } from './removable'\nimport type { QueryCache } from './queryCache'\nimport type { QueryClient } from './queryClient'\nimport type {\n CancelOptions,\n DefaultError,\n FetchStatus,\n InitialDataFunction,\n OmitKeyof,\n QueryFunctionContext,\n QueryKey,\n QueryMeta,\n QueryOptions,\n QueryStatus,\n SetDataOptions,\n StaleTime,\n} from './types'\nimport type { QueryObserver } from './queryObserver'\nimport type { Retryer } from './retryer'\n\n// TYPES\n\ninterface QueryConfig<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n client: QueryClient\n queryKey: TQueryKey\n queryHash: string\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n defaultOptions?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n state?: QueryState<TData, TError>\n}\n\nexport interface QueryState<TData = unknown, TError = DefaultError> {\n data: TData | undefined\n dataUpdateCount: number\n dataUpdatedAt: number\n error: TError | null\n errorUpdateCount: number\n errorUpdatedAt: number\n fetchFailureCount: number\n fetchFailureReason: TError | null\n fetchMeta: FetchMeta | null\n isInvalidated: boolean\n status: QueryStatus\n fetchStatus: FetchStatus\n}\n\nexport interface FetchContext<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n fetchFn: () => unknown | Promise<unknown>\n fetchOptions?: FetchOptions\n signal: AbortSignal\n options: QueryOptions<TQueryFnData, TError, TData, any>\n client: QueryClient\n queryKey: TQueryKey\n state: QueryState<TData, TError>\n}\n\nexport interface QueryBehavior<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n onFetch: (\n context: FetchContext<TQueryFnData, TError, TData, TQueryKey>,\n query: Query,\n ) => void\n}\n\nexport type FetchDirection = 'forward' | 'backward'\n\nexport interface FetchMeta {\n fetchMore?: { direction: FetchDirection }\n}\n\nexport interface FetchOptions<TData = unknown> {\n cancelRefetch?: boolean\n meta?: FetchMeta\n initialPromise?: Promise<TData>\n}\n\ninterface FailedAction<TError> {\n type: 'failed'\n failureCount: number\n error: TError\n}\n\ninterface FetchAction {\n type: 'fetch'\n meta?: FetchMeta\n}\n\ninterface SuccessAction<TData> {\n data: TData | undefined\n type: 'success'\n dataUpdatedAt?: number\n manual?: boolean\n}\n\ninterface ErrorAction<TError> {\n type: 'error'\n error: TError\n}\n\ninterface InvalidateAction {\n type: 'invalidate'\n}\n\ninterface PauseAction {\n type: 'pause'\n}\n\ninterface ContinueAction {\n type: 'continue'\n}\n\ninterface SetStateAction<TData, TError> {\n type: 'setState'\n state: Partial<QueryState<TData, TError>>\n setStateOptions?: SetStateOptions\n}\n\nexport type Action<TData, TError> =\n | ContinueAction\n | ErrorAction<TError>\n | FailedAction<TError>\n | FetchAction\n | InvalidateAction\n | PauseAction\n | SetStateAction<TData, TError>\n | SuccessAction<TData>\n\nexport interface SetStateOptions {\n meta?: any\n}\n\n// CLASS\n\nexport class Query<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends Removable {\n queryKey: TQueryKey\n queryHash: string\n options!: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n state: QueryState<TData, TError>\n\n #initialState: QueryState<TData, TError>\n #revertState?: QueryState<TData, TError>\n #cache: QueryCache\n #client: QueryClient\n #retryer?: Retryer<TData>\n observers: Array<QueryObserver<any, any, any, any, any>>\n #defaultOptions?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n #abortSignalConsumed: boolean\n\n constructor(config: QueryConfig<TQueryFnData, TError, TData, TQueryKey>) {\n super()\n\n this.#abortSignalConsumed = false\n this.#defaultOptions = config.defaultOptions\n this.setOptions(config.options)\n this.observers = []\n this.#client = config.client\n this.#cache = this.#client.getQueryCache()\n this.queryKey = config.queryKey\n this.queryHash = config.queryHash\n this.#initialState = getDefaultState(this.options)\n this.state = config.state ?? this.#initialState\n this.scheduleGc()\n }\n get meta(): QueryMeta | undefined {\n return this.options.meta\n }\n\n get promise(): Promise<TData> | undefined {\n return this.#retryer?.promise\n }\n\n setOptions(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): void {\n this.options = { ...this.#defaultOptions, ...options }\n\n this.updateGcTime(this.options.gcTime)\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (this.state && this.state.data === undefined) {\n const defaultState = getDefaultState(this.options)\n if (defaultState.data !== undefined) {\n this.setState(\n successState(defaultState.data, defaultState.dataUpdatedAt),\n )\n this.#initialState = defaultState\n }\n }\n }\n\n protected optionalRemove() {\n if (!this.observers.length && this.state.fetchStatus === 'idle') {\n this.#cache.remove(this)\n }\n }\n\n setData(\n newData: TData,\n options?: SetDataOptions & { manual: boolean },\n ): TData {\n const data = replaceData(this.state.data, newData, this.options)\n\n // Set data and mark it as cached\n this.#dispatch({\n data,\n type: 'success',\n dataUpdatedAt: options?.updatedAt,\n manual: options?.manual,\n })\n\n return data\n }\n\n setState(\n state: Partial<QueryState<TData, TError>>,\n setStateOptions?: SetStateOptions,\n ): void {\n this.#dispatch({ type: 'setState', state, setStateOptions })\n }\n\n cancel(options?: CancelOptions): Promise<void> {\n const promise = this.#retryer?.promise\n this.#retryer?.cancel(options)\n return promise ? promise.then(noop).catch(noop) : Promise.resolve()\n }\n\n destroy(): void {\n super.destroy()\n\n this.cancel({ silent: true })\n }\n\n reset(): void {\n this.destroy()\n this.setState(this.#initialState)\n }\n\n isActive(): boolean {\n return this.observers.some(\n (observer) => resolveEnabled(observer.options.enabled, this) !== false,\n )\n }\n\n isDisabled(): boolean {\n if (this.getObserversCount() > 0) {\n return !this.isActive()\n }\n // if a query has no observers, it should still be considered disabled if it never attempted a fetch\n return (\n this.options.queryFn === skipToken ||\n this.state.dataUpdateCount + this.state.errorUpdateCount === 0\n )\n }\n\n isStatic(): boolean {\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) =>\n resolveStaleTime(observer.options.staleTime, this) === 'static',\n )\n }\n\n return false\n }\n\n isStale(): boolean {\n // check observers first, their `isStale` has the source of truth\n // calculated with `isStaleByTime` and it takes `enabled` into account\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) => observer.getCurrentResult().isStale,\n )\n }\n\n return this.state.data === undefined || this.state.isInvalidated\n }\n\n isStaleByTime(staleTime: StaleTime = 0): boolean {\n // no data is always stale\n if (this.state.data === undefined) {\n return true\n }\n // static is never stale\n if (staleTime === 'static') {\n return false\n }\n // if the query is invalidated, it is stale\n if (this.state.isInvalidated) {\n return true\n }\n\n return !timeUntilStale(this.state.dataUpdatedAt, staleTime)\n }\n\n onFocus(): void {\n const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus())\n\n observer?.refetch({ cancelRefetch: false })\n\n // Continue fetch if currently paused\n this.#retryer?.continue()\n }\n\n onOnline(): void {\n const observer = this.observers.find((x) => x.shouldFetchOnReconnect())\n\n observer?.refetch({ cancelRefetch: false })\n\n // Continue fetch if currently paused\n this.#retryer?.continue()\n }\n\n addObserver(observer: QueryObserver<any, any, any, any, any>): void {\n if (!this.observers.includes(observer)) {\n this.observers.push(observer)\n\n // Stop the query from being garbage collected\n this.clearGcTimeout()\n\n this.#cache.notify({ type: 'observerAdded', query: this, observer })\n }\n }\n\n removeObserver(observer: QueryObserver<any, any, any, any, any>): void {\n if (this.observers.includes(observer)) {\n this.observers = this.observers.filter((x) => x !== observer)\n\n if (!this.observers.length) {\n // If the transport layer does not support cancellation\n // we'll let the query continue so the result can be cached\n if (this.#retryer) {\n if (this.#abortSignalConsumed) {\n this.#retryer.cancel({ revert: true })\n } else {\n this.#retryer.cancelRetry()\n }\n }\n\n this.scheduleGc()\n }\n\n this.#cache.notify({ type: 'observerRemoved', query: this, observer })\n }\n }\n\n getObserversCount(): number {\n return this.observers.length\n }\n\n invalidate(): void {\n if (!this.state.isInvalidated) {\n this.#dispatch({ type: 'invalidate' })\n }\n }\n\n async fetch(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n fetchOptions?: FetchOptions<TQueryFnData>,\n ): Promise<TData> {\n if (\n this.state.fetchStatus !== 'idle' &&\n // If the promise in the retryer is already rejected, we have to definitely\n // re-start the fetch; there is a chance that the query is still in a\n // pending state when that happens\n this.#retryer?.status() !== 'rejected'\n ) {\n if (this.state.data !== undefined && fetchOptions?.cancelRefetch) {\n // Silently cancel current fetch if the user wants to cancel refetch\n this.cancel({ silent: true })\n } else if (this.#retryer) {\n // make sure that retries that were potentially cancelled due to unmounts can continue\n this.#retryer.continueRetry()\n // Return current promise if we are already fetching\n return this.#retryer.promise\n }\n }\n\n // Update config if passed, otherwise the config from the last execution is used\n if (options) {\n this.setOptions(options)\n }\n\n // Use the options from the first observer with a query function if no function is found.\n // This can happen when the query is hydrated or created with setQueryData.\n if (!this.options.queryFn) {\n const observer = this.observers.find((x) => x.options.queryFn)\n if (observer) {\n this.setOptions(observer.options)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!Array.isArray(this.options.queryKey)) {\n console.error(\n `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`,\n )\n }\n }\n\n const abortController = new AbortController()\n\n // Adds an enumerable signal property to the object that\n // which sets abortSignalConsumed to true when the signal\n // is read.\n const addSignalProperty = (object: unknown) => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n this.#abortSignalConsumed = true\n return abortController.signal\n },\n })\n }\n\n // Create fetch function\n const fetchFn = () => {\n const queryFn = ensureQueryFn(this.options, fetchOptions)\n\n // Create query function context\n const createQueryFnContext = (): QueryFunctionContext<TQueryKey> => {\n const queryFnContext: OmitKeyof<\n QueryFunctionContext<TQueryKey>,\n 'signal'\n > = {\n client: this.#client,\n queryKey: this.queryKey,\n meta: this.meta,\n }\n addSignalProperty(queryFnContext)\n return queryFnContext as QueryFunctionContext<TQueryKey>\n }\n\n const queryFnContext = createQueryFnContext()\n\n this.#abortSignalConsumed = false\n if (this.options.persister) {\n return this.options.persister(\n queryFn,\n queryFnContext,\n this as unknown as Query,\n )\n }\n\n return queryFn(queryFnContext)\n }\n\n // Trigger behavior hook\n const createFetchContext = (): FetchContext<\n TQueryFnData,\n TError,\n TData,\n TQueryKey\n > => {\n const context: OmitKeyof<\n FetchContext<TQueryFnData, TError, TData, TQueryKey>,\n 'signal'\n > = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n client: this.#client,\n state: this.state,\n fetchFn,\n }\n\n addSignalProperty(context)\n return context as FetchContext<TQueryFnData, TError, TData, TQueryKey>\n }\n\n const context = createFetchContext()\n\n this.options.behavior?.onFetch(context, this as unknown as Query)\n\n // Store state in case the current fetch needs to be reverted\n this.#revertState = this.state\n\n // Set to fetching state if not already in it\n if (\n this.state.fetchStatus === 'idle' ||\n this.state.fetchMeta !== context.fetchOptions?.meta\n ) {\n this.#dispatch({ type: 'fetch', meta: context.fetchOptions?.meta })\n }\n\n // Try to fetch the data\n this.#retryer = createRetryer({\n initialPromise: fetchOptions?.initialPromise as\n | Promise<TData>\n | undefined,\n fn: context.fetchFn as () => Promise<TData>,\n onCancel: (error) => {\n if (error instanceof CancelledError && error.revert) {\n this.setState({\n ...this.#revertState,\n fetchStatus: 'idle' as const,\n })\n }\n abortController.abort()\n },\n onFail: (failureCount, error) => {\n this.#dispatch({ type: 'failed', failureCount, error })\n },\n onPause: () => {\n this.#dispatch({ type: 'pause' })\n },\n onContinue: () => {\n this.#dispatch({ type: 'continue' })\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode,\n canRun: () => true,\n })\n\n try {\n const data = await this.#retryer.start()\n // this is more of a runtime guard\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (data === undefined) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`,\n )\n }\n throw new Error(`${this.queryHash} data is undefined`)\n }\n\n this.setData(data)\n\n // Notify cache callback\n this.#cache.config.onSuccess?.(data, this as Query<any, any, any, any>)\n this.#cache.config.onSettled?.(\n data,\n this.state.error as any,\n this as Query<any, any, any, any>,\n )\n return data\n } catch (error) {\n if (error instanceof CancelledError) {\n if (error.silent) {\n // silent cancellation implies a new fetch is going to be started,\n // so we piggyback onto that promise\n return this.#retryer.promise\n } else if (error.revert) {\n // transform error into reverted state data\n // if the initial fetch was cancelled, we have no data, so we have\n // to get reject with a CancelledError\n if (this.state.data === undefined) {\n throw error\n }\n return this.state.data\n }\n }\n this.#dispatch({\n type: 'error',\n error: error as TError,\n })\n\n // Notify cache callback\n this.#cache.config.onError?.(\n error as any,\n this as Query<any, any, any, any>,\n )\n this.#cache.config.onSettled?.(\n this.state.data,\n error as any,\n this as Query<any, any, any, any>,\n )\n\n throw error // rethrow the error for further handling\n } finally {\n // Schedule query gc after fetching\n this.scheduleGc()\n }\n }\n\n #dispatch(action: Action<TData, TError>): void {\n const reducer = (\n state: QueryState<TData, TError>,\n ): QueryState<TData, TError> => {\n switch (action.type) {\n case 'failed':\n return {\n ...state,\n fetchFailureCount: action.failureCount,\n fetchFailureReason: action.error,\n }\n case 'pause':\n return {\n ...state,\n fetchStatus: 'paused',\n }\n case 'continue':\n return {\n ...state,\n fetchStatus: 'fetching',\n }\n case 'fetch':\n return {\n ...state,\n ...fetchState(state.data, this.options),\n fetchMeta: action.meta ?? null,\n }\n case 'success':\n const newState = {\n ...state,\n ...successState(action.data, action.dataUpdatedAt),\n dataUpdateCount: state.dataUpdateCount + 1,\n ...(!action.manual && {\n fetchStatus: 'idle' as const,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n }),\n }\n // If fetching ends successfully, we don't need revertState as a fallback anymore.\n // For manual updates, capture the state to revert to it in case of a cancellation.\n this.#revertState = action.manual ? newState : undefined\n\n return newState\n case 'error':\n const error = action.error\n return {\n ...state,\n error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error,\n fetchStatus: 'idle',\n status: 'error',\n // flag existing data as invalidated if we get a background error\n // note that \"no data\" always means stale so we can set unconditionally here\n isInvalidated: true,\n }\n case 'invalidate':\n return {\n ...state,\n isInvalidated: true,\n }\n case 'setState':\n return {\n ...state,\n ...action.state,\n }\n }\n }\n\n this.state = reducer(this.state)\n\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onQueryUpdate()\n })\n\n this.#cache.notify({ query: this, type: 'updated', action })\n })\n }\n}\n\nexport function fetchState<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n data: TData | undefined,\n options: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n) {\n return {\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchStatus: canFetch(options.networkMode) ? 'fetching' : 'paused',\n ...(data === undefined &&\n ({\n error: null,\n status: 'pending',\n } as const)),\n } as const\n}\n\nfunction successState<TData>(data: TData | undefined, dataUpdatedAt?: number) {\n return {\n data,\n dataUpdatedAt: dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: 'success' as const,\n }\n}\n\nfunction getDefaultState<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n options: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n): QueryState<TData, TError> {\n const data =\n typeof options.initialData === 'function'\n ? (options.initialData as InitialDataFunction<TData>)()\n : options.initialData\n\n const hasData = data !== undefined\n\n const initialDataUpdatedAt = hasData\n ? typeof options.initialDataUpdatedAt === 'function'\n ? options.initialDataUpdatedAt()\n : options.initialDataUpdatedAt\n : 0\n\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? (initialDataUpdatedAt ?? Date.now()) : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? 'success' : 'pending',\n fetchStatus: 'idle',\n }\n}\n"],"mappings":"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","names":["queryFnContext","context"]}
@@ -1,131 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __typeError = (msg) => {
7
- throw TypeError(msg);
8
- };
9
- var __export = (target, all) => {
10
- for (var name in all)
11
- __defProp(target, name, { get: all[name], enumerable: true });
12
- };
13
- var __copyProps = (to, from, except, desc) => {
14
- if (from && typeof from === "object" || typeof from === "function") {
15
- for (let key of __getOwnPropNames(from))
16
- if (!__hasOwnProp.call(to, key) && key !== except)
17
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
- }
19
- return to;
20
- };
21
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
22
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
23
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
24
- var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
25
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
26
-
27
- // src/queryCache.ts
28
- var queryCache_exports = {};
29
- __export(queryCache_exports, {
30
- QueryCache: () => QueryCache
31
- });
32
- module.exports = __toCommonJS(queryCache_exports);
33
- var import_utils = require("./utils.cjs");
34
- var import_query = require("./query.cjs");
35
- var import_notifyManager = require("./notifyManager.cjs");
36
- var import_subscribable = require("./subscribable.cjs");
37
- var _queries;
38
- var QueryCache = class extends import_subscribable.Subscribable {
39
- constructor(config = {}) {
40
- super();
41
- this.config = config;
42
- __privateAdd(this, _queries);
43
- __privateSet(this, _queries, /* @__PURE__ */ new Map());
44
- }
45
- build(client, options, state) {
46
- const queryKey = options.queryKey;
47
- const queryHash = options.queryHash ?? (0, import_utils.hashQueryKeyByOptions)(queryKey, options);
48
- let query = this.get(queryHash);
49
- if (!query) {
50
- query = new import_query.Query({
51
- client,
52
- queryKey,
53
- queryHash,
54
- options: client.defaultQueryOptions(options),
55
- state,
56
- defaultOptions: client.getQueryDefaults(queryKey)
57
- });
58
- this.add(query);
59
- }
60
- return query;
61
- }
62
- add(query) {
63
- if (!__privateGet(this, _queries).has(query.queryHash)) {
64
- __privateGet(this, _queries).set(query.queryHash, query);
65
- this.notify({
66
- type: "added",
67
- query
68
- });
69
- }
70
- }
71
- remove(query) {
72
- const queryInMap = __privateGet(this, _queries).get(query.queryHash);
73
- if (queryInMap) {
74
- query.destroy();
75
- if (queryInMap === query) {
76
- __privateGet(this, _queries).delete(query.queryHash);
77
- }
78
- this.notify({ type: "removed", query });
79
- }
80
- }
81
- clear() {
82
- import_notifyManager.notifyManager.batch(() => {
83
- this.getAll().forEach((query) => {
84
- this.remove(query);
85
- });
86
- });
87
- }
88
- get(queryHash) {
89
- return __privateGet(this, _queries).get(queryHash);
90
- }
91
- getAll() {
92
- return [...__privateGet(this, _queries).values()];
93
- }
94
- find(filters) {
95
- const defaultedFilters = { exact: true, ...filters };
96
- return this.getAll().find(
97
- (query) => (0, import_utils.matchQuery)(defaultedFilters, query)
98
- );
99
- }
100
- findAll(filters = {}) {
101
- const queries = this.getAll();
102
- return Object.keys(filters).length > 0 ? queries.filter((query) => (0, import_utils.matchQuery)(filters, query)) : queries;
103
- }
104
- notify(event) {
105
- import_notifyManager.notifyManager.batch(() => {
106
- this.listeners.forEach((listener) => {
107
- listener(event);
108
- });
109
- });
110
- }
111
- onFocus() {
112
- import_notifyManager.notifyManager.batch(() => {
113
- this.getAll().forEach((query) => {
114
- query.onFocus();
115
- });
116
- });
117
- }
118
- onOnline() {
119
- import_notifyManager.notifyManager.batch(() => {
120
- this.getAll().forEach((query) => {
121
- query.onOnline();
122
- });
123
- });
124
- }
125
- };
126
- _queries = new WeakMap();
127
- // Annotate the CommonJS export names for ESM import in node:
128
- 0 && (module.exports = {
129
- QueryCache
130
- });
131
- //# sourceMappingURL=queryCache.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/queryCache.ts"],"sourcesContent":["import { hashQueryKeyByOptions, matchQuery } from './utils'\nimport { Query } from './query'\nimport { notifyManager } from './notifyManager'\nimport { Subscribable } from './subscribable'\nimport type { QueryFilters } from './utils'\nimport type { Action, QueryState } from './query'\nimport type {\n DefaultError,\n NotifyEvent,\n QueryKey,\n QueryOptions,\n WithRequired,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport type { QueryObserver } from './queryObserver'\n\n// TYPES\n\ninterface QueryCacheConfig {\n onError?: (\n error: DefaultError,\n query: Query<unknown, unknown, unknown>,\n ) => void\n onSuccess?: (data: unknown, query: Query<unknown, unknown, unknown>) => void\n onSettled?: (\n data: unknown | undefined,\n error: DefaultError | null,\n query: Query<unknown, unknown, unknown>,\n ) => void\n}\n\ninterface NotifyEventQueryAdded extends NotifyEvent {\n type: 'added'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryRemoved extends NotifyEvent {\n type: 'removed'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryUpdated extends NotifyEvent {\n type: 'updated'\n query: Query<any, any, any, any>\n action: Action<any, any>\n}\n\ninterface NotifyEventQueryObserverAdded extends NotifyEvent {\n type: 'observerAdded'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverRemoved extends NotifyEvent {\n type: 'observerRemoved'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverResultsUpdated extends NotifyEvent {\n type: 'observerResultsUpdated'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverOptionsUpdated extends NotifyEvent {\n type: 'observerOptionsUpdated'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\nexport type QueryCacheNotifyEvent =\n | NotifyEventQueryAdded\n | NotifyEventQueryRemoved\n | NotifyEventQueryUpdated\n | NotifyEventQueryObserverAdded\n | NotifyEventQueryObserverRemoved\n | NotifyEventQueryObserverResultsUpdated\n | NotifyEventQueryObserverOptionsUpdated\n\ntype QueryCacheListener = (event: QueryCacheNotifyEvent) => void\n\nexport interface QueryStore {\n has: (queryHash: string) => boolean\n set: (queryHash: string, query: Query) => void\n get: (queryHash: string) => Query | undefined\n delete: (queryHash: string) => void\n values: () => IterableIterator<Query>\n}\n\n// CLASS\n\nexport class QueryCache extends Subscribable<QueryCacheListener> {\n #queries: QueryStore\n\n constructor(public config: QueryCacheConfig = {}) {\n super()\n this.#queries = new Map<string, Query>()\n }\n\n build<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n client: QueryClient,\n options: WithRequired<\n QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey'\n >,\n state?: QueryState<TData, TError>,\n ): Query<TQueryFnData, TError, TData, TQueryKey> {\n const queryKey = options.queryKey\n const queryHash =\n options.queryHash ?? hashQueryKeyByOptions(queryKey, options)\n let query = this.get<TQueryFnData, TError, TData, TQueryKey>(queryHash)\n\n if (!query) {\n query = new Query({\n client,\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey),\n })\n this.add(query)\n }\n\n return query\n }\n\n add(query: Query<any, any, any, any>): void {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query)\n\n this.notify({\n type: 'added',\n query,\n })\n }\n }\n\n remove(query: Query<any, any, any, any>): void {\n const queryInMap = this.#queries.get(query.queryHash)\n\n if (queryInMap) {\n query.destroy()\n\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash)\n }\n\n this.notify({ type: 'removed', query })\n }\n }\n\n clear(): void {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query)\n })\n })\n }\n\n get<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryHash: string,\n ): Query<TQueryFnData, TError, TData, TQueryKey> | undefined {\n return this.#queries.get(queryHash) as\n | Query<TQueryFnData, TError, TData, TQueryKey>\n | undefined\n }\n\n getAll(): Array<Query> {\n return [...this.#queries.values()]\n }\n\n find<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData>(\n filters: WithRequired<QueryFilters, 'queryKey'>,\n ): Query<TQueryFnData, TError, TData> | undefined {\n const defaultedFilters = { exact: true, ...filters }\n\n return this.getAll().find((query) =>\n matchQuery(defaultedFilters, query),\n ) as Query<TQueryFnData, TError, TData> | undefined\n }\n\n findAll(filters: QueryFilters<any> = {}): Array<Query> {\n const queries = this.getAll()\n return Object.keys(filters).length > 0\n ? queries.filter((query) => matchQuery(filters, query))\n : queries\n }\n\n notify(event: QueryCacheNotifyEvent): void {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event)\n })\n })\n }\n\n onFocus(): void {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onFocus()\n })\n })\n }\n\n onOnline(): void {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline()\n })\n })\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkD;AAClD,mBAAsB;AACtB,2BAA8B;AAC9B,0BAA6B;AAH7B;AA2FO,IAAM,aAAN,cAAyB,iCAAiC;AAAA,EAG/D,YAAmB,SAA2B,CAAC,GAAG;AAChD,UAAM;AADW;AAFnB;AAIE,uBAAK,UAAW,oBAAI,IAAmB;AAAA,EACzC;AAAA,EAEA,MAME,QACA,SAIA,OAC+C;AAC/C,UAAM,WAAW,QAAQ;AACzB,UAAM,YACJ,QAAQ,iBAAa,oCAAsB,UAAU,OAAO;AAC9D,QAAI,QAAQ,KAAK,IAA4C,SAAS;AAEtE,QAAI,CAAC,OAAO;AACV,cAAQ,IAAI,mBAAM;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAS,OAAO,oBAAoB,OAAO;AAAA,QAC3C;AAAA,QACA,gBAAgB,OAAO,iBAAiB,QAAQ;AAAA,MAClD,CAAC;AACD,WAAK,IAAI,KAAK;AAAA,IAChB;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,OAAwC;AAC1C,QAAI,CAAC,mBAAK,UAAS,IAAI,MAAM,SAAS,GAAG;AACvC,yBAAK,UAAS,IAAI,MAAM,WAAW,KAAK;AAExC,WAAK,OAAO;AAAA,QACV,MAAM;AAAA,QACN;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,OAAO,OAAwC;AAC7C,UAAM,aAAa,mBAAK,UAAS,IAAI,MAAM,SAAS;AAEpD,QAAI,YAAY;AACd,YAAM,QAAQ;AAEd,UAAI,eAAe,OAAO;AACxB,2BAAK,UAAS,OAAO,MAAM,SAAS;AAAA,MACtC;AAEA,WAAK,OAAO,EAAE,MAAM,WAAW,MAAM,CAAC;AAAA,IACxC;AAAA,EACF;AAAA,EAEA,QAAc;AACZ,uCAAc,MAAM,MAAM;AACxB,WAAK,OAAO,EAAE,QAAQ,CAAC,UAAU;AAC/B,aAAK,OAAO,KAAK;AAAA,MACnB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEA,IAME,WAC2D;AAC3D,WAAO,mBAAK,UAAS,IAAI,SAAS;AAAA,EAGpC;AAAA,EAEA,SAAuB;AACrB,WAAO,CAAC,GAAG,mBAAK,UAAS,OAAO,CAAC;AAAA,EACnC;AAAA,EAEA,KACE,SACgD;AAChD,UAAM,mBAAmB,EAAE,OAAO,MAAM,GAAG,QAAQ;AAEnD,WAAO,KAAK,OAAO,EAAE;AAAA,MAAK,CAAC,cACzB,yBAAW,kBAAkB,KAAK;AAAA,IACpC;AAAA,EACF;AAAA,EAEA,QAAQ,UAA6B,CAAC,GAAiB;AACrD,UAAM,UAAU,KAAK,OAAO;AAC5B,WAAO,OAAO,KAAK,OAAO,EAAE,SAAS,IACjC,QAAQ,OAAO,CAAC,cAAU,yBAAW,SAAS,KAAK,CAAC,IACpD;AAAA,EACN;AAAA,EAEA,OAAO,OAAoC;AACzC,uCAAc,MAAM,MAAM;AACxB,WAAK,UAAU,QAAQ,CAAC,aAAa;AACnC,iBAAS,KAAK;AAAA,MAChB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEA,UAAgB;AACd,uCAAc,MAAM,MAAM;AACxB,WAAK,OAAO,EAAE,QAAQ,CAAC,UAAU;AAC/B,cAAM,QAAQ;AAAA,MAChB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEA,WAAiB;AACf,uCAAc,MAAM,MAAM;AACxB,WAAK,OAAO,EAAE,QAAQ,CAAC,UAAU;AAC/B,cAAM,SAAS;AAAA,MACjB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AAlIE;","names":[]}
@@ -1,3 +0,0 @@
1
- export { QueryCacheNotifyEvent_alias_1 as QueryCacheNotifyEvent } from './_tsup-dts-rollup.cjs';
2
- export { QueryStore } from './_tsup-dts-rollup.cjs';
3
- export { QueryCache_alias_1 as QueryCache } from './_tsup-dts-rollup.cjs';