react-native-inapp-inspector 2.2.0 → 2.2.2

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 (70) hide show
  1. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +28 -6
  2. package/dist/commonjs/analytics.d.ts +7 -0
  3. package/dist/commonjs/analytics.js +28 -0
  4. package/dist/commonjs/bundle.d.ts +6 -0
  5. package/dist/commonjs/bundle.js +20 -0
  6. package/dist/commonjs/console.d.ts +7 -0
  7. package/dist/commonjs/console.js +20 -0
  8. package/dist/commonjs/constants/version.d.ts +1 -1
  9. package/dist/commonjs/constants/version.js +1 -1
  10. package/dist/commonjs/crash.d.ts +7 -0
  11. package/dist/commonjs/crash.js +27 -0
  12. package/dist/commonjs/customHooks/analyticsLogger.d.ts +3 -0
  13. package/dist/commonjs/customHooks/analyticsLogger.js +23 -2
  14. package/dist/commonjs/customHooks/consoleLogger.d.ts +3 -0
  15. package/dist/commonjs/customHooks/consoleLogger.js +24 -4
  16. package/dist/commonjs/customHooks/crashHandler.d.ts +2 -0
  17. package/dist/commonjs/customHooks/crashHandler.js +15 -1
  18. package/dist/commonjs/customHooks/networkLogger.d.ts +3 -0
  19. package/dist/commonjs/customHooks/networkLogger.js +23 -2
  20. package/dist/commonjs/customHooks/performanceTracker.d.ts +3 -0
  21. package/dist/commonjs/customHooks/performanceTracker.js +34 -3
  22. package/dist/commonjs/customHooks/reduxLogger.d.ts +3 -0
  23. package/dist/commonjs/customHooks/reduxLogger.js +24 -4
  24. package/dist/commonjs/helpers/index.d.ts +1 -0
  25. package/dist/commonjs/helpers/index.js +1 -0
  26. package/dist/commonjs/helpers/memoryManager.d.ts +29 -0
  27. package/dist/commonjs/helpers/memoryManager.js +112 -0
  28. package/dist/commonjs/index.d.ts +7 -1
  29. package/dist/commonjs/index.js +36 -2
  30. package/dist/commonjs/network.d.ts +6 -0
  31. package/dist/commonjs/network.js +17 -0
  32. package/dist/commonjs/performance.d.ts +6 -0
  33. package/dist/commonjs/performance.js +33 -0
  34. package/dist/commonjs/redux.d.ts +5 -0
  35. package/dist/commonjs/redux.js +24 -0
  36. package/dist/esm/analytics.d.ts +7 -0
  37. package/dist/esm/analytics.js +6 -0
  38. package/dist/esm/bundle.d.ts +6 -0
  39. package/dist/esm/bundle.js +6 -0
  40. package/dist/esm/console.d.ts +7 -0
  41. package/dist/esm/console.js +6 -0
  42. package/dist/esm/constants/version.d.ts +1 -1
  43. package/dist/esm/constants/version.js +1 -1
  44. package/dist/esm/crash.d.ts +7 -0
  45. package/dist/esm/crash.js +6 -0
  46. package/dist/esm/customHooks/analyticsLogger.d.ts +3 -0
  47. package/dist/esm/customHooks/analyticsLogger.js +19 -1
  48. package/dist/esm/customHooks/consoleLogger.d.ts +3 -0
  49. package/dist/esm/customHooks/consoleLogger.js +20 -3
  50. package/dist/esm/customHooks/crashHandler.d.ts +2 -0
  51. package/dist/esm/customHooks/crashHandler.js +12 -0
  52. package/dist/esm/customHooks/networkLogger.d.ts +3 -0
  53. package/dist/esm/customHooks/networkLogger.js +19 -1
  54. package/dist/esm/customHooks/performanceTracker.d.ts +3 -0
  55. package/dist/esm/customHooks/performanceTracker.js +30 -2
  56. package/dist/esm/customHooks/reduxLogger.d.ts +3 -0
  57. package/dist/esm/customHooks/reduxLogger.js +20 -3
  58. package/dist/esm/helpers/index.d.ts +1 -0
  59. package/dist/esm/helpers/index.js +1 -0
  60. package/dist/esm/helpers/memoryManager.d.ts +29 -0
  61. package/dist/esm/helpers/memoryManager.js +104 -0
  62. package/dist/esm/index.d.ts +7 -1
  63. package/dist/esm/index.js +17 -3
  64. package/dist/esm/network.d.ts +6 -0
  65. package/dist/esm/network.js +5 -0
  66. package/dist/esm/performance.d.ts +6 -0
  67. package/dist/esm/performance.js +6 -0
  68. package/dist/esm/redux.d.ts +5 -0
  69. package/dist/esm/redux.js +5 -0
  70. package/package.json +53 -2
