react-native-xenon 0.6.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 -32
- package/lib/commonjs/assets/icons/delete.png +0 -0
- 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 +10 -5
- package/lib/commonjs/theme/colors.js.map +1 -1
- package/lib/commonjs/ui/Xenon.js +52 -42
- 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 -173
- 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 +7 -10
- 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 +24 -22
- 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/assets/icons/delete.png +0 -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 +10 -5
- package/lib/module/theme/colors.js.map +1 -1
- package/lib/module/ui/Xenon.js +52 -42
- 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 -173
- 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 +7 -10
- 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 +24 -22
- 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 +10 -5
- 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 +10 -5
- 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/assets/icons/delete.png +0 -0
- 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 +10 -5
- 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 +42 -42
- 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 -191
- 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 +8 -11
- 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 +28 -25
- 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/commonjs/ui/components/headers/NetworkPanelHeader.js +0 -81
- package/lib/commonjs/ui/components/headers/NetworkPanelHeader.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/module/ui/components/headers/NetworkPanelHeader.js +0 -81
- package/lib/module/ui/components/headers/NetworkPanelHeader.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/commonjs/src/ui/components/headers/NetworkPanelHeader.d.ts +0 -2
- package/lib/typescript/commonjs/src/ui/components/headers/NetworkPanelHeader.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/lib/typescript/module/src/ui/components/headers/NetworkPanelHeader.d.ts +0 -2
- package/lib/typescript/module/src/ui/components/headers/NetworkPanelHeader.d.ts.map +0 -1
- package/src/ui/components/details/DetailsViewer.tsx +0 -19
- package/src/ui/components/headers/NetworkPanelHeader.tsx +0 -69
package/src/core/refs.ts
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
import { createRef } from 'react';
|
2
|
+
import type { IndexedStackMethods } from '../ui/components/common/IndexedStack';
|
3
|
+
|
4
|
+
export enum DebuggerVisibility {
|
5
|
+
Hidden = -1,
|
6
|
+
Bubble = 0,
|
7
|
+
Panel = 1,
|
8
|
+
}
|
9
|
+
|
10
|
+
export enum PanelState {
|
11
|
+
Network = 0,
|
12
|
+
Console = 1,
|
13
|
+
NetworkDetail = 2,
|
14
|
+
ConsoleDetail = 3,
|
15
|
+
}
|
16
|
+
|
17
|
+
export enum HeaderState {
|
18
|
+
Debugger = 0,
|
19
|
+
Network = 1,
|
20
|
+
Console = 2,
|
21
|
+
}
|
22
|
+
|
23
|
+
const refs = {
|
24
|
+
debugger: createRef<IndexedStackMethods<DebuggerVisibility>>(),
|
25
|
+
panel: createRef<IndexedStackMethods<PanelState>>(),
|
26
|
+
header: createRef<IndexedStackMethods<HeaderState>>(),
|
27
|
+
};
|
28
|
+
|
29
|
+
export default refs;
|
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
@@ -1,9 +1,14 @@
|
|
1
1
|
const colors = Object.freeze({
|
2
|
-
black: '#
|
3
|
-
red: '#
|
4
|
-
green: '#
|
5
|
-
|
6
|
-
|
2
|
+
black: '#0a0a0a',
|
3
|
+
red: '#ff6467',
|
4
|
+
green: '#05df72',
|
5
|
+
blue: '#51a2ff',
|
6
|
+
yellow: '#fcc800',
|
7
|
+
cyan: '#00d3f2',
|
8
|
+
purple: '#a684ff',
|
9
|
+
gray: '#a1a1a1',
|
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();
|
@@ -32,10 +37,13 @@ namespace Xenon {
|
|
32
37
|
container: {
|
33
38
|
flex: 1,
|
34
39
|
...StyleSheet.absoluteFillObject,
|
40
|
+
pointerEvents: 'box-none',
|
35
41
|
top: undefined,
|
36
42
|
bottom: undefined,
|
37
|
-
zIndex: 9999,
|
43
|
+
...(Platform.OS === 'android' ? { zIndex: 9999 } : {}),
|
38
44
|
backgroundColor: colors.lightGray,
|
45
|
+
borderBottomColor: colors.gray,
|
46
|
+
borderBottomWidth: StyleSheet.hairlineWidth,
|
39
47
|
},
|
40
48
|
safeArea: {
|
41
49
|
flex: 1,
|
@@ -54,20 +62,12 @@ namespace Xenon {
|
|
54
62
|
idleBubbleOpacity = 0.5,
|
55
63
|
}: Props) => {
|
56
64
|
const { width, height } = useWindowDimensions();
|
57
|
-
const pan = useRef(new Animated.ValueXY({ x: 0, y: getVerticalSafeMargin(height) }));
|
58
65
|
|
59
66
|
const [debuggerState, setDebuggerState] = useImmer<DebuggerState>({
|
60
|
-
visibility: 'hidden',
|
61
67
|
position: 'bottom',
|
62
|
-
selectedPanel: DebuggerPanel.Network,
|
63
68
|
detailsData: null,
|
64
69
|
});
|
65
70
|
|
66
|
-
const detailsShown = useMemo(
|
67
|
-
() => !debuggerState.selectedPanel && !!debuggerState.detailsData,
|
68
|
-
[debuggerState.detailsData, debuggerState.selectedPanel],
|
69
|
-
);
|
70
|
-
|
71
71
|
const containerStyle = useMemo(
|
72
72
|
() => [
|
73
73
|
styles.container,
|
@@ -81,73 +81,73 @@ namespace Xenon {
|
|
81
81
|
});
|
82
82
|
|
83
83
|
const consoleInterceptor = useConsoleInterceptor({
|
84
|
+
// Disable console log tracking in development to prevent infinite loops
|
85
|
+
// autoEnabled: __DEV__ ? false : autoInspectConsoleEnabled,
|
84
86
|
autoEnabled: autoInspectConsoleEnabled,
|
85
87
|
});
|
86
88
|
|
87
89
|
useImperativeHandle(ref, () => {
|
88
|
-
const changeVisibility = (condition: boolean, value:
|
90
|
+
const changeVisibility = (condition: boolean, value: DebuggerVisibility) => {
|
89
91
|
if (!condition) return;
|
90
92
|
|
91
|
-
|
92
|
-
draft.visibility = value;
|
93
|
-
});
|
93
|
+
refs.debugger.current?.setCurrentIndex(value);
|
94
94
|
};
|
95
95
|
|
96
96
|
return {
|
97
97
|
isVisible() {
|
98
|
-
return
|
98
|
+
return refs.debugger.current?.getCurrentIndex() !== DebuggerVisibility.Hidden;
|
99
99
|
},
|
100
100
|
show() {
|
101
|
-
changeVisibility(!this.isVisible(),
|
101
|
+
changeVisibility(!this.isVisible(), DebuggerVisibility.Bubble);
|
102
102
|
},
|
103
103
|
hide() {
|
104
|
-
changeVisibility(this.isVisible(),
|
104
|
+
changeVisibility(this.isVisible(), DebuggerVisibility.Hidden);
|
105
105
|
},
|
106
106
|
};
|
107
|
-
}, [
|
107
|
+
}, []);
|
108
108
|
|
109
109
|
return (
|
110
110
|
<MainContext.Provider
|
111
111
|
value={{ debuggerState, setDebuggerState, networkInterceptor, consoleInterceptor }}
|
112
112
|
>
|
113
|
-
{
|
113
|
+
<IndexedStack defaultIndex={DebuggerVisibility.Hidden} id="debugger" ref={refs.debugger}>
|
114
114
|
<Bubble
|
115
115
|
bubbleSize={bubbleSize}
|
116
116
|
idleBubbleOpacity={idleBubbleOpacity}
|
117
|
-
pan={pan}
|
118
117
|
screenWidth={width}
|
119
118
|
screenHeight={height}
|
120
119
|
/>
|
121
|
-
)}
|
122
120
|
|
123
|
-
{debuggerState.visibility === 'panel' && (
|
124
121
|
<SafeAreaProvider style={containerStyle}>
|
125
122
|
<SafeAreaView style={styles.safeArea}>
|
126
|
-
<
|
127
|
-
|
128
|
-
{debuggerState.selectedPanel === DebuggerPanel.Console && <ConsolePanel />}
|
129
|
-
{detailsShown && <DetailsViewer />}
|
123
|
+
<Header />
|
124
|
+
<Panel />
|
130
125
|
</SafeAreaView>
|
131
126
|
</SafeAreaProvider>
|
132
|
-
|
127
|
+
</IndexedStack>
|
133
128
|
</MainContext.Provider>
|
134
129
|
);
|
135
130
|
},
|
136
131
|
);
|
137
132
|
|
138
|
-
export function
|
139
|
-
if (
|
140
|
-
|
141
|
-
|
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
|
+
) : (
|
142
144
|
<Debugger {...props} />
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
return <Debugger {...props} />;
|
145
|
+
)}
|
146
|
+
</>
|
147
|
+
);
|
148
148
|
}
|
149
149
|
|
150
|
-
|
150
|
+
Wrapper.displayName = 'Xenon';
|
151
151
|
}
|
152
152
|
|
153
153
|
export default Xenon;
|