react-native-inapp-inspector 1.1.14 → 1.1.16

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 (246) hide show
  1. package/README.md +133 -151
  2. package/dist/commonjs/assets/svgAssets.d.ts +3 -0
  3. package/dist/commonjs/assets/svgAssets.js +17 -0
  4. package/dist/commonjs/components/AnalyticsEventCard.d.ts +1 -14
  5. package/dist/commonjs/components/AnalyticsEventCard.js +34 -51
  6. package/dist/commonjs/components/AnalyticsGraph.d.ts +2 -6
  7. package/dist/commonjs/components/AnalyticsGraph.js +8 -8
  8. package/dist/commonjs/components/AnalyticsTabView.d.ts +15 -0
  9. package/dist/commonjs/components/AnalyticsTabView.js +157 -0
  10. package/dist/commonjs/components/AnimatedEntrance.d.ts +1 -1
  11. package/dist/commonjs/components/AnimatedEntrance.js +2 -2
  12. package/dist/commonjs/components/ApiDetailView.d.ts +22 -0
  13. package/dist/commonjs/components/ApiDetailView.js +304 -0
  14. package/dist/commonjs/components/ApisTabView.d.ts +33 -0
  15. package/dist/commonjs/components/ApisTabView.js +235 -0
  16. package/dist/commonjs/components/CodeSnippet.d.ts +1 -5
  17. package/dist/commonjs/components/CodeSnippet.js +34 -34
  18. package/dist/commonjs/components/ConsoleLogCard.d.ts +1 -8
  19. package/dist/commonjs/components/ConsoleLogCard.js +262 -442
  20. package/dist/commonjs/components/ConsoleLogDetailView.d.ts +9 -0
  21. package/dist/commonjs/components/ConsoleLogDetailView.js +278 -0
  22. package/dist/commonjs/components/ConsoleLogsTabView.d.ts +24 -0
  23. package/dist/commonjs/components/ConsoleLogsTabView.js +354 -0
  24. package/dist/commonjs/components/CopyButton.d.ts +1 -1
  25. package/dist/commonjs/components/CopyButton.js +4 -4
  26. package/dist/commonjs/components/DiffViewer.js +4 -2
  27. package/dist/commonjs/components/DomainHeader.js +66 -41
  28. package/dist/commonjs/components/EmptyState.d.ts +2 -2
  29. package/dist/commonjs/components/EmptyState.js +2 -2
  30. package/dist/commonjs/components/EndOfListFooter.d.ts +8 -0
  31. package/dist/commonjs/components/EndOfListFooter.js +89 -0
  32. package/dist/commonjs/components/ErrorBoundary.d.ts +5 -14
  33. package/dist/commonjs/components/ErrorBoundary.js +28 -28
  34. package/dist/commonjs/components/FloatingBubble.d.ts +14 -0
  35. package/dist/commonjs/components/FloatingBubble.js +75 -0
  36. package/dist/commonjs/components/HeadersSection.js +5 -3
  37. package/dist/commonjs/components/HighlightText.d.ts +1 -1
  38. package/dist/commonjs/components/HighlightText.js +5 -7
  39. package/dist/commonjs/components/Inspector/AnalyticsTab.d.ts +3 -0
  40. package/dist/commonjs/components/Inspector/AnalyticsTab.js +231 -0
  41. package/dist/commonjs/components/Inspector/ConsoleTab.d.ts +3 -0
  42. package/dist/commonjs/components/Inspector/ConsoleTab.js +410 -0
  43. package/dist/commonjs/components/Inspector/FabLauncher.d.ts +3 -0
  44. package/dist/commonjs/components/Inspector/FabLauncher.js +54 -0
  45. package/dist/commonjs/components/Inspector/InsightsDashboard.d.ts +3 -0
  46. package/dist/commonjs/components/Inspector/InsightsDashboard.js +619 -0
  47. package/dist/commonjs/components/Inspector/InspectorContext.d.ts +5 -0
  48. package/dist/commonjs/components/Inspector/InspectorContext.js +18 -0
  49. package/dist/commonjs/components/Inspector/InspectorHeader.d.ts +3 -0
  50. package/dist/commonjs/components/Inspector/InspectorHeader.js +452 -0
  51. package/dist/commonjs/components/Inspector/LogDetail.d.ts +3 -0
  52. package/dist/commonjs/components/Inspector/LogDetail.js +963 -0
  53. package/dist/commonjs/components/Inspector/MainScreen.d.ts +3 -0
  54. package/dist/commonjs/components/Inspector/MainScreen.js +68 -0
  55. package/dist/commonjs/components/Inspector/NavigationTracker.d.ts +3 -0
  56. package/dist/commonjs/components/Inspector/NavigationTracker.js +12 -0
  57. package/dist/commonjs/components/Inspector/NetworkDetail.d.ts +3 -0
  58. package/dist/commonjs/components/Inspector/NetworkDetail.js +405 -0
  59. package/dist/commonjs/components/Inspector/NetworkTab.d.ts +3 -0
  60. package/dist/commonjs/components/Inspector/NetworkTab.js +282 -0
  61. package/dist/commonjs/components/Inspector/ReduxTab.d.ts +3 -0
  62. package/dist/commonjs/components/Inspector/ReduxTab.js +75 -0
  63. package/dist/commonjs/components/Inspector/SettingsPanel.d.ts +3 -0
  64. package/dist/commonjs/components/Inspector/SettingsPanel.js +1476 -0
  65. package/dist/commonjs/components/Inspector/TabBar.d.ts +3 -0
  66. package/dist/commonjs/components/Inspector/TabBar.js +95 -0
  67. package/dist/commonjs/components/Inspector/WebViewTab.d.ts +3 -0
  68. package/dist/commonjs/components/Inspector/WebViewTab.js +757 -0
  69. package/dist/commonjs/components/InspectorHeader.d.ts +19 -0
  70. package/dist/commonjs/components/InspectorHeader.js +329 -0
  71. package/dist/commonjs/components/InspectorTabBar.d.ts +16 -0
  72. package/dist/commonjs/components/InspectorTabBar.js +90 -0
  73. package/dist/commonjs/components/JsonViewer.d.ts +5 -2
  74. package/dist/commonjs/components/JsonViewer.js +111 -172
  75. package/dist/commonjs/components/LogCard.js +109 -86
  76. package/dist/commonjs/components/MetaAccordion.d.ts +1 -10
  77. package/dist/commonjs/components/MetaAccordion.js +23 -21
  78. package/dist/commonjs/components/NavigationTracker.d.ts +7 -0
  79. package/dist/commonjs/components/NavigationTracker.js +76 -0
  80. package/dist/commonjs/components/NetworkIcons.d.ts +6 -0
  81. package/dist/commonjs/components/NetworkIcons.js +54 -8
  82. package/dist/commonjs/components/ReduxTabView.d.ts +9 -0
  83. package/dist/commonjs/components/ReduxTabView.js +56 -0
  84. package/dist/commonjs/components/ReduxTreeView.d.ts +2 -2
  85. package/dist/commonjs/components/ReduxTreeView.js +243 -203
  86. package/dist/commonjs/components/SegmentedTabs.d.ts +15 -0
  87. package/dist/commonjs/components/SegmentedTabs.js +52 -0
  88. package/dist/commonjs/components/SettingsView.d.ts +13 -0
  89. package/dist/commonjs/components/SettingsView.js +328 -0
  90. package/dist/commonjs/components/TouchableScale.d.ts +2 -2
  91. package/dist/commonjs/components/TouchableScale.js +2 -2
  92. package/dist/commonjs/components/TreeNode.js +2 -2
  93. package/dist/commonjs/constants/index.js +1 -12
  94. package/dist/commonjs/constants/version.d.ts +1 -1
  95. package/dist/commonjs/constants/version.js +1 -1
  96. package/dist/commonjs/customHooks/consoleLogger.js +137 -13
  97. package/dist/commonjs/customHooks/networkLogger.d.ts +0 -1
  98. package/dist/commonjs/customHooks/networkLogger.js +0 -1
  99. package/dist/commonjs/customHooks/reduxLogger.d.ts +2 -9
  100. package/dist/commonjs/enums/index.d.ts +39 -0
  101. package/dist/commonjs/enums/index.js +50 -0
  102. package/dist/commonjs/helpers/index.d.ts +27 -1
  103. package/dist/commonjs/helpers/index.js +187 -12
  104. package/dist/commonjs/helpers/settingsStore.d.ts +2 -24
  105. package/dist/commonjs/i18n/en.json +144 -0
  106. package/dist/commonjs/i18n/index.d.ts +2 -0
  107. package/dist/commonjs/i18n/index.js +27 -0
  108. package/dist/commonjs/i18n/locales/en.json +314 -0
  109. package/dist/commonjs/index.d.ts +1 -2
  110. package/dist/commonjs/index.js +196 -4800
  111. package/dist/commonjs/styles/AppColors.d.ts +148 -0
  112. package/dist/commonjs/styles/AppColors.js +176 -0
  113. package/dist/commonjs/styles/common.d.ts +3 -0
  114. package/dist/commonjs/styles/common.js +201 -0
  115. package/dist/commonjs/styles/index.d.ts +167 -442
  116. package/dist/commonjs/styles/index.js +239 -471
  117. package/dist/commonjs/types/enums.d.ts +9 -0
  118. package/dist/commonjs/types/enums.js +4 -0
  119. package/dist/commonjs/types/index.d.ts +4 -111
  120. package/dist/commonjs/types/index.js +16 -0
  121. package/dist/commonjs/types/interfaces.d.ts +337 -0
  122. package/dist/commonjs/types/interfaces.js +2 -0
  123. package/dist/esm/assets/svgAssets.d.ts +3 -0
  124. package/dist/esm/assets/svgAssets.js +14 -0
  125. package/dist/esm/components/AnalyticsEventCard.d.ts +1 -14
  126. package/dist/esm/components/AnalyticsEventCard.js +32 -49
  127. package/dist/esm/components/AnalyticsGraph.d.ts +2 -6
  128. package/dist/esm/components/AnalyticsGraph.js +8 -8
  129. package/dist/esm/components/AnalyticsTabView.d.ts +15 -0
  130. package/dist/esm/components/AnalyticsTabView.js +151 -0
  131. package/dist/esm/components/AnimatedEntrance.d.ts +1 -1
  132. package/dist/esm/components/AnimatedEntrance.js +2 -2
  133. package/dist/esm/components/ApiDetailView.d.ts +22 -0
  134. package/dist/esm/components/ApiDetailView.js +264 -0
  135. package/dist/esm/components/ApisTabView.d.ts +33 -0
  136. package/dist/esm/components/ApisTabView.js +196 -0
  137. package/dist/esm/components/CodeSnippet.d.ts +1 -5
  138. package/dist/esm/components/CodeSnippet.js +34 -34
  139. package/dist/esm/components/ConsoleLogCard.d.ts +1 -8
  140. package/dist/esm/components/ConsoleLogCard.js +262 -409
  141. package/dist/esm/components/ConsoleLogDetailView.d.ts +9 -0
  142. package/dist/esm/components/ConsoleLogDetailView.js +271 -0
  143. package/dist/esm/components/ConsoleLogsTabView.d.ts +24 -0
  144. package/dist/esm/components/ConsoleLogsTabView.js +348 -0
  145. package/dist/esm/components/CopyButton.d.ts +1 -1
  146. package/dist/esm/components/CopyButton.js +5 -5
  147. package/dist/esm/components/DiffViewer.js +4 -2
  148. package/dist/esm/components/DomainHeader.js +66 -41
  149. package/dist/esm/components/EmptyState.d.ts +2 -2
  150. package/dist/esm/components/EmptyState.js +2 -2
  151. package/dist/esm/components/EndOfListFooter.d.ts +8 -0
  152. package/dist/esm/components/EndOfListFooter.js +83 -0
  153. package/dist/esm/components/ErrorBoundary.d.ts +5 -14
  154. package/dist/esm/components/ErrorBoundary.js +29 -29
  155. package/dist/esm/components/FloatingBubble.d.ts +14 -0
  156. package/dist/esm/components/FloatingBubble.js +68 -0
  157. package/dist/esm/components/HeadersSection.js +5 -3
  158. package/dist/esm/components/HighlightText.d.ts +1 -1
  159. package/dist/esm/components/HighlightText.js +5 -7
  160. package/dist/esm/components/Inspector/AnalyticsTab.d.ts +3 -0
  161. package/dist/esm/components/Inspector/AnalyticsTab.js +193 -0
  162. package/dist/esm/components/Inspector/ConsoleTab.d.ts +3 -0
  163. package/dist/esm/components/Inspector/ConsoleTab.js +372 -0
  164. package/dist/esm/components/Inspector/FabLauncher.d.ts +3 -0
  165. package/dist/esm/components/Inspector/FabLauncher.js +49 -0
  166. package/dist/esm/components/Inspector/InsightsDashboard.d.ts +3 -0
  167. package/dist/esm/components/Inspector/InsightsDashboard.js +614 -0
  168. package/dist/esm/components/Inspector/InspectorContext.d.ts +5 -0
  169. package/dist/esm/components/Inspector/InspectorContext.js +13 -0
  170. package/dist/esm/components/Inspector/InspectorHeader.d.ts +3 -0
  171. package/dist/esm/components/Inspector/InspectorHeader.js +447 -0
  172. package/dist/esm/components/Inspector/LogDetail.d.ts +3 -0
  173. package/dist/esm/components/Inspector/LogDetail.js +925 -0
  174. package/dist/esm/components/Inspector/MainScreen.d.ts +3 -0
  175. package/dist/esm/components/Inspector/MainScreen.js +63 -0
  176. package/dist/esm/components/Inspector/NavigationTracker.d.ts +3 -0
  177. package/dist/esm/components/Inspector/NavigationTracker.js +10 -0
  178. package/dist/esm/components/Inspector/NetworkDetail.d.ts +3 -0
  179. package/dist/esm/components/Inspector/NetworkDetail.js +367 -0
  180. package/dist/esm/components/Inspector/NetworkTab.d.ts +3 -0
  181. package/dist/esm/components/Inspector/NetworkTab.js +244 -0
  182. package/dist/esm/components/Inspector/ReduxTab.d.ts +3 -0
  183. package/dist/esm/components/Inspector/ReduxTab.js +70 -0
  184. package/dist/esm/components/Inspector/SettingsPanel.d.ts +3 -0
  185. package/dist/esm/components/Inspector/SettingsPanel.js +1438 -0
  186. package/dist/esm/components/Inspector/TabBar.d.ts +3 -0
  187. package/dist/esm/components/Inspector/TabBar.js +90 -0
  188. package/dist/esm/components/Inspector/WebViewTab.d.ts +3 -0
  189. package/dist/esm/components/Inspector/WebViewTab.js +752 -0
  190. package/dist/esm/components/InspectorHeader.d.ts +19 -0
  191. package/dist/esm/components/InspectorHeader.js +323 -0
  192. package/dist/esm/components/InspectorTabBar.d.ts +16 -0
  193. package/dist/esm/components/InspectorTabBar.js +84 -0
  194. package/dist/esm/components/JsonViewer.d.ts +5 -2
  195. package/dist/esm/components/JsonViewer.js +112 -173
  196. package/dist/esm/components/LogCard.js +111 -88
  197. package/dist/esm/components/MetaAccordion.d.ts +1 -10
  198. package/dist/esm/components/MetaAccordion.js +23 -21
  199. package/dist/esm/components/NavigationTracker.d.ts +7 -0
  200. package/dist/esm/components/NavigationTracker.js +39 -0
  201. package/dist/esm/components/NetworkIcons.d.ts +6 -0
  202. package/dist/esm/components/NetworkIcons.js +46 -6
  203. package/dist/esm/components/ReduxTabView.d.ts +9 -0
  204. package/dist/esm/components/ReduxTabView.js +50 -0
  205. package/dist/esm/components/ReduxTreeView.d.ts +2 -2
  206. package/dist/esm/components/ReduxTreeView.js +245 -204
  207. package/dist/esm/components/SegmentedTabs.d.ts +15 -0
  208. package/dist/esm/components/SegmentedTabs.js +47 -0
  209. package/dist/esm/components/SettingsView.d.ts +13 -0
  210. package/dist/esm/components/SettingsView.js +321 -0
  211. package/dist/esm/components/TouchableScale.d.ts +2 -2
  212. package/dist/esm/components/TouchableScale.js +2 -2
  213. package/dist/esm/components/TreeNode.js +2 -2
  214. package/dist/esm/constants/index.js +1 -12
  215. package/dist/esm/constants/version.d.ts +1 -1
  216. package/dist/esm/constants/version.js +1 -1
  217. package/dist/esm/customHooks/consoleLogger.js +137 -13
  218. package/dist/esm/customHooks/networkLogger.d.ts +0 -1
  219. package/dist/esm/customHooks/networkLogger.js +0 -1
  220. package/dist/esm/customHooks/reduxLogger.d.ts +2 -9
  221. package/dist/esm/enums/index.d.ts +39 -0
  222. package/dist/esm/enums/index.js +47 -0
  223. package/dist/esm/helpers/index.d.ts +27 -1
  224. package/dist/esm/helpers/index.js +180 -11
  225. package/dist/esm/helpers/settingsStore.d.ts +2 -24
  226. package/dist/esm/i18n/en.json +144 -0
  227. package/dist/esm/i18n/index.d.ts +2 -0
  228. package/dist/esm/i18n/index.js +22 -0
  229. package/dist/esm/i18n/locales/en.json +314 -0
  230. package/dist/esm/index.d.ts +1 -2
  231. package/dist/esm/index.js +200 -4796
  232. package/dist/esm/styles/AppColors.d.ts +148 -0
  233. package/dist/esm/styles/AppColors.js +176 -0
  234. package/dist/esm/styles/common.d.ts +3 -0
  235. package/dist/esm/styles/common.js +197 -0
  236. package/dist/esm/styles/index.d.ts +167 -442
  237. package/dist/esm/styles/index.js +239 -471
  238. package/dist/esm/types/enums.d.ts +9 -0
  239. package/dist/esm/types/enums.js +3 -0
  240. package/dist/esm/types/index.d.ts +4 -111
  241. package/dist/esm/types/index.js +2 -1
  242. package/dist/esm/types/interfaces.d.ts +337 -0
  243. package/dist/esm/types/interfaces.js +1 -0
  244. package/example/App.tsx +145 -2
  245. package/example/README.md +33 -77
  246. package/package.json +3 -1
