redux-connected-devtools 0.0.15 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (370) hide show
  1. package/.env +2 -0
  2. package/.prettierrc.js +10 -0
  3. package/.vscode/settings.json +12 -0
  4. package/.vscode/tasks.json +33 -0
  5. package/LICENSE +21 -0
  6. package/README.md +5 -0
  7. package/index.html +58 -0
  8. package/jest.config.js +8 -0
  9. package/package.json +47 -66
  10. package/public/devtools.html +8 -0
  11. package/public/icon.png +0 -0
  12. package/public/manifest.json +29 -0
  13. package/public/options.html +12 -0
  14. package/public/panel.html +39 -0
  15. package/public/popup.html +12 -0
  16. package/src/__tests__/sum.ts +9 -0
  17. package/src/background.ts +49 -0
  18. package/src/components/DevInspector/DevInspector.scss +2 -0
  19. package/src/components/DevInspector/DevInspector.style.tsx +8 -0
  20. package/src/components/DevInspector/DevInspector.tsx +34 -0
  21. package/src/components/DevList/DevList.scss +2 -0
  22. package/src/components/DevList/DevList.style.tsx +34 -0
  23. package/src/components/DevList/DevList.tsx +62 -0
  24. package/src/components/DevMenu/DevMenu.scss +2 -0
  25. package/src/components/DevMenu/DevMenu.style.tsx +53 -0
  26. package/src/components/DevMenu/DevMenu.tsx +76 -0
  27. package/src/components/DevPanel/DevPanel.scss +2 -0
  28. package/src/components/DevPanel/DevPanel.style.tsx +16 -0
  29. package/src/components/DevPanel/DevPanel.tsx +51 -0
  30. package/src/components/JourneyRow/JourneyRow.scss +2 -0
  31. package/src/components/JourneyRow/JourneyRow.style.tsx +46 -0
  32. package/src/components/JourneyRow/JourneyRow.tsx +58 -0
  33. package/src/components/JsonViewer/JsonViewer.scss +2 -0
  34. package/src/components/JsonViewer/JsonViewer.style.tsx +31 -0
  35. package/src/components/JsonViewer/JsonViewer.tsx +24 -0
  36. package/src/components/Lifecycle/Lifecycle.scss +2 -0
  37. package/src/components/Lifecycle/Lifecycle.style.tsx +6 -0
  38. package/src/components/Lifecycle/Lifecycle.tsx +31 -0
  39. package/src/components/LogsViewer/LogsViewer.scss +2 -0
  40. package/src/components/LogsViewer/LogsViewer.style.tsx +5 -0
  41. package/src/components/LogsViewer/LogsViewer.tsx +14 -0
  42. package/src/components/RequestDetails/RequestDetails.scss +2 -0
  43. package/src/components/RequestDetails/RequestDetails.style.tsx +20 -0
  44. package/src/components/RequestDetails/RequestDetails.tsx +60 -0
  45. package/src/components/RequestJourney/RequestJourney.scss +2 -0
  46. package/src/components/RequestJourney/RequestJourney.style.tsx +6 -0
  47. package/src/components/RequestJourney/RequestJourney.tsx +33 -0
  48. package/src/components/RequestRow/RequestRow.scss +2 -0
  49. package/src/components/RequestRow/RequestRow.style.tsx +31 -0
  50. package/src/components/RequestRow/RequestRow.tsx +37 -0
  51. package/src/components/Time/Time.scss +2 -0
  52. package/src/components/Time/Time.style.tsx +17 -0
  53. package/src/components/Time/Time.tsx +25 -0
  54. package/src/containers/DevMenuContainer.tsx +28 -0
  55. package/src/containers/DevPanelContainer.tsx +10 -0
  56. package/src/containers/EndpointConfigsContainer.tsx +12 -0
  57. package/src/containers/EndpointStatusContainer.tsx +12 -0
  58. package/src/containers/GlobalSettingsContainer.tsx +12 -0
  59. package/src/containers/GlobalStatsContainer.tsx +12 -0
  60. package/src/containers/LifecycleApiErrorContainer.tsx +11 -0
  61. package/src/containers/LifecycleGeneralErrorContainer.tsx +11 -0
  62. package/src/containers/LifecycleInQueueContainer.tsx +11 -0
  63. package/src/containers/LifecyclePendingApiContainer.tsx +11 -0
  64. package/src/containers/LifecyclePostActionContainer.tsx +11 -0
  65. package/src/containers/LifecycleReceivedContainer.tsx +11 -0
  66. package/src/content_script.ts +19 -0
  67. package/src/data/devComponents.tsx +25 -0
  68. package/src/data/devRoutes.ts +83 -0
  69. package/src/devtools.tsx +29 -0
  70. package/src/index.ts +1 -0
  71. package/src/injected_script.ts +9 -0
  72. package/src/options.tsx +77 -0
  73. package/src/panel.tsx +30 -0
  74. package/src/popup.tsx +63 -0
  75. package/src/store/initialState.ts +42 -0
  76. package/src/store/selectors.ts +205 -0
  77. package/src/sum.ts +3 -0
  78. package/src/types.ts +1 -0
  79. package/src/utils/date.ts +3 -0
  80. package/tsconfig.json +24 -0
  81. package/vite.config.ts +45 -0
  82. package/webpack/webpack.common.js +46 -0
  83. package/webpack/webpack.dev.js +7 -0
  84. package/webpack/webpack.prod.js +6 -0
  85. package/esm/components/Config/Config.d.ts +0 -6
  86. package/esm/components/Config/Config.js +0 -15
  87. package/esm/components/DevTools/DevTools.d.ts +0 -4
  88. package/esm/components/DevTools/DevTools.js +0 -19
  89. package/esm/components/DevToolsLocal/DevToolsLocal.d.ts +0 -4
  90. package/esm/components/DevToolsLocal/DevToolsLocal.js +0 -12
  91. package/esm/components/Dispatcher/Dispatcher.d.ts +0 -8
  92. package/esm/components/Dispatcher/Dispatcher.js +0 -61
  93. package/esm/components/GlobalSettings/GlobalSettings.d.ts +0 -6
  94. package/esm/components/GlobalSettings/GlobalSettings.js +0 -16
  95. package/esm/components/Group/Group.d.ts +0 -9
  96. package/esm/components/Group/Group.js +0 -14
  97. package/esm/components/Json/Json.d.ts +0 -7
  98. package/esm/components/Json/Json.js +0 -9
  99. package/esm/components/Logs/Logs.d.ts +0 -6
  100. package/esm/components/Logs/Logs.js +0 -49
  101. package/esm/components/Monitor/Monitor.d.ts +0 -6
  102. package/esm/components/Monitor/Monitor.js +0 -54
  103. package/esm/components/OverlayManager/OverlayManager.d.ts +0 -6
  104. package/esm/components/OverlayManager/OverlayManager.js +0 -17
  105. package/esm/components/Panel/Panel.d.ts +0 -14
  106. package/esm/components/Panel/Panel.js +0 -46
  107. package/esm/components/Preview/Preview.d.ts +0 -18
  108. package/esm/components/Preview/Preview.js +0 -58
  109. package/esm/components/Redux/Redux.d.ts +0 -6
  110. package/esm/components/Redux/Redux.js +0 -72
  111. package/esm/components/ReduxSettings/ReduxSettings.d.ts +0 -9
  112. package/esm/components/ReduxSettings/ReduxSettings.js +0 -60
  113. package/esm/components/Requests/Requests.d.ts +0 -6
  114. package/esm/components/Requests/Requests.js +0 -61
  115. package/esm/components/Status/Status.d.ts +0 -6
  116. package/esm/components/Status/Status.js +0 -16
  117. package/esm/components/TaskManager/TaskManager.d.ts +0 -9
  118. package/esm/components/TaskManager/TaskManager.js +0 -22
  119. package/esm/components/Timeline/Timeline.d.ts +0 -6
  120. package/esm/components/Timeline/Timeline.js +0 -13
  121. package/esm/components/TimelineEvent/TimelineEvent.d.ts +0 -7
  122. package/esm/components/TimelineEvent/TimelineEvent.js +0 -13
  123. package/esm/components/TimelineHeader/TimelineHeader.d.ts +0 -4
  124. package/esm/components/TimelineHeader/TimelineHeader.js +0 -5
  125. package/esm/components/TimelineRow/TimelineRow.d.ts +0 -7
  126. package/esm/components/TimelineRow/TimelineRow.js +0 -13
  127. package/esm/components/TimelineRowHeader/TimelineRowHeader.d.ts +0 -7
  128. package/esm/components/TimelineRowHeader/TimelineRowHeader.js +0 -10
  129. package/esm/components/Toggle/Toggle.d.ts +0 -8
  130. package/esm/components/Toggle/Toggle.js +0 -8
  131. package/esm/components/VirtualList/VirtualList.d.ts +0 -19
  132. package/esm/components/VirtualList/VirtualList.js +0 -30
  133. package/esm/components/Visual/Visual.d.ts +0 -6
  134. package/esm/components/Visual/Visual.js +0 -38
  135. package/esm/components/prefix.d.ts +0 -2
  136. package/esm/components/prefix.js +0 -2
  137. package/esm/data/boxSizes.d.ts +0 -2
  138. package/esm/data/boxSizes.js +0 -10
  139. package/esm/data/dispatcherActions.d.ts +0 -5
  140. package/esm/data/dispatcherActions.js +0 -35
  141. package/esm/data/layoutDefault.d.ts +0 -2
  142. package/esm/data/layoutDefault.js +0 -46
  143. package/esm/data/panels.d.ts +0 -2
  144. package/esm/data/panels.js +0 -14
  145. package/esm/data/panelsArrangements.d.ts +0 -19
  146. package/esm/data/panelsArrangements.js +0 -19
  147. package/esm/data/panelsLocal.d.ts +0 -2
  148. package/esm/data/panelsLocal.js +0 -7
  149. package/esm/data/reduxFilterOptions.d.ts +0 -20
  150. package/esm/data/reduxFilterOptions.js +0 -223
  151. package/esm/data/widgets.d.ts +0 -2
  152. package/esm/data/widgets.js +0 -154
  153. package/esm/data/widgetsLocal.d.ts +0 -2
  154. package/esm/data/widgetsLocal.js +0 -19
  155. package/esm/hooks/index.d.ts +0 -7
  156. package/esm/hooks/index.js +0 -7
  157. package/esm/hooks/misc/hookState.d.ts +0 -8
  158. package/esm/hooks/misc/hookState.js +0 -6
  159. package/esm/hooks/misc/util.d.ts +0 -5
  160. package/esm/hooks/misc/util.js +0 -21
  161. package/esm/hooks/useBoolean.d.ts +0 -3
  162. package/esm/hooks/useBoolean.js +0 -3
  163. package/esm/hooks/useClickAway.d.ts +0 -3
  164. package/esm/hooks/useClickAway.js +0 -27
  165. package/esm/hooks/useEvent.d.ts +0 -13
  166. package/esm/hooks/useEvent.js +0 -35
  167. package/esm/hooks/useKey.d.ts +0 -12
  168. package/esm/hooks/useKey.js +0 -29
  169. package/esm/hooks/useList.d.ts +0 -57
  170. package/esm/hooks/useList.js +0 -74
  171. package/esm/hooks/useLocalstorage.d.ts +0 -10
  172. package/esm/hooks/useLocalstorage.js +0 -75
  173. package/esm/hooks/usePanels.d.ts +0 -10
  174. package/esm/hooks/usePanels.js +0 -45
  175. package/esm/hooks/useSetState.d.ts +0 -2
  176. package/esm/hooks/useSetState.js +0 -10
  177. package/esm/hooks/useToggle.d.ts +0 -2
  178. package/esm/hooks/useToggle.js +0 -6
  179. package/esm/hooks/useUpdate.d.ts +0 -1
  180. package/esm/hooks/useUpdate.js +0 -6
  181. package/esm/index.d.ts +0 -4
  182. package/esm/index.js +0 -4
  183. package/esm/selectors/selectors.d.ts +0 -21
  184. package/esm/selectors/selectors.js +0 -20
  185. package/esm/theme/devtoolsTheme.d.ts +0 -2
  186. package/esm/theme/devtoolsTheme.js +0 -95
  187. package/esm/types.d.ts +0 -21
  188. package/esm/types.js +0 -1
  189. package/esm/utils/filter.d.ts +0 -3
  190. package/esm/utils/filter.js +0 -25
  191. package/esm/utils/localStorage.d.ts +0 -2
  192. package/esm/utils/localStorage.js +0 -21
  193. package/esm/utils/sockets.d.ts +0 -7
  194. package/esm/utils/sockets.js +0 -27
  195. package/lib/components/Colors copy.css +0 -3
  196. package/lib/components/Colors copy.css.map +0 -1
  197. package/lib/components/Colors.css +0 -3
  198. package/lib/components/Colors.css.map +0 -1
  199. package/lib/components/ColorsDark.css +0 -3
  200. package/lib/components/ColorsDark.css.map +0 -1
  201. package/lib/components/Config/Config.css +0 -15
  202. package/lib/components/Config/Config.css.map +0 -1
  203. package/lib/components/Config/Config.d.ts +0 -6
  204. package/lib/components/Config/Config.js +0 -20
  205. package/lib/components/DevTools/DevTools.css +0 -11
  206. package/lib/components/DevTools/DevTools.css.map +0 -1
  207. package/lib/components/DevTools/DevTools.d.ts +0 -4
  208. package/lib/components/DevTools/DevTools.js +0 -24
  209. package/lib/components/DevToolsLocal/DevToolsLocal.css +0 -11
  210. package/lib/components/DevToolsLocal/DevToolsLocal.css.map +0 -1
  211. package/lib/components/DevToolsLocal/DevToolsLocal.d.ts +0 -4
  212. package/lib/components/DevToolsLocal/DevToolsLocal.js +0 -17
  213. package/lib/components/Dispatcher/Dispatcher.css +0 -15
  214. package/lib/components/Dispatcher/Dispatcher.css.map +0 -1
  215. package/lib/components/Dispatcher/Dispatcher.d.ts +0 -8
  216. package/lib/components/Dispatcher/Dispatcher.js +0 -65
  217. package/lib/components/GlobalSettings/GlobalSettings.css +0 -3
  218. package/lib/components/GlobalSettings/GlobalSettings.css.map +0 -1
  219. package/lib/components/GlobalSettings/GlobalSettings.d.ts +0 -6
  220. package/lib/components/GlobalSettings/GlobalSettings.js +0 -21
  221. package/lib/components/Group/Group.css +0 -41
  222. package/lib/components/Group/Group.css.map +0 -1
  223. package/lib/components/Group/Group.d.ts +0 -9
  224. package/lib/components/Group/Group.js +0 -19
  225. package/lib/components/Json/Json.css +0 -5
  226. package/lib/components/Json/Json.css.map +0 -1
  227. package/lib/components/Json/Json.d.ts +0 -7
  228. package/lib/components/Json/Json.js +0 -14
  229. package/lib/components/Logs/Logs.css +0 -5
  230. package/lib/components/Logs/Logs.css.map +0 -1
  231. package/lib/components/Logs/Logs.d.ts +0 -6
  232. package/lib/components/Logs/Logs.js +0 -54
  233. package/lib/components/Monitor/Monitor.css +0 -5
  234. package/lib/components/Monitor/Monitor.css.map +0 -1
  235. package/lib/components/Monitor/Monitor.d.ts +0 -6
  236. package/lib/components/Monitor/Monitor.js +0 -59
  237. package/lib/components/OverlayManager/OverlayManager.css +0 -72
  238. package/lib/components/OverlayManager/OverlayManager.css.map +0 -1
  239. package/lib/components/OverlayManager/OverlayManager.d.ts +0 -6
  240. package/lib/components/OverlayManager/OverlayManager.js +0 -22
  241. package/lib/components/Panel/Panel.css +0 -35
  242. package/lib/components/Panel/Panel.css.map +0 -1
  243. package/lib/components/Panel/Panel.d.ts +0 -14
  244. package/lib/components/Panel/Panel.js +0 -51
  245. package/lib/components/Prefix copy.css +0 -3
  246. package/lib/components/Prefix copy.css.map +0 -1
  247. package/lib/components/Prefix.css +0 -3
  248. package/lib/components/Prefix.css.map +0 -1
  249. package/lib/components/Preview/Preview.css +0 -29
  250. package/lib/components/Preview/Preview.css.map +0 -1
  251. package/lib/components/Preview/Preview.d.ts +0 -18
  252. package/lib/components/Preview/Preview.js +0 -64
  253. package/lib/components/Reading.css +0 -107
  254. package/lib/components/Reading.css.map +0 -1
  255. package/lib/components/Redux/Redux.css +0 -86
  256. package/lib/components/Redux/Redux.css.map +0 -1
  257. package/lib/components/Redux/Redux.d.ts +0 -6
  258. package/lib/components/Redux/Redux.js +0 -77
  259. package/lib/components/ReduxSettings/ReduxSettings.css +0 -10
  260. package/lib/components/ReduxSettings/ReduxSettings.css.map +0 -1
  261. package/lib/components/ReduxSettings/ReduxSettings.d.ts +0 -9
  262. package/lib/components/ReduxSettings/ReduxSettings.js +0 -64
  263. package/lib/components/Requests/Requests.css +0 -8
  264. package/lib/components/Requests/Requests.css.map +0 -1
  265. package/lib/components/Requests/Requests.d.ts +0 -6
  266. package/lib/components/Requests/Requests.js +0 -66
  267. package/lib/components/Status/Status.css +0 -15
  268. package/lib/components/Status/Status.css.map +0 -1
  269. package/lib/components/Status/Status.d.ts +0 -6
  270. package/lib/components/Status/Status.js +0 -21
  271. package/lib/components/TaskManager/TaskManager.css +0 -9
  272. package/lib/components/TaskManager/TaskManager.css.map +0 -1
  273. package/lib/components/TaskManager/TaskManager.d.ts +0 -9
  274. package/lib/components/TaskManager/TaskManager.js +0 -28
  275. package/lib/components/Timeline/Timeline.css +0 -5
  276. package/lib/components/Timeline/Timeline.css.map +0 -1
  277. package/lib/components/Timeline/Timeline.d.ts +0 -6
  278. package/lib/components/Timeline/Timeline.js +0 -18
  279. package/lib/components/TimelineEvent/TimelineEvent.css +0 -20
  280. package/lib/components/TimelineEvent/TimelineEvent.css.map +0 -1
  281. package/lib/components/TimelineEvent/TimelineEvent.d.ts +0 -7
  282. package/lib/components/TimelineEvent/TimelineEvent.js +0 -18
  283. package/lib/components/TimelineHeader/TimelineHeader.css +0 -6
  284. package/lib/components/TimelineHeader/TimelineHeader.css.map +0 -1
  285. package/lib/components/TimelineHeader/TimelineHeader.d.ts +0 -4
  286. package/lib/components/TimelineHeader/TimelineHeader.js +0 -10
  287. package/lib/components/TimelineRow/TimelineRow.css +0 -14
  288. package/lib/components/TimelineRow/TimelineRow.css.map +0 -1
  289. package/lib/components/TimelineRow/TimelineRow.d.ts +0 -7
  290. package/lib/components/TimelineRow/TimelineRow.js +0 -18
  291. package/lib/components/TimelineRowHeader/TimelineRowHeader.css +0 -45
  292. package/lib/components/TimelineRowHeader/TimelineRowHeader.css.map +0 -1
  293. package/lib/components/TimelineRowHeader/TimelineRowHeader.d.ts +0 -7
  294. package/lib/components/TimelineRowHeader/TimelineRowHeader.js +0 -15
  295. package/lib/components/Toggle/Toggle.css +0 -3
  296. package/lib/components/Toggle/Toggle.css.map +0 -1
  297. package/lib/components/Toggle/Toggle.d.ts +0 -8
  298. package/lib/components/Toggle/Toggle.js +0 -13
  299. package/lib/components/Variables.css +0 -3
  300. package/lib/components/Variables.css.map +0 -1
  301. package/lib/components/VirtualList/VirtualList.css +0 -13
  302. package/lib/components/VirtualList/VirtualList.css.map +0 -1
  303. package/lib/components/VirtualList/VirtualList.d.ts +0 -19
  304. package/lib/components/VirtualList/VirtualList.js +0 -35
  305. package/lib/components/Visual/Visual.css +0 -57
  306. package/lib/components/Visual/Visual.css.map +0 -1
  307. package/lib/components/Visual/Visual.d.ts +0 -6
  308. package/lib/components/Visual/Visual.js +0 -43
  309. package/lib/components/prefix.d.ts +0 -2
  310. package/lib/components/prefix.js +0 -5
  311. package/lib/data/boxSizes.d.ts +0 -2
  312. package/lib/data/boxSizes.js +0 -13
  313. package/lib/data/dispatcherActions.d.ts +0 -5
  314. package/lib/data/dispatcherActions.js +0 -38
  315. package/lib/data/layoutDefault.d.ts +0 -2
  316. package/lib/data/layoutDefault.js +0 -49
  317. package/lib/data/panels.d.ts +0 -2
  318. package/lib/data/panels.js +0 -17
  319. package/lib/data/panelsArrangements.d.ts +0 -19
  320. package/lib/data/panelsArrangements.js +0 -22
  321. package/lib/data/panelsLocal.d.ts +0 -2
  322. package/lib/data/panelsLocal.js +0 -10
  323. package/lib/data/reduxFilterOptions.d.ts +0 -20
  324. package/lib/data/reduxFilterOptions.js +0 -227
  325. package/lib/data/widgets.d.ts +0 -2
  326. package/lib/data/widgets.js +0 -157
  327. package/lib/data/widgetsLocal.d.ts +0 -2
  328. package/lib/data/widgetsLocal.js +0 -22
  329. package/lib/hooks/index.d.ts +0 -7
  330. package/lib/hooks/index.js +0 -17
  331. package/lib/hooks/misc/hookState.d.ts +0 -8
  332. package/lib/hooks/misc/hookState.js +0 -10
  333. package/lib/hooks/misc/util.d.ts +0 -5
  334. package/lib/hooks/misc/util.js +0 -27
  335. package/lib/hooks/useBoolean.d.ts +0 -3
  336. package/lib/hooks/useBoolean.js +0 -7
  337. package/lib/hooks/useClickAway.d.ts +0 -3
  338. package/lib/hooks/useClickAway.js +0 -31
  339. package/lib/hooks/useEvent.d.ts +0 -13
  340. package/lib/hooks/useEvent.js +0 -37
  341. package/lib/hooks/useKey.d.ts +0 -12
  342. package/lib/hooks/useKey.js +0 -34
  343. package/lib/hooks/useList.d.ts +0 -57
  344. package/lib/hooks/useList.js +0 -79
  345. package/lib/hooks/useLocalstorage.d.ts +0 -10
  346. package/lib/hooks/useLocalstorage.js +0 -79
  347. package/lib/hooks/usePanels.d.ts +0 -10
  348. package/lib/hooks/usePanels.js +0 -49
  349. package/lib/hooks/useSetState.d.ts +0 -2
  350. package/lib/hooks/useSetState.js +0 -14
  351. package/lib/hooks/useToggle.d.ts +0 -2
  352. package/lib/hooks/useToggle.js +0 -10
  353. package/lib/hooks/useUpdate.d.ts +0 -1
  354. package/lib/hooks/useUpdate.js +0 -9
  355. package/lib/index.css +0 -605
  356. package/lib/index.css.map +0 -1
  357. package/lib/index.d.ts +0 -4
  358. package/lib/index.js +0 -11
  359. package/lib/selectors/selectors.d.ts +0 -21
  360. package/lib/selectors/selectors.js +0 -24
  361. package/lib/theme/devtoolsTheme.d.ts +0 -2
  362. package/lib/theme/devtoolsTheme.js +0 -97
  363. package/lib/types.d.ts +0 -21
  364. package/lib/types.js +0 -2
  365. package/lib/utils/filter.d.ts +0 -3
  366. package/lib/utils/filter.js +0 -29
  367. package/lib/utils/localStorage.d.ts +0 -2
  368. package/lib/utils/localStorage.js +0 -26
  369. package/lib/utils/sockets.d.ts +0 -7
  370. package/lib/utils/sockets.js +0 -34
