react-native-inapp-inspector 2.3.5 → 2.3.7

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 (226) hide show
  1. package/dist/commonjs/analytics.d.ts +0 -4
  2. package/dist/commonjs/analytics.js +0 -4
  3. package/dist/commonjs/bundle.d.ts +0 -4
  4. package/dist/commonjs/bundle.js +0 -4
  5. package/dist/commonjs/components/AnalyticsDetail.js +18 -27
  6. package/dist/commonjs/components/AnalyticsEventCard.js +9 -12
  7. package/dist/commonjs/components/AnalyticsGraph.js +10 -15
  8. package/dist/commonjs/components/AppHeaderLogo.js +0 -3
  9. package/dist/commonjs/components/BrandCircleIcon.js +15 -15
  10. package/dist/commonjs/components/BrandSquareIcon.js +20 -20
  11. package/dist/commonjs/components/CodeSnippet.js +6 -19
  12. package/dist/commonjs/components/ConsoleLogCard.js +0 -1
  13. package/dist/commonjs/components/CopyButton.js +0 -4
  14. package/dist/commonjs/components/DiffViewer.js +0 -2
  15. package/dist/commonjs/components/DomainHeader.js +0 -4
  16. package/dist/commonjs/components/EmptyState.js +0 -3
  17. package/dist/commonjs/components/ErrorBoundary.js +5 -10
  18. package/dist/commonjs/components/HeadersSection.js +0 -5
  19. package/dist/commonjs/components/HighlightText.js +1 -4
  20. package/dist/commonjs/components/Inspector/AnalyticsFilterModal.js +11 -26
  21. package/dist/commonjs/components/Inspector/AnalyticsTab.js +34 -40
  22. package/dist/commonjs/components/Inspector/BundleTab.js +56 -84
  23. package/dist/commonjs/components/Inspector/ConsoleTab.js +7 -7
  24. package/dist/commonjs/components/Inspector/CrashDetail.js +18 -20
  25. package/dist/commonjs/components/Inspector/CrashFilterModal.js +0 -1
  26. package/dist/commonjs/components/Inspector/CrashTab.js +11 -20
  27. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +12 -24
  28. package/dist/commonjs/components/Inspector/FabLauncher.js +1 -1
  29. package/dist/commonjs/components/Inspector/InspectorContext.js +0 -2
  30. package/dist/commonjs/components/Inspector/InspectorHeader.js +7 -8
  31. package/dist/commonjs/components/Inspector/LogDetail.js +27 -29
  32. package/dist/commonjs/components/Inspector/MainScreen.js +9 -10
  33. package/dist/commonjs/components/Inspector/NetworkDetail.js +10 -11
  34. package/dist/commonjs/components/Inspector/NetworkTab.js +14 -14
  35. package/dist/commonjs/components/Inspector/NpmUpdateToast.js +6 -9
  36. package/dist/commonjs/components/Inspector/PerformanceTab.js +30 -43
  37. package/dist/commonjs/components/Inspector/ReduxDetail.js +18 -34
  38. package/dist/commonjs/components/Inspector/ReduxTab.js +11 -20
  39. package/dist/commonjs/components/Inspector/SettingsPanel.js +32 -36
  40. package/dist/commonjs/components/Inspector/SkeletonPlaceholder.js +6 -6
  41. package/dist/commonjs/components/Inspector/StorageTab.js +14 -26
  42. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +5 -6
  43. package/dist/commonjs/components/JsonViewer.js +3 -10
  44. package/dist/commonjs/components/LogCard.js +7 -7
  45. package/dist/commonjs/components/MetaAccordion.js +1 -7
  46. package/dist/commonjs/components/NetworkIcons.js +12 -16
  47. package/dist/commonjs/components/SectionHeader.js +0 -4
  48. package/dist/commonjs/components/SkeletonPlaceholder.js +6 -6
  49. package/dist/commonjs/components/Slider.js +6 -6
  50. package/dist/commonjs/components/SourcePageCard.js +0 -4
  51. package/dist/commonjs/components/TreeNode.js +0 -4
  52. package/dist/commonjs/console.d.ts +0 -4
  53. package/dist/commonjs/console.js +0 -4
  54. package/dist/commonjs/constants/index.js +6 -9
  55. package/dist/commonjs/constants/telemetryConfig.d.ts +3 -0
  56. package/dist/commonjs/constants/telemetryConfig.js +6 -0
  57. package/dist/commonjs/constants/version.d.ts +1 -1
  58. package/dist/commonjs/constants/version.js +1 -3
  59. package/dist/commonjs/crash.d.ts +0 -4
  60. package/dist/commonjs/crash.js +0 -4
  61. package/dist/commonjs/customHooks/analyticsLogger.d.ts +0 -7
  62. package/dist/commonjs/customHooks/analyticsLogger.js +3 -59
  63. package/dist/commonjs/customHooks/bundleAnalyzer.d.ts +0 -9
  64. package/dist/commonjs/customHooks/bundleAnalyzer.js +3 -86
  65. package/dist/commonjs/customHooks/consoleLogger.js +0 -16
  66. package/dist/commonjs/customHooks/crashHandler.d.ts +0 -28
  67. package/dist/commonjs/customHooks/crashHandler.js +0 -55
  68. package/dist/commonjs/customHooks/logFilters.d.ts +0 -4
  69. package/dist/commonjs/customHooks/logFilters.js +0 -11
  70. package/dist/commonjs/customHooks/networkLogger.js +2 -13
  71. package/dist/commonjs/customHooks/performanceTracker.d.ts +0 -27
  72. package/dist/commonjs/customHooks/performanceTracker.js +0 -31
  73. package/dist/commonjs/customHooks/reduxLogger.d.ts +0 -12
  74. package/dist/commonjs/customHooks/reduxLogger.js +0 -51
  75. package/dist/commonjs/customHooks/storageInspector.d.ts +0 -40
  76. package/dist/commonjs/customHooks/storageInspector.js +1 -56
  77. package/dist/commonjs/decorators/index.d.ts +0 -37
  78. package/dist/commonjs/decorators/index.js +0 -42
  79. package/dist/commonjs/helpers/gaAnalyticsRegistry.d.ts +0 -10
  80. package/dist/commonjs/helpers/gaAnalyticsRegistry.js +0 -26
  81. package/dist/commonjs/helpers/index.d.ts +0 -7
  82. package/dist/commonjs/helpers/index.js +1 -42
  83. package/dist/commonjs/helpers/memoryManager.d.ts +0 -11
  84. package/dist/commonjs/helpers/memoryManager.js +0 -13
  85. package/dist/commonjs/helpers/searchQueryParser.d.ts +0 -4
  86. package/dist/commonjs/helpers/searchQueryParser.js +0 -18
  87. package/dist/commonjs/helpers/settingsStore.js +0 -8
  88. package/dist/commonjs/helpers/telemetry.d.ts +2 -0
  89. package/dist/commonjs/helpers/telemetry.js +136 -0
  90. package/dist/commonjs/i18n/index.d.ts +0 -9
  91. package/dist/commonjs/i18n/index.js +0 -15
  92. package/dist/commonjs/index.js +15 -97
  93. package/dist/commonjs/native/NativeInspector.d.ts +0 -54
  94. package/dist/commonjs/native/NativeInspector.js +0 -56
  95. package/dist/commonjs/network.d.ts +0 -4
  96. package/dist/commonjs/network.js +0 -4
  97. package/dist/commonjs/performance.d.ts +0 -4
  98. package/dist/commonjs/performance.js +0 -4
  99. package/dist/commonjs/redux.d.ts +0 -4
  100. package/dist/commonjs/redux.js +0 -4
  101. package/dist/commonjs/storage.d.ts +0 -4
  102. package/dist/commonjs/storage.js +0 -4
  103. package/dist/commonjs/styles/AppColors.d.ts +0 -3
  104. package/dist/commonjs/styles/AppColors.js +15 -30
  105. package/dist/commonjs/styles/AppFonts.d.ts +0 -4
  106. package/dist/commonjs/styles/AppFonts.js +0 -4
  107. package/dist/commonjs/styles/common.js +0 -11
  108. package/dist/commonjs/styles/index.js +0 -8
  109. package/dist/commonjs/types/enums.js +0 -3
  110. package/dist/commonjs/types/interfaces.d.ts +3 -3
  111. package/dist/esm/analytics.d.ts +0 -4
  112. package/dist/esm/analytics.js +0 -4
  113. package/dist/esm/bundle.d.ts +0 -4
  114. package/dist/esm/bundle.js +0 -4
  115. package/dist/esm/components/AnalyticsDetail.js +18 -27
  116. package/dist/esm/components/AnalyticsEventCard.js +9 -12
  117. package/dist/esm/components/AnalyticsGraph.js +10 -15
  118. package/dist/esm/components/AppHeaderLogo.js +0 -3
  119. package/dist/esm/components/BrandCircleIcon.js +15 -15
  120. package/dist/esm/components/BrandSquareIcon.js +20 -20
  121. package/dist/esm/components/CodeSnippet.js +6 -19
  122. package/dist/esm/components/ConsoleLogCard.js +0 -1
  123. package/dist/esm/components/CopyButton.js +0 -4
  124. package/dist/esm/components/DiffViewer.js +0 -2
  125. package/dist/esm/components/DomainHeader.js +0 -4
  126. package/dist/esm/components/EmptyState.js +0 -3
  127. package/dist/esm/components/ErrorBoundary.js +5 -10
  128. package/dist/esm/components/HeadersSection.js +0 -5
  129. package/dist/esm/components/HighlightText.js +1 -4
  130. package/dist/esm/components/Inspector/AnalyticsFilterModal.js +11 -26
  131. package/dist/esm/components/Inspector/AnalyticsTab.js +34 -40
  132. package/dist/esm/components/Inspector/BundleTab.js +56 -84
  133. package/dist/esm/components/Inspector/ConsoleTab.js +7 -7
  134. package/dist/esm/components/Inspector/CrashDetail.js +18 -20
  135. package/dist/esm/components/Inspector/CrashFilterModal.js +0 -1
  136. package/dist/esm/components/Inspector/CrashTab.js +11 -20
  137. package/dist/esm/components/Inspector/DeviceInfoTab.js +12 -24
  138. package/dist/esm/components/Inspector/FabLauncher.js +1 -1
  139. package/dist/esm/components/Inspector/InspectorContext.js +0 -2
  140. package/dist/esm/components/Inspector/InspectorHeader.js +7 -8
  141. package/dist/esm/components/Inspector/LogDetail.js +27 -29
  142. package/dist/esm/components/Inspector/MainScreen.js +9 -10
  143. package/dist/esm/components/Inspector/NetworkDetail.js +10 -11
  144. package/dist/esm/components/Inspector/NetworkTab.js +14 -14
  145. package/dist/esm/components/Inspector/NpmUpdateToast.js +6 -9
  146. package/dist/esm/components/Inspector/PerformanceTab.js +30 -43
  147. package/dist/esm/components/Inspector/ReduxDetail.js +18 -34
  148. package/dist/esm/components/Inspector/ReduxTab.js +11 -20
  149. package/dist/esm/components/Inspector/SettingsPanel.js +32 -36
  150. package/dist/esm/components/Inspector/SkeletonPlaceholder.js +6 -6
  151. package/dist/esm/components/Inspector/StorageTab.js +14 -26
  152. package/dist/esm/components/Inspector/UpdateAvailableModal.js +5 -6
  153. package/dist/esm/components/JsonViewer.js +3 -10
  154. package/dist/esm/components/LogCard.js +7 -7
  155. package/dist/esm/components/MetaAccordion.js +1 -7
  156. package/dist/esm/components/NetworkIcons.js +12 -16
  157. package/dist/esm/components/SectionHeader.js +0 -4
  158. package/dist/esm/components/SkeletonPlaceholder.js +6 -6
  159. package/dist/esm/components/Slider.js +6 -6
  160. package/dist/esm/components/SourcePageCard.js +0 -4
  161. package/dist/esm/components/TreeNode.js +0 -4
  162. package/dist/esm/console.d.ts +0 -4
  163. package/dist/esm/console.js +0 -4
  164. package/dist/esm/constants/index.js +6 -9
  165. package/dist/esm/constants/telemetryConfig.d.ts +3 -0
  166. package/dist/esm/constants/telemetryConfig.js +3 -0
  167. package/dist/esm/constants/version.d.ts +1 -1
  168. package/dist/esm/constants/version.js +1 -3
  169. package/dist/esm/crash.d.ts +0 -4
  170. package/dist/esm/crash.js +0 -4
  171. package/dist/esm/customHooks/analyticsLogger.d.ts +0 -7
  172. package/dist/esm/customHooks/analyticsLogger.js +3 -59
  173. package/dist/esm/customHooks/bundleAnalyzer.d.ts +0 -9
  174. package/dist/esm/customHooks/bundleAnalyzer.js +3 -86
  175. package/dist/esm/customHooks/consoleLogger.js +0 -16
  176. package/dist/esm/customHooks/crashHandler.d.ts +0 -28
  177. package/dist/esm/customHooks/crashHandler.js +0 -55
  178. package/dist/esm/customHooks/logFilters.d.ts +0 -4
  179. package/dist/esm/customHooks/logFilters.js +0 -11
  180. package/dist/esm/customHooks/networkLogger.js +2 -13
  181. package/dist/esm/customHooks/performanceTracker.d.ts +0 -27
  182. package/dist/esm/customHooks/performanceTracker.js +0 -31
  183. package/dist/esm/customHooks/reduxLogger.d.ts +0 -12
  184. package/dist/esm/customHooks/reduxLogger.js +0 -51
  185. package/dist/esm/customHooks/storageInspector.d.ts +0 -40
  186. package/dist/esm/customHooks/storageInspector.js +1 -56
  187. package/dist/esm/decorators/index.d.ts +0 -37
  188. package/dist/esm/decorators/index.js +0 -42
  189. package/dist/esm/helpers/gaAnalyticsRegistry.d.ts +0 -10
  190. package/dist/esm/helpers/gaAnalyticsRegistry.js +0 -26
  191. package/dist/esm/helpers/index.d.ts +0 -7
  192. package/dist/esm/helpers/index.js +1 -42
  193. package/dist/esm/helpers/memoryManager.d.ts +0 -11
  194. package/dist/esm/helpers/memoryManager.js +0 -13
  195. package/dist/esm/helpers/searchQueryParser.d.ts +0 -4
  196. package/dist/esm/helpers/searchQueryParser.js +0 -18
  197. package/dist/esm/helpers/settingsStore.js +0 -8
  198. package/dist/esm/helpers/telemetry.d.ts +2 -0
  199. package/dist/esm/helpers/telemetry.js +132 -0
  200. package/dist/esm/i18n/index.d.ts +0 -9
  201. package/dist/esm/i18n/index.js +0 -15
  202. package/dist/esm/index.js +15 -97
  203. package/dist/esm/native/NativeInspector.d.ts +0 -54
  204. package/dist/esm/native/NativeInspector.js +0 -56
  205. package/dist/esm/network.d.ts +0 -4
  206. package/dist/esm/network.js +0 -4
  207. package/dist/esm/performance.d.ts +0 -4
  208. package/dist/esm/performance.js +0 -4
  209. package/dist/esm/redux.d.ts +0 -4
  210. package/dist/esm/redux.js +0 -4
  211. package/dist/esm/storage.d.ts +0 -4
  212. package/dist/esm/storage.js +0 -4
  213. package/dist/esm/styles/AppColors.d.ts +0 -3
  214. package/dist/esm/styles/AppColors.js +15 -30
  215. package/dist/esm/styles/AppFonts.d.ts +0 -4
  216. package/dist/esm/styles/AppFonts.js +0 -4
  217. package/dist/esm/styles/common.js +0 -11
  218. package/dist/esm/styles/index.js +0 -8
  219. package/dist/esm/types/enums.js +0 -3
  220. package/dist/esm/types/interfaces.d.ts +3 -3
  221. package/package.json +2 -2
  222. package/src/constants/telemetryConfig.ts +6 -0
  223. package/src/constants/version.ts +1 -1
  224. package/src/helpers/telemetry.ts +161 -0
  225. package/src/index.tsx +15 -1
  226. package/src/types/interfaces.ts +3 -0
