@tanstack/react-query-devtools 5.0.0-alpha.12 → 5.0.0-alpha.17

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 (73) hide show
  1. package/build/lib/CachePanel/ActiveQuery.d.ts +18 -0
  2. package/build/lib/CachePanel/ActiveQuery.esm.js +271 -0
  3. package/build/lib/CachePanel/ActiveQuery.esm.js.map +1 -0
  4. package/build/lib/CachePanel/ActiveQuery.js +275 -0
  5. package/build/lib/CachePanel/ActiveQuery.js.map +1 -0
  6. package/build/lib/CachePanel/ActiveQuery.mjs +257 -0
  7. package/build/lib/CachePanel/ActiveQuery.mjs.map +1 -0
  8. package/build/lib/CachePanel/CachePanel.d.ts +57 -0
  9. package/build/lib/CachePanel/CachePanel.esm.js +310 -0
  10. package/build/lib/CachePanel/CachePanel.esm.js.map +1 -0
  11. package/build/lib/CachePanel/CachePanel.js +315 -0
  12. package/build/lib/CachePanel/CachePanel.js.map +1 -0
  13. package/build/lib/CachePanel/CachePanel.mjs +310 -0
  14. package/build/lib/CachePanel/CachePanel.mjs.map +1 -0
  15. package/build/lib/CachePanel/Header/QueryStatusCount.d.ts +7 -0
  16. package/build/lib/CachePanel/Header/QueryStatusCount.esm.js +49 -0
  17. package/build/lib/CachePanel/Header/QueryStatusCount.esm.js.map +1 -0
  18. package/build/lib/CachePanel/Header/QueryStatusCount.js +53 -0
  19. package/build/lib/CachePanel/Header/QueryStatusCount.js.map +1 -0
  20. package/build/lib/CachePanel/Header/QueryStatusCount.mjs +49 -0
  21. package/build/lib/CachePanel/Header/QueryStatusCount.mjs.map +1 -0
  22. package/build/lib/CachePanel/QueryRow.d.ts +13 -0
  23. package/build/lib/CachePanel/QueryRow.esm.js +98 -0
  24. package/build/lib/CachePanel/QueryRow.esm.js.map +1 -0
  25. package/build/lib/CachePanel/QueryRow.js +102 -0
  26. package/build/lib/CachePanel/QueryRow.js.map +1 -0
  27. package/build/lib/CachePanel/QueryRow.mjs +82 -0
  28. package/build/lib/CachePanel/QueryRow.mjs.map +1 -0
  29. package/build/lib/devtools.d.ts +3 -64
  30. package/build/lib/devtools.esm.js +2 -669
  31. package/build/lib/devtools.esm.js.map +1 -1
  32. package/build/lib/devtools.js +3 -669
  33. package/build/lib/devtools.js.map +1 -1
  34. package/build/lib/devtools.mjs +2 -639
  35. package/build/lib/devtools.mjs.map +1 -1
  36. package/build/lib/index.esm.js +2 -1
  37. package/build/lib/index.esm.js.map +1 -1
  38. package/build/lib/index.js +2 -1
  39. package/build/lib/index.js.map +1 -1
  40. package/build/lib/index.mjs +2 -1
  41. package/build/lib/index.mjs.map +1 -1
  42. package/build/lib/index.prod.esm.js +754 -713
  43. package/build/lib/index.prod.esm.js.map +1 -1
  44. package/build/lib/index.prod.js +751 -710
  45. package/build/lib/index.prod.js.map +1 -1
  46. package/build/lib/index.prod.mjs +755 -714
  47. package/build/lib/index.prod.mjs.map +1 -1
  48. package/build/lib/styledComponents.esm.js +8 -0
  49. package/build/lib/styledComponents.esm.js.map +1 -1
  50. package/build/lib/styledComponents.js +8 -0
  51. package/build/lib/styledComponents.js.map +1 -1
  52. package/build/lib/styledComponents.mjs +8 -0
  53. package/build/lib/styledComponents.mjs.map +1 -1
  54. package/build/lib/types.d.ts +11 -0
  55. package/build/lib/useSubscribeToQueryCache.d.ts +3 -0
  56. package/build/lib/useSubscribeToQueryCache.esm.js +15 -0
  57. package/build/lib/useSubscribeToQueryCache.esm.js.map +1 -0
  58. package/build/lib/useSubscribeToQueryCache.js +19 -0
  59. package/build/lib/useSubscribeToQueryCache.js.map +1 -0
  60. package/build/lib/useSubscribeToQueryCache.mjs +15 -0
  61. package/build/lib/useSubscribeToQueryCache.mjs.map +1 -0
  62. package/build/umd/index.development.js +2394 -2353
  63. package/build/umd/index.development.js.map +1 -1
  64. package/package.json +1 -1
  65. package/src/CachePanel/ActiveQuery.tsx +380 -0
  66. package/src/CachePanel/CachePanel.tsx +439 -0
  67. package/src/CachePanel/Header/QueryStatusCount.tsx +93 -0
  68. package/src/CachePanel/QueryRow.tsx +125 -0
  69. package/src/__tests__/devtools.test.tsx +46 -0
  70. package/src/devtools.tsx +5 -1008
  71. package/src/styledComponents.ts +16 -0
  72. package/src/types.ts +12 -0
  73. package/src/useSubscribeToQueryCache.ts +26 -0
