@tanstack/query-core 5.102.7 → 5.103.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/build/legacy/environmentManager.cjs +15 -1
  2. package/build/legacy/environmentManager.cjs.map +1 -1
  3. package/build/legacy/environmentManager.d.cts +15 -1
  4. package/build/legacy/environmentManager.d.cts.map +1 -1
  5. package/build/legacy/environmentManager.d.ts +15 -1
  6. package/build/legacy/environmentManager.d.ts.map +1 -1
  7. package/build/legacy/environmentManager.js +15 -1
  8. package/build/legacy/environmentManager.js.map +1 -1
  9. package/build/legacy/focusManager.cjs +57 -0
  10. package/build/legacy/focusManager.cjs.map +1 -1
  11. package/build/legacy/focusManager.d.cts +57 -0
  12. package/build/legacy/focusManager.d.cts.map +1 -1
  13. package/build/legacy/focusManager.d.ts +57 -0
  14. package/build/legacy/focusManager.d.ts.map +1 -1
  15. package/build/legacy/focusManager.js +57 -0
  16. package/build/legacy/focusManager.js.map +1 -1
  17. package/build/legacy/{hydration-Bjs0MSgg.d.ts → hydration-Cq7QYAzB.d.ts} +1424 -7
  18. package/build/legacy/hydration-Cq7QYAzB.d.ts.map +1 -0
  19. package/build/legacy/{hydration-DWGr3cFC.d.cts → hydration-DwR10Hi-.d.cts} +1424 -7
  20. package/build/legacy/hydration-DwR10Hi-.d.cts.map +1 -0
  21. package/build/legacy/hydration.cjs +57 -4
  22. package/build/legacy/hydration.cjs.map +1 -1
  23. package/build/legacy/hydration.d.cts +1 -1
  24. package/build/legacy/hydration.d.ts +1 -1
  25. package/build/legacy/hydration.js +57 -4
  26. package/build/legacy/hydration.js.map +1 -1
  27. package/build/legacy/index.cjs.map +1 -1
  28. package/build/legacy/index.d.cts +5 -5
  29. package/build/legacy/index.d.ts +5 -5
  30. package/build/legacy/index.js.map +1 -1
  31. package/build/legacy/infiniteQueryBehavior.d.cts +1 -1
  32. package/build/legacy/infiniteQueryBehavior.d.ts +1 -1
  33. package/build/legacy/infiniteQueryObserver.cjs +67 -0
  34. package/build/legacy/infiniteQueryObserver.cjs.map +1 -1
  35. package/build/legacy/infiniteQueryObserver.d.cts +68 -1
  36. package/build/legacy/infiniteQueryObserver.d.cts.map +1 -1
  37. package/build/legacy/infiniteQueryObserver.d.ts +68 -1
  38. package/build/legacy/infiniteQueryObserver.d.ts.map +1 -1
  39. package/build/legacy/infiniteQueryObserver.js +67 -0
  40. package/build/legacy/infiniteQueryObserver.js.map +1 -1
  41. package/build/legacy/mutation.cjs +74 -0
  42. package/build/legacy/mutation.cjs.map +1 -1
  43. package/build/legacy/mutation.d.cts +1 -1
  44. package/build/legacy/mutation.d.ts +1 -1
  45. package/build/legacy/mutation.js +74 -0
  46. package/build/legacy/mutation.js.map +1 -1
  47. package/build/legacy/mutationCache.cjs +74 -0
  48. package/build/legacy/mutationCache.cjs.map +1 -1
  49. package/build/legacy/mutationCache.d.cts +1 -1
  50. package/build/legacy/mutationCache.d.ts +1 -1
  51. package/build/legacy/mutationCache.js +74 -0
  52. package/build/legacy/mutationCache.js.map +1 -1
  53. package/build/legacy/mutationObserver.cjs +71 -0
  54. package/build/legacy/mutationObserver.cjs.map +1 -1
  55. package/build/legacy/mutationObserver.d.cts +1 -1
  56. package/build/legacy/mutationObserver.d.ts +1 -1
  57. package/build/legacy/mutationObserver.js +71 -0
  58. package/build/legacy/mutationObserver.js.map +1 -1
  59. package/build/legacy/notifyManager.cjs +45 -1
  60. package/build/legacy/notifyManager.cjs.map +1 -1
  61. package/build/legacy/notifyManager.d.cts +83 -2
  62. package/build/legacy/notifyManager.d.cts.map +1 -1
  63. package/build/legacy/notifyManager.d.ts +83 -2
  64. package/build/legacy/notifyManager.d.ts.map +1 -1
  65. package/build/legacy/notifyManager.js +45 -1
  66. package/build/legacy/notifyManager.js.map +1 -1
  67. package/build/legacy/onlineManager.cjs +47 -0
  68. package/build/legacy/onlineManager.cjs.map +1 -1
  69. package/build/legacy/onlineManager.d.cts +47 -0
  70. package/build/legacy/onlineManager.d.cts.map +1 -1
  71. package/build/legacy/onlineManager.d.ts +47 -0
  72. package/build/legacy/onlineManager.d.ts.map +1 -1
  73. package/build/legacy/onlineManager.js +47 -0
  74. package/build/legacy/onlineManager.js.map +1 -1
  75. package/build/legacy/queriesObserver.cjs +64 -0
  76. package/build/legacy/queriesObserver.cjs.map +1 -1
  77. package/build/legacy/queriesObserver.d.cts +73 -1
  78. package/build/legacy/queriesObserver.d.cts.map +1 -1
  79. package/build/legacy/queriesObserver.d.ts +73 -1
  80. package/build/legacy/queriesObserver.d.ts.map +1 -1
  81. package/build/legacy/queriesObserver.js +64 -0
  82. package/build/legacy/queriesObserver.js.map +1 -1
  83. package/build/legacy/query.cjs +141 -0
  84. package/build/legacy/query.cjs.map +1 -1
  85. package/build/legacy/query.d.cts +1 -1
  86. package/build/legacy/query.d.ts +1 -1
  87. package/build/legacy/query.js +141 -0
  88. package/build/legacy/query.js.map +1 -1
  89. package/build/legacy/queryCache.cjs +120 -0
  90. package/build/legacy/queryCache.cjs.map +1 -1
  91. package/build/legacy/queryCache.d.cts +1 -1
  92. package/build/legacy/queryCache.d.ts +1 -1
  93. package/build/legacy/queryCache.js +120 -0
  94. package/build/legacy/queryCache.js.map +1 -1
  95. package/build/legacy/queryClient.cjs +363 -0
  96. package/build/legacy/queryClient.cjs.map +1 -1
  97. package/build/legacy/queryClient.d.cts +1 -1
  98. package/build/legacy/queryClient.d.ts +1 -1
  99. package/build/legacy/queryClient.js +363 -0
  100. package/build/legacy/queryClient.js.map +1 -1
  101. package/build/legacy/queryObserver.cjs +116 -2
  102. package/build/legacy/queryObserver.cjs.map +1 -1
  103. package/build/legacy/queryObserver.d.cts +1 -1
  104. package/build/legacy/queryObserver.d.ts +1 -1
  105. package/build/legacy/queryObserver.js +116 -2
  106. package/build/legacy/queryObserver.js.map +1 -1
  107. package/build/legacy/retryer.cjs +18 -0
  108. package/build/legacy/retryer.cjs.map +1 -1
  109. package/build/legacy/retryer.d.cts +1 -1
  110. package/build/legacy/retryer.d.ts +1 -1
  111. package/build/legacy/retryer.js +18 -0
  112. package/build/legacy/retryer.js.map +1 -1
  113. package/build/legacy/streamedQuery.cjs +10 -1
  114. package/build/legacy/streamedQuery.cjs.map +1 -1
  115. package/build/legacy/streamedQuery.d.cts +26 -2
  116. package/build/legacy/streamedQuery.d.cts.map +1 -1
  117. package/build/legacy/streamedQuery.d.ts +26 -2
  118. package/build/legacy/streamedQuery.d.ts.map +1 -1
  119. package/build/legacy/streamedQuery.js +10 -1
  120. package/build/legacy/streamedQuery.js.map +1 -1
  121. package/build/legacy/timeoutManager.cjs +99 -0
  122. package/build/legacy/timeoutManager.cjs.map +1 -1
  123. package/build/legacy/timeoutManager.d.cts +105 -0
  124. package/build/legacy/timeoutManager.d.cts.map +1 -1
  125. package/build/legacy/timeoutManager.d.ts +105 -0
  126. package/build/legacy/timeoutManager.d.ts.map +1 -1
  127. package/build/legacy/timeoutManager.js +99 -0
  128. package/build/legacy/timeoutManager.js.map +1 -1
  129. package/build/legacy/types.cjs.map +1 -1
  130. package/build/legacy/types.d.cts +1 -1
  131. package/build/legacy/types.d.ts +1 -1
  132. package/build/legacy/types.js.map +1 -1
  133. package/build/legacy/utils.cjs +76 -0
  134. package/build/legacy/utils.cjs.map +1 -1
  135. package/build/legacy/utils.d.cts +1 -1
  136. package/build/legacy/utils.d.ts +1 -1
  137. package/build/legacy/utils.js +76 -0
  138. package/build/legacy/utils.js.map +1 -1
  139. package/build/modern/environmentManager.cjs +15 -1
  140. package/build/modern/environmentManager.cjs.map +1 -1
  141. package/build/modern/environmentManager.d.cts +15 -1
  142. package/build/modern/environmentManager.d.cts.map +1 -1
  143. package/build/modern/environmentManager.d.ts +15 -1
  144. package/build/modern/environmentManager.d.ts.map +1 -1
  145. package/build/modern/environmentManager.js +15 -1
  146. package/build/modern/environmentManager.js.map +1 -1
  147. package/build/modern/focusManager.cjs +57 -0
  148. package/build/modern/focusManager.cjs.map +1 -1
  149. package/build/modern/focusManager.d.cts +57 -0
  150. package/build/modern/focusManager.d.cts.map +1 -1
  151. package/build/modern/focusManager.d.ts +57 -0
  152. package/build/modern/focusManager.d.ts.map +1 -1
  153. package/build/modern/focusManager.js +57 -0
  154. package/build/modern/focusManager.js.map +1 -1
  155. package/build/modern/{hydration-Bjs0MSgg.d.ts → hydration-Cq7QYAzB.d.ts} +1424 -7
  156. package/build/modern/hydration-Cq7QYAzB.d.ts.map +1 -0
  157. package/build/modern/{hydration-DWGr3cFC.d.cts → hydration-DwR10Hi-.d.cts} +1424 -7
  158. package/build/modern/hydration-DwR10Hi-.d.cts.map +1 -0
  159. package/build/modern/hydration.cjs +57 -4
  160. package/build/modern/hydration.cjs.map +1 -1
  161. package/build/modern/hydration.d.cts +1 -1
  162. package/build/modern/hydration.d.ts +1 -1
  163. package/build/modern/hydration.js +57 -4
  164. package/build/modern/hydration.js.map +1 -1
  165. package/build/modern/index.cjs.map +1 -1
  166. package/build/modern/index.d.cts +5 -5
  167. package/build/modern/index.d.ts +5 -5
  168. package/build/modern/index.js.map +1 -1
  169. package/build/modern/infiniteQueryBehavior.d.cts +1 -1
  170. package/build/modern/infiniteQueryBehavior.d.ts +1 -1
  171. package/build/modern/infiniteQueryObserver.cjs +67 -0
  172. package/build/modern/infiniteQueryObserver.cjs.map +1 -1
  173. package/build/modern/infiniteQueryObserver.d.cts +68 -1
  174. package/build/modern/infiniteQueryObserver.d.cts.map +1 -1
  175. package/build/modern/infiniteQueryObserver.d.ts +68 -1
  176. package/build/modern/infiniteQueryObserver.d.ts.map +1 -1
  177. package/build/modern/infiniteQueryObserver.js +67 -0
  178. package/build/modern/infiniteQueryObserver.js.map +1 -1
  179. package/build/modern/mutation.cjs +74 -0
  180. package/build/modern/mutation.cjs.map +1 -1
  181. package/build/modern/mutation.d.cts +1 -1
  182. package/build/modern/mutation.d.ts +1 -1
  183. package/build/modern/mutation.js +74 -0
  184. package/build/modern/mutation.js.map +1 -1
  185. package/build/modern/mutationCache.cjs +74 -0
  186. package/build/modern/mutationCache.cjs.map +1 -1
  187. package/build/modern/mutationCache.d.cts +1 -1
  188. package/build/modern/mutationCache.d.ts +1 -1
  189. package/build/modern/mutationCache.js +74 -0
  190. package/build/modern/mutationCache.js.map +1 -1
  191. package/build/modern/mutationObserver.cjs +71 -0
  192. package/build/modern/mutationObserver.cjs.map +1 -1
  193. package/build/modern/mutationObserver.d.cts +1 -1
  194. package/build/modern/mutationObserver.d.ts +1 -1
  195. package/build/modern/mutationObserver.js +71 -0
  196. package/build/modern/mutationObserver.js.map +1 -1
  197. package/build/modern/notifyManager.cjs +45 -1
  198. package/build/modern/notifyManager.cjs.map +1 -1
  199. package/build/modern/notifyManager.d.cts +83 -2
  200. package/build/modern/notifyManager.d.cts.map +1 -1
  201. package/build/modern/notifyManager.d.ts +83 -2
  202. package/build/modern/notifyManager.d.ts.map +1 -1
  203. package/build/modern/notifyManager.js +45 -1
  204. package/build/modern/notifyManager.js.map +1 -1
  205. package/build/modern/onlineManager.cjs +47 -0
  206. package/build/modern/onlineManager.cjs.map +1 -1
  207. package/build/modern/onlineManager.d.cts +47 -0
  208. package/build/modern/onlineManager.d.cts.map +1 -1
  209. package/build/modern/onlineManager.d.ts +47 -0
  210. package/build/modern/onlineManager.d.ts.map +1 -1
  211. package/build/modern/onlineManager.js +47 -0
  212. package/build/modern/onlineManager.js.map +1 -1
  213. package/build/modern/queriesObserver.cjs +64 -0
  214. package/build/modern/queriesObserver.cjs.map +1 -1
  215. package/build/modern/queriesObserver.d.cts +73 -1
  216. package/build/modern/queriesObserver.d.cts.map +1 -1
  217. package/build/modern/queriesObserver.d.ts +73 -1
  218. package/build/modern/queriesObserver.d.ts.map +1 -1
  219. package/build/modern/queriesObserver.js +64 -0
  220. package/build/modern/queriesObserver.js.map +1 -1
  221. package/build/modern/query.cjs +141 -0
  222. package/build/modern/query.cjs.map +1 -1
  223. package/build/modern/query.d.cts +1 -1
  224. package/build/modern/query.d.ts +1 -1
  225. package/build/modern/query.js +141 -0
  226. package/build/modern/query.js.map +1 -1
  227. package/build/modern/queryCache.cjs +120 -0
  228. package/build/modern/queryCache.cjs.map +1 -1
  229. package/build/modern/queryCache.d.cts +1 -1
  230. package/build/modern/queryCache.d.ts +1 -1
  231. package/build/modern/queryCache.js +120 -0
  232. package/build/modern/queryCache.js.map +1 -1
  233. package/build/modern/queryClient.cjs +363 -0
  234. package/build/modern/queryClient.cjs.map +1 -1
  235. package/build/modern/queryClient.d.cts +1 -1
  236. package/build/modern/queryClient.d.ts +1 -1
  237. package/build/modern/queryClient.js +363 -0
  238. package/build/modern/queryClient.js.map +1 -1
  239. package/build/modern/queryObserver.cjs +116 -2
  240. package/build/modern/queryObserver.cjs.map +1 -1
  241. package/build/modern/queryObserver.d.cts +1 -1
  242. package/build/modern/queryObserver.d.ts +1 -1
  243. package/build/modern/queryObserver.js +116 -2
  244. package/build/modern/queryObserver.js.map +1 -1
  245. package/build/modern/retryer.cjs +18 -0
  246. package/build/modern/retryer.cjs.map +1 -1
  247. package/build/modern/retryer.d.cts +1 -1
  248. package/build/modern/retryer.d.ts +1 -1
  249. package/build/modern/retryer.js +18 -0
  250. package/build/modern/retryer.js.map +1 -1
  251. package/build/modern/streamedQuery.cjs +10 -1
  252. package/build/modern/streamedQuery.cjs.map +1 -1
  253. package/build/modern/streamedQuery.d.cts +26 -2
  254. package/build/modern/streamedQuery.d.cts.map +1 -1
  255. package/build/modern/streamedQuery.d.ts +26 -2
  256. package/build/modern/streamedQuery.d.ts.map +1 -1
  257. package/build/modern/streamedQuery.js +10 -1
  258. package/build/modern/streamedQuery.js.map +1 -1
  259. package/build/modern/timeoutManager.cjs +99 -0
  260. package/build/modern/timeoutManager.cjs.map +1 -1
  261. package/build/modern/timeoutManager.d.cts +105 -0
  262. package/build/modern/timeoutManager.d.cts.map +1 -1
  263. package/build/modern/timeoutManager.d.ts +105 -0
  264. package/build/modern/timeoutManager.d.ts.map +1 -1
  265. package/build/modern/timeoutManager.js +99 -0
  266. package/build/modern/timeoutManager.js.map +1 -1
  267. package/build/modern/types.cjs.map +1 -1
  268. package/build/modern/types.d.cts +1 -1
  269. package/build/modern/types.d.ts +1 -1
  270. package/build/modern/types.js.map +1 -1
  271. package/build/modern/utils.cjs +76 -0
  272. package/build/modern/utils.cjs.map +1 -1
  273. package/build/modern/utils.d.cts +1 -1
  274. package/build/modern/utils.d.ts +1 -1
  275. package/build/modern/utils.js +76 -0
  276. package/build/modern/utils.js.map +1 -1
  277. package/package.json +9 -9
  278. package/src/environmentManager.ts +15 -1
  279. package/src/focusManager.ts +57 -0
  280. package/src/hydration.ts +82 -16
  281. package/src/index.ts +3 -0
  282. package/src/infiniteQueryObserver.ts +67 -0
  283. package/src/mutation.ts +108 -0
  284. package/src/mutationCache.ts +91 -0
  285. package/src/mutationObserver.ts +71 -0
  286. package/src/notifyManager.ts +46 -1
  287. package/src/onlineManager.ts +47 -0
  288. package/src/queriesObserver.ts +72 -0
  289. package/src/query.ts +193 -0
  290. package/src/queryCache.ts +134 -0
  291. package/src/queryClient.ts +369 -0
  292. package/src/queryObserver.ts +117 -4
  293. package/src/retryer.ts +18 -0
  294. package/src/streamedQuery.ts +25 -1
  295. package/src/timeoutManager.ts +105 -0
  296. package/src/types.ts +147 -5
  297. package/src/utils.ts +107 -0
  298. package/build/legacy/hydration-Bjs0MSgg.d.ts.map +0 -1
  299. package/build/legacy/hydration-DWGr3cFC.d.cts.map +0 -1
  300. package/build/modern/hydration-Bjs0MSgg.d.ts.map +0 -1
  301. package/build/modern/hydration-DWGr3cFC.d.cts.map +0 -1