@@ -0,0 +1,29 @@
1
+ export interface MemoryPruneSummary {
2
+ timestamp: number;
3
+ prunedNetwork: number;
4
+ prunedConsole: number;
5
+ prunedRedux: number;
6
+ prunedAnalytics: number;
7
+ prunedCrashes: number;
8
+ prunedPerformance: number;
9
+ totalPruned: number;
10
+ triggeredBy: 'memory-warning' | 'manual' | 'ram-threshold';
11
+ }
12
+ type MemoryWarningListener = (summary: MemoryPruneSummary) => void;
13
+ /**
14
+ * Prunes all in-memory log stores to prevent OOM / memory pressure.
15
+ * Keeps targetRetentionPct (default: 50%) of existing logs.
16
+ */
17
+ export declare const pruneAllLogs: (triggeredBy?: MemoryPruneSummary["triggeredBy"], targetRetentionPct?: number) => MemoryPruneSummary;
18
+ /**
19
+ * Starts listening to OS memory pressure warnings via AppState 'memoryWarning'.
20
+ * Automatically prunes logs and notifies subscribers when memory is constrained.
21
+ */
22
+ export declare const setupMemoryWarningHandler: () => (() => void);
23
+ /**
24
+ * Subscribes to memory prune events.
25
+ */
26
+ export declare const subscribeMemoryWarning: (listener: MemoryWarningListener) => (() => void);
27
+ export declare const getLastPruneTimestamp: () => number;
28
+ export declare const isMemoryHandlerActive: () => boolean;
29
+ export {};
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isMemoryHandlerActive = exports.getLastPruneTimestamp = exports.subscribeMemoryWarning = exports.setupMemoryWarningHandler = exports.pruneAllLogs = void 0;
4
+ const react_native_1 = require("react-native");
5
+ const networkLogger_1 = require("../customHooks/networkLogger");
6
+ const consoleLogger_1 = require("../customHooks/consoleLogger");
7
+ const reduxLogger_1 = require("../customHooks/reduxLogger");
8
+ const analyticsLogger_1 = require("../customHooks/analyticsLogger");
9
+ const crashHandler_1 = require("../customHooks/crashHandler");
10
+ const performanceTracker_1 = require("../customHooks/performanceTracker");
11
+ const toast_1 = require("./toast");
12
+ const memoryListeners = new Set();
13
+ let appStateSubscription = null;
14
+ let isMemoryWarningHandlerActive = false;
15
+ let lastPruneTimestamp = 0;
16
+ /**
17
+ * Prunes all in-memory log stores to prevent OOM / memory pressure.
18
+ * Keeps targetRetentionPct (default: 50%) of existing logs.
19
+ */
20
+ const pruneAllLogs = (triggeredBy = 'manual', targetRetentionPct = 0.5) => {
21
+ const targetPct = Math.max(0.1, Math.min(1.0, targetRetentionPct));
22
+ const prunedNetwork = (0, networkLogger_1.pruneNetworkLogs)(undefined);
23
+ const prunedConsole = (0, consoleLogger_1.pruneConsoleLogs)(undefined);
24
+ const prunedRedux = (0, reduxLogger_1.pruneReduxHistory)(undefined);
25
+ const prunedAnalytics = (0, analyticsLogger_1.pruneAnalyticsLogs)(undefined);
26
+ const prunedCrashes = (0, crashHandler_1.pruneCrashRecords)(undefined);
27
+ const prunedPerformance = (0, performanceTracker_1.prunePerformanceEvents)(undefined);
28
+ const totalPruned = prunedNetwork +
29
+ prunedConsole +
30
+ prunedRedux +
31
+ prunedAnalytics +
32
+ prunedCrashes +
33
+ prunedPerformance;
34
+ lastPruneTimestamp = Date.now();
35
+ // Trigger Hermes/V8 Garbage Collection if exposed
36
+ if (typeof globalThis.gc === 'function') {
37
+ try {
38
+ globalThis.gc();
39
+ }
40
+ catch { }
41
+ }
42
+ const summary = {
43
+ timestamp: lastPruneTimestamp,
44
+ prunedNetwork,
45
+ prunedConsole,
46
+ prunedRedux,
47
+ prunedAnalytics,
48
+ prunedCrashes,
49
+ prunedPerformance,
50
+ totalPruned,
51
+ triggeredBy,
52
+ };
53
+ try {
54
+ (0, crashHandler_1.addCrashBreadcrumb)('system', `[MemoryManager] Low memory auto-prune executed (${triggeredBy}). Freed ${totalPruned} log records.`, summary);
55
+ }
56
+ catch { }
57
+ memoryListeners.forEach(listener => {
58
+ try {
59
+ listener(summary);
60
+ }
61
+ catch { }
62
+ });
63
+ return summary;
64
+ };
65
+ exports.pruneAllLogs = pruneAllLogs;
66
+ /**
67
+ * Starts listening to OS memory pressure warnings via AppState 'memoryWarning'.
68
+ * Automatically prunes logs and notifies subscribers when memory is constrained.
69
+ */
70
+ const setupMemoryWarningHandler = () => {
71
+ if (isMemoryWarningHandlerActive) {
72
+ return () => { };
73
+ }
74
+ isMemoryWarningHandlerActive = true;
75
+ try {
76
+ appStateSubscription = react_native_1.AppState.addEventListener('memoryWarning', (state) => {
77
+ const summary = (0, exports.pruneAllLogs)('memory-warning', 0.5);
78
+ try {
79
+ (0, toast_1.showToast)(`Memory Warning: Auto-pruned ${summary.totalPruned} inspector logs`);
80
+ }
81
+ catch { }
82
+ });
83
+ }
84
+ catch (e) {
85
+ // AppState memoryWarning might not be supported on all mock/test platforms
86
+ }
87
+ return () => {
88
+ if (appStateSubscription) {
89
+ try {
90
+ appStateSubscription.remove();
91
+ }
92
+ catch { }
93
+ appStateSubscription = null;
94
+ }
95
+ isMemoryWarningHandlerActive = false;
96
+ };
97
+ };
98
+ exports.setupMemoryWarningHandler = setupMemoryWarningHandler;
99
+ /**
100
+ * Subscribes to memory prune events.
101
+ */
102
+ const subscribeMemoryWarning = (listener) => {
103
+ memoryListeners.add(listener);
104
+ return () => {
105
+ memoryListeners.delete(listener);
106
+ };
107
+ };
108
+ exports.subscribeMemoryWarning = subscribeMemoryWarning;
109
+ const getLastPruneTimestamp = () => lastPruneTimestamp;
110
+ exports.getLastPruneTimestamp = getLastPruneTimestamp;
111
+ const isMemoryHandlerActive = () => isMemoryWarningHandlerActive;
112
+ exports.isMemoryHandlerActive = isMemoryHandlerActive;
@@ -13,6 +13,12 @@ export { getEventCategory, registerGAPlugin, type GAPlugin, } from './helpers/ga
13
13
  export { usePerformanceTracker, useComponentProfiler, useNavigationProfiler, trackComponentRender, trackNavigationTransition, trackHeavyTask, measureAsync, getHermesMemoryStats, registerComponentProfile, subscribeRenderProfiles, getRenderProfiles, logPerformanceEvent, clearPerformanceEvents, subscribePerformanceEvents, getPerformanceEvents, getInitialRenderProfiles, getInitialPerformanceEvents, generateFixSnippet, } from './customHooks/performanceTracker';
14
14
  export { InspectLog, InspectTrackTime, InspectCatch, type InspectLogOptions, } from './decorators';
15
15
  export { getNativeDeviceMetrics, enableNativeCrashProtection, subscribeNativeCrashes, showNativeFloatingButton, hideNativeFloatingButton, setNativeFloatingButtonBadge, subscribeNativeFloatingButtonPress, subscribeNativeDeviceShake, startNativeFpsMonitoring, stopNativeFpsMonitoring, getNativeFpsMetrics, getNativeStorageItem, setNativeStorageItem, isNativeModuleAvailable, type NativeDeviceMetrics, type NativeCrashEvent, type FloatingButtonOptions, type NativeFpsMetrics, } from './native/NativeInspector';
