react-native-inapp-inspector 1.1.13 → 1.1.15

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 (250) hide show
  1. package/README.md +9 -34
  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 +120 -50
  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/DiffViewer.js +4 -2
  25. package/dist/commonjs/components/DomainHeader.js +66 -41
  26. package/dist/commonjs/components/EmptyState.d.ts +2 -2
  27. package/dist/commonjs/components/EmptyState.js +2 -2
  28. package/dist/commonjs/components/EndOfListFooter.d.ts +8 -0
  29. package/dist/commonjs/components/EndOfListFooter.js +90 -0
  30. package/dist/commonjs/components/ErrorBoundary.d.ts +5 -14
  31. package/dist/commonjs/components/ErrorBoundary.js +28 -28
  32. package/dist/commonjs/components/FloatingBubble.d.ts +14 -0
  33. package/dist/commonjs/components/FloatingBubble.js +75 -0
  34. package/dist/commonjs/components/HeadersSection.js +5 -3
  35. package/dist/commonjs/components/HighlightText.d.ts +1 -1
  36. package/dist/commonjs/components/HighlightText.js +5 -7
  37. package/dist/commonjs/components/Inspector/AnalyticsTab.d.ts +3 -0
  38. package/dist/commonjs/components/Inspector/AnalyticsTab.js +232 -0
  39. package/dist/commonjs/components/Inspector/ConsoleTab.d.ts +3 -0
  40. package/dist/commonjs/components/Inspector/ConsoleTab.js +410 -0
  41. package/dist/commonjs/components/Inspector/FabLauncher.d.ts +3 -0
  42. package/dist/commonjs/components/Inspector/FabLauncher.js +54 -0
  43. package/dist/commonjs/components/Inspector/InsightsDashboard.d.ts +3 -0
  44. package/dist/commonjs/components/Inspector/InsightsDashboard.js +619 -0
  45. package/dist/commonjs/components/Inspector/InspectorContext.d.ts +5 -0
  46. package/dist/commonjs/components/Inspector/InspectorContext.js +18 -0
  47. package/dist/commonjs/components/Inspector/InspectorHeader.d.ts +3 -0
  48. package/dist/commonjs/components/Inspector/InspectorHeader.js +452 -0
  49. package/dist/commonjs/components/Inspector/LogDetail.d.ts +3 -0
  50. package/dist/commonjs/components/Inspector/LogDetail.js +963 -0
  51. package/dist/commonjs/components/Inspector/MainScreen.d.ts +3 -0
  52. package/dist/commonjs/components/Inspector/MainScreen.js +68 -0
  53. package/dist/commonjs/components/Inspector/NavigationTracker.d.ts +3 -0
  54. package/dist/commonjs/components/Inspector/NavigationTracker.js +12 -0
  55. package/dist/commonjs/components/Inspector/NetworkDetail.d.ts +3 -0
  56. package/dist/commonjs/components/Inspector/NetworkDetail.js +405 -0
  57. package/dist/commonjs/components/Inspector/NetworkTab.d.ts +3 -0
  58. package/dist/commonjs/components/Inspector/NetworkTab.js +281 -0
  59. package/dist/commonjs/components/Inspector/ReduxTab.d.ts +3 -0
  60. package/dist/commonjs/components/Inspector/ReduxTab.js +75 -0
  61. package/dist/commonjs/components/Inspector/SettingsPanel.d.ts +3 -0
  62. package/dist/commonjs/components/Inspector/SettingsPanel.js +1476 -0
  63. package/dist/commonjs/components/Inspector/TabBar.d.ts +3 -0
  64. package/dist/commonjs/components/Inspector/TabBar.js +95 -0
  65. package/dist/commonjs/components/Inspector/WebViewTab.d.ts +3 -0
  66. package/dist/commonjs/components/Inspector/WebViewTab.js +757 -0
  67. package/dist/commonjs/components/InspectorHeader.d.ts +19 -0
  68. package/dist/commonjs/components/InspectorHeader.js +329 -0
  69. package/dist/commonjs/components/InspectorTabBar.d.ts +16 -0
  70. package/dist/commonjs/components/InspectorTabBar.js +90 -0
  71. package/dist/commonjs/components/JsonViewer.d.ts +4 -1
  72. package/dist/commonjs/components/JsonViewer.js +110 -171
  73. package/dist/commonjs/components/LogCard.js +109 -86
  74. package/dist/commonjs/components/MetaAccordion.d.ts +1 -10
  75. package/dist/commonjs/components/MetaAccordion.js +23 -21
  76. package/dist/commonjs/components/NavigationTracker.d.ts +7 -0
  77. package/dist/commonjs/components/NavigationTracker.js +76 -0
  78. package/dist/commonjs/components/NetworkIcons.d.ts +6 -0
  79. package/dist/commonjs/components/NetworkIcons.js +54 -8
  80. package/dist/commonjs/components/ReduxTabView.d.ts +9 -0
  81. package/dist/commonjs/components/ReduxTabView.js +56 -0
  82. package/dist/commonjs/components/ReduxTreeView.js +241 -200
  83. package/dist/commonjs/components/SegmentedTabs.d.ts +15 -0
  84. package/dist/commonjs/components/SegmentedTabs.js +52 -0
  85. package/dist/commonjs/components/SettingsView.d.ts +13 -0
  86. package/dist/commonjs/components/SettingsView.js +328 -0
  87. package/dist/commonjs/components/TouchableScale.d.ts +2 -2
  88. package/dist/commonjs/components/TouchableScale.js +2 -2
  89. package/dist/commonjs/components/TreeNode.js +2 -2
  90. package/dist/commonjs/constants/index.js +1 -12
  91. package/dist/commonjs/constants/version.d.ts +1 -1
  92. package/dist/commonjs/constants/version.js +1 -1
  93. package/dist/commonjs/customHooks/analyticsLogger.d.ts +8 -0
  94. package/dist/commonjs/customHooks/analyticsLogger.js +42 -1
  95. package/dist/commonjs/customHooks/consoleLogger.js +137 -13
  96. package/dist/commonjs/customHooks/networkLogger.d.ts +0 -1
  97. package/dist/commonjs/customHooks/networkLogger.js +0 -1
  98. package/dist/commonjs/customHooks/reduxLogger.d.ts +2 -9
  99. package/dist/commonjs/enums/index.d.ts +39 -0
  100. package/dist/commonjs/enums/index.js +50 -0
  101. package/dist/commonjs/helpers/index.d.ts +27 -1
  102. package/dist/commonjs/helpers/index.js +187 -12
  103. package/dist/commonjs/helpers/settingsStore.d.ts +2 -24
  104. package/dist/commonjs/i18n/en.json +144 -0
  105. package/dist/commonjs/i18n/index.d.ts +2 -0
  106. package/dist/commonjs/i18n/index.js +27 -0
  107. package/dist/commonjs/i18n/locales/en.json +314 -0
  108. package/dist/commonjs/index.d.ts +2 -3
  109. package/dist/commonjs/index.js +207 -4927
  110. package/dist/commonjs/styles/AppColors.d.ts +148 -0
  111. package/dist/commonjs/styles/AppColors.js +176 -0
  112. package/dist/commonjs/styles/common.d.ts +3 -0
  113. package/dist/commonjs/styles/common.js +201 -0
  114. package/dist/commonjs/styles/index.d.ts +219 -435
  115. package/dist/commonjs/styles/index.js +312 -488
  116. package/dist/commonjs/types/enums.d.ts +9 -0
  117. package/dist/commonjs/types/enums.js +4 -0
  118. package/dist/commonjs/types/index.d.ts +4 -111
  119. package/dist/commonjs/types/index.js +16 -0
  120. package/dist/commonjs/types/interfaces.d.ts +337 -0
  121. package/dist/commonjs/types/interfaces.js +2 -0
  122. package/dist/esm/assets/svgAssets.d.ts +3 -0
  123. package/dist/esm/assets/svgAssets.js +14 -0
  124. package/dist/esm/components/AnalyticsEventCard.d.ts +1 -14
  125. package/dist/esm/components/AnalyticsEventCard.js +118 -48
  126. package/dist/esm/components/AnalyticsGraph.d.ts +2 -6
  127. package/dist/esm/components/AnalyticsGraph.js +8 -8
  128. package/dist/esm/components/AnalyticsTabView.d.ts +15 -0
  129. package/dist/esm/components/AnalyticsTabView.js +151 -0
  130. package/dist/esm/components/AnimatedEntrance.d.ts +1 -1
  131. package/dist/esm/components/AnimatedEntrance.js +2 -2
  132. package/dist/esm/components/ApiDetailView.d.ts +22 -0
  133. package/dist/esm/components/ApiDetailView.js +264 -0
  134. package/dist/esm/components/ApisTabView.d.ts +33 -0
  135. package/dist/esm/components/ApisTabView.js +196 -0
  136. package/dist/esm/components/CodeSnippet.d.ts +1 -5
  137. package/dist/esm/components/CodeSnippet.js +34 -34
  138. package/dist/esm/components/ConsoleLogCard.d.ts +1 -8
  139. package/dist/esm/components/ConsoleLogCard.js +262 -409
  140. package/dist/esm/components/ConsoleLogDetailView.d.ts +9 -0
  141. package/dist/esm/components/ConsoleLogDetailView.js +271 -0
  142. package/dist/esm/components/ConsoleLogsTabView.d.ts +24 -0
  143. package/dist/esm/components/ConsoleLogsTabView.js +348 -0
  144. package/dist/esm/components/DiffViewer.js +4 -2
  145. package/dist/esm/components/DomainHeader.js +66 -41
  146. package/dist/esm/components/EmptyState.d.ts +2 -2
  147. package/dist/esm/components/EmptyState.js +2 -2
  148. package/dist/esm/components/EndOfListFooter.d.ts +8 -0
  149. package/dist/esm/components/EndOfListFooter.js +83 -0
  150. package/dist/esm/components/ErrorBoundary.d.ts +5 -14
  151. package/dist/esm/components/ErrorBoundary.js +29 -29
  152. package/dist/esm/components/FloatingBubble.d.ts +14 -0
  153. package/dist/esm/components/FloatingBubble.js +68 -0
  154. package/dist/esm/components/HeadersSection.js +5 -3
  155. package/dist/esm/components/HighlightText.d.ts +1 -1
  156. package/dist/esm/components/HighlightText.js +5 -7
  157. package/dist/esm/components/Inspector/AnalyticsTab.d.ts +3 -0
  158. package/dist/esm/components/Inspector/AnalyticsTab.js +194 -0
  159. package/dist/esm/components/Inspector/ConsoleTab.d.ts +3 -0
  160. package/dist/esm/components/Inspector/ConsoleTab.js +372 -0
  161. package/dist/esm/components/Inspector/FabLauncher.d.ts +3 -0
  162. package/dist/esm/components/Inspector/FabLauncher.js +49 -0
  163. package/dist/esm/components/Inspector/InsightsDashboard.d.ts +3 -0
  164. package/dist/esm/components/Inspector/InsightsDashboard.js +614 -0
  165. package/dist/esm/components/Inspector/InspectorContext.d.ts +5 -0
  166. package/dist/esm/components/Inspector/InspectorContext.js +13 -0
  167. package/dist/esm/components/Inspector/InspectorHeader.d.ts +3 -0
  168. package/dist/esm/components/Inspector/InspectorHeader.js +447 -0
  169. package/dist/esm/components/Inspector/LogDetail.d.ts +3 -0
  170. package/dist/esm/components/Inspector/LogDetail.js +925 -0
  171. package/dist/esm/components/Inspector/MainScreen.d.ts +3 -0
  172. package/dist/esm/components/Inspector/MainScreen.js +63 -0
  173. package/dist/esm/components/Inspector/NavigationTracker.d.ts +3 -0
  174. package/dist/esm/components/Inspector/NavigationTracker.js +10 -0
  175. package/dist/esm/components/Inspector/NetworkDetail.d.ts +3 -0
  176. package/dist/esm/components/Inspector/NetworkDetail.js +367 -0
  177. package/dist/esm/components/Inspector/NetworkTab.d.ts +3 -0
  178. package/dist/esm/components/Inspector/NetworkTab.js +243 -0
  179. package/dist/esm/components/Inspector/ReduxTab.d.ts +3 -0
  180. package/dist/esm/components/Inspector/ReduxTab.js +70 -0
  181. package/dist/esm/components/Inspector/SettingsPanel.d.ts +3 -0
  182. package/dist/esm/components/Inspector/SettingsPanel.js +1438 -0
  183. package/dist/esm/components/Inspector/TabBar.d.ts +3 -0
  184. package/dist/esm/components/Inspector/TabBar.js +90 -0
  185. package/dist/esm/components/Inspector/WebViewTab.d.ts +3 -0
  186. package/dist/esm/components/Inspector/WebViewTab.js +752 -0
  187. package/dist/esm/components/InspectorHeader.d.ts +19 -0
  188. package/dist/esm/components/InspectorHeader.js +323 -0
  189. package/dist/esm/components/InspectorTabBar.d.ts +16 -0
  190. package/dist/esm/components/InspectorTabBar.js +84 -0
  191. package/dist/esm/components/JsonViewer.d.ts +4 -1
  192. package/dist/esm/components/JsonViewer.js +111 -172
  193. package/dist/esm/components/LogCard.js +111 -88
  194. package/dist/esm/components/MetaAccordion.d.ts +1 -10
  195. package/dist/esm/components/MetaAccordion.js +23 -21
  196. package/dist/esm/components/NavigationTracker.d.ts +7 -0
  197. package/dist/esm/components/NavigationTracker.js +39 -0
  198. package/dist/esm/components/NetworkIcons.d.ts +6 -0
  199. package/dist/esm/components/NetworkIcons.js +46 -6
  200. package/dist/esm/components/ReduxTabView.d.ts +9 -0
  201. package/dist/esm/components/ReduxTabView.js +50 -0
  202. package/dist/esm/components/ReduxTreeView.js +243 -202
  203. package/dist/esm/components/SegmentedTabs.d.ts +15 -0
  204. package/dist/esm/components/SegmentedTabs.js +47 -0
  205. package/dist/esm/components/SettingsView.d.ts +13 -0
  206. package/dist/esm/components/SettingsView.js +321 -0
  207. package/dist/esm/components/TouchableScale.d.ts +2 -2
  208. package/dist/esm/components/TouchableScale.js +2 -2
  209. package/dist/esm/components/TreeNode.js +2 -2
  210. package/dist/esm/constants/index.js +1 -12
  211. package/dist/esm/constants/version.d.ts +1 -1
  212. package/dist/esm/constants/version.js +1 -1
  213. package/dist/esm/customHooks/analyticsLogger.d.ts +8 -0
  214. package/dist/esm/customHooks/analyticsLogger.js +37 -0
  215. package/dist/esm/customHooks/consoleLogger.js +137 -13
  216. package/dist/esm/customHooks/networkLogger.d.ts +0 -1
  217. package/dist/esm/customHooks/networkLogger.js +0 -1
  218. package/dist/esm/customHooks/reduxLogger.d.ts +2 -9
  219. package/dist/esm/enums/index.d.ts +39 -0
  220. package/dist/esm/enums/index.js +47 -0
  221. package/dist/esm/helpers/index.d.ts +27 -1
  222. package/dist/esm/helpers/index.js +180 -11
  223. package/dist/esm/helpers/settingsStore.d.ts +2 -24
  224. package/dist/esm/i18n/en.json +144 -0
  225. package/dist/esm/i18n/index.d.ts +2 -0
  226. package/dist/esm/i18n/index.js +22 -0
  227. package/dist/esm/i18n/locales/en.json +314 -0
  228. package/dist/esm/index.d.ts +2 -3
  229. package/dist/esm/index.js +207 -4923
  230. package/dist/esm/styles/AppColors.d.ts +148 -0
  231. package/dist/esm/styles/AppColors.js +176 -0
  232. package/dist/esm/styles/common.d.ts +3 -0
  233. package/dist/esm/styles/common.js +197 -0
  234. package/dist/esm/styles/index.d.ts +219 -435
  235. package/dist/esm/styles/index.js +312 -488
  236. package/dist/esm/types/enums.d.ts +9 -0
  237. package/dist/esm/types/enums.js +3 -0
  238. package/dist/esm/types/index.d.ts +4 -111
  239. package/dist/esm/types/index.js +2 -1
  240. package/dist/esm/types/interfaces.d.ts +337 -0
  241. package/dist/esm/types/interfaces.js +1 -0
  242. package/example/App.tsx +88 -1
  243. package/example/android/app/build.gradle +29 -1
  244. package/example/android/app/src/main/java/com/example/MainApplication.kt +25 -0
  245. package/example/android/build.gradle +31 -4
  246. package/example/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  247. package/example/android/gradle.properties +1 -0
  248. package/example/android/settings.gradle +20 -1
  249. package/example/package-lock.json +1 -1
  250. 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>
