@tanstack/vue-query 5.0.0-alpha.7 → 5.0.0-alpha.71

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 (270) hide show
  1. package/README.md +18 -14
  2. package/build/lib/__mocks__/useBaseQuery.d.ts +1 -0
  3. package/build/lib/__mocks__/useBaseQuery.d.ts.map +1 -0
  4. package/build/lib/__mocks__/useQueryClient.d.ts +1 -0
  5. package/build/lib/__mocks__/useQueryClient.d.ts.map +1 -0
  6. package/build/lib/__tests__/mutationCache.test.d.ts +1 -0
  7. package/build/lib/__tests__/mutationCache.test.d.ts.map +1 -0
  8. package/build/lib/__tests__/queryCache.test.d.ts +1 -0
  9. package/build/lib/__tests__/queryCache.test.d.ts.map +1 -0
  10. package/build/lib/__tests__/queryClient.test.d.ts +1 -0
  11. package/build/lib/__tests__/queryClient.test.d.ts.map +1 -0
  12. package/build/lib/__tests__/test-utils.d.ts +3 -2
  13. package/build/lib/__tests__/test-utils.d.ts.map +1 -0
  14. package/build/lib/__tests__/useInfiniteQuery.test.d.ts +1 -0
  15. package/build/lib/__tests__/useInfiniteQuery.test.d.ts.map +1 -0
  16. package/build/lib/__tests__/useInfiniteQuery.types.test.d.ts +1 -0
  17. package/build/lib/__tests__/useInfiniteQuery.types.test.d.ts.map +1 -0
  18. package/build/lib/__tests__/useIsFetching.test.d.ts +1 -0
  19. package/build/lib/__tests__/useIsFetching.test.d.ts.map +1 -0
  20. package/build/lib/__tests__/useIsMutating.test.d.ts +1 -0
  21. package/build/lib/__tests__/useIsMutating.test.d.ts.map +1 -0
  22. package/build/lib/__tests__/useMutation.test.d.ts +1 -0
  23. package/build/lib/__tests__/useMutation.test.d.ts.map +1 -0
  24. package/build/lib/__tests__/useMutation.types.test.d.ts +1 -0
  25. package/build/lib/__tests__/useMutation.types.test.d.ts.map +1 -0
  26. package/build/lib/__tests__/useQueries.test.d.ts +1 -0
  27. package/build/lib/__tests__/useQueries.test.d.ts.map +1 -0
  28. package/build/lib/__tests__/useQuery.test.d.ts +1 -0
  29. package/build/lib/__tests__/useQuery.test.d.ts.map +1 -0
  30. package/build/lib/__tests__/useQuery.types.test.d.ts +1 -0
  31. package/build/lib/__tests__/useQuery.types.test.d.ts.map +1 -0
  32. package/build/lib/__tests__/useQueryClient.test.d.ts +1 -0
  33. package/build/lib/__tests__/useQueryClient.test.d.ts.map +1 -0
  34. package/build/lib/__tests__/utils.test.d.ts +1 -0
  35. package/build/lib/__tests__/utils.test.d.ts.map +1 -0
  36. package/build/lib/__tests__/vueQueryPlugin.test.d.ts +1 -0
  37. package/build/lib/__tests__/vueQueryPlugin.test.d.ts.map +1 -0
  38. package/build/lib/devtools/{devtools.mjs → devtools.cjs} +62 -20
  39. package/build/lib/devtools/devtools.cjs.map +1 -0
  40. package/build/lib/devtools/devtools.d.ts +1 -0
  41. package/build/lib/devtools/devtools.d.ts.map +1 -0
  42. package/build/lib/devtools/devtools.js +61 -25
  43. package/build/lib/devtools/devtools.js.map +1 -1
  44. package/build/lib/devtools/devtools.legacy.cjs +198 -0
  45. package/build/lib/devtools/devtools.legacy.cjs.map +1 -0
  46. package/build/lib/devtools/{devtools.esm.js → devtools.legacy.js} +48 -8
  47. package/build/lib/devtools/devtools.legacy.js.map +1 -0
  48. package/build/lib/devtools/{utils.mjs → utils.cjs} +11 -5
  49. package/build/lib/devtools/{utils.mjs.map → utils.cjs.map} +1 -1
  50. package/build/lib/devtools/utils.d.ts +2 -1
  51. package/build/lib/devtools/utils.d.ts.map +1 -0
  52. package/build/lib/devtools/utils.js +4 -10
  53. package/build/lib/devtools/utils.js.map +1 -1
  54. package/build/lib/devtools/utils.legacy.cjs +85 -0
  55. package/build/lib/devtools/utils.legacy.cjs.map +1 -0
  56. package/build/lib/devtools/{utils.esm.js → utils.legacy.js} +4 -4
  57. package/build/lib/devtools/utils.legacy.js.map +1 -0
  58. package/build/lib/index.cjs +38 -0
  59. package/build/lib/index.cjs.map +1 -0
  60. package/build/lib/index.d.ts +1 -0
  61. package/build/lib/index.d.ts.map +1 -0
  62. package/build/lib/index.js +13 -37
  63. package/build/lib/index.js.map +1 -1
  64. package/build/lib/index.legacy.cjs +38 -0
  65. package/build/lib/index.legacy.cjs.map +1 -0
  66. package/build/lib/index.legacy.js +14 -0
  67. package/build/lib/index.legacy.js.map +1 -0
  68. package/build/lib/mutationCache.cjs +16 -0
  69. package/build/lib/{mutationCache.mjs.map → mutationCache.cjs.map} +1 -1
  70. package/build/lib/mutationCache.d.ts +1 -0
  71. package/build/lib/mutationCache.d.ts.map +1 -0
  72. package/build/lib/mutationCache.js +6 -8
  73. package/build/lib/mutationCache.js.map +1 -1
  74. package/build/lib/mutationCache.legacy.cjs +16 -0
  75. package/build/lib/mutationCache.legacy.cjs.map +1 -0
  76. package/build/lib/{mutationCache.esm.js → mutationCache.legacy.js} +2 -2
  77. package/build/lib/mutationCache.legacy.js.map +1 -0
  78. package/build/lib/queryCache.cjs +16 -0
  79. package/build/lib/{queryCache.mjs.map → queryCache.cjs.map} +1 -1
  80. package/build/lib/queryCache.d.ts +1 -0
  81. package/build/lib/queryCache.d.ts.map +1 -0
  82. package/build/lib/queryCache.js +6 -8
  83. package/build/lib/queryCache.js.map +1 -1
  84. package/build/lib/queryCache.legacy.cjs +16 -0
  85. package/build/lib/queryCache.legacy.cjs.map +1 -0
  86. package/build/lib/{queryCache.esm.js → queryCache.legacy.js} +2 -2
  87. package/build/lib/queryCache.legacy.js.map +1 -0
  88. package/build/lib/queryClient.cjs +86 -0
  89. package/build/lib/{queryClient.mjs.map → queryClient.cjs.map} +1 -1
  90. package/build/lib/queryClient.d.ts +1 -0
  91. package/build/lib/queryClient.d.ts.map +1 -0
  92. package/build/lib/queryClient.js +32 -34
  93. package/build/lib/queryClient.js.map +1 -1
  94. package/build/lib/queryClient.legacy.cjs +86 -0
  95. package/build/lib/queryClient.legacy.cjs.map +1 -0
  96. package/build/lib/{queryClient.esm.js → queryClient.legacy.js} +4 -4
  97. package/build/lib/queryClient.legacy.js.map +1 -0
  98. package/build/lib/types.d.ts +4 -3
  99. package/build/lib/types.d.ts.map +1 -0
  100. package/build/lib/{useBaseQuery.mjs → useBaseQuery.cjs} +19 -17
  101. package/build/lib/{useBaseQuery.mjs.map → useBaseQuery.cjs.map} +1 -1
  102. package/build/lib/useBaseQuery.d.ts +3 -2
  103. package/build/lib/useBaseQuery.d.ts.map +1 -0
  104. package/build/lib/useBaseQuery.js +16 -18
  105. package/build/lib/useBaseQuery.js.map +1 -1
  106. package/build/lib/useBaseQuery.legacy.cjs +69 -0
  107. package/build/lib/useBaseQuery.legacy.cjs.map +1 -0
  108. package/build/lib/{useBaseQuery.esm.js → useBaseQuery.legacy.js} +3 -3
  109. package/build/lib/useBaseQuery.legacy.js.map +1 -0
  110. package/build/lib/{useInfiniteQuery.mjs → useInfiniteQuery.cjs} +8 -6
  111. package/build/lib/{useInfiniteQuery.mjs.map → useInfiniteQuery.cjs.map} +1 -1
  112. package/build/lib/useInfiniteQuery.d.ts +4 -3
  113. package/build/lib/useInfiniteQuery.d.ts.map +1 -0
  114. package/build/lib/useInfiniteQuery.js +5 -7
  115. package/build/lib/useInfiniteQuery.js.map +1 -1
  116. package/build/lib/useInfiniteQuery.legacy.cjs +20 -0
  117. package/build/lib/useInfiniteQuery.legacy.cjs.map +1 -0
  118. package/build/lib/{useInfiniteQuery.esm.js → useInfiniteQuery.legacy.js} +2 -2
  119. package/build/lib/useInfiniteQuery.legacy.js.map +1 -0
  120. package/build/lib/useIsFetching.cjs +26 -0
  121. package/build/lib/{useIsFetching.mjs.map → useIsFetching.cjs.map} +1 -1
  122. package/build/lib/useIsFetching.d.ts +2 -1
  123. package/build/lib/useIsFetching.d.ts.map +1 -0
  124. package/build/lib/useIsFetching.js +9 -11
  125. package/build/lib/useIsFetching.js.map +1 -1
  126. package/build/lib/useIsFetching.legacy.cjs +26 -0
  127. package/build/lib/useIsFetching.legacy.cjs.map +1 -0
  128. package/build/lib/{useIsFetching.mjs → useIsFetching.legacy.js} +3 -3
  129. package/build/lib/useIsFetching.legacy.js.map +1 -0
  130. package/build/lib/useMutation.cjs +41 -0
  131. package/build/lib/{useMutation.mjs.map → useMutation.cjs.map} +1 -1
  132. package/build/lib/useMutation.d.ts +5 -4
  133. package/build/lib/useMutation.d.ts.map +1 -0
  134. package/build/lib/useMutation.js +14 -16
  135. package/build/lib/useMutation.js.map +1 -1
  136. package/build/lib/useMutation.legacy.cjs +41 -0
  137. package/build/lib/useMutation.legacy.cjs.map +1 -0
  138. package/build/lib/{useMutation.esm.js → useMutation.legacy.js} +3 -3
  139. package/build/lib/useMutation.legacy.js.map +1 -0
  140. package/build/lib/useMutationState.cjs +43 -0
  141. package/build/lib/useMutationState.cjs.map +1 -0
  142. package/build/lib/useMutationState.d.ts +5 -4
  143. package/build/lib/useMutationState.d.ts.map +1 -0
  144. package/build/lib/useMutationState.js +20 -16
  145. package/build/lib/useMutationState.js.map +1 -1
  146. package/build/lib/useMutationState.legacy.cjs +43 -0
  147. package/build/lib/useMutationState.legacy.cjs.map +1 -0
  148. package/build/lib/{useMutationState.esm.js → useMutationState.legacy.js} +13 -6
  149. package/build/lib/useMutationState.legacy.js.map +1 -0
  150. package/build/lib/useQueries.cjs +62 -0
  151. package/build/lib/useQueries.cjs.map +1 -0
  152. package/build/lib/useQueries.d.ts +12 -11
  153. package/build/lib/useQueries.d.ts.map +1 -0
  154. package/build/lib/useQueries.js +34 -22
  155. package/build/lib/useQueries.js.map +1 -1
  156. package/build/lib/useQueries.legacy.cjs +62 -0
  157. package/build/lib/useQueries.legacy.cjs.map +1 -0
  158. package/build/lib/useQueries.legacy.js +60 -0
  159. package/build/lib/useQueries.legacy.js.map +1 -0
  160. package/build/lib/useQuery.cjs +15 -0
  161. package/build/lib/{useQuery.mjs.map → useQuery.cjs.map} +1 -1
  162. package/build/lib/useQuery.d.ts +4 -3
  163. package/build/lib/useQuery.d.ts.map +1 -0
  164. package/build/lib/useQuery.js +4 -6
  165. package/build/lib/useQuery.js.map +1 -1
  166. package/build/lib/useQuery.legacy.cjs +15 -0
  167. package/build/lib/useQuery.legacy.cjs.map +1 -0
  168. package/build/lib/{useQuery.esm.js → useQuery.legacy.js} +2 -2
  169. package/build/lib/useQuery.legacy.js.map +1 -0
  170. package/build/lib/{useQueryClient.mjs → useQueryClient.cjs} +9 -7
  171. package/build/lib/{useQueryClient.mjs.map → useQueryClient.cjs.map} +1 -1
  172. package/build/lib/useQueryClient.d.ts +1 -0
  173. package/build/lib/useQueryClient.d.ts.map +1 -0
  174. package/build/lib/useQueryClient.js +6 -9
  175. package/build/lib/useQueryClient.js.map +1 -1
  176. package/build/lib/useQueryClient.legacy.cjs +21 -0
  177. package/build/lib/useQueryClient.legacy.cjs.map +1 -0
  178. package/build/lib/{useQueryClient.esm.js → useQueryClient.legacy.js} +2 -2
  179. package/build/lib/useQueryClient.legacy.js.map +1 -0
  180. package/build/lib/{utils.mjs → utils.cjs} +12 -6
  181. package/build/lib/{utils.mjs.map → utils.cjs.map} +1 -1
  182. package/build/lib/utils.d.ts +1 -0
  183. package/build/lib/utils.d.ts.map +1 -0
  184. package/build/lib/utils.js +5 -11
  185. package/build/lib/utils.js.map +1 -1
  186. package/build/lib/utils.legacy.cjs +56 -0
  187. package/build/lib/utils.legacy.cjs.map +1 -0
  188. package/build/lib/{utils.esm.js → utils.legacy.js} +1 -1
  189. package/build/lib/utils.legacy.js.map +1 -0
  190. package/build/lib/{vueQueryPlugin.esm.js → vueQueryPlugin.cjs} +15 -13
  191. package/build/lib/{vueQueryPlugin.mjs.map → vueQueryPlugin.cjs.map} +1 -1
  192. package/build/lib/vueQueryPlugin.d.ts +3 -2
  193. package/build/lib/vueQueryPlugin.d.ts.map +1 -0
  194. package/build/lib/vueQueryPlugin.js +12 -14
  195. package/build/lib/vueQueryPlugin.js.map +1 -1
  196. package/build/lib/vueQueryPlugin.legacy.cjs +75 -0
  197. package/build/lib/vueQueryPlugin.legacy.cjs.map +1 -0
  198. package/build/lib/{vueQueryPlugin.mjs → vueQueryPlugin.legacy.js} +4 -4
  199. package/build/lib/vueQueryPlugin.legacy.js.map +1 -0
  200. package/package.json +20 -15
  201. package/src/__mocks__/useBaseQuery.ts +8 -0
  202. package/src/__mocks__/useQueryClient.ts +10 -0
  203. package/src/__tests__/mutationCache.test.ts +40 -0
  204. package/src/__tests__/queryCache.test.ts +48 -0
  205. package/src/__tests__/queryClient.test.ts +365 -0
  206. package/src/__tests__/test-utils.ts +62 -0
  207. package/src/__tests__/useInfiniteQuery.test.ts +37 -0
  208. package/src/__tests__/useInfiniteQuery.types.test.tsx +102 -0
  209. package/src/__tests__/useIsFetching.test.ts +77 -0
  210. package/src/__tests__/useIsMutating.test.ts +123 -0
  211. package/src/__tests__/useMutation.test.ts +335 -0
  212. package/src/__tests__/useMutation.types.test.tsx +97 -0
  213. package/src/__tests__/useQueries.test.ts +256 -0
  214. package/src/__tests__/useQuery.test.ts +290 -0
  215. package/src/__tests__/useQuery.types.test.tsx +88 -0
  216. package/src/__tests__/useQueryClient.test.ts +51 -0
  217. package/src/__tests__/utils.test.ts +148 -0
  218. package/src/__tests__/vueQueryPlugin.test.ts +351 -0
  219. package/src/devtools/devtools.ts +249 -0
  220. package/src/devtools/utils.ts +96 -0
  221. package/src/index.ts +30 -0
  222. package/src/mutationCache.ts +25 -0
  223. package/src/queryCache.ts +21 -0
  224. package/src/queryClient.ts +278 -0
  225. package/src/types.ts +17 -0
  226. package/src/useBaseQuery.ts +152 -0
  227. package/src/useInfiniteQuery.ts +105 -0
  228. package/src/useIsFetching.ts +37 -0
  229. package/src/useMutation.ts +109 -0
  230. package/src/useMutationState.ts +81 -0
  231. package/src/useQueries.ts +227 -0
  232. package/src/useQuery.ts +125 -0
  233. package/src/useQueryClient.ts +23 -0
  234. package/src/utils.ts +67 -0
  235. package/src/vueQueryPlugin.ts +101 -0
  236. package/build/lib/devtools/devtools.esm.js.map +0 -1
  237. package/build/lib/devtools/devtools.mjs.map +0 -1
  238. package/build/lib/devtools/utils.esm.js.map +0 -1
  239. package/build/lib/index.esm.js +0 -14
  240. package/build/lib/index.esm.js.map +0 -1
  241. package/build/lib/index.mjs +0 -14
  242. package/build/lib/index.mjs.map +0 -1
  243. package/build/lib/mutationCache.esm.js.map +0 -1
  244. package/build/lib/mutationCache.mjs +0 -14
  245. package/build/lib/queryCache.esm.js.map +0 -1
  246. package/build/lib/queryCache.mjs +0 -14
  247. package/build/lib/queryClient.esm.js.map +0 -1
  248. package/build/lib/queryClient.mjs +0 -84
  249. package/build/lib/useBaseQuery.esm.js.map +0 -1
  250. package/build/lib/useInfiniteQuery.esm.js.map +0 -1
  251. package/build/lib/useIsFetching.esm.js +0 -24
  252. package/build/lib/useIsFetching.esm.js.map +0 -1
  253. package/build/lib/useMutation.esm.js.map +0 -1
  254. package/build/lib/useMutation.mjs +0 -39
  255. package/build/lib/useMutationState.esm.js.map +0 -1
  256. package/build/lib/useMutationState.mjs +0 -33
  257. package/build/lib/useMutationState.mjs.map +0 -1
  258. package/build/lib/useQueries.esm.js +0 -46
  259. package/build/lib/useQueries.esm.js.map +0 -1
  260. package/build/lib/useQueries.mjs +0 -46
  261. package/build/lib/useQueries.mjs.map +0 -1
  262. package/build/lib/useQuery.esm.js.map +0 -1
  263. package/build/lib/useQuery.mjs +0 -13
  264. package/build/lib/useQueryClient.esm.js.map +0 -1
  265. package/build/lib/utils.esm.js.map +0 -1
  266. package/build/lib/vueQueryPlugin.esm.js.map +0 -1
  267. package/build/umd/index.development.js +0 -4199
  268. package/build/umd/index.development.js.map +0 -1
  269. package/build/umd/index.production.js +0 -2
  270. package/build/umd/index.production.js.map +0 -1
