@tanstack/query-core 5.101.4 → 5.102.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 (370) hide show
  1. package/build/legacy/classPrivateFieldSet2-Bo0ZyOIv.cjs +56 -0
  2. package/build/legacy/classPrivateFieldSet2-CV7wyte-.js +27 -0
  3. package/build/legacy/classPrivateMethodInitSpec-CBwa_Y7C.js +7 -0
  4. package/build/legacy/classPrivateMethodInitSpec-DVhcLejn.cjs +12 -0
  5. package/build/legacy/environmentManager.cjs +25 -46
  6. package/build/legacy/environmentManager.cjs.map +1 -1
  7. package/build/legacy/environmentManager.d.cts +18 -2
  8. package/build/legacy/environmentManager.d.cts.map +1 -0
  9. package/build/legacy/environmentManager.d.ts +18 -2
  10. package/build/legacy/environmentManager.d.ts.map +1 -0
  11. package/build/legacy/environmentManager.js +23 -22
  12. package/build/legacy/environmentManager.js.map +1 -1
  13. package/build/legacy/focusManager.cjs +63 -104
  14. package/build/legacy/focusManager.cjs.map +1 -1
  15. package/build/legacy/focusManager.d.cts +18 -2
  16. package/build/legacy/focusManager.d.cts.map +1 -0
  17. package/build/legacy/focusManager.d.ts +18 -2
  18. package/build/legacy/focusManager.d.ts.map +1 -0
  19. package/build/legacy/focusManager.js +60 -76
  20. package/build/legacy/focusManager.js.map +1 -1
  21. package/build/legacy/hydration-D1E7ZbjZ.d.ts +1374 -0
  22. package/build/legacy/hydration-D1E7ZbjZ.d.ts.map +1 -0
  23. package/build/legacy/hydration-NBquRCHe.d.cts +1374 -0
  24. package/build/legacy/hydration-NBquRCHe.d.cts.map +1 -0
  25. package/build/legacy/hydration.cjs +114 -194
  26. package/build/legacy/hydration.cjs.map +1 -1
  27. package/build/legacy/hydration.d.cts +2 -7
  28. package/build/legacy/hydration.d.ts +2 -7
  29. package/build/legacy/hydration.js +108 -167
  30. package/build/legacy/hydration.js.map +1 -1
  31. package/build/legacy/index.cjs +59 -111
  32. package/build/legacy/index.cjs.map +1 -1
  33. package/build/legacy/index.d.cts +10 -141
  34. package/build/legacy/index.d.ts +10 -141
  35. package/build/legacy/index.js +16 -66
  36. package/build/legacy/index.js.map +1 -1
  37. package/build/legacy/infiniteQueryBehavior.cjs +92 -135
  38. package/build/legacy/infiniteQueryBehavior.cjs.map +1 -1
  39. package/build/legacy/infiniteQueryBehavior.d.cts +14 -3
  40. package/build/legacy/infiniteQueryBehavior.d.cts.map +1 -0
  41. package/build/legacy/infiniteQueryBehavior.d.ts +14 -3
  42. package/build/legacy/infiniteQueryBehavior.d.ts.map +1 -0
  43. package/build/legacy/infiniteQueryBehavior.js +89 -115
  44. package/build/legacy/infiniteQueryBehavior.js.map +1 -1
  45. package/build/legacy/infiniteQueryObserver.cjs +59 -88
  46. package/build/legacy/infiniteQueryObserver.cjs.map +1 -1
  47. package/build/legacy/infiniteQueryObserver.d.cts +20 -1
  48. package/build/legacy/infiniteQueryObserver.d.cts.map +1 -0
  49. package/build/legacy/infiniteQueryObserver.d.ts +20 -1
  50. package/build/legacy/infiniteQueryObserver.d.ts.map +1 -0
  51. package/build/legacy/infiniteQueryObserver.js +57 -64
  52. package/build/legacy/infiniteQueryObserver.js.map +1 -1
  53. package/build/legacy/mutation.cjs +236 -329
  54. package/build/legacy/mutation.cjs.map +1 -1
  55. package/build/legacy/mutation.d.cts +2 -4
  56. package/build/legacy/mutation.d.ts +2 -4
  57. package/build/legacy/mutation.js +231 -299
  58. package/build/legacy/mutation.js.map +1 -1
  59. package/build/legacy/mutationCache.cjs +121 -166
  60. package/build/legacy/mutationCache.cjs.map +1 -1
  61. package/build/legacy/mutationCache.d.cts +2 -2
  62. package/build/legacy/mutationCache.d.ts +2 -2
  63. package/build/legacy/mutationCache.js +117 -130
  64. package/build/legacy/mutationCache.js.map +1 -1
  65. package/build/legacy/mutationObserver.cjs +134 -187
  66. package/build/legacy/mutationObserver.cjs.map +1 -1
  67. package/build/legacy/mutationObserver.d.cts +2 -1
  68. package/build/legacy/mutationObserver.d.ts +2 -1
  69. package/build/legacy/mutationObserver.js +132 -160
  70. package/build/legacy/mutationObserver.js.map +1 -1
  71. package/build/legacy/notifyManager.cjs +76 -110
  72. package/build/legacy/notifyManager.cjs.map +1 -1
  73. package/build/legacy/notifyManager.d.cts +48 -3
  74. package/build/legacy/notifyManager.d.cts.map +1 -0
  75. package/build/legacy/notifyManager.d.ts +48 -3
  76. package/build/legacy/notifyManager.d.ts.map +1 -0
  77. package/build/legacy/notifyManager.js +73 -84
  78. package/build/legacy/notifyManager.js.map +1 -1
  79. package/build/legacy/onlineManager.cjs +57 -93
  80. package/build/legacy/onlineManager.cjs.map +1 -1
  81. package/build/legacy/onlineManager.d.cts +17 -2
  82. package/build/legacy/onlineManager.d.cts.map +1 -0
  83. package/build/legacy/onlineManager.d.ts +17 -2
  84. package/build/legacy/onlineManager.d.ts.map +1 -0
  85. package/build/legacy/onlineManager.js +54 -65
  86. package/build/legacy/onlineManager.js.map +1 -1
  87. package/build/legacy/queriesObserver.cjs +203 -262
  88. package/build/legacy/queriesObserver.cjs.map +1 -1
  89. package/build/legacy/queriesObserver.d.cts +23 -2
  90. package/build/legacy/queriesObserver.d.cts.map +1 -0
  91. package/build/legacy/queriesObserver.d.ts +23 -2
  92. package/build/legacy/queriesObserver.d.ts.map +1 -0
  93. package/build/legacy/queriesObserver.js +199 -233
  94. package/build/legacy/queriesObserver.js.map +1 -1
  95. package/build/legacy/query.cjs +409 -491
  96. package/build/legacy/query.cjs.map +1 -1
  97. package/build/legacy/query.d.cts +2 -9
  98. package/build/legacy/query.d.ts +2 -9
  99. package/build/legacy/query.js +402 -467
  100. package/build/legacy/query.js.map +1 -1
  101. package/build/legacy/queryCache.cjs +99 -128
  102. package/build/legacy/queryCache.cjs.map +1 -1
  103. package/build/legacy/queryCache.d.cts +2 -3
  104. package/build/legacy/queryCache.d.ts +2 -3
  105. package/build/legacy/queryCache.js +96 -100
  106. package/build/legacy/queryCache.js.map +1 -1
  107. package/build/legacy/queryClient.cjs +295 -345
  108. package/build/legacy/queryClient.cjs.map +1 -1
  109. package/build/legacy/queryClient.d.cts +2 -1
  110. package/build/legacy/queryClient.d.ts +2 -1
  111. package/build/legacy/queryClient.js +292 -318
  112. package/build/legacy/queryClient.js.map +1 -1
  113. package/build/legacy/queryObserver.cjs +350 -502
  114. package/build/legacy/queryObserver.cjs.map +1 -1
  115. package/build/legacy/queryObserver.d.cts +2 -1
  116. package/build/legacy/queryObserver.d.ts +2 -1
  117. package/build/legacy/queryObserver.js +345 -480
  118. package/build/legacy/queryObserver.js.map +1 -1
  119. package/build/legacy/removable-DeMjhW5M.d.cts +13 -0
  120. package/build/legacy/removable-DeMjhW5M.d.cts.map +1 -0
  121. package/build/legacy/removable-DeMjhW5M.d.ts +13 -0
  122. package/build/legacy/removable-DeMjhW5M.d.ts.map +1 -0
  123. package/build/legacy/removable.cjs +31 -67
  124. package/build/legacy/removable.cjs.map +1 -1
  125. package/build/legacy/removable.d.cts +2 -1
  126. package/build/legacy/removable.d.ts +2 -1
  127. package/build/legacy/removable.js +28 -39
  128. package/build/legacy/removable.js.map +1 -1
  129. package/build/legacy/retryer.cjs +127 -155
  130. package/build/legacy/retryer.cjs.map +1 -1
  131. package/build/legacy/retryer.d.cts +2 -7
  132. package/build/legacy/retryer.d.ts +2 -7
  133. package/build/legacy/retryer.js +121 -127
  134. package/build/legacy/retryer.js.map +1 -1
  135. package/build/legacy/streamedQuery.cjs +49 -78
  136. package/build/legacy/streamedQuery.cjs.map +1 -1
  137. package/build/legacy/streamedQuery.d.cts +33 -1
  138. package/build/legacy/streamedQuery.d.cts.map +1 -0
  139. package/build/legacy/streamedQuery.d.ts +33 -1
  140. package/build/legacy/streamedQuery.d.ts.map +1 -0
  141. package/build/legacy/streamedQuery.js +47 -54
  142. package/build/legacy/streamedQuery.js.map +1 -1
  143. package/build/legacy/subscribable-CbifVTKz.d.cts +12 -0
  144. package/build/legacy/subscribable-CbifVTKz.d.cts.map +1 -0
  145. package/build/legacy/subscribable-CbifVTKz.d.ts +12 -0
  146. package/build/legacy/subscribable-CbifVTKz.d.ts.map +1 -0
  147. package/build/legacy/subscribable.cjs +22 -48
  148. package/build/legacy/subscribable.cjs.map +1 -1
  149. package/build/legacy/subscribable.d.cts +2 -1
  150. package/build/legacy/subscribable.d.ts +2 -1
  151. package/build/legacy/subscribable.js +21 -25
  152. package/build/legacy/subscribable.js.map +1 -1
  153. package/build/legacy/timeoutManager.cjs +64 -105
  154. package/build/legacy/timeoutManager.cjs.map +1 -1
  155. package/build/legacy/timeoutManager.d.cts +60 -7
  156. package/build/legacy/timeoutManager.d.cts.map +1 -0
  157. package/build/legacy/timeoutManager.d.ts +60 -7
  158. package/build/legacy/timeoutManager.d.ts.map +1 -0
  159. package/build/legacy/timeoutManager.js +60 -76
  160. package/build/legacy/timeoutManager.js.map +1 -1
  161. package/build/legacy/types.cjs +10 -35
  162. package/build/legacy/types.cjs.map +1 -1
  163. package/build/legacy/types.d.cts +2 -94
  164. package/build/legacy/types.d.ts +2 -94
  165. package/build/legacy/types.js +7 -10
  166. package/build/legacy/types.js.map +1 -1
  167. package/build/legacy/utils.cjs +175 -300
  168. package/build/legacy/utils.cjs.map +1 -1
  169. package/build/legacy/utils.d.cts +2 -30
  170. package/build/legacy/utils.d.ts +2 -30
  171. package/build/legacy/utils.js +149 -252
  172. package/build/legacy/utils.js.map +1 -1
  173. package/build/modern/environmentManager.cjs +25 -46
  174. package/build/modern/environmentManager.cjs.map +1 -1
  175. package/build/modern/environmentManager.d.cts +18 -2
  176. package/build/modern/environmentManager.d.cts.map +1 -0
  177. package/build/modern/environmentManager.d.ts +18 -2
  178. package/build/modern/environmentManager.d.ts.map +1 -0
  179. package/build/modern/environmentManager.js +23 -20
  180. package/build/modern/environmentManager.js.map +1 -1
  181. package/build/modern/focusManager.cjs +56 -90
  182. package/build/modern/focusManager.cjs.map +1 -1
  183. package/build/modern/focusManager.d.cts +18 -2
  184. package/build/modern/focusManager.d.cts.map +1 -0
  185. package/build/modern/focusManager.d.ts +18 -2
  186. package/build/modern/focusManager.d.ts.map +1 -0
  187. package/build/modern/focusManager.js +53 -63
  188. package/build/modern/focusManager.js.map +1 -1
  189. package/build/modern/hydration-D1E7ZbjZ.d.ts +1374 -0
  190. package/build/modern/hydration-D1E7ZbjZ.d.ts.map +1 -0
  191. package/build/modern/hydration-NBquRCHe.d.cts +1374 -0
  192. package/build/modern/hydration-NBquRCHe.d.cts.map +1 -0
  193. package/build/modern/hydration.cjs +105 -189
  194. package/build/modern/hydration.cjs.map +1 -1
  195. package/build/modern/hydration.d.cts +2 -7
  196. package/build/modern/hydration.d.ts +2 -7
  197. package/build/modern/hydration.js +99 -160
  198. package/build/modern/hydration.js.map +1 -1
  199. package/build/modern/index.cjs +59 -111
  200. package/build/modern/index.cjs.map +1 -1
  201. package/build/modern/index.d.cts +10 -141
  202. package/build/modern/index.d.ts +10 -141
  203. package/build/modern/index.js +16 -64
  204. package/build/modern/index.js.map +1 -1
  205. package/build/modern/infiniteQueryBehavior.cjs +89 -131
  206. package/build/modern/infiniteQueryBehavior.cjs.map +1 -1
  207. package/build/modern/infiniteQueryBehavior.d.cts +14 -3
  208. package/build/modern/infiniteQueryBehavior.d.cts.map +1 -0
  209. package/build/modern/infiniteQueryBehavior.d.ts +14 -3
  210. package/build/modern/infiniteQueryBehavior.d.ts.map +1 -0
  211. package/build/modern/infiniteQueryBehavior.js +86 -109
  212. package/build/modern/infiniteQueryBehavior.js.map +1 -1
  213. package/build/modern/infiniteQueryObserver.cjs +58 -87
  214. package/build/modern/infiniteQueryObserver.cjs.map +1 -1
  215. package/build/modern/infiniteQueryObserver.d.cts +20 -1
  216. package/build/modern/infiniteQueryObserver.d.cts.map +1 -0
  217. package/build/modern/infiniteQueryObserver.d.ts +20 -1
  218. package/build/modern/infiniteQueryObserver.d.ts.map +1 -0
  219. package/build/modern/infiniteQueryObserver.js +56 -61
  220. package/build/modern/infiniteQueryObserver.js.map +1 -1
  221. package/build/modern/mutation.cjs +221 -303
  222. package/build/modern/mutation.cjs.map +1 -1
  223. package/build/modern/mutation.d.cts +2 -4
  224. package/build/modern/mutation.d.ts +2 -4
  225. package/build/modern/mutation.js +216 -274
  226. package/build/modern/mutation.js.map +1 -1
  227. package/build/modern/mutationCache.cjs +111 -145
  228. package/build/modern/mutationCache.cjs.map +1 -1
  229. package/build/modern/mutationCache.d.cts +2 -2
  230. package/build/modern/mutationCache.d.ts +2 -2
  231. package/build/modern/mutationCache.js +107 -117
  232. package/build/modern/mutationCache.js.map +1 -1
  233. package/build/modern/mutationObserver.cjs +115 -162
  234. package/build/modern/mutationObserver.cjs.map +1 -1
  235. package/build/modern/mutationObserver.d.cts +2 -1
  236. package/build/modern/mutationObserver.d.ts +2 -1
  237. package/build/modern/mutationObserver.js +113 -136
  238. package/build/modern/mutationObserver.js.map +1 -1
  239. package/build/modern/notifyManager.cjs +76 -110
  240. package/build/modern/notifyManager.cjs.map +1 -1
  241. package/build/modern/notifyManager.d.cts +48 -3
  242. package/build/modern/notifyManager.d.cts.map +1 -0
  243. package/build/modern/notifyManager.d.ts +48 -3
  244. package/build/modern/notifyManager.d.ts.map +1 -0
  245. package/build/modern/notifyManager.js +73 -82
  246. package/build/modern/notifyManager.js.map +1 -1
  247. package/build/modern/onlineManager.cjs +51 -80
  248. package/build/modern/onlineManager.cjs.map +1 -1
  249. package/build/modern/onlineManager.d.cts +17 -2
  250. package/build/modern/onlineManager.d.cts.map +1 -0
  251. package/build/modern/onlineManager.d.ts +17 -2
  252. package/build/modern/onlineManager.d.ts.map +1 -0
  253. package/build/modern/onlineManager.js +48 -53
  254. package/build/modern/onlineManager.js.map +1 -1
  255. package/build/modern/queriesObserver.cjs +185 -237
  256. package/build/modern/queriesObserver.cjs.map +1 -1
  257. package/build/modern/queriesObserver.d.cts +23 -2
  258. package/build/modern/queriesObserver.d.cts.map +1 -0
  259. package/build/modern/queriesObserver.d.ts +23 -2
  260. package/build/modern/queriesObserver.d.ts.map +1 -0
  261. package/build/modern/queriesObserver.js +181 -209
  262. package/build/modern/queriesObserver.js.map +1 -1
  263. package/build/modern/query.cjs +384 -464
  264. package/build/modern/query.cjs.map +1 -1
  265. package/build/modern/query.d.cts +2 -9
  266. package/build/modern/query.d.ts +2 -9
  267. package/build/modern/query.js +377 -441
  268. package/build/modern/query.js.map +1 -1
  269. package/build/modern/queryCache.cjs +97 -119
  270. package/build/modern/queryCache.cjs.map +1 -1
  271. package/build/modern/queryCache.d.cts +2 -3
  272. package/build/modern/queryCache.d.ts +2 -3
  273. package/build/modern/queryCache.js +94 -92
  274. package/build/modern/queryCache.js.map +1 -1
  275. package/build/modern/queryClient.cjs +281 -318
  276. package/build/modern/queryClient.cjs.map +1 -1
  277. package/build/modern/queryClient.d.cts +2 -1
  278. package/build/modern/queryClient.d.ts +2 -1
  279. package/build/modern/queryClient.js +278 -299
  280. package/build/modern/queryClient.js.map +1 -1
  281. package/build/modern/queryObserver.cjs +329 -475
  282. package/build/modern/queryObserver.cjs.map +1 -1
  283. package/build/modern/queryObserver.d.cts +2 -1
  284. package/build/modern/queryObserver.d.ts +2 -1
  285. package/build/modern/queryObserver.js +324 -454
  286. package/build/modern/queryObserver.js.map +1 -1
  287. package/build/modern/removable-DeMjhW5M.d.cts +13 -0
  288. package/build/modern/removable-DeMjhW5M.d.cts.map +1 -0
  289. package/build/modern/removable-DeMjhW5M.d.ts +13 -0
  290. package/build/modern/removable-DeMjhW5M.d.ts.map +1 -0
  291. package/build/modern/removable.cjs +27 -56
  292. package/build/modern/removable.cjs.map +1 -1
  293. package/build/modern/removable.d.cts +2 -1
  294. package/build/modern/removable.d.ts +2 -1
  295. package/build/modern/removable.js +24 -29
  296. package/build/modern/removable.js.map +1 -1
  297. package/build/modern/retryer.cjs +121 -151
  298. package/build/modern/retryer.cjs.map +1 -1
  299. package/build/modern/retryer.d.cts +2 -7
  300. package/build/modern/retryer.d.ts +2 -7
  301. package/build/modern/retryer.js +115 -121
  302. package/build/modern/retryer.js.map +1 -1
  303. package/build/modern/streamedQuery.cjs +49 -78
  304. package/build/modern/streamedQuery.cjs.map +1 -1
  305. package/build/modern/streamedQuery.d.cts +33 -1
  306. package/build/modern/streamedQuery.d.cts.map +1 -0
  307. package/build/modern/streamedQuery.d.ts +33 -1
  308. package/build/modern/streamedQuery.d.ts.map +1 -0
  309. package/build/modern/streamedQuery.js +47 -52
  310. package/build/modern/streamedQuery.js.map +1 -1
  311. package/build/modern/subscribable-CbifVTKz.d.cts +12 -0
  312. package/build/modern/subscribable-CbifVTKz.d.cts.map +1 -0
  313. package/build/modern/subscribable-CbifVTKz.d.ts +12 -0
  314. package/build/modern/subscribable-CbifVTKz.d.ts.map +1 -0
  315. package/build/modern/subscribable.cjs +22 -48
  316. package/build/modern/subscribable.cjs.map +1 -1
  317. package/build/modern/subscribable.d.cts +2 -1
  318. package/build/modern/subscribable.d.ts +2 -1
  319. package/build/modern/subscribable.js +21 -23
  320. package/build/modern/subscribable.js.map +1 -1
  321. package/build/modern/timeoutManager.cjs +59 -93
  322. package/build/modern/timeoutManager.cjs.map +1 -1
  323. package/build/modern/timeoutManager.d.cts +60 -7
  324. package/build/modern/timeoutManager.d.cts.map +1 -0
  325. package/build/modern/timeoutManager.d.ts +60 -7
  326. package/build/modern/timeoutManager.d.ts.map +1 -0
  327. package/build/modern/timeoutManager.js +55 -65
  328. package/build/modern/timeoutManager.js.map +1 -1
  329. package/build/modern/types.cjs +10 -35
  330. package/build/modern/types.cjs.map +1 -1
  331. package/build/modern/types.d.cts +2 -94
  332. package/build/modern/types.d.ts +2 -94
  333. package/build/modern/types.js +8 -9
  334. package/build/modern/types.js.map +1 -1
  335. package/build/modern/utils.cjs +175 -300
  336. package/build/modern/utils.cjs.map +1 -1
  337. package/build/modern/utils.d.cts +2 -30
  338. package/build/modern/utils.d.ts +2 -30
  339. package/build/modern/utils.js +149 -250
  340. package/build/modern/utils.js.map +1 -1
  341. package/package.json +3 -5
  342. package/src/hydration.ts +62 -44
  343. package/src/index.ts +1 -0
  344. package/src/mutation.ts +14 -6
  345. package/src/mutationObserver.ts +8 -0
  346. package/src/queriesObserver.ts +14 -8
  347. package/src/query.ts +14 -6
  348. package/src/queryClient.ts +90 -2
  349. package/src/queryObserver.ts +41 -64
  350. package/src/retryer.ts +20 -12
  351. package/src/types.ts +70 -58
  352. package/build/legacy/_tsup-dts-rollup.d.cts +0 -2188
  353. package/build/legacy/_tsup-dts-rollup.d.ts +0 -2188
  354. package/build/legacy/chunk-PXG64RU4.js +0 -25
  355. package/build/legacy/chunk-PXG64RU4.js.map +0 -1
  356. package/build/legacy/thenable.cjs +0 -76
  357. package/build/legacy/thenable.cjs.map +0 -1
  358. package/build/legacy/thenable.d.cts +0 -6
  359. package/build/legacy/thenable.d.ts +0 -6
  360. package/build/legacy/thenable.js +0 -52
  361. package/build/legacy/thenable.js.map +0 -1
  362. package/build/modern/_tsup-dts-rollup.d.cts +0 -2188
  363. package/build/modern/_tsup-dts-rollup.d.ts +0 -2188
  364. package/build/modern/thenable.cjs +0 -75
  365. package/build/modern/thenable.cjs.map +0 -1
  366. package/build/modern/thenable.d.cts +0 -6
  367. package/build/modern/thenable.d.ts +0 -6
  368. package/build/modern/thenable.js +0 -49
  369. package/build/modern/thenable.js.map +0 -1
  370. package/src/thenable.ts +0 -111