16
- export { sendSessionTelemetryPing, trackTelemetryEvent, trackInspectorOpen, trackTabSwitch, trackLogExport, GA4_MEASUREMENT_ID, GA4_API_SECRET, } from './helpers';
16
+ export { sendSessionTelemetryPing, trackTelemetryEvent, trackInspectorOpen, trackTabSwitch, trackLogExport, GA4_MEASUREMENT_ID, GA4_API_SECRET, setupMemoryWarningHandler, pruneAllLogs, subscribeMemoryWarning, type MemoryPruneSummary, } from './helpers';
17
+ export { setMaxNetworkLogsLimit, getMaxNetworkLogsLimit, pruneNetworkLogs, } from './customHooks/networkLogger';
18
+ export { setMaxConsoleLogsLimit, getMaxConsoleLogsLimit, pruneConsoleLogs, } from './customHooks/consoleLogger';
19
+ export { setMaxReduxHistoryLimit, getMaxReduxHistoryLimit, pruneReduxHistory, } from './customHooks/reduxLogger';
20
+ export { setMaxAnalyticsLogsLimit, getMaxAnalyticsLogsLimit, pruneAnalyticsLogs, } from './customHooks/analyticsLogger';
21
+ export { getMaxCrashLogsLimit, pruneCrashRecords, } from './customHooks/crashHandler';
22
+ export { setMaxPerformanceEventsLimit, getMaxPerformanceEventsLimit, prunePerformanceEvents, } from './customHooks/performanceTracker';
17
23
  export { BrandSquareIcon, BrandCircleIcon, } from './components/NetworkIcons';
18
24
  export { ActiveTab, Method, StatusFilter, SortOrder, LocalFilter, ModalAnimationType, SettingsPage, SettingsSubTab, LogFilter, ConsoleLogType, AnalyticsEventSource, GAEventCategory, StackFrameType, DiffResultType, BundleSubTab, PerformanceSubTab, CrashType, CrashExportFormat, CrashDetailSubTab, CrashFilterType, BreadcrumbType, } from './types';
@@ -37,8 +37,8 @@ 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.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.BrandCircleIcon = exports.BrandSquareIcon = exports.GA4_API_SECRET = exports.GA4_MEASUREMENT_ID = exports.trackLogExport = exports.trackTabSwitch = exports.trackInspectorOpen = exports.trackTelemetryEvent = exports.sendSessionTelemetryPing = 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
- exports.BreadcrumbType = exports.CrashFilterType = exports.CrashDetailSubTab = exports.CrashExportFormat = exports.CrashType = exports.PerformanceSubTab = void 0;
40
+ exports.pruneCrashRecords = exports.getMaxCrashLogsLimit = exports.pruneAnalyticsLogs = exports.getMaxAnalyticsLogsLimit = exports.setMaxAnalyticsLogsLimit = exports.pruneReduxHistory = exports.getMaxReduxHistoryLimit = exports.setMaxReduxHistoryLimit = exports.pruneConsoleLogs = exports.getMaxConsoleLogsLimit = exports.setMaxConsoleLogsLimit = exports.pruneNetworkLogs = exports.getMaxNetworkLogsLimit = exports.setMaxNetworkLogsLimit = exports.subscribeMemoryWarning = exports.pruneAllLogs = exports.setupMemoryWarningHandler = exports.GA4_API_SECRET = exports.GA4_MEASUREMENT_ID = exports.trackLogExport = exports.trackTabSwitch = exports.trackInspectorOpen = exports.trackTelemetryEvent = exports.sendSessionTelemetryPing = 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
+ 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.BrandCircleIcon = exports.BrandSquareIcon = exports.prunePerformanceEvents = exports.getMaxPerformanceEventsLimit = exports.setMaxPerformanceEventsLimit = void 0;
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");
@@ -867,6 +867,7 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
867
867
  (0, consoleLogger_1.setupConsoleLogger)();
868
868
  (0, analyticsLogger_1.autoSetupAnalyticsLogger)();
869
869
  (0, crashHandler_1.setupGlobalCrashHandler)();
870
+ const cleanupMemoryWarning = (0, helpers_1.setupMemoryWarningHandler)();
870
871
  const isVisibleRef = isVisibleRefObj;
871
872
  const unsubscribeCrash = (0, crashHandler_1.subscribeCrashEvents)(crashInfo => {
872
873
  if (crashInfo.message === '__CLEARED__') {
@@ -1018,8 +1019,15 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
1018
1019
  clearTimeout(consoleTimeoutId);
1019
1020
  unsubscribeRedux();
1020
1021
  unsubscribeCrash();
1022
+ cleanupMemoryWarning();
1021
1023
  };
1022
1024
  }, []);