@@ -0,0 +1,249 @@
1
+ import { setupDevtoolsPlugin } from '@vue/devtools-api'
2
+ import type { CustomInspectorNode } from '@vue/devtools-api'
3
+ import { rankItem } from '@tanstack/match-sorter-utils'
4
+ import { onlineManager } from '@tanstack/query-core'
5
+ import type { Query } from '@tanstack/query-core'
6
+ import type { QueryClient } from '../queryClient'
7
+ import {
8
+ getQueryStateLabel,
9
+ getQueryStatusBg,
10
+ getQueryStatusFg,
11
+ sortFns,
12
+ } from './utils'
13
+
14
+ const pluginId = 'vue-query'
15
+ const pluginName = 'Vue Query'
16
+
17
+ export function setupDevtools(app: any, queryClient: QueryClient) {
18
+ setupDevtoolsPlugin(
19
+ {
20
+ id: pluginId,
21
+ label: pluginName,
22
+ packageName: 'vue-query',
23
+ homepage: 'https://tanstack.com/query/latest',
24
+ logo: 'https://raw.githubusercontent.com/TanStack/query/main/packages/vue-query/media/vue-query.svg',
25
+ app,
26
+ settings: {
27
+ baseSort: {
28
+ type: 'choice',
29
+ component: 'button-group',
30
+ label: 'Sort Cache Entries',
31
+ options: [
32
+ {
33
+ label: 'ASC',
34
+ value: 1,
35
+ },
36
+ {
37
+ label: 'DESC',
38
+ value: -1,
39
+ },
40
+ ],
41
+ defaultValue: 1,
42
+ },
43
+ sortFn: {
44
+ type: 'choice',
45
+ label: 'Sort Function',
46
+ options: Object.keys(sortFns).map((key) => ({
47
+ label: key,
48
+ value: key,
49
+ })),
50
+ defaultValue: Object.keys(sortFns)[0]!,
51
+ },
52
+ onlineMode: {
53
+ type: 'choice',
54
+ component: 'button-group',
55
+ label: 'Online mode',
56
+ options: [
57
+ {
58
+ label: 'Online',
59
+ value: 1,
60
+ },
61
+ {
62
+ label: 'Offline',
63
+ value: 0,
64
+ },
65
+ ],
66
+ defaultValue: 1,
67
+ },
68
+ },
69
+ },
70
+ (api) => {
71
+ const initialSettings = api.getSettings()
72
+ onlineManager.setOnline(Boolean(initialSettings.onlineMode.valueOf()))
73
+
74
+ const queryCache = queryClient.getQueryCache()
75
+
76
+ api.addInspector({
77
+ id: pluginId,
78
+ label: pluginName,
79
+ icon: 'api',
80
+ nodeActions: [
81
+ {
82
+ icon: 'file_download',
83
+ tooltip: 'Refetch',
84
+ action: (queryHash: string) => {
85
+ queryCache.get(queryHash)?.fetch()
86
+ },
87
+ },
88
+ {
89
+ icon: 'alarm',
90
+ tooltip: 'Invalidate',
91
+ action: (queryHash: string) => {
92
+ const query = queryCache.get(queryHash) as Query
93
+ queryClient.invalidateQueries(query)
94
+ },
95
+ },
96
+ {
97
+ icon: 'settings_backup_restore',
98
+ tooltip: 'Reset',
99
+ action: (queryHash: string) => {
100
+ queryCache.get(queryHash)?.reset()
101
+ },
102
+ },
103
+ {
104
+ icon: 'delete',
105
+ tooltip: 'Remove',
106
+ action: (queryHash: string) => {
107
+ const query = queryCache.get(queryHash) as Query
108
+ queryCache.remove(query)
109
+ },
110
+ },
111
+ {
112
+ icon: 'hourglass_empty',
113
+ tooltip: 'Force loading',
114
+ action: (queryHash: string) => {
115
+ const query = queryCache.get(queryHash) as Query
116
+
117
+ query.setState({
118
+ data: undefined,
119
+ status: 'pending',
120
+ })
121
+ },
122
+ },
123
+ {
124
+ icon: 'error_outline',
125
+ tooltip: 'Force error',
126
+ action: (queryHash: string) => {
127
+ const query = queryCache.get(queryHash) as Query
128
+
129
+ query.setState({
130
+ data: undefined,
131
+ status: 'error',
132
+ error: new Error('Unknown error from devtools'),
133
+ })
134
+ },
135
+ },
136
+ ],
137
+ })
138
+
139
+ api.addTimelineLayer({
140
+ id: pluginId,
141
+ label: pluginName,
142
+ color: 0xffd94c,
143
+ })
144
+
145
+ queryCache.subscribe((event) => {
146
+ api.sendInspectorTree(pluginId)
147
+ api.sendInspectorState(pluginId)
148
+
149
+ if (['added', 'removed', 'updated'].includes(event.type)) {
150
+ api.addTimelineEvent({
151
+ layerId: pluginId,
152
+ event: {
153
+ title: event.type,
154
+ subtitle: event.query.queryHash,
155
+ time: api.now(),
156
+ data: {
157
+ queryHash: event.query.queryHash,
158
+ ...event,
159
+ },
160
+ },
161
+ })
162
+ }
163
+ })
164
+
165
+ api.on.setPluginSettings((payload) => {
166
+ if (payload.key === 'onlineMode') {
167
+ onlineManager.setOnline(Boolean(payload.newValue))
168
+ }
169
+ })
170
+
171
+ api.on.getInspectorTree((payload) => {
172
+ if (payload.inspectorId === pluginId) {
173
+ const queries = queryCache.getAll()
174
+ const settings = api.getSettings()
175
+
176
+ const filtered = payload.filter
177
+ ? queries.filter(
178
+ (item) => rankItem(item.queryHash, payload.filter).passed,
179
+ )
180
+ : [...queries]
181
+
182
+ const sorted = filtered.sort(
183
+ (a, b) => sortFns[settings.sortFn]!(a, b) * settings.baseSort,
184
+ )
185
+
186
+ const nodes: CustomInspectorNode[] = sorted.map((query) => {
187
+ const stateLabel = getQueryStateLabel(query)
188
+
189
+ return {
190
+ id: query.queryHash,
191
+ label: query.queryHash,
192
+ tags: [
193
+ {
194
+ label: `${stateLabel} [${query.getObserversCount()}]`,
195
+ textColor: getQueryStatusFg(query),
196
+ backgroundColor: getQueryStatusBg(query),
197
+ },
198
+ ],
199
+ }
200
+ })
201
+ payload.rootNodes = nodes
202
+ }
203
+ })
204
+
205
+ api.on.getInspectorState((payload) => {
206
+ if (payload.inspectorId === pluginId) {
207
+ const query = queryCache.get(payload.nodeId)
208
+
209
+ if (!query) {
210
+ return
211
+ }
212
+
213
+ payload.state = {
214
+ ' Query Details': [
215
+ {
216
+ key: 'Query key',
217
+ value: query.queryHash,
218
+ },
219
+ {
220
+ key: 'Query status',
221
+ value: getQueryStateLabel(query),
222
+ },
223
+ {
224
+ key: 'Observers',
225
+ value: query.getObserversCount(),
226
+ },
227
+ {
228
+ key: 'Last Updated',
229
+ value: new Date(query.state.dataUpdatedAt).toLocaleTimeString(),
230
+ },
231
+ ],
232
+ 'Data Explorer': [
233
+ {
234
+ key: 'Data',
235
+ value: query.state.data,
236
+ },
237
+ ],
238
+ 'Query Explorer': [
239
+ {
240
+ key: 'Query',
241
+ value: query,
242
+ },
243
+ ],
244
+ }
245
+ }
246
+ })
247
+ },
248
+ )
249
+ }
@@ -0,0 +1,96 @@
1
+ import type { Query } from '@tanstack/query-core'
2
+
3
+ type SortFn = (a: Query, b: Query) => number
4
+
5
+ // eslint-disable-next-line no-shadow
6
+ enum QueryState {
7
+ Fetching = 0,
8
+ Fresh,
9
+ Stale,
10
+ Inactive,
11
+ Paused,
12
+ }
13
+
14
+ export function getQueryState(query: Query): QueryState {
15
+ if (query.state.fetchStatus === 'fetching') {
16
+ return QueryState.Fetching
17
+ }
18
+ if (query.state.fetchStatus === 'paused') {
19
+ return QueryState.Paused
20
+ }
21
+ if (!query.getObserversCount()) {
22
+ return QueryState.Inactive
23
+ }
24
+ if (query.isStale()) {
25
+ return QueryState.Stale
26
+ }
27
+
28
+ return QueryState.Fresh
29
+ }
30
+
31
+ export function getQueryStateLabel(query: Query): string {
32
+ const queryState = getQueryState(query)
33
+
34
+ if (queryState === QueryState.Fetching) {
35
+ return 'fetching'
36
+ }
37
+ if (queryState === QueryState.Paused) {
38
+ return 'paused'
39
+ }
40
+ if (queryState === QueryState.Stale) {
41
+ return 'stale'
42
+ }
43
+ if (queryState === QueryState.Inactive) {
44
+ return 'inactive'
45
+ }
46
+
47
+ return 'fresh'
48
+ }
49
+
50
+ export function getQueryStatusFg(query: Query): number {
51
+ const queryState = getQueryState(query)
52
+
53
+ if (queryState === QueryState.Stale) {
54
+ return 0x000000
55
+ }
56
+
57
+ return 0xffffff
58
+ }
59
+
60
+ export function getQueryStatusBg(query: Query): number {
61
+ const queryState = getQueryState(query)
62
+
63
+ if (queryState === QueryState.Fetching) {
64
+ return 0x006bff
65
+ }
66
+ if (queryState === QueryState.Paused) {
67
+ return 0x8c49eb
68
+ }
69
+ if (queryState === QueryState.Stale) {
70
+ return 0xffb200
71
+ }
72
+ if (queryState === QueryState.Inactive) {
73
+ return 0x3f4e60
74
+ }
75
+
76
+ return 0x008327
77
+ }
78
+
79
+ const queryHashSort: SortFn = (a, b) => a.queryHash.localeCompare(b.queryHash)
80
+
81
+ const dateSort: SortFn = (a, b) =>
82
+ a.state.dataUpdatedAt < b.state.dataUpdatedAt ? 1 : -1
83
+
84
+ const statusAndDateSort: SortFn = (a, b) => {
85
+ if (getQueryState(a) === getQueryState(b)) {
86
+ return dateSort(a, b)
87
+ }
88
+
89
+ return getQueryState(a) > getQueryState(b) ? 1 : -1
90
+ }
91
+
92
+ export const sortFns: Record<string, SortFn> = {
93
+ 'Status > Last Updated': statusAndDateSort,
94
+ 'Query Hash': queryHashSort,
95
+ 'Last Updated': dateSort,
96
+ }
package/src/index.ts ADDED
@@ -0,0 +1,30 @@
1
+ export * from '@tanstack/query-core'
2
+
3
+ export { useQueryClient } from './useQueryClient'
4
+ export { VueQueryPlugin } from './vueQueryPlugin'
5
+
6
+ export { QueryClient } from './queryClient'
7
+ export { QueryCache } from './queryCache'
8
+ export { MutationCache } from './mutationCache'
9
+ export { useQuery } from './useQuery'
10
+ export { useQueries } from './useQueries'
11
+ export { useInfiniteQuery } from './useInfiniteQuery'
12
+ export { useMutation } from './useMutation'
13
+ export { useIsFetching } from './useIsFetching'
14
+ export { useIsMutating, useMutationState } from './useMutationState'
15
+ export { VUE_QUERY_CLIENT } from './utils'
16
+
17
+ export type {
18
+ UseQueryOptions,
19
+ UseQueryReturnType,
20
+ UseQueryDefinedReturnType,
21
+ } from './useQuery'
22
+ export type {
23
+ UseInfiniteQueryOptions,
24
+ UseInfiniteQueryReturnType,
25
+ } from './useInfiniteQuery'
26
+ export type { UseMutationOptions, UseMutationReturnType } from './useMutation'
27
+ export type { UseQueriesOptions, UseQueriesResults } from './useQueries'
28
+ export type { MutationFilters, MutationStateOptions } from './useMutationState'
29
+ export type { QueryFilters } from './useIsFetching'
30
+ export type { VueQueryPluginOptions } from './vueQueryPlugin'
@@ -0,0 +1,25 @@
1
+ import { MutationCache as MC } from '@tanstack/query-core'
2
+ import type {
3
+ Mutation,
4
+ MutationFilters,
5
+ DefaultError,
6
+ } from '@tanstack/query-core'
7
+ import type { MaybeRefDeep } from './types'
8
+ import { cloneDeepUnref } from './utils'
9
+
10
+ export class MutationCache extends MC {
11
+ find<
12
+ TData = unknown,
13
+ TError = DefaultError,
14
+ TVariables = any,
15
+ TContext = unknown,
16
+ >(
17
+ filters: MaybeRefDeep<MutationFilters>,
18
+ ): Mutation<TData, TError, TVariables, TContext> | undefined {
19
+ return super.find(cloneDeepUnref(filters))
20
+ }
21
+
22
+ findAll(filters: MaybeRefDeep<MutationFilters> = {}): Mutation[] {
23
+ return super.findAll(cloneDeepUnref(filters))
24
+ }
25
+ }
@@ -0,0 +1,21 @@
1
+ import { QueryCache as QC } from '@tanstack/query-core'
2
+ import type {
3
+ Query,
4
+ QueryFilters,
5
+ WithRequired,
6
+ DefaultError,
7
+ } from '@tanstack/query-core'
8
+ import type { MaybeRefDeep } from './types'
9
+ import { cloneDeepUnref } from './utils'
10
+
11
+ export class QueryCache extends QC {
12
+ find<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData>(
13
+ filters: MaybeRefDeep<WithRequired<QueryFilters, 'queryKey'>>,
14
+ ): Query<TQueryFnData, TError, TData> | undefined {
15
+ return super.find(cloneDeepUnref(filters))
16
+ }
17
+
18
+ findAll(filters: MaybeRefDeep<QueryFilters> = {}): Query[] {
19
+ return super.findAll(cloneDeepUnref(filters))
20
+ }
21
+ }
@@ -0,0 +1,278 @@
1
+ import { ref } from 'vue-demi'
2
+ import { QueryClient as QC } from '@tanstack/query-core'
3
+ import type {
4
+ QueryKey,
5
+ QueryClientConfig,
6
+ SetDataOptions,
7
+ ResetOptions,
8
+ CancelOptions,
9
+ InvalidateQueryFilters,
10
+ InvalidateOptions,
11
+ RefetchQueryFilters,
12
+ RefetchOptions,
13
+ FetchQueryOptions,
14
+ FetchInfiniteQueryOptions,
15
+ InfiniteData,
16
+ DefaultOptions,
17
+ QueryObserverOptions,
18
+ MutationKey,
19
+ MutationObserverOptions,
20
+ QueryFilters,
21
+ MutationFilters,
22
+ QueryState,
23
+ Updater,
24
+ DefaultError,
25
+ } from '@tanstack/query-core'
26
+ import type { MaybeRefDeep } from './types'
27
+ import { cloneDeepUnref } from './utils'
28
+ import { QueryCache } from './queryCache'
29
+ import { MutationCache } from './mutationCache'
30
+
31
+ export class QueryClient extends QC {
32
+ constructor(config: MaybeRefDeep<QueryClientConfig> = {}) {
33
+ const unreffedConfig = cloneDeepUnref(config)
34
+ const vueQueryConfig: QueryClientConfig = {
35
+ defaultOptions: unreffedConfig.defaultOptions,
36
+ queryCache: unreffedConfig.queryCache || new QueryCache(),
37
+ mutationCache: unreffedConfig.mutationCache || new MutationCache(),
38
+ }
39
+ super(vueQueryConfig)
40
+ }
41
+
42
+ isRestoring = ref(false)
43
+
44
+ isFetching(filters: MaybeRefDeep<QueryFilters> = {}): number {
45
+ return super.isFetching(cloneDeepUnref(filters))
46
+ }
47
+
48
+ isMutating(filters: MaybeRefDeep<MutationFilters> = {}): number {
49
+ return super.isMutating(cloneDeepUnref(filters))
50
+ }
51
+
52
+ getQueryData<TData = unknown>(
53
+ queryKey: MaybeRefDeep<QueryKey>,
54
+ ): TData | undefined {
55
+ return super.getQueryData(cloneDeepUnref(queryKey))
56
+ }
57
+
58
+ getQueriesData<TData = unknown>(
59
+ filters: MaybeRefDeep<QueryFilters>,
60
+ ): [QueryKey, TData | undefined][] {
61
+ return super.getQueriesData(cloneDeepUnref(filters))
62
+ }
63
+
64
+ setQueryData<TData>(
65
+ queryKey: MaybeRefDeep<QueryKey>,
66
+ updater: Updater<TData | undefined, TData | undefined>,
67
+ options: MaybeRefDeep<SetDataOptions> = {},
68
+ ): TData | undefined {
69
+ return super.setQueryData(
70
+ cloneDeepUnref(queryKey),
71
+ updater,
72
+ cloneDeepUnref(options),
73
+ )
74
+ }
75
+
76
+ setQueriesData<TData>(
77
+ filters: MaybeRefDeep<QueryFilters>,
78
+ updater: Updater<TData | undefined, TData | undefined>,
79
+ options: MaybeRefDeep<SetDataOptions> = {},
80
+ ): [QueryKey, TData | undefined][] {
81
+ return super.setQueriesData(
82
+ cloneDeepUnref(filters),
83
+ updater,
84
+ cloneDeepUnref(options),
85
+ )
86
+ }
87
+
88
+ getQueryState<TData = unknown, TError = DefaultError>(
89
+ queryKey: MaybeRefDeep<QueryKey>,
90
+ ): QueryState<TData, TError> | undefined {
91
+ return super.getQueryState(cloneDeepUnref(queryKey))
92
+ }
93
+
94
+ removeQueries(filters: MaybeRefDeep<QueryFilters> = {}): void {
95
+ return super.removeQueries(cloneDeepUnref(filters))
96
+ }
97
+
98
+ resetQueries(
99
+ filters: MaybeRefDeep<QueryFilters> = {},
100
+ options: MaybeRefDeep<ResetOptions> = {},
101
+ ): Promise<void> {
102
+ return super.resetQueries(cloneDeepUnref(filters), cloneDeepUnref(options))
103
+ }
104
+
105
+ cancelQueries(
106
+ filters: MaybeRefDeep<QueryFilters> = {},
107
+ options: MaybeRefDeep<CancelOptions> = {},
108
+ ): Promise<void> {
109
+ return super.cancelQueries(cloneDeepUnref(filters), cloneDeepUnref(options))
110
+ }
111
+
112
+ invalidateQueries(
113
+ filters: MaybeRefDeep<InvalidateQueryFilters> = {},
114
+ options: MaybeRefDeep<InvalidateOptions> = {},
115
+ ): Promise<void> {
116
+ return super.invalidateQueries(
117
+ cloneDeepUnref(filters),
118
+ cloneDeepUnref(options),
119
+ )
120
+ }
121
+
122
+ refetchQueries(
123
+ filters: MaybeRefDeep<RefetchQueryFilters> = {},
124
+ options: MaybeRefDeep<RefetchOptions> = {},
125
+ ): Promise<void> {
126
+ return super.refetchQueries(
127
+ cloneDeepUnref(filters),
128
+ cloneDeepUnref(options),
129
+ )
130
+ }
131
+
132
+ fetchQuery<
133
+ TQueryFnData,
134
+ TError = DefaultError,
135
+ TData = TQueryFnData,
136
+ TQueryKey extends QueryKey = QueryKey,
137
+ >(
138
+ options: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
139
+ ): Promise<TData>
140
+ fetchQuery<
141
+ TQueryFnData,
142
+ TError = DefaultError,
143
+ TData = TQueryFnData,
144
+ TQueryKey extends QueryKey = QueryKey,
145
+ >(
146
+ options: MaybeRefDeep<
147
+ FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>
148
+ >,
149
+ ): Promise<TData> {
150
+ return super.fetchQuery(cloneDeepUnref(options))
151
+ }
152
+
153
+ prefetchQuery<
154
+ TQueryFnData = unknown,
155
+ TError = DefaultError,
156
+ TData = TQueryFnData,
157
+ TQueryKey extends QueryKey = QueryKey,
158
+ >(
159
+ options: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
160
+ ): Promise<void>
161
+ prefetchQuery<
162
+ TQueryFnData = unknown,
163
+ TError = DefaultError,
164
+ TData = TQueryFnData,
165
+ TQueryKey extends QueryKey = QueryKey,
166
+ >(
167
+ options: MaybeRefDeep<
168
+ FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>
169
+ >,
170
+ ): Promise<void> {
171
+ return super.prefetchQuery(cloneDeepUnref(options))
172
+ }
173
+
174
+ fetchInfiniteQuery<
175
+ TQueryFnData = unknown,
176
+ TError = DefaultError,
177
+ TData = TQueryFnData,
178
+ TQueryKey extends QueryKey = QueryKey,
179
+ TPageParam = unknown,
180
+ >(
181
+ options: FetchInfiniteQueryOptions<
182
+ TQueryFnData,
183
+ TError,
184
+ TData,
185
+ TQueryKey,
186
+ TPageParam
187
+ >,
188
+ ): Promise<InfiniteData<TData>>
189
+ fetchInfiniteQuery<
190
+ TQueryFnData,
191
+ TError = DefaultError,
192
+ TData = TQueryFnData,
193
+ TQueryKey extends QueryKey = QueryKey,
194
+ TPageParam = unknown,
195
+ >(
196
+ options: MaybeRefDeep<
197
+ FetchInfiniteQueryOptions<
198
+ TQueryFnData,
199
+ TError,
200
+ TData,
201
+ TQueryKey,
202
+ TPageParam
203
+ >
204
+ >,
205
+ ): Promise<InfiniteData<TData>> {
206
+ return super.fetchInfiniteQuery(cloneDeepUnref(options))
207
+ }
208
+
209
+ prefetchInfiniteQuery<
210
+ TQueryFnData = unknown,
211
+ TError = DefaultError,
212
+ TData = TQueryFnData,
213
+ TQueryKey extends QueryKey = QueryKey,
214
+ TPageParam = unknown,
215
+ >(
216
+ options: FetchInfiniteQueryOptions<
217
+ TQueryFnData,
218
+ TError,
219
+ TData,
220
+ TQueryKey,
221
+ TPageParam
222
+ >,
223
+ ): Promise<void>
224
+ prefetchInfiniteQuery<
225
+ TQueryFnData,
226
+ TError = DefaultError,
227
+ TData = TQueryFnData,
228
+ TQueryKey extends QueryKey = QueryKey,
229
+ TPageParam = unknown,
230
+ >(
231
+ options: MaybeRefDeep<
232
+ FetchInfiniteQueryOptions<
233
+ TQueryFnData,
234
+ TError,
235
+ TData,
236
+ TQueryKey,
237
+ TPageParam
238
+ >
239
+ >,
240
+ ): Promise<void> {
241
+ return super.prefetchInfiniteQuery(cloneDeepUnref(options))
242
+ }
243
+
244
+ setDefaultOptions(options: MaybeRefDeep<DefaultOptions>): void {
245
+ super.setDefaultOptions(cloneDeepUnref(options))
246
+ }
247
+
248
+ setQueryDefaults(
249
+ queryKey: MaybeRefDeep<QueryKey>,
250
+ options: MaybeRefDeep<
251
+ Omit<QueryObserverOptions<unknown, any, any, any>, 'queryKey'>
252
+ >,
253
+ ): void {
254
+ super.setQueryDefaults(cloneDeepUnref(queryKey), cloneDeepUnref(options))
255
+ }
256
+
257
+ getQueryDefaults(
258
+ queryKey: MaybeRefDeep<QueryKey>,
259
+ ): QueryObserverOptions<any, any, any, any, any> {
260
+ return super.getQueryDefaults(cloneDeepUnref(queryKey))
261
+ }
262
+
263
+ setMutationDefaults(
264
+ mutationKey: MaybeRefDeep<MutationKey>,
265
+ options: MaybeRefDeep<MutationObserverOptions<any, any, any, any>>,
266
+ ): void {
267
+ super.setMutationDefaults(
268
+ cloneDeepUnref(mutationKey),
269
+ cloneDeepUnref(options),
270
+ )
271
+ }
272
+
273
+ getMutationDefaults(
274
+ mutationKey: MaybeRefDeep<MutationKey>,
275
+ ): MutationObserverOptions<any, any, any, any> {
276
+ return super.getMutationDefaults(cloneDeepUnref(mutationKey))
277
+ }
278
+ }