@@ -1,242 +1,208 @@
1
- import {
2
- __privateAdd,
3
- __privateGet,
4
- __privateMethod,
5
- __privateSet
6
- } from "./chunk-PXG64RU4.js";
7
-
8
- // src/queriesObserver.ts
1
+ import { i as _classPrivateFieldInitSpec, n as _classPrivateFieldGet2, r as _assertClassBrand, t as _classPrivateFieldSet2 } from "./classPrivateFieldSet2-CV7wyte-.js";
2
+ import { replaceEqualDeep, shallowEqualObjects } from "./utils.js";
3
+ import { Subscribable } from "./subscribable.js";
9
4
  import { notifyManager } from "./notifyManager.js";
5
+ import { t as _classPrivateMethodInitSpec } from "./classPrivateMethodInitSpec-CBwa_Y7C.js";
10
6
  import { QueryObserver } from "./queryObserver.js";
11
- import { Subscribable } from "./subscribable.js";
12
- import { replaceEqualDeep, shallowEqualObjects } from "./utils.js";
7
+ //#region src/queriesObserver.ts
13
8
  function difference(array1, array2) {
14
- const excludeSet = new Set(array2);
15
- return array1.filter((x) => !excludeSet.has(x));
9
+ const excludeSet = new Set(array2);
10
+ return array1.filter((x) => !excludeSet.has(x));
16
11
  }