@@ -15,9 +15,6 @@ const localeRegistry = {
15
15
  en: en_json_1.default,
16
16
  };
17
17
  let currentLanguage = 'en';
18
- /**
19
- * Lightweight nested lookup for translation keys (e.g. "network.headers")
20
- */
21
18
  function lookupKey(obj, path) {
22
19
  if (!obj || !path)
23
20
  return undefined;
@@ -30,9 +27,6 @@ function lookupKey(obj, path) {
30
27
  }
31
28
  return current;
32
29
  }
33
- /**
34
- * Interpolates {{key}} placeholders in string templates
35
- */
36
30
  function interpolate(template, params) {
37
31
  if (!params || typeof template !== 'string')
38
32
  return template;
@@ -40,9 +34,6 @@ function interpolate(template, params) {
40
34
  return params[key] !== undefined ? String(params[key]) : `{{${key}}}`;
41
35
  });
42
36
  }
43
- /**
44
- * Standalone zero-dependency translation function
45
- */
46
37
  function t(key, optionsOrFallback) {
47
38
  const activeBundle = localeRegistry[currentLanguage] || localeRegistry.en;
48
39
  let raw = lookupKey(activeBundle, key);
@@ -86,18 +77,12 @@ exports.i18n = {
86
77
  addTranslations,
87
78
  setTranslations,
88
79
  };
89
- /**
90
- * React hook compatible with react-i18next useTranslation()
91
- */
92
80
  function useTranslation() {
93
81
  return {
94
82
  t,
95
83
  i18n: exports.i18n,
96
84
  };
97
85
  }
98
- /**
99
- * Backward-compatible I18nextProvider component
100
- */
101
86
  const I18nextProvider = ({ children }) => {
102
87
  return react_1.default.createElement(react_1.default.Fragment, null, children);
103
88
  };
@@ -42,41 +42,30 @@ exports.I18nextProvider = exports.setTranslations = exports.addTranslations = ex
42
42
  const react_1 = __importStar(require("react"));
43
43
  const react_native_1 = require("react-native");
44
44
  const native_1 = require("@react-navigation/native");
45
- // i18n
46
45
  const i18n_1 = require("./i18n");
47
- // Components
48
46
  const ErrorBoundary_1 = __importDefault(require("./components/ErrorBoundary"));
49
47
  const MainScreen_1 = __importDefault(require("./components/Inspector/MainScreen"));
50
48
  const InspectorContext_1 = require("./components/Inspector/InspectorContext");
51
- // Helpers
52
49
  const helpers_1 = require("./helpers");
53
- // #5 — settings persistence
54
50
  const settingsStore_1 = require("./helpers/settingsStore");
55
51
  const NativeInspector_1 = require("./native/NativeInspector");
56
- // Network
57
52
  const networkLogger_1 = require("./customHooks/networkLogger");
58
- // Console
59
53
  const consoleLogger_1 = require("./customHooks/consoleLogger");
60
54
  const logFilters_1 = require("./customHooks/logFilters");
61
- // Crash Protection
62
55
  const crashHandler_1 = require("./customHooks/crashHandler");
56
+ const telemetry_1 = require("./helpers/telemetry");
63
57
  const analyticsLogger_1 = require("./customHooks/analyticsLogger");
64
58
  const reduxLogger_1 = require("./customHooks/reduxLogger");
65
59
  const performanceTracker_1 = require("./customHooks/performanceTracker");
66
60
  const bundleAnalyzer_1 = require("./customHooks/bundleAnalyzer");
67
61
  const NativeInspector_2 = require("./native/NativeInspector");
68
62
  const constants_1 = require("./constants");
69
- // Stylesheet
70
63
  const styles_1 = require("./styles");
71
64
  const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, environment, initialVisible = false, visible: controlledVisible, }) => {
72
- // Set custom storage synchronously during render phase
73
65
  (0, settingsStore_1.setCustomStorage)(storage || null);
74
66
  const [isDark, setIsDark] = (0, react_1.useState)(false);
75
67
  const [reduxState, setReduxState] = (0, react_1.useState)(null);
76
- // Per-reducer last action is kept in component state so the
77
- // Redux tab re-renders live on every dispatch, independent of the state tree ref.
78
68
  const [reduxLastActionMap, setReduxLastActionMap] = (0, react_1.useState)({});
79
- // Inspector panel height as a percentage of the screen (configurable in Settings).
80
69
  const [modalHeightPercent, setModalHeightPercent] = (0, react_1.useState)(90);
81
70
  const [modalAnimationType, setModalAnimationType] = (0, react_1.useState)('slide');
82
71
  const [logs, setLogs] = (0, react_1.useState)([]);
@@ -118,19 +107,15 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
118
107
  const [collapsedSections, setCollapsedSections] = (0, react_1.useState)(new Set());
119
108
  const [showHeaderInfo, setShowHeaderInfo] = (0, react_1.useState)(true);
120
109
  const [sortOrder, setSortOrder] = (0, react_1.useState)('newest');
121
- // #7 — sort order for the Logs (console) tab
122
110
  const [logSortOrder, setLogSortOrder] = (0, react_1.useState)('newest');
123
111
  const [reqExpanded, setReqExpanded] = (0, react_1.useState)(true);
124
112
  const [resExpanded, setResExpanded] = (0, react_1.useState)(true);
125
113
  const [showReqDiff, setShowReqDiff] = (0, react_1.useState)(false);
126
114
  const [showResDiff, setShowResDiff] = (0, react_1.useState)(false);
127
- // ─── Analytics state ───────────────────────────────────────────────────────
128
115
  const [activeTab, setActiveTab] = (0, react_1.useState)('apis');
129
116
  const [analyticsEvents, setAnalyticsEvents] = (0, react_1.useState)([]);
130
- // ─── Logs state ────────────────────────────────────────────────────────────
131
117
  const [consoleLogs, setConsoleLogs] = (0, react_1.useState)([]);
132
118
  const [selectedLog, setSelectedLog] = (0, react_1.useState)(null);
133
- // ─── Pause states ─────────────────────────────────────────────────────────
134
119
  const [isNetworkPaused, setIsNetworkPaused] = (0, react_1.useState)(false);
135
120
  const isNetworkPausedRef = (0, react_1.useRef)(isNetworkPaused);
136
121
  isNetworkPausedRef.current = isNetworkPaused;
@@ -146,7 +131,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
146
131
  const [lastReadLogsCount, setLastReadLogsCount] = (0, react_1.useState)(0);
147
132
  const [lastReadApisCount, setLastReadApisCount] = (0, react_1.useState)(0);
148
133
  const [lastReadCrashesCount, setLastReadCrashesCount] = (0, react_1.useState)(0);
149
- // ─── Crash state ───────────────────────────────────────────────────────────
150
134
  const [crashRecords, setCrashRecords] = (0, react_1.useState)(() => (0, crashHandler_1.getCrashRecords)());
151
135
  const [selectedCrash, setSelectedCrash] = (0, react_1.useState)(null);
152
136
  const [maxCrashLogs, setMaxCrashLogs] = (0, react_1.useState)(50);
@@ -213,7 +197,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
213
197
  }, [consoleLogs, showConsoleLevels, maxConsoleLogs]);
