@tanstack/react-query-devtools 5.0.0-alpha.1 → 5.0.0-alpha.11
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.
- package/build/lib/Explorer.esm.js +2 -1
- package/build/lib/Explorer.esm.js.map +1 -1
- package/build/lib/Explorer.js +2 -1
- package/build/lib/Explorer.js.map +1 -1
- package/build/lib/Explorer.mjs +1 -0
- package/build/lib/Explorer.mjs.map +1 -1
- package/build/lib/devtools.d.ts +20 -2
- package/build/lib/devtools.esm.js +162 -34
- package/build/lib/devtools.esm.js.map +1 -1
- package/build/lib/devtools.js +161 -34
- package/build/lib/devtools.js.map +1 -1
- package/build/lib/devtools.mjs +106 -9
- package/build/lib/devtools.mjs.map +1 -1
- package/build/lib/index.esm.js +1 -0
- package/build/lib/index.esm.js.map +1 -1
- package/build/lib/index.js +1 -0
- package/build/lib/index.js.map +1 -1
- package/build/lib/index.mjs +1 -0
- package/build/lib/index.mjs.map +1 -1
- package/build/lib/index.prod.esm.js +165 -36
- package/build/lib/index.prod.esm.js.map +1 -1
- package/build/lib/index.prod.js +164 -36
- package/build/lib/index.prod.js.map +1 -1
- package/build/lib/index.prod.mjs +108 -10
- package/build/lib/index.prod.mjs.map +1 -1
- package/build/lib/styledComponents.d.ts +0 -1
- package/build/lib/styledComponents.esm.js +3 -1
- package/build/lib/styledComponents.esm.js.map +1 -1
- package/build/lib/styledComponents.js +3 -1
- package/build/lib/styledComponents.js.map +1 -1
- package/build/lib/styledComponents.mjs +3 -1
- package/build/lib/styledComponents.mjs.map +1 -1
- package/build/lib/theme.esm.js +1 -0
- package/build/lib/theme.esm.js.map +1 -1
- package/build/lib/theme.js +1 -0
- package/build/lib/theme.js.map +1 -1
- package/build/lib/theme.mjs +1 -0
- package/build/lib/theme.mjs.map +1 -1
- package/build/umd/index.development.js +107 -10
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +4 -4
- package/src/__tests__/Explorer.test.tsx +3 -2
- package/src/__tests__/devtools.test.tsx +183 -9
- package/src/devtools.tsx +151 -3
- package/src/index.ts +2 -0
- package/src/styledComponents.ts +3 -1
package/build/lib/index.prod.js
CHANGED
|
@@ -351,7 +351,9 @@ const Button = styled('button', (props, theme) => ({
|
|
|
351
351
|
cursor: 'pointer'
|
|
352
352
|
}));
|
|
353
353
|
const QueryKeys = styled('span', {
|
|
354
|
-
display: '
|
|
354
|
+
display: 'flex',
|
|
355
|
+
flexWrap: 'wrap',
|
|
356
|
+
gap: '0.5em',
|
|
355
357
|
fontSize: '0.9em'
|
|
356
358
|
});
|
|
357
359
|
const QueryKey = styled('span', {
|
|
@@ -614,7 +616,7 @@ function Explorer({
|
|
|
614
616
|
const makeProperty = sub => {
|
|
615
617
|
const subDefaultExpanded = defaultExpanded === true ? {
|
|
616
618
|
[sub.label]: true
|
|
617
|
-
} : defaultExpanded
|
|
619
|
+
} : defaultExpanded == null ? void 0 : defaultExpanded[sub.label];
|
|
618
620
|
return {
|
|
619
621
|
...sub,
|
|
620
622
|
defaultExpanded: subDefaultExpanded
|
|
@@ -695,7 +697,8 @@ function ReactQueryDevtools$1({
|
|
|
695
697
|
containerElement: Container = 'aside',
|
|
696
698
|
queryClient,
|
|
697
699
|
styleNonce,
|
|
698
|
-
panelPosition: initialPanelPosition = 'bottom'
|
|
700
|
+
panelPosition: initialPanelPosition = 'bottom',
|
|
701
|
+
errorTypes = []
|
|
699
702
|
}) {
|
|
700
703
|
const rootRef = React__namespace.useRef(null);
|
|
701
704
|
const panelRef = React__namespace.useRef(null);
|
|
@@ -748,7 +751,7 @@ function ReactQueryDevtools$1({
|
|
|
748
751
|
document.addEventListener('mouseup', unsub, false);
|
|
749
752
|
};
|
|
750
753
|
React__namespace.useEffect(() => {
|
|
751
|
-
setIsResolvedOpen(isOpen
|
|
754
|
+
setIsResolvedOpen(isOpen != null ? isOpen : false);
|
|
752
755
|
}, [isOpen, isResolvedOpen, setIsResolvedOpen]);
|
|
753
756
|
|
|
754
757
|
// Toggle panel visibility before/after transition (depending on direction).
|
|
@@ -776,7 +779,8 @@ function ReactQueryDevtools$1({
|
|
|
776
779
|
return;
|
|
777
780
|
}, [isResolvedOpen]);
|
|
778
781
|
React__namespace.useEffect(() => {
|
|
779
|
-
|
|
782
|
+
var _rootRef$current;
|
|
783
|
+
if (isResolvedOpen && (_rootRef$current = rootRef.current) != null && _rootRef$current.parentElement) {
|
|
780
784
|
const {
|
|
781
785
|
parentElement
|
|
782
786
|
} = rootRef.current;
|
|
@@ -860,7 +864,8 @@ function ReactQueryDevtools$1({
|
|
|
860
864
|
style: style,
|
|
861
865
|
isOpen: isResolvedOpen,
|
|
862
866
|
setIsOpen: setIsOpen,
|
|
863
|
-
onDragStart: e => handleDragStart(panelRef.current, e)
|
|
867
|
+
onDragStart: e => handleDragStart(panelRef.current, e),
|
|
868
|
+
errorTypes: errorTypes
|
|
864
869
|
}))), !isResolvedOpen ? /*#__PURE__*/React__namespace.createElement("button", _extends({
|
|
865
870
|
type: "button"
|
|
866
871
|
}, otherToggleButtonProps, {
|
|
@@ -870,7 +875,7 @@ function ReactQueryDevtools$1({
|
|
|
870
875
|
"aria-expanded": "false",
|
|
871
876
|
onClick: e => {
|
|
872
877
|
setIsOpen(true);
|
|
873
|
-
onToggleClick
|
|
878
|
+
onToggleClick == null ? void 0 : onToggleClick(e);
|
|
874
879
|
},
|
|
875
880
|
style: {
|
|
876
881
|
background: 'none',
|
|
@@ -923,6 +928,7 @@ const ReactQueryDevtoolsPanel$1 = /*#__PURE__*/React__namespace.forwardRef(funct
|
|
|
923
928
|
showCloseButton,
|
|
924
929
|
position,
|
|
925
930
|
closeButtonProps = {},
|
|
931
|
+
errorTypes = [],
|
|
926
932
|
...panelProps
|
|
927
933
|
} = props;
|
|
928
934
|
const {
|
|
@@ -1056,19 +1062,20 @@ const ReactQueryDevtoolsPanel$1 = /*#__PURE__*/React__namespace.forwardRef(funct
|
|
|
1056
1062
|
}, "Bottom")) : null), /*#__PURE__*/React__namespace.createElement("div", {
|
|
1057
1063
|
style: {
|
|
1058
1064
|
display: 'flex',
|
|
1059
|
-
alignItems: 'center'
|
|
1065
|
+
alignItems: 'center',
|
|
1066
|
+
flexWrap: 'wrap',
|
|
1067
|
+
gap: '0.5em'
|
|
1060
1068
|
}
|
|
1061
1069
|
}, /*#__PURE__*/React__namespace.createElement(Input, {
|
|
1062
1070
|
placeholder: "Filter",
|
|
1063
1071
|
"aria-label": "Filter by queryhash",
|
|
1064
|
-
value: filter
|
|
1072
|
+
value: filter != null ? filter : '',
|
|
1065
1073
|
onChange: e => setFilter(e.target.value),
|
|
1066
1074
|
onKeyDown: e => {
|
|
1067
1075
|
if (e.key === 'Escape') setFilter('');
|
|
1068
1076
|
},
|
|
1069
1077
|
style: {
|
|
1070
1078
|
flex: '1',
|
|
1071
|
-
marginRight: '.5em',
|
|
1072
1079
|
width: '100%'
|
|
1073
1080
|
}
|
|
1074
1081
|
}), /*#__PURE__*/React__namespace.createElement(Select, {
|
|
@@ -1100,6 +1107,7 @@ const ReactQueryDevtoolsPanel$1 = /*#__PURE__*/React__namespace.forwardRef(funct
|
|
|
1100
1107
|
} else {
|
|
1101
1108
|
reactQuery.onlineManager.setOnline(false);
|
|
1102
1109
|
setMockOffline(true);
|
|
1110
|
+
window.dispatchEvent(new Event('offline'));
|
|
1103
1111
|
}
|
|
1104
1112
|
},
|
|
1105
1113
|
"aria-label": isMockOffline ? 'Restore offline mock' : 'Mock offline behavior',
|
|
@@ -1168,7 +1176,8 @@ const ReactQueryDevtoolsPanel$1 = /*#__PURE__*/React__namespace.forwardRef(funct
|
|
|
1168
1176
|
}))), activeQueryHash && isOpen ? /*#__PURE__*/React__namespace.createElement(ActiveQuery, {
|
|
1169
1177
|
activeQueryHash: activeQueryHash,
|
|
1170
1178
|
queryCache: queryCache,
|
|
1171
|
-
queryClient: client
|
|
1179
|
+
queryClient: client,
|
|
1180
|
+
errorTypes: errorTypes
|
|
1172
1181
|
}) : null, showCloseButton ? /*#__PURE__*/React__namespace.createElement(Button, _extends({
|
|
1173
1182
|
type: "button",
|
|
1174
1183
|
"aria-controls": "ReactQueryDevtoolsPanel",
|
|
@@ -1185,26 +1194,67 @@ const ReactQueryDevtoolsPanel$1 = /*#__PURE__*/React__namespace.forwardRef(funct
|
|
|
1185
1194
|
},
|
|
1186
1195
|
onClick: e => {
|
|
1187
1196
|
setIsOpen(false);
|
|
1188
|
-
onCloseClick
|
|
1197
|
+
onCloseClick == null ? void 0 : onCloseClick(e);
|
|
1189
1198
|
}
|
|
1190
1199
|
}), "Close") : null));
|
|
1191
1200
|
});
|
|
1192
1201
|
const ActiveQuery = ({
|
|
1193
1202
|
queryCache,
|
|
1194
1203
|
activeQueryHash,
|
|
1195
|
-
queryClient
|
|
1204
|
+
queryClient,
|
|
1205
|
+
errorTypes
|
|
1196
1206
|
}) => {
|
|
1207
|
+
var _useSubscribeToQueryC, _useSubscribeToQueryC2;
|
|
1197
1208
|
const activeQuery = useSubscribeToQueryCache(queryCache, () => queryCache.getAll().find(query => query.queryHash === activeQueryHash));
|
|
1198
|
-
const activeQueryState = useSubscribeToQueryCache(queryCache, () =>
|
|
1199
|
-
|
|
1200
|
-
|
|
1209
|
+
const activeQueryState = useSubscribeToQueryCache(queryCache, () => {
|
|
1210
|
+
var _queryCache$getAll$fi;
|
|
1211
|
+
return (_queryCache$getAll$fi = queryCache.getAll().find(query => query.queryHash === activeQueryHash)) == null ? void 0 : _queryCache$getAll$fi.state;
|
|
1212
|
+
});
|
|
1213
|
+
const isStale = (_useSubscribeToQueryC = useSubscribeToQueryCache(queryCache, () => {
|
|
1214
|
+
var _queryCache$getAll$fi2;
|
|
1215
|
+
return (_queryCache$getAll$fi2 = queryCache.getAll().find(query => query.queryHash === activeQueryHash)) == null ? void 0 : _queryCache$getAll$fi2.isStale();
|
|
1216
|
+
})) != null ? _useSubscribeToQueryC : false;
|
|
1217
|
+
const observerCount = (_useSubscribeToQueryC2 = useSubscribeToQueryCache(queryCache, () => {
|
|
1218
|
+
var _queryCache$getAll$fi3;
|
|
1219
|
+
return (_queryCache$getAll$fi3 = queryCache.getAll().find(query => query.queryHash === activeQueryHash)) == null ? void 0 : _queryCache$getAll$fi3.getObserversCount();
|
|
1220
|
+
})) != null ? _useSubscribeToQueryC2 : 0;
|
|
1201
1221
|
const handleRefetch = () => {
|
|
1202
|
-
const promise = activeQuery
|
|
1203
|
-
promise
|
|
1222
|
+
const promise = activeQuery == null ? void 0 : activeQuery.fetch();
|
|
1223
|
+
promise == null ? void 0 : promise.catch(noop);
|
|
1204
1224
|
};
|
|
1225
|
+
const currentErrorTypeName = React.useMemo(() => {
|
|
1226
|
+
if (activeQuery && activeQueryState != null && activeQueryState.error) {
|
|
1227
|
+
const errorType = errorTypes.find(type => {
|
|
1228
|
+
var _activeQueryState$err;
|
|
1229
|
+
return type.initializer(activeQuery).toString() === ((_activeQueryState$err = activeQueryState.error) == null ? void 0 : _activeQueryState$err.toString());
|
|
1230
|
+
});
|
|
1231
|
+
return errorType == null ? void 0 : errorType.name;
|
|
1232
|
+
}
|
|
1233
|
+
return undefined;
|
|
1234
|
+
}, [activeQuery, activeQueryState == null ? void 0 : activeQueryState.error, errorTypes]);
|
|
1205
1235
|
if (!activeQuery || !activeQueryState) {
|
|
1206
1236
|
return null;
|
|
1207
1237
|
}
|
|
1238
|
+
const triggerError = errorType => {
|
|
1239
|
+
var _errorType$initialize;
|
|
1240
|
+
const error = (_errorType$initialize = errorType == null ? void 0 : errorType.initializer(activeQuery)) != null ? _errorType$initialize : new Error('Unknown error from devtools');
|
|
1241
|
+
const __previousQueryOptions = activeQuery.options;
|
|
1242
|
+
activeQuery.setState({
|
|
1243
|
+
status: 'error',
|
|
1244
|
+
error,
|
|
1245
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
1246
|
+
fetchMeta: {
|
|
1247
|
+
...activeQuery.state.fetchMeta,
|
|
1248
|
+
__previousQueryOptions
|
|
1249
|
+
}
|
|
1250
|
+
});
|
|
1251
|
+
};
|
|
1252
|
+
const restoreQueryAfterLoadingOrError = () => {
|
|
1253
|
+
activeQuery.fetch(activeQuery.state.fetchMeta.__previousQueryOptions, {
|
|
1254
|
+
// Make sure this fetch will cancel the previous one
|
|
1255
|
+
cancelRefetch: true
|
|
1256
|
+
});
|
|
1257
|
+
};
|
|
1208
1258
|
return /*#__PURE__*/React__namespace.createElement(ActiveQueryPanel, null, /*#__PURE__*/React__namespace.createElement("div", {
|
|
1209
1259
|
style: {
|
|
1210
1260
|
padding: '.5em',
|
|
@@ -1221,7 +1271,7 @@ const ActiveQuery = ({
|
|
|
1221
1271
|
style: {
|
|
1222
1272
|
marginBottom: '.5em',
|
|
1223
1273
|
display: 'flex',
|
|
1224
|
-
alignItems: '
|
|
1274
|
+
alignItems: 'flex-start',
|
|
1225
1275
|
justifyContent: 'space-between'
|
|
1226
1276
|
}
|
|
1227
1277
|
}, /*#__PURE__*/React__namespace.createElement(Code, {
|
|
@@ -1271,7 +1321,11 @@ const ActiveQuery = ({
|
|
|
1271
1321
|
}
|
|
1272
1322
|
}, "Actions"), /*#__PURE__*/React__namespace.createElement("div", {
|
|
1273
1323
|
style: {
|
|
1274
|
-
padding: '0.5em'
|
|
1324
|
+
padding: '0.5em',
|
|
1325
|
+
display: 'flex',
|
|
1326
|
+
flexWrap: 'wrap',
|
|
1327
|
+
gap: '0.5em',
|
|
1328
|
+
alignItems: 'flex-end'
|
|
1275
1329
|
}
|
|
1276
1330
|
}, /*#__PURE__*/React__namespace.createElement(Button, {
|
|
1277
1331
|
type: "button",
|
|
@@ -1299,7 +1353,65 @@ const ActiveQuery = ({
|
|
|
1299
1353
|
style: {
|
|
1300
1354
|
background: defaultTheme.danger
|
|
1301
1355
|
}
|
|
1302
|
-
}, "Remove")
|
|
1356
|
+
}, "Remove"), ' ', /*#__PURE__*/React__namespace.createElement(Button, {
|
|
1357
|
+
type: "button",
|
|
1358
|
+
onClick: () => {
|
|
1359
|
+
if (activeQuery.state.data === undefined) {
|
|
1360
|
+
restoreQueryAfterLoadingOrError();
|
|
1361
|
+
} else {
|
|
1362
|
+
const __previousQueryOptions = activeQuery.options;
|
|
1363
|
+
// Trigger a fetch in order to trigger suspense as well.
|
|
1364
|
+
activeQuery.fetch({
|
|
1365
|
+
...__previousQueryOptions,
|
|
1366
|
+
queryFn: () => {
|
|
1367
|
+
return new Promise(() => {
|
|
1368
|
+
// Never resolve
|
|
1369
|
+
});
|
|
1370
|
+
},
|
|
1371
|
+
gcTime: -1
|
|
1372
|
+
});
|
|
1373
|
+
activeQuery.setState({
|
|
1374
|
+
data: undefined,
|
|
1375
|
+
status: 'pending',
|
|
1376
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
1377
|
+
fetchMeta: {
|
|
1378
|
+
...activeQuery.state.fetchMeta,
|
|
1379
|
+
__previousQueryOptions
|
|
1380
|
+
}
|
|
1381
|
+
});
|
|
1382
|
+
}
|
|
1383
|
+
},
|
|
1384
|
+
style: {
|
|
1385
|
+
background: defaultTheme.paused
|
|
1386
|
+
}
|
|
1387
|
+
}, activeQuery.state.status === 'pending' ? 'Restore' : 'Trigger', ' ', "loading"), ' ', errorTypes.length === 0 || activeQuery.state.status === 'error' ? /*#__PURE__*/React__namespace.createElement(Button, {
|
|
1388
|
+
type: "button",
|
|
1389
|
+
onClick: () => {
|
|
1390
|
+
if (!activeQuery.state.error) {
|
|
1391
|
+
triggerError();
|
|
1392
|
+
} else {
|
|
1393
|
+
queryClient.resetQueries(activeQuery);
|
|
1394
|
+
}
|
|
1395
|
+
},
|
|
1396
|
+
style: {
|
|
1397
|
+
background: defaultTheme.danger
|
|
1398
|
+
}
|
|
1399
|
+
}, activeQuery.state.status === 'error' ? 'Restore' : 'Trigger', " error") : /*#__PURE__*/React__namespace.createElement("label", null, "Trigger error:", /*#__PURE__*/React__namespace.createElement(Select, {
|
|
1400
|
+
value: currentErrorTypeName != null ? currentErrorTypeName : '',
|
|
1401
|
+
style: {
|
|
1402
|
+
marginInlineStart: '.5em'
|
|
1403
|
+
},
|
|
1404
|
+
onChange: e => {
|
|
1405
|
+
const errorType = errorTypes.find(t => t.name === e.target.value);
|
|
1406
|
+
triggerError(errorType);
|
|
1407
|
+
}
|
|
1408
|
+
}, /*#__PURE__*/React__namespace.createElement("option", {
|
|
1409
|
+
key: "",
|
|
1410
|
+
value: ""
|
|
1411
|
+
}), errorTypes.map(errorType => /*#__PURE__*/React__namespace.createElement("option", {
|
|
1412
|
+
key: errorType.name,
|
|
1413
|
+
value: errorType.name
|
|
1414
|
+
}, errorType.name))))), /*#__PURE__*/React__namespace.createElement("div", {
|
|
1303
1415
|
style: {
|
|
1304
1416
|
background: defaultTheme.backgroundAlt,
|
|
1305
1417
|
padding: '.5em',
|
|
@@ -1379,21 +1491,37 @@ const QueryRow = /*#__PURE__*/React__namespace.memo(({
|
|
|
1379
1491
|
activeQueryHash,
|
|
1380
1492
|
queryCache
|
|
1381
1493
|
}) => {
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1494
|
+
var _useSubscribeToQueryC3, _useSubscribeToQueryC4, _useSubscribeToQueryC5, _useSubscribeToQueryC6;
|
|
1495
|
+
const queryHash = (_useSubscribeToQueryC3 = useSubscribeToQueryCache(queryCache, () => {
|
|
1496
|
+
var _queryCache$find;
|
|
1497
|
+
return (_queryCache$find = queryCache.find({
|
|
1498
|
+
queryKey
|
|
1499
|
+
})) == null ? void 0 : _queryCache$find.queryHash;
|
|
1500
|
+
})) != null ? _useSubscribeToQueryC3 : '';
|
|
1501
|
+
const queryState = useSubscribeToQueryCache(queryCache, () => {
|
|
1502
|
+
var _queryCache$find2;
|
|
1503
|
+
return (_queryCache$find2 = queryCache.find({
|
|
1504
|
+
queryKey
|
|
1505
|
+
})) == null ? void 0 : _queryCache$find2.state;
|
|
1506
|
+
});
|
|
1507
|
+
const isStale = (_useSubscribeToQueryC4 = useSubscribeToQueryCache(queryCache, () => {
|
|
1508
|
+
var _queryCache$find3;
|
|
1509
|
+
return (_queryCache$find3 = queryCache.find({
|
|
1510
|
+
queryKey
|
|
1511
|
+
})) == null ? void 0 : _queryCache$find3.isStale();
|
|
1512
|
+
})) != null ? _useSubscribeToQueryC4 : false;
|
|
1513
|
+
const isDisabled = (_useSubscribeToQueryC5 = useSubscribeToQueryCache(queryCache, () => {
|
|
1514
|
+
var _queryCache$find4;
|
|
1515
|
+
return (_queryCache$find4 = queryCache.find({
|
|
1516
|
+
queryKey
|
|
1517
|
+
})) == null ? void 0 : _queryCache$find4.isDisabled();
|
|
1518
|
+
})) != null ? _useSubscribeToQueryC5 : false;
|
|
1519
|
+
const observerCount = (_useSubscribeToQueryC6 = useSubscribeToQueryCache(queryCache, () => {
|
|
1520
|
+
var _queryCache$find5;
|
|
1521
|
+
return (_queryCache$find5 = queryCache.find({
|
|
1522
|
+
queryKey
|
|
1523
|
+
})) == null ? void 0 : _queryCache$find5.getObserversCount();
|
|
1524
|
+
})) != null ? _useSubscribeToQueryC6 : 0;
|
|
1397
1525
|
if (!queryState) {
|
|
1398
1526
|
return null;
|
|
1399
1527
|
}
|