@tanstack/vue-query 5.94.4 → 5.94.5

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 (233) hide show
  1. package/build/legacy/_tsup-dts-rollup.d.cts +855 -0
  2. package/build/legacy/_tsup-dts-rollup.d.ts +855 -0
  3. package/build/legacy/devtools/devtools.cjs +258 -0
  4. package/build/legacy/devtools/devtools.cjs.map +1 -0
  5. package/build/legacy/devtools/devtools.d.cts +1 -0
  6. package/build/legacy/devtools/devtools.d.ts +1 -0
  7. package/build/legacy/devtools/devtools.js +238 -0
  8. package/build/legacy/devtools/devtools.js.map +1 -0
  9. package/build/legacy/devtools/utils.cjs +105 -0
  10. package/build/legacy/devtools/utils.cjs.map +1 -0
  11. package/build/legacy/devtools/utils.d.cts +5 -0
  12. package/build/legacy/devtools/utils.d.ts +5 -0
  13. package/build/legacy/devtools/utils.js +76 -0
  14. package/build/legacy/devtools/utils.js.map +1 -0
  15. package/build/legacy/index.cjs +75 -0
  16. package/build/legacy/index.cjs.map +1 -0
  17. package/build/legacy/index.d.cts +169 -0
  18. package/build/legacy/index.d.ts +169 -0
  19. package/build/legacy/index.js +34 -0
  20. package/build/legacy/index.js.map +1 -0
  21. package/build/legacy/infiniteQueryOptions.cjs +33 -0
  22. package/build/legacy/infiniteQueryOptions.cjs.map +1 -0
  23. package/build/legacy/infiniteQueryOptions.d.cts +3 -0
  24. package/build/legacy/infiniteQueryOptions.d.ts +3 -0
  25. package/build/legacy/infiniteQueryOptions.js +8 -0
  26. package/build/legacy/infiniteQueryOptions.js.map +1 -0
  27. package/build/legacy/mutationCache.cjs +40 -0
  28. package/build/legacy/mutationCache.cjs.map +1 -0
  29. package/build/legacy/mutationCache.d.cts +1 -0
  30. package/build/legacy/mutationCache.d.ts +1 -0
  31. package/build/legacy/mutationCache.js +15 -0
  32. package/build/legacy/mutationCache.js.map +1 -0
  33. package/build/legacy/queryCache.cjs +40 -0
  34. package/build/legacy/queryCache.cjs.map +1 -0
  35. package/build/legacy/queryCache.d.cts +1 -0
  36. package/build/legacy/queryCache.d.ts +1 -0
  37. package/build/legacy/queryCache.js +15 -0
  38. package/build/legacy/queryCache.js.map +1 -0
  39. package/build/legacy/queryClient.cjs +141 -0
  40. package/build/legacy/queryClient.cjs.map +1 -0
  41. package/build/legacy/queryClient.d.cts +1 -0
  42. package/build/legacy/queryClient.d.ts +1 -0
  43. package/build/legacy/queryClient.js +116 -0
  44. package/build/legacy/queryClient.js.map +1 -0
  45. package/build/legacy/queryOptions.cjs +33 -0
  46. package/build/legacy/queryOptions.cjs.map +1 -0
  47. package/build/legacy/queryOptions.d.cts +1 -0
  48. package/build/legacy/queryOptions.d.ts +1 -0
  49. package/build/legacy/queryOptions.js +8 -0
  50. package/build/legacy/queryOptions.js.map +1 -0
  51. package/build/legacy/types.cjs +19 -0
  52. package/build/legacy/types.cjs.map +1 -0
  53. package/build/legacy/types.d.cts +9 -0
  54. package/build/legacy/types.d.ts +9 -0
  55. package/build/legacy/types.js +1 -0
  56. package/build/legacy/types.js.map +1 -0
  57. package/build/legacy/useBaseQuery.cjs +143 -0
  58. package/build/legacy/useBaseQuery.cjs.map +1 -0
  59. package/build/legacy/useBaseQuery.d.cts +2 -0
  60. package/build/legacy/useBaseQuery.d.ts +2 -0
  61. package/build/legacy/useBaseQuery.js +128 -0
  62. package/build/legacy/useBaseQuery.js.map +1 -0
  63. package/build/legacy/useInfiniteQuery.cjs +39 -0
  64. package/build/legacy/useInfiniteQuery.cjs.map +1 -0
  65. package/build/legacy/useInfiniteQuery.d.cts +3 -0
  66. package/build/legacy/useInfiniteQuery.d.ts +3 -0
  67. package/build/legacy/useInfiniteQuery.js +14 -0
  68. package/build/legacy/useInfiniteQuery.js.map +1 -0
  69. package/build/legacy/useIsFetching.cjs +54 -0
  70. package/build/legacy/useIsFetching.cjs.map +1 -0
  71. package/build/legacy/useIsFetching.d.cts +2 -0
  72. package/build/legacy/useIsFetching.d.ts +2 -0
  73. package/build/legacy/useIsFetching.js +29 -0
  74. package/build/legacy/useIsFetching.js.map +1 -0
  75. package/build/legacy/useMutation.cjs +79 -0
  76. package/build/legacy/useMutation.cjs.map +1 -0
  77. package/build/legacy/useMutation.d.cts +3 -0
  78. package/build/legacy/useMutation.d.ts +3 -0
  79. package/build/legacy/useMutation.js +64 -0
  80. package/build/legacy/useMutation.js.map +1 -0
  81. package/build/legacy/useMutationState.cjs +82 -0
  82. package/build/legacy/useMutationState.cjs.map +1 -0
  83. package/build/legacy/useMutationState.d.cts +4 -0
  84. package/build/legacy/useMutationState.d.ts +4 -0
  85. package/build/legacy/useMutationState.js +63 -0
  86. package/build/legacy/useMutationState.js.map +1 -0
  87. package/build/legacy/useQueries.cjs +115 -0
  88. package/build/legacy/useQueries.cjs.map +1 -0
  89. package/build/legacy/useQueries.d.cts +3 -0
  90. package/build/legacy/useQueries.d.ts +3 -0
  91. package/build/legacy/useQueries.js +99 -0
  92. package/build/legacy/useQueries.js.map +1 -0
  93. package/build/legacy/useQuery.cjs +35 -0
  94. package/build/legacy/useQuery.cjs.map +1 -0
  95. package/build/legacy/useQuery.d.cts +6 -0
  96. package/build/legacy/useQuery.d.ts +6 -0
  97. package/build/legacy/useQuery.js +10 -0
  98. package/build/legacy/useQuery.js.map +1 -0
  99. package/build/legacy/useQueryClient.cjs +47 -0
  100. package/build/legacy/useQueryClient.cjs.map +1 -0
  101. package/build/legacy/useQueryClient.d.cts +1 -0
  102. package/build/legacy/useQueryClient.d.ts +1 -0
  103. package/build/legacy/useQueryClient.js +22 -0
  104. package/build/legacy/useQueryClient.js.map +1 -0
  105. package/build/legacy/utils.cjs +100 -0
  106. package/build/legacy/utils.cjs.map +1 -0
  107. package/build/legacy/utils.d.cts +5 -0
  108. package/build/legacy/utils.d.ts +5 -0
  109. package/build/legacy/utils.js +71 -0
  110. package/build/legacy/utils.js.map +1 -0
  111. package/build/legacy/vueQueryPlugin.cjs +105 -0
  112. package/build/legacy/vueQueryPlugin.cjs.map +1 -0
  113. package/build/legacy/vueQueryPlugin.d.cts +2 -0
  114. package/build/legacy/vueQueryPlugin.d.ts +2 -0
  115. package/build/legacy/vueQueryPlugin.js +80 -0
  116. package/build/legacy/vueQueryPlugin.js.map +1 -0
  117. package/build/modern/_tsup-dts-rollup.d.cts +855 -0
  118. package/build/modern/_tsup-dts-rollup.d.ts +855 -0
  119. package/build/modern/devtools/devtools.cjs +256 -0
  120. package/build/modern/devtools/devtools.cjs.map +1 -0
  121. package/build/modern/devtools/devtools.d.cts +1 -0
  122. package/build/modern/devtools/devtools.d.ts +1 -0
  123. package/build/modern/devtools/devtools.js +236 -0
  124. package/build/modern/devtools/devtools.js.map +1 -0
  125. package/build/modern/devtools/utils.cjs +105 -0
  126. package/build/modern/devtools/utils.cjs.map +1 -0
  127. package/build/modern/devtools/utils.d.cts +5 -0
  128. package/build/modern/devtools/utils.d.ts +5 -0
  129. package/build/modern/devtools/utils.js +76 -0
  130. package/build/modern/devtools/utils.js.map +1 -0
  131. package/build/modern/index.cjs +75 -0
  132. package/build/modern/index.cjs.map +1 -0
  133. package/build/modern/index.d.cts +169 -0
  134. package/build/modern/index.d.ts +169 -0
  135. package/build/modern/index.js +34 -0
  136. package/build/modern/index.js.map +1 -0
  137. package/build/modern/infiniteQueryOptions.cjs +33 -0
  138. package/build/modern/infiniteQueryOptions.cjs.map +1 -0
  139. package/build/modern/infiniteQueryOptions.d.cts +3 -0
  140. package/build/modern/infiniteQueryOptions.d.ts +3 -0
  141. package/build/modern/infiniteQueryOptions.js +8 -0
  142. package/build/modern/infiniteQueryOptions.js.map +1 -0
  143. package/build/modern/mutationCache.cjs +40 -0
  144. package/build/modern/mutationCache.cjs.map +1 -0
  145. package/build/modern/mutationCache.d.cts +1 -0
  146. package/build/modern/mutationCache.d.ts +1 -0
  147. package/build/modern/mutationCache.js +15 -0
  148. package/build/modern/mutationCache.js.map +1 -0
  149. package/build/modern/queryCache.cjs +40 -0
  150. package/build/modern/queryCache.cjs.map +1 -0
  151. package/build/modern/queryCache.d.cts +1 -0
  152. package/build/modern/queryCache.d.ts +1 -0
  153. package/build/modern/queryCache.js +15 -0
  154. package/build/modern/queryCache.js.map +1 -0
  155. package/build/modern/queryClient.cjs +141 -0
  156. package/build/modern/queryClient.cjs.map +1 -0
  157. package/build/modern/queryClient.d.cts +1 -0
  158. package/build/modern/queryClient.d.ts +1 -0
  159. package/build/modern/queryClient.js +116 -0
  160. package/build/modern/queryClient.js.map +1 -0
  161. package/build/modern/queryOptions.cjs +33 -0
  162. package/build/modern/queryOptions.cjs.map +1 -0
  163. package/build/modern/queryOptions.d.cts +1 -0
  164. package/build/modern/queryOptions.d.ts +1 -0
  165. package/build/modern/queryOptions.js +8 -0
  166. package/build/modern/queryOptions.js.map +1 -0
  167. package/build/modern/types.cjs +19 -0
  168. package/build/modern/types.cjs.map +1 -0
  169. package/build/modern/types.d.cts +9 -0
  170. package/build/modern/types.d.ts +9 -0
  171. package/build/modern/types.js +1 -0
  172. package/build/modern/types.js.map +1 -0
  173. package/build/modern/useBaseQuery.cjs +142 -0
  174. package/build/modern/useBaseQuery.cjs.map +1 -0
  175. package/build/modern/useBaseQuery.d.cts +2 -0
  176. package/build/modern/useBaseQuery.d.ts +2 -0
  177. package/build/modern/useBaseQuery.js +127 -0
  178. package/build/modern/useBaseQuery.js.map +1 -0
  179. package/build/modern/useInfiniteQuery.cjs +39 -0
  180. package/build/modern/useInfiniteQuery.cjs.map +1 -0
  181. package/build/modern/useInfiniteQuery.d.cts +3 -0
  182. package/build/modern/useInfiniteQuery.d.ts +3 -0
  183. package/build/modern/useInfiniteQuery.js +14 -0
  184. package/build/modern/useInfiniteQuery.js.map +1 -0
  185. package/build/modern/useIsFetching.cjs +54 -0
  186. package/build/modern/useIsFetching.cjs.map +1 -0
  187. package/build/modern/useIsFetching.d.cts +2 -0
  188. package/build/modern/useIsFetching.d.ts +2 -0
  189. package/build/modern/useIsFetching.js +29 -0
  190. package/build/modern/useIsFetching.js.map +1 -0
  191. package/build/modern/useMutation.cjs +79 -0
  192. package/build/modern/useMutation.cjs.map +1 -0
  193. package/build/modern/useMutation.d.cts +3 -0
  194. package/build/modern/useMutation.d.ts +3 -0
  195. package/build/modern/useMutation.js +64 -0
  196. package/build/modern/useMutation.js.map +1 -0
  197. package/build/modern/useMutationState.cjs +82 -0
  198. package/build/modern/useMutationState.cjs.map +1 -0
  199. package/build/modern/useMutationState.d.cts +4 -0
  200. package/build/modern/useMutationState.d.ts +4 -0
  201. package/build/modern/useMutationState.js +63 -0
  202. package/build/modern/useMutationState.js.map +1 -0
  203. package/build/modern/useQueries.cjs +114 -0
  204. package/build/modern/useQueries.cjs.map +1 -0
  205. package/build/modern/useQueries.d.cts +3 -0
  206. package/build/modern/useQueries.d.ts +3 -0
  207. package/build/modern/useQueries.js +98 -0
  208. package/build/modern/useQueries.js.map +1 -0
  209. package/build/modern/useQuery.cjs +35 -0
  210. package/build/modern/useQuery.cjs.map +1 -0
  211. package/build/modern/useQuery.d.cts +6 -0
  212. package/build/modern/useQuery.d.ts +6 -0
  213. package/build/modern/useQuery.js +10 -0
  214. package/build/modern/useQuery.js.map +1 -0
  215. package/build/modern/useQueryClient.cjs +47 -0
  216. package/build/modern/useQueryClient.cjs.map +1 -0
  217. package/build/modern/useQueryClient.d.cts +1 -0
  218. package/build/modern/useQueryClient.d.ts +1 -0
  219. package/build/modern/useQueryClient.js +22 -0
  220. package/build/modern/useQueryClient.js.map +1 -0
  221. package/build/modern/utils.cjs +100 -0
  222. package/build/modern/utils.cjs.map +1 -0
  223. package/build/modern/utils.d.cts +5 -0
  224. package/build/modern/utils.d.ts +5 -0
  225. package/build/modern/utils.js +71 -0
  226. package/build/modern/utils.js.map +1 -0
  227. package/build/modern/vueQueryPlugin.cjs +104 -0
  228. package/build/modern/vueQueryPlugin.cjs.map +1 -0
  229. package/build/modern/vueQueryPlugin.d.cts +2 -0
  230. package/build/modern/vueQueryPlugin.d.ts +2 -0
  231. package/build/modern/vueQueryPlugin.js +79 -0
  232. package/build/modern/vueQueryPlugin.js.map +1 -0
  233. package/package.json +2 -2