@@ -0,0 +1,76 @@
1
+ import React from 'react';
2
+ import { IDevRoute } from '../../data/devRoutes';
3
+ import {
4
+ Container,
5
+ MenuGroup,
6
+ MenuGroupTitle,
7
+ MenuItem,
8
+ Title,
9
+ Badge,
10
+ BadgeTotal,
11
+ } from './DevMenu.style';
12
+
13
+ export type DevMenuProps = {
14
+ groups: string[];
15
+ items: IDevRoute[];
16
+ onClick: (route: IDevRoute) => void;
17
+ selectedId: string;
18
+ badges: Record<string, number>;
19
+ badgesTotal: Record<string, number>;
20
+ };
21
+
22
+ export function DevMenu(props: DevMenuProps) {
23
+ const { groups, items, selectedId, badges, badgesTotal } = props;
24
+
25
+ function renderItem(item: IDevRoute) {
26
+ const { title, id } = item;
27
+ const selected = id === selectedId;
28
+
29
+ const badge = badges[id];
30
+ const badgeTotal = badgesTotal[id];
31
+
32
+ return (
33
+ <MenuItem
34
+ selected={selected}
35
+ key={item.id}
36
+ onClick={() => props.onClick(item)}
37
+ >
38
+ <Title>{title}</Title>
39
+ {badgeTotal > 0 && badgeTotal !== badge && (
40
+ <BadgeTotal>{badgeTotal}</BadgeTotal>
41
+ )}
42
+ {badge > 0 && <Badge>{badge}</Badge>}
43
+ </MenuItem>
44
+ );
45
+ }
46
+
47
+ function renderItems(groupItems: IDevRoute[]) {
48
+ return groupItems.map((item: IDevRoute) => renderItem(item));
49
+ }
50
+
51
+ function renderGroup(group: string) {
52
+ const groupItems = items.filter((item) => item.group === group);
53
+
54
+ return (
55
+ <MenuGroup key={group}>
56
+ <MenuGroupTitle>{group}</MenuGroupTitle>
57
+ {renderItems(groupItems)}
58
+ </MenuGroup>
59
+ );
60
+ }
61
+
62
+ function renderGroups() {
63
+ return groups.map((group: string) => renderGroup(group));
64
+ }
65
+
66
+ return (
67
+ <Container
68
+ className='DevMenu-container'
69
+ data-testid='DevMenu-container'
70
+ >
71
+ {renderGroups()}
72
+ </Container>
73
+ );
74
+ }
75
+
76
+ export default DevMenu;
@@ -0,0 +1,2 @@
1
+ .DevPanel-container {
2
+ }
@@ -0,0 +1,16 @@
1
+ import styled from 'styled-components';
2
+
3
+ export const Container = styled.div`
4
+ flex: 1;
5
+ color: #eee;
6
+ background-color: #232332;
7
+ display: flex;
8
+ flex-direction: row;
9
+ `;
10
+
11
+ export const Content = styled.div`
12
+ flex: 1;
13
+ background-color: rgba(0, 0, 0, 0.15);
14
+ display: flex;
15
+ flex-direction: column;
16
+ `;
@@ -0,0 +1,51 @@
1
+ import DevMenu from '../../containers/DevMenuContainer';
2
+ import React, { useState } from 'react';
3
+ import { Container, Content } from './DevPanel.style';
4
+ import { devComponents } from '../../data/devComponents';
5
+ import { devGroups, devRoutes, IDevRoute } from '../../data/devRoutes';
6
+ import { Json } from '../../types';
7
+
8
+ export type DevPanelProps = {};
9
+
10
+ export function DevPanel(props: DevPanelProps) {
11
+ const [route, setRoute] = useState<IDevRoute>(devRoutes[0]);
12
+
13
+ function renderRoute() {
14
+ const Cmp = devComponents[route.componentId];
15
+ return <Cmp key={route.id} />;
16
+ }
17
+
18
+ return (
19
+ <Container
20
+ className='DevPanel-container'
21
+ data-testid='DevPanel-container'
22
+ >
23
+ <DevMenu
24
+ selectedId={route.id}
25
+ onClick={(item: IDevRoute) => setRoute(item)}
26
+ />
27
+ <Content>{renderRoute()}</Content>
28
+ </Container>
29
+ );
30
+ }
31
+
32
+ let bgConnection;
33
+
34
+ function init(id: string) {
35
+ bgConnection = chrome.runtime?.connect({
36
+ name: id,
37
+ });
38
+
39
+ if (bgConnection) {
40
+ bgConnection.onMessage.addListener((message: Json) => {
41
+ console.log('message ->', message);
42
+ });
43
+ }
44
+ }
45
+
46
+ if (chrome) {
47
+ const tabId = String(chrome.devtools?.inspectedWindow.tabId || '');
48
+ init(tabId);
49
+ }
50
+
51
+ export default DevPanel;
@@ -0,0 +1,2 @@
1
+ .JourneyRow-container {
2
+ }
@@ -0,0 +1,46 @@
1
+ import styled from 'styled-components';
2
+
3
+ export const Container = styled.div`
4
+ flex: 1;
5
+ display: flex;
6
+ flex-direction: row;
7
+ align-items: center;
8
+ padding: 10px 20px;
9
+
10
+ &:nth-child(2n-1) {
11
+ background-color: rgba(0, 0, 0, 0.2);
12
+ }
13
+
14
+ &:hover {
15
+ background-color: rgba(0, 0, 0, 0.3);
16
+ cursor: pointer;
17
+ }
18
+ `;
19
+
20
+ export const Status = styled.div`
21
+ color: #aaa;
22
+ `;
23
+
24
+ export const DataIcon = styled.div`
25
+ background-color: #000;
26
+ padding: 3px 7px;
27
+ font-size: 13px;
28
+ font-weight: bold;
29
+ color: purple;
30
+ border-radius: 5px;
31
+ margin-left: 10px;
32
+ `;
33
+
34
+ export const Delta = styled.div`
35
+ font-size: 13px;
36
+ width: 60px;
37
+ font-weight: bold;
38
+ color: olive;
39
+ margin-right: 10px;
40
+ text-align: center;
41
+ font-family: monospace;
42
+ `;
43
+
44
+ export const Flex = styled.div`
45
+ flex: 1;
46
+ `;
@@ -0,0 +1,58 @@
1
+ import React from 'react';
2
+ import Time from '../Time/Time';
3
+ import { Container, Status, DataIcon, Delta, Flex } from './JourneyRow.style';
4
+ import { JourneyPoint, LifecycleStatus } from 'redux-connected';
5
+
6
+ export type JourneyRowProps = {
7
+ point: JourneyPoint;
8
+ };
9
+
10
+ const statusMap: Record<LifecycleStatus, string> = {
11
+ [LifecycleStatus.RECEIVED]: 'Received',
12
+ [LifecycleStatus.IN_QUEUE]: 'In queue',
13
+ [LifecycleStatus.GENERAL_ERROR]: 'General error',
14
+ [LifecycleStatus.PENDING_API_RESPONSE]: 'Pending API',
15
+ [LifecycleStatus.API_ERROR]: 'API error',
16
+ [LifecycleStatus.POST_ACTION]: 'Post action',
17
+ };
18
+
19
+ export function JourneyRow(props: JourneyRowProps) {
20
+ const { point } = props;
21
+ const { status, timestamp, data, delta = '' } = point;
22
+
23
+ function printPoint() {
24
+ console.log(data);
25
+ }
26
+
27
+ function renderDataIcon() {
28
+ if (!data) {
29
+ return null;
30
+ }
31
+
32
+ return <DataIcon>D</DataIcon>;
33
+ }
34
+
35
+ function renderDelta() {
36
+ if (!delta) {
37
+ return null;
38
+ }
39
+
40
+ return <Delta>+{delta.toLocaleString()}</Delta>;
41
+ }
42
+
43
+ return (
44
+ <Container
45
+ className='JourneyRow-container'
46
+ data-testid='JourneyRow-container'
47
+ onClick={printPoint}
48
+ >
49
+ <Status>{statusMap[status]}</Status>
50
+ {renderDataIcon()}
51
+ <Flex />
52
+ {renderDelta()}
53
+ <Time value={timestamp} />
54
+ </Container>
55
+ );
56
+ }
57
+
58
+ export default JourneyRow;
@@ -0,0 +1,2 @@
1
+ .JsonViewer-container {
2
+ }
@@ -0,0 +1,31 @@
1
+ import styled from 'styled-components';
2
+
3
+ export const Container = styled.div<{ width?: number }>`
4
+ flex: 1;
5
+ max-height: 850px;
6
+ overflow: auto;
7
+ padding: 0 25px;
8
+ max-width: ${(props) => (props.width ? props.width + 'px' : '680px')};
9
+ color: #ccc;
10
+ line-height: 26px;
11
+
12
+ &::-webkit-scrollbar {
13
+ width: 8px;
14
+ height: 7px;
15
+ }
16
+
17
+ /* Track */
18
+ &::-webkit-scrollbar-track {
19
+ background: #333;
20
+ }
21
+
22
+ /* Handle */
23
+ &::-webkit-scrollbar-thumb {
24
+ background: #555;
25
+ }
26
+
27
+ /* Handle on hover */
28
+ &::-webkit-scrollbar-thumb:hover {
29
+ background: #666;
30
+ }
31
+ `;
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import { Json } from '../../types';
3
+ import { Container } from './JsonViewer.style';
4
+
5
+ export type JsonViewerProps = {
6
+ json: Json | undefined;
7
+ width?: number;
8
+ };
9
+
10
+ export function JsonViewer(props: JsonViewerProps) {
11
+ const { json, width } = props;
12
+
13
+ return (
14
+ <Container
15
+ className='JsonViewer-container'
16
+ data-testid='JsonViewer-container'
17
+ width={width}
18
+ >
19
+ <pre>{JSON.stringify(json, null, 4)}</pre>
20
+ </Container>
21
+ );
22
+ }
23
+
24
+ export default JsonViewer;
@@ -0,0 +1,2 @@
1
+ .Lifecycle-container {
2
+ }
@@ -0,0 +1,6 @@
1
+ import styled from 'styled-components';
2
+
3
+ export const Container = styled.div`
4
+ flex: 1;
5
+ display: flex;
6
+ `;
@@ -0,0 +1,31 @@
1
+ import DevInspector from '../DevInspector/DevInspector';
2
+ import DevList from '../DevList/DevList';
3
+ import React, { useState } from 'react';
4
+ import RequestRow from '../RequestRow/RequestRow';
5
+ import { ApiRequest } from 'redux-connected';
6
+ import { Container } from './Lifecycle.style';
7
+
8
+ export type LifecycleProps = {
9
+ requests: ApiRequest[];
10
+ };
11
+
12
+ export function Lifecycle(props: LifecycleProps) {
13
+ const { requests } = props;
14
+ const [item, setItem] = useState<ApiRequest>();
15
+
16
+ function onClick(newItem: ApiRequest) {
17
+ setItem(newItem);
18
+ }
19
+
20
+ return (
21
+ <Container
22
+ className='Lifecycle-container'
23
+ data-testid='Lifecycle-container'
24
+ >
25
+ <DevList items={requests} row={RequestRow} onClick={onClick} />
26
+ <DevInspector item={item} />
27
+ </Container>
28
+ );
29
+ }
30
+
31
+ export default Lifecycle;
@@ -0,0 +1,2 @@
1
+ .LogsViewer-container {
2
+ }
@@ -0,0 +1,5 @@
1
+ import styled from 'styled-components';
2
+
3
+ export const Container = styled.div`
4
+ flex: 1;
5
+ `;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { Container } from './LogsViewer.style';
3
+
4
+ export type LogsViewerProps = {};
5
+
6
+ export function LogsViewer(_props: LogsViewerProps) {
7
+ return (
8
+ <Container className="LogsViewer-container" data-testid="LogsViewer-container">
9
+ LogsViewer
10
+ </Container>
11
+ );
12
+ }
13
+
14
+ export default LogsViewer;
@@ -0,0 +1,2 @@
1
+ .RequestDetails-container {
2
+ }
@@ -0,0 +1,20 @@
1
+ import styled from 'styled-components';
2
+
3
+ export const Container = styled.div`
4
+ flex: 1;
5
+ padding: 20px;
6
+ `;
7
+
8
+ export const Table = styled.table``;
9
+
10
+ export const Tr = styled.tr``;
11
+
12
+ export const Td = styled.td`
13
+ color: goldenrod;
14
+
15
+ &:first-child {
16
+ color: #778;
17
+ text-align: right;
18
+ padding-right: 10px;
19
+ }
20
+ `;
@@ -0,0 +1,60 @@
1
+ import React from 'react';
2
+ import { Container, Table, Tr, Td } from './RequestDetails.style';
3
+ import { ApiRequest } from 'redux-connected';
4
+ import JsonViewer from '../JsonViewer/JsonViewer';
5
+ import bytes from 'bytes';
6
+
7
+ export type RequestDetailsProps = {
8
+ item: ApiRequest;
9
+ };
10
+
11
+ export function RequestDetails(props: RequestDetailsProps) {
12
+ const { item } = props;
13
+
14
+ return (
15
+ <Container
16
+ className='RequestDetails-container'
17
+ data-testid='RequestDetails-container'
18
+ >
19
+ <Table>
20
+ <tbody>
21
+ <Tr>
22
+ <Td>sequence</Td>
23
+ <Td>{item.sequence}</Td>
24
+ </Tr>
25
+ <Tr>
26
+ <Td>id</Td>
27
+ <Td>{item.shortId}</Td>
28
+ </Tr>
29
+ <Tr>
30
+ <Td>apiVerb</Td>
31
+ <Td>{item.argsApiVerb}</Td>
32
+ </Tr>
33
+ <Tr>
34
+ <Td>connection</Td>
35
+ <Td>{item.argsConnectionType}</Td>
36
+ </Tr>
37
+ <Tr>
38
+ <Td>duration</Td>
39
+ <Td>{item.apiDuration}</Td>
40
+ </Tr>
41
+ <Tr>
42
+ <Td>nodeName</Td>
43
+ <Td>{item.argsNodeName}</Td>
44
+ </Tr>
45
+ <Tr>
46
+ <Td>responseSize</Td>
47
+ <Td>
48
+ {item.apiResponseSize &&
49
+ bytes(item.apiResponseSize)}
50
+ </Td>
51
+ </Tr>
52
+ </tbody>
53
+ </Table>
54
+
55
+ <JsonViewer width={290} json={item.originalAction} />
56
+ </Container>
57
+ );
58
+ }
59
+
60
+ export default RequestDetails;
@@ -0,0 +1,2 @@
1
+ .RequestJourney-container {
2
+ }
@@ -0,0 +1,6 @@
1
+ import styled from 'styled-components';
2
+
3
+ export const Container = styled.div`
4
+ flex: 1;
5
+ border-top: 1px solid #333;
6
+ `;
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ import { Container } from './RequestJourney.style';
3
+ import { ApiRequest, JourneyPoint } from 'redux-connected';
4
+ import JourneyRow from '../JourneyRow/JourneyRow';
5
+
6
+ export type RequestJourneyProps = {
7
+ item: ApiRequest;
8
+ };
9
+
10
+ export function RequestJourney(props: RequestJourneyProps) {
11
+ const { item } = props;
12
+
13
+ function renderItem(point: JourneyPoint, index: number) {
14
+ return <JourneyRow key={index} point={point} />;
15
+ }
16
+
17
+ function renderItems() {
18
+ return item.items.map((point: JourneyPoint, index: number) =>
19
+ renderItem(point, index)
20
+ );
21
+ }
22
+
23
+ return (
24
+ <Container
25
+ className='RequestJourney-container'
26
+ data-testid='RequestJourney-container'
27
+ >
28
+ {renderItems()}
29
+ </Container>
30
+ );
31
+ }
32
+
33
+ export default RequestJourney;
@@ -0,0 +1,2 @@
1
+ .RequestRow-container {
2
+ }
@@ -0,0 +1,31 @@
1
+ import styled from 'styled-components';
2
+
3
+ export const Container = styled.div<{ index: number }>`
4
+ flex: 1;
5
+ display: flex;
6
+ flex-direction: row;
7
+ align-items: center;
8
+ padding: 10px;
9
+ background-color: ${(props) =>
10
+ props.index % 2 === 1 ? 'rgba(0, 0, 0, 0.2)' : 'transparent'};
11
+
12
+ &:hover {
13
+ background-color: rgba(0, 0, 0, 0.7);
14
+ cursor: pointer;
15
+ }
16
+ `;
17
+
18
+ export const Col = styled.div`
19
+ &:first-child {
20
+ flex: 1;
21
+ }
22
+ `;
23
+
24
+ export const Id = styled.div`
25
+ color: goldenrod;
26
+ font-size: 16px;
27
+ `;
28
+
29
+ export const Type = styled.div`
30
+ color: brown;
31
+ `;
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ import { Container, Col, Id, Type } from './RequestRow.style';
3
+ import Time from '../Time/Time';
4
+ import { Json } from '../../types';
5
+ import { ApiRequest } from 'redux-connected';
6
+
7
+ export type RequestRowProps = {
8
+ style: Json;
9
+ item: ApiRequest;
10
+ index: number;
11
+ onClick: (item: ApiRequest) => void;
12
+ };
13
+
14
+ export function RequestRow(props: RequestRowProps) {
15
+ const { index, style, item } = props;
16
+ const { sequence, createdTS } = item;
17
+
18
+ return (
19
+ <Container
20
+ className='DevListRow-container'
21
+ data-testid='DevListRow-container'
22
+ style={style}
23
+ index={index}
24
+ onClick={() => props.onClick(item)}
25
+ >
26
+ <Col>
27
+ <Id>{sequence}</Id>
28
+ <Type>{item.originalAction?.type}</Type>
29
+ </Col>
30
+ <Col>
31
+ <Time value={createdTS} />
32
+ </Col>
33
+ </Container>
34
+ );
35
+ }
36
+
37
+ export default RequestRow;
@@ -0,0 +1,2 @@
1
+ .Time-container {
2
+ }
@@ -0,0 +1,17 @@
1
+ import styled from 'styled-components';
2
+
3
+ export const Container = styled.div`
4
+ color: yellowgreen;
5
+ display: flex;
6
+ flex-direction: row;
7
+ align-items: flex-start;
8
+ font-family: monospace;
9
+ `;
10
+
11
+ export const Full = styled.div`
12
+ font-size: 24px;
13
+ `;
14
+
15
+ export const Fraction = styled.div`
16
+ font-size: 12px;
17
+ `;
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import { startOfTime } from '../../utils/date';
3
+ import { Container, Full, Fraction } from './Time.style';
4
+
5
+ export type TimeProps = {
6
+ value: number;
7
+ };
8
+
9
+ export function Time(props: TimeProps) {
10
+ const { value } = props;
11
+
12
+ const relativeValue = (value - startOfTime) / 1000;
13
+
14
+ const full = Math.floor(relativeValue);
15
+ const fraction = (relativeValue - full).toFixed(3).split('.').pop();
16
+
17
+ return (
18
+ <Container className='Time-container' data-testid='Time-container'>
19
+ <Full>{full}</Full>
20
+ <Fraction>{fraction}</Fraction>
21
+ </Container>
22
+ );
23
+ }
24
+
25
+ export default Time;
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import { useSelector } from 'react-redux';
3
+ import DevMenu from '../components/DevMenu/DevMenu';
4
+ import { devGroups, devRoutes, IDevRoute } from '../data/devRoutes';
5
+ import { $menuBadges, $menuBadgesTotal } from '../store/selectors';
6
+
7
+ type DevPanelProps = {
8
+ selectedId: string;
9
+ onClick: (route: IDevRoute) => void;
10
+ };
11
+
12
+ export function DevMenuContainer(props: DevPanelProps) {
13
+ const badges = useSelector($menuBadges);
14
+ const badgesTotal = useSelector($menuBadgesTotal);
15
+
16
+ return (
17
+ <DevMenu
18
+ groups={devGroups}
19
+ items={devRoutes}
20
+ badges={badges}
21
+ badgesTotal={badgesTotal}
22
+ selectedId={props.selectedId}
23
+ onClick={props.onClick}
24
+ />
25
+ );
26
+ }
27
+
28
+ export default DevMenuContainer;