17
12
  function replaceAt(array, index, value) {
18
- const copy = array.slice(0);
19
- copy[index] = value;
20
- return copy;
13
+ const copy = array.slice(0);
14
+ copy[index] = value;
15
+ return copy;
21
16
  }
22
- var _client, _result, _queries, _options, _observers, _combinedResult, _lastCombine, _lastResult, _lastQueryHashes, _observerMatches, _QueriesObserver_instances, trackResult_fn, combineResult_fn, shouldSkipCombine_fn, findMatchingObservers_fn, onUpdate_fn, notify_fn;
17
+ var _client = /* @__PURE__ */ new WeakMap();
18
+ var _result = /* @__PURE__ */ new WeakMap();
19
+ var _queries = /* @__PURE__ */ new WeakMap();
20
+ var _options = /* @__PURE__ */ new WeakMap();
21
+ var _observers = /* @__PURE__ */ new WeakMap();
22
+ var _combinedResult = /* @__PURE__ */ new WeakMap();
23
+ var _lastCombine = /* @__PURE__ */ new WeakMap();
24
+ var _lastResult = /* @__PURE__ */ new WeakMap();
25
+ var _lastQueryHashes = /* @__PURE__ */ new WeakMap();
26
+ var _observerMatches = /* @__PURE__ */ new WeakMap();
27
+ var _QueriesObserver_brand = /* @__PURE__ */ new WeakSet();
23
28
  var QueriesObserver = class extends Subscribable {
24
- constructor(client, queries, options) {
25
- super();
26
- __privateAdd(this, _QueriesObserver_instances);
27
- __privateAdd(this, _client);
28
- __privateAdd(this, _result);
29
- __privateAdd(this, _queries);
30
- __privateAdd(this, _options);
31
- __privateAdd(this, _observers);
32
- __privateAdd(this, _combinedResult);
33
- __privateAdd(this, _lastCombine);
34
- __privateAdd(this, _lastResult);
35
- __privateAdd(this, _lastQueryHashes);
36
- __privateAdd(this, _observerMatches, []);
37
- __privateSet(this, _client, client);
38
- __privateSet(this, _options, options);
39
- __privateSet(this, _queries, []);
40
- __privateSet(this, _observers, []);
41
- __privateSet(this, _result, []);
42
- this.setQueries(queries);
43
- }
44
- onSubscribe() {
45
- if (this.listeners.size === 1) {
46
- __privateGet(this, _observers).forEach((observer) => {
47
- observer.subscribe((result) => {
48
- __privateMethod(this, _QueriesObserver_instances, onUpdate_fn).call(this, observer, result);
49
- });
50
- });
51
- }
52
- }
53
- onUnsubscribe() {
54
- if (!this.listeners.size) {
55
- this.destroy();
56
- }
57
- }
58
- destroy() {
59
- this.listeners = /* @__PURE__ */ new Set();
60
- __privateGet(this, _observers).forEach((observer) => {
61
- observer.destroy();
62
- });
63
- }
64
- setQueries(queries, options) {
65
- __privateSet(this, _queries, queries);
66
- __privateSet(this, _options, options);
67
- if (process.env.NODE_ENV !== "production") {
68
- const queryHashes = queries.map(
69
- (query) => __privateGet(this, _client).defaultQueryOptions(query).queryHash
70
- );
71
- if (new Set(queryHashes).size !== queryHashes.length) {
72
- console.warn(
73
- "[QueriesObserver]: Duplicate Queries found. This might result in unexpected behavior."
74
- );
75
- }
76
- }
77
- notifyManager.batch(() => {
78
- const prevObservers = __privateGet(this, _observers);
79
- const newObserverMatches = __privateMethod(this, _QueriesObserver_instances, findMatchingObservers_fn).call(this, __privateGet(this, _queries));
80
- newObserverMatches.forEach(
81
- (match) => match.observer.setOptions(match.defaultedQueryOptions)
82
- );
83
- const newObservers = newObserverMatches.map((match) => match.observer);
84
- const newResult = newObservers.map(
85
- (observer) => observer.getCurrentResult()
86
- );
87
- const hasLengthChange = prevObservers.length !== newObservers.length;
88
- const hasIndexChange = newObservers.some(
89
- (observer, index) => observer !== prevObservers[index]
90
- );
91
- const hasStructuralChange = hasLengthChange || hasIndexChange;
92
- const hasResultChange = hasStructuralChange ? true : newResult.some((result, index) => {
93
- const prev = __privateGet(this, _result)[index];
94
- return !prev || !shallowEqualObjects(result, prev);
95
- });
96
- if (!hasStructuralChange && !hasResultChange) return;
97
- if (hasStructuralChange) {
98
- __privateSet(this, _observerMatches, newObserverMatches);
99
- __privateSet(this, _observers, newObservers);
100
- }
101
- __privateSet(this, _result, newResult);
102
- if (!this.hasListeners()) return;
103
- if (hasStructuralChange) {
104
- difference(prevObservers, newObservers).forEach((observer) => {
105
- observer.destroy();
106
- });
107
- difference(newObservers, prevObservers).forEach((observer) => {
108
- observer.subscribe((result) => {
109
- __privateMethod(this, _QueriesObserver_instances, onUpdate_fn).call(this, observer, result);
110
- });
111
- });
112
- }
113
- __privateMethod(this, _QueriesObserver_instances, notify_fn).call(this);
114
- });
115
- }
116
- getCurrentResult() {
117
- return __privateGet(this, _result);
118
- }
119
- getQueries() {
120
- return __privateGet(this, _observers).map((observer) => observer.getCurrentQuery());
121
- }
122
- getObservers() {
123
- return __privateGet(this, _observers);
124
- }
125
- getOptimisticResult(queries, combine) {
126
- const matches = __privateMethod(this, _QueriesObserver_instances, findMatchingObservers_fn).call(this, queries);
127
- const result = matches.map(
128
- (match) => match.observer.getOptimisticResult(match.defaultedQueryOptions)
129
- );
130
- const queryHashes = matches.map(
131
- (match) => match.defaultedQueryOptions.queryHash
132
- );
133
- return [
134
- result,
135
- (r) => {
136
- return __privateMethod(this, _QueriesObserver_instances, combineResult_fn).call(this, r ?? result, combine, queryHashes);
137
- },
138
- () => {
139
- return __privateMethod(this, _QueriesObserver_instances, trackResult_fn).call(this, result, matches);
140
- }
141
- ];
142
- }
143
- };
144
- _client = new WeakMap();
145
- _result = new WeakMap();
146
- _queries = new WeakMap();
147
- _options = new WeakMap();
148
- _observers = new WeakMap();
149
- _combinedResult = new WeakMap();
150
- _lastCombine = new WeakMap();
151
- _lastResult = new WeakMap();
152
- _lastQueryHashes = new WeakMap();
153
- _observerMatches = new WeakMap();
154
- _QueriesObserver_instances = new WeakSet();
155
- trackResult_fn = function(result, matches) {
156
- return matches.map((match, index) => {
157
- const observerResult = result[index];
158
- return !match.defaultedQueryOptions.notifyOnChangeProps ? match.observer.trackResult(observerResult, (accessedProp) => {
159
- matches.forEach((m) => {
160
- m.observer.trackProp(accessedProp);
161
- });
162
- }) : observerResult;
163
- });
164
- };
165
- combineResult_fn = function(input, combine, queryHashes) {
166
- if (combine) {
167
- const lastHashes = __privateGet(this, _lastQueryHashes);
168
- const queryHashesChanged = queryHashes !== void 0 && lastHashes !== void 0 && (lastHashes.length !== queryHashes.length || queryHashes.some((hash, i) => hash !== lastHashes[i]));
169
- if (!__privateGet(this, _combinedResult) || __privateGet(this, _result) !== __privateGet(this, _lastResult) || queryHashesChanged || combine !== __privateGet(this, _lastCombine)) {
170
- __privateSet(this, _lastCombine, combine);
171
- __privateSet(this, _lastResult, __privateGet(this, _result));
172
- if (queryHashes !== void 0) {
173
- __privateSet(this, _lastQueryHashes, queryHashes);
174
- }
175
- __privateSet(this, _combinedResult, replaceEqualDeep(
176
- __privateGet(this, _combinedResult),
177
- combine(input)
178
- ));
179
- }
180
- return __privateGet(this, _combinedResult);
181
- }
182
- return input;
183
- };
184
- shouldSkipCombine_fn = function() {
185
- var _a;
186
- return ((_a = __privateGet(this, _options)) == null ? void 0 : _a.combine) !== void 0 && __privateGet(this, _observers).some((observer, index) => {
187
- var _a2;
188
- return observer.options.suspense && ((_a2 = __privateGet(this, _result)[index]) == null ? void 0 : _a2.data) === void 0;
189
- });
190
- };
191
- findMatchingObservers_fn = function(queries) {
192
- const prevObserversMap = /* @__PURE__ */ new Map();
193
- __privateGet(this, _observers).forEach((observer) => {
194
- const key = observer.options.queryHash;
195
- if (!key) return;
196
- const previousObservers = prevObserversMap.get(key);
197
- if (previousObservers) {
198
- previousObservers.push(observer);
199
- } else {
200
- prevObserversMap.set(key, [observer]);
201
- }
202
- });
203
- const observers = [];
204
- queries.forEach((options) => {
205
- var _a;
206
- const defaultedOptions = __privateGet(this, _client).defaultQueryOptions(options);
207
- const match = (_a = prevObserversMap.get(defaultedOptions.queryHash)) == null ? void 0 : _a.shift();
208
- const observer = match ?? new QueryObserver(__privateGet(this, _client), defaultedOptions);
209
- observers.push({
210
- defaultedQueryOptions: defaultedOptions,
211
- observer
212
- });
213
- });
214
- return observers;
215
- };
216
- onUpdate_fn = function(observer, result) {
217
- const index = __privateGet(this, _observers).indexOf(observer);
218
- if (index !== -1) {
219
- __privateSet(this, _result, replaceAt(__privateGet(this, _result), index, result));
220
- __privateMethod(this, _QueriesObserver_instances, notify_fn).call(this);
221
- }
222
- };
223
- notify_fn = function() {
224
- var _a;
225
- if (this.hasListeners()) {
226
- const newTracked = __privateMethod(this, _QueriesObserver_instances, trackResult_fn).call(this, __privateGet(this, _result), __privateGet(this, _observerMatches));
227
- const shouldSkipCombine = __privateMethod(this, _QueriesObserver_instances, shouldSkipCombine_fn).call(this);
228
- const previousResult = __privateGet(this, _combinedResult);
229
- const newResult = shouldSkipCombine ? previousResult : __privateMethod(this, _QueriesObserver_instances, combineResult_fn).call(this, newTracked, (_a = __privateGet(this, _options)) == null ? void 0 : _a.combine);
230
- if (shouldSkipCombine || previousResult !== newResult) {
231
- notifyManager.batch(() => {
232
- this.listeners.forEach((listener) => {
233
- listener(__privateGet(this, _result));
234
- });
235
- });
236
- }
237
- }
238
- };
239
- export {
240
- QueriesObserver
29
+ constructor(client, queries, options) {
30
+ super();
31
+ _classPrivateMethodInitSpec(this, _QueriesObserver_brand);
32
+ _classPrivateFieldInitSpec(this, _client, void 0);
33
+ _classPrivateFieldInitSpec(this, _result, void 0);
34
+ _classPrivateFieldInitSpec(this, _queries, void 0);
35
+ _classPrivateFieldInitSpec(this, _options, void 0);
36
+ _classPrivateFieldInitSpec(this, _observers, void 0);
37
+ _classPrivateFieldInitSpec(this, _combinedResult, void 0);
38
+ _classPrivateFieldInitSpec(this, _lastCombine, void 0);
39
+ _classPrivateFieldInitSpec(this, _lastResult, void 0);
40
+ _classPrivateFieldInitSpec(this, _lastQueryHashes, void 0);
41
+ _classPrivateFieldInitSpec(this, _observerMatches, []);
42
+ _classPrivateFieldSet2(_client, this, client);
43
+ _classPrivateFieldSet2(_options, this, options);
44
+ _classPrivateFieldSet2(_queries, this, []);
45
+ _classPrivateFieldSet2(_observers, this, []);
46
+ _classPrivateFieldSet2(_result, this, []);
47
+ this.setQueries(queries);
48
+ }
49
+ onSubscribe() {
50
+ if (this.listeners.size === 1) _classPrivateFieldGet2(_observers, this).forEach((observer) => {
51
+ observer.subscribe((result) => {
52
+ _assertClassBrand(_QueriesObserver_brand, this, _onUpdate).call(this, observer, result);
53
+ });
54
+ });
55
+ }
56
+ onUnsubscribe() {
57
+ if (!this.listeners.size) this.destroy();
58
+ }
59
+ destroy() {
60
+ this.listeners = /* @__PURE__ */ new Set();
61
+ _classPrivateFieldGet2(_observers, this).forEach((observer) => {
62
+ observer.destroy();
63
+ });
64
+ }
65
+ setQueries(queries, options) {
66
+ _classPrivateFieldSet2(_queries, this, queries);
67
+ _classPrivateFieldSet2(_options, this, options);
68
+ if (process.env.NODE_ENV !== "production") {
69
+ const queryHashes = queries.map((query) => _classPrivateFieldGet2(_client, this).defaultQueryOptions(query).queryHash);
70
+ if (new Set(queryHashes).size !== queryHashes.length) console.warn("[QueriesObserver]: Duplicate Queries found. This might result in unexpected behavior.");
71
+ }
72
+ notifyManager.batch(() => {
73
+ const prevObservers = _classPrivateFieldGet2(_observers, this);
74
+ const newObserverMatches = _assertClassBrand(_QueriesObserver_brand, this, _findMatchingObservers).call(this, _classPrivateFieldGet2(_queries, this));
75
+ newObserverMatches.forEach((match) => match.observer.setOptions(match.defaultedQueryOptions));
76
+ const newObservers = newObserverMatches.map((match) => match.observer);
77
+ const newResult = newObservers.map((observer) => observer.getCurrentResult());
78
+ const hasLengthChange = prevObservers.length !== newObservers.length;
79
+ const hasIndexChange = newObservers.some((observer, index) => observer !== prevObservers[index]);
80
+ const hasStructuralChange = hasLengthChange || hasIndexChange;
81
+ const hasResultChange = hasStructuralChange ? true : newResult.some((result, index) => {
82
+ const prev = _classPrivateFieldGet2(_result, this)[index];
83
+ return !prev || !shallowEqualObjects(result, prev);
84
+ });
85
+ if (!hasStructuralChange && !hasResultChange) return;
86
+ if (hasStructuralChange) {
87
+ _classPrivateFieldSet2(_observerMatches, this, newObserverMatches);
88
+ _classPrivateFieldSet2(_observers, this, newObservers);
89
+ }
90
+ _classPrivateFieldSet2(_result, this, newResult);
91
+ if (!this.hasListeners()) return;
92
+ if (hasStructuralChange) {
93
+ difference(prevObservers, newObservers).forEach((observer) => {
94
+ observer.destroy();
95
+ });
96
+ difference(newObservers, prevObservers).forEach((observer) => {
97
+ observer.subscribe((result) => {
98
+ _assertClassBrand(_QueriesObserver_brand, this, _onUpdate).call(this, observer, result);
99
+ });
100
+ });
101
+ }
102
+ _assertClassBrand(_QueriesObserver_brand, this, _notify).call(this);
103
+ });
104
+ }
105
+ getCurrentResult() {
106
+ return _classPrivateFieldGet2(_result, this);
107
+ }
108
+ getQueries() {
109
+ return _classPrivateFieldGet2(_observers, this).map((observer) => observer.getCurrentQuery());
110
+ }
111
+ getObservers() {
112
+ return _classPrivateFieldGet2(_observers, this);
113
+ }
114
+ getOptimisticResult(queries, combine) {
115
+ const matches = _assertClassBrand(_QueriesObserver_brand, this, _findMatchingObservers).call(this, queries);
116
+ const result = matches.map((match) => match.observer.getOptimisticResult(match.defaultedQueryOptions));
117
+ const queryHashes = matches.map((match) => match.defaultedQueryOptions.queryHash);
118
+ return [
119
+ result,
120
+ (r) => {
121
+ return _assertClassBrand(_QueriesObserver_brand, this, _combineResult).call(this, r ?? result, combine, queryHashes);
122
+ },
123
+ () => {
124
+ return _assertClassBrand(_QueriesObserver_brand, this, _trackResult).call(this, result, matches);
125
+ }
126
+ ];
127
+ }
241
128
  };
