react-native-inapp-inspector 1.1.34 → 2.0.0

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 (122) hide show
  1. package/README.md +123 -101
  2. package/android/build.gradle +13 -1
  3. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +904 -0
  4. package/android/src/main/java/com/inappinspector/NetworkInspectorPackage.kt +17 -0
  5. package/dist/commonjs/components/ConsoleLogCard.js +57 -56
  6. package/dist/commonjs/components/CopyButton.js +10 -1
  7. package/dist/commonjs/components/ErrorBoundary.js +3 -0
  8. package/dist/commonjs/components/Inspector/AnalyticsTab.js +7 -3
  9. package/dist/commonjs/components/Inspector/BundleTab.js +20 -20
  10. package/dist/commonjs/components/Inspector/ConsoleTab.js +1 -1
  11. package/dist/commonjs/components/Inspector/CrashDetail.js +16 -12
  12. package/dist/commonjs/components/Inspector/CrashTab.js +97 -90
  13. package/dist/commonjs/components/Inspector/InspectorHeader.js +28 -24
  14. package/dist/commonjs/components/Inspector/MainScreen.js +20 -103
  15. package/dist/commonjs/components/Inspector/NetworkTab.js +143 -10
  16. package/dist/commonjs/components/Inspector/PerformanceTab.js +96 -3
  17. package/dist/commonjs/components/Inspector/ReduxDetail.js +24 -19
  18. package/dist/commonjs/components/Inspector/ReduxTab.js +30 -18
  19. package/dist/commonjs/components/Inspector/SettingsPanel.js +1578 -754
  20. package/dist/commonjs/components/Inspector/TabBar.js +6 -3
  21. package/dist/commonjs/components/LogCard.js +27 -9
  22. package/dist/commonjs/components/MetaAccordion.js +42 -0
  23. package/dist/commonjs/components/NetworkIcons.d.ts +10 -0
  24. package/dist/commonjs/components/NetworkIcons.js +53 -1
  25. package/dist/commonjs/components/Toast.js +3 -3
  26. package/dist/commonjs/components/TouchableScale.d.ts +5 -2
  27. package/dist/commonjs/components/TouchableScale.js +30 -32
  28. package/dist/commonjs/constants/index.d.ts +1 -2
  29. package/dist/commonjs/constants/index.js +4 -0
  30. package/dist/commonjs/constants/version.d.ts +1 -1
  31. package/dist/commonjs/constants/version.js +1 -1
  32. package/dist/commonjs/customHooks/analyticsLogger.d.ts +6 -0
  33. package/dist/commonjs/customHooks/analyticsLogger.js +16 -5
  34. package/dist/commonjs/customHooks/bundleAnalyzer.d.ts +2 -0
  35. package/dist/commonjs/customHooks/bundleAnalyzer.js +26 -17
  36. package/dist/commonjs/customHooks/consoleLogger.d.ts +2 -0
  37. package/dist/commonjs/customHooks/consoleLogger.js +10 -1
  38. package/dist/commonjs/customHooks/crashHandler.d.ts +2 -0
  39. package/dist/commonjs/customHooks/crashHandler.js +17 -1
  40. package/dist/commonjs/customHooks/networkLogger.d.ts +2 -0
  41. package/dist/commonjs/customHooks/networkLogger.js +12 -1
  42. package/dist/commonjs/customHooks/performanceTracker.d.ts +3 -1
  43. package/dist/commonjs/customHooks/performanceTracker.js +18 -4
  44. package/dist/commonjs/customHooks/reduxLogger.d.ts +2 -0
  45. package/dist/commonjs/customHooks/reduxLogger.js +10 -1
  46. package/dist/commonjs/helpers/index.js +10 -1
  47. package/dist/commonjs/helpers/settingsStore.d.ts +9 -0
  48. package/dist/commonjs/helpers/settingsStore.js +59 -3
  49. package/dist/commonjs/i18n/locales/en.json +96 -28
  50. package/dist/commonjs/index.d.ts +1 -0
  51. package/dist/commonjs/index.js +307 -73
  52. package/dist/commonjs/native/NativeInspector.d.ts +125 -0
  53. package/dist/commonjs/native/NativeInspector.js +313 -0
  54. package/dist/commonjs/native/NativeNetworkInspector.d.ts +22 -0
  55. package/dist/commonjs/native/NativeNetworkInspector.js +4 -0
  56. package/dist/commonjs/styles/AppColors.d.ts +28 -0
  57. package/dist/commonjs/styles/AppColors.js +30 -0
  58. package/dist/commonjs/styles/index.js +6 -6
  59. package/dist/commonjs/types/enums.d.ts +1 -1
  60. package/dist/commonjs/types/interfaces.d.ts +9 -0
  61. package/dist/esm/components/ConsoleLogCard.js +58 -57
  62. package/dist/esm/components/CopyButton.js +10 -1
  63. package/dist/esm/components/ErrorBoundary.js +3 -0
  64. package/dist/esm/components/Inspector/AnalyticsTab.js +7 -3
  65. package/dist/esm/components/Inspector/BundleTab.js +20 -20
  66. package/dist/esm/components/Inspector/ConsoleTab.js +1 -1
  67. package/dist/esm/components/Inspector/CrashDetail.js +16 -12
  68. package/dist/esm/components/Inspector/CrashTab.js +97 -90
  69. package/dist/esm/components/Inspector/InspectorHeader.js +29 -25
  70. package/dist/esm/components/Inspector/MainScreen.js +21 -71
  71. package/dist/esm/components/Inspector/NetworkTab.js +145 -12
  72. package/dist/esm/components/Inspector/PerformanceTab.js +96 -3
  73. package/dist/esm/components/Inspector/ReduxDetail.js +24 -19
  74. package/dist/esm/components/Inspector/ReduxTab.js +30 -18
  75. package/dist/esm/components/Inspector/SettingsPanel.js +1582 -758
  76. package/dist/esm/components/Inspector/TabBar.js +7 -4
  77. package/dist/esm/components/LogCard.js +27 -9
  78. package/dist/esm/components/MetaAccordion.js +42 -0
  79. package/dist/esm/components/NetworkIcons.d.ts +10 -0
  80. package/dist/esm/components/NetworkIcons.js +42 -0
  81. package/dist/esm/components/Toast.js +3 -3
  82. package/dist/esm/components/TouchableScale.d.ts +5 -2
  83. package/dist/esm/components/TouchableScale.js +31 -33
  84. package/dist/esm/constants/index.d.ts +1 -2
  85. package/dist/esm/constants/index.js +4 -0
  86. package/dist/esm/constants/version.d.ts +1 -1
  87. package/dist/esm/constants/version.js +1 -1
  88. package/dist/esm/customHooks/analyticsLogger.d.ts +6 -0
  89. package/dist/esm/customHooks/analyticsLogger.js +12 -4
  90. package/dist/esm/customHooks/bundleAnalyzer.d.ts +2 -0
  91. package/dist/esm/customHooks/bundleAnalyzer.js +23 -16
  92. package/dist/esm/customHooks/consoleLogger.d.ts +2 -0
  93. package/dist/esm/customHooks/consoleLogger.js +7 -0
  94. package/dist/esm/customHooks/crashHandler.d.ts +2 -0
  95. package/dist/esm/customHooks/crashHandler.js +14 -0
  96. package/dist/esm/customHooks/networkLogger.d.ts +2 -0
  97. package/dist/esm/customHooks/networkLogger.js +9 -0
  98. package/dist/esm/customHooks/performanceTracker.d.ts +3 -1
  99. package/dist/esm/customHooks/performanceTracker.js +15 -3
  100. package/dist/esm/customHooks/reduxLogger.d.ts +2 -0
  101. package/dist/esm/customHooks/reduxLogger.js +7 -0
  102. package/dist/esm/helpers/index.js +10 -1
  103. package/dist/esm/helpers/settingsStore.d.ts +9 -0
  104. package/dist/esm/helpers/settingsStore.js +58 -3
  105. package/dist/esm/i18n/locales/en.json +96 -28
  106. package/dist/esm/index.d.ts +1 -0
  107. package/dist/esm/index.js +279 -59
  108. package/dist/esm/native/NativeInspector.d.ts +125 -0
  109. package/dist/esm/native/NativeInspector.js +289 -0
  110. package/dist/esm/native/NativeNetworkInspector.d.ts +22 -0
  111. package/dist/esm/native/NativeNetworkInspector.js +2 -0
  112. package/dist/esm/styles/AppColors.d.ts +28 -0
  113. package/dist/esm/styles/AppColors.js +30 -0
  114. package/dist/esm/styles/index.js +6 -6
  115. package/dist/esm/types/enums.d.ts +1 -1
  116. package/dist/esm/types/interfaces.d.ts +9 -0
  117. package/ios/NetworkInspectorModule.h +6 -0
  118. package/ios/NetworkInspectorModule.m +720 -5
  119. package/package.json +15 -3
  120. package/react-native-inapp-inspector.podspec +7 -2
  121. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.java +0 -97
  122. package/android/src/main/java/com/inappinspector/NetworkInspectorPackage.java +0 -28
