react-native-xenon 0.7.0 → 1.0.0
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/README.md +34 -30
- package/lib/commonjs/core/refs.js +33 -0
- package/lib/commonjs/core/refs.js.map +1 -0
- package/lib/commonjs/core/utils.js +40 -9
- package/lib/commonjs/core/utils.js.map +1 -1
- package/lib/commonjs/hooks/useNetworkInterceptor.js +14 -15
- package/lib/commonjs/hooks/useNetworkInterceptor.js.map +1 -1
- package/lib/commonjs/interceptors/FetchInterceptor.js +6 -9
- package/lib/commonjs/interceptors/FetchInterceptor.js.map +1 -1
- package/lib/commonjs/interceptors/WebSocketInterceptor.js +2 -9
- package/lib/commonjs/interceptors/WebSocketInterceptor.js.map +1 -1
- package/lib/commonjs/interceptors/XHRInterceptor.js +9 -6
- package/lib/commonjs/interceptors/XHRInterceptor.js.map +1 -1
- package/lib/commonjs/theme/colors.js +6 -1
- package/lib/commonjs/theme/colors.js.map +1 -1
- package/lib/commonjs/ui/Xenon.js +45 -40
- package/lib/commonjs/ui/Xenon.js.map +1 -1
- package/lib/commonjs/ui/components/bubble/Bubble.js +37 -28
- package/lib/commonjs/ui/components/bubble/Bubble.js.map +1 -1
- package/lib/commonjs/ui/components/common/Divider.js +21 -0
- package/lib/commonjs/ui/components/common/Divider.js.map +1 -0
- package/lib/commonjs/ui/components/common/Icon.js +25 -0
- package/lib/commonjs/ui/components/common/Icon.js.map +1 -0
- package/lib/commonjs/ui/components/common/IndexedStack.js +46 -0
- package/lib/commonjs/ui/components/common/IndexedStack.js.map +1 -0
- package/lib/commonjs/ui/components/common/Touchable.js +22 -0
- package/lib/commonjs/ui/components/common/Touchable.js.map +1 -0
- package/lib/commonjs/ui/components/details/LogMessageDetails.js +24 -11
- package/lib/commonjs/ui/components/details/LogMessageDetails.js.map +1 -1
- package/lib/commonjs/ui/components/details/NetworkRequestDetails.js +64 -39
- package/lib/commonjs/ui/components/details/NetworkRequestDetails.js.map +1 -1
- package/lib/commonjs/ui/components/headers/ConsoleHeader.js +30 -0
- package/lib/commonjs/ui/components/headers/ConsoleHeader.js.map +1 -0
- package/lib/commonjs/ui/components/headers/DebuggerHeader.js +56 -177
- package/lib/commonjs/ui/components/headers/DebuggerHeader.js.map +1 -1
- package/lib/commonjs/ui/components/headers/Header.js +34 -0
- package/lib/commonjs/ui/components/headers/Header.js.map +1 -0
- package/lib/commonjs/ui/components/headers/HeaderComponents.js +111 -0
- package/lib/commonjs/ui/components/headers/HeaderComponents.js.map +1 -0
- package/lib/commonjs/ui/components/headers/NetworkHeader.js +97 -0
- package/lib/commonjs/ui/components/headers/NetworkHeader.js.map +1 -0
- package/lib/commonjs/ui/components/index.js +0 -7
- package/lib/commonjs/ui/components/index.js.map +1 -1
- package/lib/commonjs/ui/components/items/ConsolePanelItem.js +8 -4
- package/lib/commonjs/ui/components/items/ConsolePanelItem.js.map +1 -1
- package/lib/commonjs/ui/components/items/DebuggerHeaderItem.js +5 -9
- package/lib/commonjs/ui/components/items/DebuggerHeaderItem.js.map +1 -1
- package/lib/commonjs/ui/components/items/NetworkPanelItem.js +54 -13
- package/lib/commonjs/ui/components/items/NetworkPanelItem.js.map +1 -1
- package/lib/commonjs/ui/components/items/NetworkRequestDetailsItem.js +19 -18
- package/lib/commonjs/ui/components/items/NetworkRequestDetailsItem.js.map +1 -1
- package/lib/commonjs/ui/components/panels/ConsolePanel.js +19 -10
- package/lib/commonjs/ui/components/panels/ConsolePanel.js.map +1 -1
- package/lib/commonjs/ui/components/panels/NetworkPanel.js +18 -13
- package/lib/commonjs/ui/components/panels/NetworkPanel.js.map +1 -1
- package/lib/commonjs/ui/components/panels/Panel.js +25 -0
- package/lib/commonjs/ui/components/panels/Panel.js.map +1 -0
- package/lib/module/core/refs.js +33 -0
- package/lib/module/core/refs.js.map +1 -0
- package/lib/module/core/utils.js +40 -9
- package/lib/module/core/utils.js.map +1 -1
- package/lib/module/hooks/useNetworkInterceptor.js +14 -15
- package/lib/module/hooks/useNetworkInterceptor.js.map +1 -1
- package/lib/module/interceptors/FetchInterceptor.js +6 -9
- package/lib/module/interceptors/FetchInterceptor.js.map +1 -1
- package/lib/module/interceptors/WebSocketInterceptor.js +2 -9
- package/lib/module/interceptors/WebSocketInterceptor.js.map +1 -1
- package/lib/module/interceptors/XHRInterceptor.js +9 -6
- package/lib/module/interceptors/XHRInterceptor.js.map +1 -1
- package/lib/module/theme/colors.js +6 -1
- package/lib/module/theme/colors.js.map +1 -1
- package/lib/module/ui/Xenon.js +45 -40
- package/lib/module/ui/Xenon.js.map +1 -1
- package/lib/module/ui/components/bubble/Bubble.js +37 -28
- package/lib/module/ui/components/bubble/Bubble.js.map +1 -1
- package/lib/module/ui/components/common/Divider.js +21 -0
- package/lib/module/ui/components/common/Divider.js.map +1 -0
- package/lib/module/ui/components/common/Icon.js +25 -0
- package/lib/module/ui/components/common/Icon.js.map +1 -0
- package/lib/module/ui/components/common/IndexedStack.js +46 -0
- package/lib/module/ui/components/common/IndexedStack.js.map +1 -0
- package/lib/module/ui/components/common/Touchable.js +22 -0
- package/lib/module/ui/components/common/Touchable.js.map +1 -0
- package/lib/module/ui/components/details/LogMessageDetails.js +24 -11
- package/lib/module/ui/components/details/LogMessageDetails.js.map +1 -1
- package/lib/module/ui/components/details/NetworkRequestDetails.js +64 -39
- package/lib/module/ui/components/details/NetworkRequestDetails.js.map +1 -1
- package/lib/module/ui/components/headers/ConsoleHeader.js +30 -0
- package/lib/module/ui/components/headers/ConsoleHeader.js.map +1 -0
- package/lib/module/ui/components/headers/DebuggerHeader.js +56 -177
- package/lib/module/ui/components/headers/DebuggerHeader.js.map +1 -1
- package/lib/module/ui/components/headers/Header.js +34 -0
- package/lib/module/ui/components/headers/Header.js.map +1 -0
- package/lib/module/ui/components/headers/HeaderComponents.js +111 -0
- package/lib/module/ui/components/headers/HeaderComponents.js.map +1 -0
- package/lib/module/ui/components/headers/NetworkHeader.js +97 -0
- package/lib/module/ui/components/headers/NetworkHeader.js.map +1 -0
- package/lib/module/ui/components/index.js +0 -7
- package/lib/module/ui/components/index.js.map +1 -1
- package/lib/module/ui/components/items/ConsolePanelItem.js +8 -4
- package/lib/module/ui/components/items/ConsolePanelItem.js.map +1 -1
- package/lib/module/ui/components/items/DebuggerHeaderItem.js +5 -9
- package/lib/module/ui/components/items/DebuggerHeaderItem.js.map +1 -1
- package/lib/module/ui/components/items/NetworkPanelItem.js +54 -13
- package/lib/module/ui/components/items/NetworkPanelItem.js.map +1 -1
- package/lib/module/ui/components/items/NetworkRequestDetailsItem.js +19 -18
- package/lib/module/ui/components/items/NetworkRequestDetailsItem.js.map +1 -1
- package/lib/module/ui/components/panels/ConsolePanel.js +19 -10
- package/lib/module/ui/components/panels/ConsolePanel.js.map +1 -1
- package/lib/module/ui/components/panels/NetworkPanel.js +18 -13
- package/lib/module/ui/components/panels/NetworkPanel.js.map +1 -1
- package/lib/module/ui/components/panels/Panel.js +25 -0
- package/lib/module/ui/components/panels/Panel.js.map +1 -0
- package/lib/typescript/commonjs/src/core/refs.d.ts +24 -0
- package/lib/typescript/commonjs/src/core/refs.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/utils.d.ts +13 -5
- package/lib/typescript/commonjs/src/core/utils.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/hooks/useNetworkInterceptor.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/interceptors/FetchInterceptor.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/interceptors/WebSocketInterceptor.d.ts +0 -1
- package/lib/typescript/commonjs/src/interceptors/WebSocketInterceptor.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/interceptors/XHRInterceptor.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/theme/colors.d.ts +5 -0
- package/lib/typescript/commonjs/src/theme/colors.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/types/common.d.ts +2 -3
- package/lib/typescript/commonjs/src/types/common.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/types/http.d.ts +5 -6
- package/lib/typescript/commonjs/src/types/http.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/types/websocket.d.ts +2 -2
- package/lib/typescript/commonjs/src/types/websocket.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/ui/Xenon.d.ts +5 -2
- package/lib/typescript/commonjs/src/ui/Xenon.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/ui/components/bubble/Bubble.d.ts +4 -5
- package/lib/typescript/commonjs/src/ui/components/bubble/Bubble.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/ui/components/common/Divider.d.ts +4 -0
- package/lib/typescript/commonjs/src/ui/components/common/Divider.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/common/Icon.d.ts +8 -0
- package/lib/typescript/commonjs/src/ui/components/common/Icon.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/common/IndexedStack.d.ts +13 -0
- package/lib/typescript/commonjs/src/ui/components/common/IndexedStack.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/common/Touchable.d.ts +10 -0
- package/lib/typescript/commonjs/src/ui/components/common/Touchable.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/details/LogMessageDetails.d.ts +5 -6
- package/lib/typescript/commonjs/src/ui/components/details/LogMessageDetails.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/ui/components/details/NetworkRequestDetails.d.ts +5 -6
- package/lib/typescript/commonjs/src/ui/components/details/NetworkRequestDetails.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/ui/components/headers/ConsoleHeader.d.ts +9 -0
- package/lib/typescript/commonjs/src/ui/components/headers/ConsoleHeader.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/headers/DebuggerHeader.d.ts +9 -1
- package/lib/typescript/commonjs/src/ui/components/headers/DebuggerHeader.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/ui/components/headers/Header.d.ts +3 -0
- package/lib/typescript/commonjs/src/ui/components/headers/Header.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/headers/HeaderComponents.d.ts +20 -0
- package/lib/typescript/commonjs/src/ui/components/headers/HeaderComponents.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/headers/NetworkHeader.d.ts +9 -0
- package/lib/typescript/commonjs/src/ui/components/headers/NetworkHeader.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/index.d.ts +0 -1
- package/lib/typescript/commonjs/src/ui/components/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/ui/components/items/ConsolePanelItem.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/ui/components/items/DebuggerHeaderItem.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/ui/components/items/NetworkPanelItem.d.ts +3 -2
- package/lib/typescript/commonjs/src/ui/components/items/NetworkPanelItem.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/ui/components/items/NetworkRequestDetailsItem.d.ts +4 -5
- package/lib/typescript/commonjs/src/ui/components/items/NetworkRequestDetailsItem.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/ui/components/panels/ConsolePanel.d.ts +5 -1
- package/lib/typescript/commonjs/src/ui/components/panels/ConsolePanel.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/ui/components/panels/NetworkPanel.d.ts +5 -1
- package/lib/typescript/commonjs/src/ui/components/panels/NetworkPanel.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/ui/components/panels/Panel.d.ts +2 -0
- package/lib/typescript/commonjs/src/ui/components/panels/Panel.d.ts.map +1 -0
- package/lib/typescript/module/src/core/refs.d.ts +24 -0
- package/lib/typescript/module/src/core/refs.d.ts.map +1 -0
- package/lib/typescript/module/src/core/utils.d.ts +13 -5
- package/lib/typescript/module/src/core/utils.d.ts.map +1 -1
- package/lib/typescript/module/src/hooks/useNetworkInterceptor.d.ts.map +1 -1
- package/lib/typescript/module/src/interceptors/FetchInterceptor.d.ts.map +1 -1
- package/lib/typescript/module/src/interceptors/WebSocketInterceptor.d.ts +0 -1
- package/lib/typescript/module/src/interceptors/WebSocketInterceptor.d.ts.map +1 -1
- package/lib/typescript/module/src/interceptors/XHRInterceptor.d.ts.map +1 -1
- package/lib/typescript/module/src/theme/colors.d.ts +5 -0
- package/lib/typescript/module/src/theme/colors.d.ts.map +1 -1
- package/lib/typescript/module/src/types/common.d.ts +2 -3
- package/lib/typescript/module/src/types/common.d.ts.map +1 -1
- package/lib/typescript/module/src/types/http.d.ts +5 -6
- package/lib/typescript/module/src/types/http.d.ts.map +1 -1
- package/lib/typescript/module/src/types/websocket.d.ts +2 -2
- package/lib/typescript/module/src/types/websocket.d.ts.map +1 -1
- package/lib/typescript/module/src/ui/Xenon.d.ts +5 -2
- package/lib/typescript/module/src/ui/Xenon.d.ts.map +1 -1
- package/lib/typescript/module/src/ui/components/bubble/Bubble.d.ts +4 -5
- package/lib/typescript/module/src/ui/components/bubble/Bubble.d.ts.map +1 -1
- package/lib/typescript/module/src/ui/components/common/Divider.d.ts +4 -0
- package/lib/typescript/module/src/ui/components/common/Divider.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/common/Icon.d.ts +8 -0
- package/lib/typescript/module/src/ui/components/common/Icon.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/common/IndexedStack.d.ts +13 -0
- package/lib/typescript/module/src/ui/components/common/IndexedStack.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/common/Touchable.d.ts +10 -0
- package/lib/typescript/module/src/ui/components/common/Touchable.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/details/LogMessageDetails.d.ts +5 -6
- package/lib/typescript/module/src/ui/components/details/LogMessageDetails.d.ts.map +1 -1
- package/lib/typescript/module/src/ui/components/details/NetworkRequestDetails.d.ts +5 -6
- package/lib/typescript/module/src/ui/components/details/NetworkRequestDetails.d.ts.map +1 -1
- package/lib/typescript/module/src/ui/components/headers/ConsoleHeader.d.ts +9 -0
- package/lib/typescript/module/src/ui/components/headers/ConsoleHeader.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/headers/DebuggerHeader.d.ts +9 -1
- package/lib/typescript/module/src/ui/components/headers/DebuggerHeader.d.ts.map +1 -1
- package/lib/typescript/module/src/ui/components/headers/Header.d.ts +3 -0
- package/lib/typescript/module/src/ui/components/headers/Header.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/headers/HeaderComponents.d.ts +20 -0
- package/lib/typescript/module/src/ui/components/headers/HeaderComponents.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/headers/NetworkHeader.d.ts +9 -0
- package/lib/typescript/module/src/ui/components/headers/NetworkHeader.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/index.d.ts +0 -1
- package/lib/typescript/module/src/ui/components/index.d.ts.map +1 -1
- package/lib/typescript/module/src/ui/components/items/ConsolePanelItem.d.ts.map +1 -1
- package/lib/typescript/module/src/ui/components/items/DebuggerHeaderItem.d.ts.map +1 -1
- package/lib/typescript/module/src/ui/components/items/NetworkPanelItem.d.ts +3 -2
- package/lib/typescript/module/src/ui/components/items/NetworkPanelItem.d.ts.map +1 -1
- package/lib/typescript/module/src/ui/components/items/NetworkRequestDetailsItem.d.ts +4 -5
- package/lib/typescript/module/src/ui/components/items/NetworkRequestDetailsItem.d.ts.map +1 -1
- package/lib/typescript/module/src/ui/components/panels/ConsolePanel.d.ts +5 -1
- package/lib/typescript/module/src/ui/components/panels/ConsolePanel.d.ts.map +1 -1
- package/lib/typescript/module/src/ui/components/panels/NetworkPanel.d.ts +5 -1
- package/lib/typescript/module/src/ui/components/panels/NetworkPanel.d.ts.map +1 -1
- package/lib/typescript/module/src/ui/components/panels/Panel.d.ts +2 -0
- package/lib/typescript/module/src/ui/components/panels/Panel.d.ts.map +1 -0
- package/package.json +4 -4
- package/src/core/refs.ts +29 -0
- package/src/core/utils.ts +45 -14
- package/src/hooks/useNetworkInterceptor.ts +20 -27
- package/src/interceptors/FetchInterceptor.ts +7 -20
- package/src/interceptors/WebSocketInterceptor.ts +2 -11
- package/src/interceptors/XHRInterceptor.ts +13 -8
- package/src/theme/colors.ts +5 -0
- package/src/types/common.ts +2 -3
- package/src/types/http.ts +5 -6
- package/src/types/websocket.ts +2 -1
- package/src/ui/Xenon.tsx +38 -41
- package/src/ui/components/bubble/Bubble.tsx +101 -97
- package/src/ui/components/common/Divider.tsx +13 -0
- package/src/ui/components/common/Icon.tsx +12 -0
- package/src/ui/components/common/IndexedStack.tsx +62 -0
- package/src/ui/components/common/Touchable.tsx +21 -0
- package/src/ui/components/details/LogMessageDetails.tsx +31 -16
- package/src/ui/components/details/NetworkRequestDetails.tsx +143 -124
- package/src/ui/components/headers/ConsoleHeader.tsx +25 -0
- package/src/ui/components/headers/DebuggerHeader.tsx +28 -195
- package/src/ui/components/headers/Header.tsx +22 -0
- package/src/ui/components/headers/HeaderComponents.tsx +100 -0
- package/src/ui/components/headers/NetworkHeader.tsx +85 -0
- package/src/ui/components/index.ts +0 -1
- package/src/ui/components/items/ConsolePanelItem.tsx +11 -6
- package/src/ui/components/items/DebuggerHeaderItem.tsx +6 -10
- package/src/ui/components/items/NetworkPanelItem.tsx +64 -15
- package/src/ui/components/items/NetworkRequestDetailsItem.tsx +26 -21
- package/src/ui/components/panels/ConsolePanel.tsx +23 -10
- package/src/ui/components/panels/NetworkPanel.tsx +21 -14
- package/src/ui/components/panels/Panel.tsx +17 -0
- package/lib/commonjs/ui/components/details/DetailsViewer.js +0 -32
- package/lib/commonjs/ui/components/details/DetailsViewer.js.map +0 -1
- package/lib/module/ui/components/details/DetailsViewer.js +0 -32
- package/lib/module/ui/components/details/DetailsViewer.js.map +0 -1
- package/lib/typescript/commonjs/src/ui/components/details/DetailsViewer.d.ts +0 -2
- package/lib/typescript/commonjs/src/ui/components/details/DetailsViewer.d.ts.map +0 -1
- package/lib/typescript/module/src/ui/components/details/DetailsViewer.d.ts +0 -2
- package/lib/typescript/module/src/ui/components/details/DetailsViewer.d.ts.map +0 -1
- package/src/ui/components/details/DetailsViewer.tsx +0 -19
package/src/core/utils.ts
CHANGED
@@ -1,12 +1,17 @@
|
|
1
1
|
import { URL } from 'react-native-url-polyfill';
|
2
|
-
import { NetworkType, type HttpRequest, type WebSocketRequest } from '../types';
|
2
|
+
import { NetworkType, type HttpRequest, type LogMessage, type WebSocketRequest } from '../types';
|
3
|
+
import colors from '../theme/colors';
|
4
|
+
|
5
|
+
export const getNetworkUtils = (data?: HttpRequest | WebSocketRequest) => {
|
6
|
+
if (!data || !data.url) return {};
|
3
7
|
|
4
|
-
export const getNetworkUtils = (data: HttpRequest | WebSocketRequest) => {
|
5
8
|
const isHttp = data?.type !== NetworkType.WS;
|
6
9
|
const requestUrl = new URL(data.url);
|
7
10
|
|
8
11
|
const overviewShown = !!data.url;
|
9
|
-
const
|
12
|
+
const httpHeadersShown = isHttp && (!!data.requestHeaders?.size || !!data.responseHeaders?.size);
|
13
|
+
const websocketHeadersShown = !isHttp && !!Object.keys(data.options?.headers ?? {}).length;
|
14
|
+
const headersShown = httpHeadersShown || websocketHeadersShown;
|
10
15
|
const requestShown = isHttp && (!!requestUrl.search || !!data.body);
|
11
16
|
const responseShown = isHttp && !!data.response;
|
12
17
|
const messagesShown = !isHttp && !!data.messages;
|
@@ -22,6 +27,33 @@ export const getNetworkUtils = (data: HttpRequest | WebSocketRequest) => {
|
|
22
27
|
};
|
23
28
|
};
|
24
29
|
|
30
|
+
const hexToHexAlpha = (hex: string, opacity: number) =>
|
31
|
+
`${hex}${`${(Math.min(Math.max(opacity, 0), 1) * 255).toString(16)}0`.slice(0, 2)}`;
|
32
|
+
|
33
|
+
export const getConsoleTypeColor = (type: LogMessage['type']) => {
|
34
|
+
let color: string;
|
35
|
+
switch (type) {
|
36
|
+
case 'log':
|
37
|
+
color = colors.white;
|
38
|
+
break;
|
39
|
+
case 'info':
|
40
|
+
color = colors.blue;
|
41
|
+
break;
|
42
|
+
case 'warn':
|
43
|
+
case 'debug':
|
44
|
+
case 'trace':
|
45
|
+
color = colors.yellow;
|
46
|
+
break;
|
47
|
+
case 'error':
|
48
|
+
color = colors.red;
|
49
|
+
break;
|
50
|
+
default:
|
51
|
+
color = colors.white;
|
52
|
+
}
|
53
|
+
|
54
|
+
return hexToHexAlpha(color, 0.25);
|
55
|
+
};
|
56
|
+
|
25
57
|
//#region metrics
|
26
58
|
export const getVerticalSafeMargin = (screenHeight: number) => screenHeight / 8;
|
27
59
|
|
@@ -36,7 +68,7 @@ export const getHttpInterceptorId = () => {
|
|
36
68
|
//#endregion
|
37
69
|
|
38
70
|
//#region formatters
|
39
|
-
|
71
|
+
const limitChar = (value: any, limit = 5000) => {
|
40
72
|
const stringValue = typeof value === 'string' ? value : JSON.stringify(value ?? '');
|
41
73
|
|
42
74
|
return stringValue.length > limit
|
@@ -53,24 +85,23 @@ export const keyValueToString = (
|
|
53
85
|
|
54
86
|
export const formatRequestMethod = (method?: string) => method ?? 'GET';
|
55
87
|
|
56
|
-
export const formatRequestDuration = (
|
57
|
-
|
88
|
+
export const formatRequestDuration = (startTime?: number, endTime?: number) => {
|
89
|
+
if (typeof startTime !== 'number' || typeof endTime !== 'number') return 'pending';
|
90
|
+
return `${endTime - startTime}ms`;
|
91
|
+
};
|
58
92
|
|
59
93
|
export const formatRequestStatusCode = (statusCode?: number) => `${statusCode ?? 'pending'}`;
|
60
94
|
|
61
|
-
export const formatLogMessage = (
|
62
|
-
|
63
|
-
(pre, cur, index) => pre + (!index ? '' : ', ') + limitChar(cur),
|
64
|
-
'',
|
65
|
-
);
|
66
|
-
|
67
|
-
return `${type.toUpperCase()}: ${message}`;
|
95
|
+
export const formatLogMessage = (values: any[]) => {
|
96
|
+
return values.reduce((pre, cur, index) => pre + (!index ? '' : ', ') + limitChar(cur), '');
|
68
97
|
};
|
69
98
|
|
70
99
|
export const beautify = (data: any, beautified: boolean) => {
|
100
|
+
if (!data) return '';
|
101
|
+
|
71
102
|
try {
|
72
103
|
const res = typeof data === 'string' ? JSON.parse(data) : data;
|
73
|
-
return beautified ? JSON.stringify(res, null,
|
104
|
+
return beautified ? JSON.stringify(res, null, 4) : limitChar(res);
|
74
105
|
} catch (error) {
|
75
106
|
return limitChar(data);
|
76
107
|
}
|
@@ -53,15 +53,10 @@ export default function useNetworkInterceptor({ autoEnabled }: NetworkIntercepto
|
|
53
53
|
setNetworkRequests((draft: NetworkRequests<HttpRequest>) => {
|
54
54
|
if (!draft.get(id)) return draft;
|
55
55
|
|
56
|
-
const
|
57
|
-
.requestHeadersString?.length
|
58
|
-
? 'leading'
|
59
|
-
: null;
|
60
|
-
|
61
|
-
const currentHeaderLine = keyValueToString(header, value, requestHeaderNewLine);
|
56
|
+
const currentHeaderLine = keyValueToString(header, value);
|
62
57
|
|
63
58
|
const fetchRequestHeaderLineRegex = RegExp(
|
64
|
-
keyValueToString(NETWORK_REQUEST_HEADER, NetworkType.Fetch
|
59
|
+
keyValueToString(NETWORK_REQUEST_HEADER, NetworkType.Fetch),
|
65
60
|
'gi',
|
66
61
|
);
|
67
62
|
|
@@ -72,20 +67,19 @@ export default function useNetworkInterceptor({ autoEnabled }: NetworkIntercepto
|
|
72
67
|
if (isFetchInXHR) {
|
73
68
|
draft.delete(id);
|
74
69
|
} else {
|
75
|
-
draft.get(id)!.
|
76
|
-
draft.get(id)!.
|
77
|
-
draft.get(id)!.requestHeaders ??= {};
|
78
|
-
draft.get(id)!.requestHeaders![header] = value;
|
70
|
+
draft.get(id)!.requestHeaders ??= new Map();
|
71
|
+
draft.get(id)!.requestHeaders!.set(header, value);
|
79
72
|
}
|
80
73
|
});
|
81
74
|
};
|
82
75
|
|
83
|
-
const sendCallback: HttpHandlers['send'] = (id, data) => {
|
76
|
+
const sendCallback: HttpHandlers['send'] = (id, startTime, data) => {
|
84
77
|
if (!id) return;
|
85
78
|
|
86
79
|
setNetworkRequests((draft: NetworkRequests<HttpRequest>) => {
|
87
80
|
if (!draft.get(id)) return draft;
|
88
81
|
|
82
|
+
draft.get(id)!.startTime = startTime;
|
89
83
|
draft.get(id)!.body = data;
|
90
84
|
});
|
91
85
|
};
|
@@ -111,7 +105,7 @@ export default function useNetworkInterceptor({ autoEnabled }: NetworkIntercepto
|
|
111
105
|
id,
|
112
106
|
status,
|
113
107
|
timeout,
|
114
|
-
|
108
|
+
endTime,
|
115
109
|
response,
|
116
110
|
responseURL,
|
117
111
|
responseType,
|
@@ -123,7 +117,7 @@ export default function useNetworkInterceptor({ autoEnabled }: NetworkIntercepto
|
|
123
117
|
|
124
118
|
draft.get(id)!.status = status;
|
125
119
|
draft.get(id)!.timeout = timeout;
|
126
|
-
draft.get(id)!.
|
120
|
+
draft.get(id)!.endTime = endTime;
|
127
121
|
draft.get(id)!.response = response;
|
128
122
|
if (responseURL) draft.get(id)!.url = responseURL;
|
129
123
|
draft.get(id)!.responseType = responseType;
|
@@ -148,11 +142,18 @@ export default function useNetworkInterceptor({ autoEnabled }: NetworkIntercepto
|
|
148
142
|
}, [setNetworkRequests]);
|
149
143
|
|
150
144
|
const enableWebSocketInterception = useCallback(() => {
|
151
|
-
const connectCallback: WebSocketHandlers['connect'] = (
|
145
|
+
const connectCallback: WebSocketHandlers['connect'] = (
|
146
|
+
startTime,
|
147
|
+
url,
|
148
|
+
protocols,
|
149
|
+
options,
|
150
|
+
socketId,
|
151
|
+
) => {
|
152
152
|
if (typeof socketId !== 'number') return;
|
153
153
|
|
154
154
|
setNetworkRequests((draft: NetworkRequests<WebSocketRequest>) => {
|
155
155
|
draft.set(`${socketId}`, {
|
156
|
+
startTime,
|
156
157
|
url,
|
157
158
|
type: NetworkType.WS,
|
158
159
|
protocols,
|
@@ -168,11 +169,7 @@ export default function useNetworkInterceptor({ autoEnabled }: NetworkIntercepto
|
|
168
169
|
if (!draft.get(`${socketId}`)) return draft;
|
169
170
|
|
170
171
|
draft.get(`${socketId}`)!.messages ??= '';
|
171
|
-
draft.get(`${socketId}`)!.messages += keyValueToString(
|
172
|
-
'SENT',
|
173
|
-
data,
|
174
|
-
draft.get(`${socketId}`)!.messages?.length ? 'leading' : null,
|
175
|
-
);
|
172
|
+
draft.get(`${socketId}`)!.messages += keyValueToString('SENT', data);
|
176
173
|
});
|
177
174
|
};
|
178
175
|
|
@@ -187,13 +184,13 @@ export default function useNetworkInterceptor({ autoEnabled }: NetworkIntercepto
|
|
187
184
|
});
|
188
185
|
};
|
189
186
|
|
190
|
-
const onOpenCallback: WebSocketHandlers['onOpen'] = (socketId,
|
187
|
+
const onOpenCallback: WebSocketHandlers['onOpen'] = (socketId, endTime) => {
|
191
188
|
if (typeof socketId !== 'number') return;
|
192
189
|
|
193
190
|
setNetworkRequests((draft: NetworkRequests<WebSocketRequest>) => {
|
194
191
|
if (!draft.get(`${socketId}`)) return draft;
|
195
192
|
|
196
|
-
draft.get(`${socketId}`)!.
|
193
|
+
draft.get(`${socketId}`)!.endTime = endTime;
|
197
194
|
});
|
198
195
|
};
|
199
196
|
|
@@ -204,11 +201,7 @@ export default function useNetworkInterceptor({ autoEnabled }: NetworkIntercepto
|
|
204
201
|
if (!draft.get(`${socketId}`)) return draft;
|
205
202
|
|
206
203
|
draft.get(`${socketId}`)!.messages ??= '';
|
207
|
-
draft.get(`${socketId}`)!.messages += keyValueToString(
|
208
|
-
'RECEIVED',
|
209
|
-
message,
|
210
|
-
draft.get(`${socketId}`)!.messages?.length ? 'leading' : null,
|
211
|
-
);
|
204
|
+
draft.get(`${socketId}`)!.messages += keyValueToString('RECEIVED', message);
|
212
205
|
});
|
213
206
|
};
|
214
207
|
|
@@ -1,11 +1,5 @@
|
|
1
1
|
import { NETWORK_REQUEST_HEADER } from '../core/constants';
|
2
|
-
import {
|
3
|
-
formatRequestMethod,
|
4
|
-
frozen,
|
5
|
-
getHttpInterceptorId,
|
6
|
-
keyValueToString,
|
7
|
-
singleton,
|
8
|
-
} from '../core/utils';
|
2
|
+
import { formatRequestMethod, frozen, getHttpInterceptorId, singleton } from '../core/utils';
|
9
3
|
import { NetworkType } from '../types';
|
10
4
|
import HttpInterceptor from './HttpInterceptor';
|
11
5
|
|
@@ -77,13 +71,11 @@ export default class FetchInterceptor extends HttpInterceptor {
|
|
77
71
|
//#endregion
|
78
72
|
|
79
73
|
//#region send
|
80
|
-
|
81
|
-
sendCallback?.(interceptionId, init?.body ?? null);
|
74
|
+
sendCallback?.(interceptionId, Date.now(), init?.body ?? null);
|
82
75
|
//#endregion
|
83
76
|
|
84
77
|
const response = await originalFetch.call(this, input, requestInit);
|
85
78
|
|
86
|
-
const endTime = Date.now();
|
87
79
|
const clonedResponse = response.clone();
|
88
80
|
const clonedResponseHeaders = clonedResponse.headers;
|
89
81
|
|
@@ -94,28 +86,23 @@ export default class FetchInterceptor extends HttpInterceptor {
|
|
94
86
|
const responseContentType = contentTypeString ? contentTypeString.split(';')[0] : undefined;
|
95
87
|
const responseSize = contentLengthString ? parseInt(contentLengthString, 10) : undefined;
|
96
88
|
|
97
|
-
let responseHeaders: string =
|
89
|
+
let responseHeaders: Map<string, string> = new Map();
|
98
90
|
|
99
|
-
|
100
|
-
responseHeaders
|
101
|
-
|
102
|
-
headerValue,
|
103
|
-
responseHeaders.length ? 'leading' : null,
|
104
|
-
);
|
105
|
-
}
|
91
|
+
clonedResponseHeaders.forEach((headerValue: string, headerKey: string) => {
|
92
|
+
responseHeaders.set(headerKey, headerValue);
|
93
|
+
});
|
106
94
|
|
107
95
|
headerReceivedCallback?.(interceptionId, responseContentType, responseSize, responseHeaders);
|
108
96
|
//#endregion
|
109
97
|
|
110
98
|
//#region response
|
111
99
|
const responseBody: string | null = await clonedResponse.text().catch(() => null);
|
112
|
-
const duration = endTime - startTime;
|
113
100
|
|
114
101
|
responseCallback?.(
|
115
102
|
interceptionId,
|
116
103
|
clonedResponse.status,
|
117
104
|
0,
|
118
|
-
|
105
|
+
Date.now(),
|
119
106
|
responseBody,
|
120
107
|
clonedResponse.url,
|
121
108
|
clonedResponse.type,
|
@@ -23,7 +23,6 @@ export default class WebSocketInterceptor extends NetworkInterceptor<WebSocketHa
|
|
23
23
|
|
24
24
|
private eventEmitter: NativeEventEmitter | null = null;
|
25
25
|
private subscriptions: EmitterSubscription[] = [];
|
26
|
-
private readonly startTimes: Map<number, number> = new Map();
|
27
26
|
|
28
27
|
private arrayBufferToString(data?: string) {
|
29
28
|
try {
|
@@ -44,12 +43,7 @@ export default class WebSocketInterceptor extends NetworkInterceptor<WebSocketHa
|
|
44
43
|
|
45
44
|
this.subscriptions = [
|
46
45
|
this.eventEmitter.addListener('websocketOpen', ev => {
|
47
|
-
|
48
|
-
const endTime = Date.now();
|
49
|
-
const duration = endTime - (startTime ?? 0);
|
50
|
-
this.startTimes.delete(ev.id);
|
51
|
-
|
52
|
-
this.handlers.onOpen?.(ev.id, duration);
|
46
|
+
this.handlers.onOpen?.(ev.id, Date.now());
|
53
47
|
}),
|
54
48
|
this.eventEmitter.addListener('websocketMessage', ev => {
|
55
49
|
this.handlers.onMessage?.(
|
@@ -82,11 +76,8 @@ export default class WebSocketInterceptor extends NetworkInterceptor<WebSocketHa
|
|
82
76
|
|
83
77
|
const { connectCallback, sendCallback, closeCallback } = this.getCallbacks();
|
84
78
|
|
85
|
-
const startTimes = this.startTimes;
|
86
79
|
NativeWebSocketModule.connect = function (...args) {
|
87
|
-
connectCallback?.(...args);
|
88
|
-
|
89
|
-
startTimes.set(args[3], Date.now());
|
80
|
+
connectCallback?.(Date.now(), ...args);
|
90
81
|
|
91
82
|
originalWebSocketConnect.call(this, ...args);
|
92
83
|
};
|
@@ -37,9 +37,7 @@ export default class XHRInterceptor extends HttpInterceptor {
|
|
37
37
|
};
|
38
38
|
|
39
39
|
XMLHttpRequest.prototype.send = function (data) {
|
40
|
-
sendCallback?.(this._interceptionId, data);
|
41
|
-
|
42
|
-
const startTime = Date.now();
|
40
|
+
sendCallback?.(this._interceptionId, Date.now(), data);
|
43
41
|
|
44
42
|
this.addEventListener?.('readystatechange', () => {
|
45
43
|
if (!isInterceptorEnabled()) return;
|
@@ -54,23 +52,30 @@ export default class XHRInterceptor extends HttpInterceptor {
|
|
54
52
|
|
55
53
|
const responseSize = contentLengthString ? parseInt(contentLengthString, 10) : undefined;
|
56
54
|
|
55
|
+
const responseHeadersArray = this.getAllResponseHeaders().split('\n');
|
56
|
+
const responseHeaders = responseHeadersArray.reduce<Map<string, string>>(
|
57
|
+
(acc, header) => {
|
58
|
+
const [key, value] = header.split(': ');
|
59
|
+
if (key && value) acc.set(key, value);
|
60
|
+
return acc;
|
61
|
+
},
|
62
|
+
new Map(),
|
63
|
+
);
|
64
|
+
|
57
65
|
headerReceivedCallback?.(
|
58
66
|
this._interceptionId,
|
59
67
|
responseContentType,
|
60
68
|
responseSize,
|
61
|
-
|
69
|
+
responseHeaders,
|
62
70
|
);
|
63
71
|
}
|
64
72
|
|
65
73
|
if (this.readyState === this.DONE) {
|
66
|
-
const endTime = Date.now();
|
67
|
-
const duration = endTime - startTime;
|
68
|
-
|
69
74
|
responseCallback?.(
|
70
75
|
this._interceptionId,
|
71
76
|
this.status,
|
72
77
|
this.timeout,
|
73
|
-
|
78
|
+
Date.now(),
|
74
79
|
this.response,
|
75
80
|
this.responseURL,
|
76
81
|
this.responseType,
|
package/src/theme/colors.ts
CHANGED
@@ -2,8 +2,13 @@ const colors = Object.freeze({
|
|
2
2
|
black: '#0a0a0a',
|
3
3
|
red: '#ff6467',
|
4
4
|
green: '#05df72',
|
5
|
+
blue: '#51a2ff',
|
6
|
+
yellow: '#fcc800',
|
7
|
+
cyan: '#00d3f2',
|
8
|
+
purple: '#a684ff',
|
5
9
|
gray: '#a1a1a1',
|
6
10
|
lightGray: '#e5e5e5',
|
11
|
+
white: '#ffffff',
|
7
12
|
});
|
8
13
|
|
9
14
|
export default colors;
|
package/src/types/common.ts
CHANGED
@@ -16,15 +16,14 @@ export type ID = string | undefined;
|
|
16
16
|
export interface NetworkRequest {
|
17
17
|
url: string;
|
18
18
|
status?: number;
|
19
|
-
|
19
|
+
startTime?: number;
|
20
|
+
endTime?: number;
|
20
21
|
}
|
21
22
|
|
22
23
|
export type DetailTab = 'overview' | 'headers' | 'request' | 'response' | 'messages' | 'logMessage';
|
23
24
|
|
24
25
|
export interface DebuggerState {
|
25
|
-
visibility: 'hidden' | 'bubble' | 'panel';
|
26
26
|
position: 'top' | 'bottom';
|
27
|
-
selectedPanel: DebuggerPanel | null;
|
28
27
|
detailsData:
|
29
28
|
| {
|
30
29
|
type: DebuggerPanel.Network;
|
package/src/types/http.ts
CHANGED
@@ -3,12 +3,11 @@ import type { ID, NetworkRequest, NetworkType } from './common';
|
|
3
3
|
export interface HttpRequest extends NetworkRequest {
|
4
4
|
type: NetworkType.Fetch | NetworkType.XHR;
|
5
5
|
method: string;
|
6
|
-
requestHeaders?:
|
7
|
-
requestHeadersString?: string;
|
6
|
+
requestHeaders?: Map<string, string>;
|
8
7
|
body?: any;
|
9
8
|
responseContentType?: string;
|
10
9
|
responseSize?: number;
|
11
|
-
responseHeaders?: string
|
10
|
+
responseHeaders?: Map<string, string>;
|
12
11
|
timeout?: number;
|
13
12
|
response?: any;
|
14
13
|
responseType?: string;
|
@@ -17,13 +16,13 @@ export interface HttpRequest extends NetworkRequest {
|
|
17
16
|
export interface HttpHandlers {
|
18
17
|
open: ((id: ID, type: HttpRequest['type'], method: string, url: string) => void) | null;
|
19
18
|
requestHeader: ((id: ID, header: string, value: string) => void) | null;
|
20
|
-
send: ((id: ID, data?: any) => void) | null;
|
19
|
+
send: ((id: ID, startTime: number, data?: any) => void) | null;
|
21
20
|
headerReceived:
|
22
21
|
| ((
|
23
22
|
id: ID,
|
24
23
|
responseContentType: string | undefined,
|
25
24
|
responseSize: number | undefined,
|
26
|
-
responseHeaders:
|
25
|
+
responseHeaders: HttpRequest['responseHeaders'],
|
27
26
|
) => void)
|
28
27
|
| null;
|
29
28
|
response:
|
@@ -31,7 +30,7 @@ export interface HttpHandlers {
|
|
31
30
|
id: ID,
|
32
31
|
status: number | undefined,
|
33
32
|
timeout: number | undefined,
|
34
|
-
|
33
|
+
endTime: number,
|
35
34
|
response: any,
|
36
35
|
responseURL: string | undefined,
|
37
36
|
responseType: string | undefined,
|
package/src/types/websocket.ts
CHANGED
@@ -16,6 +16,7 @@ export interface WebSocketRequest extends NetworkRequest {
|
|
16
16
|
export interface WebSocketHandlers {
|
17
17
|
connect:
|
18
18
|
| ((
|
19
|
+
startTime: number,
|
19
20
|
url: string,
|
20
21
|
protocols?: WebSocketRequest['protocols'],
|
21
22
|
options?: WebSocketRequest['options'],
|
@@ -24,7 +25,7 @@ export interface WebSocketHandlers {
|
|
24
25
|
| null;
|
25
26
|
send: ((data: string, socketId: number) => void) | null;
|
26
27
|
close: ((code: number, reason: string, socketId: number) => void) | null;
|
27
|
-
onOpen: ((socketId: number,
|
28
|
+
onOpen: ((socketId: number, endTime: number) => void) | null;
|
28
29
|
onMessage: ((socketId: number, message: any) => void) | null;
|
29
30
|
onError: ((socketId: number, error: WebSocketRequest['serverError']) => void) | null;
|
30
31
|
onClose: ((socketId: number, data: WebSocketRequest['serverClose']) => void) | null;
|
package/src/ui/Xenon.tsx
CHANGED
@@ -1,15 +1,18 @@
|
|
1
1
|
import { enableMapSet } from 'immer';
|
2
|
-
import { createRef, memo, useImperativeHandle, useMemo,
|
3
|
-
import {
|
2
|
+
import { createRef, memo, useImperativeHandle, useMemo, type ReactNode } from 'react';
|
3
|
+
import { Platform, StyleSheet, useWindowDimensions } from 'react-native';
|
4
4
|
import { SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context';
|
5
|
+
import { FullWindowOverlay } from 'react-native-screens';
|
5
6
|
import { useImmer } from 'use-immer';
|
6
7
|
import MainContext from '../contexts/MainContext';
|
7
|
-
import {
|
8
|
+
import refs, { DebuggerVisibility } from '../core/refs';
|
8
9
|
import { useConsoleInterceptor, useNetworkInterceptor } from '../hooks';
|
9
10
|
import colors from '../theme/colors';
|
10
|
-
import {
|
11
|
-
import { Bubble
|
12
|
-
import
|
11
|
+
import { type DebuggerState } from '../types';
|
12
|
+
import { Bubble } from './components';
|
13
|
+
import IndexedStack from './components/common/IndexedStack';
|
14
|
+
import Header from './components/headers/Header';
|
15
|
+
import Panel from './components/panels/Panel';
|
13
16
|
|
14
17
|
namespace Xenon {
|
15
18
|
interface Methods {
|
@@ -19,10 +22,12 @@ namespace Xenon {
|
|
19
22
|
}
|
20
23
|
|
21
24
|
interface Props {
|
25
|
+
disabled?: boolean;
|
22
26
|
autoInspectNetworkEnabled?: boolean;
|
23
27
|
autoInspectConsoleEnabled?: boolean;
|
24
28
|
bubbleSize?: number;
|
25
29
|
idleBubbleOpacity?: number;
|
30
|
+
children?: ReactNode;
|
26
31
|
}
|
27
32
|
|
28
33
|
enableMapSet();
|
@@ -57,20 +62,12 @@ namespace Xenon {
|
|
57
62
|
idleBubbleOpacity = 0.5,
|
58
63
|
}: Props) => {
|
59
64
|
const { width, height } = useWindowDimensions();
|
60
|
-
const pan = useRef(new Animated.ValueXY({ x: 0, y: getVerticalSafeMargin(height) }));
|
61
65
|
|
62
66
|
const [debuggerState, setDebuggerState] = useImmer<DebuggerState>({
|
63
|
-
visibility: 'hidden',
|
64
67
|
position: 'bottom',
|
65
|
-
selectedPanel: DebuggerPanel.Network,
|
66
68
|
detailsData: null,
|
67
69
|
});
|
68
70
|
|
69
|
-
const detailsShown = useMemo(
|
70
|
-
() => !debuggerState.selectedPanel && !!debuggerState.detailsData,
|
71
|
-
[debuggerState.detailsData, debuggerState.selectedPanel],
|
72
|
-
);
|
73
|
-
|
74
71
|
const containerStyle = useMemo(
|
75
72
|
() => [
|
76
73
|
styles.container,
|
@@ -84,73 +81,73 @@ namespace Xenon {
|
|
84
81
|
});
|
85
82
|
|
86
83
|
const consoleInterceptor = useConsoleInterceptor({
|
84
|
+
// Disable console log tracking in development to prevent infinite loops
|
85
|
+
// autoEnabled: __DEV__ ? false : autoInspectConsoleEnabled,
|
87
86
|
autoEnabled: autoInspectConsoleEnabled,
|
88
87
|
});
|
89
88
|
|
90
89
|
useImperativeHandle(ref, () => {
|
91
|
-
const changeVisibility = (condition: boolean, value:
|
90
|
+
const changeVisibility = (condition: boolean, value: DebuggerVisibility) => {
|
92
91
|
if (!condition) return;
|
93
92
|
|
94
|
-
|
95
|
-
draft.visibility = value;
|
96
|
-
});
|
93
|
+
refs.debugger.current?.setCurrentIndex(value);
|
97
94
|
};
|
98
95
|
|
99
96
|
return {
|
100
97
|
isVisible() {
|
101
|
-
return
|
98
|
+
return refs.debugger.current?.getCurrentIndex() !== DebuggerVisibility.Hidden;
|
102
99
|
},
|
103
100
|
show() {
|
104
|
-
changeVisibility(!this.isVisible(),
|
101
|
+
changeVisibility(!this.isVisible(), DebuggerVisibility.Bubble);
|
105
102
|
},
|
106
103
|
hide() {
|
107
|
-
changeVisibility(this.isVisible(),
|
104
|
+
changeVisibility(this.isVisible(), DebuggerVisibility.Hidden);
|
108
105
|
},
|
109
106
|
};
|
110
|
-
}, [
|
107
|
+
}, []);
|
111
108
|
|
112
109
|
return (
|
113
110
|
<MainContext.Provider
|
114
111
|
value={{ debuggerState, setDebuggerState, networkInterceptor, consoleInterceptor }}
|
115
112
|
>
|
116
|
-
{
|
113
|
+
<IndexedStack defaultIndex={DebuggerVisibility.Hidden} id="debugger" ref={refs.debugger}>
|
117
114
|
<Bubble
|
118
115
|
bubbleSize={bubbleSize}
|
119
116
|
idleBubbleOpacity={idleBubbleOpacity}
|
120
|
-
pan={pan}
|
121
117
|
screenWidth={width}
|
122
118
|
screenHeight={height}
|
123
119
|
/>
|
124
|
-
)}
|
125
120
|
|
126
|
-
{debuggerState.visibility === 'panel' && (
|
127
121
|
<SafeAreaProvider style={containerStyle}>
|
128
122
|
<SafeAreaView style={styles.safeArea}>
|
129
|
-
<
|
130
|
-
|
131
|
-
{debuggerState.selectedPanel === DebuggerPanel.Console && <ConsolePanel />}
|
132
|
-
{detailsShown && <DetailsViewer />}
|
123
|
+
<Header />
|
124
|
+
<Panel />
|
133
125
|
</SafeAreaView>
|
134
126
|
</SafeAreaProvider>
|
135
|
-
|
127
|
+
</IndexedStack>
|
136
128
|
</MainContext.Provider>
|
137
129
|
);
|
138
130
|
},
|
139
131
|
);
|
140
132
|
|
141
|
-
export function
|
142
|
-
if (
|
143
|
-
|
144
|
-
|
133
|
+
export function Wrapper({ disabled = false, children, ...props }: Props) {
|
134
|
+
if (disabled) return children;
|
135
|
+
|
136
|
+
return (
|
137
|
+
<>
|
138
|
+
{children}
|
139
|
+
{Platform.OS === 'ios' ? (
|
140
|
+
<FullWindowOverlay>
|
141
|
+
<Debugger {...props} />
|
142
|
+
</FullWindowOverlay>
|
143
|
+
) : (
|
145
144
|
<Debugger {...props} />
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
return <Debugger {...props} />;
|
145
|
+
)}
|
146
|
+
</>
|
147
|
+
);
|
151
148
|
}
|
152
149
|
|
153
|
-
|
150
|
+
Wrapper.displayName = 'Xenon';
|
154
151
|
}
|
155
152
|
|
156
153
|
export default Xenon;
|