@tanstack/react-query-devtools 5.0.0-alpha.4 → 5.0.0-alpha.6
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 +1 -1
- package/build/lib/Explorer.esm.js.map +1 -1
- package/build/lib/Explorer.js +1 -1
- package/build/lib/Explorer.js.map +1 -1
- package/build/lib/devtools.d.ts +20 -2
- package/build/lib/devtools.esm.js +159 -33
- package/build/lib/devtools.esm.js.map +1 -1
- package/build/lib/devtools.js +158 -33
- package/build/lib/devtools.js.map +1 -1
- package/build/lib/devtools.mjs +103 -8
- package/build/lib/devtools.mjs.map +1 -1
- package/build/lib/index.prod.esm.js +163 -35
- package/build/lib/index.prod.esm.js.map +1 -1
- package/build/lib/index.prod.js +162 -35
- package/build/lib/index.prod.js.map +1 -1
- package/build/lib/index.prod.mjs +106 -9
- package/build/lib/index.prod.mjs.map +1 -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/umd/index.development.js +105 -9
- 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 +157 -8
- package/src/devtools.tsx +149 -2
- package/src/styledComponents.ts +3 -1
package/build/lib/devtools.js
CHANGED
|
@@ -40,7 +40,8 @@ function ReactQueryDevtools({
|
|
|
40
40
|
containerElement: Container = 'aside',
|
|
41
41
|
queryClient,
|
|
42
42
|
styleNonce,
|
|
43
|
-
panelPosition: initialPanelPosition = 'bottom'
|
|
43
|
+
panelPosition: initialPanelPosition = 'bottom',
|
|
44
|
+
errorTypes = []
|
|
44
45
|
}) {
|
|
45
46
|
const rootRef = React__namespace.useRef(null);
|
|
46
47
|
const panelRef = React__namespace.useRef(null);
|
|
@@ -93,7 +94,7 @@ function ReactQueryDevtools({
|
|
|
93
94
|
document.addEventListener('mouseup', unsub, false);
|
|
94
95
|
};
|
|
95
96
|
React__namespace.useEffect(() => {
|
|
96
|
-
setIsResolvedOpen(isOpen
|
|
97
|
+
setIsResolvedOpen(isOpen != null ? isOpen : false);
|
|
97
98
|
}, [isOpen, isResolvedOpen, setIsResolvedOpen]);
|
|
98
99
|
|
|
99
100
|
// Toggle panel visibility before/after transition (depending on direction).
|
|
@@ -121,7 +122,8 @@ function ReactQueryDevtools({
|
|
|
121
122
|
return;
|
|
122
123
|
}, [isResolvedOpen]);
|
|
123
124
|
React__namespace.useEffect(() => {
|
|
124
|
-
|
|
125
|
+
var _rootRef$current;
|
|
126
|
+
if (isResolvedOpen && (_rootRef$current = rootRef.current) != null && _rootRef$current.parentElement) {
|
|
125
127
|
const {
|
|
126
128
|
parentElement
|
|
127
129
|
} = rootRef.current;
|
|
@@ -205,7 +207,8 @@ function ReactQueryDevtools({
|
|
|
205
207
|
style: style,
|
|
206
208
|
isOpen: isResolvedOpen,
|
|
207
209
|
setIsOpen: setIsOpen,
|
|
208
|
-
onDragStart: e => handleDragStart(panelRef.current, e)
|
|
210
|
+
onDragStart: e => handleDragStart(panelRef.current, e),
|
|
211
|
+
errorTypes: errorTypes
|
|
209
212
|
}))), !isResolvedOpen ? /*#__PURE__*/React__namespace.createElement("button", _rollupPluginBabelHelpers.extends({
|
|
210
213
|
type: "button"
|
|
211
214
|
}, otherToggleButtonProps, {
|
|
@@ -215,7 +218,7 @@ function ReactQueryDevtools({
|
|
|
215
218
|
"aria-expanded": "false",
|
|
216
219
|
onClick: e => {
|
|
217
220
|
setIsOpen(true);
|
|
218
|
-
onToggleClick
|
|
221
|
+
onToggleClick == null ? void 0 : onToggleClick(e);
|
|
219
222
|
},
|
|
220
223
|
style: {
|
|
221
224
|
background: 'none',
|
|
@@ -268,6 +271,7 @@ const ReactQueryDevtoolsPanel = /*#__PURE__*/React__namespace.forwardRef(functio
|
|
|
268
271
|
showCloseButton,
|
|
269
272
|
position,
|
|
270
273
|
closeButtonProps = {},
|
|
274
|
+
errorTypes = [],
|
|
271
275
|
...panelProps
|
|
272
276
|
} = props;
|
|
273
277
|
const {
|
|
@@ -401,19 +405,20 @@ const ReactQueryDevtoolsPanel = /*#__PURE__*/React__namespace.forwardRef(functio
|
|
|
401
405
|
}, "Bottom")) : null), /*#__PURE__*/React__namespace.createElement("div", {
|
|
402
406
|
style: {
|
|
403
407
|
display: 'flex',
|
|
404
|
-
alignItems: 'center'
|
|
408
|
+
alignItems: 'center',
|
|
409
|
+
flexWrap: 'wrap',
|
|
410
|
+
gap: '0.5em'
|
|
405
411
|
}
|
|
406
412
|
}, /*#__PURE__*/React__namespace.createElement(styledComponents.Input, {
|
|
407
413
|
placeholder: "Filter",
|
|
408
414
|
"aria-label": "Filter by queryhash",
|
|
409
|
-
value: filter
|
|
415
|
+
value: filter != null ? filter : '',
|
|
410
416
|
onChange: e => setFilter(e.target.value),
|
|
411
417
|
onKeyDown: e => {
|
|
412
418
|
if (e.key === 'Escape') setFilter('');
|
|
413
419
|
},
|
|
414
420
|
style: {
|
|
415
421
|
flex: '1',
|
|
416
|
-
marginRight: '.5em',
|
|
417
422
|
width: '100%'
|
|
418
423
|
}
|
|
419
424
|
}), /*#__PURE__*/React__namespace.createElement(styledComponents.Select, {
|
|
@@ -513,7 +518,8 @@ const ReactQueryDevtoolsPanel = /*#__PURE__*/React__namespace.forwardRef(functio
|
|
|
513
518
|
}))), activeQueryHash && isOpen ? /*#__PURE__*/React__namespace.createElement(ActiveQuery, {
|
|
514
519
|
activeQueryHash: activeQueryHash,
|
|
515
520
|
queryCache: queryCache,
|
|
516
|
-
queryClient: client
|
|
521
|
+
queryClient: client,
|
|
522
|
+
errorTypes: errorTypes
|
|
517
523
|
}) : null, showCloseButton ? /*#__PURE__*/React__namespace.createElement(styledComponents.Button, _rollupPluginBabelHelpers.extends({
|
|
518
524
|
type: "button",
|
|
519
525
|
"aria-controls": "ReactQueryDevtoolsPanel",
|
|
@@ -530,26 +536,67 @@ const ReactQueryDevtoolsPanel = /*#__PURE__*/React__namespace.forwardRef(functio
|
|
|
530
536
|
},
|
|
531
537
|
onClick: e => {
|
|
532
538
|
setIsOpen(false);
|
|
533
|
-
onCloseClick
|
|
539
|
+
onCloseClick == null ? void 0 : onCloseClick(e);
|
|
534
540
|
}
|
|
535
541
|
}), "Close") : null));
|
|
536
542
|
});
|
|
537
543
|
const ActiveQuery = ({
|
|
538
544
|
queryCache,
|
|
539
545
|
activeQueryHash,
|
|
540
|
-
queryClient
|
|
546
|
+
queryClient,
|
|
547
|
+
errorTypes
|
|
541
548
|
}) => {
|
|
549
|
+
var _useSubscribeToQueryC, _useSubscribeToQueryC2;
|
|
542
550
|
const activeQuery = useSubscribeToQueryCache(queryCache, () => queryCache.getAll().find(query => query.queryHash === activeQueryHash));
|
|
543
|
-
const activeQueryState = useSubscribeToQueryCache(queryCache, () =>
|
|
544
|
-
|
|
545
|
-
|
|
551
|
+
const activeQueryState = useSubscribeToQueryCache(queryCache, () => {
|
|
552
|
+
var _queryCache$getAll$fi;
|
|
553
|
+
return (_queryCache$getAll$fi = queryCache.getAll().find(query => query.queryHash === activeQueryHash)) == null ? void 0 : _queryCache$getAll$fi.state;
|
|
554
|
+
});
|
|
555
|
+
const isStale = (_useSubscribeToQueryC = useSubscribeToQueryCache(queryCache, () => {
|
|
556
|
+
var _queryCache$getAll$fi2;
|
|
557
|
+
return (_queryCache$getAll$fi2 = queryCache.getAll().find(query => query.queryHash === activeQueryHash)) == null ? void 0 : _queryCache$getAll$fi2.isStale();
|
|
558
|
+
})) != null ? _useSubscribeToQueryC : false;
|
|
559
|
+
const observerCount = (_useSubscribeToQueryC2 = useSubscribeToQueryCache(queryCache, () => {
|
|
560
|
+
var _queryCache$getAll$fi3;
|
|
561
|
+
return (_queryCache$getAll$fi3 = queryCache.getAll().find(query => query.queryHash === activeQueryHash)) == null ? void 0 : _queryCache$getAll$fi3.getObserversCount();
|
|
562
|
+
})) != null ? _useSubscribeToQueryC2 : 0;
|
|
546
563
|
const handleRefetch = () => {
|
|
547
|
-
const promise = activeQuery
|
|
548
|
-
promise
|
|
564
|
+
const promise = activeQuery == null ? void 0 : activeQuery.fetch();
|
|
565
|
+
promise == null ? void 0 : promise.catch(noop);
|
|
549
566
|
};
|
|
567
|
+
const currentErrorTypeName = React.useMemo(() => {
|
|
568
|
+
if (activeQuery && activeQueryState != null && activeQueryState.error) {
|
|
569
|
+
const errorType = errorTypes.find(type => {
|
|
570
|
+
var _activeQueryState$err;
|
|
571
|
+
return type.initializer(activeQuery).toString() === ((_activeQueryState$err = activeQueryState.error) == null ? void 0 : _activeQueryState$err.toString());
|
|
572
|
+
});
|
|
573
|
+
return errorType == null ? void 0 : errorType.name;
|
|
574
|
+
}
|
|
575
|
+
return undefined;
|
|
576
|
+
}, [activeQuery, activeQueryState == null ? void 0 : activeQueryState.error, errorTypes]);
|
|
550
577
|
if (!activeQuery || !activeQueryState) {
|
|
551
578
|
return null;
|
|
552
579
|
}
|
|
580
|
+
const triggerError = errorType => {
|
|
581
|
+
var _errorType$initialize;
|
|
582
|
+
const error = (_errorType$initialize = errorType == null ? void 0 : errorType.initializer(activeQuery)) != null ? _errorType$initialize : new Error('Unknown error from devtools');
|
|
583
|
+
const __previousQueryOptions = activeQuery.options;
|
|
584
|
+
activeQuery.setState({
|
|
585
|
+
status: 'error',
|
|
586
|
+
error,
|
|
587
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
588
|
+
fetchMeta: {
|
|
589
|
+
...activeQuery.state.fetchMeta,
|
|
590
|
+
__previousQueryOptions
|
|
591
|
+
}
|
|
592
|
+
});
|
|
593
|
+
};
|
|
594
|
+
const restoreQueryAfterLoadingOrError = () => {
|
|
595
|
+
activeQuery.fetch(activeQuery.state.fetchMeta.__previousQueryOptions, {
|
|
596
|
+
// Make sure this fetch will cancel the previous one
|
|
597
|
+
cancelRefetch: true
|
|
598
|
+
});
|
|
599
|
+
};
|
|
553
600
|
return /*#__PURE__*/React__namespace.createElement(styledComponents.ActiveQueryPanel, null, /*#__PURE__*/React__namespace.createElement("div", {
|
|
554
601
|
style: {
|
|
555
602
|
padding: '.5em',
|
|
@@ -616,7 +663,11 @@ const ActiveQuery = ({
|
|
|
616
663
|
}
|
|
617
664
|
}, "Actions"), /*#__PURE__*/React__namespace.createElement("div", {
|
|
618
665
|
style: {
|
|
619
|
-
padding: '0.5em'
|
|
666
|
+
padding: '0.5em',
|
|
667
|
+
display: 'flex',
|
|
668
|
+
flexWrap: 'wrap',
|
|
669
|
+
gap: '0.5em',
|
|
670
|
+
alignItems: 'flex-end'
|
|
620
671
|
}
|
|
621
672
|
}, /*#__PURE__*/React__namespace.createElement(styledComponents.Button, {
|
|
622
673
|
type: "button",
|
|
@@ -644,7 +695,65 @@ const ActiveQuery = ({
|
|
|
644
695
|
style: {
|
|
645
696
|
background: theme.defaultTheme.danger
|
|
646
697
|
}
|
|
647
|
-
}, "Remove")
|
|
698
|
+
}, "Remove"), ' ', /*#__PURE__*/React__namespace.createElement(styledComponents.Button, {
|
|
699
|
+
type: "button",
|
|
700
|
+
onClick: () => {
|
|
701
|
+
if (activeQuery.state.data === undefined) {
|
|
702
|
+
restoreQueryAfterLoadingOrError();
|
|
703
|
+
} else {
|
|
704
|
+
const __previousQueryOptions = activeQuery.options;
|
|
705
|
+
// Trigger a fetch in order to trigger suspense as well.
|
|
706
|
+
activeQuery.fetch({
|
|
707
|
+
...__previousQueryOptions,
|
|
708
|
+
queryFn: () => {
|
|
709
|
+
return new Promise(() => {
|
|
710
|
+
// Never resolve
|
|
711
|
+
});
|
|
712
|
+
},
|
|
713
|
+
gcTime: -1
|
|
714
|
+
});
|
|
715
|
+
activeQuery.setState({
|
|
716
|
+
data: undefined,
|
|
717
|
+
status: 'pending',
|
|
718
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
719
|
+
fetchMeta: {
|
|
720
|
+
...activeQuery.state.fetchMeta,
|
|
721
|
+
__previousQueryOptions
|
|
722
|
+
}
|
|
723
|
+
});
|
|
724
|
+
}
|
|
725
|
+
},
|
|
726
|
+
style: {
|
|
727
|
+
background: theme.defaultTheme.paused
|
|
728
|
+
}
|
|
729
|
+
}, activeQuery.state.status === 'pending' ? 'Restore' : 'Trigger', ' ', "loading"), ' ', errorTypes.length === 0 || activeQuery.state.status === 'error' ? /*#__PURE__*/React__namespace.createElement(styledComponents.Button, {
|
|
730
|
+
type: "button",
|
|
731
|
+
onClick: () => {
|
|
732
|
+
if (!activeQuery.state.error) {
|
|
733
|
+
triggerError();
|
|
734
|
+
} else {
|
|
735
|
+
queryClient.resetQueries(activeQuery);
|
|
736
|
+
}
|
|
737
|
+
},
|
|
738
|
+
style: {
|
|
739
|
+
background: theme.defaultTheme.danger
|
|
740
|
+
}
|
|
741
|
+
}, activeQuery.state.status === 'error' ? 'Restore' : 'Trigger', " error") : /*#__PURE__*/React__namespace.createElement("label", null, "Trigger error:", /*#__PURE__*/React__namespace.createElement(styledComponents.Select, {
|
|
742
|
+
value: currentErrorTypeName != null ? currentErrorTypeName : '',
|
|
743
|
+
style: {
|
|
744
|
+
marginInlineStart: '.5em'
|
|
745
|
+
},
|
|
746
|
+
onChange: e => {
|
|
747
|
+
const errorType = errorTypes.find(t => t.name === e.target.value);
|
|
748
|
+
triggerError(errorType);
|
|
749
|
+
}
|
|
750
|
+
}, /*#__PURE__*/React__namespace.createElement("option", {
|
|
751
|
+
key: "",
|
|
752
|
+
value: ""
|
|
753
|
+
}), errorTypes.map(errorType => /*#__PURE__*/React__namespace.createElement("option", {
|
|
754
|
+
key: errorType.name,
|
|
755
|
+
value: errorType.name
|
|
756
|
+
}, errorType.name))))), /*#__PURE__*/React__namespace.createElement("div", {
|
|
648
757
|
style: {
|
|
649
758
|
background: theme.defaultTheme.backgroundAlt,
|
|
650
759
|
padding: '.5em',
|
|
@@ -724,21 +833,37 @@ const QueryRow = /*#__PURE__*/React__namespace.memo(({
|
|
|
724
833
|
activeQueryHash,
|
|
725
834
|
queryCache
|
|
726
835
|
}) => {
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
836
|
+
var _useSubscribeToQueryC3, _useSubscribeToQueryC4, _useSubscribeToQueryC5, _useSubscribeToQueryC6;
|
|
837
|
+
const queryHash = (_useSubscribeToQueryC3 = useSubscribeToQueryCache(queryCache, () => {
|
|
838
|
+
var _queryCache$find;
|
|
839
|
+
return (_queryCache$find = queryCache.find({
|
|
840
|
+
queryKey
|
|
841
|
+
})) == null ? void 0 : _queryCache$find.queryHash;
|
|
842
|
+
})) != null ? _useSubscribeToQueryC3 : '';
|
|
843
|
+
const queryState = useSubscribeToQueryCache(queryCache, () => {
|
|
844
|
+
var _queryCache$find2;
|
|
845
|
+
return (_queryCache$find2 = queryCache.find({
|
|
846
|
+
queryKey
|
|
847
|
+
})) == null ? void 0 : _queryCache$find2.state;
|
|
848
|
+
});
|
|
849
|
+
const isStale = (_useSubscribeToQueryC4 = useSubscribeToQueryCache(queryCache, () => {
|
|
850
|
+
var _queryCache$find3;
|
|
851
|
+
return (_queryCache$find3 = queryCache.find({
|
|
852
|
+
queryKey
|
|
853
|
+
})) == null ? void 0 : _queryCache$find3.isStale();
|
|
854
|
+
})) != null ? _useSubscribeToQueryC4 : false;
|
|
855
|
+
const isDisabled = (_useSubscribeToQueryC5 = useSubscribeToQueryCache(queryCache, () => {
|
|
856
|
+
var _queryCache$find4;
|
|
857
|
+
return (_queryCache$find4 = queryCache.find({
|
|
858
|
+
queryKey
|
|
859
|
+
})) == null ? void 0 : _queryCache$find4.isDisabled();
|
|
860
|
+
})) != null ? _useSubscribeToQueryC5 : false;
|
|
861
|
+
const observerCount = (_useSubscribeToQueryC6 = useSubscribeToQueryCache(queryCache, () => {
|
|
862
|
+
var _queryCache$find5;
|
|
863
|
+
return (_queryCache$find5 = queryCache.find({
|
|
864
|
+
queryKey
|
|
865
|
+
})) == null ? void 0 : _queryCache$find5.getObserversCount();
|
|
866
|
+
})) != null ? _useSubscribeToQueryC6 : 0;
|
|
742
867
|
if (!queryState) {
|
|
743
868
|
return null;
|
|
744
869
|
}
|