@@ -37,7 +37,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.registerComponentProfile = exports.getHermesMemoryStats = exports.measureAsync = exports.trackHeavyTask = exports.trackNavigationTransition = exports.trackComponentRender = exports.useNavigationProfiler = exports.useComponentProfiler = exports.usePerformanceTracker = exports.registerGAPlugin = exports.getEventCategory = exports.getLastActionForReducer = exports.clearActionHistory = exports.getActionHistory = exports.subscribeReduxState = exports.getReduxState = exports.inspectorReduxMiddleware = exports.connectReduxStore = exports.ErrorBoundary = exports.CrashTab = exports.computeCrashFingerprint = exports.recordUserActionBreadcrumb = exports.recordReduxBreadcrumb = exports.recordNetworkBreadcrumb = exports.recordNavigationBreadcrumb = exports.addCrashBreadcrumb = exports.recordCustomCrash = exports.parseCrashStackTrace = exports.exportCrashReport = exports.simulateTestCrash = exports.clearCrashRecords = exports.getCrashRecords = exports.emitCrashEvent = exports.subscribeCrashEvents = exports.setupGlobalCrashHandler = exports.getCollectionEnabled = exports.getDefaultEventParameters = exports.getCurrentUserId = exports.getCurrentUserProperties = exports.clearAnalyticsEvents = exports.subscribeAnalyticsEvents = exports.logAnalyticsEvent = exports.setupAnalyticsLogger = exports.subscribeConsoleLogs = exports.clearConsoleLogs = exports.setupConsoleLogger = exports.addAxiosInterceptors = exports.subscribeNetworkLogs = exports.clearNetworkLogs = exports.setupNetworkLogger = void 0;
40
- exports.BreadcrumbType = exports.CrashFilterType = exports.CrashDetailSubTab = exports.CrashExportFormat = exports.CrashType = exports.PerformanceSubTab = exports.BundleSubTab = exports.DiffResultType = exports.StackFrameType = exports.GAEventCategory = exports.AnalyticsEventSource = exports.ConsoleLogType = exports.LogFilter = exports.SettingsSubTab = exports.SettingsPage = exports.ModalAnimationType = exports.LocalFilter = exports.SortOrder = exports.StatusFilter = exports.Method = exports.ActiveTab = exports.InspectCatch = exports.InspectTrackTime = exports.InspectLog = exports.generateFixSnippet = exports.getInitialPerformanceEvents = exports.getInitialRenderProfiles = exports.getPerformanceEvents = exports.subscribePerformanceEvents = exports.clearPerformanceEvents = exports.logPerformanceEvent = exports.getRenderProfiles = exports.subscribeRenderProfiles = void 0;
40
+ exports.BreadcrumbType = exports.CrashFilterType = exports.CrashDetailSubTab = exports.CrashExportFormat = exports.CrashType = exports.PerformanceSubTab = exports.BundleSubTab = exports.DiffResultType = exports.StackFrameType = exports.GAEventCategory = exports.AnalyticsEventSource = exports.ConsoleLogType = exports.LogFilter = exports.SettingsSubTab = exports.SettingsPage = exports.ModalAnimationType = exports.LocalFilter = exports.SortOrder = exports.StatusFilter = exports.Method = exports.ActiveTab = exports.isNativeModuleAvailable = exports.setNativeStorageItem = exports.getNativeStorageItem = exports.getNativeFpsMetrics = exports.stopNativeFpsMonitoring = exports.startNativeFpsMonitoring = exports.subscribeNativeDeviceShake = exports.subscribeNativeFloatingButtonPress = exports.setNativeFloatingButtonBadge = exports.hideNativeFloatingButton = exports.showNativeFloatingButton = exports.subscribeNativeCrashes = exports.enableNativeCrashProtection = exports.getNativeDeviceMetrics = exports.InspectCatch = exports.InspectTrackTime = exports.InspectLog = exports.generateFixSnippet = exports.getInitialPerformanceEvents = exports.getInitialRenderProfiles = exports.getPerformanceEvents = exports.subscribePerformanceEvents = exports.clearPerformanceEvents = exports.logPerformanceEvent = exports.getRenderProfiles = exports.subscribeRenderProfiles = void 0;
41
41
  const react_1 = __importStar(require("react"));