@@ -0,0 +1,18 @@
1
+ import type { QueryCache, QueryClient } from '@tanstack/react-query';
2
+ import type { DevToolsErrorType } from '../types';
3
+ /**
4
+ * Panel for the query currently being inspected
5
+ *
6
+ * It displays query details (key, observers...), query actions,
7
+ * the data explorer and the query explorer
8
+ */
9
+ declare const ActiveQuery: {
10
+ ({ queryCache, activeQueryHash, queryClient, errorTypes, }: {
11
+ queryCache: QueryCache;
12
+ activeQueryHash: string;
13
+ queryClient: QueryClient;
14
+ errorTypes: DevToolsErrorType[];
15
+ }): JSX.Element | null;
16
+ displayName: string;
17
+ };
18
+ export default ActiveQuery;
@@ -0,0 +1,271 @@
1
+ import React__default from 'react';
2
+ import useSubscribeToQueryCache from '../useSubscribeToQueryCache.esm.js';
3
+ import { ActiveQueryPanel, Code, Button, Select } from '../styledComponents.esm.js';
4
+ import { displayValue, getQueryStatusColor, getQueryStatusLabel } from '../utils.esm.js';
5
+ import Explorer from '../Explorer.esm.js';
6
+ import { defaultTheme } from '../theme.esm.js';
7
+
8
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
9
+ function noop() {}
10
+
11
+ /**
12
+ * Panel for the query currently being inspected
13
+ *
14
+ * It displays query details (key, observers...), query actions,
15
+ * the data explorer and the query explorer
16
+ */
17
+ const ActiveQuery = ({
18
+ queryCache,
19
+ activeQueryHash,
20
+ queryClient,
21
+ errorTypes
22
+ }) => {
23
+ var _useSubscribeToQueryC, _useSubscribeToQueryC2;
24
+ const activeQuery = useSubscribeToQueryCache(queryCache, () => queryCache.getAll().find(query => query.queryHash === activeQueryHash));
25
+ const activeQueryState = useSubscribeToQueryCache(queryCache, () => {
26
+ var _queryCache$getAll$fi;
27
+ return (_queryCache$getAll$fi = queryCache.getAll().find(query => query.queryHash === activeQueryHash)) == null ? void 0 : _queryCache$getAll$fi.state;
28
+ });
29
+ const isStale = (_useSubscribeToQueryC = useSubscribeToQueryCache(queryCache, () => {
30
+ var _queryCache$getAll$fi2;
31
+ return (_queryCache$getAll$fi2 = queryCache.getAll().find(query => query.queryHash === activeQueryHash)) == null ? void 0 : _queryCache$getAll$fi2.isStale();
32
+ })) != null ? _useSubscribeToQueryC : false;
33
+ const observerCount = (_useSubscribeToQueryC2 = useSubscribeToQueryCache(queryCache, () => {
34
+ var _queryCache$getAll$fi3;
35
+ return (_queryCache$getAll$fi3 = queryCache.getAll().find(query => query.queryHash === activeQueryHash)) == null ? void 0 : _queryCache$getAll$fi3.getObserversCount();
36
+ })) != null ? _useSubscribeToQueryC2 : 0;
37
+ const handleRefetch = () => {
38
+ const promise = activeQuery == null ? void 0 : activeQuery.fetch();
39
+ promise == null ? void 0 : promise.catch(noop);
40
+ };
41
+ const currentErrorTypeName = React__default.useMemo(() => {
42
+ if (activeQuery && activeQueryState != null && activeQueryState.error) {
43
+ const errorType = errorTypes.find(type => {
44
+ var _activeQueryState$err;
45
+ return type.initializer(activeQuery).toString() === ((_activeQueryState$err = activeQueryState.error) == null ? void 0 : _activeQueryState$err.toString());
46
+ });
47
+ return errorType == null ? void 0 : errorType.name;
48
+ }
49
+ return undefined;
50
+ }, [activeQuery, activeQueryState == null ? void 0 : activeQueryState.error, errorTypes]);
51
+ if (!activeQuery || !activeQueryState) {
52
+ return null;
53
+ }
54
+ const triggerError = errorType => {
55
+ var _errorType$initialize;
56
+ const error = (_errorType$initialize = errorType == null ? void 0 : errorType.initializer(activeQuery)) != null ? _errorType$initialize : new Error('Unknown error from devtools');
57
+ const __previousQueryOptions = activeQuery.options;
58
+ activeQuery.setState({
59
+ status: 'error',
60
+ error,
61
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
62
+ fetchMeta: {
63
+ ...activeQuery.state.fetchMeta,
64
+ __previousQueryOptions
65
+ }
66
+ });
67
+ };
68
+ const restoreQueryAfterLoadingOrError = () => {
69
+ activeQuery.fetch(activeQuery.state.fetchMeta.__previousQueryOptions, {
70
+ // Make sure this fetch will cancel the previous one
71
+ cancelRefetch: true
72
+ });
73
+ };
74
+ return /*#__PURE__*/React__default.createElement(ActiveQueryPanel, null, /*#__PURE__*/React__default.createElement("div", {
75
+ style: {
76
+ padding: '.5em',
77
+ background: defaultTheme.backgroundAlt,
78
+ position: 'sticky',
79
+ top: 0,
80
+ zIndex: 1
81
+ }
82
+ }, "Query Details"), /*#__PURE__*/React__default.createElement("div", {
83
+ style: {
84
+ padding: '.5em'
85
+ }
86
+ }, /*#__PURE__*/React__default.createElement("div", {
87
+ style: {
88
+ marginBottom: '.5em',
89
+ display: 'flex',
90
+ alignItems: 'flex-start',
91
+ justifyContent: 'space-between'
92
+ }
93
+ }, /*#__PURE__*/React__default.createElement(Code, {
94
+ style: {
95
+ lineHeight: '1.8em'
96
+ }
97
+ }, /*#__PURE__*/React__default.createElement("pre", {
98
+ style: {
99
+ margin: 0,
100
+ padding: 0,
101
+ overflow: 'auto'
102
+ }
103
+ }, displayValue(activeQuery.queryKey, true))), /*#__PURE__*/React__default.createElement("span", {
104
+ style: {
105
+ padding: '0.3em .6em',
106
+ borderRadius: '0.4em',
107
+ fontWeight: 'bold',
108
+ textShadow: '0 2px 10px black',
109
+ background: getQueryStatusColor({
110
+ queryState: activeQueryState,
111
+ isStale: isStale,
112
+ observerCount: observerCount,
113
+ theme: defaultTheme
114
+ }),
115
+ flexShrink: 0
116
+ }
117
+ }, getQueryStatusLabel(activeQuery))), /*#__PURE__*/React__default.createElement("div", {
118
+ style: {
119
+ marginBottom: '.5em',
120
+ display: 'flex',
121
+ alignItems: 'center',
122
+ justifyContent: 'space-between'
123
+ }
124
+ }, "Observers: ", /*#__PURE__*/React__default.createElement(Code, null, observerCount)), /*#__PURE__*/React__default.createElement("div", {
125
+ style: {
126
+ display: 'flex',
127
+ alignItems: 'center',
128
+ justifyContent: 'space-between'
129
+ }
130
+ }, "Last Updated:", ' ', /*#__PURE__*/React__default.createElement(Code, null, new Date(activeQueryState.dataUpdatedAt).toLocaleTimeString()))), /*#__PURE__*/React__default.createElement("div", {
131
+ style: {
132
+ background: defaultTheme.backgroundAlt,
133
+ padding: '.5em',
134
+ position: 'sticky',
135
+ top: 0,
136
+ zIndex: 1
137
+ }
138
+ }, "Actions"), /*#__PURE__*/React__default.createElement("div", {
139
+ style: {
140
+ padding: '0.5em',
141
+ display: 'flex',
142
+ flexWrap: 'wrap',
143
+ gap: '0.5em',
144
+ alignItems: 'flex-end'
145
+ }
146
+ }, /*#__PURE__*/React__default.createElement(Button, {
147
+ type: "button",
148
+ onClick: handleRefetch,
149
+ disabled: activeQueryState.fetchStatus === 'fetching',
150
+ style: {
151
+ background: defaultTheme.active
152
+ }
153
+ }, "Refetch"), ' ', /*#__PURE__*/React__default.createElement(Button, {
154
+ type: "button",
155
+ onClick: () => queryClient.invalidateQueries(activeQuery),
156
+ style: {
157
+ background: defaultTheme.warning,
158
+ color: defaultTheme.inputTextColor
159
+ }
160
+ }, "Invalidate"), ' ', /*#__PURE__*/React__default.createElement(Button, {
161
+ type: "button",
162
+ onClick: () => queryClient.resetQueries(activeQuery),
163
+ style: {
164
+ background: defaultTheme.gray
165
+ }
166
+ }, "Reset"), ' ', /*#__PURE__*/React__default.createElement(Button, {
167
+ type: "button",
168
+ onClick: () => queryClient.removeQueries(activeQuery),
169
+ style: {
170
+ background: defaultTheme.danger
171
+ }
172
+ }, "Remove"), ' ', /*#__PURE__*/React__default.createElement(Button, {
173
+ type: "button",
174
+ onClick: () => {
175
+ if (activeQuery.state.data === undefined) {
176
+ restoreQueryAfterLoadingOrError();
177
+ } else {
178
+ const __previousQueryOptions = activeQuery.options;
179
+ // Trigger a fetch in order to trigger suspense as well.
180
+ activeQuery.fetch({
181
+ ...__previousQueryOptions,
182
+ queryFn: () => {
183
+ return new Promise(() => {
184
+ // Never resolve
185
+ });
186
+ },
187
+ gcTime: -1
188
+ });
189
+ activeQuery.setState({
190
+ data: undefined,
191
+ status: 'pending',
192
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
193
+ fetchMeta: {
194
+ ...activeQuery.state.fetchMeta,
195
+ __previousQueryOptions
196
+ }
197
+ });
198
+ }
199
+ },
200
+ style: {
201
+ background: defaultTheme.paused
202
+ }
203
+ }, activeQuery.state.status === 'pending' ? 'Restore' : 'Trigger', ' ', "loading"), ' ', errorTypes.length === 0 || activeQuery.state.status === 'error' ? /*#__PURE__*/React__default.createElement(Button, {
204
+ type: "button",
205
+ onClick: () => {
206
+ if (!activeQuery.state.error) {
207
+ triggerError();
208
+ } else {
209
+ queryClient.resetQueries(activeQuery);
210
+ }
211
+ },
212
+ style: {
213
+ background: defaultTheme.danger
214
+ }
215
+ }, activeQuery.state.status === 'error' ? 'Restore' : 'Trigger', " error") : /*#__PURE__*/React__default.createElement("label", null, "Trigger error:", /*#__PURE__*/React__default.createElement(Select, {
216
+ value: currentErrorTypeName != null ? currentErrorTypeName : '',
217
+ style: {
218
+ marginInlineStart: '.5em'
219
+ },
220
+ onChange: e => {
221
+ const errorType = errorTypes.find(t => t.name === e.target.value);
222
+ triggerError(errorType);
223
+ }
224
+ }, /*#__PURE__*/React__default.createElement("option", {
225
+ key: "",
226
+ value: ""
227
+ }), errorTypes.map(errorType => /*#__PURE__*/React__default.createElement("option", {
228
+ key: errorType.name,
229
+ value: errorType.name
230
+ }, errorType.name))))), /*#__PURE__*/React__default.createElement("div", {
231
+ style: {
232
+ background: defaultTheme.backgroundAlt,
233
+ padding: '.5em',
234
+ position: 'sticky',
235
+ top: 0,
236
+ zIndex: 1
237
+ }
238
+ }, "Data Explorer"), /*#__PURE__*/React__default.createElement("div", {
239
+ style: {
240
+ padding: '.5em'
241
+ }
242
+ }, /*#__PURE__*/React__default.createElement(Explorer, {
243
+ label: "Data",
244
+ value: activeQueryState.data,
245
+ defaultExpanded: {},
246
+ copyable: true
247
+ })), /*#__PURE__*/React__default.createElement("div", {
248
+ style: {
249
+ background: defaultTheme.backgroundAlt,
250
+ padding: '.5em',
251
+ position: 'sticky',
252
+ top: 0,
253
+ zIndex: 1
254
+ }
255
+ }, "Query Explorer"), /*#__PURE__*/React__default.createElement("div", {
256
+ style: {
257
+ padding: '.5em'
258
+ }
259
+ }, /*#__PURE__*/React__default.createElement(Explorer, {
260
+ label: "Query",
261
+ value: activeQuery,
262
+ defaultExpanded: {
263
+ queryKey: true
264
+ }
265
+ })));
266
+ };
267
+ ActiveQuery.displayName = 'ActiveQuery';
268
+ var ActiveQuery$1 = ActiveQuery;
269
+
270
+ export { ActiveQuery$1 as default };
271
+ //# sourceMappingURL=ActiveQuery.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActiveQuery.esm.js","sources":["../../../src/CachePanel/ActiveQuery.tsx"],"sourcesContent":["import React from 'react'\nimport type { QueryCache, QueryClient } from '@tanstack/react-query'\n\nimport useSubscribeToQueryCache from '../useSubscribeToQueryCache'\nimport { Button, Code, Select, ActiveQueryPanel } from '../styledComponents'\n\nimport {\n getQueryStatusLabel,\n getQueryStatusColor,\n displayValue,\n} from '../utils'\nimport Explorer from '../Explorer'\nimport type { DevToolsErrorType } from '../types'\nimport { defaultTheme as theme } from '../theme'\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noop() {}\n\n/**\n * Panel for the query currently being inspected\n *\n * It displays query details (key, observers...), query actions,\n * the data explorer and the query explorer\n */\nconst ActiveQuery = ({\n queryCache,\n activeQueryHash,\n queryClient,\n errorTypes,\n}: {\n queryCache: QueryCache\n activeQueryHash: string\n queryClient: QueryClient\n errorTypes: DevToolsErrorType[]\n}) => {\n const activeQuery = useSubscribeToQueryCache(queryCache, () =>\n queryCache.getAll().find((query) => query.queryHash === activeQueryHash),\n )\n\n const activeQueryState = useSubscribeToQueryCache(\n queryCache,\n () =>\n queryCache.getAll().find((query) => query.queryHash === activeQueryHash)\n ?.state,\n )\n\n const isStale =\n useSubscribeToQueryCache(queryCache, () =>\n queryCache\n .getAll()\n .find((query) => query.queryHash === activeQueryHash)\n ?.isStale(),\n ) ?? false\n\n const observerCount =\n useSubscribeToQueryCache(queryCache, () =>\n queryCache\n .getAll()\n .find((query) => query.queryHash === activeQueryHash)\n ?.getObserversCount(),\n ) ?? 0\n\n const handleRefetch = () => {\n const promise = activeQuery?.fetch()\n promise?.catch(noop)\n }\n\n const currentErrorTypeName = React.useMemo(() => {\n if (activeQuery && activeQueryState?.error) {\n const errorType = errorTypes.find(\n (type) =>\n type.initializer(activeQuery).toString() ===\n activeQueryState.error?.toString(),\n )\n return errorType?.name\n }\n return undefined\n }, [activeQuery, activeQueryState?.error, errorTypes])\n\n if (!activeQuery || !activeQueryState) {\n return null\n }\n\n const triggerError = (errorType?: DevToolsErrorType) => {\n const error =\n errorType?.initializer(activeQuery) ??\n new Error('Unknown error from devtools')\n\n const __previousQueryOptions = activeQuery.options\n\n activeQuery.setState({\n status: 'error',\n error,\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n fetchMeta: {\n ...activeQuery.state.fetchMeta,\n __previousQueryOptions,\n } as any,\n })\n }\n\n const restoreQueryAfterLoadingOrError = () => {\n activeQuery.fetch(\n (activeQuery.state.fetchMeta as any).__previousQueryOptions,\n {\n // Make sure this fetch will cancel the previous one\n cancelRefetch: true,\n },\n )\n }\n\n return (\n <ActiveQueryPanel>\n <div\n style={{\n padding: '.5em',\n background: theme.backgroundAlt,\n position: 'sticky',\n top: 0,\n zIndex: 1,\n }}\n >\n Query Details\n </div>\n <div\n style={{\n padding: '.5em',\n }}\n >\n <div\n style={{\n marginBottom: '.5em',\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n }}\n >\n <Code\n style={{\n lineHeight: '1.8em',\n }}\n >\n <pre\n style={{\n margin: 0,\n padding: 0,\n overflow: 'auto',\n }}\n >\n {displayValue(activeQuery.queryKey, true)}\n </pre>\n </Code>\n <span\n style={{\n padding: '0.3em .6em',\n borderRadius: '0.4em',\n fontWeight: 'bold',\n textShadow: '0 2px 10px black',\n background: getQueryStatusColor({\n queryState: activeQueryState,\n isStale: isStale,\n observerCount: observerCount,\n theme,\n }),\n flexShrink: 0,\n }}\n >\n {getQueryStatusLabel(activeQuery)}\n </span>\n </div>\n <div\n style={{\n marginBottom: '.5em',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n Observers: <Code>{observerCount}</Code>\n </div>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n Last Updated:{' '}\n <Code>\n {new Date(activeQueryState.dataUpdatedAt).toLocaleTimeString()}\n </Code>\n </div>\n </div>\n <div\n style={{\n background: theme.backgroundAlt,\n padding: '.5em',\n position: 'sticky',\n top: 0,\n zIndex: 1,\n }}\n >\n Actions\n </div>\n <div\n style={{\n padding: '0.5em',\n display: 'flex',\n flexWrap: 'wrap',\n gap: '0.5em',\n alignItems: 'flex-end',\n }}\n >\n <Button\n type=\"button\"\n onClick={handleRefetch}\n disabled={activeQueryState.fetchStatus === 'fetching'}\n style={{\n background: theme.active,\n }}\n >\n Refetch\n </Button>{' '}\n <Button\n type=\"button\"\n onClick={() => queryClient.invalidateQueries(activeQuery)}\n style={{\n background: theme.warning,\n color: theme.inputTextColor,\n }}\n >\n Invalidate\n </Button>{' '}\n <Button\n type=\"button\"\n onClick={() => queryClient.resetQueries(activeQuery)}\n style={{\n background: theme.gray,\n }}\n >\n Reset\n </Button>{' '}\n <Button\n type=\"button\"\n onClick={() => queryClient.removeQueries(activeQuery)}\n style={{\n background: theme.danger,\n }}\n >\n Remove\n </Button>{' '}\n <Button\n type=\"button\"\n onClick={() => {\n if (activeQuery.state.data === undefined) {\n restoreQueryAfterLoadingOrError()\n } else {\n const __previousQueryOptions = activeQuery.options\n // Trigger a fetch in order to trigger suspense as well.\n activeQuery.fetch({\n ...__previousQueryOptions,\n queryFn: () => {\n return new Promise(() => {\n // Never resolve\n })\n },\n gcTime: -1,\n })\n activeQuery.setState({\n data: undefined,\n status: 'pending',\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n fetchMeta: {\n ...activeQuery.state.fetchMeta,\n __previousQueryOptions,\n } as any,\n })\n }\n }}\n style={{\n background: theme.paused,\n }}\n >\n {activeQuery.state.status === 'pending' ? 'Restore' : 'Trigger'}{' '}\n loading\n </Button>{' '}\n {errorTypes.length === 0 || activeQuery.state.status === 'error' ? (\n <Button\n type=\"button\"\n onClick={() => {\n if (!activeQuery.state.error) {\n triggerError()\n } else {\n queryClient.resetQueries(activeQuery)\n }\n }}\n style={{\n background: theme.danger,\n }}\n >\n {activeQuery.state.status === 'error' ? 'Restore' : 'Trigger'} error\n </Button>\n ) : (\n <label>\n Trigger error:\n <Select\n value={currentErrorTypeName ?? ''}\n style={{ marginInlineStart: '.5em' }}\n onChange={(e) => {\n const errorType = errorTypes.find(\n (t) => t.name === e.target.value,\n )\n\n triggerError(errorType)\n }}\n >\n <option key=\"\" value=\"\" />\n {errorTypes.map((errorType) => (\n <option key={errorType.name} value={errorType.name}>\n {errorType.name}\n </option>\n ))}\n </Select>\n </label>\n )}\n </div>\n <div\n style={{\n background: theme.backgroundAlt,\n padding: '.5em',\n position: 'sticky',\n top: 0,\n zIndex: 1,\n }}\n >\n Data Explorer\n </div>\n <div\n style={{\n padding: '.5em',\n }}\n >\n <Explorer\n label=\"Data\"\n value={activeQueryState.data}\n defaultExpanded={{}}\n copyable\n />\n </div>\n <div\n style={{\n background: theme.backgroundAlt,\n padding: '.5em',\n position: 'sticky',\n top: 0,\n zIndex: 1,\n }}\n >\n Query Explorer\n </div>\n <div\n style={{\n padding: '.5em',\n }}\n >\n <Explorer\n label=\"Query\"\n value={activeQuery}\n defaultExpanded={{\n queryKey: true,\n }}\n />\n </div>\n </ActiveQueryPanel>\n )\n}\n\nActiveQuery.displayName = 'ActiveQuery'\n\nexport default ActiveQuery\n"],"names":["noop","ActiveQuery","queryCache","activeQueryHash","queryClient","errorTypes","activeQuery","useSubscribeToQueryCache","getAll","find","query","queryHash","activeQueryState","state","isStale","observerCount","getObserversCount","handleRefetch","promise","fetch","catch","currentErrorTypeName","React","useMemo","error","errorType","type","initializer","toString","name","undefined","triggerError","Error","__previousQueryOptions","options","setState","status","fetchMeta","restoreQueryAfterLoadingOrError","cancelRefetch","padding","background","theme","backgroundAlt","position","top","zIndex","marginBottom","display","alignItems","justifyContent","lineHeight","margin","overflow","displayValue","queryKey","borderRadius","fontWeight","textShadow","getQueryStatusColor","queryState","flexShrink","getQueryStatusLabel","Date","dataUpdatedAt","toLocaleTimeString","flexWrap","gap","fetchStatus","active","invalidateQueries","warning","color","inputTextColor","resetQueries","gray","removeQueries","danger","data","queryFn","Promise","gcTime","paused","length","marginInlineStart","e","t","target","value","map","displayName"],"mappings":"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"}
@@ -0,0 +1,275 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var useSubscribeToQueryCache = require('../useSubscribeToQueryCache.js');
7
+ var styledComponents = require('../styledComponents.js');
8
+ var utils = require('../utils.js');
9
+ var Explorer = require('../Explorer.js');
10
+ var theme = require('../theme.js');
11
+
12
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
13
+ function noop() {}
14
+
15
+ /**
16
+ * Panel for the query currently being inspected
17
+ *
18
+ * It displays query details (key, observers...), query actions,
19
+ * the data explorer and the query explorer
20
+ */
21
+ const ActiveQuery = ({
22
+ queryCache,
23
+ activeQueryHash,
24
+ queryClient,
25
+ errorTypes
26
+ }) => {
27
+ var _useSubscribeToQueryC, _useSubscribeToQueryC2;
28
+ const activeQuery = useSubscribeToQueryCache.default(queryCache, () => queryCache.getAll().find(query => query.queryHash === activeQueryHash));
29
+ const activeQueryState = useSubscribeToQueryCache.default(queryCache, () => {
30
+ var _queryCache$getAll$fi;
31
+ return (_queryCache$getAll$fi = queryCache.getAll().find(query => query.queryHash === activeQueryHash)) == null ? void 0 : _queryCache$getAll$fi.state;
32
+ });
33
+ const isStale = (_useSubscribeToQueryC = useSubscribeToQueryCache.default(queryCache, () => {
34
+ var _queryCache$getAll$fi2;
35
+ return (_queryCache$getAll$fi2 = queryCache.getAll().find(query => query.queryHash === activeQueryHash)) == null ? void 0 : _queryCache$getAll$fi2.isStale();
36
+ })) != null ? _useSubscribeToQueryC : false;
37
+ const observerCount = (_useSubscribeToQueryC2 = useSubscribeToQueryCache.default(queryCache, () => {
38
+ var _queryCache$getAll$fi3;
39
+ return (_queryCache$getAll$fi3 = queryCache.getAll().find(query => query.queryHash === activeQueryHash)) == null ? void 0 : _queryCache$getAll$fi3.getObserversCount();
40
+ })) != null ? _useSubscribeToQueryC2 : 0;
41
+ const handleRefetch = () => {
42
+ const promise = activeQuery == null ? void 0 : activeQuery.fetch();
43
+ promise == null ? void 0 : promise.catch(noop);
44
+ };
45
+ const currentErrorTypeName = React.useMemo(() => {
46
+ if (activeQuery && activeQueryState != null && activeQueryState.error) {
47
+ const errorType = errorTypes.find(type => {
48
+ var _activeQueryState$err;
49
+ return type.initializer(activeQuery).toString() === ((_activeQueryState$err = activeQueryState.error) == null ? void 0 : _activeQueryState$err.toString());
50
+ });
51
+ return errorType == null ? void 0 : errorType.name;
52
+ }
53
+ return undefined;
54
+ }, [activeQuery, activeQueryState == null ? void 0 : activeQueryState.error, errorTypes]);
55
+ if (!activeQuery || !activeQueryState) {
56
+ return null;
57
+ }
58
+ const triggerError = errorType => {
59
+ var _errorType$initialize;
60
+ const error = (_errorType$initialize = errorType == null ? void 0 : errorType.initializer(activeQuery)) != null ? _errorType$initialize : new Error('Unknown error from devtools');
61
+ const __previousQueryOptions = activeQuery.options;
62
+ activeQuery.setState({
63
+ status: 'error',
64
+ error,
65
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
66
+ fetchMeta: {
67
+ ...activeQuery.state.fetchMeta,
68
+ __previousQueryOptions
69
+ }
70
+ });
71
+ };
72
+ const restoreQueryAfterLoadingOrError = () => {
73
+ activeQuery.fetch(activeQuery.state.fetchMeta.__previousQueryOptions, {
74
+ // Make sure this fetch will cancel the previous one
75
+ cancelRefetch: true
76
+ });
77
+ };
78
+ return /*#__PURE__*/React.createElement(styledComponents.ActiveQueryPanel, null, /*#__PURE__*/React.createElement("div", {
79
+ style: {
80
+ padding: '.5em',
81
+ background: theme.defaultTheme.backgroundAlt,
82
+ position: 'sticky',
83
+ top: 0,
84
+ zIndex: 1
85
+ }
86
+ }, "Query Details"), /*#__PURE__*/React.createElement("div", {
87
+ style: {
88
+ padding: '.5em'
89
+ }
90
+ }, /*#__PURE__*/React.createElement("div", {
91
+ style: {
92
+ marginBottom: '.5em',
93
+ display: 'flex',
94
+ alignItems: 'flex-start',
95
+ justifyContent: 'space-between'
96
+ }
97
+ }, /*#__PURE__*/React.createElement(styledComponents.Code, {
98
+ style: {
99
+ lineHeight: '1.8em'
100
+ }
101
+ }, /*#__PURE__*/React.createElement("pre", {
102
+ style: {
103
+ margin: 0,
104
+ padding: 0,
105
+ overflow: 'auto'
106
+ }
107
+ }, utils.displayValue(activeQuery.queryKey, true))), /*#__PURE__*/React.createElement("span", {
108
+ style: {
109
+ padding: '0.3em .6em',
110
+ borderRadius: '0.4em',
111
+ fontWeight: 'bold',
112
+ textShadow: '0 2px 10px black',
113
+ background: utils.getQueryStatusColor({
114
+ queryState: activeQueryState,
115
+ isStale: isStale,
116
+ observerCount: observerCount,
117
+ theme: theme.defaultTheme
118
+ }),
119
+ flexShrink: 0
120
+ }
121
+ }, utils.getQueryStatusLabel(activeQuery))), /*#__PURE__*/React.createElement("div", {
122
+ style: {
123
+ marginBottom: '.5em',
124
+ display: 'flex',
125
+ alignItems: 'center',
126
+ justifyContent: 'space-between'
127
+ }
128
+ }, "Observers: ", /*#__PURE__*/React.createElement(styledComponents.Code, null, observerCount)), /*#__PURE__*/React.createElement("div", {
129
+ style: {
130
+ display: 'flex',
131
+ alignItems: 'center',
132
+ justifyContent: 'space-between'
133
+ }
134
+ }, "Last Updated:", ' ', /*#__PURE__*/React.createElement(styledComponents.Code, null, new Date(activeQueryState.dataUpdatedAt).toLocaleTimeString()))), /*#__PURE__*/React.createElement("div", {
135
+ style: {
136
+ background: theme.defaultTheme.backgroundAlt,
137
+ padding: '.5em',
138
+ position: 'sticky',
139
+ top: 0,
140
+ zIndex: 1
141
+ }
142
+ }, "Actions"), /*#__PURE__*/React.createElement("div", {
143
+ style: {
144
+ padding: '0.5em',
145
+ display: 'flex',
146
+ flexWrap: 'wrap',
147
+ gap: '0.5em',
148
+ alignItems: 'flex-end'
149
+ }
150
+ }, /*#__PURE__*/React.createElement(styledComponents.Button, {
151
+ type: "button",
152
+ onClick: handleRefetch,
153
+ disabled: activeQueryState.fetchStatus === 'fetching',
154
+ style: {
155
+ background: theme.defaultTheme.active
156
+ }
157
+ }, "Refetch"), ' ', /*#__PURE__*/React.createElement(styledComponents.Button, {
158
+ type: "button",
159
+ onClick: () => queryClient.invalidateQueries(activeQuery),
160
+ style: {
161
+ background: theme.defaultTheme.warning,
162
+ color: theme.defaultTheme.inputTextColor
163
+ }
164
+ }, "Invalidate"), ' ', /*#__PURE__*/React.createElement(styledComponents.Button, {
165
+ type: "button",
166
+ onClick: () => queryClient.resetQueries(activeQuery),
167
+ style: {
168
+ background: theme.defaultTheme.gray
169
+ }
170
+ }, "Reset"), ' ', /*#__PURE__*/React.createElement(styledComponents.Button, {
171
+ type: "button",
172
+ onClick: () => queryClient.removeQueries(activeQuery),
173
+ style: {
174
+ background: theme.defaultTheme.danger
175
+ }
176
+ }, "Remove"), ' ', /*#__PURE__*/React.createElement(styledComponents.Button, {
177
+ type: "button",
178
+ onClick: () => {
179
+ if (activeQuery.state.data === undefined) {
180
+ restoreQueryAfterLoadingOrError();
181
+ } else {
182
+ const __previousQueryOptions = activeQuery.options;
183
+ // Trigger a fetch in order to trigger suspense as well.
184
+ activeQuery.fetch({
185
+ ...__previousQueryOptions,
186
+ queryFn: () => {
187
+ return new Promise(() => {
188
+ // Never resolve
189
+ });
190
+ },
191
+ gcTime: -1
192
+ });
193
+ activeQuery.setState({
194
+ data: undefined,
195
+ status: 'pending',
196
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
197
+ fetchMeta: {
198
+ ...activeQuery.state.fetchMeta,
199
+ __previousQueryOptions
200
+ }
201
+ });
202
+ }
203
+ },
204
+ style: {
205
+ background: theme.defaultTheme.paused
206
+ }
207
+ }, activeQuery.state.status === 'pending' ? 'Restore' : 'Trigger', ' ', "loading"), ' ', errorTypes.length === 0 || activeQuery.state.status === 'error' ? /*#__PURE__*/React.createElement(styledComponents.Button, {
208
+ type: "button",
209
+ onClick: () => {
210
+ if (!activeQuery.state.error) {
211
+ triggerError();
212
+ } else {
213
+ queryClient.resetQueries(activeQuery);
214
+ }
215
+ },
216
+ style: {
217
+ background: theme.defaultTheme.danger
218
+ }
219
+ }, activeQuery.state.status === 'error' ? 'Restore' : 'Trigger', " error") : /*#__PURE__*/React.createElement("label", null, "Trigger error:", /*#__PURE__*/React.createElement(styledComponents.Select, {
220
+ value: currentErrorTypeName != null ? currentErrorTypeName : '',
221
+ style: {
222
+ marginInlineStart: '.5em'
223
+ },
224
+ onChange: e => {
225
+ const errorType = errorTypes.find(t => t.name === e.target.value);
226
+ triggerError(errorType);
227
+ }
228
+ }, /*#__PURE__*/React.createElement("option", {
229
+ key: "",
230
+ value: ""
231
+ }), errorTypes.map(errorType => /*#__PURE__*/React.createElement("option", {
232
+ key: errorType.name,
233
+ value: errorType.name
234
+ }, errorType.name))))), /*#__PURE__*/React.createElement("div", {
235
+ style: {
236
+ background: theme.defaultTheme.backgroundAlt,
237
+ padding: '.5em',
238
+ position: 'sticky',
239
+ top: 0,
240
+ zIndex: 1
241
+ }
242
+ }, "Data Explorer"), /*#__PURE__*/React.createElement("div", {
243
+ style: {
244
+ padding: '.5em'
245
+ }
246
+ }, /*#__PURE__*/React.createElement(Explorer.default, {
247
+ label: "Data",
248
+ value: activeQueryState.data,
249
+ defaultExpanded: {},
250
+ copyable: true
251
+ })), /*#__PURE__*/React.createElement("div", {
252
+ style: {
253
+ background: theme.defaultTheme.backgroundAlt,
254
+ padding: '.5em',
255
+ position: 'sticky',
256
+ top: 0,
257
+ zIndex: 1
258
+ }
259
+ }, "Query Explorer"), /*#__PURE__*/React.createElement("div", {
260
+ style: {
261
+ padding: '.5em'
262
+ }
263
+ }, /*#__PURE__*/React.createElement(Explorer.default, {
264
+ label: "Query",
265
+ value: activeQuery,
266
+ defaultExpanded: {
267
+ queryKey: true
268
+ }
269
+ })));
270
+ };
271
+ ActiveQuery.displayName = 'ActiveQuery';
272
+ var ActiveQuery$1 = ActiveQuery;
273
+
274
+ exports.default = ActiveQuery$1;
275
+ //# sourceMappingURL=ActiveQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActiveQuery.js","sources":["../../../src/CachePanel/ActiveQuery.tsx"],"sourcesContent":["import React from 'react'\nimport type { QueryCache, QueryClient } from '@tanstack/react-query'\n\nimport useSubscribeToQueryCache from '../useSubscribeToQueryCache'\nimport { Button, Code, Select, ActiveQueryPanel } from '../styledComponents'\n\nimport {\n getQueryStatusLabel,\n getQueryStatusColor,\n displayValue,\n} from '../utils'\nimport Explorer from '../Explorer'\nimport type { DevToolsErrorType } from '../types'\nimport { defaultTheme as theme } from '../theme'\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noop() {}\n\n/**\n * Panel for the query currently being inspected\n *\n * It displays query details (key, observers...), query actions,\n * the data explorer and the query explorer\n */\nconst ActiveQuery = ({\n queryCache,\n activeQueryHash,\n queryClient,\n errorTypes,\n}: {\n queryCache: QueryCache\n activeQueryHash: string\n queryClient: QueryClient\n errorTypes: DevToolsErrorType[]\n}) => {\n const activeQuery = useSubscribeToQueryCache(queryCache, () =>\n queryCache.getAll().find((query) => query.queryHash === activeQueryHash),\n )\n\n const activeQueryState = useSubscribeToQueryCache(\n queryCache,\n () =>\n queryCache.getAll().find((query) => query.queryHash === activeQueryHash)\n ?.state,\n )\n\n const isStale =\n useSubscribeToQueryCache(queryCache, () =>\n queryCache\n .getAll()\n .find((query) => query.queryHash === activeQueryHash)\n ?.isStale(),\n ) ?? false\n\n const observerCount =\n useSubscribeToQueryCache(queryCache, () =>\n queryCache\n .getAll()\n .find((query) => query.queryHash === activeQueryHash)\n ?.getObserversCount(),\n ) ?? 0\n\n const handleRefetch = () => {\n const promise = activeQuery?.fetch()\n promise?.catch(noop)\n }\n\n const currentErrorTypeName = React.useMemo(() => {\n if (activeQuery && activeQueryState?.error) {\n const errorType = errorTypes.find(\n (type) =>\n type.initializer(activeQuery).toString() ===\n activeQueryState.error?.toString(),\n )\n return errorType?.name\n }\n return undefined\n }, [activeQuery, activeQueryState?.error, errorTypes])\n\n if (!activeQuery || !activeQueryState) {\n return null\n }\n\n const triggerError = (errorType?: DevToolsErrorType) => {\n const error =\n errorType?.initializer(activeQuery) ??\n new Error('Unknown error from devtools')\n\n const __previousQueryOptions = activeQuery.options\n\n activeQuery.setState({\n status: 'error',\n error,\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n fetchMeta: {\n ...activeQuery.state.fetchMeta,\n __previousQueryOptions,\n } as any,\n })\n }\n\n const restoreQueryAfterLoadingOrError = () => {\n activeQuery.fetch(\n (activeQuery.state.fetchMeta as any).__previousQueryOptions,\n {\n // Make sure this fetch will cancel the previous one\n cancelRefetch: true,\n },\n )\n }\n\n return (\n <ActiveQueryPanel>\n <div\n style={{\n padding: '.5em',\n background: theme.backgroundAlt,\n position: 'sticky',\n top: 0,\n zIndex: 1,\n }}\n >\n Query Details\n </div>\n <div\n style={{\n padding: '.5em',\n }}\n >\n <div\n style={{\n marginBottom: '.5em',\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n }}\n >\n <Code\n style={{\n lineHeight: '1.8em',\n }}\n >\n <pre\n style={{\n margin: 0,\n padding: 0,\n overflow: 'auto',\n }}\n >\n {displayValue(activeQuery.queryKey, true)}\n </pre>\n </Code>\n <span\n style={{\n padding: '0.3em .6em',\n borderRadius: '0.4em',\n fontWeight: 'bold',\n textShadow: '0 2px 10px black',\n background: getQueryStatusColor({\n queryState: activeQueryState,\n isStale: isStale,\n observerCount: observerCount,\n theme,\n }),\n flexShrink: 0,\n }}\n >\n {getQueryStatusLabel(activeQuery)}\n </span>\n </div>\n <div\n style={{\n marginBottom: '.5em',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n Observers: <Code>{observerCount}</Code>\n </div>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n Last Updated:{' '}\n <Code>\n {new Date(activeQueryState.dataUpdatedAt).toLocaleTimeString()}\n </Code>\n </div>\n </div>\n <div\n style={{\n background: theme.backgroundAlt,\n padding: '.5em',\n position: 'sticky',\n top: 0,\n zIndex: 1,\n }}\n >\n Actions\n </div>\n <div\n style={{\n padding: '0.5em',\n display: 'flex',\n flexWrap: 'wrap',\n gap: '0.5em',\n alignItems: 'flex-end',\n }}\n >\n <Button\n type=\"button\"\n onClick={handleRefetch}\n disabled={activeQueryState.fetchStatus === 'fetching'}\n style={{\n background: theme.active,\n }}\n >\n Refetch\n </Button>{' '}\n <Button\n type=\"button\"\n onClick={() => queryClient.invalidateQueries(activeQuery)}\n style={{\n background: theme.warning,\n color: theme.inputTextColor,\n }}\n >\n Invalidate\n </Button>{' '}\n <Button\n type=\"button\"\n onClick={() => queryClient.resetQueries(activeQuery)}\n style={{\n background: theme.gray,\n }}\n >\n Reset\n </Button>{' '}\n <Button\n type=\"button\"\n onClick={() => queryClient.removeQueries(activeQuery)}\n style={{\n background: theme.danger,\n }}\n >\n Remove\n </Button>{' '}\n <Button\n type=\"button\"\n onClick={() => {\n if (activeQuery.state.data === undefined) {\n restoreQueryAfterLoadingOrError()\n } else {\n const __previousQueryOptions = activeQuery.options\n // Trigger a fetch in order to trigger suspense as well.\n activeQuery.fetch({\n ...__previousQueryOptions,\n queryFn: () => {\n return new Promise(() => {\n // Never resolve\n })\n },\n gcTime: -1,\n })\n activeQuery.setState({\n data: undefined,\n status: 'pending',\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n fetchMeta: {\n ...activeQuery.state.fetchMeta,\n __previousQueryOptions,\n } as any,\n })\n }\n }}\n style={{\n background: theme.paused,\n }}\n >\n {activeQuery.state.status === 'pending' ? 'Restore' : 'Trigger'}{' '}\n loading\n </Button>{' '}\n {errorTypes.length === 0 || activeQuery.state.status === 'error' ? (\n <Button\n type=\"button\"\n onClick={() => {\n if (!activeQuery.state.error) {\n triggerError()\n } else {\n queryClient.resetQueries(activeQuery)\n }\n }}\n style={{\n background: theme.danger,\n }}\n >\n {activeQuery.state.status === 'error' ? 'Restore' : 'Trigger'} error\n </Button>\n ) : (\n <label>\n Trigger error:\n <Select\n value={currentErrorTypeName ?? ''}\n style={{ marginInlineStart: '.5em' }}\n onChange={(e) => {\n const errorType = errorTypes.find(\n (t) => t.name === e.target.value,\n )\n\n triggerError(errorType)\n }}\n >\n <option key=\"\" value=\"\" />\n {errorTypes.map((errorType) => (\n <option key={errorType.name} value={errorType.name}>\n {errorType.name}\n </option>\n ))}\n </Select>\n </label>\n )}\n </div>\n <div\n style={{\n background: theme.backgroundAlt,\n padding: '.5em',\n position: 'sticky',\n top: 0,\n zIndex: 1,\n }}\n >\n Data Explorer\n </div>\n <div\n style={{\n padding: '.5em',\n }}\n >\n <Explorer\n label=\"Data\"\n value={activeQueryState.data}\n defaultExpanded={{}}\n copyable\n />\n </div>\n <div\n style={{\n background: theme.backgroundAlt,\n padding: '.5em',\n position: 'sticky',\n top: 0,\n zIndex: 1,\n }}\n >\n Query Explorer\n </div>\n <div\n style={{\n padding: '.5em',\n }}\n >\n <Explorer\n label=\"Query\"\n value={activeQuery}\n defaultExpanded={{\n queryKey: true,\n }}\n />\n </div>\n </ActiveQueryPanel>\n )\n}\n\nActiveQuery.displayName = 'ActiveQuery'\n\nexport default ActiveQuery\n"],"names":["noop","ActiveQuery","queryCache","activeQueryHash","queryClient","errorTypes","activeQuery","useSubscribeToQueryCache","getAll","find","query","queryHash","activeQueryState","state","isStale","observerCount","getObserversCount","handleRefetch","promise","fetch","catch","currentErrorTypeName","React","useMemo","error","errorType","type","initializer","toString","name","undefined","triggerError","Error","__previousQueryOptions","options","setState","status","fetchMeta","restoreQueryAfterLoadingOrError","cancelRefetch","ActiveQueryPanel","padding","background","theme","backgroundAlt","position","top","zIndex","marginBottom","display","alignItems","justifyContent","Code","lineHeight","margin","overflow","displayValue","queryKey","borderRadius","fontWeight","textShadow","getQueryStatusColor","queryState","flexShrink","getQueryStatusLabel","Date","dataUpdatedAt","toLocaleTimeString","flexWrap","gap","Button","fetchStatus","active","invalidateQueries","warning","color","inputTextColor","resetQueries","gray","removeQueries","danger","data","queryFn","Promise","gcTime","paused","length","Select","marginInlineStart","e","t","target","value","map","Explorer","displayName"],"mappings":"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"}