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.
Files changed (367) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +62 -0
  3. package/lib/commonjs/assets/code.png +0 -0
  4. package/lib/commonjs/assets/delete.png +0 -0
  5. package/lib/commonjs/assets/hide.png +0 -0
  6. package/lib/commonjs/assets/move.png +0 -0
  7. package/lib/commonjs/assets/record.png +0 -0
  8. package/lib/commonjs/constants.js +8 -0
  9. package/lib/commonjs/constants.js.map +1 -0
  10. package/lib/commonjs/contexts/MainContext.js +10 -0
  11. package/lib/commonjs/contexts/MainContext.js.map +1 -0
  12. package/lib/commonjs/contexts/index.js +14 -0
  13. package/lib/commonjs/contexts/index.js.map +1 -0
  14. package/lib/commonjs/global.d.js +2 -0
  15. package/lib/commonjs/global.d.js.map +1 -0
  16. package/lib/commonjs/hooks/index.js +28 -0
  17. package/lib/commonjs/hooks/index.js.map +1 -0
  18. package/lib/commonjs/hooks/useConsoleInterceptor.js +49 -0
  19. package/lib/commonjs/hooks/useConsoleInterceptor.js.map +1 -0
  20. package/lib/commonjs/hooks/useNetworkInterceptor.js +162 -0
  21. package/lib/commonjs/hooks/useNetworkInterceptor.js.map +1 -0
  22. package/lib/commonjs/hooks/useScrollToBottom.js +23 -0
  23. package/lib/commonjs/hooks/useScrollToBottom.js.map +1 -0
  24. package/lib/commonjs/index.js +14 -0
  25. package/lib/commonjs/index.js.map +1 -0
  26. package/lib/commonjs/interceptors/ConsoleInterceptor.js +93 -0
  27. package/lib/commonjs/interceptors/ConsoleInterceptor.js.map +1 -0
  28. package/lib/commonjs/interceptors/FetchInterceptor.js +114 -0
  29. package/lib/commonjs/interceptors/FetchInterceptor.js.map +1 -0
  30. package/lib/commonjs/interceptors/HttpInterceptor.js +57 -0
  31. package/lib/commonjs/interceptors/HttpInterceptor.js.map +1 -0
  32. package/lib/commonjs/interceptors/Interceptor.js +11 -0
  33. package/lib/commonjs/interceptors/Interceptor.js.map +1 -0
  34. package/lib/commonjs/interceptors/NetworkInterceptor.js +11 -0
  35. package/lib/commonjs/interceptors/NetworkInterceptor.js.map +1 -0
  36. package/lib/commonjs/interceptors/WebSocketInterceptor.js +150 -0
  37. package/lib/commonjs/interceptors/WebSocketInterceptor.js.map +1 -0
  38. package/lib/commonjs/interceptors/XHRInterceptor.js +69 -0
  39. package/lib/commonjs/interceptors/XHRInterceptor.js.map +1 -0
  40. package/lib/commonjs/interceptors/index.js +35 -0
  41. package/lib/commonjs/interceptors/index.js.map +1 -0
  42. package/lib/commonjs/types/common.js +18 -0
  43. package/lib/commonjs/types/common.js.map +1 -0
  44. package/lib/commonjs/types/console.js +2 -0
  45. package/lib/commonjs/types/console.js.map +1 -0
  46. package/lib/commonjs/types/http.js +6 -0
  47. package/lib/commonjs/types/http.js.map +1 -0
  48. package/lib/commonjs/types/index.js +50 -0
  49. package/lib/commonjs/types/index.js.map +1 -0
  50. package/lib/commonjs/types/websocket.js +6 -0
  51. package/lib/commonjs/types/websocket.js.map +1 -0
  52. package/lib/commonjs/ui/Xenon.js +117 -0
  53. package/lib/commonjs/ui/Xenon.js.map +1 -0
  54. package/lib/commonjs/ui/components/bubble/Bubble.js +82 -0
  55. package/lib/commonjs/ui/components/bubble/Bubble.js.map +1 -0
  56. package/lib/commonjs/ui/components/details/DetailsViewer.js +33 -0
  57. package/lib/commonjs/ui/components/details/DetailsViewer.js.map +1 -0
  58. package/lib/commonjs/ui/components/details/LogMessageDetails.js +30 -0
  59. package/lib/commonjs/ui/components/details/LogMessageDetails.js.map +1 -0
  60. package/lib/commonjs/ui/components/details/NetworkRequestDetails.js +130 -0
  61. package/lib/commonjs/ui/components/details/NetworkRequestDetails.js.map +1 -0
  62. package/lib/commonjs/ui/components/headers/DebuggerHeader.js +94 -0
  63. package/lib/commonjs/ui/components/headers/DebuggerHeader.js.map +1 -0
  64. package/lib/commonjs/ui/components/headers/NetworkPanelHeader.js +68 -0
  65. package/lib/commonjs/ui/components/headers/NetworkPanelHeader.js.map +1 -0
  66. package/lib/commonjs/ui/components/headers/NetworkRequestDetailsHeader.js +65 -0
  67. package/lib/commonjs/ui/components/headers/NetworkRequestDetailsHeader.js.map +1 -0
  68. package/lib/commonjs/ui/components/index.js +42 -0
  69. package/lib/commonjs/ui/components/index.js.map +1 -0
  70. package/lib/commonjs/ui/components/items/ConsolePanelItem.js +35 -0
  71. package/lib/commonjs/ui/components/items/ConsolePanelItem.js.map +1 -0
  72. package/lib/commonjs/ui/components/items/DebuggerHeaderItem.js +54 -0
  73. package/lib/commonjs/ui/components/items/DebuggerHeaderItem.js.map +1 -0
  74. package/lib/commonjs/ui/components/items/NetworkPanelItem.js +76 -0
  75. package/lib/commonjs/ui/components/items/NetworkPanelItem.js.map +1 -0
  76. package/lib/commonjs/ui/components/items/NetworkRequestDetailsHeaderItem.js +47 -0
  77. package/lib/commonjs/ui/components/items/NetworkRequestDetailsHeaderItem.js.map +1 -0
  78. package/lib/commonjs/ui/components/items/NetworkRequestDetailsItem.js +41 -0
  79. package/lib/commonjs/ui/components/items/NetworkRequestDetailsItem.js.map +1 -0
  80. package/lib/commonjs/ui/components/panels/ConsolePanel.js +58 -0
  81. package/lib/commonjs/ui/components/panels/ConsolePanel.js.map +1 -0
  82. package/lib/commonjs/ui/components/panels/NetworkPanel.js +66 -0
  83. package/lib/commonjs/ui/components/panels/NetworkPanel.js.map +1 -0
  84. package/lib/commonjs/utils.js +46 -0
  85. package/lib/commonjs/utils.js.map +1 -0
  86. package/lib/module/assets/code.png +0 -0
  87. package/lib/module/assets/delete.png +0 -0
  88. package/lib/module/assets/hide.png +0 -0
  89. package/lib/module/assets/move.png +0 -0
  90. package/lib/module/assets/record.png +0 -0
  91. package/lib/module/constants.js +4 -0
  92. package/lib/module/constants.js.map +1 -0
  93. package/lib/module/contexts/MainContext.js +6 -0
  94. package/lib/module/contexts/MainContext.js.map +1 -0
  95. package/lib/module/contexts/index.js +4 -0
  96. package/lib/module/contexts/index.js.map +1 -0
  97. package/lib/module/global.d.js +2 -0
  98. package/lib/module/global.d.js.map +1 -0
  99. package/lib/module/hooks/index.js +6 -0
  100. package/lib/module/hooks/index.js.map +1 -0
  101. package/lib/module/hooks/useConsoleInterceptor.js +45 -0
  102. package/lib/module/hooks/useConsoleInterceptor.js.map +1 -0
  103. package/lib/module/hooks/useNetworkInterceptor.js +158 -0
  104. package/lib/module/hooks/useNetworkInterceptor.js.map +1 -0
  105. package/lib/module/hooks/useScrollToBottom.js +19 -0
  106. package/lib/module/hooks/useScrollToBottom.js.map +1 -0
  107. package/lib/module/index.js +4 -0
  108. package/lib/module/index.js.map +1 -0
  109. package/lib/module/interceptors/ConsoleInterceptor.js +86 -0
  110. package/lib/module/interceptors/ConsoleInterceptor.js.map +1 -0
  111. package/lib/module/interceptors/FetchInterceptor.js +108 -0
  112. package/lib/module/interceptors/FetchInterceptor.js.map +1 -0
  113. package/lib/module/interceptors/HttpInterceptor.js +52 -0
  114. package/lib/module/interceptors/HttpInterceptor.js.map +1 -0
  115. package/lib/module/interceptors/Interceptor.js +6 -0
  116. package/lib/module/interceptors/Interceptor.js.map +1 -0
  117. package/lib/module/interceptors/NetworkInterceptor.js +5 -0
  118. package/lib/module/interceptors/NetworkInterceptor.js.map +1 -0
  119. package/lib/module/interceptors/WebSocketInterceptor.js +144 -0
  120. package/lib/module/interceptors/WebSocketInterceptor.js.map +1 -0
  121. package/lib/module/interceptors/XHRInterceptor.js +63 -0
  122. package/lib/module/interceptors/XHRInterceptor.js.map +1 -0
  123. package/lib/module/interceptors/index.js +7 -0
  124. package/lib/module/interceptors/index.js.map +1 -0
  125. package/lib/module/types/common.js +14 -0
  126. package/lib/module/types/common.js.map +1 -0
  127. package/lib/module/types/console.js +2 -0
  128. package/lib/module/types/console.js.map +1 -0
  129. package/lib/module/types/http.js +4 -0
  130. package/lib/module/types/http.js.map +1 -0
  131. package/lib/module/types/index.js +7 -0
  132. package/lib/module/types/index.js.map +1 -0
  133. package/lib/module/types/websocket.js +4 -0
  134. package/lib/module/types/websocket.js.map +1 -0
  135. package/lib/module/ui/Xenon.js +112 -0
  136. package/lib/module/ui/Xenon.js.map +1 -0
  137. package/lib/module/ui/components/bubble/Bubble.js +78 -0
  138. package/lib/module/ui/components/bubble/Bubble.js.map +1 -0
  139. package/lib/module/ui/components/details/DetailsViewer.js +28 -0
  140. package/lib/module/ui/components/details/DetailsViewer.js.map +1 -0
  141. package/lib/module/ui/components/details/LogMessageDetails.js +26 -0
  142. package/lib/module/ui/components/details/LogMessageDetails.js.map +1 -0
  143. package/lib/module/ui/components/details/NetworkRequestDetails.js +125 -0
  144. package/lib/module/ui/components/details/NetworkRequestDetails.js.map +1 -0
  145. package/lib/module/ui/components/headers/DebuggerHeader.js +89 -0
  146. package/lib/module/ui/components/headers/DebuggerHeader.js.map +1 -0
  147. package/lib/module/ui/components/headers/NetworkPanelHeader.js +64 -0
  148. package/lib/module/ui/components/headers/NetworkPanelHeader.js.map +1 -0
  149. package/lib/module/ui/components/headers/NetworkRequestDetailsHeader.js +60 -0
  150. package/lib/module/ui/components/headers/NetworkRequestDetailsHeader.js.map +1 -0
  151. package/lib/module/ui/components/index.js +8 -0
  152. package/lib/module/ui/components/index.js.map +1 -0
  153. package/lib/module/ui/components/items/ConsolePanelItem.js +31 -0
  154. package/lib/module/ui/components/items/ConsolePanelItem.js.map +1 -0
  155. package/lib/module/ui/components/items/DebuggerHeaderItem.js +50 -0
  156. package/lib/module/ui/components/items/DebuggerHeaderItem.js.map +1 -0
  157. package/lib/module/ui/components/items/NetworkPanelItem.js +72 -0
  158. package/lib/module/ui/components/items/NetworkPanelItem.js.map +1 -0
  159. package/lib/module/ui/components/items/NetworkRequestDetailsHeaderItem.js +43 -0
  160. package/lib/module/ui/components/items/NetworkRequestDetailsHeaderItem.js.map +1 -0
  161. package/lib/module/ui/components/items/NetworkRequestDetailsItem.js +37 -0
  162. package/lib/module/ui/components/items/NetworkRequestDetailsItem.js.map +1 -0
  163. package/lib/module/ui/components/panels/ConsolePanel.js +53 -0
  164. package/lib/module/ui/components/panels/ConsolePanel.js.map +1 -0
  165. package/lib/module/ui/components/panels/NetworkPanel.js +61 -0
  166. package/lib/module/ui/components/panels/NetworkPanel.js.map +1 -0
  167. package/lib/module/utils.js +35 -0
  168. package/lib/module/utils.js.map +1 -0
  169. package/lib/typescript/commonjs/package.json +1 -0
  170. package/lib/typescript/commonjs/src/constants.d.ts +2 -0
  171. package/lib/typescript/commonjs/src/constants.d.ts.map +1 -0
  172. package/lib/typescript/commonjs/src/contexts/MainContext.d.ts +24 -0
  173. package/lib/typescript/commonjs/src/contexts/MainContext.d.ts.map +1 -0
  174. package/lib/typescript/commonjs/src/contexts/index.d.ts +2 -0
  175. package/lib/typescript/commonjs/src/contexts/index.d.ts.map +1 -0
  176. package/lib/typescript/commonjs/src/hooks/index.d.ts +4 -0
  177. package/lib/typescript/commonjs/src/hooks/index.d.ts.map +1 -0
  178. package/lib/typescript/commonjs/src/hooks/useConsoleInterceptor.d.ts +13 -0
  179. package/lib/typescript/commonjs/src/hooks/useConsoleInterceptor.d.ts.map +1 -0
  180. package/lib/typescript/commonjs/src/hooks/useNetworkInterceptor.d.ts +12 -0
  181. package/lib/typescript/commonjs/src/hooks/useNetworkInterceptor.d.ts.map +1 -0
  182. package/lib/typescript/commonjs/src/hooks/useScrollToBottom.d.ts +3 -0
  183. package/lib/typescript/commonjs/src/hooks/useScrollToBottom.d.ts.map +1 -0
  184. package/lib/typescript/commonjs/src/index.d.ts +2 -0
  185. package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
  186. package/lib/typescript/commonjs/src/interceptors/ConsoleInterceptor.d.ts +10 -0
  187. package/lib/typescript/commonjs/src/interceptors/ConsoleInterceptor.d.ts.map +1 -0
  188. package/lib/typescript/commonjs/src/interceptors/FetchInterceptor.d.ts +8 -0
  189. package/lib/typescript/commonjs/src/interceptors/FetchInterceptor.d.ts.map +1 -0
  190. package/lib/typescript/commonjs/src/interceptors/HttpInterceptor.d.ts +23 -0
  191. package/lib/typescript/commonjs/src/interceptors/HttpInterceptor.d.ts.map +1 -0
  192. package/lib/typescript/commonjs/src/interceptors/Interceptor.d.ts +6 -0
  193. package/lib/typescript/commonjs/src/interceptors/Interceptor.d.ts.map +1 -0
  194. package/lib/typescript/commonjs/src/interceptors/NetworkInterceptor.d.ts +6 -0
  195. package/lib/typescript/commonjs/src/interceptors/NetworkInterceptor.d.ts.map +1 -0
  196. package/lib/typescript/commonjs/src/interceptors/WebSocketInterceptor.d.ts +34 -0
  197. package/lib/typescript/commonjs/src/interceptors/WebSocketInterceptor.d.ts.map +1 -0
  198. package/lib/typescript/commonjs/src/interceptors/XHRInterceptor.d.ts +8 -0
  199. package/lib/typescript/commonjs/src/interceptors/XHRInterceptor.d.ts.map +1 -0
  200. package/lib/typescript/commonjs/src/interceptors/index.d.ts +5 -0
  201. package/lib/typescript/commonjs/src/interceptors/index.d.ts.map +1 -0
  202. package/lib/typescript/commonjs/src/types/common.d.ts +19 -0
  203. package/lib/typescript/commonjs/src/types/common.d.ts.map +1 -0
  204. package/lib/typescript/commonjs/src/types/console.d.ts +5 -0
  205. package/lib/typescript/commonjs/src/types/console.d.ts.map +1 -0
  206. package/lib/typescript/commonjs/src/types/http.d.ts +21 -0
  207. package/lib/typescript/commonjs/src/types/http.d.ts.map +1 -0
  208. package/lib/typescript/commonjs/src/types/index.d.ts +5 -0
  209. package/lib/typescript/commonjs/src/types/index.d.ts.map +1 -0
  210. package/lib/typescript/commonjs/src/types/websocket.d.ts +29 -0
  211. package/lib/typescript/commonjs/src/types/websocket.d.ts.map +1 -0
  212. package/lib/typescript/commonjs/src/ui/Xenon.d.ts +16 -0
  213. package/lib/typescript/commonjs/src/ui/Xenon.d.ts.map +1 -0
  214. package/lib/typescript/commonjs/src/ui/components/bubble/Bubble.d.ts +9 -0
  215. package/lib/typescript/commonjs/src/ui/components/bubble/Bubble.d.ts.map +1 -0
  216. package/lib/typescript/commonjs/src/ui/components/details/DetailsViewer.d.ts +2 -0
  217. package/lib/typescript/commonjs/src/ui/components/details/DetailsViewer.d.ts.map +1 -0
  218. package/lib/typescript/commonjs/src/ui/components/details/LogMessageDetails.d.ts +7 -0
  219. package/lib/typescript/commonjs/src/ui/components/details/LogMessageDetails.d.ts.map +1 -0
  220. package/lib/typescript/commonjs/src/ui/components/details/NetworkRequestDetails.d.ts +7 -0
  221. package/lib/typescript/commonjs/src/ui/components/details/NetworkRequestDetails.d.ts.map +1 -0
  222. package/lib/typescript/commonjs/src/ui/components/headers/DebuggerHeader.d.ts +2 -0
  223. package/lib/typescript/commonjs/src/ui/components/headers/DebuggerHeader.d.ts.map +1 -0
  224. package/lib/typescript/commonjs/src/ui/components/headers/NetworkPanelHeader.d.ts +2 -0
  225. package/lib/typescript/commonjs/src/ui/components/headers/NetworkPanelHeader.d.ts.map +1 -0
  226. package/lib/typescript/commonjs/src/ui/components/headers/NetworkRequestDetailsHeader.d.ts +13 -0
  227. package/lib/typescript/commonjs/src/ui/components/headers/NetworkRequestDetailsHeader.d.ts.map +1 -0
  228. package/lib/typescript/commonjs/src/ui/components/index.d.ts +6 -0
  229. package/lib/typescript/commonjs/src/ui/components/index.d.ts.map +1 -0
  230. package/lib/typescript/commonjs/src/ui/components/items/ConsolePanelItem.d.ts +7 -0
  231. package/lib/typescript/commonjs/src/ui/components/items/ConsolePanelItem.d.ts.map +1 -0
  232. package/lib/typescript/commonjs/src/ui/components/items/DebuggerHeaderItem.d.ts +10 -0
  233. package/lib/typescript/commonjs/src/ui/components/items/DebuggerHeaderItem.d.ts.map +1 -0
  234. package/lib/typescript/commonjs/src/ui/components/items/NetworkPanelItem.d.ts +10 -0
  235. package/lib/typescript/commonjs/src/ui/components/items/NetworkPanelItem.d.ts.map +1 -0
  236. package/lib/typescript/commonjs/src/ui/components/items/NetworkRequestDetailsHeaderItem.d.ts +11 -0
  237. package/lib/typescript/commonjs/src/ui/components/items/NetworkRequestDetailsHeaderItem.d.ts.map +1 -0
  238. package/lib/typescript/commonjs/src/ui/components/items/NetworkRequestDetailsItem.d.ts +8 -0
  239. package/lib/typescript/commonjs/src/ui/components/items/NetworkRequestDetailsItem.d.ts.map +1 -0
  240. package/lib/typescript/commonjs/src/ui/components/panels/ConsolePanel.d.ts +2 -0
  241. package/lib/typescript/commonjs/src/ui/components/panels/ConsolePanel.d.ts.map +1 -0
  242. package/lib/typescript/commonjs/src/ui/components/panels/NetworkPanel.d.ts +2 -0
  243. package/lib/typescript/commonjs/src/ui/components/panels/NetworkPanel.d.ts.map +1 -0
  244. package/lib/typescript/commonjs/src/utils.d.ts +9 -0
  245. package/lib/typescript/commonjs/src/utils.d.ts.map +1 -0
  246. package/lib/typescript/module/package.json +1 -0
  247. package/lib/typescript/module/src/constants.d.ts +2 -0
  248. package/lib/typescript/module/src/constants.d.ts.map +1 -0
  249. package/lib/typescript/module/src/contexts/MainContext.d.ts +24 -0
  250. package/lib/typescript/module/src/contexts/MainContext.d.ts.map +1 -0
  251. package/lib/typescript/module/src/contexts/index.d.ts +2 -0
  252. package/lib/typescript/module/src/contexts/index.d.ts.map +1 -0
  253. package/lib/typescript/module/src/hooks/index.d.ts +4 -0
  254. package/lib/typescript/module/src/hooks/index.d.ts.map +1 -0
  255. package/lib/typescript/module/src/hooks/useConsoleInterceptor.d.ts +13 -0
  256. package/lib/typescript/module/src/hooks/useConsoleInterceptor.d.ts.map +1 -0
  257. package/lib/typescript/module/src/hooks/useNetworkInterceptor.d.ts +12 -0
  258. package/lib/typescript/module/src/hooks/useNetworkInterceptor.d.ts.map +1 -0
  259. package/lib/typescript/module/src/hooks/useScrollToBottom.d.ts +3 -0
  260. package/lib/typescript/module/src/hooks/useScrollToBottom.d.ts.map +1 -0
  261. package/lib/typescript/module/src/index.d.ts +2 -0
  262. package/lib/typescript/module/src/index.d.ts.map +1 -0
  263. package/lib/typescript/module/src/interceptors/ConsoleInterceptor.d.ts +10 -0
  264. package/lib/typescript/module/src/interceptors/ConsoleInterceptor.d.ts.map +1 -0
  265. package/lib/typescript/module/src/interceptors/FetchInterceptor.d.ts +8 -0
  266. package/lib/typescript/module/src/interceptors/FetchInterceptor.d.ts.map +1 -0
  267. package/lib/typescript/module/src/interceptors/HttpInterceptor.d.ts +23 -0
  268. package/lib/typescript/module/src/interceptors/HttpInterceptor.d.ts.map +1 -0
  269. package/lib/typescript/module/src/interceptors/Interceptor.d.ts +6 -0
  270. package/lib/typescript/module/src/interceptors/Interceptor.d.ts.map +1 -0
  271. package/lib/typescript/module/src/interceptors/NetworkInterceptor.d.ts +6 -0
  272. package/lib/typescript/module/src/interceptors/NetworkInterceptor.d.ts.map +1 -0
  273. package/lib/typescript/module/src/interceptors/WebSocketInterceptor.d.ts +34 -0
  274. package/lib/typescript/module/src/interceptors/WebSocketInterceptor.d.ts.map +1 -0
  275. package/lib/typescript/module/src/interceptors/XHRInterceptor.d.ts +8 -0
  276. package/lib/typescript/module/src/interceptors/XHRInterceptor.d.ts.map +1 -0
  277. package/lib/typescript/module/src/interceptors/index.d.ts +5 -0
  278. package/lib/typescript/module/src/interceptors/index.d.ts.map +1 -0
  279. package/lib/typescript/module/src/types/common.d.ts +19 -0
  280. package/lib/typescript/module/src/types/common.d.ts.map +1 -0
  281. package/lib/typescript/module/src/types/console.d.ts +5 -0
  282. package/lib/typescript/module/src/types/console.d.ts.map +1 -0
  283. package/lib/typescript/module/src/types/http.d.ts +21 -0
  284. package/lib/typescript/module/src/types/http.d.ts.map +1 -0
  285. package/lib/typescript/module/src/types/index.d.ts +5 -0
  286. package/lib/typescript/module/src/types/index.d.ts.map +1 -0
  287. package/lib/typescript/module/src/types/websocket.d.ts +29 -0
  288. package/lib/typescript/module/src/types/websocket.d.ts.map +1 -0
  289. package/lib/typescript/module/src/ui/Xenon.d.ts +16 -0
  290. package/lib/typescript/module/src/ui/Xenon.d.ts.map +1 -0
  291. package/lib/typescript/module/src/ui/components/bubble/Bubble.d.ts +9 -0
  292. package/lib/typescript/module/src/ui/components/bubble/Bubble.d.ts.map +1 -0
  293. package/lib/typescript/module/src/ui/components/details/DetailsViewer.d.ts +2 -0
  294. package/lib/typescript/module/src/ui/components/details/DetailsViewer.d.ts.map +1 -0
  295. package/lib/typescript/module/src/ui/components/details/LogMessageDetails.d.ts +7 -0
  296. package/lib/typescript/module/src/ui/components/details/LogMessageDetails.d.ts.map +1 -0
  297. package/lib/typescript/module/src/ui/components/details/NetworkRequestDetails.d.ts +7 -0
  298. package/lib/typescript/module/src/ui/components/details/NetworkRequestDetails.d.ts.map +1 -0
  299. package/lib/typescript/module/src/ui/components/headers/DebuggerHeader.d.ts +2 -0
  300. package/lib/typescript/module/src/ui/components/headers/DebuggerHeader.d.ts.map +1 -0
  301. package/lib/typescript/module/src/ui/components/headers/NetworkPanelHeader.d.ts +2 -0
  302. package/lib/typescript/module/src/ui/components/headers/NetworkPanelHeader.d.ts.map +1 -0
  303. package/lib/typescript/module/src/ui/components/headers/NetworkRequestDetailsHeader.d.ts +13 -0
  304. package/lib/typescript/module/src/ui/components/headers/NetworkRequestDetailsHeader.d.ts.map +1 -0
  305. package/lib/typescript/module/src/ui/components/index.d.ts +6 -0
  306. package/lib/typescript/module/src/ui/components/index.d.ts.map +1 -0
  307. package/lib/typescript/module/src/ui/components/items/ConsolePanelItem.d.ts +7 -0
  308. package/lib/typescript/module/src/ui/components/items/ConsolePanelItem.d.ts.map +1 -0
  309. package/lib/typescript/module/src/ui/components/items/DebuggerHeaderItem.d.ts +10 -0
  310. package/lib/typescript/module/src/ui/components/items/DebuggerHeaderItem.d.ts.map +1 -0
  311. package/lib/typescript/module/src/ui/components/items/NetworkPanelItem.d.ts +10 -0
  312. package/lib/typescript/module/src/ui/components/items/NetworkPanelItem.d.ts.map +1 -0
  313. package/lib/typescript/module/src/ui/components/items/NetworkRequestDetailsHeaderItem.d.ts +11 -0
  314. package/lib/typescript/module/src/ui/components/items/NetworkRequestDetailsHeaderItem.d.ts.map +1 -0
  315. package/lib/typescript/module/src/ui/components/items/NetworkRequestDetailsItem.d.ts +8 -0
  316. package/lib/typescript/module/src/ui/components/items/NetworkRequestDetailsItem.d.ts.map +1 -0
  317. package/lib/typescript/module/src/ui/components/panels/ConsolePanel.d.ts +2 -0
  318. package/lib/typescript/module/src/ui/components/panels/ConsolePanel.d.ts.map +1 -0
  319. package/lib/typescript/module/src/ui/components/panels/NetworkPanel.d.ts +2 -0
  320. package/lib/typescript/module/src/ui/components/panels/NetworkPanel.d.ts.map +1 -0
  321. package/lib/typescript/module/src/utils.d.ts +9 -0
  322. package/lib/typescript/module/src/utils.d.ts.map +1 -0
  323. package/package.json +219 -0
  324. package/src/assets/code.png +0 -0
  325. package/src/assets/delete.png +0 -0
  326. package/src/assets/hide.png +0 -0
  327. package/src/assets/move.png +0 -0
  328. package/src/assets/record.png +0 -0
  329. package/src/constants.ts +1 -0
  330. package/src/contexts/MainContext.ts +34 -0
  331. package/src/contexts/index.ts +1 -0
  332. package/src/global.d.ts +29 -0
  333. package/src/hooks/index.ts +3 -0
  334. package/src/hooks/useConsoleInterceptor.ts +58 -0
  335. package/src/hooks/useNetworkInterceptor.ts +263 -0
  336. package/src/hooks/useScrollToBottom.ts +23 -0
  337. package/src/index.ts +1 -0
  338. package/src/interceptors/ConsoleInterceptor.ts +115 -0
  339. package/src/interceptors/FetchInterceptor.ts +134 -0
  340. package/src/interceptors/HttpInterceptor.ts +65 -0
  341. package/src/interceptors/Interceptor.ts +6 -0
  342. package/src/interceptors/NetworkInterceptor.ts +6 -0
  343. package/src/interceptors/WebSocketInterceptor.ts +189 -0
  344. package/src/interceptors/XHRInterceptor.ts +97 -0
  345. package/src/interceptors/index.ts +4 -0
  346. package/src/types/common.ts +26 -0
  347. package/src/types/console.ts +4 -0
  348. package/src/types/http.ts +44 -0
  349. package/src/types/index.ts +4 -0
  350. package/src/types/websocket.ts +46 -0
  351. package/src/ui/Xenon.tsx +149 -0
  352. package/src/ui/components/bubble/Bubble.tsx +93 -0
  353. package/src/ui/components/details/DetailsViewer.tsx +20 -0
  354. package/src/ui/components/details/LogMessageDetails.tsx +26 -0
  355. package/src/ui/components/details/NetworkRequestDetails.tsx +140 -0
  356. package/src/ui/components/headers/DebuggerHeader.tsx +112 -0
  357. package/src/ui/components/headers/NetworkPanelHeader.tsx +58 -0
  358. package/src/ui/components/headers/NetworkRequestDetailsHeader.tsx +91 -0
  359. package/src/ui/components/index.ts +5 -0
  360. package/src/ui/components/items/ConsolePanelItem.tsx +28 -0
  361. package/src/ui/components/items/DebuggerHeaderItem.tsx +65 -0
  362. package/src/ui/components/items/NetworkPanelItem.tsx +71 -0
  363. package/src/ui/components/items/NetworkRequestDetailsHeaderItem.tsx +52 -0
  364. package/src/ui/components/items/NetworkRequestDetailsItem.tsx +43 -0
  365. package/src/ui/components/panels/ConsolePanel.tsx +55 -0
  366. package/src/ui/components/panels/NetworkPanel.tsx +64 -0
  367. package/src/utils.ts +54 -0