@@ -4,6 +4,15 @@ import { Subscribable } from "./subscribable.js";
4
4
  var _online = /* @__PURE__ */ new WeakMap();
5
5
  var _cleanup = /* @__PURE__ */ new WeakMap();
6
6
  var _setup = /* @__PURE__ */ new WeakMap();
7
+ /**
8
+ * The `OnlineManager` manages the online state within TanStack Query. It can
9
+ * be used to change the default event listeners or to manually change the
10
+ * online state.
11
+ *
12
+ * By default, the `onlineManager` assumes an active network connection, and
13
+ * listens to the `online` and `offline` events on the `window` object to
14
+ * detect changes.
15
+ */
7
16
  var OnlineManager = class extends Subscribable {
8
17
  constructor() {
9
18
  super();
@@ -33,12 +42,44 @@ var OnlineManager = class extends Subscribable {
33
42
  _classPrivateFieldSet2(_cleanup, this, void 0);
34
43
  }
35
44
  }
45
+ /**
46
+ * `setEventListener` can be used to set a custom event listener that will
47
+ * be used to determine the online state. The provided `setup` function
48
+ * receives a `setOnline` callback that should be called with a `boolean`
49
+ * whenever the online state changes.
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * import NetInfo from '@react-native-community/netinfo'
54
+ * import { onlineManager } from '@tanstack/query-core'
55
+ *
56
+ * onlineManager.setEventListener((setOnline) => {
57
+ * return NetInfo.addEventListener((state) => {
58
+ * setOnline(!!state.isConnected)
59
+ * })
60
+ * })
61
+ * ```
62
+ */
36
63
  setEventListener(setup) {
37
64
  var _classPrivateFieldGet3;
38
65
  _classPrivateFieldSet2(_setup, this, setup);
39
66
  (_classPrivateFieldGet3 = _classPrivateFieldGet2(_cleanup, this)) === null || _classPrivateFieldGet3 === void 0 || _classPrivateFieldGet3.call(this);
40
67
  _classPrivateFieldSet2(_cleanup, this, setup(this.setOnline.bind(this)));
41
68
  }
69
+ /**
70
+ * `setOnline` can be used to manually set the online state.
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * import { onlineManager } from '@tanstack/query-core'
75
+ *
76
+ * // Set to online
77
+ * onlineManager.setOnline(true)
78
+ *
79
+ * // Set to offline
80
+ * onlineManager.setOnline(false)
81
+ * ```
82
+ */
42
83
  setOnline(online) {
43
84
  if (_classPrivateFieldGet2(_online, this) !== online) {
44
85
  _classPrivateFieldSet2(_online, this, online);
@@ -47,10 +88,16 @@ var OnlineManager = class extends Subscribable {
47
88
  });
48
89
  }
49
90
  }