@@ -0,0 +1,9 @@
1
+ export type ActiveTab = 'apis' | 'analytics' | 'logs' | 'redux';
2
+ export type Method = 'ALL' | 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
3
+ export type StatusFilter = 'ALL' | '2xx' | '3xx' | '4xx' | '5xx' | 'Failed';
4
+ export type SortOrder = 'newest' | 'oldest';
5
+ export type LocalFilter = 'success' | 'failed' | 'loading';
6
+ export type ModalAnimationType = 'slide' | 'fade' | 'none';
7
+ export type SettingsPage = 'main' | 'apis' | 'logs' | 'analytics' | 'redux' | null;
8
+ export type SettingsSubTab = 'module' | 'ui';
9
+ export type LogFilter = 'all' | 'info' | 'warn' | 'error' | 'user-log' | 'analytics';
@@ -0,0 +1,3 @@
1
+ // ─── Enum-like union types ────────────────────────────────────────────────────
2
+ // The codebase treats these as string enums (used for tab keys, filters, etc.).
3
+ export {};
@@ -1,54 +1,7 @@
1
- import React from 'react';
2
- export type ActiveTab = 'insights' | 'apis' | 'analytics' | 'logs' | 'webview' | 'redux';
3
- export interface ConsoleLog {
4
- id: number;
5
- type: 'info' | 'warn' | 'error';
6
- message: string;
7
- timestamp: number;
8
- caller?: string;
9
- sourceMethod?: 'log' | 'info' | 'warn' | 'error';
10
- /** #9 — number of consecutive identical logs collapsed into this entry. */
11
- duplicateCount?: number;
12
- }
13
- export interface AnalyticsEvent {
14
- id: number;
15
- name: string;
16
- screenName: string;
17
- screenClass: string;
18
- userId: string;
19
- params: Record<string, any>;
20
- userProperties: Record<string, any>;
21
- timestamp: number;
22
- source: 'firebase' | 'manual';
23
- raw?: string;
24
- trackingId?: string;
25
- clientId?: string;
26
- sessionId?: string;
27
- pageTitle?: string;
28
- pageLocation?: string;
29
- }
30
- export interface NetworkLog {
31
- id: number;
32
- url: string;
33
- method: string;
34
- status: number | null;
35
- duration: number | null;
36
- startTime: number;
37
- request?: unknown;
38
- response?: unknown;
39
- requestHeaders?: Record<string, string>;
40
- responseHeaders?: Record<string, string>;
41
- /** #9 — number of consecutive identical requests collapsed into this entry. */
42
- duplicateCount?: number;
43
- }
44
- export interface RouteInfo {
45
- path: string;
46
- params: any;
47
- }
48
- export type Method = 'ALL' | 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
49
- export type StatusFilter = 'ALL' | '2xx' | '3xx' | '4xx' | '5xx' | 'Failed';
50
- export type SortOrder = 'newest' | 'oldest';
51
- export type LocalFilter = 'success' | 'failed' | 'loading';
1
+ import type { NetworkLog } from './interfaces';
2
+ import type { LocalFilter } from './enums';
3
+ export * from './interfaces';
4
+ export * from './enums';
52
5
  export type GroupedListItem = {
53
6
  type: 'header';
54
7
  id: string;
@@ -76,63 +29,3 @@ export type DiffResult = {
76
29
  oldVal?: any;
77
30
  newVal?: any;
78
31
  };
79
- export interface CopyButtonProps {
80
- value: unknown | (() => unknown);
81
- label: string;
82
- iconType?: 'copy' | 'terminal' | 'fetch';
83
- }
84
- export interface SectionHeaderProps {
85
- title: string;
86
- value: unknown;
87
- expanded: boolean | undefined;
88
- onToggleExpand: () => void;
89
- showDiff?: boolean;
90
- isDiffing?: boolean;
91
- onToggleDiff?: () => void;
92
- showSearch?: boolean;
93
- isSearching?: boolean;
94
- onToggleSearch?: () => void;
95
- }
96
- export interface TreeNodeProps {
97
- data: unknown;
98
- name?: string | number;
99
- level?: number;
100
- search?: string;
101
- forceOpen?: boolean;
102
- defaultExpandDepth?: number;
103
- }
104
- export interface LogCardProps {
105
- item: NetworkLog;
106
- onPress: () => void;
107
- timelineMinStart: number;
108
- timelineTotalRange: number;
109
- isNew?: boolean;
110
- isSelected: boolean;
111
- onToggleSelect: (id: number) => void;
112
- searchStr?: string;
113
- }
114
- export interface MetaAccordionProps {
115
- status: number | null;
116
- statusColor: string;
117
- duration: number | null;
118
- size: string;
119
- triggeredAt: string;
120
- method?: string;
121
- contentType?: string;
122
- url?: string;
123
- }
124
- export interface HeadersSectionProps {
125
- title: string;
126
- headers: Record<string, string> | undefined;
127
- search?: string;
128
- resetKey?: string | number;
129
- }
130
- export interface SourcePageCardProps {
131
- routeInfo: RouteInfo;
132
- }
133
- export interface SectionCardProps {
134
- title?: string;
135
- count?: number;
136
- accentColor?: string;
137
- children?: React.ReactNode;
138
- }
@@ -1 +1,2 @@
1
- export {};
1
+ export * from './interfaces';
2
+ export * from './enums';
@@ -0,0 +1,337 @@
1
+ import React from 'react';
2
+ import { ViewStyle } from 'react-native';
3
+ import { Animated, PanResponderInstance } from 'react-native';
4
+ import type { ActiveTab, GroupedListItem, LocalFilter, LogFilter, Method, SettingsPage, SettingsSubTab, SortOrder, StatusFilter } from './index';
5
+ export interface ConsoleLog {
6
+ id: number;
7
+ type: 'info' | 'warn' | 'error';
8
+ message: string;
9
+ timestamp: number;
10
+ caller?: string;
11
+ stack?: string;
12
+ errorStack?: string;
13
+ rawArgs?: any[];
14
+ sourceMethod?: 'log' | 'info' | 'warn' | 'error';
15
+ /** #9 — number of consecutive identical logs collapsed into this entry. */
16
+ duplicateCount?: number;
17
+ }
18
+ export interface AnalyticsEvent {
19
+ id: number;
20
+ name: string;
21
+ screenName: string;
22
+ screenClass: string;
23
+ userId: string;
24
+ params: Record<string, any>;
25
+ userProperties: Record<string, any>;
26
+ timestamp: number;
27
+ source: 'firebase' | 'manual';
28
+ raw?: string;
29
+ trackingId?: string;
30
+ clientId?: string;
31
+ sessionId?: string;
32
+ pageTitle?: string;
33
+ pageLocation?: string;
34
+ }
35
+ export interface NetworkLog {
36
+ id: number;
37
+ url: string;
38
+ method: string;
39
+ status: number | null;
40
+ duration: number | null;
41
+ startTime: number;
42
+ request?: unknown;
43
+ response?: unknown;
44
+ requestHeaders?: Record<string, string>;
45
+ responseHeaders?: Record<string, string>;
46
+ /** #9 — number of consecutive identical requests collapsed into this entry. */
47
+ duplicateCount?: number;
48
+ }
49
+ export interface RouteInfo {
50
+ path: string;
51
+ params: any;
52
+ }
53
+ export interface ReduxHistoryEntry {
54
+ id: number;
55
+ type: string;
56
+ payload: any;
57
+ timestamp: string;
58
+ affectedSlices: string[];
59
+ prevState?: any;
60
+ nextState?: any;
61
+ }
62
+ export interface InspectorStorage {
63
+ getItem: (key: string) => string | null | Promise<string | null>;
64
+ setItem: (key: string, value: string) => void | Promise<void>;
65
+ removeItem?: (key: string) => void | Promise<void>;
66
+ }
67
+ export interface PersistedSettings {
68
+ isDark?: boolean;
69
+ modalHeightPercent?: number;
70
+ modalAnimationType?: string;
71
+ tabVisibility?: Record<string, boolean>;
72
+ defaultTab?: string;
73
+ maxNetworkLogs?: number;
74
+ maxConsoleLogs?: number;
75
+ showConsoleLevels?: {
76
+ info: boolean;
77
+ warn: boolean;
78
+ error: boolean;
79
+ };
80
+ reduxAutoRefresh?: boolean;
81
+ reduxExpandDepth?: number;
82
+ showDuplicateLogs?: boolean;
83
+ }
84
+ export interface NetworkInspectorProps {
85
+ enabled?: boolean;
86
+ isEnabled?: boolean;
87
+ storage?: InspectorStorage;
88
+ navigationRef?: any;
89
+ }
90
+ export interface NavigationTrackerProps {
91
+ onStateChange: (state: any) => void;
92
+ }
93
+ export interface InspectorContextValue {
94
+ visible: boolean;
95
+ setVisible: React.Dispatch<React.SetStateAction<boolean>>;
96
+ closeModal: () => void;
97
+ isReady: boolean;
98
+ isEnabled: boolean;
99
+ modalHeightPercent: number;
100
+ setModalHeightPercent: React.Dispatch<React.SetStateAction<number>>;
101
+ modalAnimationType: 'slide' | 'fade' | 'none';
102
+ setModalAnimationType: React.Dispatch<React.SetStateAction<'slide' | 'fade' | 'none'>>;
103
+ hasNavigationContext: boolean;
104
+ setNavState: React.Dispatch<React.SetStateAction<any>>;
105
+ activeTab: ActiveTab;
106
+ switchActiveTab: (key: ActiveTab) => void;
107
+ tabVisibility: Record<ActiveTab, boolean>;
108
+ toggleTabVisibility: (key: ActiveTab) => void;
109
+ lastReadApisCount: number;
110
+ lastReadLogsCount: number;
111
+ selected: NetworkLog | null;
112
+ setSelected: React.Dispatch<React.SetStateAction<NetworkLog | null>>;
113
+ selectedEvent: AnalyticsEvent | null;
114
+ setSelectedEvent: React.Dispatch<React.SetStateAction<AnalyticsEvent | null>>;
115
+ selectedLog: ConsoleLog | null;
116
+ setSelectedLog: React.Dispatch<React.SetStateAction<ConsoleLog | null>>;
117
+ showHeaderInfo: boolean;
118
+ setShowHeaderInfo: React.Dispatch<React.SetStateAction<boolean>>;
119
+ settingsPage: SettingsPage;
120
+ setSettingsPage: React.Dispatch<React.SetStateAction<SettingsPage>>;
121
+ updateAvailable: boolean;
122
+ latestNpmVersion: string | null;
123
+ clearAnim: Animated.Value;
124
+ activePulseAnim: Animated.Value;
125
+ unreadPulseAnim: Animated.Value;
126
+ runClearAllWithAnimation: () => void;
127
+ fabPan: Animated.ValueXY;
128
+ fabPanResponder: PanResponderInstance;
129
+ fabDraggedRef: React.MutableRefObject<boolean>;
130
+ pulseAnim: Animated.Value;
131
+ fabShineAnim: Animated.Value;
132
+ logs: NetworkLog[];
133
+ filteredLogs: NetworkLog[];
134
+ groupedData: GroupedListItem[];
135
+ search: string;
136
+ setSearch: React.Dispatch<React.SetStateAction<string>>;
137
+ statusFilters: Set<StatusFilter>;
138
+ setStatusFilters: React.Dispatch<React.SetStateAction<Set<StatusFilter>>>;
139
+ methodFilters: Set<Method>;
140
+ setMethodFilters: React.Dispatch<React.SetStateAction<Set<Method>>>;
141
+ availableMethods: Method[];
142
+ sortOrder: SortOrder;
143
+ setSortOrder: React.Dispatch<React.SetStateAction<SortOrder>>;
144
+ selectedLogs: Set<number>;
145
+ toggleSelect: (id: number) => void;
146
+ minStart: number;
147
+ totalRange: number;
148
+ newLogIds: Set<number>;
149
+ toggleSectionFilter: (pageName: string, filter: LocalFilter) => void;
150
+ toggleSectionCollapse: (pageName: string) => void;
151
+ handleDelete: () => void;
152
+ isNetworkPaused: boolean;
153
+ setIsNetworkPaused: React.Dispatch<React.SetStateAction<boolean>>;
154
+ detailTitle: string;
155
+ detailDisplayUrl: string;
156
+ apiDetailActiveTab: 'metadata' | 'headers' | 'request' | 'response';
157
+ setApiDetailActiveTab: React.Dispatch<React.SetStateAction<'metadata' | 'headers' | 'request' | 'response'>>;
158
+ detailSearch: string;
159
+ setDetailSearch: React.Dispatch<React.SetStateAction<string>>;
160
+ reqExpanded: boolean | undefined;
161
+ setReqExpanded: React.Dispatch<React.SetStateAction<boolean | undefined>>;
162
+ resExpanded: boolean | undefined;
163
+ setResExpanded: React.Dispatch<React.SetStateAction<boolean | undefined>>;
164
+ showReqDiff: boolean;
165
+ setShowReqDiff: React.Dispatch<React.SetStateAction<boolean>>;
166
+ showResDiff: boolean;
167
+ setShowResDiff: React.Dispatch<React.SetStateAction<boolean>>;
168
+ prevRequestData: unknown;
169
+ prevResponseData: unknown;
170
+ logRouteMapRef: React.MutableRefObject<Map<number, RouteInfo>>;
171
+ consoleLogs: ConsoleLog[];
172
+ visibleConsoleLogs: ConsoleLog[];
173
+ filteredConsoleLogs: ConsoleLog[];
174
+ logSearch: string;
175
+ setLogSearch: React.Dispatch<React.SetStateAction<string>>;
176
+ logFilters: Set<LogFilter>;
177
+ setLogFilters: React.Dispatch<React.SetStateAction<Set<LogFilter>>>;
178
+ logCounts: Record<string, string>;
179
+ logSortOrder: SortOrder;
180
+ setLogSortOrder: React.Dispatch<React.SetStateAction<SortOrder>>;
181
+ isConsolePaused: boolean;
182
+ setIsConsolePaused: React.Dispatch<React.SetStateAction<boolean>>;
183
+ analyticsEvents: AnalyticsEvent[];
184
+ filteredAnalyticsEvents: (AnalyticsEvent & {
185
+ count?: number;
186
+ })[];
187
+ analyticsSearch: string;
188
+ setAnalyticsSearch: React.Dispatch<React.SetStateAction<string>>;
189
+ newEventIds: Set<number>;
190
+ isAnalyticsLayoutReady: boolean;
191
+ setIsAnalyticsLayoutReady: React.Dispatch<React.SetStateAction<boolean>>;
192
+ analyticsHeaderExpanded: boolean;
193
+ setAnalyticsHeaderExpanded: React.Dispatch<React.SetStateAction<boolean>>;
194
+ isAnalyticsPaused: boolean;
195
+ setIsAnalyticsPaused: React.Dispatch<React.SetStateAction<boolean>>;
196
+ reduxState: any;
197
+ setReduxState: React.Dispatch<React.SetStateAction<any>>;
198
+ reduxLastActionMap: Record<string, any>;
199
+ reduxSearch: string;
200
+ setReduxSearch: React.Dispatch<React.SetStateAction<string>>;
201
+ settingsActiveSubTab: SettingsSubTab;
202
+ setSettingsActiveSubTab: React.Dispatch<React.SetStateAction<SettingsSubTab>>;
203
+ defaultTab: ActiveTab;
204
+ setDefaultTab: React.Dispatch<React.SetStateAction<ActiveTab>>;
205
+ isDark: boolean;
206
+ setIsDark: React.Dispatch<React.SetStateAction<boolean>>;
207
+ showDuplicateLogs: boolean;
208
+ setShowDuplicateLogs: React.Dispatch<React.SetStateAction<boolean>>;
209
+ showConsoleLevels: {
210
+ info: boolean;
211
+ warn: boolean;
212
+ error: boolean;
213
+ };
214
+ setShowConsoleLevels: React.Dispatch<React.SetStateAction<{
215
+ info: boolean;
216
+ warn: boolean;
217
+ error: boolean;
218
+ }>>;
219
+ resetToDefaults: () => Promise<void>;
220
+ storage: InspectorStorage | undefined;
221
+ maxNetworkLogs: number;
222
+ setMaxNetworkLogs: React.Dispatch<React.SetStateAction<number>>;
223
+ maxConsoleLogs: number;
224
+ setMaxConsoleLogs: React.Dispatch<React.SetStateAction<number>>;
225
+ reduxAutoRefresh: boolean;
226
+ setReduxAutoRefreshState: React.Dispatch<React.SetStateAction<boolean>>;
227
+ reduxExpandDepth: number;
228
+ setReduxExpandDepth: React.Dispatch<React.SetStateAction<number>>;
229
+ }
230
+ export interface CopyButtonProps {
231
+ value: unknown | (() => unknown);
232
+ label: string;
233
+ iconType?: 'copy' | 'terminal' | 'fetch';
234
+ }
235
+ export interface SectionHeaderProps {
236
+ title: string;
237
+ value: unknown;
238
+ expanded: boolean | undefined;
239
+ onToggleExpand: () => void;
240
+ showDiff?: boolean;
241
+ isDiffing?: boolean;
242
+ onToggleDiff?: () => void;
243
+ showSearch?: boolean;
244
+ isSearching?: boolean;
245
+ onToggleSearch?: () => void;
246
+ }
247
+ export interface TreeNodeProps {
248
+ data: unknown;
249
+ name?: string | number;
250
+ level?: number;
251
+ search?: string;
252
+ forceOpen?: boolean;
253
+ defaultExpandDepth?: number;
254
+ }
255
+ export interface LogCardProps {
256
+ item: NetworkLog;
257
+ onPress: () => void;
258
+ timelineMinStart: number;
259
+ timelineTotalRange: number;
260
+ isNew?: boolean;
261
+ isSelected: boolean;
262
+ onToggleSelect: (id: number) => void;
263
+ searchStr?: string;
264
+ }
265
+ export interface MetaAccordionProps {
266
+ status: number | null | undefined;
267
+ statusColor: string;
268
+ duration: number | null | undefined;
269
+ size: string;
270
+ triggeredAt: string;
271
+ method: string;
272
+ contentType?: string;
273
+ url: string;
274
+ }
275
+ export interface HeadersSectionProps {
276
+ title: string;
277
+ headers: Record<string, string> | undefined;
278
+ search?: string;
279
+ resetKey?: string | number;
280
+ }
281
+ export interface SourcePageCardProps {
282
+ routeInfo: RouteInfo;
283
+ }
284
+ export interface SectionCardProps {
285
+ title?: string;
286
+ count?: number;
287
+ accentColor?: string;
288
+ children?: React.ReactNode;
289
+ }
290
+ export interface AnalyticsEventCardProps {
291
+ event: AnalyticsEvent & {
292
+ count?: number;
293
+ };
294
+ onPress: () => void;
295
+ isNew?: boolean;
296
+ searchStr?: string;
297
+ isFirst: boolean;
298
+ isLast: boolean;
299
+ msSincePrev?: number;
300
+ showTimestamp?: boolean;
301
+ computedScreenName?: string;
302
+ }
303
+ export interface CodeSnippetProps {
304
+ code: string;
305
+ language: 'html' | 'css' | 'javascript';
306
+ search?: string;
307
+ }
308
+ export interface AnimatedEntranceProps {
309
+ children: React.ReactNode;
310
+ delay?: number;
311
+ distance?: number;
312
+ duration?: number;
313
+ index?: number;
314
+ style?: ViewStyle | ViewStyle[];
315
+ }
316
+ export interface ConsoleLogCardProps {
317
+ item: ConsoleLog;
318
+ searchStr?: string;
319
+ }
320
+ export interface JsonContent {
321
+ header: string;
322
+ data: any;
323
+ }
324
+ export interface AnalyticsGraphProps {
325
+ event: AnalyticsEvent;
326
+ accentColor: string;
327
+ }
328
+ export interface ErrorBoundaryProps {
329
+ children: React.ReactNode;
330
+ onClose?: () => void;
331
+ onReset?: () => void;
332
+ fallbackType?: 'modal' | 'inline';
333
+ }
334
+ export interface ErrorBoundaryState {
335
+ hasError: boolean;
336
+ error: Error | null;
337
+ }
@@ -0,0 +1 @@
1
+ export {};
package/example/App.tsx CHANGED
@@ -13,7 +13,6 @@ import { NavigationContainer, createNavigationContainerRef } from '@react-naviga
13
13
  import { createNativeStackNavigator } from '@react-navigation/native-stack';
14
14
  import axios from 'axios';
15
15
  import NetworkInspector, {
16
- WebView,
17
16
  ErrorBoundary,
18
17
  connectReduxStore,
19
18
  setupNetworkLogger,
@@ -22,6 +21,7 @@ import NetworkInspector, {
22
21
  logAnalyticsEvent,
23
22
  subscribeAnalyticsEvents,
24
23
  } from 'react-native-inapp-inspector';
24
+ import {WebView} from 'react-native-webview';
25
25
 
26
26
  // ⚡ Call BEFORE any component renders so axios.create() is already patched
27
27
  setupNetworkLogger();
@@ -239,6 +239,71 @@ function HomeScreen({ navigation }: any) {
239
239
  console.error('[App] Simulated error! Critical DB connection timeout.');
240
240
  };
241
241
 
242
+ const triggerSampleAll = () => {
243
+ // Fire every sample action at once (with a few random extras)
244
+ const randomConsoleMessages = [
245
+ '[Sample] Fetching latest feed...',
246
+ '[Sample] Cache refreshed for user session',
247
+ '[Sample] Push notification permission granted',
248
+ '[Sample] Background sync completed',
249
+ ];
250
+ const randomAnalyticsEvents = [
251
+ 'screen_view',
252
+ 'button_tapped',
253
+ 'list_scrolled',
254
+ 'session_started',
255
+ ];
256
+
257
+ console.log(
258
+ `[Sample] Firing sample-all at ${new Date().toLocaleTimeString()}`,
259
+ );
260
+ console.warn('[Sample] Randomized warning: throttled API response');
261
+ console.error('[Sample] Randomized error: timeout on retry attempt #3');
262
+ console.log(
263
+ randomConsoleMessages[
264
+ Math.floor(Math.random() * randomConsoleMessages.length)
265
+ ],
266
+ );
267
+
268
+ triggerAxiosGet();
269
+ triggerAxiosPost();
270
+ triggerAxiosPut();
271
+ triggerAxiosPatch();
272
+ triggerAxiosDelete();
273
+ triggerNetworkRequest();
274
+ triggerFailedNetworkRequest();
275
+
276
+ logAnalyticsEvent(
277
+ randomAnalyticsEvents[
278
+ Math.floor(Math.random() * randomAnalyticsEvents.length)
279
+ ],
280
+ {
281
+ sample_batch: 'all',
282
+ triggered_at: new Date().toISOString(),
283
+ random_value: Math.floor(Math.random() * 1000),
284
+ },
285
+ );
286
+ logAnalyticsEvent('item_purchase', {
287
+ item_id: 'prod_999',
288
+ item_name: 'Premium Debug Kit',
289
+ price: 29.99,
290
+ currency: 'USD',
291
+ });
292
+
293
+ mockStore.dispatch({type: 'TOGGLE_SIDEBAR'});
294
+ mockStore.dispatch({type: 'UPDATE_USER_TIME'});
295
+
296
+ // Random extra fetch to spice up the flood
297
+ fetch(
298
+ `https://jsonplaceholder.typicode.com/posts/${Math.floor(
299
+ Math.random() * 8 + 1,
300
+ )}`,
301
+ )
302
+ .then(r => r.json())
303
+ .then(d => console.log('[Sample] Random fetch completed:', d.title))
304
+ .catch(e => console.error('[Sample] Random fetch failed:', e));
305
+ };
306
+
242
307
  const handleToggleSidebar = () => {
243
308
  mockStore.dispatch({ type: 'TOGGLE_SIDEBAR' });
244
309
  mockStore.dispatch({ type: 'UPDATE_USER_TIME' });
@@ -286,6 +351,28 @@ function HomeScreen({ navigation }: any) {
286
351
  </View>
287
352
  </View>
288
353
 
354
+ {/* Trigger Sample All Logs */}
355
+ <View
356
+ style={[
357
+ styles.panelCard,
358
+ { borderColor: '#22D3EE', marginBottom: 20 },
359
+ ]}>
360
+ <Text style={[styles.panelHeader, { color: '#22D3EE' }]}>
361
+ 🎲 SAMPLE ALL LOGS
362
+ </Text>
363
+ <TouchableOpacity
364
+ style={[
365
+ styles.fullWidthBtn,
366
+ { backgroundColor: '#0891B2' },
367
+ ]}
368
+ onPress={triggerSampleAll}
369
+ >
370
+ <Text style={styles.fullWidthBtnText}>
371
+ Trigger Sample All Logs At Once
372
+ </Text>
373
+ </TouchableOpacity>
374
+ </View>
375
+
289
376
  {/* Action Panel Grid */}
290
377
  <View style={styles.panelCard}>
291
378
  <Text style={styles.panelHeader}>🌐 API & NETWORK TESTS</Text>
@@ -371,6 +458,39 @@ function HomeScreen({ navigation }: any) {
371
458
  Trigger Log, Warn & Error Logs
372
459
  </Text>
373
460
  </TouchableOpacity>
461
+
462
+ <View style={[styles.btnRow, {marginTop: 8}]}>
463
+ <TouchableOpacity
464
+ style={[styles.gridBtn, { borderColor: '#8B5CF6' }]}
465
+ onPress={() => {
466
+ console.log(
467
+ 'Multi-argument payload inspection:',
468
+ { userId: 101, username: 'venkatesh', role: 'Lead Architect' },
469
+ ['permissions.read', 'permissions.write', 'permissions.admin'],
470
+ { device: 'iPhone 15 Pro', os: 'iOS 18.0', battery: '92%' },
471
+ );
472
+ }}
473
+ >
474
+ <Text style={[styles.btnText, { color: '#8B5CF6' }]}>
475
+ Multi-Arg Log
476
+ </Text>
477
+ </TouchableOpacity>
478
+
479
+ <TouchableOpacity
480
+ style={[styles.gridBtn, { borderColor: '#EF4444' }]}
481
+ onPress={() => {
482
+ try {
483
+ throw new TypeError('Cannot read properties of undefined (reading "authToken")');
484
+ } catch (err) {
485
+ console.error(err);
486
+ }
487
+ }}
488
+ >
489
+ <Text style={[styles.btnText, { color: '#EF4444' }]}>
490
+ Error Stack Log
491
+ </Text>
492
+ </TouchableOpacity>
493
+ </View>
374
494
  </View>
375
495
 
376
496
  <View style={styles.panelCard}>
@@ -430,8 +550,31 @@ function HomeScreen({ navigation }: any) {
430
550
 
431
551
  <View style={styles.panelCard}>
432
552
  <Text style={styles.panelHeader}>⚙️ REDUX & STATE ACTIONS</Text>
553
+ <View style={styles.btnRow}>
554
+ <TouchableOpacity
555
+ style={[styles.gridBtn, { borderColor: '#10B981' }]}
556
+ onPress={handleToggleSidebar}
557
+ >
558
+ <Text style={[styles.btnText, { color: '#10B981' }]}>
559
+ Toggle Sidebar
560
+ </Text>
561
+ </TouchableOpacity>
562
+ <TouchableOpacity
563
+ style={[styles.gridBtn, { borderColor: '#06B6D4' }]}
564
+ onPress={() => {
565
+ mockStore.dispatch({
566
+ type: 'SET_THEME',
567
+ payload: mockStore.getState().settings.theme === 'dark' ? 'light' : 'dark',
568
+ });
569
+ }}
570
+ >
571
+ <Text style={[styles.btnText, { color: '#06B6D4' }]}>
572
+ Toggle Theme
573
+ </Text>
574
+ </TouchableOpacity>
575
+ </View>
433
576
  <TouchableOpacity
434
- style={[styles.fullWidthBtn, { backgroundColor: '#8B5CF6' }]}
577
+ style={[styles.fullWidthBtn, { backgroundColor: '#8B5CF6', marginTop: 8 }]}
435
578
  onPress={handleToggleSidebar}
436
579
  >
437
580
  <Text style={styles.fullWidthBtnText}>