@@ -0,0 +1,258 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/devtools/devtools.ts
21
+ var devtools_exports = {};
22
+ __export(devtools_exports, {
23
+ setupDevtools: () => setupDevtools
24
+ });
25
+ module.exports = __toCommonJS(devtools_exports);
26
+ var import_devtools_api = require("@vue/devtools-api");
27
+ var import_match_sorter_utils = require("@tanstack/match-sorter-utils");
28
+ var import_query_core = require("@tanstack/query-core");
29
+ var import_utils = require("./utils.cjs");
30
+ var pluginId = "vue-query";
31
+ var pluginName = "Vue Query";
32
+ function setupDevtools(app, queryClient) {
33
+ (0, import_devtools_api.setupDevtoolsPlugin)(
34
+ {
35
+ id: pluginId,
36
+ label: pluginName,
37
+ packageName: "vue-query",
38
+ homepage: "https://tanstack.com/query/latest",
39
+ logo: "https://raw.githubusercontent.com/TanStack/query/main/packages/vue-query/media/vue-query.svg",
40
+ app,
41
+ settings: {
42
+ baseSort: {
43
+ type: "choice",
44
+ component: "button-group",
45
+ label: "Sort Cache Entries",
46
+ options: [
47
+ {
48
+ label: "ASC",
49
+ value: 1
50
+ },
51
+ {
52
+ label: "DESC",
53
+ value: -1
54
+ }
55
+ ],
56
+ defaultValue: 1
57
+ },
58
+ sortFn: {
59
+ type: "choice",
60
+ label: "Sort Function",
61
+ options: Object.keys(import_utils.sortFns).map((key) => ({
62
+ label: key,
63
+ value: key
64
+ })),
65
+ defaultValue: Object.keys(import_utils.sortFns)[0]
66
+ },
67
+ onlineMode: {
68
+ type: "choice",
69
+ component: "button-group",
70
+ label: "Online mode",
71
+ options: [
72
+ {
73
+ label: "Online",
74
+ value: 1
75
+ },
76
+ {
77
+ label: "Offline",
78
+ value: 0
79
+ }
80
+ ],
81
+ defaultValue: 1
82
+ }
83
+ }
84
+ },
85
+ (api) => {
86
+ const initialSettings = api.getSettings();
87
+ import_query_core.onlineManager.setOnline(Boolean(initialSettings.onlineMode.valueOf()));
88
+ const queryCache = queryClient.getQueryCache();
89
+ api.addInspector({
90
+ id: pluginId,
91
+ label: pluginName,
92
+ icon: "api",
93
+ nodeActions: [
94
+ {
95
+ icon: "file_download",
96
+ tooltip: "Refetch",
97
+ action: (queryHash) => {
98
+ var _a;
99
+ (_a = queryCache.get(queryHash)) == null ? void 0 : _a.fetch();
100
+ }
101
+ },
102
+ {
103
+ icon: "alarm",
104
+ tooltip: "Invalidate",
105
+ action: (queryHash) => {
106
+ const query = queryCache.get(queryHash);
107
+ queryClient.invalidateQueries(query);
108
+ }
109
+ },
110
+ {
111
+ icon: "settings_backup_restore",
112
+ tooltip: "Reset",
113
+ action: (queryHash) => {
114
+ var _a;
115
+ (_a = queryCache.get(queryHash)) == null ? void 0 : _a.reset();
116
+ }
117
+ },
118
+ {
119
+ icon: "delete",
120
+ tooltip: "Remove",
121
+ action: (queryHash) => {
122
+ const query = queryCache.get(queryHash);
123
+ queryCache.remove(query);
124
+ }
125
+ },
126
+ {
127
+ icon: "hourglass_empty",
128
+ tooltip: "Force loading",
129
+ action: (queryHash) => {
130
+ const query = queryCache.get(queryHash);
131
+ query.setState({
132
+ data: void 0,
133
+ status: "pending"
134
+ });
135
+ }
136
+ },
137
+ {
138
+ icon: "error_outline",
139
+ tooltip: "Force error",
140
+ action: (queryHash) => {
141
+ const query = queryCache.get(queryHash);
142
+ query.setState({
143
+ data: void 0,
144
+ status: "error",
145
+ error: new Error("Unknown error from devtools")
146
+ });
147
+ }
148
+ }
149
+ ]
150
+ });
151
+ api.addTimelineLayer({
152
+ id: pluginId,
153
+ label: pluginName,
154
+ color: 16767308
155
+ });
156
+ queryCache.subscribe((event) => {
157
+ api.sendInspectorTree(pluginId);
158
+ api.sendInspectorState(pluginId);
159
+ const queryEvents = [
160
+ "added",
161
+ "removed",
162
+ "updated"
163
+ ];
164
+ if (queryEvents.includes(event.type)) {
165
+ api.addTimelineEvent({
166
+ layerId: pluginId,
167
+ event: {
168
+ title: event.type,
169
+ subtitle: event.query.queryHash,
170
+ time: api.now(),
171
+ data: {
172
+ queryHash: event.query.queryHash,
173
+ ...event
174
+ }
175
+ }
176
+ });
177
+ }
178
+ });
179
+ api.on.setPluginSettings((payload) => {
180
+ if (payload.key === "onlineMode") {
181
+ import_query_core.onlineManager.setOnline(Boolean(payload.newValue));
182
+ }
183
+ });
184
+ api.on.getInspectorTree((payload) => {
185
+ if (payload.inspectorId === pluginId) {
186
+ const queries = queryCache.getAll();
187
+ const settings = api.getSettings();
188
+ const filtered = payload.filter ? queries.filter(
189
+ (item) => (0, import_match_sorter_utils.rankItem)(item.queryHash, payload.filter).passed
190
+ ) : [...queries];
191
+ const sorted = filtered.sort(
192
+ (a, b) => import_utils.sortFns[settings.sortFn](a, b) * settings.baseSort
193
+ );
194
+ const nodes = sorted.map((query) => {
195
+ const stateLabel = (0, import_utils.getQueryStateLabel)(query);
196
+ return {
197
+ id: query.queryHash,
198
+ label: query.queryHash,
199
+ tags: [
200
+ {
201
+ label: `${stateLabel} [${query.getObserversCount()}]`,
202
+ textColor: (0, import_utils.getQueryStatusFg)(query),
203
+ backgroundColor: (0, import_utils.getQueryStatusBg)(query)
204
+ }
205
+ ]
206
+ };
207
+ });
208
+ payload.rootNodes = nodes;
209
+ }
210
+ });
211
+ api.on.getInspectorState((payload) => {
212
+ if (payload.inspectorId === pluginId) {
213
+ const query = queryCache.get(payload.nodeId);
214
+ if (!query) {
215
+ return;
216
+ }
217
+ payload.state = {
218
+ " Query Details": [
219
+ {
220
+ key: "Query key",
221
+ value: query.queryHash
222
+ },
223
+ {
224
+ key: "Query status",
225
+ value: (0, import_utils.getQueryStateLabel)(query)
226
+ },
227
+ {
228
+ key: "Observers",
229
+ value: query.getObserversCount()
230
+ },
231
+ {
232
+ key: "Last Updated",
233
+ value: new Date(query.state.dataUpdatedAt).toLocaleTimeString()
234
+ }
235
+ ],
236
+ "Data Explorer": [
237
+ {
238
+ key: "Data",
239
+ value: query.state.data
240
+ }
241
+ ],
242
+ "Query Explorer": [
243
+ {
244
+ key: "Query",
245
+ value: query
246
+ }
247
+ ]
248
+ };
249
+ }
250
+ });
251
+ }
252
+ );
253
+ }
254
+ // Annotate the CommonJS export names for ESM import in node:
255
+ 0 && (module.exports = {
256
+ setupDevtools
257
+ });
258
+ //# sourceMappingURL=devtools.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/devtools/devtools.ts"],"sourcesContent":["import { setupDevtoolsPlugin } from '@vue/devtools-api'\nimport { rankItem } from '@tanstack/match-sorter-utils'\nimport { onlineManager } from '@tanstack/query-core'\nimport {\n getQueryStateLabel,\n getQueryStatusBg,\n getQueryStatusFg,\n sortFns,\n} from './utils'\nimport type { CustomInspectorNode } from '@vue/devtools-api'\nimport type { Query, QueryCacheNotifyEvent } from '@tanstack/query-core'\nimport type { QueryClient } from '../queryClient'\n\nconst pluginId = 'vue-query'\nconst pluginName = 'Vue Query'\n\nexport function setupDevtools(app: any, queryClient: QueryClient) {\n setupDevtoolsPlugin(\n {\n id: pluginId,\n label: pluginName,\n packageName: 'vue-query',\n homepage: 'https://tanstack.com/query/latest',\n logo: 'https://raw.githubusercontent.com/TanStack/query/main/packages/vue-query/media/vue-query.svg',\n app,\n settings: {\n baseSort: {\n type: 'choice',\n component: 'button-group',\n label: 'Sort Cache Entries',\n options: [\n {\n label: 'ASC',\n value: 1,\n },\n {\n label: 'DESC',\n value: -1,\n },\n ],\n defaultValue: 1,\n },\n sortFn: {\n type: 'choice',\n label: 'Sort Function',\n options: Object.keys(sortFns).map((key) => ({\n label: key,\n value: key,\n })),\n defaultValue: Object.keys(sortFns)[0]!,\n },\n onlineMode: {\n type: 'choice',\n component: 'button-group',\n label: 'Online mode',\n options: [\n {\n label: 'Online',\n value: 1,\n },\n {\n label: 'Offline',\n value: 0,\n },\n ],\n defaultValue: 1,\n },\n },\n },\n (api) => {\n const initialSettings = api.getSettings()\n onlineManager.setOnline(Boolean(initialSettings.onlineMode.valueOf()))\n\n const queryCache = queryClient.getQueryCache()\n\n api.addInspector({\n id: pluginId,\n label: pluginName,\n icon: 'api',\n nodeActions: [\n {\n icon: 'file_download',\n tooltip: 'Refetch',\n action: (queryHash: string) => {\n queryCache.get(queryHash)?.fetch()\n },\n },\n {\n icon: 'alarm',\n tooltip: 'Invalidate',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n queryClient.invalidateQueries(query)\n },\n },\n {\n icon: 'settings_backup_restore',\n tooltip: 'Reset',\n action: (queryHash: string) => {\n queryCache.get(queryHash)?.reset()\n },\n },\n {\n icon: 'delete',\n tooltip: 'Remove',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n queryCache.remove(query)\n },\n },\n {\n icon: 'hourglass_empty',\n tooltip: 'Force loading',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n\n query.setState({\n data: undefined,\n status: 'pending',\n })\n },\n },\n {\n icon: 'error_outline',\n tooltip: 'Force error',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n\n query.setState({\n data: undefined,\n status: 'error',\n error: new Error('Unknown error from devtools'),\n })\n },\n },\n ],\n })\n\n api.addTimelineLayer({\n id: pluginId,\n label: pluginName,\n color: 0xffd94c,\n })\n\n queryCache.subscribe((event) => {\n api.sendInspectorTree(pluginId)\n api.sendInspectorState(pluginId)\n\n const queryEvents: Array<QueryCacheNotifyEvent['type']> = [\n 'added',\n 'removed',\n 'updated',\n ]\n\n if (queryEvents.includes(event.type)) {\n api.addTimelineEvent({\n layerId: pluginId,\n event: {\n title: event.type,\n subtitle: event.query.queryHash,\n time: api.now(),\n data: {\n queryHash: event.query.queryHash,\n ...event,\n },\n },\n })\n }\n })\n\n api.on.setPluginSettings((payload) => {\n if (payload.key === 'onlineMode') {\n onlineManager.setOnline(Boolean(payload.newValue))\n }\n })\n\n api.on.getInspectorTree((payload) => {\n if (payload.inspectorId === pluginId) {\n const queries = queryCache.getAll()\n const settings = api.getSettings()\n\n const filtered = payload.filter\n ? queries.filter(\n (item) => rankItem(item.queryHash, payload.filter).passed,\n )\n : [...queries]\n\n const sorted = filtered.sort(\n (a, b) => sortFns[settings.sortFn]!(a, b) * settings.baseSort,\n )\n\n const nodes: Array<CustomInspectorNode> = sorted.map((query) => {\n const stateLabel = getQueryStateLabel(query)\n\n return {\n id: query.queryHash,\n label: query.queryHash,\n tags: [\n {\n label: `${stateLabel} [${query.getObserversCount()}]`,\n textColor: getQueryStatusFg(query),\n backgroundColor: getQueryStatusBg(query),\n },\n ],\n }\n })\n payload.rootNodes = nodes\n }\n })\n\n api.on.getInspectorState((payload) => {\n if (payload.inspectorId === pluginId) {\n const query = queryCache.get(payload.nodeId)\n\n if (!query) {\n return\n }\n\n payload.state = {\n ' Query Details': [\n {\n key: 'Query key',\n value: query.queryHash,\n },\n {\n key: 'Query status',\n value: getQueryStateLabel(query),\n },\n {\n key: 'Observers',\n value: query.getObserversCount(),\n },\n {\n key: 'Last Updated',\n value: new Date(query.state.dataUpdatedAt).toLocaleTimeString(),\n },\n ],\n 'Data Explorer': [\n {\n key: 'Data',\n value: query.state.data,\n },\n ],\n 'Query Explorer': [\n {\n key: 'Query',\n value: query,\n },\n ],\n }\n }\n })\n },\n )\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1 @@
1
+ export { setupDevtools } from '../_tsup-dts-rollup.cjs';
@@ -0,0 +1 @@
1
+ export { setupDevtools } from '../_tsup-dts-rollup.js';
@@ -0,0 +1,238 @@
1
+ // src/devtools/devtools.ts
2
+ import { setupDevtoolsPlugin } from "@vue/devtools-api";
3
+ import { rankItem } from "@tanstack/match-sorter-utils";
4
+ import { onlineManager } from "@tanstack/query-core";
5
+ import {
6
+ getQueryStateLabel,
7
+ getQueryStatusBg,
8
+ getQueryStatusFg,
9
+ sortFns
10
+ } from "./utils.js";
11
+ var pluginId = "vue-query";
12
+ var pluginName = "Vue Query";
13
+ function setupDevtools(app, queryClient) {
14
+ setupDevtoolsPlugin(
15
+ {
16
+ id: pluginId,
17
+ label: pluginName,
18
+ packageName: "vue-query",
19
+ homepage: "https://tanstack.com/query/latest",
20
+ logo: "https://raw.githubusercontent.com/TanStack/query/main/packages/vue-query/media/vue-query.svg",
21
+ app,
22
+ settings: {
23
+ baseSort: {
24
+ type: "choice",
25
+ component: "button-group",
26
+ label: "Sort Cache Entries",
27
+ options: [
28
+ {
29
+ label: "ASC",
30
+ value: 1
31
+ },
32
+ {
33
+ label: "DESC",
34
+ value: -1
35
+ }
36
+ ],
37
+ defaultValue: 1
38
+ },
39
+ sortFn: {
40
+ type: "choice",
41
+ label: "Sort Function",
42
+ options: Object.keys(sortFns).map((key) => ({
43
+ label: key,
44
+ value: key
45
+ })),
46
+ defaultValue: Object.keys(sortFns)[0]
47
+ },
48
+ onlineMode: {
49
+ type: "choice",
50
+ component: "button-group",
51
+ label: "Online mode",
52
+ options: [
53
+ {
54
+ label: "Online",
55
+ value: 1
56
+ },
57
+ {
58
+ label: "Offline",
59
+ value: 0
60
+ }
61
+ ],
62
+ defaultValue: 1
63
+ }
64
+ }
65
+ },
66
+ (api) => {
67
+ const initialSettings = api.getSettings();
68
+ onlineManager.setOnline(Boolean(initialSettings.onlineMode.valueOf()));
69
+ const queryCache = queryClient.getQueryCache();
70
+ api.addInspector({
71
+ id: pluginId,
72
+ label: pluginName,
73
+ icon: "api",
74
+ nodeActions: [
75
+ {
76
+ icon: "file_download",
77
+ tooltip: "Refetch",
78
+ action: (queryHash) => {
79
+ var _a;
80
+ (_a = queryCache.get(queryHash)) == null ? void 0 : _a.fetch();
81
+ }
82
+ },
83
+ {
84
+ icon: "alarm",
85
+ tooltip: "Invalidate",
86
+ action: (queryHash) => {
87
+ const query = queryCache.get(queryHash);
88
+ queryClient.invalidateQueries(query);
89
+ }
90
+ },
91
+ {
92
+ icon: "settings_backup_restore",
93
+ tooltip: "Reset",
94
+ action: (queryHash) => {
95
+ var _a;
96
+ (_a = queryCache.get(queryHash)) == null ? void 0 : _a.reset();
97
+ }
98
+ },
99
+ {
100
+ icon: "delete",
101
+ tooltip: "Remove",
102
+ action: (queryHash) => {
103
+ const query = queryCache.get(queryHash);
104
+ queryCache.remove(query);
105
+ }
106
+ },
107
+ {
108
+ icon: "hourglass_empty",
109
+ tooltip: "Force loading",
110
+ action: (queryHash) => {
111
+ const query = queryCache.get(queryHash);
112
+ query.setState({
113
+ data: void 0,
114
+ status: "pending"
115
+ });
116
+ }
117
+ },
118
+ {
119
+ icon: "error_outline",
120
+ tooltip: "Force error",
121
+ action: (queryHash) => {
122
+ const query = queryCache.get(queryHash);
123
+ query.setState({
124
+ data: void 0,
125
+ status: "error",
126
+ error: new Error("Unknown error from devtools")
127
+ });
128
+ }
129
+ }
130
+ ]
131
+ });
132
+ api.addTimelineLayer({
133
+ id: pluginId,
134
+ label: pluginName,
135
+ color: 16767308
136
+ });
137
+ queryCache.subscribe((event) => {
138
+ api.sendInspectorTree(pluginId);
139
+ api.sendInspectorState(pluginId);
140
+ const queryEvents = [
141
+ "added",
142
+ "removed",
143
+ "updated"
144
+ ];
145
+ if (queryEvents.includes(event.type)) {
146
+ api.addTimelineEvent({
147
+ layerId: pluginId,
148
+ event: {
149
+ title: event.type,
150
+ subtitle: event.query.queryHash,
151
+ time: api.now(),
152
+ data: {
153
+ queryHash: event.query.queryHash,
154
+ ...event
155
+ }
156
+ }
157
+ });
158
+ }
159
+ });
160
+ api.on.setPluginSettings((payload) => {
161
+ if (payload.key === "onlineMode") {
162
+ onlineManager.setOnline(Boolean(payload.newValue));
163
+ }
164
+ });
165
+ api.on.getInspectorTree((payload) => {
166
+ if (payload.inspectorId === pluginId) {
167
+ const queries = queryCache.getAll();
168
+ const settings = api.getSettings();
169
+ const filtered = payload.filter ? queries.filter(
170
+ (item) => rankItem(item.queryHash, payload.filter).passed
171
+ ) : [...queries];
172
+ const sorted = filtered.sort(
173
+ (a, b) => sortFns[settings.sortFn](a, b) * settings.baseSort
174
+ );
175
+ const nodes = sorted.map((query) => {
176
+ const stateLabel = getQueryStateLabel(query);
177
+ return {
178
+ id: query.queryHash,
179
+ label: query.queryHash,
180
+ tags: [
181
+ {
182
+ label: `${stateLabel} [${query.getObserversCount()}]`,
183
+ textColor: getQueryStatusFg(query),
184
+ backgroundColor: getQueryStatusBg(query)
185
+ }
186
+ ]
187
+ };
188
+ });
189
+ payload.rootNodes = nodes;
190
+ }
191
+ });
192
+ api.on.getInspectorState((payload) => {
193
+ if (payload.inspectorId === pluginId) {
194
+ const query = queryCache.get(payload.nodeId);
195
+ if (!query) {
196
+ return;
197
+ }
198
+ payload.state = {
199
+ " Query Details": [
200
+ {
201
+ key: "Query key",
202
+ value: query.queryHash
203
+ },
204
+ {
205
+ key: "Query status",
206
+ value: getQueryStateLabel(query)
207
+ },
208
+ {
209
+ key: "Observers",
210
+ value: query.getObserversCount()
211
+ },
212
+ {
213
+ key: "Last Updated",
214
+ value: new Date(query.state.dataUpdatedAt).toLocaleTimeString()
215
+ }
216
+ ],
217
+ "Data Explorer": [
218
+ {
219
+ key: "Data",
220
+ value: query.state.data
221
+ }
222
+ ],
223
+ "Query Explorer": [
224
+ {
225
+ key: "Query",
226
+ value: query
227
+ }
228
+ ]
229
+ };
230
+ }
231
+ });
232
+ }
233
+ );
234
+ }
235
+ export {
236
+ setupDevtools
237
+ };
238
+ //# sourceMappingURL=devtools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/devtools/devtools.ts"],"sourcesContent":["import { setupDevtoolsPlugin } from '@vue/devtools-api'\nimport { rankItem } from '@tanstack/match-sorter-utils'\nimport { onlineManager } from '@tanstack/query-core'\nimport {\n getQueryStateLabel,\n getQueryStatusBg,\n getQueryStatusFg,\n sortFns,\n} from './utils'\nimport type { CustomInspectorNode } from '@vue/devtools-api'\nimport type { Query, QueryCacheNotifyEvent } from '@tanstack/query-core'\nimport type { QueryClient } from '../queryClient'\n\nconst pluginId = 'vue-query'\nconst pluginName = 'Vue Query'\n\nexport function setupDevtools(app: any, queryClient: QueryClient) {\n setupDevtoolsPlugin(\n {\n id: pluginId,\n label: pluginName,\n packageName: 'vue-query',\n homepage: 'https://tanstack.com/query/latest',\n logo: 'https://raw.githubusercontent.com/TanStack/query/main/packages/vue-query/media/vue-query.svg',\n app,\n settings: {\n baseSort: {\n type: 'choice',\n component: 'button-group',\n label: 'Sort Cache Entries',\n options: [\n {\n label: 'ASC',\n value: 1,\n },\n {\n label: 'DESC',\n value: -1,\n },\n ],\n defaultValue: 1,\n },\n sortFn: {\n type: 'choice',\n label: 'Sort Function',\n options: Object.keys(sortFns).map((key) => ({\n label: key,\n value: key,\n })),\n defaultValue: Object.keys(sortFns)[0]!,\n },\n onlineMode: {\n type: 'choice',\n component: 'button-group',\n label: 'Online mode',\n options: [\n {\n label: 'Online',\n value: 1,\n },\n {\n label: 'Offline',\n value: 0,\n },\n ],\n defaultValue: 1,\n },\n },\n },\n (api) => {\n const initialSettings = api.getSettings()\n onlineManager.setOnline(Boolean(initialSettings.onlineMode.valueOf()))\n\n const queryCache = queryClient.getQueryCache()\n\n api.addInspector({\n id: pluginId,\n label: pluginName,\n icon: 'api',\n nodeActions: [\n {\n icon: 'file_download',\n tooltip: 'Refetch',\n action: (queryHash: string) => {\n queryCache.get(queryHash)?.fetch()\n },\n },\n {\n icon: 'alarm',\n tooltip: 'Invalidate',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n queryClient.invalidateQueries(query)\n },\n },\n {\n icon: 'settings_backup_restore',\n tooltip: 'Reset',\n action: (queryHash: string) => {\n queryCache.get(queryHash)?.reset()\n },\n },\n {\n icon: 'delete',\n tooltip: 'Remove',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n queryCache.remove(query)\n },\n },\n {\n icon: 'hourglass_empty',\n tooltip: 'Force loading',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n\n query.setState({\n data: undefined,\n status: 'pending',\n })\n },\n },\n {\n icon: 'error_outline',\n tooltip: 'Force error',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n\n query.setState({\n data: undefined,\n status: 'error',\n error: new Error('Unknown error from devtools'),\n })\n },\n },\n ],\n })\n\n api.addTimelineLayer({\n id: pluginId,\n label: pluginName,\n color: 0xffd94c,\n })\n\n queryCache.subscribe((event) => {\n api.sendInspectorTree(pluginId)\n api.sendInspectorState(pluginId)\n\n const queryEvents: Array<QueryCacheNotifyEvent['type']> = [\n 'added',\n 'removed',\n 'updated',\n ]\n\n if (queryEvents.includes(event.type)) {\n api.addTimelineEvent({\n layerId: pluginId,\n event: {\n title: event.type,\n subtitle: event.query.queryHash,\n time: api.now(),\n data: {\n queryHash: event.query.queryHash,\n ...event,\n },\n },\n })\n }\n })\n\n api.on.setPluginSettings((payload) => {\n if (payload.key === 'onlineMode') {\n onlineManager.setOnline(Boolean(payload.newValue))\n }\n })\n\n api.on.getInspectorTree((payload) => {\n if (payload.inspectorId === pluginId) {\n const queries = queryCache.getAll()\n const settings = api.getSettings()\n\n const filtered = payload.filter\n ? queries.filter(\n (item) => rankItem(item.queryHash, payload.filter).passed,\n )\n : [...queries]\n\n const sorted = filtered.sort(\n (a, b) => sortFns[settings.sortFn]!(a, b) * settings.baseSort,\n )\n\n const nodes: Array<CustomInspectorNode> = sorted.map((query) => {\n const stateLabel = getQueryStateLabel(query)\n\n return {\n id: query.queryHash,\n label: query.queryHash,\n tags: [\n {\n label: `${stateLabel} [${query.getObserversCount()}]`,\n textColor: getQueryStatusFg(query),\n backgroundColor: getQueryStatusBg(query),\n },\n ],\n }\n })\n payload.rootNodes = nodes\n }\n })\n\n api.on.getInspectorState((payload) => {\n if (payload.inspectorId === pluginId) {\n const query = queryCache.get(payload.nodeId)\n\n if (!query) {\n return\n }\n\n payload.state = {\n ' Query Details': [\n {\n key: 'Query key',\n value: query.queryHash,\n },\n {\n key: 'Query status',\n value: getQueryStateLabel(query),\n },\n {\n key: 'Observers',\n value: query.getObserversCount(),\n },\n {\n key: 'Last Updated',\n value: new Date(query.state.dataUpdatedAt).toLocaleTimeString(),\n },\n ],\n 'Data Explorer': [\n {\n key: 'Data',\n value: query.state.data,\n },\n ],\n 'Query Explorer': [\n {\n key: 'Query',\n value: query,\n },\n ],\n }\n }\n })\n },\n )\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/devtools/utils.ts
21
+ var utils_exports = {};
22
+ __export(utils_exports, {
23
+ getQueryState: () => getQueryState,
24
+ getQueryStateLabel: () => getQueryStateLabel,
25
+ getQueryStatusBg: () => getQueryStatusBg,
26
+ getQueryStatusFg: () => getQueryStatusFg,
27
+ sortFns: () => sortFns
28
+ });
29
+ module.exports = __toCommonJS(utils_exports);
30
+ function getQueryState(query) {
31
+ if (query.state.fetchStatus === "fetching") {
32
+ return 0 /* Fetching */;
33
+ }
34
+ if (query.state.fetchStatus === "paused") {
35
+ return 4 /* Paused */;
36
+ }
37
+ if (!query.getObserversCount()) {
38
+ return 3 /* Inactive */;
39
+ }
40
+ if (query.isStale()) {
41
+ return 2 /* Stale */;
42
+ }
43
+ return 1 /* Fresh */;
44
+ }
45
+ function getQueryStateLabel(query) {
46
+ const queryState = getQueryState(query);
47
+ if (queryState === 0 /* Fetching */) {
48
+ return "fetching";
49
+ }
50
+ if (queryState === 4 /* Paused */) {
51
+ return "paused";
52
+ }
53
+ if (queryState === 2 /* Stale */) {
54
+ return "stale";
55
+ }
56
+ if (queryState === 3 /* Inactive */) {
57
+ return "inactive";
58
+ }
59
+ return "fresh";
60
+ }
61
+ function getQueryStatusFg(query) {
62
+ const queryState = getQueryState(query);
63
+ if (queryState === 2 /* Stale */) {
64
+ return 0;
65
+ }
66
+ return 16777215;
67
+ }
68
+ function getQueryStatusBg(query) {
69
+ const queryState = getQueryState(query);
70
+ if (queryState === 0 /* Fetching */) {
71
+ return 27647;
72
+ }
73
+ if (queryState === 4 /* Paused */) {
74
+ return 9193963;
75
+ }
76
+ if (queryState === 2 /* Stale */) {
77
+ return 16757248;
78
+ }
79
+ if (queryState === 3 /* Inactive */) {
80
+ return 4148832;
81
+ }
82
+ return 33575;
83
+ }
84
+ var queryHashSort = (a, b) => a.queryHash.localeCompare(b.queryHash);
85
+ var dateSort = (a, b) => a.state.dataUpdatedAt < b.state.dataUpdatedAt ? 1 : -1;
86
+ var statusAndDateSort = (a, b) => {
87
+ if (getQueryState(a) === getQueryState(b)) {
88
+ return dateSort(a, b);
89
+ }
90
+ return getQueryState(a) > getQueryState(b) ? 1 : -1;
91
+ };
92
+ var sortFns = {
93
+ "Status > Last Updated": statusAndDateSort,
94
+ "Query Hash": queryHashSort,
95
+ "Last Updated": dateSort
96
+ };
97
+ // Annotate the CommonJS export names for ESM import in node:
98
+ 0 && (module.exports = {
99
+ getQueryState,
100
+ getQueryStateLabel,
101
+ getQueryStatusBg,
102
+ getQueryStatusFg,
103
+ sortFns
104
+ });
105
+ //# sourceMappingURL=utils.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/devtools/utils.ts"],"sourcesContent":["import type { Query } from '@tanstack/query-core'\n\ntype SortFn = (a: Query, b: Query) => number\n\nenum QueryState {\n Fetching = 0,\n Fresh,\n Stale,\n Inactive,\n Paused,\n}\n\nexport function getQueryState(query: Query): QueryState {\n if (query.state.fetchStatus === 'fetching') {\n return QueryState.Fetching\n }\n if (query.state.fetchStatus === 'paused') {\n return QueryState.Paused\n }\n if (!query.getObserversCount()) {\n return QueryState.Inactive\n }\n if (query.isStale()) {\n return QueryState.Stale\n }\n\n return QueryState.Fresh\n}\n\nexport function getQueryStateLabel(query: Query): string {\n const queryState = getQueryState(query)\n\n if (queryState === QueryState.Fetching) {\n return 'fetching'\n }\n if (queryState === QueryState.Paused) {\n return 'paused'\n }\n if (queryState === QueryState.Stale) {\n return 'stale'\n }\n if (queryState === QueryState.Inactive) {\n return 'inactive'\n }\n\n return 'fresh'\n}\n\nexport function getQueryStatusFg(query: Query): number {\n const queryState = getQueryState(query)\n\n if (queryState === QueryState.Stale) {\n return 0x000000\n }\n\n return 0xffffff\n}\n\nexport function getQueryStatusBg(query: Query): number {\n const queryState = getQueryState(query)\n\n if (queryState === QueryState.Fetching) {\n return 0x006bff\n }\n if (queryState === QueryState.Paused) {\n return 0x8c49eb\n }\n if (queryState === QueryState.Stale) {\n return 0xffb200\n }\n if (queryState === QueryState.Inactive) {\n return 0x3f4e60\n }\n\n return 0x008327\n}\n\nconst queryHashSort: SortFn = (a, b) => a.queryHash.localeCompare(b.queryHash)\n\nconst dateSort: SortFn = (a, b) =>\n a.state.dataUpdatedAt < b.state.dataUpdatedAt ? 1 : -1\n\nconst statusAndDateSort: SortFn = (a, b) => {\n if (getQueryState(a) === getQueryState(b)) {\n return dateSort(a, b)\n }\n\n return getQueryState(a) > getQueryState(b) ? 1 : -1\n}\n\nexport const sortFns: Record<string, SortFn> = {\n 'Status > Last Updated': statusAndDateSort,\n 'Query Hash': queryHashSort,\n 'Last Updated': dateSort,\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYO,SAAS,cAAc,OAA0B;AACtD,MAAI,MAAM,MAAM,gBAAgB,YAAY;AAC1C,WAAO;AAAA,EACT;AACA,MAAI,MAAM,MAAM,gBAAgB,UAAU;AACxC,WAAO;AAAA,EACT;AACA,MAAI,CAAC,MAAM,kBAAkB,GAAG;AAC9B,WAAO;AAAA,EACT;AACA,MAAI,MAAM,QAAQ,GAAG;AACnB,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,mBAAmB,OAAsB;AACvD,QAAM,aAAa,cAAc,KAAK;AAEtC,MAAI,eAAe,kBAAqB;AACtC,WAAO;AAAA,EACT;AACA,MAAI,eAAe,gBAAmB;AACpC,WAAO;AAAA,EACT;AACA,MAAI,eAAe,eAAkB;AACnC,WAAO;AAAA,EACT;AACA,MAAI,eAAe,kBAAqB;AACtC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,iBAAiB,OAAsB;AACrD,QAAM,aAAa,cAAc,KAAK;AAEtC,MAAI,eAAe,eAAkB;AACnC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,iBAAiB,OAAsB;AACrD,QAAM,aAAa,cAAc,KAAK;AAEtC,MAAI,eAAe,kBAAqB;AACtC,WAAO;AAAA,EACT;AACA,MAAI,eAAe,gBAAmB;AACpC,WAAO;AAAA,EACT;AACA,MAAI,eAAe,eAAkB;AACnC,WAAO;AAAA,EACT;AACA,MAAI,eAAe,kBAAqB;AACtC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,IAAM,gBAAwB,CAAC,GAAG,MAAM,EAAE,UAAU,cAAc,EAAE,SAAS;AAE7E,IAAM,WAAmB,CAAC,GAAG,MAC3B,EAAE,MAAM,gBAAgB,EAAE,MAAM,gBAAgB,IAAI;AAEtD,IAAM,oBAA4B,CAAC,GAAG,MAAM;AAC1C,MAAI,cAAc,CAAC,MAAM,cAAc,CAAC,GAAG;AACzC,WAAO,SAAS,GAAG,CAAC;AAAA,EACtB;AAEA,SAAO,cAAc,CAAC,IAAI,cAAc,CAAC,IAAI,IAAI;AACnD;AAEO,IAAM,UAAkC;AAAA,EAC7C,yBAAyB;AAAA,EACzB,cAAc;AAAA,EACd,gBAAgB;AAClB;","names":[]}
@@ -0,0 +1,5 @@
1
+ export { getQueryState } from '../_tsup-dts-rollup.cjs';
2
+ export { getQueryStateLabel } from '../_tsup-dts-rollup.cjs';
3
+ export { getQueryStatusFg } from '../_tsup-dts-rollup.cjs';
4
+ export { getQueryStatusBg } from '../_tsup-dts-rollup.cjs';
5
+ export { sortFns } from '../_tsup-dts-rollup.cjs';
@@ -0,0 +1,5 @@
1
+ export { getQueryState } from '../_tsup-dts-rollup.js';
2
+ export { getQueryStateLabel } from '../_tsup-dts-rollup.js';
3
+ export { getQueryStatusFg } from '../_tsup-dts-rollup.js';
4
+ export { getQueryStatusBg } from '../_tsup-dts-rollup.js';
5
+ export { sortFns } from '../_tsup-dts-rollup.js';