react-native-xenon 0.1.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/LICENSE +20 -0
- package/README.md +62 -0
- package/lib/commonjs/assets/code.png +0 -0
- package/lib/commonjs/assets/delete.png +0 -0
- package/lib/commonjs/assets/hide.png +0 -0
- package/lib/commonjs/assets/move.png +0 -0
- package/lib/commonjs/assets/record.png +0 -0
- package/lib/commonjs/constants.js +8 -0
- package/lib/commonjs/constants.js.map +1 -0
- package/lib/commonjs/contexts/MainContext.js +10 -0
- package/lib/commonjs/contexts/MainContext.js.map +1 -0
- package/lib/commonjs/contexts/index.js +14 -0
- package/lib/commonjs/contexts/index.js.map +1 -0
- package/lib/commonjs/global.d.js +2 -0
- package/lib/commonjs/global.d.js.map +1 -0
- package/lib/commonjs/hooks/index.js +28 -0
- package/lib/commonjs/hooks/index.js.map +1 -0
- package/lib/commonjs/hooks/useConsoleInterceptor.js +49 -0
- package/lib/commonjs/hooks/useConsoleInterceptor.js.map +1 -0
- package/lib/commonjs/hooks/useNetworkInterceptor.js +162 -0
- package/lib/commonjs/hooks/useNetworkInterceptor.js.map +1 -0
- package/lib/commonjs/hooks/useScrollToBottom.js +23 -0
- package/lib/commonjs/hooks/useScrollToBottom.js.map +1 -0
- package/lib/commonjs/index.js +14 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/interceptors/ConsoleInterceptor.js +93 -0
- package/lib/commonjs/interceptors/ConsoleInterceptor.js.map +1 -0
- package/lib/commonjs/interceptors/FetchInterceptor.js +114 -0
- package/lib/commonjs/interceptors/FetchInterceptor.js.map +1 -0
- package/lib/commonjs/interceptors/HttpInterceptor.js +57 -0
- package/lib/commonjs/interceptors/HttpInterceptor.js.map +1 -0
- package/lib/commonjs/interceptors/Interceptor.js +11 -0
- package/lib/commonjs/interceptors/Interceptor.js.map +1 -0
- package/lib/commonjs/interceptors/NetworkInterceptor.js +11 -0
- package/lib/commonjs/interceptors/NetworkInterceptor.js.map +1 -0
- package/lib/commonjs/interceptors/WebSocketInterceptor.js +150 -0
- package/lib/commonjs/interceptors/WebSocketInterceptor.js.map +1 -0
- package/lib/commonjs/interceptors/XHRInterceptor.js +69 -0
- package/lib/commonjs/interceptors/XHRInterceptor.js.map +1 -0
- package/lib/commonjs/interceptors/index.js +35 -0
- package/lib/commonjs/interceptors/index.js.map +1 -0
- package/lib/commonjs/types/common.js +18 -0
- package/lib/commonjs/types/common.js.map +1 -0
- package/lib/commonjs/types/console.js +2 -0
- package/lib/commonjs/types/console.js.map +1 -0
- package/lib/commonjs/types/http.js +6 -0
- package/lib/commonjs/types/http.js.map +1 -0
- package/lib/commonjs/types/index.js +50 -0
- package/lib/commonjs/types/index.js.map +1 -0
- package/lib/commonjs/types/websocket.js +6 -0
- package/lib/commonjs/types/websocket.js.map +1 -0
- package/lib/commonjs/ui/Xenon.js +117 -0
- package/lib/commonjs/ui/Xenon.js.map +1 -0
- package/lib/commonjs/ui/components/bubble/Bubble.js +82 -0
- package/lib/commonjs/ui/components/bubble/Bubble.js.map +1 -0
- package/lib/commonjs/ui/components/details/DetailsViewer.js +33 -0
- package/lib/commonjs/ui/components/details/DetailsViewer.js.map +1 -0
- package/lib/commonjs/ui/components/details/LogMessageDetails.js +30 -0
- package/lib/commonjs/ui/components/details/LogMessageDetails.js.map +1 -0
- package/lib/commonjs/ui/components/details/NetworkRequestDetails.js +130 -0
- package/lib/commonjs/ui/components/details/NetworkRequestDetails.js.map +1 -0
- package/lib/commonjs/ui/components/headers/DebuggerHeader.js +94 -0
- package/lib/commonjs/ui/components/headers/DebuggerHeader.js.map +1 -0
- package/lib/commonjs/ui/components/headers/NetworkPanelHeader.js +68 -0
- package/lib/commonjs/ui/components/headers/NetworkPanelHeader.js.map +1 -0
- package/lib/commonjs/ui/components/headers/NetworkRequestDetailsHeader.js +65 -0
- package/lib/commonjs/ui/components/headers/NetworkRequestDetailsHeader.js.map +1 -0
- package/lib/commonjs/ui/components/index.js +42 -0
- package/lib/commonjs/ui/components/index.js.map +1 -0
- package/lib/commonjs/ui/components/items/ConsolePanelItem.js +35 -0
- package/lib/commonjs/ui/components/items/ConsolePanelItem.js.map +1 -0
- package/lib/commonjs/ui/components/items/DebuggerHeaderItem.js +54 -0
- package/lib/commonjs/ui/components/items/DebuggerHeaderItem.js.map +1 -0
- package/lib/commonjs/ui/components/items/NetworkPanelItem.js +76 -0
- package/lib/commonjs/ui/components/items/NetworkPanelItem.js.map +1 -0
- package/lib/commonjs/ui/components/items/NetworkRequestDetailsHeaderItem.js +47 -0
- package/lib/commonjs/ui/components/items/NetworkRequestDetailsHeaderItem.js.map +1 -0
- package/lib/commonjs/ui/components/items/NetworkRequestDetailsItem.js +41 -0
- package/lib/commonjs/ui/components/items/NetworkRequestDetailsItem.js.map +1 -0
- package/lib/commonjs/ui/components/panels/ConsolePanel.js +58 -0
- package/lib/commonjs/ui/components/panels/ConsolePanel.js.map +1 -0
- package/lib/commonjs/ui/components/panels/NetworkPanel.js +66 -0
- package/lib/commonjs/ui/components/panels/NetworkPanel.js.map +1 -0
- package/lib/commonjs/utils.js +46 -0
- package/lib/commonjs/utils.js.map +1 -0
- package/lib/module/assets/code.png +0 -0
- package/lib/module/assets/delete.png +0 -0
- package/lib/module/assets/hide.png +0 -0
- package/lib/module/assets/move.png +0 -0
- package/lib/module/assets/record.png +0 -0
- package/lib/module/constants.js +4 -0
- package/lib/module/constants.js.map +1 -0
- package/lib/module/contexts/MainContext.js +6 -0
- package/lib/module/contexts/MainContext.js.map +1 -0
- package/lib/module/contexts/index.js +4 -0
- package/lib/module/contexts/index.js.map +1 -0
- package/lib/module/global.d.js +2 -0
- package/lib/module/global.d.js.map +1 -0
- package/lib/module/hooks/index.js +6 -0
- package/lib/module/hooks/index.js.map +1 -0
- package/lib/module/hooks/useConsoleInterceptor.js +45 -0
- package/lib/module/hooks/useConsoleInterceptor.js.map +1 -0
- package/lib/module/hooks/useNetworkInterceptor.js +158 -0
- package/lib/module/hooks/useNetworkInterceptor.js.map +1 -0
- package/lib/module/hooks/useScrollToBottom.js +19 -0
- package/lib/module/hooks/useScrollToBottom.js.map +1 -0
- package/lib/module/index.js +4 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/interceptors/ConsoleInterceptor.js +86 -0
- package/lib/module/interceptors/ConsoleInterceptor.js.map +1 -0
- package/lib/module/interceptors/FetchInterceptor.js +108 -0
- package/lib/module/interceptors/FetchInterceptor.js.map +1 -0
- package/lib/module/interceptors/HttpInterceptor.js +52 -0
- package/lib/module/interceptors/HttpInterceptor.js.map +1 -0
- package/lib/module/interceptors/Interceptor.js +6 -0
- package/lib/module/interceptors/Interceptor.js.map +1 -0
- package/lib/module/interceptors/NetworkInterceptor.js +5 -0
- package/lib/module/interceptors/NetworkInterceptor.js.map +1 -0
- package/lib/module/interceptors/WebSocketInterceptor.js +144 -0
- package/lib/module/interceptors/WebSocketInterceptor.js.map +1 -0
- package/lib/module/interceptors/XHRInterceptor.js +63 -0
- package/lib/module/interceptors/XHRInterceptor.js.map +1 -0
- package/lib/module/interceptors/index.js +7 -0
- package/lib/module/interceptors/index.js.map +1 -0
- package/lib/module/types/common.js +14 -0
- package/lib/module/types/common.js.map +1 -0
- package/lib/module/types/console.js +2 -0
- package/lib/module/types/console.js.map +1 -0
- package/lib/module/types/http.js +4 -0
- package/lib/module/types/http.js.map +1 -0
- package/lib/module/types/index.js +7 -0
- package/lib/module/types/index.js.map +1 -0
- package/lib/module/types/websocket.js +4 -0
- package/lib/module/types/websocket.js.map +1 -0
- package/lib/module/ui/Xenon.js +112 -0
- package/lib/module/ui/Xenon.js.map +1 -0
- package/lib/module/ui/components/bubble/Bubble.js +78 -0
- package/lib/module/ui/components/bubble/Bubble.js.map +1 -0
- package/lib/module/ui/components/details/DetailsViewer.js +28 -0
- package/lib/module/ui/components/details/DetailsViewer.js.map +1 -0
- package/lib/module/ui/components/details/LogMessageDetails.js +26 -0
- package/lib/module/ui/components/details/LogMessageDetails.js.map +1 -0
- package/lib/module/ui/components/details/NetworkRequestDetails.js +125 -0
- package/lib/module/ui/components/details/NetworkRequestDetails.js.map +1 -0
- package/lib/module/ui/components/headers/DebuggerHeader.js +89 -0
- package/lib/module/ui/components/headers/DebuggerHeader.js.map +1 -0
- package/lib/module/ui/components/headers/NetworkPanelHeader.js +64 -0
- package/lib/module/ui/components/headers/NetworkPanelHeader.js.map +1 -0
- package/lib/module/ui/components/headers/NetworkRequestDetailsHeader.js +60 -0
- package/lib/module/ui/components/headers/NetworkRequestDetailsHeader.js.map +1 -0
- package/lib/module/ui/components/index.js +8 -0
- package/lib/module/ui/components/index.js.map +1 -0
- package/lib/module/ui/components/items/ConsolePanelItem.js +31 -0
- package/lib/module/ui/components/items/ConsolePanelItem.js.map +1 -0
- package/lib/module/ui/components/items/DebuggerHeaderItem.js +50 -0
- package/lib/module/ui/components/items/DebuggerHeaderItem.js.map +1 -0
- package/lib/module/ui/components/items/NetworkPanelItem.js +72 -0
- package/lib/module/ui/components/items/NetworkPanelItem.js.map +1 -0
- package/lib/module/ui/components/items/NetworkRequestDetailsHeaderItem.js +43 -0
- package/lib/module/ui/components/items/NetworkRequestDetailsHeaderItem.js.map +1 -0
- package/lib/module/ui/components/items/NetworkRequestDetailsItem.js +37 -0
- package/lib/module/ui/components/items/NetworkRequestDetailsItem.js.map +1 -0
- package/lib/module/ui/components/panels/ConsolePanel.js +53 -0
- package/lib/module/ui/components/panels/ConsolePanel.js.map +1 -0
- package/lib/module/ui/components/panels/NetworkPanel.js +61 -0
- package/lib/module/ui/components/panels/NetworkPanel.js.map +1 -0
- package/lib/module/utils.js +35 -0
- package/lib/module/utils.js.map +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/src/constants.d.ts +2 -0
- package/lib/typescript/commonjs/src/constants.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/contexts/MainContext.d.ts +24 -0
- package/lib/typescript/commonjs/src/contexts/MainContext.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/contexts/index.d.ts +2 -0
- package/lib/typescript/commonjs/src/contexts/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/hooks/index.d.ts +4 -0
- package/lib/typescript/commonjs/src/hooks/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/hooks/useConsoleInterceptor.d.ts +13 -0
- package/lib/typescript/commonjs/src/hooks/useConsoleInterceptor.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/hooks/useNetworkInterceptor.d.ts +12 -0
- package/lib/typescript/commonjs/src/hooks/useNetworkInterceptor.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/hooks/useScrollToBottom.d.ts +3 -0
- package/lib/typescript/commonjs/src/hooks/useScrollToBottom.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +2 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/interceptors/ConsoleInterceptor.d.ts +10 -0
- package/lib/typescript/commonjs/src/interceptors/ConsoleInterceptor.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/interceptors/FetchInterceptor.d.ts +8 -0
- package/lib/typescript/commonjs/src/interceptors/FetchInterceptor.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/interceptors/HttpInterceptor.d.ts +23 -0
- package/lib/typescript/commonjs/src/interceptors/HttpInterceptor.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/interceptors/Interceptor.d.ts +6 -0
- package/lib/typescript/commonjs/src/interceptors/Interceptor.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/interceptors/NetworkInterceptor.d.ts +6 -0
- package/lib/typescript/commonjs/src/interceptors/NetworkInterceptor.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/interceptors/WebSocketInterceptor.d.ts +34 -0
- package/lib/typescript/commonjs/src/interceptors/WebSocketInterceptor.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/interceptors/XHRInterceptor.d.ts +8 -0
- package/lib/typescript/commonjs/src/interceptors/XHRInterceptor.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/interceptors/index.d.ts +5 -0
- package/lib/typescript/commonjs/src/interceptors/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types/common.d.ts +19 -0
- package/lib/typescript/commonjs/src/types/common.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types/console.d.ts +5 -0
- package/lib/typescript/commonjs/src/types/console.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types/http.d.ts +21 -0
- package/lib/typescript/commonjs/src/types/http.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types/index.d.ts +5 -0
- package/lib/typescript/commonjs/src/types/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types/websocket.d.ts +29 -0
- package/lib/typescript/commonjs/src/types/websocket.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/Xenon.d.ts +16 -0
- package/lib/typescript/commonjs/src/ui/Xenon.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/bubble/Bubble.d.ts +9 -0
- package/lib/typescript/commonjs/src/ui/components/bubble/Bubble.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/details/DetailsViewer.d.ts +2 -0
- package/lib/typescript/commonjs/src/ui/components/details/DetailsViewer.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/details/LogMessageDetails.d.ts +7 -0
- package/lib/typescript/commonjs/src/ui/components/details/LogMessageDetails.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/details/NetworkRequestDetails.d.ts +7 -0
- package/lib/typescript/commonjs/src/ui/components/details/NetworkRequestDetails.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/headers/DebuggerHeader.d.ts +2 -0
- package/lib/typescript/commonjs/src/ui/components/headers/DebuggerHeader.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/headers/NetworkPanelHeader.d.ts +2 -0
- package/lib/typescript/commonjs/src/ui/components/headers/NetworkPanelHeader.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/headers/NetworkRequestDetailsHeader.d.ts +13 -0
- package/lib/typescript/commonjs/src/ui/components/headers/NetworkRequestDetailsHeader.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/index.d.ts +6 -0
- package/lib/typescript/commonjs/src/ui/components/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/items/ConsolePanelItem.d.ts +7 -0
- package/lib/typescript/commonjs/src/ui/components/items/ConsolePanelItem.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/items/DebuggerHeaderItem.d.ts +10 -0
- package/lib/typescript/commonjs/src/ui/components/items/DebuggerHeaderItem.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/items/NetworkPanelItem.d.ts +10 -0
- package/lib/typescript/commonjs/src/ui/components/items/NetworkPanelItem.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/items/NetworkRequestDetailsHeaderItem.d.ts +11 -0
- package/lib/typescript/commonjs/src/ui/components/items/NetworkRequestDetailsHeaderItem.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/items/NetworkRequestDetailsItem.d.ts +8 -0
- package/lib/typescript/commonjs/src/ui/components/items/NetworkRequestDetailsItem.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/panels/ConsolePanel.d.ts +2 -0
- package/lib/typescript/commonjs/src/ui/components/panels/ConsolePanel.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ui/components/panels/NetworkPanel.d.ts +2 -0
- package/lib/typescript/commonjs/src/ui/components/panels/NetworkPanel.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/utils.d.ts +9 -0
- package/lib/typescript/commonjs/src/utils.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/src/constants.d.ts +2 -0
- package/lib/typescript/module/src/constants.d.ts.map +1 -0
- package/lib/typescript/module/src/contexts/MainContext.d.ts +24 -0
- package/lib/typescript/module/src/contexts/MainContext.d.ts.map +1 -0
- package/lib/typescript/module/src/contexts/index.d.ts +2 -0
- package/lib/typescript/module/src/contexts/index.d.ts.map +1 -0
- package/lib/typescript/module/src/hooks/index.d.ts +4 -0
- package/lib/typescript/module/src/hooks/index.d.ts.map +1 -0
- package/lib/typescript/module/src/hooks/useConsoleInterceptor.d.ts +13 -0
- package/lib/typescript/module/src/hooks/useConsoleInterceptor.d.ts.map +1 -0
- package/lib/typescript/module/src/hooks/useNetworkInterceptor.d.ts +12 -0
- package/lib/typescript/module/src/hooks/useNetworkInterceptor.d.ts.map +1 -0
- package/lib/typescript/module/src/hooks/useScrollToBottom.d.ts +3 -0
- package/lib/typescript/module/src/hooks/useScrollToBottom.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +2 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -0
- package/lib/typescript/module/src/interceptors/ConsoleInterceptor.d.ts +10 -0
- package/lib/typescript/module/src/interceptors/ConsoleInterceptor.d.ts.map +1 -0
- package/lib/typescript/module/src/interceptors/FetchInterceptor.d.ts +8 -0
- package/lib/typescript/module/src/interceptors/FetchInterceptor.d.ts.map +1 -0
- package/lib/typescript/module/src/interceptors/HttpInterceptor.d.ts +23 -0
- package/lib/typescript/module/src/interceptors/HttpInterceptor.d.ts.map +1 -0
- package/lib/typescript/module/src/interceptors/Interceptor.d.ts +6 -0
- package/lib/typescript/module/src/interceptors/Interceptor.d.ts.map +1 -0
- package/lib/typescript/module/src/interceptors/NetworkInterceptor.d.ts +6 -0
- package/lib/typescript/module/src/interceptors/NetworkInterceptor.d.ts.map +1 -0
- package/lib/typescript/module/src/interceptors/WebSocketInterceptor.d.ts +34 -0
- package/lib/typescript/module/src/interceptors/WebSocketInterceptor.d.ts.map +1 -0
- package/lib/typescript/module/src/interceptors/XHRInterceptor.d.ts +8 -0
- package/lib/typescript/module/src/interceptors/XHRInterceptor.d.ts.map +1 -0
- package/lib/typescript/module/src/interceptors/index.d.ts +5 -0
- package/lib/typescript/module/src/interceptors/index.d.ts.map +1 -0
- package/lib/typescript/module/src/types/common.d.ts +19 -0
- package/lib/typescript/module/src/types/common.d.ts.map +1 -0
- package/lib/typescript/module/src/types/console.d.ts +5 -0
- package/lib/typescript/module/src/types/console.d.ts.map +1 -0
- package/lib/typescript/module/src/types/http.d.ts +21 -0
- package/lib/typescript/module/src/types/http.d.ts.map +1 -0
- package/lib/typescript/module/src/types/index.d.ts +5 -0
- package/lib/typescript/module/src/types/index.d.ts.map +1 -0
- package/lib/typescript/module/src/types/websocket.d.ts +29 -0
- package/lib/typescript/module/src/types/websocket.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/Xenon.d.ts +16 -0
- package/lib/typescript/module/src/ui/Xenon.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/bubble/Bubble.d.ts +9 -0
- package/lib/typescript/module/src/ui/components/bubble/Bubble.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/details/DetailsViewer.d.ts +2 -0
- package/lib/typescript/module/src/ui/components/details/DetailsViewer.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/details/LogMessageDetails.d.ts +7 -0
- package/lib/typescript/module/src/ui/components/details/LogMessageDetails.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/details/NetworkRequestDetails.d.ts +7 -0
- package/lib/typescript/module/src/ui/components/details/NetworkRequestDetails.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/headers/DebuggerHeader.d.ts +2 -0
- package/lib/typescript/module/src/ui/components/headers/DebuggerHeader.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/headers/NetworkPanelHeader.d.ts +2 -0
- package/lib/typescript/module/src/ui/components/headers/NetworkPanelHeader.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/headers/NetworkRequestDetailsHeader.d.ts +13 -0
- package/lib/typescript/module/src/ui/components/headers/NetworkRequestDetailsHeader.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/index.d.ts +6 -0
- package/lib/typescript/module/src/ui/components/index.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/items/ConsolePanelItem.d.ts +7 -0
- package/lib/typescript/module/src/ui/components/items/ConsolePanelItem.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/items/DebuggerHeaderItem.d.ts +10 -0
- package/lib/typescript/module/src/ui/components/items/DebuggerHeaderItem.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/items/NetworkPanelItem.d.ts +10 -0
- package/lib/typescript/module/src/ui/components/items/NetworkPanelItem.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/items/NetworkRequestDetailsHeaderItem.d.ts +11 -0
- package/lib/typescript/module/src/ui/components/items/NetworkRequestDetailsHeaderItem.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/items/NetworkRequestDetailsItem.d.ts +8 -0
- package/lib/typescript/module/src/ui/components/items/NetworkRequestDetailsItem.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/panels/ConsolePanel.d.ts +2 -0
- package/lib/typescript/module/src/ui/components/panels/ConsolePanel.d.ts.map +1 -0
- package/lib/typescript/module/src/ui/components/panels/NetworkPanel.d.ts +2 -0
- package/lib/typescript/module/src/ui/components/panels/NetworkPanel.d.ts.map +1 -0
- package/lib/typescript/module/src/utils.d.ts +9 -0
- package/lib/typescript/module/src/utils.d.ts.map +1 -0
- package/package.json +219 -0
- package/src/assets/code.png +0 -0
- package/src/assets/delete.png +0 -0
- package/src/assets/hide.png +0 -0
- package/src/assets/move.png +0 -0
- package/src/assets/record.png +0 -0
- package/src/constants.ts +1 -0
- package/src/contexts/MainContext.ts +34 -0
- package/src/contexts/index.ts +1 -0
- package/src/global.d.ts +29 -0
- package/src/hooks/index.ts +3 -0
- package/src/hooks/useConsoleInterceptor.ts +58 -0
- package/src/hooks/useNetworkInterceptor.ts +263 -0
- package/src/hooks/useScrollToBottom.ts +23 -0
- package/src/index.ts +1 -0
- package/src/interceptors/ConsoleInterceptor.ts +115 -0
- package/src/interceptors/FetchInterceptor.ts +134 -0
- package/src/interceptors/HttpInterceptor.ts +65 -0
- package/src/interceptors/Interceptor.ts +6 -0
- package/src/interceptors/NetworkInterceptor.ts +6 -0
- package/src/interceptors/WebSocketInterceptor.ts +189 -0
- package/src/interceptors/XHRInterceptor.ts +97 -0
- package/src/interceptors/index.ts +4 -0
- package/src/types/common.ts +26 -0
- package/src/types/console.ts +4 -0
- package/src/types/http.ts +44 -0
- package/src/types/index.ts +4 -0
- package/src/types/websocket.ts +46 -0
- package/src/ui/Xenon.tsx +149 -0
- package/src/ui/components/bubble/Bubble.tsx +93 -0
- package/src/ui/components/details/DetailsViewer.tsx +20 -0
- package/src/ui/components/details/LogMessageDetails.tsx +26 -0
- package/src/ui/components/details/NetworkRequestDetails.tsx +140 -0
- package/src/ui/components/headers/DebuggerHeader.tsx +112 -0
- package/src/ui/components/headers/NetworkPanelHeader.tsx +58 -0
- package/src/ui/components/headers/NetworkRequestDetailsHeader.tsx +91 -0
- package/src/ui/components/index.ts +5 -0
- package/src/ui/components/items/ConsolePanelItem.tsx +28 -0
- package/src/ui/components/items/DebuggerHeaderItem.tsx +65 -0
- package/src/ui/components/items/NetworkPanelItem.tsx +71 -0
- package/src/ui/components/items/NetworkRequestDetailsHeaderItem.tsx +52 -0
- package/src/ui/components/items/NetworkRequestDetailsItem.tsx +43 -0
- package/src/ui/components/panels/ConsolePanel.tsx +55 -0
- package/src/ui/components/panels/NetworkPanel.tsx +64 -0
- package/src/utils.ts +54 -0
@@ -0,0 +1,263 @@
|
|
1
|
+
import { enableMapSet } from 'immer';
|
2
|
+
import { useCallback, useEffect, useState } from 'react';
|
3
|
+
import { useImmer } from 'use-immer';
|
4
|
+
import { NETWORK_REQUEST_HEADER } from '../constants';
|
5
|
+
import {
|
6
|
+
NetworkType,
|
7
|
+
type HttpHeaderReceivedCallback,
|
8
|
+
type HttpOpenCallback,
|
9
|
+
type HttpRequest,
|
10
|
+
type HttpRequestHeaderCallback,
|
11
|
+
type HttpResponseCallback,
|
12
|
+
type HttpSendCallback,
|
13
|
+
type ID,
|
14
|
+
type WebSocketCloseCallback,
|
15
|
+
type WebSocketConnectCallback,
|
16
|
+
type WebSocketOnCloseCallback,
|
17
|
+
type WebSocketOnErrorCallback,
|
18
|
+
type WebSocketOnMessageCallback,
|
19
|
+
type WebSocketOnOpenCallback,
|
20
|
+
type WebSocketRequest,
|
21
|
+
type WebSocketSendCallback,
|
22
|
+
} from '../types';
|
23
|
+
import { keyValueToString } from '../utils';
|
24
|
+
import { XHRInterceptor, FetchInterceptor, WebSocketInterceptor } from '../interceptors';
|
25
|
+
|
26
|
+
interface NetworkInterceptorParams {
|
27
|
+
autoEnabled?: boolean;
|
28
|
+
}
|
29
|
+
|
30
|
+
type NetworkRequests<T> = Map<NonNullable<ID>, T>;
|
31
|
+
|
32
|
+
enableMapSet();
|
33
|
+
|
34
|
+
const initRequests = new Map<NonNullable<ID>, HttpRequest & WebSocketRequest>();
|
35
|
+
|
36
|
+
export default function useNetworkInterceptor(params?: NetworkInterceptorParams) {
|
37
|
+
const { autoEnabled = false } = params || {};
|
38
|
+
const [isInterceptorEnabled, setIsInterceptorEnabled] = useState(autoEnabled);
|
39
|
+
|
40
|
+
const [networkRequests, setNetworkRequests] = useImmer(initRequests);
|
41
|
+
|
42
|
+
const _isInterceptorEnabled = () =>
|
43
|
+
XHRInterceptor.instance.isInterceptorEnabled &&
|
44
|
+
FetchInterceptor.instance.isInterceptorEnabled &&
|
45
|
+
WebSocketInterceptor.instance.isInterceptorEnabled;
|
46
|
+
|
47
|
+
const clearAllNetworkRequests = () => {
|
48
|
+
setNetworkRequests(initRequests);
|
49
|
+
};
|
50
|
+
|
51
|
+
const enableHttpInterceptions = useCallback(() => {
|
52
|
+
const openCallback: HttpOpenCallback = (id, type, method, url) => {
|
53
|
+
if (!id) return;
|
54
|
+
|
55
|
+
setNetworkRequests((draft: NetworkRequests<HttpRequest>) => {
|
56
|
+
draft.set(id, { type, method, url });
|
57
|
+
});
|
58
|
+
};
|
59
|
+
|
60
|
+
const requestHeaderCallback: HttpRequestHeaderCallback = (id, header, value) => {
|
61
|
+
if (!id) return;
|
62
|
+
|
63
|
+
setNetworkRequests((draft: NetworkRequests<HttpRequest>) => {
|
64
|
+
if (!draft.get(id)) return draft;
|
65
|
+
|
66
|
+
const currentHeaderLine = keyValueToString(header, value);
|
67
|
+
|
68
|
+
const fetchRequestHeaderLineRegex = RegExp(
|
69
|
+
keyValueToString(NETWORK_REQUEST_HEADER, NetworkType.Fetch),
|
70
|
+
'gi',
|
71
|
+
);
|
72
|
+
|
73
|
+
const isFetchInXHR =
|
74
|
+
draft.get(id)!.type === NetworkType.XHR &&
|
75
|
+
!!currentHeaderLine.match(fetchRequestHeaderLineRegex);
|
76
|
+
|
77
|
+
if (isFetchInXHR) {
|
78
|
+
draft.delete(id);
|
79
|
+
} else {
|
80
|
+
draft.get(id)!.requestHeadersString ??= '';
|
81
|
+
draft.get(id)!.requestHeadersString += currentHeaderLine;
|
82
|
+
draft.get(id)!.requestHeaders ??= {};
|
83
|
+
draft.get(id)!.requestHeaders![header] = value;
|
84
|
+
}
|
85
|
+
});
|
86
|
+
};
|
87
|
+
|
88
|
+
const sendCallback: HttpSendCallback = (id, data) => {
|
89
|
+
if (!id) return;
|
90
|
+
|
91
|
+
setNetworkRequests((draft: NetworkRequests<HttpRequest>) => {
|
92
|
+
if (!draft.get(id)) return draft;
|
93
|
+
|
94
|
+
draft.get(id)!.body = data;
|
95
|
+
});
|
96
|
+
};
|
97
|
+
|
98
|
+
const headerReceivedCallback: HttpHeaderReceivedCallback = (
|
99
|
+
id,
|
100
|
+
responseContentType,
|
101
|
+
responseSize,
|
102
|
+
responseHeaders,
|
103
|
+
) => {
|
104
|
+
if (!id) return;
|
105
|
+
|
106
|
+
setNetworkRequests((draft: NetworkRequests<HttpRequest>) => {
|
107
|
+
if (!draft.get(id)) return draft;
|
108
|
+
|
109
|
+
draft.get(id)!.responseContentType = responseContentType;
|
110
|
+
draft.get(id)!.responseSize = responseSize;
|
111
|
+
draft.get(id)!.responseHeaders = responseHeaders;
|
112
|
+
});
|
113
|
+
};
|
114
|
+
|
115
|
+
const responseCallback: HttpResponseCallback = (
|
116
|
+
id,
|
117
|
+
status,
|
118
|
+
timeout,
|
119
|
+
response,
|
120
|
+
responseURL,
|
121
|
+
responseType,
|
122
|
+
) => {
|
123
|
+
if (!id) return;
|
124
|
+
|
125
|
+
setNetworkRequests((draft: NetworkRequests<HttpRequest>) => {
|
126
|
+
if (!draft.get(id)) return draft;
|
127
|
+
|
128
|
+
draft.get(id)!.status = status;
|
129
|
+
draft.get(id)!.timeout = timeout;
|
130
|
+
draft.get(id)!.response = response;
|
131
|
+
if (responseURL) draft.get(id)!.url = responseURL;
|
132
|
+
draft.get(id)!.responseType = responseType;
|
133
|
+
});
|
134
|
+
};
|
135
|
+
|
136
|
+
XHRInterceptor.instance
|
137
|
+
.setOpenCallback(openCallback)
|
138
|
+
.setRequestHeaderCallback(requestHeaderCallback)
|
139
|
+
.setSendCallback(sendCallback)
|
140
|
+
.setHeaderReceivedCallback(headerReceivedCallback)
|
141
|
+
.setResponseCallback(responseCallback)
|
142
|
+
.enableInterception();
|
143
|
+
|
144
|
+
FetchInterceptor.instance
|
145
|
+
.setOpenCallback(openCallback)
|
146
|
+
.setRequestHeaderCallback(requestHeaderCallback)
|
147
|
+
.setSendCallback(sendCallback)
|
148
|
+
.setHeaderReceivedCallback(headerReceivedCallback)
|
149
|
+
.setResponseCallback(responseCallback)
|
150
|
+
.enableInterception();
|
151
|
+
}, [setNetworkRequests]);
|
152
|
+
|
153
|
+
const enableWebSocketInterception = useCallback(() => {
|
154
|
+
const connectCallback: WebSocketConnectCallback = (uri, protocols, options, socketId) => {
|
155
|
+
if (typeof socketId !== 'number') return;
|
156
|
+
|
157
|
+
setNetworkRequests((draft: NetworkRequests<WebSocketRequest>) => {
|
158
|
+
draft.set(`${socketId}`, {
|
159
|
+
uri,
|
160
|
+
type: NetworkType.WS,
|
161
|
+
protocols,
|
162
|
+
options,
|
163
|
+
});
|
164
|
+
});
|
165
|
+
};
|
166
|
+
|
167
|
+
const sendCallback: WebSocketSendCallback = (data, socketId) => {
|
168
|
+
if (typeof socketId !== 'number') return;
|
169
|
+
|
170
|
+
setNetworkRequests((draft: NetworkRequests<WebSocketRequest>) => {
|
171
|
+
if (!draft.get(`${socketId}`)) return draft;
|
172
|
+
|
173
|
+
draft.get(`${socketId}`)!.messages ??= '';
|
174
|
+
draft.get(`${socketId}`)!.messages += keyValueToString('SENT', data);
|
175
|
+
});
|
176
|
+
};
|
177
|
+
|
178
|
+
const closeCallback: WebSocketCloseCallback = (code, reason, socketId) => {
|
179
|
+
if (typeof socketId !== 'number') return;
|
180
|
+
|
181
|
+
setNetworkRequests((draft: NetworkRequests<WebSocketRequest>) => {
|
182
|
+
if (!draft.get(`${socketId}`)) return draft;
|
183
|
+
|
184
|
+
draft.get(`${socketId}`)!.status = code;
|
185
|
+
draft.get(`${socketId}`)!.closeReason = reason;
|
186
|
+
});
|
187
|
+
};
|
188
|
+
|
189
|
+
const onOpenCallback: WebSocketOnOpenCallback = () => {};
|
190
|
+
|
191
|
+
const onMessageCallback: WebSocketOnMessageCallback = (socketId, message) => {
|
192
|
+
if (typeof socketId !== 'number') return;
|
193
|
+
|
194
|
+
setNetworkRequests((draft: NetworkRequests<WebSocketRequest>) => {
|
195
|
+
if (!draft.get(`${socketId}`)) return draft;
|
196
|
+
|
197
|
+
draft.get(`${socketId}`)!.messages ??= '';
|
198
|
+
draft.get(`${socketId}`)!.messages += keyValueToString('RECEIVED', message);
|
199
|
+
});
|
200
|
+
};
|
201
|
+
|
202
|
+
const onErrorCallback: WebSocketOnErrorCallback = (socketId, data) => {
|
203
|
+
if (typeof socketId !== 'number') return;
|
204
|
+
|
205
|
+
setNetworkRequests((draft: NetworkRequests<WebSocketRequest>) => {
|
206
|
+
if (!draft.get(`${socketId}`)) return draft;
|
207
|
+
|
208
|
+
draft.get(`${socketId}`)!.serverError = data;
|
209
|
+
});
|
210
|
+
};
|
211
|
+
|
212
|
+
const onCloseCallback: WebSocketOnCloseCallback = (socketId, data) => {
|
213
|
+
if (typeof socketId !== 'number') return;
|
214
|
+
|
215
|
+
setNetworkRequests((draft: NetworkRequests<WebSocketRequest>) => {
|
216
|
+
if (!draft.get(`${socketId}`)) return draft;
|
217
|
+
|
218
|
+
draft.get(`${socketId}`)!.serverClose = data;
|
219
|
+
});
|
220
|
+
};
|
221
|
+
|
222
|
+
WebSocketInterceptor.instance
|
223
|
+
.setConnectCallback(connectCallback)
|
224
|
+
.setSendCallback(sendCallback)
|
225
|
+
.setCloseCallback(closeCallback)
|
226
|
+
.setOnOpenCallback(onOpenCallback)
|
227
|
+
.setOnMessageCallback(onMessageCallback)
|
228
|
+
.setOnErrorCallback(onErrorCallback)
|
229
|
+
.setOnCloseCallback(onCloseCallback)
|
230
|
+
.enableInterception();
|
231
|
+
}, [setNetworkRequests]);
|
232
|
+
|
233
|
+
const enableInterception = useCallback(() => {
|
234
|
+
if (_isInterceptorEnabled()) return;
|
235
|
+
|
236
|
+
enableHttpInterceptions();
|
237
|
+
enableWebSocketInterception();
|
238
|
+
setIsInterceptorEnabled(true);
|
239
|
+
}, [enableHttpInterceptions, enableWebSocketInterception]);
|
240
|
+
|
241
|
+
const disableInterception = useCallback(() => {
|
242
|
+
if (!_isInterceptorEnabled()) return;
|
243
|
+
|
244
|
+
XHRInterceptor.instance.disableInterception();
|
245
|
+
FetchInterceptor.instance.disableInterception();
|
246
|
+
WebSocketInterceptor.instance.disableInterception();
|
247
|
+
setIsInterceptorEnabled(false);
|
248
|
+
}, []);
|
249
|
+
|
250
|
+
useEffect(() => {
|
251
|
+
if (autoEnabled) enableInterception();
|
252
|
+
|
253
|
+
if (autoEnabled) return disableInterception;
|
254
|
+
}, [autoEnabled, disableInterception, enableInterception]);
|
255
|
+
|
256
|
+
return {
|
257
|
+
isInterceptorEnabled,
|
258
|
+
enableInterception,
|
259
|
+
disableInterception,
|
260
|
+
clearAllNetworkRequests,
|
261
|
+
networkRequests,
|
262
|
+
};
|
263
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import { useEffect, useRef } from 'react';
|
2
|
+
import type { FlatList } from 'react-native';
|
3
|
+
|
4
|
+
export default function useScrollToBottom(listSize: number) {
|
5
|
+
const currentSize = useRef(listSize);
|
6
|
+
const listRef = useRef<FlatList | null>(null);
|
7
|
+
|
8
|
+
useEffect(() => {
|
9
|
+
if (listSize <= currentSize.current) return;
|
10
|
+
|
11
|
+
currentSize.current = listSize;
|
12
|
+
|
13
|
+
const timer = setTimeout(() => {
|
14
|
+
if (listSize) listRef.current?.scrollToEnd();
|
15
|
+
}, 0);
|
16
|
+
|
17
|
+
return () => {
|
18
|
+
clearTimeout(timer);
|
19
|
+
};
|
20
|
+
}, [listSize]);
|
21
|
+
|
22
|
+
return listRef;
|
23
|
+
}
|
package/src/index.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export { default } from './ui/Xenon';
|
@@ -0,0 +1,115 @@
|
|
1
|
+
/* eslint-disable no-console */
|
2
|
+
import Interceptor from './Interceptor';
|
3
|
+
|
4
|
+
const originalConsoleError = console.error;
|
5
|
+
const originalConsoleInfo = console.info;
|
6
|
+
const originalConsoleLog = console.log;
|
7
|
+
const originalConsoleWarn = console.warn;
|
8
|
+
const originalConsoleTrace = console.trace;
|
9
|
+
const originalConsoleDebug = console.debug;
|
10
|
+
const originalConsoleTable = console.table;
|
11
|
+
const originalConsoleGroupCollapsed = console.groupCollapsed;
|
12
|
+
const originalConsoleGroupEnd = console.groupEnd;
|
13
|
+
const originalConsoleGroup = console.group;
|
14
|
+
|
15
|
+
export default class ConsoleInterceptor extends Interceptor {
|
16
|
+
static instance = new ConsoleInterceptor();
|
17
|
+
|
18
|
+
private constructor() {
|
19
|
+
super();
|
20
|
+
}
|
21
|
+
|
22
|
+
private callback: ((type: string, args: any[]) => void) | null = null;
|
23
|
+
|
24
|
+
setCallback(callback: typeof this.callback) {
|
25
|
+
this.callback = callback;
|
26
|
+
return this;
|
27
|
+
}
|
28
|
+
|
29
|
+
enableInterception(): void {
|
30
|
+
if (this.isInterceptorEnabled) return;
|
31
|
+
|
32
|
+
const callback = this.callback?.bind(this);
|
33
|
+
|
34
|
+
console.error = function (...args) {
|
35
|
+
callback?.('error', args);
|
36
|
+
|
37
|
+
originalConsoleError.call(this, ...args);
|
38
|
+
};
|
39
|
+
|
40
|
+
console.info = function (...args) {
|
41
|
+
callback?.('info', args);
|
42
|
+
|
43
|
+
originalConsoleInfo.call(this, ...args);
|
44
|
+
};
|
45
|
+
|
46
|
+
console.log = function (...args) {
|
47
|
+
callback?.('log', args);
|
48
|
+
|
49
|
+
originalConsoleLog.call(this, ...args);
|
50
|
+
};
|
51
|
+
|
52
|
+
console.warn = function (...args) {
|
53
|
+
callback?.('warn', args);
|
54
|
+
|
55
|
+
originalConsoleWarn.call(this, ...args);
|
56
|
+
};
|
57
|
+
|
58
|
+
console.trace = function (...args) {
|
59
|
+
callback?.('trace', args);
|
60
|
+
|
61
|
+
originalConsoleTrace.call(this, ...args);
|
62
|
+
};
|
63
|
+
|
64
|
+
console.debug = function (...args) {
|
65
|
+
callback?.('debug', args);
|
66
|
+
|
67
|
+
originalConsoleDebug.call(this, ...args);
|
68
|
+
};
|
69
|
+
|
70
|
+
console.table = function (...args) {
|
71
|
+
callback?.('table', args);
|
72
|
+
|
73
|
+
originalConsoleTable.call(this, ...(args as Parameters<typeof originalConsoleTable>));
|
74
|
+
};
|
75
|
+
|
76
|
+
console.groupCollapsed = function (...args) {
|
77
|
+
callback?.('groupCollapsed', args);
|
78
|
+
|
79
|
+
originalConsoleGroupCollapsed.call(this, ...args);
|
80
|
+
};
|
81
|
+
|
82
|
+
console.groupEnd = function (...args) {
|
83
|
+
callback?.('groupEnd', args);
|
84
|
+
|
85
|
+
originalConsoleGroupEnd.call(this, ...args);
|
86
|
+
};
|
87
|
+
|
88
|
+
console.group = function (...args) {
|
89
|
+
callback?.('group', args);
|
90
|
+
|
91
|
+
originalConsoleGroup.call(this, ...args);
|
92
|
+
};
|
93
|
+
|
94
|
+
this.isInterceptorEnabled = true;
|
95
|
+
}
|
96
|
+
|
97
|
+
disableInterception(): void {
|
98
|
+
if (!this.isInterceptorEnabled) return;
|
99
|
+
|
100
|
+
this.isInterceptorEnabled = false;
|
101
|
+
|
102
|
+
console.error = originalConsoleError;
|
103
|
+
console.info = originalConsoleInfo;
|
104
|
+
console.log = originalConsoleLog;
|
105
|
+
console.warn = originalConsoleWarn;
|
106
|
+
console.trace = originalConsoleTrace;
|
107
|
+
console.debug = originalConsoleDebug;
|
108
|
+
console.table = originalConsoleTable;
|
109
|
+
console.groupCollapsed = originalConsoleGroupCollapsed;
|
110
|
+
console.groupEnd = originalConsoleGroupEnd;
|
111
|
+
console.group = originalConsoleGroup;
|
112
|
+
|
113
|
+
this.callback = null;
|
114
|
+
}
|
115
|
+
}
|
@@ -0,0 +1,134 @@
|
|
1
|
+
import { NETWORK_REQUEST_HEADER } from '../constants';
|
2
|
+
import { NetworkType } from '../types';
|
3
|
+
import { keyValueToString, formatMethod, getHttpInterceptorId } from '../utils';
|
4
|
+
import HttpInterceptor from './HttpInterceptor';
|
5
|
+
|
6
|
+
const originalFetch = global.fetch;
|
7
|
+
|
8
|
+
export default class FetchInterceptor extends HttpInterceptor {
|
9
|
+
static instance = new FetchInterceptor();
|
10
|
+
|
11
|
+
private constructor() {
|
12
|
+
super();
|
13
|
+
}
|
14
|
+
|
15
|
+
enableInterception() {
|
16
|
+
if (this.isInterceptorEnabled) return;
|
17
|
+
|
18
|
+
const {
|
19
|
+
openCallback,
|
20
|
+
requestHeaderCallback,
|
21
|
+
sendCallback,
|
22
|
+
headerReceivedCallback,
|
23
|
+
responseCallback,
|
24
|
+
} = this.getCallbacks();
|
25
|
+
|
26
|
+
global.fetch = async function (input, init) {
|
27
|
+
const interceptionId = getHttpInterceptorId();
|
28
|
+
|
29
|
+
const requestHeaders = new Headers(init?.headers);
|
30
|
+
|
31
|
+
requestHeaders.append(NETWORK_REQUEST_HEADER, NetworkType.Fetch);
|
32
|
+
|
33
|
+
const requestInit: RequestInit = { ...init, headers: requestHeaders };
|
34
|
+
|
35
|
+
//#region open
|
36
|
+
const method = formatMethod(init?.method);
|
37
|
+
|
38
|
+
let url: string;
|
39
|
+
|
40
|
+
switch (true) {
|
41
|
+
case input instanceof Request:
|
42
|
+
url = input.url;
|
43
|
+
break;
|
44
|
+
case input instanceof URL:
|
45
|
+
url = input.href;
|
46
|
+
break;
|
47
|
+
default:
|
48
|
+
url = input;
|
49
|
+
}
|
50
|
+
|
51
|
+
openCallback?.(interceptionId, NetworkType.Fetch, method, url);
|
52
|
+
//#endregion
|
53
|
+
|
54
|
+
//#region requestHeader
|
55
|
+
const headers = requestInit?.headers;
|
56
|
+
if (headers) {
|
57
|
+
switch (true) {
|
58
|
+
case headers instanceof Headers:
|
59
|
+
for (const [headerKey, headerValue] of headers.entries()) {
|
60
|
+
requestHeaderCallback?.(interceptionId, headerKey, headerValue);
|
61
|
+
}
|
62
|
+
break;
|
63
|
+
case Array.isArray(headers):
|
64
|
+
for (const [headerKey, headerValue] of headers) {
|
65
|
+
if (headerKey && headerValue)
|
66
|
+
requestHeaderCallback?.(interceptionId, headerKey, headerValue);
|
67
|
+
}
|
68
|
+
break;
|
69
|
+
default:
|
70
|
+
for (const key in headers) {
|
71
|
+
if (headers[key]) requestHeaderCallback?.(interceptionId, key, headers[key]);
|
72
|
+
}
|
73
|
+
break;
|
74
|
+
}
|
75
|
+
}
|
76
|
+
//#endregion
|
77
|
+
|
78
|
+
//#region send
|
79
|
+
sendCallback?.(interceptionId, init?.body ?? null);
|
80
|
+
//#endregion
|
81
|
+
|
82
|
+
const response = await originalFetch.call(this, input, requestInit);
|
83
|
+
|
84
|
+
const clonedResponse = response.clone();
|
85
|
+
const clonedResponseHeaders = clonedResponse.headers;
|
86
|
+
|
87
|
+
//#region headerReceived
|
88
|
+
const contentTypeString = clonedResponseHeaders.get('Content-Type');
|
89
|
+
const contentLengthString = clonedResponseHeaders.get('Content-Length');
|
90
|
+
|
91
|
+
let responseContentType: string | undefined;
|
92
|
+
let responseSize: number | undefined;
|
93
|
+
let responseHeaders: string = '';
|
94
|
+
|
95
|
+
if (contentTypeString) responseContentType = contentTypeString.split(';')[0];
|
96
|
+
|
97
|
+
if (contentLengthString) responseSize = parseInt(contentLengthString, 10);
|
98
|
+
|
99
|
+
for (const [headerKey, headerValue] of clonedResponseHeaders.entries()) {
|
100
|
+
responseHeaders += keyValueToString(headerKey, headerValue);
|
101
|
+
}
|
102
|
+
|
103
|
+
headerReceivedCallback?.(interceptionId, responseContentType, responseSize, responseHeaders);
|
104
|
+
//#endregion
|
105
|
+
|
106
|
+
//#region response
|
107
|
+
const responseBody: string | null = await clonedResponse.text().catch(() => null);
|
108
|
+
|
109
|
+
responseCallback?.(
|
110
|
+
interceptionId,
|
111
|
+
clonedResponse.status,
|
112
|
+
0,
|
113
|
+
responseBody,
|
114
|
+
clonedResponse.url,
|
115
|
+
clonedResponse.type,
|
116
|
+
);
|
117
|
+
//#endregion
|
118
|
+
|
119
|
+
return response;
|
120
|
+
};
|
121
|
+
|
122
|
+
this.isInterceptorEnabled = true;
|
123
|
+
}
|
124
|
+
|
125
|
+
disableInterception() {
|
126
|
+
if (!this.isInterceptorEnabled) return;
|
127
|
+
|
128
|
+
this.isInterceptorEnabled = false;
|
129
|
+
|
130
|
+
global.fetch = originalFetch;
|
131
|
+
|
132
|
+
this.clearCallbacks();
|
133
|
+
}
|
134
|
+
}
|
@@ -0,0 +1,65 @@
|
|
1
|
+
import type {
|
2
|
+
HttpHeaderReceivedCallback,
|
3
|
+
HttpOpenCallback,
|
4
|
+
HttpRequestHeaderCallback,
|
5
|
+
HttpResponseCallback,
|
6
|
+
HttpSendCallback,
|
7
|
+
} from '../types';
|
8
|
+
import { NetworkInterceptor } from './NetworkInterceptor';
|
9
|
+
|
10
|
+
export default abstract class HttpInterceptor extends NetworkInterceptor {
|
11
|
+
protected openCallback: HttpOpenCallback = null;
|
12
|
+
protected requestHeaderCallback: HttpRequestHeaderCallback = null;
|
13
|
+
protected sendCallback: HttpSendCallback = null;
|
14
|
+
protected headerReceivedCallback: HttpHeaderReceivedCallback = null;
|
15
|
+
protected responseCallback: HttpResponseCallback = null;
|
16
|
+
|
17
|
+
setOpenCallback(callback: typeof this.openCallback) {
|
18
|
+
this.openCallback = callback;
|
19
|
+
return this;
|
20
|
+
}
|
21
|
+
|
22
|
+
setRequestHeaderCallback(callback: typeof this.requestHeaderCallback) {
|
23
|
+
this.requestHeaderCallback = callback;
|
24
|
+
return this;
|
25
|
+
}
|
26
|
+
|
27
|
+
setSendCallback(callback: typeof this.sendCallback) {
|
28
|
+
this.sendCallback = callback;
|
29
|
+
return this;
|
30
|
+
}
|
31
|
+
|
32
|
+
setHeaderReceivedCallback(callback: typeof this.headerReceivedCallback) {
|
33
|
+
this.headerReceivedCallback = callback;
|
34
|
+
return this;
|
35
|
+
}
|
36
|
+
|
37
|
+
setResponseCallback(callback: typeof this.responseCallback) {
|
38
|
+
this.responseCallback = callback;
|
39
|
+
return this;
|
40
|
+
}
|
41
|
+
|
42
|
+
protected getCallbacks() {
|
43
|
+
const openCallback = this.openCallback?.bind(this);
|
44
|
+
const requestHeaderCallback = this.requestHeaderCallback?.bind(this);
|
45
|
+
const sendCallback = this.sendCallback?.bind(this);
|
46
|
+
const headerReceivedCallback = this.headerReceivedCallback?.bind(this);
|
47
|
+
const responseCallback = this.responseCallback?.bind(this);
|
48
|
+
|
49
|
+
return {
|
50
|
+
openCallback,
|
51
|
+
requestHeaderCallback,
|
52
|
+
sendCallback,
|
53
|
+
headerReceivedCallback,
|
54
|
+
responseCallback,
|
55
|
+
};
|
56
|
+
}
|
57
|
+
|
58
|
+
protected clearCallbacks(): void {
|
59
|
+
this.openCallback = null;
|
60
|
+
this.requestHeaderCallback = null;
|
61
|
+
this.sendCallback = null;
|
62
|
+
this.headerReceivedCallback = null;
|
63
|
+
this.responseCallback = null;
|
64
|
+
}
|
65
|
+
}
|