91
+ /**
92
+ * `isOnline` can be used to get the current online state.
93
+ */
50
94
  isOnline() {
51
95
  return _classPrivateFieldGet2(_online, this);
52
96
  }
53
97
  };
98
+ /**
99
+ * Singleton instance of {@link OnlineManager}, used to manage and observe the online state within TanStack Query.
100
+ */
54
101
  const onlineManager = new OnlineManager();
55
102
  //#endregion
56
103
  export { OnlineManager, onlineManager };
@@ -1 +1 @@
1
- {"version":3,"file":"onlineManager.js","names":[],"sources":["../../src/onlineManager.ts"],"sourcesContent":["import { Subscribable } from './subscribable'\n\ntype Listener = (online: boolean) => void\ntype SetupFn = (setOnline: Listener) => (() => void) | undefined\n\nexport class OnlineManager extends Subscribable<Listener> {\n #online = true\n #cleanup?: () => void\n\n #setup: SetupFn\n\n constructor() {\n super()\n this.#setup = (onOnline) => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (typeof window !== 'undefined' && window.addEventListener) {\n const onlineListener = () => onOnline(true)\n const offlineListener = () => onOnline(false)\n // Listen to online\n window.addEventListener('online', onlineListener, false)\n window.addEventListener('offline', offlineListener, false)\n\n return () => {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('online', onlineListener)\n window.removeEventListener('offline', offlineListener)\n }\n }\n\n return\n }\n }\n\n protected onSubscribe(): void {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup)\n }\n }\n\n protected onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.()\n this.#cleanup = undefined\n }\n }\n\n setEventListener(setup: SetupFn): void {\n this.#setup = setup\n this.#cleanup?.()\n this.#cleanup = setup(this.setOnline.bind(this))\n }\n\n setOnline(online: boolean): void {\n const changed = this.#online !== online\n\n if (changed) {\n this.#online = online\n this.listeners.forEach((listener) => {\n listener(online)\n })\n }\n }\n\n isOnline(): boolean {\n return this.#online\n }\n}\n\nexport const onlineManager = new OnlineManager()\n"],"mappings":";;;;;;AAKA,IAAa,gBAAb,cAAmC,aAAuB;CAMxD,cAAc;EACZ,MAAM;EANE,2BAAA,MAAA,SAAA,IAAA;;;EAOR,uBAAA,QAAA,OAAe,aAAa;GAG1B,IAAI,OAAO,WAAW,eAAe,OAAO,kBAAkB;IAC5D,MAAM,uBAAuB,SAAS,IAAI;IAC1C,MAAM,wBAAwB,SAAS,KAAK;IAE5C,OAAO,iBAAiB,UAAU,gBAAgB,KAAK;IACvD,OAAO,iBAAiB,WAAW,iBAAiB,KAAK;IAEzD,aAAa;KAEX,OAAO,oBAAoB,UAAU,cAAc;KACnD,OAAO,oBAAoB,WAAW,eAAe;IACvD;GACF;EAGF,CAAA;CACF;CAEA,cAA8B;EAC5B,IAAI,CAAA,uBAAA,UAAC,IAAA,GACH,KAAK,iBAAA,uBAAA,QAAiB,IAAA,CAAW;CAErC;CAEA,gBAA0B;EACxB,IAAI,CAAC,KAAK,aAAa,GAAG;;GACxB,CAAA,2BAAA,uBAAA,UAAA,IAAA,OAAA,QAAA,6BAAA,KAAA,KAAA,yBAAA,KAAA,IAAgB;GAChB,uBAAA,UAAA,MAAgB,KAAA,CAAA;EAClB;CACF;CAEA,iBAAiB,OAAsB;;EACrC,uBAAA,QAAA,MAAc,KAAA;EACd,CAAA,yBAAA,uBAAA,UAAA,IAAA,OAAA,QAAA,2BAAA,KAAA,KAAA,uBAAA,KAAA,IAAgB;EAChB,uBAAA,UAAA,MAAgB,MAAM,KAAK,UAAU,KAAK,IAAI,CAAC,CAAA;CACjD;CAEA,UAAU,QAAuB;EAG/B,IAAA,uBAAA,SAFgB,IAAA,MAAiB,QAEpB;GACX,uBAAA,SAAA,MAAe,MAAA;GACf,KAAK,UAAU,SAAS,aAAa;IACnC,SAAS,MAAM;GACjB,CAAC;EACH;CACF;CAEA,WAAoB;EAClB,OAAA,uBAAA,SAAO,IAAA;CACT;AACF;AAEA,MAAa,gBAAgB,IAAI,cAAc"}
1
+ {"version":3,"file":"onlineManager.js","names":[],"sources":["../../src/onlineManager.ts"],"sourcesContent":["import { Subscribable } from './subscribable'\n\ntype Listener = (online: boolean) => void\ntype SetupFn = (setOnline: Listener) => (() => void) | undefined\n\n/**\n * The `OnlineManager` manages the online state within TanStack Query. It can\n * be used to change the default event listeners or to manually change the\n * online state.\n *\n * By default, the `onlineManager` assumes an active network connection, and\n * listens to the `online` and `offline` events on the `window` object to\n * detect changes.\n */\nexport class OnlineManager extends Subscribable<Listener> {\n #online = true\n #cleanup?: () => void\n\n #setup: SetupFn\n\n constructor() {\n super()\n this.#setup = (onOnline) => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (typeof window !== 'undefined' && window.addEventListener) {\n const onlineListener = () => onOnline(true)\n const offlineListener = () => onOnline(false)\n // Listen to online\n window.addEventListener('online', onlineListener, false)\n window.addEventListener('offline', offlineListener, false)\n\n return () => {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('online', onlineListener)\n window.removeEventListener('offline', offlineListener)\n }\n }\n\n return\n }\n }\n\n protected onSubscribe(): void {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup)\n }\n }\n\n protected onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.()\n this.#cleanup = undefined\n }\n }\n\n /**\n * `setEventListener` can be used to set a custom event listener that will\n * be used to determine the online state. The provided `setup` function\n * receives a `setOnline` callback that should be called with a `boolean`\n * whenever the online state changes.\n *\n * @example\n * ```ts\n * import NetInfo from '@react-native-community/netinfo'\n * import { onlineManager } from '@tanstack/query-core'\n *\n * onlineManager.setEventListener((setOnline) => {\n * return NetInfo.addEventListener((state) => {\n * setOnline(!!state.isConnected)\n * })\n * })\n * ```\n */\n setEventListener(setup: SetupFn): void {\n this.#setup = setup\n this.#cleanup?.()\n this.#cleanup = setup(this.setOnline.bind(this))\n }\n\n /**\n * `setOnline` can be used to manually set the online state.\n *\n * @example\n * ```ts\n * import { onlineManager } from '@tanstack/query-core'\n *\n * // Set to online\n * onlineManager.setOnline(true)\n *\n * // Set to offline\n * onlineManager.setOnline(false)\n * ```\n */\n setOnline(online: boolean): void {\n const changed = this.#online !== online\n\n if (changed) {\n this.#online = online\n this.listeners.forEach((listener) => {\n listener(online)\n })\n }\n }\n\n /**\n * `isOnline` can be used to get the current online state.\n */\n isOnline(): boolean {\n return this.#online\n }\n}\n\n/**\n * Singleton instance of {@link OnlineManager}, used to manage and observe the online state within TanStack Query.\n */\nexport const onlineManager = new OnlineManager()\n"],"mappings":";;;;;;;;;;;;;;;AAcA,IAAa,gBAAb,cAAmC,aAAuB;CAMxD,cAAc;EACZ,MAAM;EANE,2BAAA,MAAA,SAAA,IAAA;;;EAOR,uBAAA,QAAA,OAAe,aAAa;GAG1B,IAAI,OAAO,WAAW,eAAe,OAAO,kBAAkB;IAC5D,MAAM,uBAAuB,SAAS,IAAI;IAC1C,MAAM,wBAAwB,SAAS,KAAK;IAE5C,OAAO,iBAAiB,UAAU,gBAAgB,KAAK;IACvD,OAAO,iBAAiB,WAAW,iBAAiB,KAAK;IAEzD,aAAa;KAEX,OAAO,oBAAoB,UAAU,cAAc;KACnD,OAAO,oBAAoB,WAAW,eAAe;IACvD;GACF;EAGF,CAAA;CACF;CAEA,cAA8B;EAC5B,IAAI,CAAA,uBAAA,UAAC,IAAA,GACH,KAAK,iBAAA,uBAAA,QAAiB,IAAA,CAAW;CAErC;CAEA,gBAA0B;EACxB,IAAI,CAAC,KAAK,aAAa,GAAG;;GACxB,CAAA,2BAAA,uBAAA,UAAA,IAAA,OAAA,QAAA,6BAAA,KAAA,KAAA,yBAAA,KAAA,IAAgB;GAChB,uBAAA,UAAA,MAAgB,KAAA,CAAA;EAClB;CACF;;;;;;;;;;;;;;;;;;;CAoBA,iBAAiB,OAAsB;;EACrC,uBAAA,QAAA,MAAc,KAAA;EACd,CAAA,yBAAA,uBAAA,UAAA,IAAA,OAAA,QAAA,2BAAA,KAAA,KAAA,uBAAA,KAAA,IAAgB;EAChB,uBAAA,UAAA,MAAgB,MAAM,KAAK,UAAU,KAAK,IAAI,CAAC,CAAA;CACjD;;;;;;;;;;;;;;;CAgBA,UAAU,QAAuB;EAG/B,IAAA,uBAAA,SAFgB,IAAA,MAAiB,QAEpB;GACX,uBAAA,SAAA,MAAe,MAAA;GACf,KAAK,UAAU,SAAS,aAAa;IACnC,SAAS,MAAM;GACjB,CAAC;EACH;CACF;;;;CAKA,WAAoB;EAClB,OAAA,uBAAA,SAAO,IAAA;CACT;AACF;;;;AAKA,MAAa,gBAAgB,IAAI,cAAc"}
@@ -21,6 +21,25 @@ var _lastResult = /* @__PURE__ */ new WeakMap();
21
21
  var _lastQueryHashes = /* @__PURE__ */ new WeakMap();