42
42
  const react_native_1 = require("react-native");
43
43
  const native_1 = require("@react-navigation/native");
@@ -51,6 +51,7 @@ const InspectorContext_1 = require("./components/Inspector/InspectorContext");
51
51
  const helpers_1 = require("./helpers");
52
52
  // #5 — settings persistence
53
53
  const settingsStore_1 = require("./helpers/settingsStore");
54
+ const NativeInspector_1 = require("./native/NativeInspector");
54
55
  // Network
55
56
  const networkLogger_1 = require("./customHooks/networkLogger");
56
57
  // Console
@@ -60,6 +61,9 @@ const logFilters_1 = require("./customHooks/logFilters");
60
61
  const crashHandler_1 = require("./customHooks/crashHandler");
61
62
  const analyticsLogger_1 = require("./customHooks/analyticsLogger");
62
63
  const reduxLogger_1 = require("./customHooks/reduxLogger");
64
+ const performanceTracker_1 = require("./customHooks/performanceTracker");
65
+ const bundleAnalyzer_1 = require("./customHooks/bundleAnalyzer");
66
+ const NativeInspector_2 = require("./native/NativeInspector");
63
67
  const constants_1 = require("./constants");
64
68
  // Stylesheet
65
69
  const styles_1 = require("./styles");
@@ -205,18 +209,50 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
205
209
  const [tabVisibility, setTabVisibility] = (0, react_1.useState)({
206
210
  apis: true,
207
211
  logs: true,
208
- analytics: true,
212
+ analytics: false,
209
213
  redux: false,
210
214
  bundle: false,
211
215
  performance: false,
212
- crash: true,
216
+ crash: false,
213
217
  });
214
218
  const [maxNetworkLogs, setMaxNetworkLogs] = (0, react_1.useState)(100);
219
+ const [maxAnalyticsEventsLimit, setMaxAnalyticsEventsLimit] = (0, react_1.useState)(250);
220
+ const [isAutoRamLimitEnabled, setIsAutoRamLimitEnabled] = (0, react_1.useState)(true);
221
+ const [deviceFreeRamMb, setDeviceFreeRamMb] = (0, react_1.useState)(1800);
215
222
  const [reduxAutoRefresh, setReduxAutoRefreshState] = (0, react_1.useState)(true);
216
223
  const [reduxExpandDepth, setReduxExpandDepth] = (0, react_1.useState)(1);
217
224
  // #6 — tab the inspector opens on. Shown with a DEFAULT badge in Settings.
218
225
  const [defaultTab, setDefaultTab] = (0, react_1.useState)('apis');
219
226
  const [showDuplicateLogs, setShowDuplicateLogs] = (0, react_1.useState)(false);
227
+ // Synchronize runtime background listeners with active settings
228
+ (0, react_1.useEffect)(() => {
229
+ (0, networkLogger_1.setNetworkModuleEnabled)(!!tabVisibility.apis);
230
+ (0, consoleLogger_1.setConsoleModuleEnabled)(!!tabVisibility.logs);
231
+ (0, analyticsLogger_1.setAnalyticsModuleEnabled)(!!tabVisibility.analytics);
232
+ (0, reduxLogger_1.setReduxModuleEnabled)(!!tabVisibility.redux);
233
+ (0, performanceTracker_1.setPerformanceModuleEnabled)(!!tabVisibility.performance);
234
+ (0, crashHandler_1.setCrashModuleEnabled)(!!tabVisibility.crash);
235
+ (0, bundleAnalyzer_1.setBundleModuleEnabled)(!!tabVisibility.bundle);
236
+ }, [tabVisibility]);
237
+ // Query native hardware RAM and auto-tune limits if auto-RAM is active
238
+ (0, react_1.useEffect)(() => {
239
+ (0, NativeInspector_1.getNativeSystemMetrics)()
240
+ .then(metrics => {
241
+ if (metrics) {
242
+ const freeRam = metrics.totalPhysicalRamMb - metrics.residentRamMb;
243
+ const freeMb = Math.max(200, Math.round(freeRam > 0 ? freeRam : 1500));
244
+ setDeviceFreeRamMb(freeMb);
245
+ if (isAutoRamLimitEnabled) {
246
+ const profile = (0, settingsStore_1.calculateRamBasedLimits)(freeMb);
247
+ setMaxNetworkLogs(profile.maxNetworkLogs);
248
+ setMaxConsoleLogs(profile.maxConsoleLogs);
249
+ setMaxAnalyticsEventsLimit(profile.maxAnalyticsEvents);
250
+ setMaxCrashLogs(profile.maxCrashRecords);
251
+ }
252
+ }
253
+ })
254
+ .catch(() => { });
255
+ }, [isAutoRamLimitEnabled]);
220
256
  const resetToDefaults = async () => {
221
257
  await (0, settingsStore_1.clearPersistedSettings)();
222
258
  setIsDark(false);
@@ -226,16 +262,19 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
226
262
  setTabVisibility({
227
263
  apis: true,
228
264
  logs: true,
229
- analytics: true,
265
+ analytics: false,
230
266
  redux: false,
231
267
  bundle: false,
232
268
  performance: false,
233
- crash: true,
269
+ crash: false,
234
270
  });
235
271
  setDefaultTab('apis');
236
- setMaxCrashLogs(100);
237
- setMaxNetworkLogs(100);
238
- setMaxConsoleLogs(200);
272
+ setIsAutoRamLimitEnabled(true);
273
+ const profile = (0, settingsStore_1.calculateRamBasedLimits)(deviceFreeRamMb);
274
+ setMaxCrashLogs(profile.maxCrashRecords);
275
+ setMaxNetworkLogs(profile.maxNetworkLogs);
276
+ setMaxConsoleLogs(profile.maxConsoleLogs);
277
+ setMaxAnalyticsEventsLimit(profile.maxAnalyticsEvents);
239
278
  setShowConsoleLevels({
240
279
  info: true,
241
280
  warn: true,
@@ -266,16 +305,19 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
266
305
  ...prev,
267
306
  ...saved.tabVisibility,
268
307
  apis: true, // APIs is always required
269
- crash: saved.tabVisibility.crash !== undefined
270
- ? saved.tabVisibility.crash
271
- : true,
272
308
  }));
