redux-connected-devtools 0.0.13 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (314) 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 -62
  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/Dispatcher/Dispatcher.d.ts +0 -8
  90. package/esm/components/Dispatcher/Dispatcher.js +0 -62
  91. package/esm/components/GlobalSettings/GlobalSettings.d.ts +0 -6
  92. package/esm/components/GlobalSettings/GlobalSettings.js +0 -16
  93. package/esm/components/Group/Group.d.ts +0 -9
  94. package/esm/components/Group/Group.js +0 -14
  95. package/esm/components/Json/Json.d.ts +0 -7
  96. package/esm/components/Json/Json.js +0 -9
  97. package/esm/components/Logs/Logs.d.ts +0 -6
  98. package/esm/components/Logs/Logs.js +0 -49
  99. package/esm/components/Monitor/Monitor.d.ts +0 -6
  100. package/esm/components/Monitor/Monitor.js +0 -52
  101. package/esm/components/OverlayManager/OverlayManager.d.ts +0 -6
  102. package/esm/components/OverlayManager/OverlayManager.js +0 -17
  103. package/esm/components/Panel/Panel.d.ts +0 -14
  104. package/esm/components/Panel/Panel.js +0 -46
  105. package/esm/components/Preview/Preview.d.ts +0 -19
  106. package/esm/components/Preview/Preview.js +0 -58
  107. package/esm/components/Redux/Redux.d.ts +0 -6
  108. package/esm/components/Redux/Redux.js +0 -72
  109. package/esm/components/ReduxSettings/ReduxSettings.d.ts +0 -9
  110. package/esm/components/ReduxSettings/ReduxSettings.js +0 -60
  111. package/esm/components/Requests/Requests.d.ts +0 -6
  112. package/esm/components/Requests/Requests.js +0 -61
  113. package/esm/components/Status/Status.d.ts +0 -6
  114. package/esm/components/Status/Status.js +0 -16
  115. package/esm/components/TaskManager/TaskManager.d.ts +0 -9
  116. package/esm/components/TaskManager/TaskManager.js +0 -22
  117. package/esm/components/Toggle/Toggle.d.ts +0 -9
  118. package/esm/components/Toggle/Toggle.js +0 -8
  119. package/esm/components/VirtualList/VirtualList.d.ts +0 -19
  120. package/esm/components/VirtualList/VirtualList.js +0 -30
  121. package/esm/components/Visual/Visual.d.ts +0 -6
  122. package/esm/components/Visual/Visual.js +0 -38
  123. package/esm/components/prefix.d.ts +0 -2
  124. package/esm/components/prefix.js +0 -2
  125. package/esm/data/boxSizes.d.ts +0 -2
  126. package/esm/data/boxSizes.js +0 -10
  127. package/esm/data/dispatcherActions.d.ts +0 -5
  128. package/esm/data/dispatcherActions.js +0 -35
  129. package/esm/data/panels.d.ts +0 -2
  130. package/esm/data/panels.js +0 -74
  131. package/esm/data/panelsArrangements.d.ts +0 -19
  132. package/esm/data/panelsArrangements.js +0 -19
  133. package/esm/data/reduxFilterOptions.d.ts +0 -20
  134. package/esm/data/reduxFilterOptions.js +0 -223
  135. package/esm/data/widgets.d.ts +0 -2
  136. package/esm/data/widgets.js +0 -85
  137. package/esm/hooks/index.d.ts +0 -7
  138. package/esm/hooks/index.js +0 -7
  139. package/esm/hooks/misc/hookState.d.ts +0 -8
  140. package/esm/hooks/misc/hookState.js +0 -6
  141. package/esm/hooks/misc/util.d.ts +0 -5
  142. package/esm/hooks/misc/util.js +0 -21
  143. package/esm/hooks/useBoolean.d.ts +0 -3
  144. package/esm/hooks/useBoolean.js +0 -3
  145. package/esm/hooks/useClickAway.d.ts +0 -3
  146. package/esm/hooks/useClickAway.js +0 -27
  147. package/esm/hooks/useEvent.d.ts +0 -13
  148. package/esm/hooks/useEvent.js +0 -35
  149. package/esm/hooks/useKey.d.ts +0 -12
  150. package/esm/hooks/useKey.js +0 -29
  151. package/esm/hooks/useList.d.ts +0 -57
  152. package/esm/hooks/useList.js +0 -74
  153. package/esm/hooks/useLocalstorage.d.ts +0 -10
  154. package/esm/hooks/useLocalstorage.js +0 -75
  155. package/esm/hooks/usePanels.d.ts +0 -10
  156. package/esm/hooks/usePanels.js +0 -43
  157. package/esm/hooks/useSetState.d.ts +0 -2
  158. package/esm/hooks/useSetState.js +0 -10
  159. package/esm/hooks/useToggle.d.ts +0 -2
  160. package/esm/hooks/useToggle.js +0 -6
  161. package/esm/hooks/useUpdate.d.ts +0 -1
  162. package/esm/hooks/useUpdate.js +0 -6
  163. package/esm/index.d.ts +0 -3
  164. package/esm/index.js +0 -3
  165. package/esm/selectors/selectors.d.ts +0 -21
  166. package/esm/selectors/selectors.js +0 -20
  167. package/esm/theme/devtoolsTheme.d.ts +0 -2
  168. package/esm/theme/devtoolsTheme.js +0 -95
  169. package/esm/utils/filter.d.ts +0 -3
  170. package/esm/utils/filter.js +0 -25
  171. package/esm/utils/localStorage.d.ts +0 -2
  172. package/esm/utils/localStorage.js +0 -21
  173. package/lib/components/Colors copy.css +0 -3
  174. package/lib/components/Colors copy.css.map +0 -1
  175. package/lib/components/Colors.css +0 -3
  176. package/lib/components/Colors.css.map +0 -1
  177. package/lib/components/ColorsDark.css +0 -3
  178. package/lib/components/ColorsDark.css.map +0 -1
  179. package/lib/components/Config/Config.css +0 -15
  180. package/lib/components/Config/Config.css.map +0 -1
  181. package/lib/components/Config/Config.d.ts +0 -6
  182. package/lib/components/Config/Config.js +0 -20
  183. package/lib/components/DevTools/DevTools.css +0 -3
  184. package/lib/components/DevTools/DevTools.css.map +0 -1
  185. package/lib/components/DevTools/DevTools.d.ts +0 -4
  186. package/lib/components/DevTools/DevTools.js +0 -24
  187. package/lib/components/Dispatcher/Dispatcher.css +0 -15
  188. package/lib/components/Dispatcher/Dispatcher.css.map +0 -1
  189. package/lib/components/Dispatcher/Dispatcher.d.ts +0 -8
  190. package/lib/components/Dispatcher/Dispatcher.js +0 -66
  191. package/lib/components/GlobalSettings/GlobalSettings.css +0 -3
  192. package/lib/components/GlobalSettings/GlobalSettings.css.map +0 -1
  193. package/lib/components/GlobalSettings/GlobalSettings.d.ts +0 -6
  194. package/lib/components/GlobalSettings/GlobalSettings.js +0 -21
  195. package/lib/components/Group/Group.css +0 -41
  196. package/lib/components/Group/Group.css.map +0 -1
  197. package/lib/components/Group/Group.d.ts +0 -9
  198. package/lib/components/Group/Group.js +0 -19
  199. package/lib/components/Json/Json.css +0 -3
  200. package/lib/components/Json/Json.css.map +0 -1
  201. package/lib/components/Json/Json.d.ts +0 -7
  202. package/lib/components/Json/Json.js +0 -14
  203. package/lib/components/Logs/Logs.css +0 -3
  204. package/lib/components/Logs/Logs.css.map +0 -1
  205. package/lib/components/Logs/Logs.d.ts +0 -6
  206. package/lib/components/Logs/Logs.js +0 -54
  207. package/lib/components/Monitor/Monitor.css +0 -3
  208. package/lib/components/Monitor/Monitor.css.map +0 -1
  209. package/lib/components/Monitor/Monitor.d.ts +0 -6
  210. package/lib/components/Monitor/Monitor.js +0 -57
  211. package/lib/components/OverlayManager/OverlayManager.css +0 -72
  212. package/lib/components/OverlayManager/OverlayManager.css.map +0 -1
  213. package/lib/components/OverlayManager/OverlayManager.d.ts +0 -6
  214. package/lib/components/OverlayManager/OverlayManager.js +0 -22
  215. package/lib/components/Panel/Panel.css +0 -35
  216. package/lib/components/Panel/Panel.css.map +0 -1
  217. package/lib/components/Panel/Panel.d.ts +0 -14
  218. package/lib/components/Panel/Panel.js +0 -51
  219. package/lib/components/Prefix copy.css +0 -3
  220. package/lib/components/Prefix copy.css.map +0 -1
  221. package/lib/components/Prefix.css +0 -3
  222. package/lib/components/Prefix.css.map +0 -1
  223. package/lib/components/Preview/Preview.css +0 -29
  224. package/lib/components/Preview/Preview.css.map +0 -1
  225. package/lib/components/Preview/Preview.d.ts +0 -19
  226. package/lib/components/Preview/Preview.js +0 -64
  227. package/lib/components/Reading.css +0 -107
  228. package/lib/components/Reading.css.map +0 -1
  229. package/lib/components/Redux/Redux.css +0 -86
  230. package/lib/components/Redux/Redux.css.map +0 -1
  231. package/lib/components/Redux/Redux.d.ts +0 -6
  232. package/lib/components/Redux/Redux.js +0 -77
  233. package/lib/components/ReduxSettings/ReduxSettings.css +0 -10
  234. package/lib/components/ReduxSettings/ReduxSettings.css.map +0 -1
  235. package/lib/components/ReduxSettings/ReduxSettings.d.ts +0 -9
  236. package/lib/components/ReduxSettings/ReduxSettings.js +0 -64
  237. package/lib/components/Requests/Requests.css +0 -8
  238. package/lib/components/Requests/Requests.css.map +0 -1
  239. package/lib/components/Requests/Requests.d.ts +0 -6
  240. package/lib/components/Requests/Requests.js +0 -66
  241. package/lib/components/Status/Status.css +0 -15
  242. package/lib/components/Status/Status.css.map +0 -1
  243. package/lib/components/Status/Status.d.ts +0 -6
  244. package/lib/components/Status/Status.js +0 -21
  245. package/lib/components/TaskManager/TaskManager.css +0 -9
  246. package/lib/components/TaskManager/TaskManager.css.map +0 -1
  247. package/lib/components/TaskManager/TaskManager.d.ts +0 -9
  248. package/lib/components/TaskManager/TaskManager.js +0 -28
  249. package/lib/components/Toggle/Toggle.css +0 -3
  250. package/lib/components/Toggle/Toggle.css.map +0 -1
  251. package/lib/components/Toggle/Toggle.d.ts +0 -9
  252. package/lib/components/Toggle/Toggle.js +0 -13
  253. package/lib/components/Variables.css +0 -3
  254. package/lib/components/Variables.css.map +0 -1
  255. package/lib/components/VirtualList/VirtualList.css +0 -13
  256. package/lib/components/VirtualList/VirtualList.css.map +0 -1
  257. package/lib/components/VirtualList/VirtualList.d.ts +0 -19
  258. package/lib/components/VirtualList/VirtualList.js +0 -35
  259. package/lib/components/Visual/Visual.css +0 -56
  260. package/lib/components/Visual/Visual.css.map +0 -1
  261. package/lib/components/Visual/Visual.d.ts +0 -6
  262. package/lib/components/Visual/Visual.js +0 -43
  263. package/lib/components/prefix.d.ts +0 -2
  264. package/lib/components/prefix.js +0 -5
  265. package/lib/data/boxSizes.d.ts +0 -2
  266. package/lib/data/boxSizes.js +0 -13
  267. package/lib/data/dispatcherActions.d.ts +0 -5
  268. package/lib/data/dispatcherActions.js +0 -38
  269. package/lib/data/panels.d.ts +0 -2
  270. package/lib/data/panels.js +0 -77
  271. package/lib/data/panelsArrangements.d.ts +0 -19
  272. package/lib/data/panelsArrangements.js +0 -22
  273. package/lib/data/reduxFilterOptions.d.ts +0 -20
  274. package/lib/data/reduxFilterOptions.js +0 -227
  275. package/lib/data/widgets.d.ts +0 -2
  276. package/lib/data/widgets.js +0 -89
  277. package/lib/hooks/index.d.ts +0 -7
  278. package/lib/hooks/index.js +0 -17
  279. package/lib/hooks/misc/hookState.d.ts +0 -8
  280. package/lib/hooks/misc/hookState.js +0 -10
  281. package/lib/hooks/misc/util.d.ts +0 -5
  282. package/lib/hooks/misc/util.js +0 -27
  283. package/lib/hooks/useBoolean.d.ts +0 -3
  284. package/lib/hooks/useBoolean.js +0 -7
  285. package/lib/hooks/useClickAway.d.ts +0 -3
  286. package/lib/hooks/useClickAway.js +0 -31
  287. package/lib/hooks/useEvent.d.ts +0 -13
  288. package/lib/hooks/useEvent.js +0 -37
  289. package/lib/hooks/useKey.d.ts +0 -12
  290. package/lib/hooks/useKey.js +0 -34
  291. package/lib/hooks/useList.d.ts +0 -57
  292. package/lib/hooks/useList.js +0 -79
  293. package/lib/hooks/useLocalstorage.d.ts +0 -10
  294. package/lib/hooks/useLocalstorage.js +0 -79
  295. package/lib/hooks/usePanels.d.ts +0 -10
  296. package/lib/hooks/usePanels.js +0 -47
  297. package/lib/hooks/useSetState.d.ts +0 -2
  298. package/lib/hooks/useSetState.js +0 -14
  299. package/lib/hooks/useToggle.d.ts +0 -2
  300. package/lib/hooks/useToggle.js +0 -10
  301. package/lib/hooks/useUpdate.d.ts +0 -1
  302. package/lib/hooks/useUpdate.js +0 -9
  303. package/lib/index.css +0 -488
  304. package/lib/index.css.map +0 -1
  305. package/lib/index.d.ts +0 -3
  306. package/lib/index.js +0 -9
  307. package/lib/selectors/selectors.d.ts +0 -21
  308. package/lib/selectors/selectors.js +0 -24
  309. package/lib/theme/devtoolsTheme.d.ts +0 -2
  310. package/lib/theme/devtoolsTheme.js +0 -97
  311. package/lib/utils/filter.d.ts +0 -3
  312. package/lib/utils/filter.js +0 -29
  313. package/lib/utils/localStorage.d.ts +0 -2
  314. package/lib/utils/localStorage.js +0 -26
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import DevPanel from '../components/DevPanel/DevPanel';
3
+
4
+ type DevPanelProps = {};
5
+
6
+ export function DevPanelContainer(_props: DevPanelProps) {
7
+ return <DevPanel />;
8
+ }
9
+
10
+ export default DevPanelContainer;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import JsonViewer from '../components/JsonViewer/JsonViewer';
3
+ import { connectedSelectors } from 'redux-connected';
4
+ import { useSelector } from 'react-redux';
5
+
6
+ export function EndpointConfigsContainer() {
7
+ const json = useSelector(connectedSelectors.$endpointsConfigRaw);
8
+
9
+ return <JsonViewer json={json} />;
10
+ }
11
+
12
+ export default EndpointConfigsContainer;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import JsonViewer from '../components/JsonViewer/JsonViewer';
3
+ import { connectedSelectors } from 'redux-connected';
4
+ import { useSelector } from 'react-redux';
5
+
6
+ export function EndpointStatusContainer() {
7
+ const json = useSelector(connectedSelectors.$endpointsStateRaw);
8
+
9
+ return <JsonViewer json={json} />;
10
+ }
11
+
12
+ export default EndpointStatusContainer;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { useSelector } from 'react-redux';
3
+ import JsonViewer from '../components/JsonViewer/JsonViewer';
4
+ import { connectedSelectors } from 'redux-connected';
5
+
6
+ export function GlobalSettingsContainer() {
7
+ const json = useSelector(connectedSelectors.$apiGlobalSettingsRaw);
8
+
9
+ return <JsonViewer json={json} />;
10
+ }
11
+
12
+ export default GlobalSettingsContainer;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { useSelector } from 'react-redux';
3
+ import JsonViewer from '../components/JsonViewer/JsonViewer';
4
+ import { connectedSelectors } from 'redux-connected';
5
+
6
+ export function GlobalStatsContainer() {
7
+ const json = useSelector(connectedSelectors.$apiGlobalStatsRaw);
8
+
9
+ return <JsonViewer json={json} />;
10
+ }
11
+
12
+ export default GlobalStatsContainer;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { useSelector } from 'react-redux';
3
+ import Lifecycle from '../components/Lifecycle/Lifecycle';
4
+ import { $requestsApiErrorPast } from '../store/selectors';
5
+
6
+ export function LifecycleApiErrorContainer() {
7
+ const requests = useSelector($requestsApiErrorPast);
8
+ return <Lifecycle requests={requests} />;
9
+ }
10
+
11
+ export default LifecycleApiErrorContainer;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { useSelector } from 'react-redux';
3
+ import Lifecycle from '../components/Lifecycle/Lifecycle';
4
+ import { $requestsGeneralErrorPast } from '../store/selectors';
5
+
6
+ export function LifecycleGeneralErrorContainer() {
7
+ const requests = useSelector($requestsGeneralErrorPast);
8
+ return <Lifecycle requests={requests} />;
9
+ }
10
+
11
+ export default LifecycleGeneralErrorContainer;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { useSelector } from 'react-redux';
3
+ import Lifecycle from '../components/Lifecycle/Lifecycle';
4
+ import { $requestsInQueuePast } from '../store/selectors';
5
+
6
+ export function LifecycleInQueueContainer() {
7
+ const requests = useSelector($requestsInQueuePast);
8
+ return <Lifecycle requests={requests} />;
9
+ }
10
+
11
+ export default LifecycleInQueueContainer;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { useSelector } from 'react-redux';
3
+ import Lifecycle from '../components/Lifecycle/Lifecycle';
4
+ import { $requestsPendingApiPast } from '../store/selectors';
5
+
6
+ export function LifecyclePendingApiContainer() {
7
+ const requests = useSelector($requestsPendingApiPast);
8
+ return <Lifecycle requests={requests} />;
9
+ }
10
+
11
+ export default LifecyclePendingApiContainer;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { useSelector } from 'react-redux';
3
+ import Lifecycle from '../components/Lifecycle/Lifecycle';
4
+ import { $requestsPostActionPast } from '../store/selectors';
5
+
6
+ export function LifecyclePostActionContainer() {
7
+ const requests = useSelector($requestsPostActionPast);
8
+ return <Lifecycle requests={requests} />;
9
+ }
10
+
11
+ export default LifecyclePostActionContainer;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { useSelector } from 'react-redux';
3
+ import Lifecycle from '../components/Lifecycle/Lifecycle';
4
+ import { $requestsReceivedPast } from '../store/selectors';
5
+
6
+ export function LifecycleReceivedContainer() {
7
+ const requests = useSelector($requestsReceivedPast);
8
+ return <Lifecycle requests={requests} />;
9
+ }
10
+
11
+ export default LifecycleReceivedContainer;
@@ -0,0 +1,19 @@
1
+ window.addEventListener('message', function (event) {
2
+ // Only accept messages from the same frame
3
+ if (event.source !== window) {
4
+ return;
5
+ }
6
+
7
+ const message = event.data as any;
8
+
9
+ // Only accept messages that we know are ours
10
+ if (
11
+ typeof message !== 'object' ||
12
+ message === null ||
13
+ message.source !== 'devtools-page'
14
+ ) {
15
+ return;
16
+ }
17
+
18
+ chrome.runtime.sendMessage(message);
19
+ });
@@ -0,0 +1,25 @@
1
+ import LifecycleReceivedContainer from '../containers/LifecycleReceivedContainer';
2
+ import GlobalStatsContainer from '../containers/GlobalStatsContainer';
3
+ import EndpointConfigsContainer from '../containers/EndpointConfigsContainer';
4
+ import GlobalSettingsContainer from '../containers/GlobalSettingsContainer';
5
+ import EndpointStatusContainer from '../containers/EndpointStatusContainer';
6
+ import LifecycleInQueueContainer from '../containers/LifecycleInQueueContainer';
7
+ import LifecycleGeneralErrorContainer from '../containers/LifecycleGeneralErrorContainer';
8
+ import LifecyclePendingApiContainer from '../containers/LifecyclePendingApiContainer';
9
+ import LifecycleApiErrorContainer from '../containers/LifecycleApiErrorContainer';
10
+ import LifecyclePostActionContainer from '../containers/LifecyclePostActionContainer';
11
+
12
+ type DevComponents = Record<string, React.FC<any>>;
13
+
14
+ export const devComponents: DevComponents = {
15
+ LifecycleReceived: LifecycleReceivedContainer,
16
+ LifecycleInQueue: LifecycleInQueueContainer,
17
+ LifecycleGeneralError: LifecycleGeneralErrorContainer,
18
+ LifecyclePendingApi: LifecyclePendingApiContainer,
19
+ LifecycleApiError: LifecycleApiErrorContainer,
20
+ LifecyclePostAction: LifecyclePostActionContainer,
21
+ GlobalSettings: GlobalSettingsContainer,
22
+ GlobalStats: GlobalStatsContainer,
23
+ EndpointConfigs: EndpointConfigsContainer,
24
+ EndpointStatus: EndpointStatusContainer,
25
+ };
@@ -0,0 +1,83 @@
1
+ export type IDevRoute = {
2
+ id: string;
3
+ title: string;
4
+ group: string;
5
+ componentId: string;
6
+ };
7
+
8
+ export const devRoutes: IDevRoute[] = [
9
+ {
10
+ id: 'lifecycleReceived',
11
+ title: '1. Received',
12
+ group: 'lifecycle',
13
+ componentId: 'LifecycleReceived',
14
+ },
15
+ {
16
+ id: 'lifecycleInQueue',
17
+ title: '2. In queue',
18
+ group: 'lifecycle',
19
+ componentId: 'LifecycleInQueue',
20
+ },
21
+ {
22
+ id: 'lifecycleGeneralError',
23
+ title: '3. General error',
24
+ group: 'lifecycle',
25
+ componentId: 'LifecycleGeneralError',
26
+ },
27
+ {
28
+ id: 'lifecyclePendingApi',
29
+ title: '4. Pending API',
30
+ group: 'lifecycle',
31
+ componentId: 'LifecyclePendingApi',
32
+ },
33
+ {
34
+ id: 'lifecycleApiError',
35
+ title: '5. API error',
36
+ group: 'lifecycle',
37
+ componentId: 'LifecycleApiError',
38
+ },
39
+ {
40
+ id: 'lifecyclePostAction',
41
+ title: '6. Post action',
42
+ group: 'lifecycle',
43
+ componentId: 'LifecyclePostAction',
44
+ },
45
+ {
46
+ id: 'endpointStatus',
47
+ title: 'Endpoint status',
48
+ group: 'state',
49
+ componentId: 'EndpointStatus',
50
+ },
51
+ {
52
+ id: 'settingsGlobal',
53
+ title: 'Global settings',
54
+ group: 'settings & stats',
55
+ componentId: 'GlobalSettings',
56
+ },
57
+ {
58
+ id: 'settingsEndpoints',
59
+ title: 'Endpoints configs',
60
+ group: 'settings & stats',
61
+ componentId: 'EndpointConfigs',
62
+ },
63
+ {
64
+ id: 'statsGlobal',
65
+ title: 'Global stats',
66
+ group: 'settings & stats',
67
+ componentId: 'GlobalStats',
68
+ },
69
+ ];
70
+
71
+ const getGroups = (): string[] => {
72
+ const output: string[] = [];
73
+
74
+ devRoutes.forEach((group) => {
75
+ if (!output.includes(group.group)) {
76
+ output.push(group.group);
77
+ }
78
+ });
79
+
80
+ return output;
81
+ };
82
+
83
+ export const devGroups: string[] = getGroups();
@@ -0,0 +1,29 @@
1
+ // devtools.js
2
+ const backgroundPageConnection = chrome.runtime.connect({
3
+ name: 'devtools-page',
4
+ });
5
+
6
+ let panel: any;
7
+
8
+ chrome.devtools.panels.create(
9
+ 'Redux connected',
10
+ '',
11
+ 'panel.html',
12
+ function (_panel) {
13
+ panel = _panel;
14
+
15
+ backgroundPageConnection.postMessage({
16
+ name: 'init',
17
+ tabId: chrome.devtools.inspectedWindow.tabId,
18
+ });
19
+
20
+ backgroundPageConnection.postMessage({
21
+ tabId: chrome.devtools.inspectedWindow.tabId,
22
+ scriptToInject: 'injected_script.js',
23
+ });
24
+
25
+ backgroundPageConnection.onMessage.addListener(function (message: any) {
26
+ // Handle responses from the background page, if any
27
+ });
28
+ }
29
+ );
package/src/index.ts ADDED
@@ -0,0 +1 @@
1
+ export { DevPanelContainer } from './containers/DevPanelContainer';
@@ -0,0 +1,9 @@
1
+ // injected-script.js
2
+
3
+ window.postMessage(
4
+ {
5
+ greeting: 'hello there!',
6
+ source: 'devtools-page',
7
+ },
8
+ '*'
9
+ );
@@ -0,0 +1,77 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import ReactDOM from 'react-dom';
3
+
4
+ const Options = () => {
5
+ const [color, setColor] = useState<string>('');
6
+ const [status, setStatus] = useState<string>('');
7
+ const [like, setLike] = useState<boolean>(false);
8
+
9
+ useEffect(() => {
10
+ // Restores select box and checkbox state using the preferences
11
+ // stored in chrome.storage.
12
+ chrome.storage.sync.get(
13
+ {
14
+ favoriteColor: 'red',
15
+ likesColor: true,
16
+ },
17
+ (items) => {
18
+ setColor(items.favoriteColor);
19
+ setLike(items.likesColor);
20
+ }
21
+ );
22
+ }, []);
23
+
24
+ const saveOptions = () => {
25
+ // Saves options to chrome.storage.sync.
26
+ chrome.storage.sync.set(
27
+ {
28
+ favoriteColor: color,
29
+ likesColor: like,
30
+ },
31
+ () => {
32
+ // Update status to let user know options were saved.
33
+ setStatus('Options saved.');
34
+ const id = setTimeout(() => {
35
+ setStatus('');
36
+ }, 1000);
37
+ return () => clearTimeout(id);
38
+ }
39
+ );
40
+ };
41
+
42
+ return (
43
+ <>
44
+ <div>
45
+ Favorite color:{' '}
46
+ <select
47
+ value={color}
48
+ onChange={(event) => setColor(event.target.value)}
49
+ >
50
+ <option value='red'>red</option>
51
+ <option value='green'>green</option>
52
+ <option value='blue'>blue</option>
53
+ <option value='yellow'>yellow</option>
54
+ </select>
55
+ </div>
56
+ <div>
57
+ <label>
58
+ <input
59
+ type='checkbox'
60
+ checked={like}
61
+ onChange={(event) => setLike(event.target.checked)}
62
+ />
63
+ I like colors.
64
+ </label>
65
+ </div>
66
+ <div>{status}</div>
67
+ <button onClick={saveOptions}>Save</button>
68
+ </>
69
+ );
70
+ };
71
+
72
+ ReactDOM.render(
73
+ <React.StrictMode>
74
+ <Options />
75
+ </React.StrictMode>,
76
+ document.getElementById('root')
77
+ );
package/src/panel.tsx ADDED
@@ -0,0 +1,30 @@
1
+ import DevPanel from './containers/DevPanelContainer';
2
+ import React from 'react';
3
+ import ReactDOM from 'react-dom';
4
+ import { Provider } from 'react-redux';
5
+ import { store } from './store/initialState';
6
+
7
+ ReactDOM.render(
8
+ <React.StrictMode>
9
+ <Provider store={store}>
10
+ <DevPanel />
11
+ </Provider>
12
+ </React.StrictMode>,
13
+ document.getElementById('root')
14
+ );
15
+
16
+ chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
17
+ if (sender.origin?.indexOf('http://localhost') === 0) {
18
+ const store = (window as any).store;
19
+
20
+ switch (request.type) {
21
+ case 'CONNECTED_STATE':
22
+ break;
23
+ case 'CONNECTED_ACTION':
24
+ const { payload } = request;
25
+ const { action } = payload;
26
+ store.dispatch(action);
27
+ break;
28
+ }
29
+ }
30
+ });
package/src/popup.tsx ADDED
@@ -0,0 +1,63 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import ReactDOM from 'react-dom';
3
+
4
+ const Popup = () => {
5
+ const [count, setCount] = useState(0);
6
+ const [currentURL, setCurrentURL] = useState<string>();
7
+
8
+ useEffect(() => {
9
+ chrome.action.setBadgeText({ text: count.toString() });
10
+ }, [count]);
11
+
12
+ useEffect(() => {
13
+ chrome.tabs.query(
14
+ { active: true, currentWindow: true },
15
+ function (tabs) {
16
+ setCurrentURL(tabs[0].url);
17
+ }
18
+ );
19
+ }, []);
20
+
21
+ const changeBackground = () => {
22
+ chrome.tabs.query(
23
+ { active: true, currentWindow: true },
24
+ function (tabs) {
25
+ const tab = tabs[0];
26
+ if (tab.id) {
27
+ chrome.tabs.sendMessage(
28
+ tab.id,
29
+ {
30
+ color: '#555555',
31
+ },
32
+ (msg) => {
33
+ console.log('result message:', msg);
34
+ }
35
+ );
36
+ }
37
+ }
38
+ );
39
+ };
40
+
41
+ return (
42
+ <>
43
+ <ul style={{ minWidth: '700px' }}>
44
+ <li>Current URL: {currentURL}</li>
45
+ <li>Current Time: {new Date().toLocaleTimeString()}</li>
46
+ </ul>
47
+ <button
48
+ onClick={() => setCount(count + 1)}
49
+ style={{ marginRight: '5px' }}
50
+ >
51
+ count up
52
+ </button>
53
+ <button onClick={changeBackground}>change background</button>
54
+ </>
55
+ );
56
+ };
57
+
58
+ ReactDOM.render(
59
+ <React.StrictMode>
60
+ <Popup />
61
+ </React.StrictMode>,
62
+ document.getElementById('root')
63
+ );
@@ -0,0 +1,42 @@
1
+ import {
2
+ generateConnectedStoreEmpty,
3
+ IReduxConnectedConfig,
4
+ ConnectionType,
5
+ RetryStrategy,
6
+ } from 'redux-connected';
7
+
8
+ type IAppState = {
9
+ name: string;
10
+ email: string;
11
+ };
12
+
13
+ export type MyStore = {
14
+ appState: IAppState;
15
+ };
16
+
17
+ export const initialState: MyStore = {
18
+ appState: {
19
+ name: 'User2',
20
+ email: 'user@example.com',
21
+ },
22
+ };
23
+
24
+ const config: IReduxConnectedConfig = {
25
+ defaultEndpointsConfig: {
26
+ id: 'default',
27
+ connectionType: ConnectionType.REST,
28
+ retryStrategy: RetryStrategy.X2_TIMES,
29
+ },
30
+ endpointsConfigOverrides: {
31
+ appState: {
32
+ connectionType: ConnectionType.NONE,
33
+ },
34
+ logs: {
35
+ connectionType: ConnectionType.NONE,
36
+ },
37
+ },
38
+ adapters: {},
39
+ };
40
+
41
+ export const store = generateConnectedStoreEmpty(initialState, config);
42
+ (window as any).store = store;