22
22
  var _observerMatches = /* @__PURE__ */ new WeakMap();
23
23
  var _QueriesObserver_brand = /* @__PURE__ */ new WeakSet();
24
+ /**
25
+ * A `QueriesObserver` watches an array of queries at once, exposing them as
26
+ * a single array of `QueryObserverResult`s (or, when a `combine` option is
27
+ * given, as a combined value derived from that array). It manages one
28
+ * internal `QueryObserver` per query, and is the primitive that framework
29
+ * adapters (e.g. `useQueries`) build their hooks on top of.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * const observer = new QueriesObserver(queryClient, [
34
+ * { queryKey: ['post', 1], queryFn: fetchPost },
35
+ * { queryKey: ['post', 2], queryFn: fetchPost },
36
+ * ])
37
+ *
38
+ * const unsubscribe = observer.subscribe((result) => {
39
+ * console.log(result)
40
+ * })
41
+ * ```
42
+ */
24
43
  var QueriesObserver = class extends require_subscribable.Subscribable {
25
44
  constructor(client, queries, options) {
26
45
  super();
@@ -52,12 +71,30 @@ var QueriesObserver = class extends require_subscribable.Subscribable {
52
71
  onUnsubscribe() {
53
72
  if (!this.listeners.size) this.destroy();
54
73
  }
74
+ /**
75
+ * Stops observing all queries: clears all listeners and destroys every
76
+ * underlying `QueryObserver` this observer manages.
77
+ */
55
78
  destroy() {
56
79
  this.listeners = /* @__PURE__ */ new Set();
57
80
  require_classPrivateFieldSet2._classPrivateFieldGet2(_observers, this).forEach((observer) => {
58
81
  observer.destroy();
59
82
  });
60
83
  }
84
+ /**
85
+ * Replaces the set of queries being observed. Existing `QueryObserver`s
86
+ * are reused for queries that match an already-observed query hash;
87
+ * observers for queries that are no longer present are destroyed, and new
88
+ * observers are created and subscribed to for newly added queries.
89
+ *
90
+ * @example
91
+ * ```ts
92
+ * observer.setQueries([
93
+ * { queryKey: ['post', 1], queryFn: fetchPost },
94
+ * { queryKey: ['post', 3], queryFn: fetchPost },
95
+ * ])
96
+ * ```
97
+ */
61
98
  setQueries(queries, options) {
62
99
  require_classPrivateFieldSet2._classPrivateFieldSet2(_queries, this, queries);
63
100
  require_classPrivateFieldSet2._classPrivateFieldSet2(_options, this, options);
@@ -98,15 +135,42 @@ var QueriesObserver = class extends require_subscribable.Subscribable {
98
135
  require_classPrivateFieldSet2._assertClassBrand(_QueriesObserver_brand, this, _notify).call(this);
99
136
  });
100
137
  }
138
+ /**
139
+ * Returns the most recently computed array of `QueryObserverResult`s, one
140
+ * per observed query, in the same order as the queries passed to the
141
+ * constructor or `setQueries`.
142
+ *
143
+ * @example
144
+ * ```ts
145
+ * const results = observer.getCurrentResult()
146
+ * const data = results.map((result) => result.data)
147
+ * ```
148
+ */
101
149
  getCurrentResult() {
102
150
  return require_classPrivateFieldSet2._classPrivateFieldGet2(_result, this);
103
151
  }
152
+ /**
153
+ * Returns the underlying `Query` instances currently being observed, in
154
+ * the same order as the queries passed to the constructor or `setQueries`.
155
+ */
104
156
  getQueries() {
105
157
  return require_classPrivateFieldSet2._classPrivateFieldGet2(_observers, this).map((observer) => observer.getCurrentQuery());
106
158
  }
159
+ /**
160
+ * Returns the underlying `QueryObserver` instances this observer manages,
161
+ * in the same order as the queries passed to the constructor or
162
+ * `setQueries`.
163
+ */
107
164
  getObservers() {
108
165
  return require_classPrivateFieldSet2._classPrivateFieldGet2(_observers, this);
109
166
  }
167
+ /**
168
+ * The `QueriesObserver` counterpart of {@link QueryObserver#getOptimisticResult} — computes
169
+ * the result for the given (already-defaulted) queries right now, synchronously. Called by
170
+ * framework adapters (e.g. `useQueries`) ahead of subscribing, returning a tuple of the raw
171
+ * per-query results, a function to compute the combined result from them, and a function to
172
+ * wrap the results for property-access tracking.
173
+ */
110
174
  getOptimisticResult(queries, combine) {
111
175
  const matches = require_classPrivateFieldSet2._assertClassBrand(_QueriesObserver_brand, this, _findMatchingObservers).call(this, queries);
112
176
  const result = matches.map((match) => match.observer.getOptimisticResult(match.defaultedQueryOptions));
@@ -1 +1 @@
1
- {"version":3,"file":"queriesObserver.cjs","names":["Subscribable","shallowEqualObjects","replaceEqualDeep","QueryObserver"],"sources":["../../src/queriesObserver.ts"],"sourcesContent":["import { notifyManager } from './notifyManager'\nimport { QueryObserver } from './queryObserver'\nimport { Subscribable } from './subscribable'\nimport { replaceEqualDeep, shallowEqualObjects } from './utils'\nimport type {\n DefaultedQueryObserverOptions,\n QueryObserverOptions,\n QueryObserverResult,\n} from './types'\nimport type { QueryClient } from './queryClient'\n\nfunction difference<T>(array1: Array<T>, array2: Array<T>): Array<T> {\n const excludeSet = new Set(array2)\n return array1.filter((x) => !excludeSet.has(x))\n}\n\ntype QueriesObserverListener = (result: Array<QueryObserverResult>) => void\n\ntype CombineFn<TCombinedResult> = (\n result: Array<QueryObserverResult>,\n) => TCombinedResult\n\nexport interface QueriesObserverOptions<\n TCombinedResult = Array<QueryObserverResult>,\n> {\n combine?: CombineFn<TCombinedResult>\n}\n\nexport class QueriesObserver<\n TCombinedResult = Array<QueryObserverResult>,\n> extends Subscribable<QueriesObserverListener> {\n #client: QueryClient\n #result!: Array<QueryObserverResult>\n #queries: Array<QueryObserverOptions>\n #options?: QueriesObserverOptions<TCombinedResult>\n #observers: Array<QueryObserver>\n #combinedResult!: TCombinedResult\n #lastCombine?: CombineFn<TCombinedResult>\n #lastResult?: Array<QueryObserverResult>\n #lastQueryHashes?: Array<string>\n #observerMatches: Array<QueryObserverMatch> = []\n\n constructor(\n client: QueryClient,\n queries: Array<QueryObserverOptions<any, any, any, any, any>>,\n options?: QueriesObserverOptions<TCombinedResult>,\n ) {\n super()\n\n this.#client = client\n this.#options = options\n this.#queries = []\n this.#observers = []\n this.#result = []\n\n this.setQueries(queries)\n }\n\n protected onSubscribe(): void {\n if (this.listeners.size === 1) {\n this.#observers.forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result)\n })\n })\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.size) {\n this.destroy()\n }\n }\n\n destroy(): void {\n this.listeners = new Set()\n this.#observers.forEach((observer) => {\n observer.destroy()\n })\n }\n\n setQueries(\n queries: Array<QueryObserverOptions>,\n options?: QueriesObserverOptions<TCombinedResult>,\n ): void {\n this.#queries = queries\n this.#options = options\n\n if (process.env.NODE_ENV !== 'production') {\n const queryHashes = queries.map(\n (query) => this.#client.defaultQueryOptions(query).queryHash,\n )\n if (new Set(queryHashes).size !== queryHashes.length) {\n console.warn(\n '[QueriesObserver]: Duplicate Queries found. This might result in unexpected behavior.',\n )\n }\n }\n\n notifyManager.batch(() => {\n const prevObservers = this.#observers\n\n const newObserverMatches = this.#findMatchingObservers(this.#queries)\n\n // set options for the new observers to notify of changes\n newObserverMatches.forEach((match) =>\n match.observer.setOptions(match.defaultedQueryOptions),\n )\n\n const newObservers = newObserverMatches.map((match) => match.observer)\n const newResult = newObservers.map((observer) =>\n observer.getCurrentResult(),\n )\n\n const hasLengthChange = prevObservers.length !== newObservers.length\n const hasIndexChange = newObservers.some(\n (observer, index) => observer !== prevObservers[index],\n )\n const hasStructuralChange = hasLengthChange || hasIndexChange\n\n const hasResultChange = hasStructuralChange\n ? true\n : newResult.some((result, index) => {\n const prev = this.#result[index]\n return !prev || !shallowEqualObjects(result, prev)\n })\n\n if (!hasStructuralChange && !hasResultChange) return\n\n if (hasStructuralChange) {\n this.#observerMatches = newObserverMatches\n this.#observers = newObservers\n }\n\n this.#result = newResult\n\n if (!this.hasListeners()) return\n\n if (hasStructuralChange) {\n difference(prevObservers, newObservers).forEach((observer) => {\n observer.destroy()\n })\n difference(newObservers, prevObservers).forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result)\n })\n })\n }\n\n this.#notify()\n })\n }\n\n getCurrentResult(): Array<QueryObserverResult> {\n return this.#result\n }\n\n getQueries() {\n return this.#observers.map((observer) => observer.getCurrentQuery())\n }\n\n getObservers() {\n return this.#observers\n }\n\n getOptimisticResult(\n queries: Array<QueryObserverOptions>,\n combine: CombineFn<TCombinedResult> | undefined,\n ): [\n rawResult: Array<QueryObserverResult>,\n combineResult: (r?: Array<QueryObserverResult>) => TCombinedResult,\n trackResult: () => Array<QueryObserverResult>,\n ] {\n const matches = this.#findMatchingObservers(queries)\n const result = matches.map((match) =>\n match.observer.getOptimisticResult(match.defaultedQueryOptions),\n )\n const queryHashes = matches.map(\n (match) => match.defaultedQueryOptions.queryHash,\n )\n\n return [\n result,\n (r?: Array<QueryObserverResult>) => {\n return this.#combineResult(r ?? result, combine, queryHashes)\n },\n () => {\n return this.#trackResult(result, matches)\n },\n ]\n }\n\n #trackResult(\n result: Array<QueryObserverResult>,\n matches: Array<QueryObserverMatch>,\n ) {\n const trackedProps = new Set<keyof QueryObserverResult>()\n\n return matches.map((match, index) => {\n const observerResult = result[index]!\n return !match.defaultedQueryOptions.notifyOnChangeProps\n ? match.observer.trackResult(observerResult, (accessedProp) => {\n // track property on all observers to ensure proper (synchronized) tracking (#7000)\n if (!trackedProps.has(accessedProp)) {\n trackedProps.add(accessedProp)\n matches.forEach((m) => {\n m.observer.trackProp(accessedProp)\n })\n }\n })\n : observerResult\n })\n }\n\n #combineResult(\n input: Array<QueryObserverResult>,\n combine: CombineFn<TCombinedResult> | undefined,\n queryHashes?: Array<string>,\n ): TCombinedResult {\n if (combine) {\n const lastHashes = this.#lastQueryHashes\n const queryHashesChanged =\n queryHashes !== undefined &&\n lastHashes !== undefined &&\n (lastHashes.length !== queryHashes.length ||\n queryHashes.some((hash, i) => hash !== lastHashes[i]))\n\n if (\n this.#result !== this.#lastResult ||\n queryHashesChanged ||\n combine !== this.#lastCombine\n ) {\n this.#lastCombine = combine\n this.#lastResult = this.#result\n\n if (queryHashes !== undefined) {\n this.#lastQueryHashes = queryHashes\n }\n this.#combinedResult = replaceEqualDeep(\n this.#combinedResult,\n combine(input),\n )\n }\n\n return this.#combinedResult\n }\n return input as any\n }\n\n #shouldSkipCombine(): boolean {\n return (\n !this.#options?.combine ||\n this.#observers.some((observer, index) => {\n return (\n observer.options.suspense && this.#result[index]?.data === undefined\n )\n })\n )\n }\n\n #findMatchingObservers(\n queries: Array<QueryObserverOptions>,\n ): Array<QueryObserverMatch> {\n const prevObserversMap = new Map<string, Array<QueryObserver>>()\n\n this.#observers.forEach((observer) => {\n const key = observer.options.queryHash\n if (!key) return\n\n const previousObservers = prevObserversMap.get(key)\n\n if (previousObservers) {\n previousObservers.push(observer)\n } else {\n prevObserversMap.set(key, [observer])\n }\n })\n\n const observers: Array<QueryObserverMatch> = []\n\n queries.forEach((options) => {\n const defaultedOptions = this.#client.defaultQueryOptions(options)\n const match = prevObserversMap.get(defaultedOptions.queryHash)?.shift()\n const observer =\n match ?? new QueryObserver(this.#client, defaultedOptions)\n\n observers.push({\n defaultedQueryOptions: defaultedOptions,\n observer,\n })\n })\n\n return observers\n }\n\n #onUpdate(observer: QueryObserver, result: QueryObserverResult): void {\n const index = this.#observers.indexOf(observer)\n if (index !== -1) {\n this.#result = this.#result.slice()\n this.#result[index] = result\n this.#notify()\n }\n }\n\n #notify(): void {\n if (this.hasListeners()) {\n const shouldSkipCombine = this.#shouldSkipCombine()\n const previousResult = this.#combinedResult\n const newResult = shouldSkipCombine\n ? previousResult\n : this.#combineResult(\n this.#trackResult(this.#result, this.#observerMatches),\n this.#options?.combine,\n )\n\n if (shouldSkipCombine || previousResult !== newResult) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(this.#result)\n })\n })\n }\n }\n }\n}\n\ntype QueryObserverMatch = {\n defaultedQueryOptions: DefaultedQueryObserverOptions\n observer: QueryObserver\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"queriesObserver.cjs","names":["Subscribable","shallowEqualObjects","replaceEqualDeep","QueryObserver"],"sources":["../../src/queriesObserver.ts"],"sourcesContent":["import { notifyManager } from './notifyManager'\nimport { QueryObserver } from './queryObserver'\nimport { Subscribable } from './subscribable'\nimport { replaceEqualDeep, shallowEqualObjects } from './utils'\nimport type {\n DefaultedQueryObserverOptions,\n QueryObserverOptions,\n QueryObserverResult,\n} from './types'\nimport type { QueryClient } from './queryClient'\n\nfunction difference<T>(array1: Array<T>, array2: Array<T>): Array<T> {\n const excludeSet = new Set(array2)\n return array1.filter((x) => !excludeSet.has(x))\n}\n\ntype QueriesObserverListener = (result: Array<QueryObserverResult>) => void\n\ntype CombineFn<TCombinedResult> = (\n result: Array<QueryObserverResult>,\n) => TCombinedResult\n\nexport interface QueriesObserverOptions<\n TCombinedResult = Array<QueryObserverResult>,\n> {\n /**\n * A function that combines the array of `QueryObserverResult`s (one per\n * observed query) into a single value. The combined value is memoized and\n * only recomputed when one of the underlying results, the query hashes, or\n * the `combine` function itself changes.\n *\n * Defaults to returning the array of `QueryObserverResult`s unchanged.\n */\n combine?: CombineFn<TCombinedResult>\n}\n\n/**\n * A `QueriesObserver` watches an array of queries at once, exposing them as\n * a single array of `QueryObserverResult`s (or, when a `combine` option is\n * given, as a combined value derived from that array). It manages one\n * internal `QueryObserver` per query, and is the primitive that framework\n * adapters (e.g. `useQueries`) build their hooks on top of.\n *\n * @example\n * ```ts\n * const observer = new QueriesObserver(queryClient, [\n * { queryKey: ['post', 1], queryFn: fetchPost },\n * { queryKey: ['post', 2], queryFn: fetchPost },\n * ])\n *\n * const unsubscribe = observer.subscribe((result) => {\n * console.log(result)\n * })\n * ```\n */\nexport class QueriesObserver<\n TCombinedResult = Array<QueryObserverResult>,\n> extends Subscribable<QueriesObserverListener> {\n #client: QueryClient\n #result!: Array<QueryObserverResult>\n #queries: Array<QueryObserverOptions>\n #options?: QueriesObserverOptions<TCombinedResult>\n #observers: Array<QueryObserver>\n #combinedResult!: TCombinedResult\n #lastCombine?: CombineFn<TCombinedResult>\n #lastResult?: Array<QueryObserverResult>\n #lastQueryHashes?: Array<string>\n #observerMatches: Array<QueryObserverMatch> = []\n\n constructor(\n client: QueryClient,\n queries: Array<QueryObserverOptions<any, any, any, any, any>>,\n options?: QueriesObserverOptions<TCombinedResult>,\n ) {\n super()\n\n this.#client = client\n this.#options = options\n this.#queries = []\n this.#observers = []\n this.#result = []\n\n this.setQueries(queries)\n }\n\n protected onSubscribe(): void {\n if (this.listeners.size === 1) {\n this.#observers.forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result)\n })\n })\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.size) {\n this.destroy()\n }\n }\n\n /**\n * Stops observing all queries: clears all listeners and destroys every\n * underlying `QueryObserver` this observer manages.\n */\n destroy(): void {\n this.listeners = new Set()\n this.#observers.forEach((observer) => {\n observer.destroy()\n })\n }\n\n /**\n * Replaces the set of queries being observed. Existing `QueryObserver`s\n * are reused for queries that match an already-observed query hash;\n * observers for queries that are no longer present are destroyed, and new\n * observers are created and subscribed to for newly added queries.\n *\n * @example\n * ```ts\n * observer.setQueries([\n * { queryKey: ['post', 1], queryFn: fetchPost },\n * { queryKey: ['post', 3], queryFn: fetchPost },\n * ])\n * ```\n */\n setQueries(\n queries: Array<QueryObserverOptions>,\n options?: QueriesObserverOptions<TCombinedResult>,\n ): void {\n this.#queries = queries\n this.#options = options\n\n if (process.env.NODE_ENV !== 'production') {\n const queryHashes = queries.map(\n (query) => this.#client.defaultQueryOptions(query).queryHash,\n )\n if (new Set(queryHashes).size !== queryHashes.length) {\n console.warn(\n '[QueriesObserver]: Duplicate Queries found. This might result in unexpected behavior.',\n )\n }\n }\n\n notifyManager.batch(() => {\n const prevObservers = this.#observers\n\n const newObserverMatches = this.#findMatchingObservers(this.#queries)\n\n // set options for the new observers to notify of changes\n newObserverMatches.forEach((match) =>\n match.observer.setOptions(match.defaultedQueryOptions),\n )\n\n const newObservers = newObserverMatches.map((match) => match.observer)\n const newResult = newObservers.map((observer) =>\n observer.getCurrentResult(),\n )\n\n const hasLengthChange = prevObservers.length !== newObservers.length\n const hasIndexChange = newObservers.some(\n (observer, index) => observer !== prevObservers[index],\n )\n const hasStructuralChange = hasLengthChange || hasIndexChange\n\n const hasResultChange = hasStructuralChange\n ? true\n : newResult.some((result, index) => {\n const prev = this.#result[index]\n return !prev || !shallowEqualObjects(result, prev)\n })\n\n if (!hasStructuralChange && !hasResultChange) return\n\n if (hasStructuralChange) {\n this.#observerMatches = newObserverMatches\n this.#observers = newObservers\n }\n\n this.#result = newResult\n\n if (!this.hasListeners()) return\n\n if (hasStructuralChange) {\n difference(prevObservers, newObservers).forEach((observer) => {\n observer.destroy()\n })\n difference(newObservers, prevObservers).forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result)\n })\n })\n }\n\n this.#notify()\n })\n }\n\n /**\n * Returns the most recently computed array of `QueryObserverResult`s, one\n * per observed query, in the same order as the queries passed to the\n * constructor or `setQueries`.\n *\n * @example\n * ```ts\n * const results = observer.getCurrentResult()\n * const data = results.map((result) => result.data)\n * ```\n */\n getCurrentResult(): Array<QueryObserverResult> {\n return this.#result\n }\n\n /**\n * Returns the underlying `Query` instances currently being observed, in\n * the same order as the queries passed to the constructor or `setQueries`.\n */\n getQueries() {\n return this.#observers.map((observer) => observer.getCurrentQuery())\n }\n\n /**\n * Returns the underlying `QueryObserver` instances this observer manages,\n * in the same order as the queries passed to the constructor or\n * `setQueries`.\n */\n getObservers() {\n return this.#observers\n }\n\n /**\n * The `QueriesObserver` counterpart of {@link QueryObserver#getOptimisticResult} — computes\n * the result for the given (already-defaulted) queries right now, synchronously. Called by\n * framework adapters (e.g. `useQueries`) ahead of subscribing, returning a tuple of the raw\n * per-query results, a function to compute the combined result from them, and a function to\n * wrap the results for property-access tracking.\n */\n getOptimisticResult(\n queries: Array<QueryObserverOptions>,\n combine: CombineFn<TCombinedResult> | undefined,\n ): [\n rawResult: Array<QueryObserverResult>,\n combineResult: (r?: Array<QueryObserverResult>) => TCombinedResult,\n trackResult: () => Array<QueryObserverResult>,\n ] {\n const matches = this.#findMatchingObservers(queries)\n const result = matches.map((match) =>\n match.observer.getOptimisticResult(match.defaultedQueryOptions),\n )\n const queryHashes = matches.map(\n (match) => match.defaultedQueryOptions.queryHash,\n )\n\n return [\n result,\n (r?: Array<QueryObserverResult>) => {\n return this.#combineResult(r ?? result, combine, queryHashes)\n },\n () => {\n return this.#trackResult(result, matches)\n },\n ]\n }\n\n #trackResult(\n result: Array<QueryObserverResult>,\n matches: Array<QueryObserverMatch>,\n ) {\n const trackedProps = new Set<keyof QueryObserverResult>()\n\n return matches.map((match, index) => {\n const observerResult = result[index]!\n return !match.defaultedQueryOptions.notifyOnChangeProps\n ? match.observer.trackResult(observerResult, (accessedProp) => {\n // track property on all observers to ensure proper (synchronized) tracking (#7000)\n if (!trackedProps.has(accessedProp)) {\n trackedProps.add(accessedProp)\n matches.forEach((m) => {\n m.observer.trackProp(accessedProp)\n })\n }\n })\n : observerResult\n })\n }\n\n #combineResult(\n input: Array<QueryObserverResult>,\n combine: CombineFn<TCombinedResult> | undefined,\n queryHashes?: Array<string>,\n ): TCombinedResult {\n if (combine) {\n const lastHashes = this.#lastQueryHashes\n const queryHashesChanged =\n queryHashes !== undefined &&\n lastHashes !== undefined &&\n (lastHashes.length !== queryHashes.length ||\n queryHashes.some((hash, i) => hash !== lastHashes[i]))\n\n if (\n this.#result !== this.#lastResult ||\n queryHashesChanged ||\n combine !== this.#lastCombine\n ) {\n this.#lastCombine = combine\n this.#lastResult = this.#result\n\n if (queryHashes !== undefined) {\n this.#lastQueryHashes = queryHashes\n }\n this.#combinedResult = replaceEqualDeep(\n this.#combinedResult,\n combine(input),\n )\n }\n\n return this.#combinedResult\n }\n return input as any\n }\n\n #shouldSkipCombine(): boolean {\n return (\n !this.#options?.combine ||\n this.#observers.some((observer, index) => {\n return (\n observer.options.suspense && this.#result[index]?.data === undefined\n )\n })\n )\n }\n\n #findMatchingObservers(\n queries: Array<QueryObserverOptions>,\n ): Array<QueryObserverMatch> {\n const prevObserversMap = new Map<string, Array<QueryObserver>>()\n\n this.#observers.forEach((observer) => {\n const key = observer.options.queryHash\n if (!key) return\n\n const previousObservers = prevObserversMap.get(key)\n\n if (previousObservers) {\n previousObservers.push(observer)\n } else {\n prevObserversMap.set(key, [observer])\n }\n })\n\n const observers: Array<QueryObserverMatch> = []\n\n queries.forEach((options) => {\n const defaultedOptions = this.#client.defaultQueryOptions(options)\n const match = prevObserversMap.get(defaultedOptions.queryHash)?.shift()\n const observer =\n match ?? new QueryObserver(this.#client, defaultedOptions)\n\n observers.push({\n defaultedQueryOptions: defaultedOptions,\n observer,\n })\n })\n\n return observers\n }\n\n #onUpdate(observer: QueryObserver, result: QueryObserverResult): void {\n const index = this.#observers.indexOf(observer)\n if (index !== -1) {\n this.#result = this.#result.slice()\n this.#result[index] = result\n this.#notify()\n }\n }\n\n #notify(): void {\n if (this.hasListeners()) {\n const shouldSkipCombine = this.#shouldSkipCombine()\n const previousResult = this.#combinedResult\n const newResult = shouldSkipCombine\n ? previousResult\n : this.#combineResult(\n this.#trackResult(this.#result, this.#observerMatches),\n this.#options?.combine,\n )\n\n if (shouldSkipCombine || previousResult !== newResult) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(this.#result)\n })\n })\n }\n }\n }\n}\n\ntype QueryObserverMatch = {\n defaultedQueryOptions: DefaultedQueryObserverOptions\n observer: QueryObserver\n}\n"],"mappings":"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"}
@@ -1,21 +1,93 @@
1
1
  import { t as Subscribable } from "./subscribable-CbifVTKz.cjs";
2
- import { $n as Query, At as QueryObserverOptions, Pt as QueryObserverResult, on as QueryClient, rr as QueryObserver } from "./hydration-DWGr3cFC.cjs";
2
+ import { $n as Query, At as QueryObserverOptions, Pt as QueryObserverResult, on as QueryClient, rr as QueryObserver } from "./hydration-DwR10Hi-.cjs";
3
3
  //#region src/queriesObserver.d.ts
4
4
  type QueriesObserverListener = (result: Array<QueryObserverResult>) => void;
5
5
  type CombineFn<TCombinedResult> = (result: Array<QueryObserverResult>) => TCombinedResult;
6
6
  interface QueriesObserverOptions<TCombinedResult = Array<QueryObserverResult>> {
7
+ /**
8
+ * A function that combines the array of `QueryObserverResult`s (one per
9
+ * observed query) into a single value. The combined value is memoized and
10
+ * only recomputed when one of the underlying results, the query hashes, or
11
+ * the `combine` function itself changes.
12
+ *
13
+ * Defaults to returning the array of `QueryObserverResult`s unchanged.
14
+ */
7
15
  combine?: CombineFn<TCombinedResult>;
8
16
  }
17
+ /**
18
+ * A `QueriesObserver` watches an array of queries at once, exposing them as
19
+ * a single array of `QueryObserverResult`s (or, when a `combine` option is
20
+ * given, as a combined value derived from that array). It manages one
21
+ * internal `QueryObserver` per query, and is the primitive that framework
22
+ * adapters (e.g. `useQueries`) build their hooks on top of.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * const observer = new QueriesObserver(queryClient, [
27
+ * { queryKey: ['post', 1], queryFn: fetchPost },
28
+ * { queryKey: ['post', 2], queryFn: fetchPost },
29
+ * ])
30
+ *
31
+ * const unsubscribe = observer.subscribe((result) => {
32
+ * console.log(result)
33
+ * })
34
+ * ```
35
+ */
9
36
  declare class QueriesObserver<TCombinedResult = Array<QueryObserverResult>> extends Subscribable<QueriesObserverListener> {
10
37
  #private;
11
38
  constructor(client: QueryClient, queries: Array<QueryObserverOptions<any, any, any, any, any>>, options?: QueriesObserverOptions<TCombinedResult>);
12
39
  protected onSubscribe(): void;
13
40
  protected onUnsubscribe(): void;
41
+ /**
42
+ * Stops observing all queries: clears all listeners and destroys every
43
+ * underlying `QueryObserver` this observer manages.
44
+ */
14
45
  destroy(): void;
46
+ /**
47
+ * Replaces the set of queries being observed. Existing `QueryObserver`s
48
+ * are reused for queries that match an already-observed query hash;
49
+ * observers for queries that are no longer present are destroyed, and new
50
+ * observers are created and subscribed to for newly added queries.
51
+ *
52
+ * @example
53
+ * ```ts
54
+ * observer.setQueries([
55
+ * { queryKey: ['post', 1], queryFn: fetchPost },
56
+ * { queryKey: ['post', 3], queryFn: fetchPost },
57
+ * ])
58
+ * ```
59
+ */
15
60
  setQueries(queries: Array<QueryObserverOptions>, options?: QueriesObserverOptions<TCombinedResult>): void;
61
+ /**
62
+ * Returns the most recently computed array of `QueryObserverResult`s, one
63
+ * per observed query, in the same order as the queries passed to the
64
+ * constructor or `setQueries`.
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * const results = observer.getCurrentResult()
69
+ * const data = results.map((result) => result.data)
70
+ * ```
71
+ */
16
72
  getCurrentResult(): Array<QueryObserverResult>;
73
+ /**
74
+ * Returns the underlying `Query` instances currently being observed, in
75
+ * the same order as the queries passed to the constructor or `setQueries`.
76
+ */
17
77
  getQueries(): Query<unknown, Error, unknown, readonly unknown[]>[];
78
+ /**
79
+ * Returns the underlying `QueryObserver` instances this observer manages,
80
+ * in the same order as the queries passed to the constructor or
81
+ * `setQueries`.
82
+ */
18
83
  getObservers(): QueryObserver<unknown, Error, unknown, unknown, readonly unknown[]>[];
84
+ /**
85
+ * The `QueriesObserver` counterpart of {@link QueryObserver#getOptimisticResult} — computes
86
+ * the result for the given (already-defaulted) queries right now, synchronously. Called by
87
+ * framework adapters (e.g. `useQueries`) ahead of subscribing, returning a tuple of the raw
88
+ * per-query results, a function to compute the combined result from them, and a function to
89
+ * wrap the results for property-access tracking.
90
+ */
19
91
  getOptimisticResult(queries: Array<QueryObserverOptions>, combine: CombineFn<TCombinedResult> | undefined): [rawResult: Array<QueryObserverResult>, combineResult: (r?: Array<QueryObserverResult>) => TCombinedResult, trackResult: () => Array<QueryObserverResult>];
20
92
  }
21
93
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"queriesObserver.d.cts","names":[],"sources":["../../src/queriesObserver.ts"],"mappings":";;;KAgBK,2BAA2B,QAAQ,MAAM;KAEzC,UAAU,oBACb,QAAQ,MAAM,yBACX;UAEY,uBACf,kBAAkB,MAAM;EAExB,UAAU,UAAU;;cAGT,gBACX,kBAAkB,MAAM,8BAChB,aAAa;;EAanB,YAAA,QAAQ,aACR,SAAS,MAAM,gDACf,UAAU,uBAAuB;YAazB;YAUA;EAMV;EAOA,WACE,SAAS,MAAM,uBACf,UAAU,uBAAuB;EAsEnC,oBAAoB,MAAM;EAI1B,cAAU,eAAA;EAIV,gBAAY,uBAAA;EAIZ,oBACE,SAAS,MAAM,uBACf,SAAS,UAAU,gCAEnB,WAAW,MAAM,sBACjB,gBAAgB,IAAI,MAAM,yBAAyB,iBACnD,mBAAmB,MAAM"}
1
+ {"version":3,"file":"queriesObserver.d.cts","names":[],"sources":["../../src/queriesObserver.ts"],"mappings":";;;KAgBK,2BAA2B,QAAQ,MAAM;KAEzC,UAAU,oBACb,QAAQ,MAAM,yBACX;UAEY,uBACf,kBAAkB,MAAM;;;;;;;;;EAUxB,UAAU,UAAU;;;;;;;;;;;;;;;;;;;;;cAsBT,gBACX,kBAAkB,MAAM,8BAChB,aAAa;;EAanB,YAAA,QAAQ,aACR,SAAS,MAAM,gDACf,UAAU,uBAAuB;YAazB;YAUA;;;;;EAUV;;;;;;;;;;;;;;;EAqBA,WACE,SAAS,MAAM,uBACf,UAAU,uBAAuB;;;;;;;;;;;;EAiFnC,oBAAoB,MAAM;;;;;EAQ1B,cAAU,eAAA;;;;;;EASV,gBAAY,uBAAA;;;;;;;;EAWZ,oBACE,SAAS,MAAM,uBACf,SAAS,UAAU,gCAEnB,WAAW,MAAM,sBACjB,gBAAgB,IAAI,MAAM,yBAAyB,iBACnD,mBAAmB,MAAM"}
@@ -1,21 +1,93 @@
1
1
  import { t as Subscribable } from "./subscribable-CbifVTKz.js";
2
- import { $n as Query, At as QueryObserverOptions, Pt as QueryObserverResult, on as QueryClient, rr as QueryObserver } from "./hydration-Bjs0MSgg.js";
2
+ import { $n as Query, At as QueryObserverOptions, Pt as QueryObserverResult, on as QueryClient, rr as QueryObserver } from "./hydration-Cq7QYAzB.js";
3
3
  //#region src/queriesObserver.d.ts
4
4
  type QueriesObserverListener = (result: Array<QueryObserverResult>) => void;
5
5
  type CombineFn<TCombinedResult> = (result: Array<QueryObserverResult>) => TCombinedResult;
6
6
  interface QueriesObserverOptions<TCombinedResult = Array<QueryObserverResult>> {
7
+ /**
8
+ * A function that combines the array of `QueryObserverResult`s (one per
9
+ * observed query) into a single value. The combined value is memoized and
10
+ * only recomputed when one of the underlying results, the query hashes, or
11
+ * the `combine` function itself changes.
12
+ *
13
+ * Defaults to returning the array of `QueryObserverResult`s unchanged.
14
+ */
7
15
  combine?: CombineFn<TCombinedResult>;
8
16
  }
17
+ /**
18
+ * A `QueriesObserver` watches an array of queries at once, exposing them as
19
+ * a single array of `QueryObserverResult`s (or, when a `combine` option is
20
+ * given, as a combined value derived from that array). It manages one
21
+ * internal `QueryObserver` per query, and is the primitive that framework
22
+ * adapters (e.g. `useQueries`) build their hooks on top of.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * const observer = new QueriesObserver(queryClient, [
27
+ * { queryKey: ['post', 1], queryFn: fetchPost },
28
+ * { queryKey: ['post', 2], queryFn: fetchPost },
29
+ * ])
30
+ *
31
+ * const unsubscribe = observer.subscribe((result) => {
32
+ * console.log(result)
33
+ * })
34
+ * ```
35
+ */
9
36
  declare class QueriesObserver<TCombinedResult = Array<QueryObserverResult>> extends Subscribable<QueriesObserverListener> {
10
37
  #private;
11
38
  constructor(client: QueryClient, queries: Array<QueryObserverOptions<any, any, any, any, any>>, options?: QueriesObserverOptions<TCombinedResult>);
12
39
  protected onSubscribe(): void;
13
40
  protected onUnsubscribe(): void;
41
+ /**
42
+ * Stops observing all queries: clears all listeners and destroys every
43
+ * underlying `QueryObserver` this observer manages.
44
+ */
14
45
  destroy(): void;
46
+ /**
47
+ * Replaces the set of queries being observed. Existing `QueryObserver`s
48
+ * are reused for queries that match an already-observed query hash;
49
+ * observers for queries that are no longer present are destroyed, and new
50
+ * observers are created and subscribed to for newly added queries.
51
+ *
52
+ * @example
53
+ * ```ts
54
+ * observer.setQueries([
55
+ * { queryKey: ['post', 1], queryFn: fetchPost },
56
+ * { queryKey: ['post', 3], queryFn: fetchPost },
57
+ * ])
58
+ * ```
59
+ */
15
60
  setQueries(queries: Array<QueryObserverOptions>, options?: QueriesObserverOptions<TCombinedResult>): void;
61
+ /**
62
+ * Returns the most recently computed array of `QueryObserverResult`s, one
63
+ * per observed query, in the same order as the queries passed to the
64
+ * constructor or `setQueries`.
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * const results = observer.getCurrentResult()
69
+ * const data = results.map((result) => result.data)
70
+ * ```
71
+ */
16
72
  getCurrentResult(): Array<QueryObserverResult>;
73
+ /**
74
+ * Returns the underlying `Query` instances currently being observed, in
75
+ * the same order as the queries passed to the constructor or `setQueries`.
76
+ */
17
77
  getQueries(): Query<unknown, Error, unknown, readonly unknown[]>[];
78
+ /**
79
+ * Returns the underlying `QueryObserver` instances this observer manages,
80
+ * in the same order as the queries passed to the constructor or
81
+ * `setQueries`.
82
+ */
18
83
  getObservers(): QueryObserver<unknown, Error, unknown, unknown, readonly unknown[]>[];
84
+ /**
85
+ * The `QueriesObserver` counterpart of {@link QueryObserver#getOptimisticResult} — computes
86
+ * the result for the given (already-defaulted) queries right now, synchronously. Called by
87
+ * framework adapters (e.g. `useQueries`) ahead of subscribing, returning a tuple of the raw
88
+ * per-query results, a function to compute the combined result from them, and a function to
89
+ * wrap the results for property-access tracking.
90
+ */
19
91
  getOptimisticResult(queries: Array<QueryObserverOptions>, combine: CombineFn<TCombinedResult> | undefined): [rawResult: Array<QueryObserverResult>, combineResult: (r?: Array<QueryObserverResult>) => TCombinedResult, trackResult: () => Array<QueryObserverResult>];
20
92
  }
21
93
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"queriesObserver.d.ts","names":[],"sources":["../../src/queriesObserver.ts"],"mappings":";;;KAgBK,2BAA2B,QAAQ,MAAM;KAEzC,UAAU,oBACb,QAAQ,MAAM,yBACX;UAEY,uBACf,kBAAkB,MAAM;EAExB,UAAU,UAAU;;cAGT,gBACX,kBAAkB,MAAM,8BAChB,aAAa;;EAanB,YAAA,QAAQ,aACR,SAAS,MAAM,gDACf,UAAU,uBAAuB;YAazB;YAUA;EAMV;EAOA,WACE,SAAS,MAAM,uBACf,UAAU,uBAAuB;EAsEnC,oBAAoB,MAAM;EAI1B,cAAU,eAAA;EAIV,gBAAY,uBAAA;EAIZ,oBACE,SAAS,MAAM,uBACf,SAAS,UAAU,gCAEnB,WAAW,MAAM,sBACjB,gBAAgB,IAAI,MAAM,yBAAyB,iBACnD,mBAAmB,MAAM"}
1
+ {"version":3,"file":"queriesObserver.d.ts","names":[],"sources":["../../src/queriesObserver.ts"],"mappings":";;;KAgBK,2BAA2B,QAAQ,MAAM;KAEzC,UAAU,oBACb,QAAQ,MAAM,yBACX;UAEY,uBACf,kBAAkB,MAAM;;;;;;;;;EAUxB,UAAU,UAAU;;;;;;;;;;;;;;;;;;;;;cAsBT,gBACX,kBAAkB,MAAM,8BAChB,aAAa;;EAanB,YAAA,QAAQ,aACR,SAAS,MAAM,gDACf,UAAU,uBAAuB;YAazB;YAUA;;;;;EAUV;;;;;;;;;;;;;;;EAqBA,WACE,SAAS,MAAM,uBACf,UAAU,uBAAuB;;;;;;;;;;;;EAiFnC,oBAAoB,MAAM;;;;;EAQ1B,cAAU,eAAA;;;;;;EASV,gBAAY,uBAAA;;;;;;;;EAWZ,oBACE,SAAS,MAAM,uBACf,SAAS,UAAU,gCAEnB,WAAW,MAAM,sBACjB,gBAAgB,IAAI,MAAM,yBAAyB,iBACnD,mBAAmB,MAAM"}
@@ -20,6 +20,25 @@ var _lastResult = /* @__PURE__ */ new WeakMap();
20
20
  var _lastQueryHashes = /* @__PURE__ */ new WeakMap();
21
21
  var _observerMatches = /* @__PURE__ */ new WeakMap();
22
22
  var _QueriesObserver_brand = /* @__PURE__ */ new WeakSet();
23
+ /**
24
+ * A `QueriesObserver` watches an array of queries at once, exposing them as
25
+ * a single array of `QueryObserverResult`s (or, when a `combine` option is
26
+ * given, as a combined value derived from that array). It manages one
27
+ * internal `QueryObserver` per query, and is the primitive that framework
28
+ * adapters (e.g. `useQueries`) build their hooks on top of.
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * const observer = new QueriesObserver(queryClient, [
33
+ * { queryKey: ['post', 1], queryFn: fetchPost },
34
+ * { queryKey: ['post', 2], queryFn: fetchPost },
35
+ * ])
36
+ *
37
+ * const unsubscribe = observer.subscribe((result) => {
38
+ * console.log(result)
39
+ * })
40
+ * ```
41
+ */
23
42
  var QueriesObserver = class extends Subscribable {
24
43
  constructor(client, queries, options) {
25
44
  super();
@@ -51,12 +70,30 @@ var QueriesObserver = class extends Subscribable {
51
70
  onUnsubscribe() {
52
71
  if (!this.listeners.size) this.destroy();
53
72
  }
73
+ /**
74
+ * Stops observing all queries: clears all listeners and destroys every
75
+ * underlying `QueryObserver` this observer manages.
76
+ */
54
77
  destroy() {
55
78
  this.listeners = /* @__PURE__ */ new Set();
56
79
  _classPrivateFieldGet2(_observers, this).forEach((observer) => {
57
80
  observer.destroy();
58
81
  });
59
82
  }
83
+ /**
84
+ * Replaces the set of queries being observed. Existing `QueryObserver`s
85
+ * are reused for queries that match an already-observed query hash;
86
+ * observers for queries that are no longer present are destroyed, and new
87
+ * observers are created and subscribed to for newly added queries.
88
+ *
89
+ * @example
90
+ * ```ts
91
+ * observer.setQueries([
92
+ * { queryKey: ['post', 1], queryFn: fetchPost },
93
+ * { queryKey: ['post', 3], queryFn: fetchPost },
94
+ * ])
95
+ * ```
96
+ */
60
97
  setQueries(queries, options) {
61
98
  _classPrivateFieldSet2(_queries, this, queries);
62
99
  _classPrivateFieldSet2(_options, this, options);
@@ -97,15 +134,42 @@ var QueriesObserver = class extends Subscribable {
97
134
  _assertClassBrand(_QueriesObserver_brand, this, _notify).call(this);
98
135
  });
99
136
  }
137
+ /**
138
+ * Returns the most recently computed array of `QueryObserverResult`s, one
139
+ * per observed query, in the same order as the queries passed to the
140
+ * constructor or `setQueries`.
141
+ *
142
+ * @example
143
+ * ```ts
144
+ * const results = observer.getCurrentResult()
145
+ * const data = results.map((result) => result.data)
146
+ * ```
147
+ */
100
148
  getCurrentResult() {
101
149
  return _classPrivateFieldGet2(_result, this);
102
150
  }
151
+ /**
152
+ * Returns the underlying `Query` instances currently being observed, in
153
+ * the same order as the queries passed to the constructor or `setQueries`.
154
+ */
103
155
  getQueries() {
104
156
  return _classPrivateFieldGet2(_observers, this).map((observer) => observer.getCurrentQuery());
105
157
  }
158
+ /**
159
+ * Returns the underlying `QueryObserver` instances this observer manages,
160
+ * in the same order as the queries passed to the constructor or
161
+ * `setQueries`.
162
+ */
106
163
  getObservers() {
107
164
  return _classPrivateFieldGet2(_observers, this);
108
165
  }
166
+ /**
167
+ * The `QueriesObserver` counterpart of {@link QueryObserver#getOptimisticResult} — computes
168
+ * the result for the given (already-defaulted) queries right now, synchronously. Called by
169
+ * framework adapters (e.g. `useQueries`) ahead of subscribing, returning a tuple of the raw
170
+ * per-query results, a function to compute the combined result from them, and a function to
171
+ * wrap the results for property-access tracking.
172
+ */
109
173
  getOptimisticResult(queries, combine) {
110
174
  const matches = _assertClassBrand(_QueriesObserver_brand, this, _findMatchingObservers).call(this, queries);
111
175
  const result = matches.map((match) => match.observer.getOptimisticResult(match.defaultedQueryOptions));