@@ -0,0 +1,189 @@
1
+ import { NativeEventEmitter, type EmitterSubscription } from 'react-native';
2
+ import NativeWebSocketModule from 'react-native/Libraries/WebSocket/NativeWebSocketModule';
3
+ import type {
4
+ WebSocketCloseCallback,
5
+ WebSocketConnectCallback,
6
+ WebSocketOnCloseCallback,
7
+ WebSocketOnErrorCallback,
8
+ WebSocketOnMessageCallback,
9
+ WebSocketOnOpenCallback,
10
+ WebSocketSendCallback,
11
+ } from '../types';
12
+ import { NetworkInterceptor } from './NetworkInterceptor';
13
+
14
+ const originalWebSocketConnect = NativeWebSocketModule.connect;
15
+ const originalWebSocketSend = NativeWebSocketModule.send;
16
+ const originalWebSocketSendBinary = NativeWebSocketModule.sendBinary;
17
+ const originalWebSocketClose = NativeWebSocketModule.close;
18
+
19
+ export default class WebSocketInterceptor extends NetworkInterceptor {
20
+ static instance = new WebSocketInterceptor();
21
+
22
+ private constructor() {
23
+ super();
24
+ }
25
+
26
+ private connectCallback: WebSocketConnectCallback = null;
27
+ private sendCallback: WebSocketSendCallback = null;
28
+ private closeCallback: WebSocketCloseCallback = null;
29
+ private onOpenCallback: WebSocketOnOpenCallback = null;
30
+ private onMessageCallback: WebSocketOnMessageCallback = null;
31
+ private onErrorCallback: WebSocketOnErrorCallback = null;
32
+ private onCloseCallback: WebSocketOnCloseCallback = null;
33
+
34
+ setConnectCallback(callback: typeof this.connectCallback) {
35
+ this.connectCallback = callback;
36
+ return this;
37
+ }
38
+
39
+ setSendCallback(callback: typeof this.sendCallback) {
40
+ this.sendCallback = callback;
41
+ return this;
42
+ }
43
+
44
+ setCloseCallback(callback: typeof this.closeCallback) {
45
+ this.closeCallback = callback;
46
+ return this;
47
+ }
48
+
49
+ setOnOpenCallback(callback: typeof this.onOpenCallback) {
50
+ this.onOpenCallback = callback;
51
+ return this;
52
+ }
53
+
54
+ setOnMessageCallback(callback: typeof this.onMessageCallback) {
55
+ this.onMessageCallback = callback;
56
+ return this;
57
+ }
58
+
59
+ setOnErrorCallback(callback: typeof this.onErrorCallback) {
60
+ this.onErrorCallback = callback;
61
+ return this;
62
+ }
63
+
64
+ setOnCloseCallback(callback: typeof this.onCloseCallback) {
65
+ this.onCloseCallback = callback;
66
+ return this;
67
+ }
68
+
69
+ protected getCallbacks() {
70
+ const connectCallback = this.connectCallback?.bind(this);
71
+ const sendCallback = this.sendCallback?.bind(this);
72
+ const closeCallback = this.closeCallback?.bind(this);
73
+ const arrayBufferToString = this.arrayBufferToString?.bind(this);
74
+
75
+ return {
76
+ connectCallback,
77
+ sendCallback,
78
+ closeCallback,
79
+ arrayBufferToString,
80
+ };
81
+ }
82
+
83
+ protected clearCallbacks(): void {
84
+ this.connectCallback = null;
85
+ this.sendCallback = null;
86
+ this.closeCallback = null;
87
+ this.onOpenCallback = null;
88
+ this.onMessageCallback = null;
89
+ this.onErrorCallback = null;
90
+ this.onCloseCallback = null;
91
+ }
92
+
93
+ private eventEmitter: NativeEventEmitter | null = null;
94
+ private subscriptions: EmitterSubscription[] = [];
95
+
96
+ private arrayBufferToString(data?: string) {
97
+ try {
98
+ if (!data) return '(no input)';
99
+
100
+ const byteArray = Buffer.from(data, 'base64');
101
+
102
+ if (byteArray.length === 0) return '(empty array)';
103
+
104
+ return `ArrayBuffer { length: ${byteArray.length}, values: [${byteArray.join(', ')}] }`;
105
+ } catch (error) {
106
+ return `(invalid data: ${error instanceof Error ? error.message : error})`;
107
+ }
108
+ }
109
+
110
+ private registerEvents(): void {
111
+ if (!this.eventEmitter) return;
112
+
113
+ this.subscriptions = [
114
+ this.eventEmitter.addListener('websocketOpen', ev => {
115
+ this.onOpenCallback?.(ev.id);
116
+ }),
117
+ this.eventEmitter.addListener('websocketMessage', ev => {
118
+ this.onMessageCallback?.(
119
+ ev.id,
120
+ ev.type === 'binary' ? this.arrayBufferToString(ev.data) : ev.data,
121
+ );
122
+ }),
123
+ this.eventEmitter.addListener('websocketClosed', ev => {
124
+ this.onCloseCallback?.(ev.id, { code: ev.code, reason: ev.reason });
125
+ }),
126
+ this.eventEmitter.addListener('websocketFailed', ev => {
127
+ this.onErrorCallback?.(ev.id, { message: ev.message });
128
+ }),
129
+ ];
130
+ }
131
+
132
+ private unregisterEvents() {
133
+ this.subscriptions.forEach(e => e.remove());
134
+ this.subscriptions = [];
135
+ this.eventEmitter = null;
136
+ }
137
+
138
+ enableInterception(): void {
139
+ if (this.isInterceptorEnabled) return;
140
+
141
+ this.eventEmitter = new NativeEventEmitter(NativeWebSocketModule);
142
+
143
+ this.registerEvents();
144
+
145
+ const { connectCallback, sendCallback, closeCallback, arrayBufferToString } =
146
+ this.getCallbacks();
147
+
148
+ NativeWebSocketModule.connect = function (...args) {
149
+ connectCallback?.(...args);
150
+
151
+ originalWebSocketConnect.call(this, ...args);
152
+ };
153
+
154
+ NativeWebSocketModule.send = function (...args) {
155
+ sendCallback?.(...args);
156
+
157
+ originalWebSocketSend.call(this, ...args);
158
+ };
159
+
160
+ NativeWebSocketModule.sendBinary = function (data, socketId) {
161
+ sendCallback?.(arrayBufferToString(data), socketId);
162
+
163
+ originalWebSocketSendBinary.call(this, data, socketId);
164
+ };
165
+
166
+ NativeWebSocketModule.close = function (code, reason, socketId) {
167
+ closeCallback?.(code, reason, socketId);
168
+
169
+ originalWebSocketClose.call(this, code, reason, socketId);
170
+ };
171
+
172
+ this.isInterceptorEnabled = true;
173
+ }
174
+
175
+ disableInterception(): void {
176
+ if (!this.isInterceptorEnabled) return;
177
+
178
+ this.isInterceptorEnabled = false;
179
+
180
+ NativeWebSocketModule.connect = originalWebSocketConnect;
181
+ NativeWebSocketModule.send = originalWebSocketSend;
182
+ NativeWebSocketModule.sendBinary = originalWebSocketSendBinary;
183
+ NativeWebSocketModule.close = originalWebSocketClose;
184
+
185
+ this.clearCallbacks();
186
+
187
+ this.unregisterEvents();
188
+ }
189
+ }
@@ -0,0 +1,97 @@
1
+ import { NetworkType } from '../types';
2
+ import { getHttpInterceptorId } from '../utils';
3
+ import HttpInterceptor from './HttpInterceptor';
4
+
5
+ const originalXHROpen = XMLHttpRequest.prototype.open;
6
+ const originalXHRSend = XMLHttpRequest.prototype.send;
7
+ const originalXHRSetRequestHeader = XMLHttpRequest.prototype.setRequestHeader;
8
+
9
+ export default class XHRInterceptor extends HttpInterceptor {
10
+ static instance = new XHRInterceptor();
11
+
12
+ private constructor() {
13
+ super();
14
+ }
15
+
16
+ enableInterception() {
17
+ if (this.isInterceptorEnabled) return;
18
+
19
+ const {
20
+ openCallback,
21
+ requestHeaderCallback,
22
+ sendCallback,
23
+ headerReceivedCallback,
24
+ responseCallback,
25
+ } = this.getCallbacks();
26
+
27
+ const isInterceptorEnabled = () => this.isInterceptorEnabled;
28
+
29
+ XMLHttpRequest.prototype.open = function (method, url, ...args) {
30
+ this._interceptionId = getHttpInterceptorId();
31
+
32
+ openCallback?.(this._interceptionId, NetworkType.XHR, method, url);
33
+
34
+ originalXHROpen.call(this, method, url, ...args);
35
+ };
36
+
37
+ XMLHttpRequest.prototype.setRequestHeader = function (header, value) {
38
+ requestHeaderCallback?.(this._interceptionId, header, value);
39
+
40
+ originalXHRSetRequestHeader.call(this, header, value);
41
+ };
42
+
43
+ XMLHttpRequest.prototype.send = function (data) {
44
+ sendCallback?.(this._interceptionId, data);
45
+
46
+ this.addEventListener?.('readystatechange', () => {
47
+ if (!isInterceptorEnabled()) return;
48
+
49
+ if (this.readyState === this.HEADERS_RECEIVED) {
50
+ const contentTypeString = this.getResponseHeader('Content-Type');
51
+ const contentLengthString = this.getResponseHeader('Content-Length');
52
+
53
+ let responseContentType: string | undefined;
54
+ let responseSize: number | undefined;
55
+
56
+ if (contentTypeString) responseContentType = contentTypeString.split(';')[0];
57
+
58
+ if (contentLengthString) responseSize = parseInt(contentLengthString, 10);
59
+
60
+ headerReceivedCallback?.(
61
+ this._interceptionId,
62
+ responseContentType,
63
+ responseSize,
64
+ this.getAllResponseHeaders(),
65
+ );
66
+ }
67
+
68
+ if (this.readyState === this.DONE) {
69
+ responseCallback?.(
70
+ this._interceptionId,
71
+ this.status,
72
+ this.timeout,
73
+ this.response,
74
+ this.responseURL,
75
+ this.responseType,
76
+ );
77
+ }
78
+ });
79
+
80
+ originalXHRSend.call(this, data);
81
+ };
82
+
83
+ this.isInterceptorEnabled = true;
84
+ }
85
+
86
+ disableInterception() {
87
+ if (!this.isInterceptorEnabled) return;
88
+
89
+ this.isInterceptorEnabled = false;
90
+
91
+ XMLHttpRequest.prototype.send = originalXHRSend;
92
+ XMLHttpRequest.prototype.open = originalXHROpen;
93
+ XMLHttpRequest.prototype.setRequestHeader = originalXHRSetRequestHeader;
94
+
95
+ this.clearCallbacks();
96
+ }
97
+ }
@@ -0,0 +1,4 @@
1
+ export { default as ConsoleInterceptor } from './ConsoleInterceptor';
2
+ export { default as FetchInterceptor } from './FetchInterceptor';
3
+ export { default as WebSocketInterceptor } from './WebSocketInterceptor';
4
+ export { default as XHRInterceptor } from './XHRInterceptor';
@@ -0,0 +1,26 @@
1
+ import type { Dispatch, SetStateAction } from 'react';
2
+
3
+ export enum NetworkType {
4
+ XHR = 'xhr',
5
+ Fetch = 'fetch',
6
+ WS = 'ws',
7
+ }
8
+
9
+ export enum DebuggerPanel {
10
+ Network = 'network',
11
+ Console = 'console',
12
+ }
13
+
14
+ export type ID = string | undefined;
15
+
16
+ export interface NetworkRequest {
17
+ status?: number;
18
+ }
19
+
20
+ export type DebuggerVisibility = 'hidden' | 'bubble' | 'panel';
21
+
22
+ export type DebuggerPosition = 'top' | 'bottom';
23
+
24
+ export type SetState<T> = Dispatch<SetStateAction<T>>;
25
+
26
+ export type NetworkTab = 'headers' | 'queryStringParameters' | 'body' | 'response' | 'messages';
@@ -0,0 +1,4 @@
1
+ export interface LogMessage {
2
+ type: string;
3
+ values: any[];
4
+ }
@@ -0,0 +1,44 @@
1
+ import type { ID, NetworkRequest, NetworkType } from './common';
2
+
3
+ export interface HttpRequest extends NetworkRequest {
4
+ type: NetworkType.Fetch | NetworkType.XHR;
5
+ method: string;
6
+ url: string;
7
+ requestHeaders?: Record<string, string>;
8
+ requestHeadersString?: string;
9
+ body?: any;
10
+ responseContentType?: string;
11
+ responseSize?: number;
12
+ responseHeaders?: string;
13
+ timeout?: number;
14
+ response?: any;
15
+ responseType?: string;
16
+ }
17
+
18
+ export type HttpOpenCallback =
19
+ | ((id: ID, type: HttpRequest['type'], method: string, url: string) => void)
20
+ | null;
21
+
22
+ export type HttpRequestHeaderCallback = ((id: ID, header: string, value: string) => void) | null;
23
+
24
+ export type HttpSendCallback = ((id: ID, data?: any) => void) | null;
25
+
26
+ export type HttpHeaderReceivedCallback =
27
+ | ((
28
+ id: ID,
29
+ responseContentType: string | undefined,
30
+ responseSize: number | undefined,
31
+ responseHeaders: string,
32
+ ) => void)
33
+ | null;
34
+
35
+ export type HttpResponseCallback =
36
+ | ((
37
+ id: ID,
38
+ status: number | undefined,
39
+ timeout: number | undefined,
40
+ response: any,
41
+ responseURL: string | undefined,
42
+ responseType: string | undefined,
43
+ ) => void)
44
+ | null;
@@ -0,0 +1,4 @@
1
+ export * from './common';
2
+ export * from './http';
3
+ export * from './console';
4
+ export * from './websocket';
@@ -0,0 +1,46 @@
1
+ import type { NetworkRequest, NetworkType } from './common';
2
+
3
+ export interface WebSocketRequest extends NetworkRequest {
4
+ type: NetworkType.WS;
5
+ uri: string;
6
+ protocols?: string | string[] | null;
7
+ options?: {
8
+ headers: { [headerName: string]: string };
9
+ [optionName: string]: any;
10
+ } | null;
11
+ messages?: string;
12
+ closeReason?: string;
13
+ serverError?: { message?: string };
14
+ serverClose?: { code?: number; reason?: string };
15
+ }
16
+
17
+ export type WebSocketConnectCallback =
18
+ | ((
19
+ uri: WebSocketRequest['uri'],
20
+ protocols?: WebSocketRequest['protocols'],
21
+ options?: WebSocketRequest['options'],
22
+ socketId?: number,
23
+ ) => void)
24
+ | null;
25
+
26
+ export type WebSocketSendCallback = ((data: string, socketId: number) => void) | null;
27
+
28
+ export type WebSocketCloseCallback =
29
+ | ((
30
+ code: WebSocketRequest['status'],
31
+ reason: WebSocketRequest['closeReason'],
32
+ socketId: number,
33
+ ) => void)
34
+ | null;
35
+
36
+ export type WebSocketOnOpenCallback = ((socketId: number) => void) | null;
37
+
38
+ export type WebSocketOnMessageCallback = ((socketId: number, message: any) => void) | null;
39
+
40
+ export type WebSocketOnErrorCallback =
41
+ | ((socketId: number, data: WebSocketRequest['serverError']) => void)
42
+ | null;
43
+
44
+ export type WebSocketOnCloseCallback =
45
+ | ((socketId: number, data: WebSocketRequest['serverClose']) => void)
46
+ | null;
@@ -0,0 +1,149 @@
1
+ import { createRef, useImperativeHandle, useRef, useState, type JSX } from 'react';
2
+ import { Animated, SafeAreaView, StyleSheet, useWindowDimensions, View } from 'react-native';
3
+ import { useConsoleInterceptor, useNetworkInterceptor } from '../hooks';
4
+ import { DebuggerPanel, type DebuggerPosition, type DebuggerVisibility } from '../types';
5
+ import { Bubble, ConsolePanel, DebuggerHeader, DetailsViewer, NetworkPanel } from './components';
6
+ import MainContext, { type MainContextValue } from '../contexts/MainContext';
7
+
8
+ interface XenonComponentMethods {
9
+ show(): void;
10
+ hide(): void;
11
+ }
12
+
13
+ interface XenonComponentProps {
14
+ autoInspectNetwork?: boolean;
15
+ autoInspectConsole?: boolean;
16
+ bubbleSize?: number;
17
+ }
18
+
19
+ interface ReactNativeXenon extends XenonComponentMethods {
20
+ Component(props: XenonComponentProps): JSX.Element;
21
+ }
22
+
23
+ const rootRef = createRef<XenonComponentMethods>();
24
+
25
+ function XenonComponent({
26
+ autoInspectNetwork = true,
27
+ autoInspectConsole = true,
28
+ bubbleSize = 40,
29
+ }: XenonComponentProps) {
30
+ const { width: screenWidth, height: screenHeight } = useWindowDimensions();
31
+ const verticalSafeMargin = screenHeight / 8;
32
+
33
+ const pan = useRef(new Animated.ValueXY({ x: 0, y: verticalSafeMargin }));
34
+
35
+ const detailsData: MainContextValue['detailsData'] = useRef(null);
36
+
37
+ const [debuggerVisibility, setDebuggerVisibility] = useState<DebuggerVisibility>('hidden');
38
+
39
+ const [debuggerPosition, setDebuggerPosition] = useState<DebuggerPosition>('bottom');
40
+
41
+ const [panelSelected, setPanelSelected] = useState<DebuggerPanel | null>(DebuggerPanel.Network);
42
+
43
+ const networkInterceptor = useNetworkInterceptor({
44
+ autoEnabled: autoInspectNetwork,
45
+ });
46
+
47
+ const logInterceptor = useConsoleInterceptor({
48
+ autoEnabled: autoInspectConsole,
49
+ });
50
+
51
+ useImperativeHandle(
52
+ rootRef,
53
+ () => ({
54
+ show() {
55
+ setDebuggerVisibility('bubble');
56
+ },
57
+ hide() {
58
+ setDebuggerVisibility('hidden');
59
+ },
60
+ }),
61
+ [],
62
+ );
63
+
64
+ let content;
65
+
66
+ switch (debuggerVisibility) {
67
+ case 'bubble':
68
+ content = (
69
+ <View style={styles.bubbleBackdrop}>
70
+ <Bubble bubbleSize={bubbleSize} pan={pan} />
71
+ </View>
72
+ );
73
+ break;
74
+ case 'panel':
75
+ content = (
76
+ <SafeAreaView
77
+ style={[
78
+ styles.container,
79
+ // eslint-disable-next-line react-native/no-inline-styles
80
+ {
81
+ [debuggerPosition]: 0,
82
+ height: Math.min(screenWidth, screenHeight) * 0.75,
83
+ },
84
+ ]}
85
+ >
86
+ <DebuggerHeader />
87
+
88
+ {panelSelected === DebuggerPanel.Network && <NetworkPanel />}
89
+ {panelSelected === DebuggerPanel.Console && <ConsolePanel />}
90
+
91
+ {!panelSelected && !!detailsData.current && <DetailsViewer />}
92
+ </SafeAreaView>
93
+ );
94
+ break;
95
+ default:
96
+ content = null;
97
+ }
98
+
99
+ return (
100
+ <MainContext.Provider
101
+ value={{
102
+ debuggerVisibility,
103
+ setDebuggerVisibility,
104
+ debuggerPosition,
105
+ setDebuggerPosition,
106
+ panelSelected,
107
+ setPanelSelected,
108
+ networkInterceptor,
109
+ logInterceptor,
110
+ detailsData,
111
+ screenWidth,
112
+ screenHeight,
113
+ verticalSafeMargin,
114
+ }}
115
+ >
116
+ {content}
117
+ </MainContext.Provider>
118
+ );
119
+ }
120
+
121
+ const styles = StyleSheet.create({
122
+ container: {
123
+ flex: 1,
124
+ ...StyleSheet.absoluteFillObject,
125
+ top: undefined,
126
+ bottom: undefined,
127
+ zIndex: 9999,
128
+ backgroundColor: '#AAAAAA',
129
+ },
130
+ bubbleBackdrop: {
131
+ flex: 1,
132
+ ...StyleSheet.absoluteFillObject,
133
+ pointerEvents: 'box-none',
134
+ },
135
+ });
136
+
137
+ XenonComponent.displayName = 'Xenon';
138
+
139
+ const Xenon: ReactNativeXenon = {
140
+ show() {
141
+ rootRef.current?.show();
142
+ },
143
+ hide() {
144
+ rootRef.current?.hide();
145
+ },
146
+ Component: XenonComponent,
147
+ };
148
+
149
+ export default Xenon;
@@ -0,0 +1,93 @@
1
+ import { useContext, useMemo, type MutableRefObject } from 'react';
2
+ import {
3
+ Animated,
4
+ Image,
5
+ PanResponder,
6
+ StyleSheet,
7
+ type PanResponderGestureState,
8
+ } from 'react-native';
9
+ import { MainContext } from '../../../contexts';
10
+
11
+ interface BubbleProps {
12
+ bubbleSize: number;
13
+ pan: MutableRefObject<Animated.ValueXY>;
14
+ }
15
+
16
+ export default function Bubble({ bubbleSize, pan }: BubbleProps) {
17
+ const { setDebuggerVisibility, screenWidth, screenHeight, verticalSafeMargin } =
18
+ useContext(MainContext)!;
19
+
20
+ const panResponder = useMemo(
21
+ () =>
22
+ PanResponder.create({
23
+ onStartShouldSetPanResponder: () => true,
24
+ onMoveShouldSetPanResponder: () => true,
25
+ onPanResponderGrant: () => {
26
+ pan.current.setOffset({
27
+ // @ts-ignore
28
+ x: pan.current.x._value,
29
+ // @ts-ignore
30
+ y: pan.current.y._value,
31
+ });
32
+ pan.current.setValue({ x: 0, y: 0 });
33
+ },
34
+ onPanResponderMove: Animated.event([null, { dx: pan.current.x, dy: pan.current.y }], {
35
+ useNativeDriver: false,
36
+ }),
37
+ onPanResponderRelease: (_, gesture: PanResponderGestureState) => {
38
+ const isTapGesture =
39
+ gesture.dx > -10 && gesture.dx < 10 && gesture.dy > -10 && gesture.dy < 10;
40
+
41
+ if (isTapGesture) setDebuggerVisibility('panel');
42
+
43
+ pan.current.flattenOffset();
44
+
45
+ const finalX =
46
+ gesture.moveX < (screenWidth - bubbleSize) / 2 ? 0 : screenWidth - bubbleSize;
47
+
48
+ const finalY = Math.min(
49
+ Math.max(verticalSafeMargin, gesture.moveY),
50
+ screenHeight - verticalSafeMargin - bubbleSize,
51
+ );
52
+
53
+ Animated.spring(pan.current, {
54
+ toValue: { x: finalX, y: finalY },
55
+ useNativeDriver: false,
56
+ }).start();
57
+ },
58
+ }),
59
+ [bubbleSize, pan, screenHeight, screenWidth, setDebuggerVisibility, verticalSafeMargin],
60
+ );
61
+
62
+ return (
63
+ <Animated.View
64
+ {...panResponder.panHandlers}
65
+ style={[
66
+ styles.bubble,
67
+ {
68
+ width: bubbleSize,
69
+ height: bubbleSize,
70
+ borderRadius: bubbleSize / 2,
71
+ transform: pan.current.getTranslateTransform(),
72
+ },
73
+ ]}
74
+ >
75
+ <Image
76
+ source={require('../../../assets/code.png')}
77
+ style={{
78
+ width: bubbleSize * 0.75,
79
+ height: bubbleSize * 0.75,
80
+ }}
81
+ />
82
+ </Animated.View>
83
+ );
84
+ }
85
+
86
+ const styles = StyleSheet.create({
87
+ bubble: {
88
+ backgroundColor: '#AAAAAA',
89
+ position: 'absolute',
90
+ justifyContent: 'center',
91
+ alignItems: 'center',
92
+ },
93
+ });
@@ -0,0 +1,20 @@
1
+ import { useContext } from 'react';
2
+ import { MainContext } from '../../../contexts';
3
+ import { DebuggerPanel } from '../../../types';
4
+ import LogMessageDetails from './LogMessageDetails';
5
+ import NetworkRequestDetails from './NetworkRequestDetails';
6
+
7
+ export default function DetailsViewer() {
8
+ const { detailsData } = useContext(MainContext)!;
9
+
10
+ switch (true) {
11
+ case !detailsData.current:
12
+ return null;
13
+ case DebuggerPanel.Network in detailsData.current!:
14
+ return <NetworkRequestDetails item={detailsData.current.network} />;
15
+ case DebuggerPanel.Console in detailsData.current!:
16
+ return <LogMessageDetails item={detailsData.current.console} />;
17
+ default:
18
+ return null;
19
+ }
20
+ }