@@ -1,3 +1,30 @@
1
+ import java.net.NetworkInterface
2
+ import java.net.Inet4Address
3
+
4
+ def getLocalIpAddress() {
5
+ def ip = "10.0.2.2"
6
+ try {
7
+ def interfaces = NetworkInterface.getNetworkInterfaces()
8
+ while (interfaces.hasMoreElements()) {
9
+ def iface = interfaces.nextElement()
10
+ if (iface.isLoopback() || !iface.isUp()) continue
11
+ def addresses = iface.getInetAddresses()
12
+ while (addresses.hasMoreElements()) {
13
+ def addr = addresses.nextElement()
14
+ if (addr instanceof Inet4Address) {
15
+ def host = addr.getHostAddress()
16
+ if (host.startsWith("192.168.") || host.startsWith("10.") || host.startsWith("172.")) {
17
+ return host
18
+ }
19
+ }
20
+ }
21
+ }
22
+ } catch (Exception e) {
23
+ // ignore
24
+ }
25
+ return ip
26
+ }
27
+
1
28
  apply plugin: "com.android.application"
2
29
  apply plugin: "org.jetbrains.kotlin.android"
3
30
  apply plugin: "com.facebook.react"
@@ -25,7 +52,7 @@ react {
25
52
 
26
53
  /* Bundling */
27
54
  // A list containing the node command and its flags. Default is just 'node'.
28
- // nodeExecutableAndArgs = ["node"]
55
+ nodeExecutableAndArgs = [rootProject.ext.has("NODE_EXECUTABLE") ? rootProject.ext.get("NODE_EXECUTABLE") : "node"]
29
56
  //
30
57
  // The command to run when bundling. By default is 'bundle'
31
58
  // bundleCommand = "ram-bundle"
@@ -84,6 +111,7 @@ android {
84
111
  targetSdkVersion rootProject.ext.targetSdkVersion
85
112
  versionCode 1
86
113
  versionName "1.0"
114
+ resValue "string", "developer_ip_address", getLocalIpAddress()
87
115
  }
88
116
  signingConfigs {
89
117
  debug {
@@ -23,5 +23,30 @@ class MainApplication : Application(), ReactApplication {
23
23
  override fun onCreate() {
24
24
  super.onCreate()
25
25
  loadReactNative(this)
26
+
27
+ if (BuildConfig.DEBUG) {
28
+ val isEmulator = android.os.Build.FINGERPRINT.startsWith("generic")
29
+ || android.os.Build.FINGERPRINT.startsWith("unknown")
30
+ || android.os.Build.MODEL.contains("google_sdk")
31
+ || android.os.Build.MODEL.contains("Emulator")
32
+ || android.os.Build.MODEL.contains("Android SDK built for x86")
33
+ || android.os.Build.MANUFACTURER.contains("Genymotion")
34
+ || android.os.Build.HARDWARE.contains("goldfish")
35
+ || android.os.Build.HARDWARE.contains("ranchu")
36
+ if (!isEmulator) {
37
+ try {
38
+ val ipResId = resources.getIdentifier("developer_ip_address", "string", packageName)
39
+ if (ipResId != 0) {
40
+ val ip = getString(ipResId)
41
+ if (ip.isNotEmpty() && ip != "10.0.2.2") {
42
+ val preferences = getSharedPreferences("${packageName}_preferences", MODE_PRIVATE)
43
+ preferences.edit().putString("debug_http_host", "$ip:8081").apply()
44
+ }
45
+ }
46
+ } catch (e: Exception) {
47
+ e.printStackTrace()
48
+ }
49
+ }
50
+ }
26
51
  }
27
52
  }