273
309
  if (saved.defaultTab)
274
310
  setDefaultTab(saved.defaultTab);
311
+ if (saved.isAutoRamLimitEnabled != null)
312
+ setIsAutoRamLimitEnabled(saved.isAutoRamLimitEnabled);
275
313
  if (saved.maxNetworkLogs != null)
276
314
  setMaxNetworkLogs(saved.maxNetworkLogs);
277
315
  if (saved.maxConsoleLogs != null)
278
316
  setMaxConsoleLogs(saved.maxConsoleLogs);
317
+ if (saved.maxAnalyticsEventsLimit != null)
318
+ setMaxAnalyticsEventsLimit(saved.maxAnalyticsEventsLimit);
319
+ if (saved.maxCrashLogs != null)
320
+ setMaxCrashLogs(saved.maxCrashLogs);
279
321
  if (saved.showConsoleLevels)
280
322
  setShowConsoleLevels(saved.showConsoleLevels);
281
323
  if (saved.reduxAutoRefresh != null)
@@ -290,11 +332,11 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
290
332
  ...{
291
333
  apis: true,
292
334
  logs: true,
293
- analytics: true,
335
+ analytics: false,
294
336
  redux: false,
295
337
  bundle: false,
296
338
  performance: false,
297
- crash: true,
339
+ crash: false,
298
340
  },
299
341
  ...(saved.tabVisibility || {}),
300
342
  apis: true,
@@ -318,6 +360,9 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
318
360
  defaultTab,
319
361
  maxNetworkLogs,
320
362
  maxConsoleLogs,
363
+ maxAnalyticsEventsLimit,
364
+ maxCrashLogs,
365
+ isAutoRamLimitEnabled,
321
366
  showConsoleLevels,
322
367
  reduxAutoRefresh,
323
368
  reduxExpandDepth,
@@ -331,6 +376,9 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
331
376
  defaultTab,
332
377
  maxNetworkLogs,
333
378
  maxConsoleLogs,
379
+ maxAnalyticsEventsLimit,
380
+ maxCrashLogs,
381
+ isAutoRamLimitEnabled,
334
382
  showConsoleLevels,
335
383
  reduxAutoRefresh,
336
384
  reduxExpandDepth,
@@ -405,13 +453,43 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
405
453
  return newVisibility;
406
454
  });
407
455
  };
456
+ const loadNativePage = (0, react_1.useCallback)(async (tabKey, query = '') => {
457
+ if (tabKey === 'apis' || tabKey === 'logs' || tabKey === 'analytics' || tabKey === 'crash') {
458
+ const pageData = await (0, NativeInspector_1.fetchNativeCachedPage)(tabKey, 0, 100, query);
459
+ if (pageData && pageData.items && pageData.items.length > 0) {
460
+ if (tabKey === 'apis')
461
+ setLogs(pageData.items);
462
+ else if (tabKey === 'logs')
463
+ setConsoleLogs(pageData.items);
464
+ else if (tabKey === 'analytics')
465
+ setAnalyticsEvents(pageData.items);
466
+ else if (tabKey === 'crash')
467
+ setCrashRecords(pageData.items);
468
+ }
469
+ }
470
+ }, []);
408
471
  const switchActiveTab = (0, react_1.useCallback)((key) => {
409
472
  if (key === 'redux' && !(0, reduxLogger_1.isReduxConnected)())
410
473
  return;
411
474
  if (key === 'analytics' && !(0, analyticsLogger_1.isAnalyticsConnected)())
412
475
  return;
413
- setActiveTab(key);
414
- }, []);
476
+ setSelected(null);
477
+ setSelectedEvent(null);
478
+ setSelectedLog(null);
479
+ setSelectedReduxSlice(null);
480
+ setSelectedReduxAction(null);
481
+ setSelectedCrash(null);
482
+ if (typeof react_1.default.startTransition === 'function') {
483
+ react_1.default.startTransition(() => {
484
+ setActiveTab(key);
485
+ loadNativePage(key);
486
+ });
487
+ }
488
+ else {
489
+ setActiveTab(key);
490
+ loadNativePage(key);
491
+ }
492
+ }, [loadNativePage]);
415
493
  const [selectedEvent, setSelectedEvent] = (0, react_1.useState)(null);
416
494
  const [analyticsSearch, setAnalyticsSearch] = (0, react_1.useState)('');
417
495
  const [analyticsFilters, setAnalyticsFilters] = (0, react_1.useState)({
@@ -659,13 +737,84 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
659
737
  loop.start();
660
738
  return () => loop.stop();
661
739
  }, [unreadPulseAnim]);