129
+ function _trackResult(result, matches) {
130
+ const trackedProps = /* @__PURE__ */ new Set();
131
+ return matches.map((match, index) => {
132
+ const observerResult = result[index];
133
+ return !match.defaultedQueryOptions.notifyOnChangeProps ? match.observer.trackResult(observerResult, (accessedProp) => {
134
+ if (!trackedProps.has(accessedProp)) {
135
+ trackedProps.add(accessedProp);
136
+ matches.forEach((m) => {
137
+ m.observer.trackProp(accessedProp);
138
+ });
139
+ }
140
+ }) : observerResult;
141
+ });
142
+ }
143
+ function _combineResult(input, combine, queryHashes) {
144
+ if (combine) {
145
+ const lastHashes = _classPrivateFieldGet2(_lastQueryHashes, this);
146
+ const queryHashesChanged = queryHashes !== void 0 && lastHashes !== void 0 && (lastHashes.length !== queryHashes.length || queryHashes.some((hash, i) => hash !== lastHashes[i]));
147
+ if (_classPrivateFieldGet2(_result, this) !== _classPrivateFieldGet2(_lastResult, this) || queryHashesChanged || combine !== _classPrivateFieldGet2(_lastCombine, this)) {
148
+ _classPrivateFieldSet2(_lastCombine, this, combine);
149
+ _classPrivateFieldSet2(_lastResult, this, _classPrivateFieldGet2(_result, this));
150
+ if (queryHashes !== void 0) _classPrivateFieldSet2(_lastQueryHashes, this, queryHashes);
151
+ _classPrivateFieldSet2(_combinedResult, this, replaceEqualDeep(_classPrivateFieldGet2(_combinedResult, this), combine(input)));
152
+ }
153
+ return _classPrivateFieldGet2(_combinedResult, this);
154
+ }
155
+ return input;
156
+ }
157
+ function _shouldSkipCombine() {
158
+ var _classPrivateFieldGet2$1;
159
+ return !((_classPrivateFieldGet2$1 = _classPrivateFieldGet2(_options, this)) === null || _classPrivateFieldGet2$1 === void 0 ? void 0 : _classPrivateFieldGet2$1.combine) || _classPrivateFieldGet2(_observers, this).some((observer, index) => {
160
+ var _classPrivateFieldGet3;
161
+ return observer.options.suspense && ((_classPrivateFieldGet3 = _classPrivateFieldGet2(_result, this)[index]) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.data) === void 0;
162
+ });
163
+ }
164
+ function _findMatchingObservers(queries) {
165
+ const prevObserversMap = /* @__PURE__ */ new Map();
166
+ _classPrivateFieldGet2(_observers, this).forEach((observer) => {
167
+ const key = observer.options.queryHash;
168
+ if (!key) return;
169
+ const previousObservers = prevObserversMap.get(key);
170
+ if (previousObservers) previousObservers.push(observer);
171
+ else prevObserversMap.set(key, [observer]);
172
+ });
173
+ const observers = [];
174
+ queries.forEach((options) => {
175
+ var _prevObserversMap$get;
176
+ const defaultedOptions = _classPrivateFieldGet2(_client, this).defaultQueryOptions(options);
177
+ const observer = ((_prevObserversMap$get = prevObserversMap.get(defaultedOptions.queryHash)) === null || _prevObserversMap$get === void 0 ? void 0 : _prevObserversMap$get.shift()) ?? new QueryObserver(_classPrivateFieldGet2(_client, this), defaultedOptions);
178
+ observers.push({
179
+ defaultedQueryOptions: defaultedOptions,
180
+ observer
181
+ });
182
+ });
183
+ return observers;
184
+ }
185
+ function _onUpdate(observer, result) {
186
+ const index = _classPrivateFieldGet2(_observers, this).indexOf(observer);
187
+ if (index !== -1) {
188
+ _classPrivateFieldSet2(_result, this, replaceAt(_classPrivateFieldGet2(_result, this), index, result));
189
+ _assertClassBrand(_QueriesObserver_brand, this, _notify).call(this);
190
+ }
191
+ }
192
+ function _notify() {
193
+ if (this.hasListeners()) {
194
+ var _classPrivateFieldGet4;
195
+ const shouldSkipCombine = _assertClassBrand(_QueriesObserver_brand, this, _shouldSkipCombine).call(this);
196
+ const previousResult = _classPrivateFieldGet2(_combinedResult, this);
197
+ const newResult = shouldSkipCombine ? previousResult : _assertClassBrand(_QueriesObserver_brand, this, _combineResult).call(this, _assertClassBrand(_QueriesObserver_brand, this, _trackResult).call(this, _classPrivateFieldGet2(_result, this), _classPrivateFieldGet2(_observerMatches, this)), (_classPrivateFieldGet4 = _classPrivateFieldGet2(_options, this)) === null || _classPrivateFieldGet4 === void 0 ? void 0 : _classPrivateFieldGet4.combine);
198
+ if (shouldSkipCombine || previousResult !== newResult) notifyManager.batch(() => {
199
+ this.listeners.forEach((listener) => {
200
+ listener(_classPrivateFieldGet2(_result, this));
201
+ });
202
+ });
203
+ }
204
+ }
205
+ //#endregion
206
+ export { QueriesObserver };
207
+
242
208
  //# sourceMappingURL=queriesObserver.js.map
@@ -1 +1 @@
1
- {"version":3,"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\nfunction replaceAt<T>(array: Array<T>, index: number, value: T): Array<T> {\n const copy = array.slice(0)\n copy[index] = value\n return copy\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 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 matches.forEach((m) => {\n m.observer.trackProp(accessedProp)\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.#combinedResult ||\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 !== undefined &&\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 = replaceAt(this.#result, index, result)\n this.#notify()\n }\n }\n\n #notify(): void {\n if (this.hasListeners()) {\n const newTracked = this.#trackResult(this.#result, this.#observerMatches)\n const shouldSkipCombine = this.#shouldSkipCombine()\n const previousResult = this.#combinedResult\n const newResult = shouldSkipCombine\n ? previousResult\n : this.#combineResult(newTracked, this.#options?.combine)\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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","names":["_a"]}
1
+ {"version":3,"file":"queriesObserver.js","names":[],"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\nfunction replaceAt<T>(array: Array<T>, index: number, value: T): Array<T> {\n const copy = array.slice(0)\n copy[index] = value\n return copy\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 = replaceAt(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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"}