214
198
  const [logSearch, setLogSearch] = (0, react_1.useState)('');
215
199
  const [logFilters, setLogFilters] = (0, react_1.useState)(new Set(['user-log']));
216
- // ─── Settings state ──────────────────────────────────────────────────────────
217
200
  const [settingsPage, setSettingsPage] = (0, react_1.useState)(null);
218
201
  const [settingsActiveSubTab, setSettingsActiveSubTab] = (0, react_1.useState)('module');
219
202
  const [tabVisibility, setTabVisibility] = (0, react_1.useState)({
@@ -233,11 +216,9 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
233
216
  const [deviceFreeRamMb, setDeviceFreeRamMb] = (0, react_1.useState)(1800);
234
217
  const [reduxAutoRefresh, setReduxAutoRefreshState] = (0, react_1.useState)(true);
235
218
  const [reduxExpandDepth, setReduxExpandDepth] = (0, react_1.useState)(1);
236
- // #6 — tab the inspector opens on. Shown with a DEFAULT badge in Settings.
237
219
  const [defaultTab, setDefaultTab] = (0, react_1.useState)('apis');
238
220
  const [showDuplicateLogs, setShowDuplicateLogs] = (0, react_1.useState)(false);
239
221
  const [showUpdateToast, setShowUpdateToast] = (0, react_1.useState)(true);
240
- // Synchronize runtime background listeners with active settings
241
222
  (0, react_1.useEffect)(() => {
242
223
  (0, networkLogger_1.setNetworkModuleEnabled)(!!tabVisibility.apis);
243
224
  (0, consoleLogger_1.setConsoleModuleEnabled)(!!tabVisibility.logs);
@@ -247,7 +228,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
247
228
  (0, crashHandler_1.setCrashModuleEnabled)(!!tabVisibility.crash);
248
229
  (0, bundleAnalyzer_1.setBundleModuleEnabled)(!!tabVisibility.bundle);
249
230
  }, [tabVisibility]);
250
- // Query native hardware RAM and auto-tune limits if auto-RAM is active
251
231
  (0, react_1.useEffect)(() => {
252
232
  (0, NativeInspector_1.getNativeSystemMetrics)()
253
233
  .then(metrics => {
@@ -301,7 +281,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
301
281
  setShowUpdateToast(true);
302
282
  react_native_1.Alert.alert('Settings Reset', 'All settings have been reset to default values.');
303
283
  };
304
- // #5 — hydrate persisted settings once, then auto-save on any change.
305
284
  const settingsHydratedRef = (0, react_1.useRef)(false);
306
285
  (0, react_1.useEffect)(() => {
307
286
  let cancelled = false;
@@ -320,7 +299,7 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
320
299
  setTabVisibility(prev => ({
321
300
  ...prev,
322
301
  ...saved.tabVisibility,
323
- apis: true, // APIs is always required
302
+ apis: true,
324
303
  }));
325
304
  if (saved.defaultTab)
326
305
  setDefaultTab(saved.defaultTab);
@@ -405,8 +384,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
405
384
  reduxExpandDepth,
406
385
  showDuplicateLogs,
407
386
  ]);
408
- // #1 — check NPM for a newer published version; surfaces an animated dot
409
- // in the header next to the npm chip when an update is available.
410
387
  const [latestNpmVersion, setLatestNpmVersion] = (0, react_1.useState)(null);
411
388
  const updateAvailable = (0, react_1.useMemo)(() => {
412
389
  if (!latestNpmVersion)
@@ -435,7 +412,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
435
412
  }
436
413
  })
437
414
  .catch(() => {
438
- // Offline / blocked — silently skip the update check.
439
415
  });
440
416
  return () => {
441
417
  cancelled = true;
@@ -444,7 +420,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
444
420
  (0, react_1.useEffect)(() => {
445
421
  (0, reduxLogger_1.setReduxAutoRefresh)(reduxAutoRefresh);
446
422
  }, [reduxAutoRefresh]);
447
- // Auto-unselect Redux or Analytics tab if module is not connected / available
448
423
  (0, react_1.useEffect)(() => {
449
424
  if (activeTab === 'redux' && !(0, reduxLogger_1.isReduxConnected)()) {
450
425
  setActiveTab('apis');
@@ -467,7 +442,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
467
442
  (0, InspectorContext_1.animateNextLayout)();
468
443
  setActiveTab('apis');
469
444
  }
470
- // #6 — a hidden module can't be the default landing tab.
471
445
  if (!nextVal && defaultTab === key) {
472
446
  setDefaultTab('apis');
473
447
  }
@@ -625,12 +599,9 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
625
599
  }
626
600
  }
627
601
  catch (err) {
628
- // Safe check
629
602
  }
630
603
  };
631
- // Initialize state
632
604
  updateState();
633
- // Listen to changes
634
605
  const unsubscribe = typeof navigationRef.addListener === 'function'
635
606
  ? navigationRef.addListener('state', () => {
636
607
  updateState();
@@ -648,11 +619,8 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
648
619
  const pulseAnim = (0, react_1.useRef)(new react_native_1.Animated.Value(1)).current;
649
620
  const activePulseAnim = (0, react_1.useRef)(new react_native_1.Animated.Value(0.4)).current;
650
621
  const unreadPulseAnim = (0, react_1.useRef)(new react_native_1.Animated.Value(1)).current;
651
- // #4 — diagonal light streak sweeping across the floating launcher
652
622
  const fabShineAnim = (0, react_1.useRef)(new react_native_1.Animated.Value(0)).current;
653
- // #11 — header "clear all" icon spin/scale animation
654
623
  const clearAnim = (0, react_1.useRef)(new react_native_1.Animated.Value(0)).current;
655
- // #4 — draggable floating launcher (drag anywhere on screen)
656
624
  const fabPan = (0, react_1.useRef)(new react_native_1.Animated.ValueXY({ x: 0, y: 0 })).current;
657
625
  const fabPanRef = (0, react_1.useRef)({ x: 0, y: 0 });
658
626
  (0, react_1.useEffect)(() => {
@@ -665,8 +633,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
665
633
  }, [fabPan]);
666
634
  const fabDraggedRef = (0, react_1.useRef)(false);
667
635
  const fabPanResponder = (0, react_1.useRef)(react_native_1.PanResponder.create({
668
- // Let taps fall through to the launcher; only hijack once the
669
- // finger actually moves, so onPress still fires on a tap.
670
636
  onStartShouldSetPanResponder: () => false,
671
637
  onMoveShouldSetPanResponder: (_e, g) => Math.abs(g.dx) > 4 || Math.abs(g.dy) > 4,
672
638
  onPanResponderGrant: () => {
@@ -682,7 +648,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
682
648
  }),
683
649
  onPanResponderRelease: () => {
684
650
  fabPan.flattenOffset();
685
- // small delay so the trailing tap (if any) is ignored
686
651
  setTimeout(() => {
687
652
  fabDraggedRef.current = false;
688
653
  }, 50);
@@ -692,8 +657,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
692
657
  fabDraggedRef.current = false;
693
658
  },
694
659
  })).current;
695
- // #2 — scroll-to-top button for the main APIs list, always visible at the
696
- // bottom right of the list.
697
660
  const runClearAllWithAnimation = (0, react_1.useCallback)(() => {
698
661
  react_native_1.Animated.sequence([
699
662
  react_native_1.Animated.timing(clearAnim, {
@@ -730,7 +693,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
730
693
  loop.start();
731
694
  return () => loop.stop();
732
695
  }, [pulseAnim]);
733
- // #4 — sweep the shine streak across the launcher, pause, repeat.
734
696
  (0, react_1.useEffect)(() => {
735
697
  const loop = react_native_1.Animated.loop(react_native_1.Animated.sequence([
736
698
  react_native_1.Animated.timing(fabShineAnim, {
@@ -782,7 +744,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
782
744
  }, [unreadPulseAnim]);
783
745
  const isNativeModule = (0, react_1.useMemo)(() => (0, NativeInspector_2.isNativeModuleAvailable)(), []);
784
746
  const useNativeFab = (react_native_1.Platform.OS === 'ios' || react_native_1.Platform.OS === 'android') && isNativeModule;
785
- // 100% Native Main-Thread Floating Button Lifecycle
786
747
  (0, react_1.useEffect)(() => {
787
748
  if (!useNativeFab || !enabled) {
788
749
  if (useNativeFab) {
@@ -809,7 +770,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
809
770
  logs.length,
810
771
  analyticsEvents.length,
811
772
  ]);
812
- // Subscribe to native UI-thread floating button tap events
813
773
  (0, react_1.useEffect)(() => {
814
774
  if (!useNativeFab)
815
775
  return;
@@ -820,7 +780,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
820
780
  unsubscribe();
821
781
  };
822
782
  }, [useNativeFab]);
823
- // Subscribe to physical hardware shake events (or Cmd+Ctrl+Z on iOS simulator)
824
783
  (0, react_1.useEffect)(() => {
825
784
  if (!useNativeFab)
826
785
  return;
@@ -832,7 +791,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
832
791
  };
833
792
  }, [useNativeFab]);
834
793
  const isVisibleRefObj = (0, react_1.useRef)(visible);
835
- // #6 — every time the inspector is opened, land on chosen default tab & sync latest logs
836
794
  (0, react_1.useEffect)(() => {
837
795
  isVisibleRefObj.current = visible;
838
796
  if (visible) {
@@ -840,7 +798,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
840
798
  ? defaultTab
841
799
  : 'apis';
842
800
  setActiveTab(target);
843
- // Instant synchronization of data collected while modal was closed
844
801
  if (latestNetworkLogsRef.current.length > 0) {
845
802
  const deduped = (0, helpers_1.deduplicateLogs)(latestNetworkLogsRef.current);
846
803
  const incoming = new Set(deduped.map(l => l.id));
@@ -896,8 +853,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
896
853
  setCrashRecords(updated);
897
854
  }
898
855
  });
899
- // Sync crashes recorded before this subscription ran (e.g. a render crash
900
- // during the very first commit, which fires before effects are mounted).
901
856
  const pendingCrashes = (0, crashHandler_1.getCrashRecords)();
902
857
  if (pendingCrashes.length > 0) {
903
858
  pendingCrashes.forEach(c => (0, NativeInspector_1.pushNativeLogRecord)('crash', JSON.stringify(c)));
@@ -913,7 +868,7 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
913
868
  if (isNetworkPausedRef.current)
914
869
  return;
915
870
  if (!isVisibleRef.current)
916
- return; // ZERO-RENDER INACTIVE MODE
871
+ return;
917
872
  clearTimeout(timeoutId);
918
873
  const updateNetworkState = () => {
919
874
  const deduped = (0, helpers_1.deduplicateLogs)(raw);
@@ -954,7 +909,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
954
909
  timeoutId = setTimeout(updateNetworkState, 250);
955
910
  }
956
911
  });
957
- // ─── Analytics subscription ──────────────────────────────────────────────
958
912
  let analyticsTimeoutId;
959
913
  let isFirstAnalyticsCall = true;
960
914
  const unsubscribeAnalytics = (0, analyticsLogger_1.subscribeAnalyticsEvents)((raw) => {
@@ -965,7 +919,7 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
965
919
  if (isAnalyticsPausedRef.current)
966
920
  return;
967
921
  if (!isVisibleRef.current)
968
- return; // ZERO-RENDER INACTIVE MODE
922
+ return;
969
923
  clearTimeout(analyticsTimeoutId);
970
924
  const updateAnalyticsState = () => {
971
925
  const incoming = new Set(raw.map(e => e.id));
@@ -996,7 +950,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
996
950
  analyticsTimeoutId = setTimeout(updateAnalyticsState, 200);
997
951
  }
998
952
  });
999
- // ─── Console subscription ────────────────────────────────────────────────
1000
953
  let consoleTimeoutId;
1001
954
  let isFirstConsoleCall = true;
1002
955
  const unsubscribeConsole = (0, consoleLogger_1.subscribeConsoleLogs)((raw) => {
@@ -1007,7 +960,7 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1007
960
  if (isConsolePausedRef.current)
1008
961
  return;
1009
962
  if (!isVisibleRef.current)
1010
- return; // ZERO-RENDER INACTIVE MODE
963
+ return;
1011
964
  clearTimeout(consoleTimeoutId);
1012
965
  if (isFirstConsoleCall) {
1013
966
  isFirstConsoleCall = false;
@@ -1026,7 +979,7 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1026
979
  }
1027
980
  const unsubscribeRedux = (0, reduxLogger_1.subscribeReduxState)(() => {
1028
981
  if (!isVisibleRef.current)
1029
- return; // ZERO-RENDER INACTIVE MODE
982
+ return;
1030
983
  const freshState = (0, reduxLogger_1.getReduxState)();
1031
984
  setReduxState(freshState && typeof freshState === 'object' ? { ...freshState } : freshState);
1032
985
  setReduxLastActionMap({ ...(0, reduxLogger_1.getLastActionForReducer)() });
@@ -1074,7 +1027,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1074
1027
  }, [selected]);
1075
1028
  const filteredLogs = (0, react_1.useMemo)(() => {
1076
1029
  let result = logs.filter(log => {
1077
- // 1. Quick Filter Check (All, Errors, Success, Slow, GET, POST, GraphQL)
1078
1030
  if (quickFilter && quickFilter !== 'all') {
1079
1031
  if (quickFilter === 'errors') {
1080
1032
  const isErr = log.status === 0 ||
@@ -1107,7 +1059,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1107
1059
  }
1108
1060
  }
1109
1061
  }
1110
- // 2. Status Filter Check (from filters accordion dropdown)
1111
1062
  if (statusFilters.size > 0) {
1112
1063
  const matched = [...statusFilters].some(f => {
1113
1064
  if (f === 'ALL')
@@ -1123,7 +1074,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1123
1074
  if (!matched)
1124
1075
  return false;
1125
1076
  }
1126
- // 3. Method Filter Check (from filters accordion dropdown)
1127
1077
  if (methodFilters.size > 0) {
1128
1078
  const matchedMethod = [...methodFilters].some(m => {
1129
1079
  if (m === 'ALL')
@@ -1133,7 +1083,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1133
1083
  if (!matchedMethod)
1134
1084
  return false;
1135
1085
  }
1136
- // 4. Advanced Search Query Engine Check with Scope, Regex and Case-Sensitivity
1137
1086
  if (search && search.trim().length > 0) {
1138
1087
  const routePath = logRouteMapRef.current.get(log.id)?.path || '';
1139
1088
  const isMatch = (0, helpers_1.matchNetworkLogQuery)(log, search, routePath, {
@@ -1149,7 +1098,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1149
1098
  if (sortOrder === 'oldest') {
1150
1099
  result = [...result].reverse();
1151
1100
  }
1152
- // #9 — collapse consecutive identical requests
1153
1101
  if (!showDuplicateLogs) {
1154
1102
  const collapsed = [];
1155
1103
  for (const log of result) {
@@ -1299,7 +1247,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1299
1247
  const prevResponseData = prevSameRequest ? prevSameRequest.response : null;
1300
1248
  const filteredAnalyticsEvents = (0, react_1.useMemo)(() => {
1301
1249
  let events = analyticsEvents;
1302
- // Search query filter
1303
1250
  if (analyticsSearch && analyticsSearch.trim().length > 0) {
1304
1251
  const queryTokens = analyticsSearch.trim().toLowerCase().split(/\s+/).filter(Boolean);
1305
1252
  events = events.filter(e => {
@@ -1315,14 +1262,12 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1315
1262
  return queryTokens.every(token => searchTarget.includes(token));
1316
1263
  });
1317
1264
  }
1318
- // Category filter
1319
1265
  if (analyticsFilters.categories.size > 0 && !analyticsFilters.categories.has('all')) {
1320
1266
  events = events.filter(e => {
1321
1267
  const cat = (0, helpers_1.getEventCategory)(e.name);
1322
1268
  return analyticsFilters.categories.has(cat);
1323
1269
  });
1324
1270
  }
1325
- // Time window filter
1326
1271
  if (analyticsFilters.timeWindow !== 'all') {
1327
1272
  const now = Date.now();
1328
1273
  const cutoff = analyticsFilters.timeWindow === '1m'
@@ -1334,11 +1279,9 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1334
1279
  : now - 60 * 60 * 1000;
1335
1280
  events = events.filter(e => e.timestamp >= cutoff);
1336
1281
  }
1337
- // Source filter
1338
1282
  if (analyticsFilters.sources.size > 0 && !analyticsFilters.sources.has('all')) {
1339
1283
  events = events.filter(e => analyticsFilters.sources.has(e.source || 'manual'));
1340
1284
  }
1341
- // User identification filter
1342
1285
  if (analyticsFilters.userTypes.size > 0 && !analyticsFilters.userTypes.has('all')) {
1343
1286
  events = events.filter(e => {
1344
1287
  const isIdentified = Boolean(e.userId && e.userId.trim() !== '');
@@ -1349,7 +1292,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1349
1292
  return false;
1350
1293
  });
1351
1294
  }
1352
- // Payload complexity filter
1353
1295
  if (analyticsFilters.payloadComplexity !== 'all') {
1354
1296
  if (analyticsFilters.payloadComplexity === 'none') {
1355
1297
  events = events.filter(e => !e.params || Object.keys(e.params).length === 0);
@@ -1361,7 +1303,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1361
1303
  events = events.filter(e => e.params && Object.keys(e.params).length > 3);
1362
1304
  }
1363
1305
  }
1364
- // Conversion / Goal events filter
1365
1306
  if (analyticsFilters.onlyConversions) {
1366
1307
  const CONVERSION_PATTERNS = [
1367
1308
  'purchase',
@@ -1378,7 +1319,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1378
1319
  ];
1379
1320
  events = events.filter(e => CONVERSION_PATTERNS.some(pat => e.name.toLowerCase().includes(pat)));
1380
1321
  }
1381
- // Screen filter
1382
1322
  if (analyticsFilters.screens.size > 0) {
1383
1323
  events = events.filter(e => {
1384
1324
  const scr = e.screenName ||
@@ -1390,24 +1330,19 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1390
1330
  return analyticsFilters.screens.has(scr);
1391
1331
  });
1392
1332
  }
1393
- // Has Revenue filter
1394
1333
  if (analyticsFilters.hasRevenue) {
1395
1334
  events = events.filter(e => (e.params?.value != null && !isNaN(Number(e.params.value))) ||
1396
1335
  (e.params?.price != null && !isNaN(Number(e.params.price))));
1397
1336
  }
1398
- // Has Items filter
1399
1337
  if (analyticsFilters.hasItems) {
1400
1338
  events = events.filter(e => Array.isArray(e.params?.items) && e.params.items.length > 0);
1401
1339
  }
1402
- // Has User Props filter
1403
1340
  if (analyticsFilters.hasUserProps) {
1404
1341
  events = events.filter(e => e.userProperties && Object.keys(e.userProperties).length > 0);
1405
1342
  }
1406
- // Has Params filter
1407
1343
  if (analyticsFilters.hasParams) {
1408
1344
  events = events.filter(e => e.params && Object.keys(e.params).length > 0);
1409
1345
  }
1410
- // Deduplication
1411
1346
  const deduplicatedEvents = [];
1412
1347
  for (const e of events) {
1413
1348
  if (deduplicatedEvents.length === 0) {
@@ -1419,7 +1354,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1419
1354
  JSON.stringify(last.params) === JSON.stringify(e.params) &&
1420
1355
  JSON.stringify(last.userProperties) === JSON.stringify(e.userProperties)) {
1421
1356
  last.count = (last.count || 1) + 1;
1422
- // Point to the newest timestamp and id
1423
1357
  last.timestamp = e.timestamp;
1424
1358
  last.id = e.id;
1425
1359
  }
@@ -1428,11 +1362,9 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1428
1362
  }
1429
1363
  }
1430
1364
  let result = deduplicatedEvents;
1431
- // Only duplicates filter
1432
1365
  if (analyticsFilters.onlyDuplicates) {
1433
1366
  result = result.filter(e => (e.count || 1) > 1);
1434
1367
  }
1435
- // Sorting
1436
1368
  if (analyticsFilters.sortBy === 'time_asc') {
1437
1369
  result = [...result].sort((a, b) => a.timestamp - b.timestamp);
1438
1370
  }
@@ -1450,7 +1382,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1450
1382
  }, [analyticsEvents, analyticsSearch, analyticsFilters, maxAnalyticsEventsLimit]);
1451
1383
  const filteredConsoleLogs = (0, react_1.useMemo)(() => {
1452
1384
  let result = visibleConsoleLogs;
1453
- // Filters check
1454
1385
  if (logFilters.size > 0 && !logFilters.has('all')) {
1455
1386
  result = result.filter(log => {
1456
1387
  if (logFilters.has(log.type))
@@ -1463,7 +1394,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1463
1394
  return false;
1464
1395
  });
1465
1396
  }
1466
- // Comprehensive Search bar check
1467
1397
  if (logSearch && logSearch.trim().length > 0) {
1468
1398
  const queryTokens = logSearch.trim().toLowerCase().split(/\s+/).filter(Boolean);
1469
1399
  result = result.filter(log => {
@@ -1497,12 +1427,9 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1497
1427
  });
1498
1428
  });
1499
1429
  }
1500
- // #7 — apply sort order (newest/oldest first)
1501
1430
  result = [...result].sort((a, b) => logSortOrder === 'newest'
1502
1431
  ? b.timestamp - a.timestamp
1503
1432
  : a.timestamp - b.timestamp);
1504
- // #9 — collapse consecutive identical messages into one row with a ×N
1505
- // counter unless duplicates are explicitly enabled in Settings.
1506
1433
  if (!showDuplicateLogs) {
1507
1434
  const collapsed = [];
1508
1435
  for (const log of result) {
@@ -1574,11 +1501,9 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1574
1501
  setMethodFilters(new Set());
1575
1502
  prevLogIdsRef.current = new Set();
1576
1503
  logRouteMapRef.current = new Map();
1577
- // Also clear analytics
1578
1504
  (0, analyticsLogger_1.clearAnalyticsEvents)();
1579
1505
  setAnalyticsEvents([]);
1580
1506
  prevEventIdsRef.current = new Set();
1581
- // Also clear console logs
1582
1507
  (0, consoleLogger_1.clearConsoleLogs)();
1583
1508
  setConsoleLogs([]);
1584
1509
  }
@@ -1642,7 +1567,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1642
1567
  ]);
1643
1568
  return;
1644
1569
  }
1645
- // Default: APIs tab. Only clears NETWORK logs — never touches the other tabs.
1646
1570
  if (selectedLogs.size > 0) {
1647
1571
  setLogs(prev => prev.filter(l => !selectedLogs.has(l.id)));
1648
1572
  setSelectedLogs(new Set());
@@ -1658,7 +1582,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1658
1582
  ]);
1659
1583
  }
1660
1584
  }
1661
- // Clears ONLY network logs + their derived selection/filter state.
1662
1585
  function clearNetworkOnly() {
1663
1586
  (0, networkLogger_1.clearNetworkLogs)();
1664
1587
  setLogs([]);
@@ -1697,7 +1620,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1697
1620
  });
1698
1621
  }, []);
1699
1622
  const contextValue = {
1700
- // ─── Modal / launcher ───────────────────────────────────────────────
1701
1623
  visible,
1702
1624
  setVisible,
1703
1625
  closeModal,
@@ -1712,14 +1634,12 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1712
1634
  setModalAnimationType,
1713
1635
  hasNavigationContext,
1714
1636
  setNavState,
1715
- // ─── Tabs ───────────────────────────────────────────────────────────
1716
1637
  activeTab,
1717
1638
  switchActiveTab,
1718
1639
  tabVisibility,
1719
1640
  toggleTabVisibility,
1720
1641
  lastReadApisCount,
1721
1642
  lastReadLogsCount,
1722
- // ─── Selection / header state ───────────────────────────────────────
1723
1643
  selected,
1724
1644
  setSelected,
1725
1645
  selectedEvent,
@@ -1736,14 +1656,12 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1736
1656
  activePulseAnim,
1737
1657
  unreadPulseAnim,
1738
1658
  runClearAllWithAnimation,
1739
- // ─── FAB / launcher ─────────────────────────────────────────────────
1740
1659
  useNativeFab,
1741
1660
  fabPan,
1742
1661
  fabPanResponder,
1743
1662
  fabDraggedRef,
1744
1663
  pulseAnim,
1745
1664
  fabShineAnim,
1746
- // ─── Network (APIs) ─────────────────────────────────────────────────
1747
1665
  logs,
1748
1666
  filteredLogs,
1749
1667
  groupedData,
@@ -1774,7 +1692,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1774
1692
  handleDelete,
1775
1693
  isNetworkPaused,
1776
1694
  setIsNetworkPaused,
1777
- // ─── Network detail ─────────────────────────────────────────────────
1778
1695
  detailTitle,
1779
1696
  detailDisplayUrl,
1780
1697
  apiDetailActiveTab,
@@ -1792,7 +1709,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1792
1709
  prevRequestData,
1793
1710
  prevResponseData,
1794
1711
  logRouteMapRef,
1795
- // ─── Console (Logs) ─────────────────────────────────────────────────
1796
1712
  consoleLogs,
1797
1713
  visibleConsoleLogs,
1798
1714
  filteredConsoleLogs,
@@ -1805,7 +1721,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1805
1721
  setLogSortOrder,
1806
1722
  isConsolePaused,
1807
1723
  setIsConsolePaused,
1808
- // ─── Analytics ──────────────────────────────────────────────────────
1809
1724
  analyticsEvents,
1810
1725
  filteredAnalyticsEvents,
1811
1726
  analyticsSearch,
@@ -1821,7 +1736,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1821
1736
  setAnalyticsHeaderExpanded,
1822
1737
  isAnalyticsPaused,
1823
1738
  setIsAnalyticsPaused,
1824
- // ─── Redux ──────────────────────────────────────────────────────────
1825
1739
  reduxState,
1826
1740
  setReduxState,
1827
1741
  reduxLastActionMap,
@@ -1833,7 +1747,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1833
1747
  setSelectedReduxAction,
1834
1748
  reduxActiveSubTab,
1835
1749
  setReduxActiveSubTab,
1836
- // ─── Crash ───────────────────────────────────────────────────────────
1837
1750
  crashRecords,
1838
1751
  setCrashRecords,
1839
1752
  selectedCrash,
@@ -1846,7 +1759,6 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1846
1759
  setCrashRecords([]);
1847
1760
  setSelectedCrash(null);
1848
1761
  },
1849
- // ─── Settings ───────────────────────────────────────────────────────
1850
1762
  settingsActiveSubTab,
1851
1763
  setSettingsActiveSubTab,
1852
1764
  defaultTab,
@@ -1881,15 +1793,22 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1881
1793
  };
1882
1794
  const NetworkInspectorWrapper = (props) => {
1883
1795
  const enabled = props?.enabled ?? true;
1796
+ const telemetry = props?.telemetry ?? true;
1884
1797
  (0, react_1.useEffect)(() => {
1885
1798
  if (!enabled) {
1886
1799
  (0, NativeInspector_2.hideNativeFloatingButton)().catch(() => { });
1800
+ (0, telemetry_1.setTelemetryEnabled)(false);
1801
+ }
1802
+ else if (telemetry) {
1803
+ (0, telemetry_1.trackActiveTelemetryHeartbeat)(true, props?.environment);
1804
+ }
1805
+ else {
1806
+ (0, telemetry_1.setTelemetryEnabled)(false);
1887
1807
  }
1888
1808
  return () => {
1889
1809
  (0, NativeInspector_2.hideNativeFloatingButton)().catch(() => { });
1890
1810
  };
1891
- }, [enabled]);
1892
- // If enabled is false, return null immediately with 0 overhead
1811
+ }, [enabled, telemetry, props?.environment]);
1893
1812
  if (!enabled) {
1894
1813
  return null;
1895
1814
  }
@@ -1900,7 +1819,6 @@ const NetworkInspectorWrapper = (props) => {
1900
1819
  </i18n_1.I18nextProvider>);
1901
1820
  };
1902
1821
  exports.default = NetworkInspectorWrapper;
1903
- // Re-export public APIs
1904
1822
  var networkLogger_2 = require("./customHooks/networkLogger");
1905
1823
  Object.defineProperty(exports, "setupNetworkLogger", { enumerable: true, get: function () { return networkLogger_2.setupNetworkLogger; } });
1906
1824
  Object.defineProperty(exports, "clearNetworkLogs", { enumerable: true, get: function () { return networkLogger_2.clearNetworkLogs; } });