662
- // #6 every time the inspector is opened, land on the chosen default tab.
740
+ const isNativeModule = (0, react_1.useMemo)(() => (0, NativeInspector_2.isNativeModuleAvailable)(), []);
741
+ const useNativeFab = (react_native_1.Platform.OS === 'ios' || react_native_1.Platform.OS === 'android') && isNativeModule;
742
+ // 100% Native Main-Thread Floating Button Lifecycle
663
743
  (0, react_1.useEffect)(() => {
744
+ if (!useNativeFab || !isEnabled || !enabled) {
745
+ if (useNativeFab) {
746
+ (0, NativeInspector_2.hideNativeFloatingButton)();
747
+ }
748
+ return;
749
+ }
750
+ if (visible) {
751
+ (0, NativeInspector_2.hideNativeFloatingButton)();
752
+ }
753
+ else {
754
+ (0, NativeInspector_2.showNativeFloatingButton)();
755
+ (0, NativeInspector_2.setNativeFloatingButtonBadge)(logs.length > 0 || analyticsEvents.length > 0);
756
+ }
757
+ }, [
758
+ useNativeFab,
759
+ isEnabled,
760
+ enabled,
761
+ visible,
762
+ logs.length,
763
+ analyticsEvents.length,
764
+ ]);
765
+ // Subscribe to native UI-thread floating button tap events
766
+ (0, react_1.useEffect)(() => {
767
+ if (!useNativeFab)
768
+ return;
769
+ const unsubscribe = (0, NativeInspector_2.subscribeNativeFloatingButtonPress)(() => {
770
+ setVisible(true);
771
+ });
772
+ return () => {
773
+ unsubscribe();
774
+ };
775
+ }, [useNativeFab]);
776
+ // Subscribe to physical hardware shake events (or Cmd+Ctrl+Z on iOS simulator)
777
+ (0, react_1.useEffect)(() => {
778
+ if (!useNativeFab)
779
+ return;
780
+ const unsubscribe = (0, NativeInspector_2.subscribeNativeDeviceShake)(() => {
781
+ setVisible(prev => !prev);
782
+ });
783
+ return () => {
784
+ unsubscribe();
785
+ };
786
+ }, [useNativeFab]);
787
+ const isVisibleRefObj = (0, react_1.useRef)(visible);
788
+ // #6 — every time the inspector is opened, land on chosen default tab & sync latest logs
789
+ (0, react_1.useEffect)(() => {
790
+ isVisibleRefObj.current = visible;
664
791
  if (visible) {
665
792
  const target = defaultTab === 'apis' || tabVisibility?.[defaultTab]
666
793
  ? defaultTab
667
794
  : 'apis';
668
795
  setActiveTab(target);
796
+ // Instant synchronization of data collected while modal was closed
797
+ if (latestNetworkLogsRef.current.length > 0) {
798
+ const deduped = (0, helpers_1.deduplicateLogs)(latestNetworkLogsRef.current);
799
+ const incoming = new Set(deduped.map(l => l.id));
800
+ prevLogIdsRef.current = incoming;
801
+ setLogs(deduped);
802
+ }
803
+ if (latestConsoleLogsRef.current.length > 0) {
804
+ setConsoleLogs(latestConsoleLogsRef.current);
805
+ }
806
+ if (latestAnalyticsEventsRef.current.length > 0) {
807
+ setAnalyticsEvents(latestAnalyticsEventsRef.current);
808
+ }
809
+ const freshState = (0, reduxLogger_1.getReduxState)();
810
+ if (freshState) {
811
+ setReduxState(typeof freshState === 'object' ? { ...freshState } : freshState);
812
+ setReduxLastActionMap({ ...(0, reduxLogger_1.getLastActionForReducer)() });
813
+ }
814
+ const freshCrashes = (0, crashHandler_1.getCrashRecords)();
815
+ if (freshCrashes.length > 0) {
816
+ setCrashRecords(freshCrashes);
817
+ }
669
818
  }
670
819
  // eslint-disable-next-line react-hooks/exhaustive-deps
671
820
  }, [visible]);
@@ -693,6 +842,7 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
693
842
  (0, consoleLogger_1.setupConsoleLogger)();
694
843
  (0, analyticsLogger_1.autoSetupAnalyticsLogger)();
695
844
  (0, crashHandler_1.setupGlobalCrashHandler)();
845
+ const isVisibleRef = isVisibleRefObj;
696
846
  const unsubscribeCrash = (0, crashHandler_1.subscribeCrashEvents)(crashInfo => {
697
847
  if (crashInfo.message === '__CLEARED__') {
698
848
  setCrashRecords([]);
@@ -700,20 +850,31 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
700
850
  return;
701
851
  }
702
852
  const updated = (0, crashHandler_1.getCrashRecords)();
703
- setCrashRecords(updated);
853
+ if (updated.length > 0) {
854
+ (0, NativeInspector_1.pushNativeLogRecord)('crash', JSON.stringify(updated[0]));
855
+ }
856
+ if (isVisibleRef.current) {
857
+ setCrashRecords(updated);
858
+ }
704
859
  });
705
860
  // Sync crashes recorded before this subscription ran (e.g. a render crash
706
861
  // during the very first commit, which fires before effects are mounted).
707
862
  const pendingCrashes = (0, crashHandler_1.getCrashRecords)();
708
863
  if (pendingCrashes.length > 0) {
864
+ pendingCrashes.forEach(c => (0, NativeInspector_1.pushNativeLogRecord)('crash', JSON.stringify(c)));
709
865
  setCrashRecords(pendingCrashes);
710
866
  }
711
867
  let timeoutId;
712
868
  let isFirstNetworkCall = true;