1025
+ (0, react_1.useEffect)(() => {
1026
+ (0, networkLogger_1.setMaxNetworkLogsLimit)(maxNetworkLogs);
1027
+ }, [maxNetworkLogs]);
1028
+ (0, react_1.useEffect)(() => {
1029
+ (0, crashHandler_1.setMaxCrashLogsLimit)(maxCrashLogs);
1030
+ }, [maxCrashLogs]);
1023
1031
  (0, react_1.useEffect)(() => {
1024
1032
  if (!isNetworkPaused && latestNetworkLogsRef.current.length > 0) {
1025
1033
  const deduped = (0, helpers_1.deduplicateLogs)(latestNetworkLogsRef.current);
@@ -1937,6 +1945,32 @@ Object.defineProperty(exports, "trackTabSwitch", { enumerable: true, get: functi
1937
1945
  Object.defineProperty(exports, "trackLogExport", { enumerable: true, get: function () { return helpers_2.trackLogExport; } });
1938
1946
  Object.defineProperty(exports, "GA4_MEASUREMENT_ID", { enumerable: true, get: function () { return helpers_2.GA4_MEASUREMENT_ID; } });
1939
1947
  Object.defineProperty(exports, "GA4_API_SECRET", { enumerable: true, get: function () { return helpers_2.GA4_API_SECRET; } });
1948
+ Object.defineProperty(exports, "setupMemoryWarningHandler", { enumerable: true, get: function () { return helpers_2.setupMemoryWarningHandler; } });
1949
+ Object.defineProperty(exports, "pruneAllLogs", { enumerable: true, get: function () { return helpers_2.pruneAllLogs; } });
1950
+ Object.defineProperty(exports, "subscribeMemoryWarning", { enumerable: true, get: function () { return helpers_2.subscribeMemoryWarning; } });
1951
+ var networkLogger_3 = require("./customHooks/networkLogger");
1952
+ Object.defineProperty(exports, "setMaxNetworkLogsLimit", { enumerable: true, get: function () { return networkLogger_3.setMaxNetworkLogsLimit; } });
1953
+ Object.defineProperty(exports, "getMaxNetworkLogsLimit", { enumerable: true, get: function () { return networkLogger_3.getMaxNetworkLogsLimit; } });
1954
+ Object.defineProperty(exports, "pruneNetworkLogs", { enumerable: true, get: function () { return networkLogger_3.pruneNetworkLogs; } });
1955
+ var consoleLogger_3 = require("./customHooks/consoleLogger");
1956
+ Object.defineProperty(exports, "setMaxConsoleLogsLimit", { enumerable: true, get: function () { return consoleLogger_3.setMaxConsoleLogsLimit; } });
1957
+ Object.defineProperty(exports, "getMaxConsoleLogsLimit", { enumerable: true, get: function () { return consoleLogger_3.getMaxConsoleLogsLimit; } });
1958
+ Object.defineProperty(exports, "pruneConsoleLogs", { enumerable: true, get: function () { return consoleLogger_3.pruneConsoleLogs; } });
1959
+ var reduxLogger_3 = require("./customHooks/reduxLogger");
1960
+ Object.defineProperty(exports, "setMaxReduxHistoryLimit", { enumerable: true, get: function () { return reduxLogger_3.setMaxReduxHistoryLimit; } });
1961
+ Object.defineProperty(exports, "getMaxReduxHistoryLimit", { enumerable: true, get: function () { return reduxLogger_3.getMaxReduxHistoryLimit; } });
1962
+ Object.defineProperty(exports, "pruneReduxHistory", { enumerable: true, get: function () { return reduxLogger_3.pruneReduxHistory; } });
1963
+ var analyticsLogger_3 = require("./customHooks/analyticsLogger");
1964
+ Object.defineProperty(exports, "setMaxAnalyticsLogsLimit", { enumerable: true, get: function () { return analyticsLogger_3.setMaxAnalyticsLogsLimit; } });
1965
+ Object.defineProperty(exports, "getMaxAnalyticsLogsLimit", { enumerable: true, get: function () { return analyticsLogger_3.getMaxAnalyticsLogsLimit; } });
1966
+ Object.defineProperty(exports, "pruneAnalyticsLogs", { enumerable: true, get: function () { return analyticsLogger_3.pruneAnalyticsLogs; } });
1967
+ var crashHandler_3 = require("./customHooks/crashHandler");
1968
+ Object.defineProperty(exports, "getMaxCrashLogsLimit", { enumerable: true, get: function () { return crashHandler_3.getMaxCrashLogsLimit; } });
1969
+ Object.defineProperty(exports, "pruneCrashRecords", { enumerable: true, get: function () { return crashHandler_3.pruneCrashRecords; } });
1970
+ var performanceTracker_3 = require("./customHooks/performanceTracker");
1971
+ Object.defineProperty(exports, "setMaxPerformanceEventsLimit", { enumerable: true, get: function () { return performanceTracker_3.setMaxPerformanceEventsLimit; } });
1972
+ Object.defineProperty(exports, "getMaxPerformanceEventsLimit", { enumerable: true, get: function () { return performanceTracker_3.getMaxPerformanceEventsLimit; } });
1973
+ Object.defineProperty(exports, "prunePerformanceEvents", { enumerable: true, get: function () { return performanceTracker_3.prunePerformanceEvents; } });
1940
1974
  var NetworkIcons_1 = require("./components/NetworkIcons");
1941
1975
  Object.defineProperty(exports, "BrandSquareIcon", { enumerable: true, get: function () { return NetworkIcons_1.BrandSquareIcon; } });
1942
1976
  Object.defineProperty(exports, "BrandCircleIcon", { enumerable: true, get: function () { return NetworkIcons_1.BrandCircleIcon; } });
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Sub-module entry point: react-native-inapp-inspector/network
3
+ * Clean tree-shaking & isolated network logger without UI or React Context dependencies.
4
+ */
5
+ export { setupNetworkLogger, clearNetworkLogs, subscribeNetworkLogs, getNetworkLogs, setNetworkModuleEnabled, getNetworkModuleEnabled, setMaxNetworkLogsLimit, getMaxNetworkLogsLimit, pruneNetworkLogs, } from './customHooks/networkLogger';
6
+ export type { NetworkLog, Method, StatusFilter, SortOrder, } from './types';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pruneNetworkLogs = exports.getMaxNetworkLogsLimit = exports.setMaxNetworkLogsLimit = exports.getNetworkModuleEnabled = exports.setNetworkModuleEnabled = exports.getNetworkLogs = exports.subscribeNetworkLogs = exports.clearNetworkLogs = exports.setupNetworkLogger = void 0;
4
+ /**
5
+ * Sub-module entry point: react-native-inapp-inspector/network
6
+ * Clean tree-shaking & isolated network logger without UI or React Context dependencies.
7
+ */
8
+ var networkLogger_1 = require("./customHooks/networkLogger");
9
+ Object.defineProperty(exports, "setupNetworkLogger", { enumerable: true, get: function () { return networkLogger_1.setupNetworkLogger; } });
10
+ Object.defineProperty(exports, "clearNetworkLogs", { enumerable: true, get: function () { return networkLogger_1.clearNetworkLogs; } });
11
+ Object.defineProperty(exports, "subscribeNetworkLogs", { enumerable: true, get: function () { return networkLogger_1.subscribeNetworkLogs; } });
12
+ Object.defineProperty(exports, "getNetworkLogs", { enumerable: true, get: function () { return networkLogger_1.getNetworkLogs; } });
13
+ Object.defineProperty(exports, "setNetworkModuleEnabled", { enumerable: true, get: function () { return networkLogger_1.setNetworkModuleEnabled; } });
14
+ Object.defineProperty(exports, "getNetworkModuleEnabled", { enumerable: true, get: function () { return networkLogger_1.getNetworkModuleEnabled; } });
15
+ Object.defineProperty(exports, "setMaxNetworkLogsLimit", { enumerable: true, get: function () { return networkLogger_1.setMaxNetworkLogsLimit; } });
16
+ Object.defineProperty(exports, "getMaxNetworkLogsLimit", { enumerable: true, get: function () { return networkLogger_1.getMaxNetworkLogsLimit; } });
17
+ Object.defineProperty(exports, "pruneNetworkLogs", { enumerable: true, get: function () { return networkLogger_1.pruneNetworkLogs; } });
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Sub-module entry point: react-native-inapp-inspector/performance
3
+ * Clean tree-shaking & isolated performance tracker and profiler.
4
+ */
5
+ export { usePerformanceTracker, useComponentProfiler, useNavigationProfiler, trackComponentRender, trackNavigationTransition, trackHeavyTask, measureAsync, getHermesMemoryStats, registerComponentProfile, subscribeRenderProfiles, getRenderProfiles, logPerformanceEvent, clearPerformanceEvents, subscribePerformanceEvents, getPerformanceEvents, getInitialRenderProfiles, getInitialPerformanceEvents, generateFixSnippet, setPerformanceModuleEnabled, getPerformanceModuleEnabled, setMaxPerformanceEventsLimit, getMaxPerformanceEventsLimit, prunePerformanceEvents, type PerformanceEvent, type LiveMemoryStats, type ComponentRenderProfile, type CoreMobileVitals, type PerformanceFixKey, } from './customHooks/performanceTracker';
6
+ export { PerformanceSubTab, } from './types';
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PerformanceSubTab = exports.prunePerformanceEvents = exports.getMaxPerformanceEventsLimit = exports.setMaxPerformanceEventsLimit = exports.getPerformanceModuleEnabled = exports.setPerformanceModuleEnabled = exports.generateFixSnippet = exports.getInitialPerformanceEvents = exports.getInitialRenderProfiles = exports.getPerformanceEvents = exports.subscribePerformanceEvents = exports.clearPerformanceEvents = exports.logPerformanceEvent = exports.getRenderProfiles = exports.subscribeRenderProfiles = exports.registerComponentProfile = exports.getHermesMemoryStats = exports.measureAsync = exports.trackHeavyTask = exports.trackNavigationTransition = exports.trackComponentRender = exports.useNavigationProfiler = exports.useComponentProfiler = exports.usePerformanceTracker = void 0;
4
+ /**
5
+ * Sub-module entry point: react-native-inapp-inspector/performance
6
+ * Clean tree-shaking & isolated performance tracker and profiler.
7
+ */
8
+ var performanceTracker_1 = require("./customHooks/performanceTracker");
9
+ Object.defineProperty(exports, "usePerformanceTracker", { enumerable: true, get: function () { return performanceTracker_1.usePerformanceTracker; } });
10
+ Object.defineProperty(exports, "useComponentProfiler", { enumerable: true, get: function () { return performanceTracker_1.useComponentProfiler; } });
11
+ Object.defineProperty(exports, "useNavigationProfiler", { enumerable: true, get: function () { return performanceTracker_1.useNavigationProfiler; } });
12
+ Object.defineProperty(exports, "trackComponentRender", { enumerable: true, get: function () { return performanceTracker_1.trackComponentRender; } });
13
+ Object.defineProperty(exports, "trackNavigationTransition", { enumerable: true, get: function () { return performanceTracker_1.trackNavigationTransition; } });
14
+ Object.defineProperty(exports, "trackHeavyTask", { enumerable: true, get: function () { return performanceTracker_1.trackHeavyTask; } });
15
+ Object.defineProperty(exports, "measureAsync", { enumerable: true, get: function () { return performanceTracker_1.measureAsync; } });
16
+ Object.defineProperty(exports, "getHermesMemoryStats", { enumerable: true, get: function () { return performanceTracker_1.getHermesMemoryStats; } });
17
+ Object.defineProperty(exports, "registerComponentProfile", { enumerable: true, get: function () { return performanceTracker_1.registerComponentProfile; } });
18
+ Object.defineProperty(exports, "subscribeRenderProfiles", { enumerable: true, get: function () { return performanceTracker_1.subscribeRenderProfiles; } });
19
+ Object.defineProperty(exports, "getRenderProfiles", { enumerable: true, get: function () { return performanceTracker_1.getRenderProfiles; } });
20
+ Object.defineProperty(exports, "logPerformanceEvent", { enumerable: true, get: function () { return performanceTracker_1.logPerformanceEvent; } });
21
+ Object.defineProperty(exports, "clearPerformanceEvents", { enumerable: true, get: function () { return performanceTracker_1.clearPerformanceEvents; } });
22
+ Object.defineProperty(exports, "subscribePerformanceEvents", { enumerable: true, get: function () { return performanceTracker_1.subscribePerformanceEvents; } });
23
+ Object.defineProperty(exports, "getPerformanceEvents", { enumerable: true, get: function () { return performanceTracker_1.getPerformanceEvents; } });
24
+ Object.defineProperty(exports, "getInitialRenderProfiles", { enumerable: true, get: function () { return performanceTracker_1.getInitialRenderProfiles; } });
25
+ Object.defineProperty(exports, "getInitialPerformanceEvents", { enumerable: true, get: function () { return performanceTracker_1.getInitialPerformanceEvents; } });
26
+ Object.defineProperty(exports, "generateFixSnippet", { enumerable: true, get: function () { return performanceTracker_1.generateFixSnippet; } });
27
+ Object.defineProperty(exports, "setPerformanceModuleEnabled", { enumerable: true, get: function () { return performanceTracker_1.setPerformanceModuleEnabled; } });
28
+ Object.defineProperty(exports, "getPerformanceModuleEnabled", { enumerable: true, get: function () { return performanceTracker_1.getPerformanceModuleEnabled; } });
29
+ Object.defineProperty(exports, "setMaxPerformanceEventsLimit", { enumerable: true, get: function () { return performanceTracker_1.setMaxPerformanceEventsLimit; } });
30
+ Object.defineProperty(exports, "getMaxPerformanceEventsLimit", { enumerable: true, get: function () { return performanceTracker_1.getMaxPerformanceEventsLimit; } });
31
+ Object.defineProperty(exports, "prunePerformanceEvents", { enumerable: true, get: function () { return performanceTracker_1.prunePerformanceEvents; } });
32
+ var types_1 = require("./types");
33
+ Object.defineProperty(exports, "PerformanceSubTab", { enumerable: true, get: function () { return types_1.PerformanceSubTab; } });
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Sub-module entry point: react-native-inapp-inspector/redux
3
+ * Clean tree-shaking & isolated Redux middleware and state inspector.
4
+ */
5
+ export { connectReduxStore, inspectorReduxMiddleware, getReduxState, subscribeReduxState, getActionHistory, clearActionHistory, getLastActionForReducer, clearLastActionForReducer, setReduxAutoRefresh, getReduxAutoRefresh, isReduxConnected, setReduxModuleEnabled, getReduxModuleEnabled, setMaxReduxHistoryLimit, getMaxReduxHistoryLimit, pruneReduxHistory, type ReduxHistoryEntry, } from './customHooks/reduxLogger';
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pruneReduxHistory = exports.getMaxReduxHistoryLimit = exports.setMaxReduxHistoryLimit = exports.getReduxModuleEnabled = exports.setReduxModuleEnabled = exports.isReduxConnected = exports.getReduxAutoRefresh = exports.setReduxAutoRefresh = exports.clearLastActionForReducer = exports.getLastActionForReducer = exports.clearActionHistory = exports.getActionHistory = exports.subscribeReduxState = exports.getReduxState = exports.inspectorReduxMiddleware = exports.connectReduxStore = void 0;
4
+ /**
5
+ * Sub-module entry point: react-native-inapp-inspector/redux
6
+ * Clean tree-shaking & isolated Redux middleware and state inspector.
7
+ */
8
+ var reduxLogger_1 = require("./customHooks/reduxLogger");
9
+ Object.defineProperty(exports, "connectReduxStore", { enumerable: true, get: function () { return reduxLogger_1.connectReduxStore; } });
10
+ Object.defineProperty(exports, "inspectorReduxMiddleware", { enumerable: true, get: function () { return reduxLogger_1.inspectorReduxMiddleware; } });
11
+ Object.defineProperty(exports, "getReduxState", { enumerable: true, get: function () { return reduxLogger_1.getReduxState; } });
12
+ Object.defineProperty(exports, "subscribeReduxState", { enumerable: true, get: function () { return reduxLogger_1.subscribeReduxState; } });
13
+ Object.defineProperty(exports, "getActionHistory", { enumerable: true, get: function () { return reduxLogger_1.getActionHistory; } });
14
+ Object.defineProperty(exports, "clearActionHistory", { enumerable: true, get: function () { return reduxLogger_1.clearActionHistory; } });
15
+ Object.defineProperty(exports, "getLastActionForReducer", { enumerable: true, get: function () { return reduxLogger_1.getLastActionForReducer; } });
16
+ Object.defineProperty(exports, "clearLastActionForReducer", { enumerable: true, get: function () { return reduxLogger_1.clearLastActionForReducer; } });
17
+ Object.defineProperty(exports, "setReduxAutoRefresh", { enumerable: true, get: function () { return reduxLogger_1.setReduxAutoRefresh; } });
18
+ Object.defineProperty(exports, "getReduxAutoRefresh", { enumerable: true, get: function () { return reduxLogger_1.getReduxAutoRefresh; } });
19
+ Object.defineProperty(exports, "isReduxConnected", { enumerable: true, get: function () { return reduxLogger_1.isReduxConnected; } });
20
+ Object.defineProperty(exports, "setReduxModuleEnabled", { enumerable: true, get: function () { return reduxLogger_1.setReduxModuleEnabled; } });
21
+ Object.defineProperty(exports, "getReduxModuleEnabled", { enumerable: true, get: function () { return reduxLogger_1.getReduxModuleEnabled; } });
22
+ Object.defineProperty(exports, "setMaxReduxHistoryLimit", { enumerable: true, get: function () { return reduxLogger_1.setMaxReduxHistoryLimit; } });
23
+ Object.defineProperty(exports, "getMaxReduxHistoryLimit", { enumerable: true, get: function () { return reduxLogger_1.getMaxReduxHistoryLimit; } });
24
+ Object.defineProperty(exports, "pruneReduxHistory", { enumerable: true, get: function () { return reduxLogger_1.pruneReduxHistory; } });
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Sub-module entry point: react-native-inapp-inspector/analytics
3
+ * Clean tree-shaking & isolated Firebase/custom Analytics logger.
4
+ */
5
+ export { setupAnalyticsLogger, autoSetupAnalyticsLogger, logAnalyticsEvent, subscribeAnalyticsEvents, clearAnalyticsEvents, getAnalyticsEvents, isAnalyticsConnected, isFirebaseAnalyticsPatched, setAnalyticsModuleEnabled, getAnalyticsModuleEnabled, getCurrentUserProperties, getCurrentUserId, getDefaultEventParameters, getCollectionEnabled, setMaxAnalyticsLogsLimit, getMaxAnalyticsLogsLimit, pruneAnalyticsLogs, } from './customHooks/analyticsLogger';
6
+ export { getEventCategory, registerGAPlugin, type GAPlugin, } from './helpers/gaAnalyticsRegistry';
7
+ export type { AnalyticsEvent, AnalyticsEventSource, GAEventCategory, } from './types';
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Sub-module entry point: react-native-inapp-inspector/analytics
3
+ * Clean tree-shaking & isolated Firebase/custom Analytics logger.
4
+ */
5
+ export { setupAnalyticsLogger, autoSetupAnalyticsLogger, logAnalyticsEvent, subscribeAnalyticsEvents, clearAnalyticsEvents, getAnalyticsEvents, isAnalyticsConnected, isFirebaseAnalyticsPatched, setAnalyticsModuleEnabled, getAnalyticsModuleEnabled, getCurrentUserProperties, getCurrentUserId, getDefaultEventParameters, getCollectionEnabled, setMaxAnalyticsLogsLimit, getMaxAnalyticsLogsLimit, pruneAnalyticsLogs, } from './customHooks/analyticsLogger';
6
+ export { getEventCategory, registerGAPlugin, } from './helpers/gaAnalyticsRegistry';
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Sub-module entry point: react-native-inapp-inspector/bundle
3
+ * Clean tree-shaking & isolated JS bundle size analyzer.
4
+ */
5
+ export { analyzeHostAppBundle, parseBundleSource, getInitialBundleAnalysis, getCachedBundleAnalysis, clearCachedBundleAnalysis, setBundleModuleEnabled, getBundleModuleEnabled, getHostScriptURL, trackRuntimeModuleExecution, trackRuntimeDefine, type HostBundleAnalysisResult, type HostBundleFileItem, type HostBundlePackageItem, type HostBinaryComponentItem, type FileTypeCategory, } from './customHooks/bundleAnalyzer';
6
+ export { BundleSubTab, } from './types';
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Sub-module entry point: react-native-inapp-inspector/bundle
3
+ * Clean tree-shaking & isolated JS bundle size analyzer.
4
+ */
5
+ export { analyzeHostAppBundle, parseBundleSource, getInitialBundleAnalysis, getCachedBundleAnalysis, clearCachedBundleAnalysis, setBundleModuleEnabled, getBundleModuleEnabled, getHostScriptURL, trackRuntimeModuleExecution, trackRuntimeDefine, } from './customHooks/bundleAnalyzer';
6
+ export { BundleSubTab, } from './types';
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Sub-module entry point: react-native-inapp-inspector/console
3
+ * Clean tree-shaking & isolated console logger.
4
+ */
5
+ export { setupConsoleLogger, clearConsoleLogs, subscribeConsoleLogs, getConsoleLogs, setConsoleModuleEnabled, getConsoleModuleEnabled, setMaxConsoleLogsLimit, getMaxConsoleLogsLimit, pruneConsoleLogs, } from './customHooks/consoleLogger';
6
+ export type { ConsoleLog, } from './types';
7
+ export { ConsoleLogType, LogFilter, } from './types';
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Sub-module entry point: react-native-inapp-inspector/console
3
+ * Clean tree-shaking & isolated console logger.
4
+ */
5
+ export { setupConsoleLogger, clearConsoleLogs, subscribeConsoleLogs, getConsoleLogs, setConsoleModuleEnabled, getConsoleModuleEnabled, setMaxConsoleLogsLimit, getMaxConsoleLogsLimit, pruneConsoleLogs, } from './customHooks/consoleLogger';
6
+ export { ConsoleLogType, LogFilter, } from './types';
@@ -1 +1 @@
1
- export declare const LIB_VERSION = "2.2.0";
1
+ export declare const LIB_VERSION = "2.2.2";
@@ -1,3 +1,3 @@
1
1
  // AUTO-GENERATED FILE — do not edit by hand.
2
2
  // Regenerated from package.json on every build by scripts/gen-version.js.
3
- export const LIB_VERSION = '2.2.0';
3
+ export const LIB_VERSION = '2.2.2';
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Sub-module entry point: react-native-inapp-inspector/crash
3
+ * Clean tree-shaking & isolated global crash handler and reporting.
4
+ */
5
+ export { setupGlobalCrashHandler, subscribeCrashEvents, emitCrashEvent, getCrashRecords, clearCrashRecords, simulateTestCrash, exportCrashReport, parseCrashStackTrace, setMaxCrashLogsLimit, getMaxCrashLogsLimit, pruneCrashRecords, setCrashModuleEnabled, getCrashModuleEnabled, } from './customHooks/crashHandler';
6
+ export type { CrashRecord, CrashBreadcrumb, } from './types';
7
+ export { CrashType, CrashExportFormat, CrashDetailSubTab, CrashFilterType, BreadcrumbType, } from './types';
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Sub-module entry point: react-native-inapp-inspector/crash
3
+ * Clean tree-shaking & isolated global crash handler and reporting.
4
+ */
5
+ export { setupGlobalCrashHandler, subscribeCrashEvents, emitCrashEvent, getCrashRecords, clearCrashRecords, simulateTestCrash, exportCrashReport, parseCrashStackTrace, setMaxCrashLogsLimit, getMaxCrashLogsLimit, pruneCrashRecords, setCrashModuleEnabled, getCrashModuleEnabled, } from './customHooks/crashHandler';
6
+ export { CrashType, CrashExportFormat, CrashDetailSubTab, CrashFilterType, BreadcrumbType, } from './types';
@@ -1,6 +1,9 @@
1
1
  import { AnalyticsEvent } from '../types';
2
2
  export declare const setAnalyticsModuleEnabled: (enabled: boolean) => void;
3
3
  export declare const getAnalyticsModuleEnabled: () => boolean;
4
+ export declare const setMaxAnalyticsLogsLimit: (limit: number) => void;
5
+ export declare const getMaxAnalyticsLogsLimit: () => number;
6
+ export declare const pruneAnalyticsLogs: (targetCount?: number) => number;
4
7
  export declare const subscribeAnalyticsEvents: (callback: (events: AnalyticsEvent[]) => void) => () => void;
5
8
  export declare const clearAnalyticsEvents: () => void;
6
9
  export declare const getAnalyticsEvents: () => AnalyticsEvent[];
@@ -34,6 +34,24 @@ let currentUserProperties = {};
34
34
  let currentUserId;
35
35
  let currentDefaultEventParameters = {};
36
36
  let isCollectionEnabled = true;
37
+ let maxAnalyticsLogsLimit = 75;
38
+ export const setMaxAnalyticsLogsLimit = (limit) => {
39
+ maxAnalyticsLogsLimit = Math.max(10, limit);
40
+ if (events.length > maxAnalyticsLogsLimit) {
41
+ events = events.slice(0, maxAnalyticsLogsLimit);
42
+ notify();
43
+ }
44
+ };
45
+ export const getMaxAnalyticsLogsLimit = () => maxAnalyticsLogsLimit;
46
+ export const pruneAnalyticsLogs = (targetCount) => {
47
+ const countToKeep = targetCount !== undefined ? Math.max(0, targetCount) : Math.floor(events.length / 2);
48
+ const pruned = events.length - countToKeep;
49
+ if (pruned > 0) {
50
+ events = events.slice(0, countToKeep);
51
+ notify();
52
+ }
53
+ return Math.max(0, pruned);
54
+ };
37
55
  // ─── Core helpers ─────────────────────────────────────────────────────────────
38
56
  const notify = () => {
39
57
  const snapshot = [...events];
@@ -43,7 +61,7 @@ const addEvent = (event) => {
43
61
  if (!isAnalyticsModuleEnabled)
44
62
  return;
45
63
  events.unshift(event);
46
- events = events.slice(0, 75);
64
+ events = events.slice(0, maxAnalyticsLogsLimit);
47
65
  notify();
48
66
  };
49
67
  // ─── Public subscribe / query API ────────────────────────────────────────────
@@ -1,6 +1,9 @@
1
1
  import { ConsoleLog } from '../types';
2
2
  export declare const setConsoleModuleEnabled: (enabled: boolean) => void;
3
3
  export declare const getConsoleModuleEnabled: () => boolean;
4
+ export declare const setMaxConsoleLogsLimit: (limit: number) => void;
5
+ export declare const getMaxConsoleLogsLimit: () => number;
6
+ export declare const pruneConsoleLogs: (targetCount?: number) => number;
4
7
  export declare const addLogFromCrash: (error: any, message: string, stack?: string, isFatal?: boolean) => ConsoleLog;
5
8
  export declare const subscribeConsoleLogs: (callback: (logs: ConsoleLog[]) => void) => () => void;
6
9
  export declare const clearConsoleLogs: () => void;
@@ -10,7 +10,24 @@ export const setConsoleModuleEnabled = (enabled) => {
10
10
  isConsoleModuleEnabled = enabled;
11
11
  };
12
12
  export const getConsoleModuleEnabled = () => isConsoleModuleEnabled;
13
- const MAX_LOGS = 100;
13
+ let maxConsoleLogsLimit = 100;
14
+ export const setMaxConsoleLogsLimit = (limit) => {
15
+ maxConsoleLogsLimit = Math.max(10, limit);
16
+ if (logs.length > maxConsoleLogsLimit) {
17
+ logs = logs.slice(0, maxConsoleLogsLimit);
18
+ notify();
19
+ }
20
+ };
21
+ export const getMaxConsoleLogsLimit = () => maxConsoleLogsLimit;
22
+ export const pruneConsoleLogs = (targetCount) => {
23
+ const countToKeep = targetCount !== undefined ? Math.max(0, targetCount) : Math.floor(logs.length / 2);
24
+ const pruned = logs.length - countToKeep;
25
+ if (pruned > 0) {
26
+ logs = logs.slice(0, countToKeep);
27
+ notify();
28
+ }
29
+ return Math.max(0, pruned);
30
+ };
14
31
  // ─── Helpers ──────────────────────────────────────────────────────────────────
15
32
  const formatArgs = (args) => {
16
33
  return args
@@ -224,7 +241,7 @@ const addLog = (type, args, sourceMethod) => {
224
241
  sourceMethod,
225
242
  };
226
243
  logs.unshift(newLog);
227
- logs = logs.slice(0, MAX_LOGS);
244
+ logs = logs.slice(0, maxConsoleLogsLimit);
228
245
  notify();
229
246
  // Asynchronously symbolicate stack trace via Metro in development
230
247
  const stackToSymbolicate = errorStack || stackToUse || stack;
@@ -310,7 +327,7 @@ export const addLogFromCrash = (error, message, stack, isFatal) => {
310
327
  sourceMethod: 'error',
311
328
  };
312
329
  logs.unshift(newLog);
313
- logs = logs.slice(0, MAX_LOGS);
330
+ logs = logs.slice(0, maxConsoleLogsLimit);
314
331
  notify();
315
332
  const stackToSym = stack || error?.stack || errorStack;
316
333
  if (stackToSym && typeof __DEV__ !== 'undefined' && __DEV__) {
@@ -14,6 +14,8 @@ type CrashListener = (payload: CrashEventPayload) => void;
14
14
  export declare const setCrashModuleEnabled: (enabled: boolean) => void;
15
15
  export declare const getCrashModuleEnabled: () => boolean;
16
16
  export declare const setMaxCrashLogsLimit: (max: number) => void;
17
+ export declare const getMaxCrashLogsLimit: () => number;
18
+ export declare const pruneCrashRecords: (targetCount?: number) => number;
17
19
  export declare const addCrashBreadcrumb: (type: CrashBreadcrumb["type"], message: string, data?: any) => void;
18
20
  export declare const recordNavigationBreadcrumb: (fromRoute: string, toRoute: string) => void;
19
21
  export declare const recordNetworkBreadcrumb: (url: string, method: string, status?: number, duration?: number) => void;
@@ -24,6 +24,18 @@ export const setMaxCrashLogsLimit = (max) => {
24
24
  crashRecordsStore = crashRecordsStore.slice(0, maxStoredCrashes);
25
25
  }
26
26
  };
27
+ export const getMaxCrashLogsLimit = () => maxStoredCrashes;
28
+ export const pruneCrashRecords = (targetCount) => {
29
+ const countToKeep = targetCount !== undefined ? Math.max(0, targetCount) : Math.floor(crashRecordsStore.length / 2);
30
+ const pruned = crashRecordsStore.length - countToKeep;
31
+ if (pruned > 0) {
32
+ crashRecordsStore = crashRecordsStore.slice(0, countToKeep);
33
+ }
34
+ if (breadcrumbsStore.length > 20) {
35
+ breadcrumbsStore = breadcrumbsStore.slice(0, 20);
36
+ }
37
+ return Math.max(0, pruned);
38
+ };
27
39
  export const addCrashBreadcrumb = (type, message, data) => {
28
40
  if (!isCrashModuleEnabled)
29
41
  return;
@@ -17,6 +17,9 @@ export declare const getNetworkModuleEnabled: () => boolean;
17
17
  export declare const subscribeNetworkLogs: (callback: (logs: NetworkLog[]) => void) => () => void;
18
18
  export declare const clearNetworkLogs: () => void;
19
19
  export declare const getNetworkLogs: () => NetworkLog[];
20
+ export declare const setMaxNetworkLogsLimit: (limit: number) => void;
21
+ export declare const getMaxNetworkLogsLimit: () => number;
22
+ export declare const pruneNetworkLogs: (targetCount?: number) => number;
20
23
  export declare const setupNetworkLogger: () => void;
21
24
  export declare const addAxiosInterceptors: (axiosInstance: any) => void;
22
25
  export {};
@@ -111,6 +111,24 @@ export const clearNetworkLogs = () => {
111
111
  notify();
112
112
  };
113
113
  export const getNetworkLogs = () => [...logs];
114
+ let maxNetworkLogsLimit = 100;
115
+ export const setMaxNetworkLogsLimit = (limit) => {
116
+ maxNetworkLogsLimit = Math.max(10, limit);
117
+ if (logs.length > maxNetworkLogsLimit) {
118
+ logs = logs.slice(0, maxNetworkLogsLimit);
119
+ notify();
120
+ }
121
+ };
122
+ export const getMaxNetworkLogsLimit = () => maxNetworkLogsLimit;
123
+ export const pruneNetworkLogs = (targetCount) => {
124
+ const countToKeep = targetCount !== undefined ? Math.max(0, targetCount) : Math.floor(logs.length / 2);
125
+ const pruned = logs.length - countToKeep;
126
+ if (pruned > 0) {
127
+ logs = logs.slice(0, countToKeep);
128
+ notify();
129
+ }
130
+ return Math.max(0, pruned);
131
+ };
114
132
  // ─── Internal ─────────────────────────────────────────────────────────────────
115
133
  const notify = () => {
116
134
  const snapshot = [...logs];
@@ -131,7 +149,7 @@ const addOrUpdateLog = (log) => {
131
149
  else {
132
150
  logs.unshift(log);
133
151
  }
134
- logs = logs.slice(0, 100);
152
+ logs = logs.slice(0, maxNetworkLogsLimit);
135
153
  notify();
136
154
  };
137
155
  // ─── Setup ────────────────────────────────────────────────────────────────────
@@ -159,6 +159,9 @@ export declare const usePerformanceTracker: (enabled?: boolean) => {
159
159
  clearEvents: () => void;
160
160
  triggerGc: () => void;
161
161
  };
162
+ export declare const setMaxPerformanceEventsLimit: (limit: number) => void;
163
+ export declare const getMaxPerformanceEventsLimit: () => number;
164
+ export declare const prunePerformanceEvents: (targetCount?: number) => number;
162
165
  export declare const logPerformanceEvent: (event: Omit<PerformanceEvent, "id" | "timestamp"> & {
163
166
  id?: string;
164
167
  timestamp?: number;