713
869
  const unsubscribe = (0, networkLogger_1.subscribeNetworkLogs)((raw) => {
714
870
  latestNetworkLogsRef.current = raw;
871
+ if (raw.length > 0) {
872
+ (0, NativeInspector_1.pushNativeLogRecord)('apis', JSON.stringify(raw[0]));
873
+ }
715
874
  if (isNetworkPausedRef.current)
716
875
  return;
876
+ if (!isVisibleRef.current)
877
+ return; // ZERO-RENDER INACTIVE MODE
717
878
  clearTimeout(timeoutId);
718
879
  const updateNetworkState = () => {
719
880
  const deduped = (0, helpers_1.deduplicateLogs)(raw);
@@ -751,8 +912,13 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
751
912
  let isFirstAnalyticsCall = true;
752
913
  const unsubscribeAnalytics = (0, analyticsLogger_1.subscribeAnalyticsEvents)((raw) => {
753
914
  latestAnalyticsEventsRef.current = raw;
915
+ if (raw.length > 0) {
916
+ (0, NativeInspector_1.pushNativeLogRecord)('analytics', JSON.stringify(raw[0]));
917
+ }
754
918
  if (isAnalyticsPausedRef.current)
755
919
  return;
920
+ if (!isVisibleRef.current)
921
+ return; // ZERO-RENDER INACTIVE MODE
756
922
  clearTimeout(analyticsTimeoutId);
757
923
  const updateAnalyticsState = () => {
758
924
  const incoming = new Set(raw.map(e => e.id));
@@ -788,8 +954,13 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
788
954
  let isFirstConsoleCall = true;
789
955
  const unsubscribeConsole = (0, consoleLogger_1.subscribeConsoleLogs)((raw) => {
790
956
  latestConsoleLogsRef.current = raw;
957
+ if (raw.length > 0) {
958
+ (0, NativeInspector_1.pushNativeLogRecord)('logs', JSON.stringify(raw[0]));
959
+ }
791
960
  if (isConsolePausedRef.current)
792
961
  return;
962
+ if (!isVisibleRef.current)
963
+ return; // ZERO-RENDER INACTIVE MODE
793
964
  clearTimeout(consoleTimeoutId);
794
965
  if (isFirstConsoleCall) {
795
966
  isFirstConsoleCall = false;
@@ -802,11 +973,13 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
802
973
  }
803
974
  });
804
975
  const initialReduxState = (0, reduxLogger_1.getReduxState)();
805
- setReduxState(initialReduxState && typeof initialReduxState === 'object' ? { ...initialReduxState } : initialReduxState);
806
- setReduxLastActionMap({ ...(0, reduxLogger_1.getLastActionForReducer)() });
976
+ if (initialReduxState) {
977
+ setReduxState(typeof initialReduxState === 'object' ? { ...initialReduxState } : initialReduxState);
978
+ setReduxLastActionMap({ ...(0, reduxLogger_1.getLastActionForReducer)() });
979
+ }
807
980
  const unsubscribeRedux = (0, reduxLogger_1.subscribeReduxState)(() => {
808
- // New references each time guarantee the Redux tab updates live, even when
809
- // the root state object reference is unchanged or auto-refresh is paused.
981
+ if (!isVisibleRef.current)
982
+ return; // ZERO-RENDER INACTIVE MODE
810
983
  const freshState = (0, reduxLogger_1.getReduxState)();
811
984
  setReduxState(freshState && typeof freshState === 'object' ? { ...freshState } : freshState);
812
985
  setReduxLastActionMap({ ...(0, reduxLogger_1.getLastActionForReducer)() });
@@ -854,6 +1027,10 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
854
1027
  return true;
855
1028
  if (f === 'Failed')
856
1029
  return log.status === 0 || log.status == null;
1030
+ const codeNum = parseInt(f, 10);
1031
+ if (!isNaN(codeNum)) {
1032
+ return Number(log.status) === codeNum;
1033
+ }
857
1034
  return String(log.status)[0] === f[0];
858
1035
  });
859
1036
  if (!matched)
@@ -869,9 +1046,26 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
869
1046
  if (!matchedMethod)
870
1047
  return false;
871
1048
  }
872
- // Search Bar Check
873
- if (search && !log.url?.toLowerCase().includes(search.toLowerCase()))
874
- return false;
1049
+ // Comprehensive Search Bar Check
1050
+ if (search && search.trim().length > 0) {
1051
+ const queryTokens = search.trim().toLowerCase().split(/\s+/).filter(Boolean);
1052
+ const routePath = logRouteMapRef.current.get(log.id)?.path || '';
1053
+ const reqStr = typeof log.request === 'string' ? log.request : JSON.stringify(log.request || '');
1054
+ const resStr = typeof log.response === 'string' ? log.response : JSON.stringify(log.response || '');
1055
+ const searchTarget = [
1056
+ log.method || '',
1057
+ log.url || '',
1058
+ String(log.status ?? ''),
1059
+ routePath,
1060
+ reqStr,
1061
+ resStr,
1062
+ JSON.stringify(log.requestHeaders || ''),
1063
+ JSON.stringify(log.responseHeaders || ''),
1064
+ ].join(' ').toLowerCase();
1065
+ const isMatch = queryTokens.every(token => searchTarget.includes(token));
1066
+ if (!isMatch)
1067
+ return false;
1068
+ }
875
1069
  return true;
876
1070
  });
877
1071
  if (sortOrder === 'oldest') {
@@ -1026,12 +1220,20 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
1026
1220
  const filteredAnalyticsEvents = (0, react_1.useMemo)(() => {
1027
1221
  let events = analyticsEvents;
1028
1222
  // Search query filter
1029
- if (analyticsSearch) {
1030
- const s = analyticsSearch.toLowerCase();
1031
- events = events.filter(e => e.name.toLowerCase().includes(s) ||
1032
- JSON.stringify(e.params || {}).toLowerCase().includes(s) ||
1033
- (e.screenName ?? '').toLowerCase().includes(s) ||
1034
- (e.pageTitle ?? '').toLowerCase().includes(s));
1223
+ if (analyticsSearch && analyticsSearch.trim().length > 0) {
1224
+ const queryTokens = analyticsSearch.trim().toLowerCase().split(/\s+/).filter(Boolean);
1225
+ events = events.filter(e => {
1226
+ const searchTarget = [
1227
+ e.name || '',
1228
+ JSON.stringify(e.params || ''),
1229
+ JSON.stringify(e.userProperties || ''),
1230
+ e.screenName || '',
1231
+ e.pageTitle || '',
1232
+ e.userId || '',
1233
+ e.source || '',
1234
+ ].join(' ').toLowerCase();
1235
+ return queryTokens.every(token => searchTarget.includes(token));
1236
+ });
1035
1237
  }
1036
1238
  // Category filter
1037
1239
  if (analyticsFilters.categories.size > 0 && !analyticsFilters.categories.has('all')) {
@@ -1069,16 +1271,15 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
1069
1271
  }
1070
1272
  // Payload complexity filter
1071
1273
  if (analyticsFilters.payloadComplexity !== 'all') {
1072
- events = events.filter(e => {
1073
- const count = e.params ? Object.keys(e.params).length : 0;
1074
- if (analyticsFilters.payloadComplexity === 'none')
1075
- return count === 0;
1076
- if (analyticsFilters.payloadComplexity === 'simple')
1077
- return count >= 1 && count <= 5;
1078
- if (analyticsFilters.payloadComplexity === 'heavy')
1079
- return count > 5;
1080
- return true;
1081
- });
1274
+ if (analyticsFilters.payloadComplexity === 'none') {
1275
+ events = events.filter(e => !e.params || Object.keys(e.params).length === 0);
1276
+ }
1277
+ else if (analyticsFilters.payloadComplexity === 'simple') {
1278
+ events = events.filter(e => e.params && Object.keys(e.params).length <= 3);
1279
+ }
1280
+ else if (analyticsFilters.payloadComplexity === 'heavy') {
1281
+ events = events.filter(e => e.params && Object.keys(e.params).length > 3);
1282
+ }
1082
1283
  }
1083
1284
  // Conversion / Goal events filter
1084
1285
  if (analyticsFilters.onlyConversions) {
@@ -1111,10 +1312,8 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
1111
1312
  }
1112
1313
  // Has Revenue filter
1113
1314
  if (analyticsFilters.hasRevenue) {
1114
- events = events.filter(e => {
1115
- const val = e.params?.value ?? e.params?.price;
1116
- return val !== undefined && val !== null && Number(val) > 0;
1117
- });
1315
+ events = events.filter(e => (e.params?.value != null && !isNaN(Number(e.params.value))) ||
1316
+ (e.params?.price != null && !isNaN(Number(e.params.price))));
1118
1317
  }
1119
1318
  // Has Items filter
1120
1319
  if (analyticsFilters.hasItems) {
@@ -1179,16 +1378,23 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
1179
1378
  if (logFilters.has('user-log') && log.sourceMethod === 'log')
1180
1379
  return true;
1181
1380
  if (logFilters.has('analytics') &&
1182
- log.message.toLowerCase().includes('[analytics error]'))
1381
+ log.message?.toLowerCase().includes('[analytics error]'))
1183
1382
  return true;
1184
1383
  return false;
1185
1384
  });
1186
1385
  }
1187
- // Search bar check
1188
- if (logSearch) {
1189
- const s = logSearch.toLowerCase();
1190
- result = result.filter(log => log.message.toLowerCase().includes(s) ||
1191
- (log.caller ?? '').toLowerCase().includes(s));
1386
+ // Comprehensive Search bar check
1387
+ if (logSearch && logSearch.trim().length > 0) {
1388
+ const queryTokens = logSearch.trim().toLowerCase().split(/\s+/).filter(Boolean);
1389
+ result = result.filter(log => {
1390
+ const searchTarget = [
1391
+ log.message || '',
1392
+ log.caller || '',
1393
+ log.type || '',
1394
+ log.sourceMethod || '',
1395
+ ].join(' ').toLowerCase();
1396
+ return queryTokens.every(token => searchTarget.includes(token));
1397
+ });
1192
1398
  }
1193
1399
  // #7 — apply sort order (newest/oldest first)
1194
1400
  result = [...result].sort((a, b) => logSortOrder === 'newest'
@@ -1225,10 +1431,17 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
1225
1431
  ]);
1226
1432
  const logCounts = (0, react_1.useMemo)(() => {
1227
1433
  let searchedLogs = visibleConsoleLogs;
1228
- if (logSearch) {
1229
- const s = logSearch.toLowerCase();
1230
- searchedLogs = visibleConsoleLogs.filter(log => log.message.toLowerCase().includes(s) ||
1231
- (log.caller ?? '').toLowerCase().includes(s));
1434
+ if (logSearch && logSearch.trim().length > 0) {
1435
+ const queryTokens = logSearch.trim().toLowerCase().split(/\s+/).filter(Boolean);
1436
+ searchedLogs = visibleConsoleLogs.filter(log => {
1437
+ const searchTarget = [
1438
+ log.message || '',
1439
+ log.caller || '',
1440
+ log.type || '',
1441
+ log.sourceMethod || '',
1442
+ ].join(' ').toLowerCase();
1443
+ return queryTokens.every(token => searchTarget.includes(token));
1444
+ });
1232
1445
  }
1233
1446
  const total = visibleConsoleLogs.length;
1234
1447
  return {
@@ -1422,6 +1635,7 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
1422
1635
  unreadPulseAnim,
1423
1636
  runClearAllWithAnimation,
1424
1637
  // ─── FAB / launcher ─────────────────────────────────────────────────
1638
+ useNativeFab,
1425
1639
  fabPan,
1426
1640
  fabPanResponder,
1427
1641
  fabDraggedRef,
@@ -1539,6 +1753,11 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
1539
1753
  setMaxNetworkLogs,
1540
1754
  maxConsoleLogs,
1541
1755
  setMaxConsoleLogs,
1756
+ maxAnalyticsEventsLimit,
1757
+ setMaxAnalyticsEventsLimit,
1758
+ isAutoRamLimitEnabled,
1759
+ setIsAutoRamLimitEnabled,
1760
+ deviceFreeRamMb,
1542
1761
  reduxAutoRefresh,
1543
1762
  setReduxAutoRefreshState,
1544
1763
  reduxExpandDepth,
@@ -1611,29 +1830,44 @@ Object.defineProperty(exports, "getLastActionForReducer", { enumerable: true, ge
1611
1830
  var gaAnalyticsRegistry_1 = require("./helpers/gaAnalyticsRegistry");
1612
1831
  Object.defineProperty(exports, "getEventCategory", { enumerable: true, get: function () { return gaAnalyticsRegistry_1.getEventCategory; } });
1613
1832
  Object.defineProperty(exports, "registerGAPlugin", { enumerable: true, get: function () { return gaAnalyticsRegistry_1.registerGAPlugin; } });
1614
- var performanceTracker_1 = require("./customHooks/performanceTracker");
1615
- Object.defineProperty(exports, "usePerformanceTracker", { enumerable: true, get: function () { return performanceTracker_1.usePerformanceTracker; } });
1616
- Object.defineProperty(exports, "useComponentProfiler", { enumerable: true, get: function () { return performanceTracker_1.useComponentProfiler; } });
1617
- Object.defineProperty(exports, "useNavigationProfiler", { enumerable: true, get: function () { return performanceTracker_1.useNavigationProfiler; } });
1618
- Object.defineProperty(exports, "trackComponentRender", { enumerable: true, get: function () { return performanceTracker_1.trackComponentRender; } });
1619
- Object.defineProperty(exports, "trackNavigationTransition", { enumerable: true, get: function () { return performanceTracker_1.trackNavigationTransition; } });
1620
- Object.defineProperty(exports, "trackHeavyTask", { enumerable: true, get: function () { return performanceTracker_1.trackHeavyTask; } });
1621
- Object.defineProperty(exports, "measureAsync", { enumerable: true, get: function () { return performanceTracker_1.measureAsync; } });
1622
- Object.defineProperty(exports, "getHermesMemoryStats", { enumerable: true, get: function () { return performanceTracker_1.getHermesMemoryStats; } });
1623
- Object.defineProperty(exports, "registerComponentProfile", { enumerable: true, get: function () { return performanceTracker_1.registerComponentProfile; } });
1624
- Object.defineProperty(exports, "subscribeRenderProfiles", { enumerable: true, get: function () { return performanceTracker_1.subscribeRenderProfiles; } });
1625
- Object.defineProperty(exports, "getRenderProfiles", { enumerable: true, get: function () { return performanceTracker_1.getRenderProfiles; } });
1626
- Object.defineProperty(exports, "logPerformanceEvent", { enumerable: true, get: function () { return performanceTracker_1.logPerformanceEvent; } });
1627
- Object.defineProperty(exports, "clearPerformanceEvents", { enumerable: true, get: function () { return performanceTracker_1.clearPerformanceEvents; } });
1628
- Object.defineProperty(exports, "subscribePerformanceEvents", { enumerable: true, get: function () { return performanceTracker_1.subscribePerformanceEvents; } });
1629
- Object.defineProperty(exports, "getPerformanceEvents", { enumerable: true, get: function () { return performanceTracker_1.getPerformanceEvents; } });
1630
- Object.defineProperty(exports, "getInitialRenderProfiles", { enumerable: true, get: function () { return performanceTracker_1.getInitialRenderProfiles; } });
1631
- Object.defineProperty(exports, "getInitialPerformanceEvents", { enumerable: true, get: function () { return performanceTracker_1.getInitialPerformanceEvents; } });
1632
- Object.defineProperty(exports, "generateFixSnippet", { enumerable: true, get: function () { return performanceTracker_1.generateFixSnippet; } });
1833
+ var performanceTracker_2 = require("./customHooks/performanceTracker");
1834
+ Object.defineProperty(exports, "usePerformanceTracker", { enumerable: true, get: function () { return performanceTracker_2.usePerformanceTracker; } });
1835
+ Object.defineProperty(exports, "useComponentProfiler", { enumerable: true, get: function () { return performanceTracker_2.useComponentProfiler; } });
1836
+ Object.defineProperty(exports, "useNavigationProfiler", { enumerable: true, get: function () { return performanceTracker_2.useNavigationProfiler; } });
1837
+ Object.defineProperty(exports, "trackComponentRender", { enumerable: true, get: function () { return performanceTracker_2.trackComponentRender; } });
1838
+ Object.defineProperty(exports, "trackNavigationTransition", { enumerable: true, get: function () { return performanceTracker_2.trackNavigationTransition; } });
1839
+ Object.defineProperty(exports, "trackHeavyTask", { enumerable: true, get: function () { return performanceTracker_2.trackHeavyTask; } });
1840
+ Object.defineProperty(exports, "measureAsync", { enumerable: true, get: function () { return performanceTracker_2.measureAsync; } });
1841
+ Object.defineProperty(exports, "getHermesMemoryStats", { enumerable: true, get: function () { return performanceTracker_2.getHermesMemoryStats; } });
1842
+ Object.defineProperty(exports, "registerComponentProfile", { enumerable: true, get: function () { return performanceTracker_2.registerComponentProfile; } });
1843
+ Object.defineProperty(exports, "subscribeRenderProfiles", { enumerable: true, get: function () { return performanceTracker_2.subscribeRenderProfiles; } });
1844
+ Object.defineProperty(exports, "getRenderProfiles", { enumerable: true, get: function () { return performanceTracker_2.getRenderProfiles; } });
1845
+ Object.defineProperty(exports, "logPerformanceEvent", { enumerable: true, get: function () { return performanceTracker_2.logPerformanceEvent; } });
1846
+ Object.defineProperty(exports, "clearPerformanceEvents", { enumerable: true, get: function () { return performanceTracker_2.clearPerformanceEvents; } });
1847
+ Object.defineProperty(exports, "subscribePerformanceEvents", { enumerable: true, get: function () { return performanceTracker_2.subscribePerformanceEvents; } });
1848
+ Object.defineProperty(exports, "getPerformanceEvents", { enumerable: true, get: function () { return performanceTracker_2.getPerformanceEvents; } });
1849
+ Object.defineProperty(exports, "getInitialRenderProfiles", { enumerable: true, get: function () { return performanceTracker_2.getInitialRenderProfiles; } });
1850
+ Object.defineProperty(exports, "getInitialPerformanceEvents", { enumerable: true, get: function () { return performanceTracker_2.getInitialPerformanceEvents; } });
1851
+ Object.defineProperty(exports, "generateFixSnippet", { enumerable: true, get: function () { return performanceTracker_2.generateFixSnippet; } });
1633
1852
  var decorators_1 = require("./decorators");
1634
1853
  Object.defineProperty(exports, "InspectLog", { enumerable: true, get: function () { return decorators_1.InspectLog; } });
1635
1854
  Object.defineProperty(exports, "InspectTrackTime", { enumerable: true, get: function () { return decorators_1.InspectTrackTime; } });
1636
1855
  Object.defineProperty(exports, "InspectCatch", { enumerable: true, get: function () { return decorators_1.InspectCatch; } });
1856
+ var NativeInspector_3 = require("./native/NativeInspector");
1857
+ Object.defineProperty(exports, "getNativeDeviceMetrics", { enumerable: true, get: function () { return NativeInspector_3.getNativeDeviceMetrics; } });
1858
+ Object.defineProperty(exports, "enableNativeCrashProtection", { enumerable: true, get: function () { return NativeInspector_3.enableNativeCrashProtection; } });
1859
+ Object.defineProperty(exports, "subscribeNativeCrashes", { enumerable: true, get: function () { return NativeInspector_3.subscribeNativeCrashes; } });
1860
+ Object.defineProperty(exports, "showNativeFloatingButton", { enumerable: true, get: function () { return NativeInspector_3.showNativeFloatingButton; } });
1861
+ Object.defineProperty(exports, "hideNativeFloatingButton", { enumerable: true, get: function () { return NativeInspector_3.hideNativeFloatingButton; } });
1862
+ Object.defineProperty(exports, "setNativeFloatingButtonBadge", { enumerable: true, get: function () { return NativeInspector_3.setNativeFloatingButtonBadge; } });
1863
+ Object.defineProperty(exports, "subscribeNativeFloatingButtonPress", { enumerable: true, get: function () { return NativeInspector_3.subscribeNativeFloatingButtonPress; } });
1864
+ Object.defineProperty(exports, "subscribeNativeDeviceShake", { enumerable: true, get: function () { return NativeInspector_3.subscribeNativeDeviceShake; } });
1865
+ Object.defineProperty(exports, "startNativeFpsMonitoring", { enumerable: true, get: function () { return NativeInspector_3.startNativeFpsMonitoring; } });
1866
+ Object.defineProperty(exports, "stopNativeFpsMonitoring", { enumerable: true, get: function () { return NativeInspector_3.stopNativeFpsMonitoring; } });
1867
+ Object.defineProperty(exports, "getNativeFpsMetrics", { enumerable: true, get: function () { return NativeInspector_3.getNativeFpsMetrics; } });
1868
+ Object.defineProperty(exports, "getNativeStorageItem", { enumerable: true, get: function () { return NativeInspector_3.getNativeStorageItem; } });
1869
+ Object.defineProperty(exports, "setNativeStorageItem", { enumerable: true, get: function () { return NativeInspector_3.setNativeStorageItem; } });
1870
+ Object.defineProperty(exports, "isNativeModuleAvailable", { enumerable: true, get: function () { return NativeInspector_3.isNativeModuleAvailable; } });
1637
1871
  var types_1 = require("./types");
1638
1872
  Object.defineProperty(exports, "ActiveTab", { enumerable: true, get: function () { return types_1.ActiveTab; } });
1639
1873
  Object.defineProperty(exports, "Method", { enumerable: true, get: function () { return types_1.Method; } });